This page is part of the Personal Health Device FHIR IG (v0.1.0: STU 1 Draft) based on FHIR R3. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions
The Compound Numeric Observation Profile is used when the PHD metric measurement contains one of the following attributes:
Attribute | Value | Additional Information |
---|---|---|
Compound-Basic-Nu-Observed-Value | set of 16-bit Mder SFLOATs | 12-bit mantissa, 4-bit exponent |
Compound-Simple-Nu-Observed-Value | set of 32-bit Mder FLOATs | 24-bit mantissa, 8-bit exponent |
Compound-Nu-Observed-Value | set of 32-bit Mder FLOATs | Complex attribute. Also contains metric-id measurement status unit-code |
These attributes contain a measurement value that is described by a set of multiple numbers such as the x, y, and z components of an acceleration. It is NOT used to report an array of measurements but only where the quantity being measured requires more than one number to describe it. Each individual entry of the compound value is reported in an Observation.component element. The Mder SFLOAT and FLOAT encodings of each entry indicate both precision and the number of significant figures. The Observation.component.valueQuantity.value element is required to honor the reported precision as indicated by the Mder S/FLOAT. See the section Mder FLOATs and SFLOATs for instructions on handling Mder S/FLOATs and their encoding to the valueQuantity.
The Observation.component.code element is obtained from the Metric-Id-List attribute unless the measurement is reported is a Compound-Nu-Observed-Value attribute. In that case the attribute itself has the metric type for each entry and that is used instead of the Metric-Id-List entries. The order of the entries in the Metric-Id-List are one-to-one with the order of the compound attribute entries. For example, if the Metric-Id-List in the Blood Pressure measurement has MDC codes for 'systolic", "diastolic" and "mean" in that order, the quantities in the compound attribute are the systolic, diastolic, and mean values, respectively.
The Observation.code element comes from the Type attribute and gives the general type of measurement. For example, the Type attribute might indicate "acceleration" or "non-invasive blood pressure". There is no Observation.value[x] entry. There may still be an Observation.dataAbsentReason element if, say, the Measurement-Status attribute indicates an invalid or otherwise overall failure value. If there is such an overall failure of the measurement, then there is no need to report the components.
The structure definition is as follows:
Name | Flags | Card. | Type | |
---|---|---|---|---|
Observation | Observation | Definition: The PhdCompoundNumericObservation reports PHD measurements that contain one of either a Compound-Basic-Nu-Observed-Value, Compound-Simple-Nu-Observed-Value, or Compound-Nu-Observed-Value attribute. Used for compound numeric observations from Personal Health Devices | ||
meta | 1.. | |||
profile | 1.. | Sliced: Unordered, Open, by PhdCompoundNumericObservation(Value) | ||
phdProfile | 1..1 | Fixed Value | Fixed Value: PhdCompoundNumericObservation | |
identifier | Sliced: Ordered, Open, by value(Value) | |||
conditionalCreateIdentifier | ..1 | Short description: Unique identifier of this measurment for a given patient and device Definition:An identifier created from a combination of the measurement parameters like sensor time stamp, type code, each compound value, units code, patient and device identifiers, and selected elements of any facet component elements. Allows observations to be distinguished in a selective enough manner to prevent resource duplication. This value is used in the conditional create to prevent data duplication. PHDs will often re-send already sent data for a variety of reasons. This element is required unless the metric measurement contains no time stamp or is a measurement containing a time stamp that is real time. By real time the time stamp reported by the PHD must be later than the current time reported by the PHD before any measurements are received. Temporarily stored data from IEEE 11073 20601 devices, which are required to delete the data after sending, can also be considered real time. Temporarily stored data from Bluetooth Low Energy Health devices may be resent so these cannot be considered as real time. | ||
value | 1.. | |||
status | Comments: The value shall be set to 'final' unless a Measurement-Status attribute indicates that the measurement is preliminary. In that case this field shall be set to 'preliminary' | |||
code | ||||
11073Type | Comments: For compound 11073-20601 metric numeric measurements, this code is obtained from the partition and term code of the Type attribute. The 32-bit 11073-10101 code value is given by partition * 2 **16 + term code. It is this value that is placed in the code.coding.code element for this 11073Type slice | |||
value[x] | ..0 | |||
dataAbsentReason | Definition: Provides a reason why no measurement compoundComponent elements are present. This situation only happens if the Measurement-Status attribute indicates a generic error and the measurement attribute is a Compound-Basic/Simple-Nu-Observed-Value. Special values reported in the Compound-Basic/Simple-Nu-Observed-Value are handled individually in each compoundComponent element and are not considered generic. The Compound-Nu-Observed-Value has its own status entry and overrides the Measurement-Status attribute so there will always be compoundComponent elements in that case. | |||
coding | ||||
system | 1.. | |||
code | 1.. | |||
component | Sliced: Unordered, Open, by code.coding.code(Value) | |||
compoundComponent | Short description: Compound entry components Definition:Each compoundComponent contains one of the N constituents of the compound measurement. These entries are NOT present if a Measurement-Status attribute indicates an error. Handles a measurement that needs more than one numeric value to describe it.. A compound measurement is a measurement that requires more than one value to represent it, such as an acceleration which has an x, y, and z components. The Blood pressure is also represented as a compound measurement, containing systolic, diastolic and MAP components. One combines all the compound elements together to describe the measurement. The Metric-Id-List entry n and Compound-Basic/Simple-Nu-Observed-Value entry n are ordered such that the code that describes each entry n is computed from the partition of the Type attribute and the term code of the Metric-Id-List attribute. In the case of the Compound-Nu-Observed-Value, the term code comes from the Compound-Nu-Observed-Value.metric sub-component. | |||
code | ||||
coding | 1.. | Sliced: Ordered, Open, by system(Value) | ||
11073Type | 1..1 | Short description: The 11073-10101 code for the measurement Comments:For compound 11073-20601 metric numeric measurements, this code is obtained from the partition of the Type attribute and the term code of the nth element of the Metric-Id-List attribute. The 32-bit 11073-10101 code value is given by partition * 2 **16 + term code. It is this value that is placed in the *.code.coding.code element for this 11073Type slice | ||
system | 1.. | Fixed Value | Fixed Value: urn:iso:std:iso:11073:10101 | |
code | 1.. | |||
LoincCoding | ..1 | |||
system | 1.. | Fixed Value | Fixed Value: http://loinc.org | |
code | 1.. | Comments: Required if the measurement is a vital sign | ||
valueQuantity | Quantity | Data Type | ||
value | 1.. | Definition: The value of nth element of the compound attribute. The value element for the nth compoundComponent is missing if the attribute sends a special value or the Compound-Nu-Observed-Value status element indicates an error. | ||
unit | Definition: A human-readable form of the unit which should be the UCUM code | |||
system | 1.. | Fixed Value | Definition: The unit code shall use the MDC system urn:iso:std:iso:11073:10101 | |
code | 1.. | Definition: The MDC code obtained from partition 4 and the term code given by the Unit-Code attribute unless it is a Compound-Nu-Observed-Value in which case the unit code comes from the unit element of the attribute. | ||
dataAbsentReason | Definition: Provides a reason why the expected value in the nth element Observation.compoundComponent.valueQuantity is missing. This could be a NaN (Not a Number), PINF (Positive infinity), NINF (Negative infinity) or an error condition indicated by the status field of the Compound-Nu-Observed-Value. The current values in the http://hl7.org/fhir/data-absent-reason system do not provide the same detailed set of options reported in the numeric attributes. For example, the PINF, NINF, and not at this resolution special values have no matching codes. In those cases one uses the generic 'error' code. | |||
coding | ||||
system | 1.. | |||
code | 1.. | |||
accuracyComponent | ..1 | Definition: This component shall be present if the accuracy attribute is present. | ||
code | ||||
coding | 1.. | Sliced: Ordered, Open, by code(Value) | ||
11073Type | 1..1 | |||
system | 1.. | Fixed Value | Fixed Value: urn:iso:std:iso:11073:10101 | |
code | 1.. | Fixed Value | Definition: The code for the accuracy attribute is 67914 67914 | |
display | Definition: Should include the reference identifier for the Accuracy-Attribute MDC_ATTR_NU_ACCUR_MSMT | |||
valueQuantity | 1.. | Quantity | Data Type | |
value | 1.. | Definition: This is the value of the accuracy attribute. The value is Mder FLOAT encoded and shall be expressed to the precision indicated by the Mder FLOAT. | ||
unit | Definition: A human-readable form of the unit. One should put the UCUM code for the units in this display string. It shall match the UCUM code in Observation.valueQuantity.unit if UCUM is used there. | |||
system | 1.. | Fixed Value | Definition: The unit code shall use the MDC system urn:iso:std:iso:11073:10101 | |
code | 1.. | Definition: The units are given by the units of the measurement so this shall have the code as in Observation.valueQuantity.code | ||
dataAbsentReason | ..0 |
A JSON example is given in Phd Compound Numeric Observation JSON Example
The following table shows how the compound numeric attributes are mapped to FHIR. Since the FHIR Quantity also contains the units the Unit-Code attribute value is required to complete the picture.
Attribute | FHIR coding |
---|---|
Compound-Basic-Nu-Observed-Value.valueN Unit-Code.code Metric-Id-List.codeN |
Observation.componentN.valueQuantity.value Observation.componentN.valueQuantity.code Observation.componentN.code.coding.code |
Compound-Simple-Nu-Observed-Value.valueN Unit-Code.code Metric-Id-List.codeN |
Observation.componentN.valueQuantity.value Observation.componentN.valueQuantity.code Observation.componentN.code.coding.code |
Compound-Nu-Observed-Value.valueN Compound-Nu-Observed-Value.unitN Compound-Nu-Observed-Value.metric-idN Compound-Nu-Observed-Value.statusN |
Observation.componentN.valueQuantity.value Observation.componentN.valueQuantity.code Observation.componentN.code.coding.code Observation.componentN.dataAbsentReason |
For a general description of the PHD Profile Identifier see the "PHD Profile Identifier" section in Phd Base Profile. The table below lists the items that make up the identifier.
Entry | value | Additional information |
---|---|---|
device | "PhdParentDeviceComponent.identifier.value" | This value is the PHD IEEE EUI-64 system identifier |
patient | "Patient.identifier.value-Patient.identifier.system" or provided logical id |
The dashes are part of the identifier. When the service provider gives the PHG a pre-determined patient logical id the PHG creates no Patient resource and has no patient information. In that special case the provided logical id is used |
type | "Observation.code.coding.code" | See Obtaining the Observation.code |
value | "Observation.componentN.valueQuantity.value" or "Observation.componentN.dataAbsentReason.coding.code" |
The data absent reason code is used if there is no value |
units | "Observation.component1.valueQuantity.code" | When not a Compound-Nu-Observed-Value attribute the units are the same for each entry so only one unit code is needed |
valueUnits | "Observation.componentN.valueQuantity.value" or "Observation.componentN.dataAbsentReason.coding.code" followed by the 32-bit unit code for each entry |
In the Compound-Nu-Observed-Value the unit code can be different for each entry |
reported PHD timestamp | "timestamp" | See Generating the PHD Reported Time Stamp |
supplemental types | "Supplemental-Types.N-" | A sequence of 32-bit MDC codes separated by a dash |
The final identifier is made by concatenating the entries above as follows:
11073 20601 numeric metric measurements have some additional optional attributes that are used only for numerics. When they occur, these additional attributes provide further information about the measurement. An example of such a numeric-only additional attribute is one that describes the accuracy of the measurement. The accuracy is a measure of the deviation of the actual measurement from the reported measurement. Consequently, 'accuracy' is not a concept that makes any sense in the context of a measurement which is one or more of a finite set of enumerated codes such as a glucose-monitor meal assoication (breakfast, snack, fasting, etc.), and thus the attribute is not used in Enumration metrics.
As in the PhdBaseObservation profile, an Observation.component element is used to contain the additional information. At this time there only the Accuracy attribute is used for compound numerics. The remaining numeric-specific attributes are not structured to handle compounds.
The Accuracy attribute gives the maximum deviation as an absolute value of the reported measurement from the actual measurement over the entire range of the measurement. The reported accuracy is, thus, static and does not vary over the range of the measurement. It shall be reported if the PHD provides it and it is not corrupted. It is in the units of the measurement itself. This kind of measurement may not make sense to report with some compound measurements, esepcially in the case of the Compound-Nu_Observed-Value as each element could have different units.
The entries are as populated as follows:
Observation.component element | entry | Additional Information |
---|---|---|
.code.coding.code | 67914 | This is the MDC code for the Accuracy attribute |
.code.coding.system | urn:iso:std:iso:11073:10101 | Indicates the MDC coding system |
.code.coding.display | optional but | Should contain the reference id MDC_ATTR_NU_ACCUR_MSMT along with any other additional text |
.valueQuantity.value | the value | This is accuracy value |
.valueQuantity.unit | optional but | Should contain the UCUM string and shall match the UCUM string of the primary measurement |
.valueQuantity.system | urn:iso:std:iso:11073:10101 | Indicates the MDC coding system |
.valueQuantity.code | shall be the code of the primary measurement | The code shall be the MDC unit code |
The following JSON example is from a Blood Pressure Cuff. The Blood Pressure is an interesting case as the generic, systolic, and disatolic blood pressure all qualify for one of the LOINC magic codes but the MAP pressure does not. The presence of the Coincident Time Stamp Observation in the 'related' element indicates that the PHD provided the time stamp and the time is not the time of reception by the PHG.
Though present, the 'category' and 'performer' are not required in the Phd Compound Numeric Observation profile.
{ "resourceType":"Observation", "meta":{ "profile": [ "http://pchalliance.org/phdfhir/StructureDefinition/PhdCompoundNumericObservation" ] }, "identifier": [ { "value":"sisansarahId-urn:oid:1.2.3.4.5.6.7.8.10-01040302f0000000-150020-20171212091343-104-66-92-266016" // Note that 104, 66, and 92 are the three constituents of the compound // measurement followed by the unit code 266016. Now if this were a Compound-Nu-Observed-Value // attribute then there might have been a different unit for each constituent and it would // have looked like this: 104-units1-66-units2-92-units3 for whatever unit codes they are } ], "status":"final", "category": [ { "coding": [ { "system":"http://hl7.org/fhir/observation-category", "code":"vital-signs", "display":"Vital Signs" } ] } ], "code":{ "coding": [ { "system":"urn:iso:std:iso:11073:10101", "code":"150020", "display":"MDC_PRESS_BLD_NONINV" }, { "system":"http://loinc.org", "code":"55284-4", "display":"Blood Pressure" } ] }, "subject":{ "reference":"Patient/PatientId-sisansarahId" }, "effectiveDateTime":"2017-12-12T09:13:43-05:00", "performer": [ // This entry is optional { "reference":"Patient/PatientId-sisansarahId" } ], "device":{ "reference":"DeviceComponent/SysId-01040302f0000000" }, "related": [ { "id":"coincidentTimeStampRelated", "type":"qualified-by", "target":{ "reference":"urn:oid:3.14159.20171212091339" } } ], "component": [ { "code":{ "coding": [ { "system":"urn:iso:std:iso:11073:10101", "code":"150021", "display":"MDC_PRESS_BLD_NONINV_SYS" }, { "system":"http://loinc.org", "code":"8480-6", "display":"Systolic blood pressure" } ] }, "valueQuantity":{ "value":"104", "unit":"mmHg", "system":"urn:iso:std:iso:11073:10101", "code":"266016" } }, { "code":{ "coding": [ { "system":"urn:iso:std:iso:11073:10101", "code":"150022", "display":"MDC_PRESS_BLD_NONINV_DIA" }, { "system":"http://loinc.org", "code":"8462-4", "display":"Diastolic blood pressure" } ] }, "valueQuantity":{ "value":"66", "unit":"mmHg", "system":"urn:iso:std:iso:11073:10101", "code":"266016" } }, { "code":{ "coding": [ { "system":"urn:iso:std:iso:11073:10101", "code":"150023", "display":"MDC_PRESS_BLD_NONINV_MEAN" } ] }, "valueQuantity":{ "value":"92", "unit":"mmHg", "system":"urn:iso:std:iso:11073:10101", "code":"266016" } } ] }