Skip to content

Commit

Permalink
Merge pull request #334 from RADAR-base/release-0.8.3
Browse files Browse the repository at this point in the history
Release 0.8.3
  • Loading branch information
yatharthranjan committed May 10, 2023
2 parents 45d8c8a + 4e6724c commit 293517e
Show file tree
Hide file tree
Showing 15 changed files with 499 additions and 30 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ trim_trailing_whitespace = false
indent_size = 4

# Java
[*.java]
[*.{java,kt,kts}]
indent_size = 4
continuation_indent_size = 8
1 change: 1 addition & 0 deletions commons/push/garmin/garmin_activity_details.avsc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
{"name": "time", "type": "double", "doc": "Start time of the activity in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "activityId", "type": ["null", "string"], "doc": "Unique identifier of the activity at Garmin Connect.", "default": null},
{"name": "startTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "activityType", "type": ["null", "string"], "doc": "Text description of the activity type. See Appendix A for a complete list. e.g - SEDENTARY, SLEEP, RUNNING, CYCLING, WALKING, etc.", "default": null},
{"name": "duration", "type": ["null", "int"], "doc": "Length of the monitoring period in seconds.", "default": null},
Expand Down
1 change: 1 addition & 0 deletions commons/push/garmin/garmin_activity_summary.avsc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
{"name": "time", "type": "double", "doc": "Start time of the activity in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "activityId", "type": ["null", "string"], "doc": "Unique identifier of the activity at Garmin Connect.", "default": null},
{"name": "startTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "activityType", "type": ["null", "string"], "doc": "Text description of the activity type. e.g - SEDENTARY, SLEEP, RUNNING, CYCLING, WALKING, etc.", "default": null},
{"name": "duration", "type": ["null", "int"], "doc": "Length of the monitoring period in seconds. 86400 once a full day is complete, but less if a user syncs mid-day.", "default": null},
Expand Down
16 changes: 16 additions & 0 deletions commons/push/garmin/garmin_blood_pressure_summary.avsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"namespace": "org.radarcns.push.garmin",
"name": "GarminBloodPressureSummary",
"type": "record",
"doc": "Blood pressure summaries offer data from blood pressure readings taken using an Index BPM device or from a user’s manually uploaded blood pressure data. This includes systolic, diastolic, and pulse values taken at the time of the blood pressure reading. For more information about the validation of data using the Index BPM, please visit https://www.garmin.com/en-US/bpmvalidation/.",
"fields": [
{"name": "time", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "measurementTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "systolic", "type": ["null", "int"], "doc": "The systolic value of the blood pressure reading.", "default": null},
{"name": "diastolic", "type": ["null", "int"], "doc": "The diastolic value of the blood pressure reading.", "default": null},
{"name": "pulse", "type": ["null", "int"], "doc": "Pulse rate at the time the blood pressure reading.", "default": null},
{"name": "sourceType", "type": ["null", "string"], "doc": "This field is used to determine if blood pressure data was entered manually or synced from a Garmin Device. Possible values: MANUAL: The user entered blood pressure information manually through a web form. DEVICE: The user used a Garmin device to perform a blood pressure reading.", "default": null}
]
}
2 changes: 1 addition & 1 deletion commons/push/garmin/garmin_daily_summary.avsc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
{"name": "steps", "type": ["null", "int"], "doc": "Count of steps recorded during the monitoring period.", "default": null},
{"name": "distance", "type": ["null", "float"], "doc": "Distance traveled in meters.", "default": null},
{"name": "activeTime", "type": ["null", "int"], "doc": "Portion of the monitoring period (in seconds) in which the device wearer was considered Active. This relies on heuristics internal to each device.", "default": null},
{"name": "activeKilocalories", "type": ["null", "int"], "doc": "Active kilocalories (dietary calories) burned through actual movement and activity during the monitoring period.", "default": null},
{"name": "activeKilocalories", "type": ["null", "int"], "doc": "Active kilocalories (dietary calories) burned through actual movement and activity during the monitoring period. This includes only the calories burned by the activity and not calories burned as part of the basal metabolic rate (BMR).", "default": null},
{"name": "bmrKilocalories", "type": ["null", "int"], "doc": "BMR Kilocalories burned by existing Basal Metabolic Rate (calculated based on user height/weight/age/other demographic data).", "default": null},
{"name": "consumedCalories", "type": ["null", "int"], "doc": "The number of calories that have been consumed by the user through food for that day (value subtracted from calorie goal). This value is received from MyFitnessPal and is not entered within Connect.", "default": null},
{"name": "moderateIntensityDuration", "type": ["null", "int"], "doc": "Cumulative duration of activities of moderate intensity, lasting at least 600 seconds at a time. Moderate intensity is defined as activity with MET value range 3-6.", "default": null},
Expand Down
28 changes: 28 additions & 0 deletions commons/push/garmin/garmin_health_snapshot_summary.avsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"namespace": "org.radarcns.push.garmin",
"name": "GarminHealthSnapshotSummary",
"type": "record",
"doc": "The Garmin Health Snapshot is a collection of key health-related insights recorded during a two-minute session on a compatible device. Heart rate (HR), heart rate variability (HRV), Pulse Ox, respiration, and stress are the metrics included this summary, which collectively provide you a glimpse of your overall cardiovascular status. More information about Health Snapshot can be found at https://support.garmin.com/en-US/?faq=PB1duL5p6V64IQwhNvcRK9.",
"fields": [
{"name": "time", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "date", "type": ["null", "string"], "doc": "The calendar date this summary would be displayed on in Garmin Connect in the local time zone of the device. The date format is ‘yyyy-mm-dd’.", "default": null},
{"name": "startTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "rmssdHrvAverage", "type": ["null", "float"], "doc": "Average value of RMSSD HRV for this snapshot. RMSSD stands for the root mean square of successive differences between normal heartbeats.", "default": null},
{"name": "sdrrHrvAverage", "type": ["null", "float"], "doc": "Average value of SDRR HRV for this snapshot. SDRR is the standard deviation in time between heartbeats, which is sometimes referred to as the 'RR interval'.", "default": null},
{"name": "heartRateAverage", "type": ["null", "float"], "doc": "Average value of Heart Rate for this snapshot.", "default": null},
{"name": "heartRateMin", "type": ["null", "float"], "doc": "Minimum value of Heart Rate for this snapshot.", "default": null},
{"name": "heartRateMax", "type": ["null", "float"], "doc": "Maximum value of Heart Rate for this snapshot.", "default": null},
{"name": "respirationAverage", "type": ["null", "float"], "doc": "Average value of respiration rate for this snapshot.", "default": null},
{"name": "respirationMin", "type": ["null", "float"], "doc": "Minimum value of respiration rate for this snapshot.", "default": null},
{"name": "respirationMax", "type": ["null", "float"], "doc": "Maximum value of respiration rate for this snapshot.", "default": null},
{"name": "stressAverage", "type": ["null", "float"], "doc": "Average value of stress for this snapshot.", "default": null},
{"name": "stressMin", "type": ["null", "float"], "doc": "Minimum value of stress for this snapshot.", "default": null},
{"name": "stressMax", "type": ["null", "float"], "doc": "Maximum value of stress for this snapshot.", "default": null},
{"name": "spo2Average", "type": ["null", "float"], "doc": "Average value of pulse ox (spo2) for this snapshot.", "default": null},
{"name": "spo2Min", "type": ["null", "float"], "doc": "Minimum value of pulse ox (spo2) for this snapshot.", "default": null},
{"name": "spo2Max", "type": ["null", "float"], "doc": "Maximum value of pulse ox (spo2) for this snapshot.", "default": null},
{"name": "duration", "type": ["null", "int"], "doc": "The duration of the measurement period in seconds.", "default": null}
]
}
12 changes: 12 additions & 0 deletions commons/push/garmin/garmin_heart_rate_variability_sample.avsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"namespace": "org.radarcns.push.garmin",
"name": "GarminHeartRateVariabilitySample",
"type": "record",
"doc": "Mapping between time (in seconds) to a heart rate variability value recorded for the time, in milliseconds. Lack of entry for a given time should be interpreted as no data available. These are accompanied with the HRV summary data and can be associated using the summaryId.",
"fields": [
{"name": "time", "type": "double", "doc": "Start time of the sample in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."},
{"name": "timeReceived", "type": "double", "doc": "Time this sample was recieved by the push service in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary that this sample is associated with."},
{"name": "hrvValue", "type": ["null", "float"], "doc": "The HRV value in milliseconds.", "default": null}
]
}
16 changes: 16 additions & 0 deletions commons/push/garmin/garmin_heart_rate_variability_summary.avsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"namespace": "org.radarcns.push.garmin",
"name": "GarminHeartRateVariabilitySummary",
"type": "record",
"doc": "Heart rate variability (HRV) refers to beat-to-beat variations in heart rate and is data collected during the overnight sleep window for select devices. To gain a deeper understanding of your overall health, recovery and training performance through heart rate variability while you sleep, based on technology developed by our Firstbeat Analytics team, please visit https://discover.garmin.com/en-US/performance-data/running/#heart-rate-variability.",
"fields": [
{"name": "time", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "date", "type": ["null", "string"], "doc": "The calendar date this summary would be displayed on in Garmin Connect in the local time zone of the device. The date format is ‘yyyy-mm-dd’.", "default": null},
{"name": "startTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "lastNightAvg", "type": ["null", "float"], "doc": "The average heart rate variability value from the last night of data.", "default": null},
{"name": "lastNight5MinHigh", "type": ["null", "float"], "doc": "The maximum HRV value over any 5 minute interval of the last night of data.", "default": null},
{"name": "duration", "type": ["null", "int"], "doc": "The duration of the measurement period in seconds.", "default": null}
]
}
20 changes: 20 additions & 0 deletions commons/push/garmin/garmin_sleep_score_sample.avsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"namespace": "org.radarcns.push.garmin",
"name": "GarminSleepScoreSample",
"type": "record",
"doc": "A map of sleep score string descriptions for each type of sleep as well as restless periods and stress levels during sleep. Each entry in the sleepScores will have a qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR that is used as a qualitative description of the user’s period of sleep.",
"fields": [
{"name": "time", "type": "double", "doc": "Start time of the sleep in seconds since January 1, 1970, 00:00:00 UTC (Unix timestamp)."},
{"name": "timeReceived", "type": "double", "doc": "Time that this record was collected by a service in seconds since the Unix Epoch (s)."},
{"name": "summaryId", "type": "string", "doc": "Unique identifier for the summary."},
{"name": "date", "type": ["null", "string"], "doc": "The calendar date this summary would be displayed on in Garmin Connect in the local time zone of the device. The date format is ‘yyyy-mm-dd’.", "default": null},
{"name": "startTimeOffset", "type": ["null", "int"], "doc": "Offset in seconds to add to time to derive the 'local' time of the device that captured the data.", "default": null},
{"name": "totalDurationScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s total duration of sleep.", "default": null},
{"name": "stressScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s stress during the period of sleep.", "default": null},
{"name": "awakeCountScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s awake count during the period of sleep.", "default": null},
{"name": "remPercentageScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s REM sleep percentage during the period of sleep.", "default": null},
{"name": "restlessnessScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s restlessness during the period of sleep.", "default": null},
{"name": "lightPercentageScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s light sleep percentage during the period of sleep.", "default": null},
{"name": "deepPercentageScoreQualifier", "type": ["null", "string"], "doc": "A qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR used as a qualitative description of the user’s deep slep percentage during the period of sleep.", "default": null}
]
}
4 changes: 3 additions & 1 deletion commons/push/garmin/garmin_sleep_summary.avsc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
{"name": "lightSleepDuration", "type": ["null", "int"], "doc": "Time in seconds the user spent in light sleep during the sleep period.", "default": null},
{"name": "remSleepDuration", "type": ["null", "int"], "doc": "Time in seconds the user spent in REM sleep during the sleep period.", "default": null},
{"name": "awakeDuration", "type": ["null", "int"], "doc": "Time in seconds the user spent awake during the sleep period.", "default": null},
{"name": "validation", "type": ["null", "string"], "doc": "String that relays the validation state of the sleep data and its date range. The data could be auto-confirmed, but the sleep window could have been manually adjusted, or the sleep data itself is entirely manually entered. Possible values: MANUAL: The user entered sleep start and stop times manually through a web form. There is no device data backing up the sleep assessment. DEVICE: The user used a device with the sleep feature to manually start and stop sleep. This type still requires manual user intervention to judge sleep start and stop. AUTO_TENTATIVE: The sleep start and stop times were auto-detected by Garmin Connect using accelerometer data. However, it is possible that further refinements to this sleep record will come later. This could be because the user is still asleep or could be because the user owns multiple devices and might sync another device later for this same time period. AUTO_FINAL: The sleep start and stop times were auto-detected by Garmin Connect, and enough data has been gathered to finalize the window. This status also indicates that the user only has one device so this record can never be updated again – users that own multiple devices will never get an AUTO_FINAL. AUTO_MANUAL: Sleep data was auto-detected by Garmin Connect, but the user is overriding the start and stop times or the user started with a manual entry and the sleep was auto-detected later. Garmin Connect stores both but will display the manual start and stop times in favor of the auto-detected times. ENHANCED_TENTATIVE: Sleep data was collected from a device capable of running an enhanced sleep analysis to detect REM sleep, but an updated sleep summary record may come later with further refinements or a greater sleep period. ENHANCED_FINAL: Sleep data was collected from a device capable of running an enhanced sleep analysis to detect REM sleep, and no further updates or refinements to this sleep analysis are expected.", "default": null}
{"name": "validation", "type": ["null", "string"], "doc": "String that defines the validation state of the sleep data and its date range. The data could be auto-confirmed, but the sleep window could have been manually adjusted, or the sleep data itself is entirely manually entered. Possible values: MANUAL: The user entered sleep start and stop times manually through a web form. There is no device data backing up the sleep assessment. DEVICE: The user used a device with the sleep feature to manually start and stop sleep. This type still requires manual user intervention to specify sleep start and stop. AUTO_TENTATIVE: The sleep start and stop times were auto-detected by Garmin Connect using accelerometer data. However, refinements to this sleep record may come later. This could be because the user is still asleep or because the user owns multiple devices and might sync another device later for the same time period. AUTO_FINAL: The sleep start and stop times were auto-detected by Garmin Connect, and enough data has been gathered to finalize the window. This status also indicates that the user only has one device so this record can never be updated again – users that own multiple devices will never receive an AUTO_FINAL. AUTO_MANUAL: Sleep data was auto-detected by Garmin Connect, but the user is overriding the start and stop times or the user started with a manual entry and the sleep was auto-detected later. Garmin Connect stores both but will display the manual start and stop times in favor of the auto-detected times. ENHANCED_TENTATIVE: Sleep data was collected from a device capable of running an enhanced sleep analysis to detect REM sleep, but an updated sleep summary record may come later with further refinements or a greater sleep period. ENHANCED_FINAL: Sleep data was collected from a device capable of running an enhanced sleep analysis to detect REM sleep with no further updates.", "default": null},
{"name": "overallSleepScoreValue", "type": ["null", "int"], "doc": "The quantitative value of the overall sleep score.", "default": null},
{"name": "overallSleepScoreQualifier", "type": ["null", "string"], "doc": "The sleep scores will have a qualifierKey value of EXCELLENT, GOOD, FAIR, or POOR that is used as a qualitative description of the user’s period of sleep.", "default": null}
]
}
Loading

0 comments on commit 293517e

Please sign in to comment.