This page is part of the Personal Health Device FHIR IG (v1.1.0: STU 1) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. 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 is a vector or a set of related concepts which may be dimensionless. Examples would be the x, y, and z components of the acceleration, the systolic, diastolic, and mean components of a blood pressure measurement, or the set of package positions and associated questions in the Advanced Medication Monitor. Outside of the blood pressure, compound numeric measurements are relatively rare.
The measurement is a compound when the PHD metric 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 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 given here
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. The MDC units need to be mapped to UCUM when used in FHIR. A UCUM unit shall be used when it is available.
Attribute | FHIR coding |
---|---|
Compound-Basic-Nu-Observed-Value.valueN Unit-Code.code Metric-Id-List.codeN |
Observation.componentN.valueQuantity.value Observation.componentN.valueQuantity.code (as UCUM) 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 (as UCUM) 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 (as UCUM) Observation.componentN.code.coding.code Observation.componentN.dataAbsentReason |
For a general description of the PHD Observation Identifier see the "PHD Observation Identifier" section in PHD Base Observation Profile. The table below lists the items that make up the identifier.
Entry | value | Additional information |
---|---|---|
device | "PHD Device.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 UCUM 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:
IEEE 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 association (breakfast, snack, fasting, etc.), and thus the attribute is not used in Enumeration metrics.
As in the PhdBaseObservation profile, an Observation.component element is used to contain the additional information. Only the Accuracy attribute is used for compound numerics. The other 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, especially 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.text | 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 | |
valueQuantity.system | http://unitsofmeasure.org | Indicates the UCUM coding system |
valueQuantity.code | shall be the UCUM code of the primary measurement | Assumes the units are the same for all components |
This example shows a blood pressure measurement. The important item to note is that there is no value[x] element in the 'primary' measurement. The set of values describing the compound are in the value[x] elements of the Observation.component elements.