Specification of health data transfer from devices to DiGA (§ 374a SGB V)
Seiteninhalt:
This chapter provides obligations and hints for manufacturers of Device Data Recorders for implementing a FHIR Resource Server for the Mandatory Interoperable Value (MIV) Blood Pressure Monitoring. For an overview of this MIV including typical use cases and key values, see the Blood Pressure Monitoring domain chapter.
This chapter builds on the HDDT Information Model, the HDDT Generic FHIR API, and the HDDT guide for retrieving device data. It constraints these guidelines with respect to the specific requirements for exposing blood pressure monitoring to DiGA, including:
Manufacturers of Device Data Recorders that support the MIV Blood Pressure Monitoring
Further obligations MAY be defined by gematik and BfArM as part of the upcoming processes for conformance validation and registration.
The Device Data Recorder’s FHIR Resource Server gives DiGA access to measured data and related information about devices and device metrics. A Device Data Recorder’s FHIR Resource Server that serves the MIV Blood Pressure Monitoring MUST implement the following endpoints and profiles:
/metadata endpoint.The figure below shows the adaption of the HDDT Information Model for the MIV Blood Pressure Monitoring. Elements denoted as [1..1] are mandatory or MS for the MIV Blood Pressure Monitoring (see Use of HL7 FHIR).
All interactions on HDDT-specific endpoints require that the requestor presents a valid Access Token that was issued by the Device Data Recorder’s OAuth2 Authorization Server (see Pairing for details). The authorization of the request follows the principles defined for HDDT Smart Scopes. For the MIV Blood Pressure Monitoring only the following scopes MUST be set:
patient/Observation.rs?code:in=https://gematik.de/fhir/hddt/ValueSet/hddt-miv-blood-pressure-value
patient/Device.rs
This section discusses the HDDT Blood Pressure Monitoring profile, which constrains the FHIR Observation resource for representing blood pressure monitoring. For the full normative specification of this profile see the respective StructureDefinition.
Profile: Observation - HDDT Blood Pressure Value
This structure is derived from VitalSignDE_Blutdruck
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | VitalSignDE_Blutdruck | Measurements and simple assertions Constraints: obs-6, obs-7, vs-de-2 |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
?!SΣ | 1..1 | code | Measurement status Binding: ObservationStatus (required): Codes providing the status of an observation. Fixed Value: final |
![]() ![]() |
1..* | CodeableConcept | Classification of type of observation Slice: Unordered, Open by pattern:$this Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |
![]() ![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. Required Pattern: At least the following | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() |
1..* | Coding | Code defined by a terminology system Fixed Value: (Complex) | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Version of the system - if relevant | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Fixed Value: vital-signs | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system | |
![]() ![]() ![]() ![]() ![]() |
0..1 | boolean | If this coding was chosen directly by the user | |
![]() ![]() ![]() ![]() |
0..1 | string | Plain text representation of the concept | |
![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of blood pressure measurement Binding: LOINCCodes (example): Specifies the type of blood pressure measurement using codes from the ValueSet for blood pressure measurements. |
![]() ![]() ![]() |
Σ | 1..* | Coding | Code defined by a terminology system Slice: Unordered, Open by pattern:$this |
![]() ![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system Binding: Blood Pressure Value from LOINC (required) Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Fixed Value: http://loinc.org | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Version of the system - if relevant | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Fixed Value: 85354-9 | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system | |
![]() ![]() ![]() ![]() ![]() |
0..1 | boolean | If this coding was chosen directly by the user | |
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system |
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system |
![]() ![]() |
Σ | 1..1 | Reference(Patient) | Patient reference in anonymized or pseudonymized form only |
![]() ![]() |
ΣC | 1..1 | Clinically relevant time/time-period for observation Constraints: vs-de-1 | |
![]() ![]() ![]() |
dateTime | |||
![]() ![]() ![]() |
Period | |||
![]() ![]() |
S | 1..1 | Reference(Device – Personal Health Device) | Reference to the blood pressure measurement device |
![]() ![]() |
ΣC | 2..* | BackboneElement | Component results Slice: Unordered, Open by pattern:code Constraints: vs-de-3 |
![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
![]() ![]() ![]() ![]() |
Σ | 0..1 | Actual component result Slice: Unordered, Open by type:$this | |
![]() ![]() ![]() ![]() ![]() |
Quantity | |||
![]() ![]() ![]() ![]() ![]() |
CodeableConcept | |||
![]() ![]() ![]() ![]() ![]() |
string | |||
![]() ![]() ![]() ![]() ![]() |
boolean | |||
![]() ![]() ![]() ![]() ![]() |
integer | |||
![]() ![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() ![]() |
Ratio | |||
![]() ![]() ![]() ![]() ![]() |
SampledData | |||
![]() ![]() ![]() ![]() ![]() |
time | |||
![]() ![]() ![]() ![]() ![]() |
dateTime | |||
![]() ![]() ![]() ![]() ![]() |
Period | |||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Quantity | Actual component result |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | uri | System that defines coded unit form Required Pattern: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() |
ΣC | 1..1 | BackboneElement | Component results Constraints: vs-de-3 |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() |
1..* | Coding | Code defined by a terminology system Fixed Value: (Complex) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Fixed Value: http://loinc.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Version of the system - if relevant | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Fixed Value: 8480-6 | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | boolean | If this coding was chosen directly by the user | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Plain text representation of the concept | |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Quantity | Actual component result Slice: Unordered, Closed by type:$this |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | Quantity | Actual component result Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | code | < | <= | >= | > - how to understand the value | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit Fixed Value: mm[Hg] | |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | uri | System that defines coded unit form Required Pattern: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() |
ΣC | 1..1 | BackboneElement | Component results Constraints: vs-de-3 |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() |
1..* | Coding | Code defined by a terminology system Fixed Value: (Complex) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Fixed Value: http://loinc.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Version of the system - if relevant | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Fixed Value: 8462-4 | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | boolean | If this coding was chosen directly by the user | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Plain text representation of the concept | |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Quantity | Actual component result Slice: Unordered, Closed by type:$this |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | Quantity | Actual component result Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | code | < | <= | >= | > - how to understand the value | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit Fixed Value: mm[Hg] | |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | uri | System that defines coded unit form Required Pattern: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() |
ΣC | 0..1 | BackboneElement | Component results Constraints: vs-de-3 |
![]() ![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() |
1..* | Coding | Code defined by a terminology system Fixed Value: (Complex) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Fixed Value: http://loinc.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Version of the system - if relevant | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Fixed Value: 8478-0 | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | boolean | If this coding was chosen directly by the user | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Plain text representation of the concept | |
![]() ![]() ![]() ![]() |
Σ | 0..1 | Quantity | Actual component result Slice: Unordered, Open by type:$this |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | Quantity | Actual component result Required Pattern: At least the following |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | code | < | <= | >= | > - how to understand the value | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit Fixed Value: mm[Hg] | |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | uri | System that defines coded unit form Required Pattern: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Coded form of the unit |
Documentation for this format | ||||
Detailed description of differential elements
Guidance on how to interpret the contents of this table can be foundhere
| 0. Observation | |
| 2. Observation.status | |
| Definition | The status of the measurements is fixed to 'final'. Only verified and complete measurements with a valid value are represented. |
| Short | Measurement status |
| Must Support | true |
| Fixed Value | final |
| 4. Observation.code | |
| Short | Type of blood pressure measurement |
| Binding | For example codes, see LOINCCodes (example to http://hl7.org/fhir/ValueSet/observation-codes)Specifies the type of blood pressure measurement using codes from the ValueSet for blood pressure measurements. |
| 6. Observation.code.coding:loinc | |
| Slice Name | loinc |
| Binding | The codes SHALL be taken from Blood Pressure Value from LOINC (required to https://gematik.de/fhir/hddt/ValueSet/hddt-miv-blood-pressure-value) |
| 8. Observation.code.coding:snomed | |
| Slice Name | snomed |
| Control | 0..0 |
| 10. Observation.subject | |
| Definition | Reference to the patient. The patient MUST NOT be identified directly. Only anonymized or pseudonymized forms are permitted. |
| Short | Patient reference in anonymized or pseudonymized form only |
| 12. Observation.device | |
| Short | Reference to the blood pressure measurement device |
| Control | 1..? |
| Type | Reference(Device – Personal Health Device) |
| Must Support | true |
| 14. Observation.component:SystolicBP | |
| Slice Name | SystolicBP |
| 16. Observation.component:SystolicBP.value[x] | |
| [x] Note | SeeChoice of Data Typesfor further information about how to use [x] |
| Must Support | true |
| 18. Observation.component:SystolicBP.value[x]:valueQuantity | |
| Slice Name | valueQuantity |
| Type | Quantity |
| [x] Note | SeeChoice of Data Typesfor further information about how to use [x] |
| Must Support | true |
| 20. Observation.component:DiastolicBP | |
| Slice Name | DiastolicBP |
| 22. Observation.component:DiastolicBP.value[x] | |
| [x] Note | SeeChoice of Data Typesfor further information about how to use [x] |
| Must Support | true |
| 24. Observation.component:DiastolicBP.value[x]:valueQuantity | |
| Slice Name | valueQuantity |
| Type | Quantity |
| [x] Note | SeeChoice of Data Typesfor further information about how to use [x] |
| Must Support | true |
For information on general constraints and terminology bindings see the full StructureDefinition for this profile.
Blood pressure measurements MUST be represented using the LOINC panel code 85354-9 “Blood pressure panel with all children optional” as the main observation code. The actual measurement values (systolic, diastolic, and mean blood pressure) are captured as three mandatory components within the Observation resource. Each component MUST include a value in mmHg (millimeters of mercury) using the UCUM code mm[Hg].
For privacy and data protection, the subject reference MUST only use pseudonymized or anonymized identifiers. Direct patient identification is not permitted. The patient MUST NOT be identified directly through personally identifiable information such as name, insurance number, or other identifying attributes.
The following object diagram the relationships between the FHIR resources involved in representing Blood Pressure Monitorings according to the HDDT Information Model and the HDDT Blood Pressure Value profile instances of a blood pressure measurement. For readability reasons, some external references are only shown for the first measurement. Elements that are not mandatory or MS for the MIV Blood Pressure Monitoring (see Use of HL7 FHIR) have been omitted.
The following code example shows the concrete JSON representation of the HDDT Blood Pressure Value resource shown in the object diagram.
{
"resourceType" : "Observation",
"id" : "example-blood-pressure-value",
"meta" : {
"profile" : [
🔗 "https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status" : "final",
"category" : [
{
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/observation-category",
"code" : "vital-signs"
}
]
}
],
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "85354-9",
"display" : "Blood pressure panel with all children optional"
}
]
},
"subject" : {
🔗 "reference" : "Patient/patientExample"
},
"effectiveDateTime" : "2025-10-23T09:15:00+02:00",
"interpretation" : [
{
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code" : "N",
"display" : "Normal"
}
]
}
],
"device" : {
🔗 "reference" : "Device/example-device-blood-pressure-cuff"
},
"component" : [
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8480-6",
"display" : "Systolic blood pressure"
}
]
},
"valueQuantity" : {
"value" : 120,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
},
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8462-4",
"display" : "Diastolic blood pressure"
}
]
},
"valueQuantity" : {
"value" : 80,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
},
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8478-0",
"display" : "Mean blood pressure"
}
]
},
"valueQuantity" : {
"value" : 93,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
}
]
}
Manufacturers of Device Data Recorders that support the MIV Blood Pressure Monitoring MUST implement a read interaction on the /Observation endpoint of the FHIR Resource Server. The implementation MUST conform to the HDDT Generic FHIR API. Observations shared through the read interaction MUST comply with the HDDT Blood Pressure Value profile.
Manufacturers of Device Data Recorders that support the MIV Blood Pressure Monitoring MUST implement a search interaction on the /Observation endpoint of the FHIR Resource Server. The implementation MUST conform to the HDDT Generic FHIR API, and implement the search parameters listed on page FHIR Resource Server - Search Parameters. Observations shared through the search interaction MUST comply with the HDDT Blood Pressure Value profile.
Blood pressure measurements use a panel code 85354-9 Blood pressure panel with all children optional as the main Observation.code, while the actual measurement values (8480-6 Systolic blood pressure, 8462-4 Diastolic blood pressure, 8478-0 Mean blood pressure) are captured in Observation.component elements. To search for specific component types (e.g., systolic blood pressure with LOINC code 8480-6), use the component-code search parameter. See the example below for details.
Request: GET /Observation/example-blood-pressure-value
Description: With FHIR-read interactions, a client can access a single resource instance by querying its internal ID. Restrictions by the OAuth scopes apply—if the client is not allowed to read this resource, a 404 error will be returned.
Response: Returned object is a single Observation resource.
{
"resourceType" : "Observation",
"id" : "example-blood-pressure-value",
"meta" : {
"profile" : [
🔗 "https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status" : "final",
"category" : [
{
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/observation-category",
"code" : "vital-signs"
}
]
}
],
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "85354-9",
"display" : "Blood pressure panel with all children optional"
}
]
},
"subject" : {
🔗 "reference" : "Patient/patientExample"
},
"effectiveDateTime" : "2025-10-23T09:15:00+02:00",
"interpretation" : [
{
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code" : "N",
"display" : "Normal"
}
]
}
],
"device" : {
🔗 "reference" : "Device/example-device-blood-pressure-cuff"
},
"component" : [
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8480-6",
"display" : "Systolic blood pressure"
}
]
},
"valueQuantity" : {
"value" : 120,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
},
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8462-4",
"display" : "Diastolic blood pressure"
}
]
},
"valueQuantity" : {
"value" : 80,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
},
{
"code" : {
"coding" : [
{
"system" : "http://loinc.org",
"code" : "8478-0",
"display" : "Mean blood pressure"
}
]
},
"valueQuantity" : {
"value" : 93,
"unit" : "mm[Hg]",
"system" : "http://unitsofmeasure.org",
"code" : "mm[Hg]"
}
}
]
}
Request: GET /Observation?component-code=8480-6
Description: Obtain all Observations that contain a component with the LOINC code 8480-6 for Systolic blood pressure. OAuth scopes apply, and only Observations are returned that the client is allowed to access.
Response: Returned object is a Bundle containing all Observation resource instances matching the search criteria.
{
"resourceType": "Bundle",
"id": "7483defc-9e6c-5bca-bf7c-76ecc4941293",
"type": "searchset",
"entry": [
{
"fullUrl": "https://himi.example.com/fhir/Observation/example-blood-pressure-value",
"resource": {
"resourceType": "Observation",
"id": "example-blood-pressure-value",
"meta": {
"profile": [
"https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs"
}
]
}
],
"code": {
"coding": [
{
"code": "85354-9",
"system": "http://loinc.org",
"display": "Blood pressure panel with all children optional"
}
]
},
"subject": {
"reference": "Patient/patientExample"
},
"effectiveDateTime": "2025-10-23T09:15:00+02:00",
"device": {
"reference": "Device/example-device-blood-pressure-cuff"
},
"interpretation": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "N",
"display": "Normal"
}
]
}
],
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}
]
},
"valueQuantity": {
"value": 120,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}
]
},
"valueQuantity": {
"value": 80,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8478-0",
"display": "Mean blood pressure"
}
]
},
"valueQuantity": {
"value": 93,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
},
"search": {
"mode": "match"
}
}
]
}
Request: GET /Observation?component-code=8480-6&component-value-quantity=gt130
Description: Search for all blood pressure observations where the systolic blood pressure component (LOINC code 8480-6) AND any component value (which does not necessarily have to be systolic blood pressure) is greater than 130 mmHg.
Note: This query searches for observations that contain a component with the code for systolic blood pressure AND any component value greater than 130. However, these conditions are evaluated independently - the component with value >130 does not need to be the systolic blood pressure component. To search for observations where specifically the systolic blood pressure component has a value greater than 130, use the combined parameter: /Observation?component-code-value-quantity=http://loinc.org|8480-6$gt130
OAuth scopes apply, and only Observations are returned that the client is allowed to access.
Response: Returned object is a Bundle containing all Observation resource instances matching the search criteria.
{
"resourceType": "Bundle",
"id": "a8f3c21d-4b9e-5fda-ab2c-98ecc5043487",
"type": "searchset",
"entry": [
{
"fullUrl": "https://himi.example.com/fhir/Observation/example-blood-pressure-value-1",
"resource": {
"resourceType": "Observation",
"id": "example-blood-pressure-value-1",
"meta": {
"profile": [
"https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs"
}
]
}
],
"code": {
"coding": [
{
"code": "85354-9",
"system": "http://loinc.org",
"display": "Blood pressure panel with all children optional"
}
]
},
"subject": {
"reference": "Patient/patientExample"
},
"effectiveDateTime": "2025-10-24T14:30:00+02:00",
"device": {
"reference": "Device/example-device-blood-pressure-cuff"
},
"interpretation": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "H",
"display": "High"
}
]
}
],
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}
]
},
"valueQuantity": {
"value": 145,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}
]
},
"valueQuantity": {
"value": 92,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8478-0",
"display": "Mean blood pressure"
}
]
},
"valueQuantity": {
"value": 109,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://himi.example.com/fhir/Observation/example-blood-pressure-value-2",
"resource": {
"resourceType": "Observation",
"id": "example-blood-pressure-value-2",
"meta": {
"profile": [
"https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs"
}
]
}
],
"code": {
"coding": [
{
"code": "85354-9",
"system": "http://loinc.org",
"display": "Blood pressure panel with all children optional"
}
]
},
"subject": {
"reference": "Patient/patientExample"
},
"effectiveDateTime": "2025-10-25T08:45:00+02:00",
"device": {
"reference": "Device/example-device-blood-pressure-cuff"
},
"interpretation": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "H",
"display": "High"
}
]
}
],
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}
]
},
"valueQuantity": {
"value": 138,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}
]
},
"valueQuantity": {
"value": 88,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8478-0",
"display": "Mean blood pressure"
}
]
},
"valueQuantity": {
"value": 105,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
},
"search": {
"mode": "match"
}
}
]
}
Request: GET /Observation?date=ge2025-10-22&_include=Observation:device
Description: This query asks the server for all Observations since 2025-10-22, and also requests that the server include resource instances referenced by Observation.device.
Response: Returned object is a Bundle containing all Observation resource instances matching the search criteria, and all referenced Device resources.
{
"resourceType": "Bundle",
"id": "87dbf79c-fb81-5cda-ce8e-87fdd5052395",
"type": "searchset",
"entry": [
{
"fullUrl": "https://himi.example.com/fhir/Observation/example-blood-pressure-value",
"resource": {
"resourceType": "Observation",
"id": "example-blood-pressure-value",
"meta": {
"profile": [
"https://gematik.de/fhir/hddt/StructureDefinition/hddt-blood-pressure-value"
]
},
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs"
}
]
}
],
"code": {
"coding": [
{
"code": "85354-9",
"system": "http://loinc.org",
"display": "Blood pressure panel with all children optional"
}
]
},
"subject": {
"reference": "Patient/patientExample"
},
"effectiveDateTime": "2025-10-23T09:15:00+02:00",
"device": {
"reference": "Device/example-device-blood-pressure-cuff"
},
"interpretation": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
"code": "N",
"display": "Normal"
}
]
}
],
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}
]
},
"valueQuantity": {
"value": 120,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}
]
},
"valueQuantity": {
"value": 80,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "8478-0",
"display": "Mean blood pressure"
}
]
},
"valueQuantity": {
"value": 93,
"unit": "mm[Hg]",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://himi.example.com/fhir/Device/example-device-blood-pressure-cuff",
"resource": {
"resourceType": "Device",
"id": "example-device-blood-pressure-cuff",
"meta": {
"profile": [
"https://gematik.de/fhir/hddt/StructureDefinition/hddt-personal-health-device"
]
},
"status": "active",
"type": {
"coding": [
{
"code": "70665002",
"system": "http://snomed.info/sct",
"version": "http://snomed.info/sct/11000274103/version/20251115",
"display": "Blood pressure cuff, device (physical object)"
}
]
},
"definition": {
"reference": "DeviceDefinition/device-definition-blood-pressure-cuff-001"
},
"deviceName": [
{
"name": "BP Cuff Pro",
"type": "user-friendly-name"
}
],
"modelNumber": "Digital BT 2",
"manufacturer": "HealthTech GmbH",
"serialNumber": "BPC0011223345",
"expirationDate": "2027-12-15"
},
"search": {
"mode": "include"
}
}
]
}