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

Examples

The Validic streams can come in the following types:

Examples can be found at : https://confluence.rochedc.accentureanalytics.com/display/RI/FHIR+Example