ENRICH-mHealth FHIR Implementation Guide
0.1.0 - ci-build

ENRICH-mHealth FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: ENRICH-mHealth Device Metric (Sensor Type and Calibration Status)

Official URL: https://www.bihealth.org/fhir/enrich-mhealth/StructureDefinition/enrich-mhealth-device-metric Version: 0.1.0
Draft as of 2026-07-16 Computable Name: ENRICHDeviceMetric

Profile for a single metric/sensor of an ENRICH-mHealth Personal Health Device, capturing the sensor type (IEEE 11073 MDC) and its calibration status. Multiple sensors reference one device via source (e.g. a smartwatch reporting both pulse and SpO2). Modeled after the gematik HDDT hddt-sensor-type-and-calibration-status (DeviceMetric).

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... type SΣ 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type.
... source SΣ 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... parent SΣ 0..1 Reference(Device) Describes the link to the parent Device
... operationalStatus SΣ 0..1 code on | off | standby | entered-in-error
Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric.
... category SΣ 1..1 code measurement | setting | calculation | unspecified
Binding: DeviceMetricCategory (required): Describes the category of the metric.
... calibration SΣ 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type SΣ 0..1 code unspecified | offset | gain | two-point
Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration.
.... state SΣ 1..1 code not-calibrated | calibration-required | calibrated | unspecified
Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration.
.... time SΣ 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DeviceMetric.type Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.unit Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.operationalStatus Base required DeviceMetricOperationalStatus 📍4.0.1 FHIR Std.
DeviceMetric.category Base required DeviceMetricCategory 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​type Base required DeviceMetricCalibrationType 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​state Base required DeviceMetricCalibrationState 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error DeviceMetric If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error DeviceMetric If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice DeviceMetric A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from DeviceMetric

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... type S 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
... unit S 0..1 CodeableConcept Unit of Measure for the Metric
... source S 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... operationalStatus S 0..1 code on | off | standby | entered-in-error
... category S 1..1 code measurement | setting | calculation | unspecified
... calibration S 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... type S 0..1 code unspecified | offset | gain | two-point
.... state S 1..1 code not-calibrated | calibration-required | calibrated | unspecified
.... time S 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Instance identifier
... type SΣ 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type.
... unit SΣ 0..1 CodeableConcept Unit of Measure for the Metric
Binding: DeviceMetricAndComponentTypes (preferred): Describes the unit of the metric.
... source SΣ 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... parent SΣ 0..1 Reference(Device) Describes the link to the parent Device
... operationalStatus SΣ 0..1 code on | off | standby | entered-in-error
Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric.
... color Σ 0..1 code black | red | green | yellow | blue | magenta | cyan | white
Binding: DeviceMetricColor (required): Describes the typical color of representation.
... category SΣ 1..1 code measurement | setting | calculation | unspecified
Binding: DeviceMetricCategory (required): Describes the category of the metric.
... measurementPeriod Σ 0..1 Timing Describes the measurement repetition time
... calibration SΣ 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type SΣ 0..1 code unspecified | offset | gain | two-point
Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration.
.... state SΣ 1..1 code not-calibrated | calibration-required | calibrated | unspecified
Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration.
.... time SΣ 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DeviceMetric.language Base preferred Common Languages 📍4.0.1 FHIR Std.
DeviceMetric.type Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.unit Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.operationalStatus Base required DeviceMetricOperationalStatus 📍4.0.1 FHIR Std.
DeviceMetric.color Base required DeviceMetricColor 📍4.0.1 FHIR Std.
DeviceMetric.category Base required DeviceMetricCategory 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​type Base required DeviceMetricCalibrationType 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​state Base required DeviceMetricCalibrationState 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error DeviceMetric If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error DeviceMetric If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice DeviceMetric A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from DeviceMetric

Summary

Mandatory: 1 element(1 nested mandatory element)
Must-Support: 10 elements

Structures

This structure refers to these other structures:

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... type SΣ 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type.
... source SΣ 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... parent SΣ 0..1 Reference(Device) Describes the link to the parent Device
... operationalStatus SΣ 0..1 code on | off | standby | entered-in-error
Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric.
... category SΣ 1..1 code measurement | setting | calculation | unspecified
Binding: DeviceMetricCategory (required): Describes the category of the metric.
... calibration SΣ 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type SΣ 0..1 code unspecified | offset | gain | two-point
Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration.
.... state SΣ 1..1 code not-calibrated | calibration-required | calibrated | unspecified
Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration.
.... time SΣ 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DeviceMetric.type Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.unit Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.operationalStatus Base required DeviceMetricOperationalStatus 📍4.0.1 FHIR Std.
DeviceMetric.category Base required DeviceMetricCategory 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​type Base required DeviceMetricCalibrationType 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​state Base required DeviceMetricCalibrationState 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error DeviceMetric If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error DeviceMetric If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice DeviceMetric A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

Differential View

This structure is derived from DeviceMetric

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... type S 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
... unit S 0..1 CodeableConcept Unit of Measure for the Metric
... source S 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... operationalStatus S 0..1 code on | off | standby | entered-in-error
... category S 1..1 code measurement | setting | calculation | unspecified
... calibration S 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... type S 0..1 code unspecified | offset | gain | two-point
.... state S 1..1 code not-calibrated | calibration-required | calibrated | unspecified
.... time S 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DeviceMetric 0..* DeviceMetric Measurement, calculation or setting capability of a medical device
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Instance identifier
... type SΣ 1..1 CodeableConcept Identity of metric, for example Heart Rate or PEEP Setting
Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type.
... unit SΣ 0..1 CodeableConcept Unit of Measure for the Metric
Binding: DeviceMetricAndComponentTypes (preferred): Describes the unit of the metric.
... source SΣ 1..1 Reference(ENRICH-mHealth Personal Health Device) Describes the link to the source Device
... parent SΣ 0..1 Reference(Device) Describes the link to the parent Device
... operationalStatus SΣ 0..1 code on | off | standby | entered-in-error
Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric.
... color Σ 0..1 code black | red | green | yellow | blue | magenta | cyan | white
Binding: DeviceMetricColor (required): Describes the typical color of representation.
... category SΣ 1..1 code measurement | setting | calculation | unspecified
Binding: DeviceMetricCategory (required): Describes the category of the metric.
... measurementPeriod Σ 0..1 Timing Describes the measurement repetition time
... calibration SΣ 0..* BackboneElement Describes the calibrations that have been performed or that are required to be performed
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type SΣ 0..1 code unspecified | offset | gain | two-point
Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration.
.... state SΣ 1..1 code not-calibrated | calibration-required | calibrated | unspecified
Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration.
.... time SΣ 0..1 instant Describes the time last calibration has been performed

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DeviceMetric.language Base preferred Common Languages 📍4.0.1 FHIR Std.
DeviceMetric.type Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.unit Base preferred Device Metric and Component Types 📍4.0.1 FHIR Std.
DeviceMetric.operationalStatus Base required DeviceMetricOperationalStatus 📍4.0.1 FHIR Std.
DeviceMetric.color Base required DeviceMetricColor 📍4.0.1 FHIR Std.
DeviceMetric.category Base required DeviceMetricCategory 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​type Base required DeviceMetricCalibrationType 📍4.0.1 FHIR Std.
DeviceMetric.calibration.​state Base required DeviceMetricCalibrationState 📍4.0.1 FHIR Std.

Constraints

Id Grade Path(s) Description Expression
dom-2 error DeviceMetric If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error DeviceMetric If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error DeviceMetric If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice DeviceMetric A resource should have narrative for robust management text.`div`.exists()
ele-1 error **ALL** elements All FHIR elements must have a @value or children hasValue() or (children().count() > id.count())
ext-1 error **ALL** extensions Must have either extensions or value[x], not both extension.exists() != value.exists()

This structure is derived from DeviceMetric

Summary

Mandatory: 1 element(1 nested mandatory element)
Must-Support: 10 elements

Structures

This structure refers to these other structures:

 

Other representations of profile: CSV, Excel, Schematron