Overview
Validic
Validic is a cloud-based technology platform that connects patient data from digital health apps, wearables and devices to healthcare companies like hospitals, providers, pharma, payers, and wellness companies.
The growing number of digital health devices and apps presents organizations with an opportunity to use data to improve their user's outcomes. Validic solves this challenge by providing a one-to-many connection to digital health technologies. Allowing validic to focus on providing data, allows organizations to focus on innovation!
How does it work?
Validic connects to hundreds of devices and applications and extracts user-generated data. Once the data is extracted,it will de-identify and convert data into a standard format and provide it to IPP in a JSON format. This ensures that IPP receive a predictable, HIPAA/Safe Harbor/PHI compliant data source, regardless of the connected application or device.
Validic Streaming API
The Validic Streaming API was selected as the preferred way of consuming data from Validic into Open Platform. This API provides access to data through a continuous stream(s) in near-realtime using Server Sent Events.
Validic has sandbox and production environments, but uses the same URI for both. Environments are differentiated by access token provided in the request. This access token is required to be present as request param in all requests to Validic API. Thus, for all development and testing environments we have to use sandbox environment with sandbox credentials.
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 |
Profiles
List of profiles that are relevant to this application
Examples
The Validic streams can come in the following types:
Examples can be found at : https://confluence.rochedc.accentureanalytics.com/display/RI/FHIR+Example