Using #FHIR Observations for User fitness data
Mar 15, 2016In a question on stack overflow, an implementer asks about using Observation for user -gathered fitness data:
While there is the Observation resource, this still seems best fit (!) for the EHR domain. In particular the user fitness data is not collected during a visit and is not human-verified.
The goal is to find a “standardized FIHR way” to model this sort of data.
Use an Observation (?) with Extensions? Profiles? Domain-specific rules? FHIR allows extraordinary flexibility, but each extension/profile may increase the cost of being able to exchange the resource directly later. An explanation on the appropriate use of a FHIR resource - including when to Extend, use Profiles/tags, or encode differentiation via Coded values - would be useful.
There’s no need to use extensions, but there is a need for domain specific rules. Use an observation that looks like this:
{
"resourceType": "Observation",
"text": {
"status": "generated",
"div": "<div>[name] : [value] [hunits] @ [date]</div>"
},
"status": "final",
"category": {
"coding": [
{
"system": "http://hl7.org/fhir/observation-category",
"code": "fitness",
"display": "Fitness Data"
}
]
},
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "[lcode]",
"display": "[...]"
},
{
"system": "http://snomed.info/sct",
"code": "[scode]",
"display": "[...]"
}
]
},
"subject": {
"reference": "Patient/[xxx]"
},
"effectiveDateTime" : "[when]",
"valueQuantity": {
"value": [value],
"unit": "[hunits]",
"system": "http://unitsofmeasure.org",
"code": "[units]"
}
}
Some notes about this:
- A couple of the measurements need an effectivePeriod instead of an effectiveDateTime
- it might not be necessary SNOMED CT and LOINC codes, but it’s probably useful to have both (where they’re defined)
- [name], [scode], [lcode] and [units] come from a row in the table below. other values [value], [hunits], [when] come from the data source
- the category code is new. I’ll create a task to add it to the specification
Description | SNOMED CT Code | LOINC Code | UCUM Units |
Ambient temperature | 250825003 | 60832-3 | Cel; [degF] |
Blood Glucose | 365812005 | 77145-1 / 74774-1 | mmol/L or mg/dL |
Blood Pressure | 75367002 | 55417-0 | |
Systolic | 271649006 | 8480-6 |
standing: 8460-8 sitting:8459-0 supine:8461-6|mm[Hg] | Diastolic|271650006|8462-4
standing: 8454-1 sitting: 8453-3 lying downlying down: 8455-8|mm[Hg] |Body Fat %|248300009?|41982-0|% |Body Height|50373000|8302-2|m; cm; [in_i] |BMI|60621009|39156-5|kg/m2 |Body Temperature|386725007|8310-5|Cel; [degF] |Body Weight|363808001|29463-7|kg; [lb] |Breath CO|251900003|(none)|[ppm] |Calories Burned|(none)|41981-2|kcal; J |Expiratory Time|250820008|65819-5|s |Heart Rate|78564009|8867-4
standing: 69001-6 sitting: 69000-8 lying down: 68999-2|{beats}/min; /min |Inspiratory Time|250819002|60740-8|s |Minutes of Moderate Activity|(none)|(none)|- |Minute Volume|250811004|20142-6 (use duration)|L |O2 Saturation|431314004|20564-1|% |Respiratory Rate|86290005|9279-1|{breaths}/min; /min |Sleep Duration|248263006|n/a|h |Step Count|n/a|55423-8|-
If you’re looking for additional rows not in the table, send me a data element name and a definition, and I’ll add it to the table. I’ll also propose adding this table to the FHIR specification