Requirements
Scope
For the MVP integreation we are going to consider the following metrics:
- active_duration
- steps
- carbohydrate
- blood_glucose
- diastolic
- systolic
- insulin
- energy_burned
- energy_consumed
- body_weight
- resting_heart_rate
- avg_heart_rate
- fat
- body_fat
- deep_sleep
- rem_sleep
- sleep_duration
The team will model one data point for each one of this metrics, but also we have to consider the auxiliar fhir resources:
- MessageHeader
- Device
- DeviceComponent
- DeviceMetric
- Parent Observation (links a set of different metrics that have a common activity. For example different metrics such as Carbs, Fat, Body Fat observations can be related to the parent Nutrition generic observation)
Assumptions
- Intraday type of streams are out of scope for MVP
- Reference source - The helpdocs section of the Validic site is the source of reference for their data model, possible values for certain elements and sample streams - https://helpdocs.validic.com/docs
- Device information - Currently, the information received regarding the devices are very minimal. It is only the brand name in most of the samples (like, fitbit, ihealth). DeviceComponent resources are modelled accordingly by generating our own identifiers based on the user id, source type, metric origin and device type. If we start getting unique device details this may have to be updated to be consistent with the other integrations
- Edited values - Even though we are not managing edited values in MVP, it is still possible to receive updated Validic streams for the same observation. To avoid duplicates getting stored, we are storing all the observations with a unique identifier (created by combining the stream id, metric type and origin). The bundle filter should filter and ignore the edited values for the time being.
- Metric origin - The possible values in Validic streams for metric origin are: device, manual and unknown. We will be storing the data as we receive.
Use Cases
| Use Case | Summary | Comments |
|---|---|---|
| 1 | Origin of metric in the validic stream is from the device | |
| 2 | Origin of metric in the validic stream is manual enterered | |
| 3 | Origin of metric in the validic stream is unknown | |
| 4 | Validic stream type is 'Summary' type | Summary is always data consolidated for a particular day. |
| 5 | Validic stream type is 'workout' type | tags - biking, cardio, running, strength, swimming, walking, other |
| 6 | Validic stream type is 'measurement' type | |
| 7 | Validic stream type is 'nutrition' type | comments include: Food, meal, other. |
| 8 | Validic stream type is 'sleep' type |
Data Points
| Data Point | Description | FHIR Resource & Element | Remarks (units) | FHIR Sample |
|---|---|---|---|---|
| active_duration | Total duration of active time as defined by the source. | metric-value → observation.valueQuantity.value(profile:activity-metric-observation) | Unit: s | Sample |
| steps | The number of steps taken in a single day as defined by the source. For sources that show only routine, non-workout steps as the daily step count, this value will match the steps shown by the source to the end user. | metric-value → observation.valueQuantity.value (profile:activity-metric-observation) | Unit: steps or steps/day depending the stream | Sample |
| carbohydrate | The value of measured quantity in grams. | metric-value → observation.valueQuantity.value(profile:nutritional-value-observation) | Unit: g | sample |
| blood_glucose | Blood glucose, or blood sugar, reading of the individual. May be an individual measurement or an average of multiple consecutive readings taken within a short period of time, as defined by the source. | metric-value → observation.valueQuantity.value(profile:bg-observation) | Unit: mg/dL or mmol/L | sample |
| diastolic | The diastolic blood pressure measurement of the individual. | metric-value → observation.valueQuantity.value(profile:vital-signs-observation) | Unit: mm[Hg] | sample |
| systolic | The systolic blood pressure measurement of the individual. | metric-value → observation.valueQuantity.value(profile:vital-signs-observation) | unit: mm[Hg] | sample |
| insulin | The amount of insulin consumed by an individual. | MedicalAdministration.dosage.dose.value(profile: medication-administration) | sample | |
| energy_burned | Total number of calories burned as defined by the source or calculated by Validic. | metric-value → observation.valueQuantity.value(profile:activity-metric-observation) | Unit: kcal | sample |
| energy_consumed | The total number of calories, or energy, consumed. | metric-value → observation.valueQuantity.value(profile:nutritional-value-observation) | Unit: kcal | Sample |
| body_weight | Body weight measurement of the individual. | metric-value → observation.valueQuantity.value(profile:vital-signs-observation) | Unit: kg | Sample |
| resting_heart_rate | The waking heart rate measurement of the individual as determined by the source. | metric-value → observation.valueQuantity.value(profile:vital-signs-observation) | Unit: bpm | Sample |
| avg_heart_rate | The average heart rate measured as determined by the source. | metric-value → observation.valueQuantity.value(profile:vital-signs-observation) | Unit: bpm | Sample |
| fat | The value of measured quantity in gram. | metric-value → observation.valueQuantity.value(profile:nutritional-value-observation) | Unit : g | Sample |
| body_fat | The value of measured quantity in gram. | metric-value → observation.valueQuantity.value(profile:nutritional-value-observation) | Unit : % | Sample |
| deep_sleep | The duration of time the individual was in a deep sleep state as defined by the source. | metric-value → observation.valueQuantity.value(profile:activity-metric-observation) | Unit : s | Sample |
| rem_sleep | The duration of time the individual was in a REM sleep state as defined by the source. | metric-value → observation.valueQuantity.value(profile:activity-metric-observation) | Unit : s | Sample |
| sleep_duration | The duration of time the user was sleeping during the sleep period as defined by the device. | metric-value → observation.valueQuantity.value(profile:activity-metric-observation) | Unit : s | Sample |
Solution Architecture
| Description | Link | Comments |
|---|---|---|
| Validic Integration | https://confluence.rochedc.accentureanalytics.com/display/ARCGOV/Validic+Integration#ValidicIntegration-IngestionFlow |
High-Level Requirements
| Description | Link | Comments |
|---|---|---|
| Validic Streaming API | https://confluence.rochedc.accentureanalytics.com/display/ARCGOV/Validic+Integration#ValidicIntegration-UsingtheStreamingAPI | |
| Data Ingestion | https://confluence.rochedc.accentureanalytics.com/display/RD/Data+Ingestion+from+Validic |
Non Functional Requirements
| Description | Link | Comments |
|---|---|---|
| NF Requirements | https://confluence.rochedc.accentureanalytics.com/display/ARCGOV/Validic+Integration#ValidicIntegration-Non-FunctionalRequirements |