DeviceMetric — Metric produced by a device
Describes what a device can measure, calculate or display: a monitor's heart rate, a pump's flow rate, a pulse oximeter's SpO2, a cuff's blood pressure. A device carries several DeviceMetric; each real measurement is an Observation referencing the DeviceMetric that produced it.
Purpose of the resource
Native medical-device interoperability (biomedical PnP) relies on two complementary standards: the IEEE 11073-10101 nomenclature (which codifies every measurement type with a stable, vendor-neutral numeric identifier), and the IEEE 11073-20701 SDC protocol (which describes how these measurements are exchanged on the network). DeviceMetric is the FHIR projection of the SDC Metric Description.
A DeviceMetric can be of category: measurement (value directly measured),
calculation (value derived by an internal algorithm), setting
(user-set value), unspecified. Typical cases: HR of a monitor, programmed
flow rate of a pump, configured alarm.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | External identifiers. |
type | CodeableConcept | 1..1 | Metric code (LOINC, IEEE 11073-10101 MDC code). |
unit | CodeableConcept | 0..1 | Measurement unit (UCUM). |
device | Reference(Device) | 1..1 | Device producing the metric. |
operationalStatus | code | 0..1 | on, off, standby, entered-in-error. |
color | code | 0..1 | Trace colour on the monitor. |
category | code | 1..1 | measurement, setting, calculation, unspecified. |
measurementFrequency | Quantity | 0..1 | Sampling frequency (Hz). |
calibration | BackboneElement[] | 0..* | Calibrations performed (type, state, time). |
JSON example
"Heart rate" metric of a monitor, coded LOINC 8867-4 + IEEE 11073 147842, 1 Hz sampling, two-point calibration performed the day before:
{
"resourceType": "DeviceMetric",
"id": "monitor-heart-rate",
"identifier": [{ "system": "http://acme.com/devices/metrics", "value": "HR-MON-12345" }],
"type": {
"coding": [{
"system": "http://loinc.org",
"code": "8867-4",
"display": "Heart rate"
}, {
"system": "urn:iso:std:iso:11073:10101",
"code": "147842",
"display": "MDC_ECG_HEART_RATE"
}]
},
"unit": {
"coding": [{
"system": "http://unitsofmeasure.org",
"code": "/min",
"display": "per minute"
}]
},
"device": { "reference": "Device/example-monitor" },
"operationalStatus": "on",
"color": "red",
"category": "measurement",
"measurementFrequency": {
"value": 1,
"unit": "Hz",
"system": "http://unitsofmeasure.org",
"code": "Hz"
},
"calibration": [{
"type": "two-point",
"state": "calibrated",
"time": "2026-05-15T08:00:00+02:00"
}]
} Typical use cases
- Multi-parameter monitoring: HR, SpO2, NIBP, RR, T°, ETCO2 — each one is a DeviceMetric.
- Infusion pumps: flow rate (mL/h), cumulative volume (mL), bolus, occlusion pressure.
- Ventilators: VT, FiO2, PEEP, RR, P-plateau, P-mean.
- Glucometers / CGM: continuous glucose, rate of change, alarms.
- IoMT platform: multi-device aggregation with a common MDC-code reference.
Common pitfalls
- Type without IEEE 11073 code: using LOINC alone breaks interop with SDC devices. Always provide at least one MDC code coding in parallel.
- Non-UCUM unit: "bpm" is not valid in UCUM — use
/min. - DeviceMetric / Observation confusion: DeviceMetric describes what the device can produce, Observation carries an actual measurement. Never embed a value in DeviceMetric.
- No calibration: for critical sensors (BIS, EtCO2, anaesthetic gases),
calibration.timemust be traced. Without calibration, measurements cannot be audited. - Sampling frequency absent: for high-resolution waveforms (ECG 250 Hz, IBP 125 Hz),
measurementFrequencyis critical for rhythm analysis.
Related resources
- Device — parent device.
- DeviceDefinition — catalogue definition.
- Observation — every actual value references the DeviceMetric via
device. - DeviceUsage, DeviceAssociation — device usage.
See also: Device — physical instance and Observation — the actual measurement.