Specification of health data transfer from devices to DiGA (§ 374a SGB V)
| Official URL: https://gematik.de/fhir/hddt/StructureDefinition/hddt-sensor-type-and-calibration-status | Version: 0.1.0 | |||
| Draft as of 2025-10-27 | Computable Name: HddtSensorTypeAndCalibrationStatus | |||
Copyright/Legal: Copyright (c) 2025 gematik GmbH |
||||
The HddtSensorTypeAndCalibrationStatus profile captures the calibration status of a sensor which is part of a Personal Health Device.
Personal Health Devices need to be calibrated in order to provide safe measurements. Some devices are already calibrated by the manufacturer while others calibrate themselves after activation and others need to be calibrated by the patient. If a Personal Health Device transmits data from a non calibrated sensor to the resource server at all depends on the concrete product. For a DiGA as a device data consumer to process device data in a safe manner, it must be transparent if the data it received was measured by a calibrated sensor or not.
For devices where the sensor that measured a value requires automated or manual calibration, the Observation capturing this value
MUST refer to a HddtSensorTypeAndCalibrationStatus resource through its Observation.device element.
The HddtSensorTypeAndCalibrationStatus implements a FHIR DeviceMetric resource which
holds calibration information in a calibration.type, a calibration.state and a calibration.date element. In addition
the HddtSensorTypeAndCalibrationStatus can provide a definition of the unit that is preferrably to be used for presenting
measured values to the patient.
The HddtSensorTypeAndCalibrationStatus of a measurement MUST always refer to a HddTPersonalHealthDevice Device resource that represents the Personal Health Device that contains the sensor. This is a many-to-one relationship which allows for a Personal Health Device to contain multiple sensors for different measured values. E.g. by this a pulse oximeter as a HDDT Personal Health Device can provide pulse and SPO2 as two different interoperable values with each of this values being linked with a dedicated HddtSensorTypeAndCalibrationStatus resource.
Obligations and Conventions:
DiGA as device data consumers SHOULD NOT rely on the DeviceMetric.operationalStatus of a sensor as this status does only reflect the status of the sensor
and does not provide information about the end-to-end status of the flow of device data from the sensor within the Personal Health Device
to the resource server in the device backend. Instead DiGA SHOULD process the Device.status information that can be obtained through the
DeviceMetric.source reference. This element considers the end-to-end availability of data and therefore is the only source for
information about potentially missing data (e.g. due to temporal problems with the bluetooth or internet connection).
Constraints applied:
unit is restricted to UCUM.source is constrained as a mandatory element in order to enable a DiGA to obtain dynamic and static device attributes through this referencecalibration is set to Must Support. This element and respective status information MUST be provided if the sensor performs automated or requires manual calibration after the device has been put into operation with the patient (Device.statusis active).Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 1..1 | CodeableConcept | Identity of metric, for example Heart Rate or PEEP Setting Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type. |
![]() ![]() |
Σ | 0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements |
![]() ![]() |
Σ | 1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor |
![]() ![]() |
Σ | 0..1 | code | on | off | standby | entered-in-error Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric. |
![]() ![]() |
Σ | 1..1 | code | measurement | setting | calculation | unspecified Binding: DeviceMetricCategory (required): Describes the category of the metric. |
![]() ![]() |
SΣ | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 1..1 | code | not-calibrated | calibration-required | calibrated | unspecified Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration. |
![]() ![]() ![]() |
SΣ | 0..1 | instant | Time when the last calibration has been performed |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| DeviceMetric.type | Base | preferred | Device Metric and Component Types | 📍4.0.1 | FHIR Std. |
| DeviceMetric.unit | Base | required | UCUM Codes | 📦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.state | Base | required | DeviceMetricCalibrationState | 📍4.0.1 | FHIR Std. |
| 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
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |
![]() ![]() |
0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements | |
![]() ![]() |
1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor | |
![]() ![]() |
0..1 | code | on | off | standby | entered-in-error | |
![]() ![]() |
S | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed |
![]() ![]() ![]() |
1..1 | code | not-calibrated | calibration-required | calibrated | unspecified | |
![]() ![]() ![]() |
S | 0..1 | instant | Time when the last calibration has been performed |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| DeviceMetric.unit | Base | required | UCUM Codes | 📦4.0.1 | FHIR Std. |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Instance identifier | ||||
![]() ![]() |
Σ | 1..1 | CodeableConcept | Identity of metric, for example Heart Rate or PEEP Setting Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type. | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements | ||||
![]() ![]() |
Σ | 1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor | ||||
![]() ![]() |
Σ | 0..1 | Reference(Device) | Describes the link to the parent Device | ||||
![]() ![]() |
Σ | 0..1 | code | on | off | standby | entered-in-error Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric. | ||||
![]() ![]() |
Σ | 0..1 | code | black | red | green | yellow | blue | magenta | cyan | white Binding: DeviceMetricColor (required): Describes the typical color of representation. | ||||
![]() ![]() |
Σ | 1..1 | code | measurement | setting | calculation | unspecified Binding: DeviceMetricCategory (required): Describes the category of the metric. | ||||
![]() ![]() |
Σ | 0..1 | Timing | Describes the measurement repetition time | ||||
![]() ![]() |
SΣ | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..1 | code | unspecified | offset | gain | two-point Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration. | ||||
![]() ![]() ![]() |
Σ | 1..1 | code | not-calibrated | calibration-required | calibrated | unspecified Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration. | ||||
![]() ![]() ![]() |
SΣ | 0..1 | instant | Time when the last calibration has been performed | ||||
Documentation for this format | ||||||||
| 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 | required | UCUM Codes | 📦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. |
| 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
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 1..1 | CodeableConcept | Identity of metric, for example Heart Rate or PEEP Setting Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type. |
![]() ![]() |
Σ | 0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements |
![]() ![]() |
Σ | 1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor |
![]() ![]() |
Σ | 0..1 | code | on | off | standby | entered-in-error Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric. |
![]() ![]() |
Σ | 1..1 | code | measurement | setting | calculation | unspecified Binding: DeviceMetricCategory (required): Describes the category of the metric. |
![]() ![]() |
SΣ | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 1..1 | code | not-calibrated | calibration-required | calibrated | unspecified Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration. |
![]() ![]() ![]() |
SΣ | 0..1 | instant | Time when the last calibration has been performed |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| DeviceMetric.type | Base | preferred | Device Metric and Component Types | 📍4.0.1 | FHIR Std. |
| DeviceMetric.unit | Base | required | UCUM Codes | 📦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.state | Base | required | DeviceMetricCalibrationState | 📍4.0.1 | FHIR Std. |
| 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
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |
![]() ![]() |
0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements | |
![]() ![]() |
1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor | |
![]() ![]() |
0..1 | code | on | off | standby | entered-in-error | |
![]() ![]() |
S | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed |
![]() ![]() ![]() |
1..1 | code | not-calibrated | calibration-required | calibrated | unspecified | |
![]() ![]() ![]() |
S | 0..1 | instant | Time when the last calibration has been performed |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| DeviceMetric.unit | Base | required | UCUM Codes | 📦4.0.1 | FHIR Std. |
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | DeviceMetric | Configuration or setting capability of a personal health device | |||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Instance identifier | ||||
![]() ![]() |
Σ | 1..1 | CodeableConcept | Identity of metric, for example Heart Rate or PEEP Setting Binding: DeviceMetricAndComponentTypes (preferred): Describes the metric type. | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | UCUM code of the unit of the measurement as it is used when presenting data to the patient Binding: UCUMCodes (required): For HDDT only codes from UCUM MUST be used for coding units of measurements | ||||
![]() ![]() |
Σ | 1..1 | Reference(Device – Personal Health Device) | Reference to the Personal Health Device holding the sensor | ||||
![]() ![]() |
Σ | 0..1 | Reference(Device) | Describes the link to the parent Device | ||||
![]() ![]() |
Σ | 0..1 | code | on | off | standby | entered-in-error Binding: DeviceMetricOperationalStatus (required): Describes the operational status of the DeviceMetric. | ||||
![]() ![]() |
Σ | 0..1 | code | black | red | green | yellow | blue | magenta | cyan | white Binding: DeviceMetricColor (required): Describes the typical color of representation. | ||||
![]() ![]() |
Σ | 1..1 | code | measurement | setting | calculation | unspecified Binding: DeviceMetricCategory (required): Describes the category of the metric. | ||||
![]() ![]() |
Σ | 0..1 | Timing | Describes the measurement repetition time | ||||
![]() ![]() |
SΣ | 0..* | BackboneElement | Describes the calibrations that have been performed or that are required to be performed | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..1 | code | unspecified | offset | gain | two-point Binding: DeviceMetricCalibrationType (required): Describes the type of a metric calibration. | ||||
![]() ![]() ![]() |
Σ | 1..1 | code | not-calibrated | calibration-required | calibrated | unspecified Binding: DeviceMetricCalibrationState (required): Describes the state of a metric calibration. | ||||
![]() ![]() ![]() |
SΣ | 0..1 | instant | Time when the last calibration has been performed | ||||
Documentation for this format | ||||||||
| 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 | required | UCUM Codes | 📦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. |
| 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
Other representations of profile: CSV, Excel, Schematron