HL7 FHIR Implementation Guide: DK Core
3.3.0 - ci-build Denmark flag

HL7 FHIR Implementation Guide: DK Core, published by HL7 Denmark. This guide is not an authorized publication; it is the continuous build for version 3.3.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/hl7dk/dk-core/ and changes regularly. See the Directory of published versions

Example Bundle: Poul's home blood pressure measurement

The following example shows a real-life recording of a home monitoring blood pressure measurement. Due to the size and complexity of this example, a bit of background and guidance on the contents will be provided

Background

In many situations citizens may use personal equipment (their own property or borrowed from a healthcare provider) to automatically capture and record medical observations. This class of equipment is known by the term "Personal Health Devices" (PHDs). A number of challenges arise from the complexity of dealing with diverse consumer-grade Internet-connected equipment used under no clinical supervision:

  • Type, quality, accuracy and provenance of the observations?
  • Systematically recording the state of sensors and relevant events detected during the measurement.
  • Meta information regarding the equipment, the observation, or the context.
  • What is the identity of the patient/citizen/user? Authorization, authentication, etc…
  • Accuracy of timestamps, consistency of timelines etc. In particular when the PHD is used by someone traveling around the globe.

Standardization and Interoperability

In order to deal with these challenges and coordinate the effort across many different standardization bodies, the Continua Design Guidelines (CDG) has been created, and the coordination effort continues under the IHE Personal Connected Health (PCH) program. In 2013, Denmark adopted the CDG as a reference architecture.

The CDG offers guidance to implementors of PHD equipment and related applications, providing a single data model that may be expressed and exchanged using (and translated back and forth between) many different container formats and transports:

With transports ranging from Bluetooth Low Energy, NFC, USB, Internet, to XDS.b and XDR exchange of PHMR documents

Bundle Overview and Reader's Guide

The example provided here is the data payload transferred from the home of the user over the Internet to a central collection server at a tele-monitoring service provider. This bundle is a single self-contained message, demonstrating how a blood pressure measurement is encoded using a FHIR Bundle compliant to both the HL7 FHIR PHD IG and the DkCoreObservation profiles.

Bundle Structure and Content

The Bundle contains the following entries:

  • The Patient As the bundle must be self-contained, a Patient resource must be included. This is of course a DkCorePatient.
  • The Gateway Device The blood pressure monitor device used in this case is not aware of the identity of its user. It will just send the measurement using Bluetooth Low Energy to a compliant gateway. The gateway - in this case an Android app - is responsible for adding the identity of the patient, and also for checking (and correcting if necessary) the blood pressure monitor's built-in clock, which is used to create the observation timestamps.
  • The PHD In this case, a blood pressure monitor from A&D was used to create a blood pressure measurement.
  • Battery Level Observation The A&D blood pressure monitor gauges its own battery every time it is used.
  • Coincident Timestamp Observation The Gateway Device reads the clock of the PHD and creates this observation of the current time of the PHD timestamped using the Gateway's clock (which is supposed to be synchronized with a time service). This is a way to detect (and possibly correct) breaches in the timeline.
  • Blood Pressure Observation This is a DkCoreObservation
  • Heart Rate Observation Also a DkCoreObservation
  • Blood Pressure Status Observation This observation type can be used to report a number of conditions during the measurement. In this case, an irregular pulse was detected during the measurement. Some PHDs may be able to report different conditions - e.g. that the blood pressure cuff was too loose.

You may also notice that the type of the Bundle is a transaction bundle and that all the entries in the bundle are conditional creates using a funny-looking identifier, which is actually the result of a calculated function that summarises the resource into a short form (hash), in order to prevent duplicates.

Narrative Content

Generated Narrative: Bundle ContinuaBundleWithDevice

Bundle ContinuaBundleWithDevice of type transaction


Entry 1 - fullUrl = http://hl7.dk/fhir/core/Patient/Poul

Resource Patient:

Generated Narrative: Patient Poul

Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)


Request:

POST Patient
If-None-Exist = identifier=urn:oid:1.2.208.176.1.2|3001749995

Entry 2 - fullUrl = http://hl7.dk/fhir/core/Device/Telma.FEEDDADADEADBEEF

Resource Device:

Generated Narrative: Device Telma.FEEDDADADEADBEEF

identifier: IEEE 11073 System Identifier/FE-ED-DA-DA-DE-AD-BE-EF

manufacturer: Trifork

modelNumber: Telma (Android)

type: MDC_MOC_VMS_MDS_AHD: Continua compliant gateway

version

type: MDC_REG_CERT_DATA_CONTINUA_VERSION: Continua version

value: 7.0

version

type: MDC_ID_PROD_SPEC_HW: Hardware version

value: Samsung Tab S7+ (SM-T970)

version

type: MDC_ID_PROD_SPEC_SW: Software version

value: 1.2.0 (build 2662)

version

type: MDC_ID_PROD_SPEC_FW: Firmware version

value: Android 12 (API 31)

property

type: MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST: Continua certified device list

valueCode: BluetoothLE: Weighing scale, BluetoothLE: Blood pressure monitor, BluetoothLE: Pulse oximeter

property

type: MDC_REG_CERT_DATA_CONTINUA_AHD_CERT_LIST: Continua certified Health&Fitness interfaces list

valueCode: observation-upload-fhir: FHIR resource upload

property

type: MDC_TIME_SYNC_PROTOCOL: Time synchronization protocol

valueCode: MDC_TIME_SYNC_NTPV4: NTPV4 time synchronization

property

type: regulation-status

valueCode: Device is NOT regulated

Request:

POST Device
If-None-Exist = identifier=urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680|FE-ED-DA-DA-DE-AD-BE-EF

Entry 3 - fullUrl = http://hl7.dk/fhir/core/Device/BPMonitor.C4F312FFFE53F2C9

Resource Device:

Generated Narrative: Device BPMonitor.C4F312FFFE53F2C9

identifier: Ieee 11073 System Identifier/C4-F3-12-FF-FE-53-F2-C9, Bluetooth MAC address/C4-F3-12-53-F2-C9

manufacturer: A&D Medical

serialNumber: 5181000124

modelNumber: UA-651BLE

type: MDC_MOC_VMS_MDS_SIMP: Personal health device

Specializations

-SystemTypeVersion
*MDC_DEV_SPEC_PROFILE_BP: Blood Pressure meter1

version

type: MDC_REG_CERT_DATA_CONTINUA_VERSION: Continua version

value: 4.1

version

type: MDC_ID_PROD_SPEC_HW: Hardware version

value: 0.00

version

type: MDC_ID_PROD_SPEC_SW: Software version

value: 0.00

version

type: MDC_ID_PROD_SPEC_FW: Firmware version

value: BLP009_02_005

property

type: MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST: Continua certified device list

valueCode: BluetoothLE: Blood pressure monitor

property

type: MDC_TIME_SYNC_PROTOCOL: Time synchronization protocol

valueCode: MDC_TIME_SYNC_NONE: No time synchronization

property

type: regulation-status

valueCode: Device is regulated

property

type: mds-time-capab-real-time-clock

valueCode: Real time clock is supported

property

type: mds-time-capab-set-clock

valueCode: Setting the real time clock is supported

Request:

POST Device
If-None-Exist = identifier=urn:oid:1.2.840.10004.1.1.1.0.0.1.0.0.1.2680|C4-F3-12-FF-FE-53-F2-C9

Entry 4 - fullUrl = http://hl7.dk/fhir/core/Observation/BatteryLevel.0944

Resource Observation:

Generated Narrative: Observation BatteryLevel.0944

Observation Gateway Device: Device: identifier = IEEE 11073 System Identifier: FE-ED-DA-DA-DE-AD-BE-EF; manufacturer = Trifork; modelNumber = Telma (Android); type = MDC_MOC_VMS_MDS_AHD

status: Final

code: MDC_ATTR_VAL_BATT_CHARGE: Battery level

subject: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

effective: 2023-02-23 10:24:34+0100

performer: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

value: 95 % (Details: UCUM code% = '%')

device: Device: identifier = Ieee 11073 System Identifier: C4-F3-12-FF-FE-53-F2-C9,Bluetooth MAC address: Bluetooth_Address_Identifier#C4-F3-12-53-F2-C9; manufacturer = A&D Medical ; serialNumber = 5181000124; modelNumber = UA-651BLE ; type = MDC_MOC_VMS_MDS_SIMP

Request:

POST Observation

Entry 5 - fullUrl = http://hl7.dk/fhir/core/Observation/CoincidentTimeStamp.0222

Resource Observation:

Generated Narrative: Observation CoincidentTimeStamp.0222

Observation Gateway Device: Device: identifier = IEEE 11073 System Identifier: FE-ED-DA-DA-DE-AD-BE-EF; manufacturer = Trifork; modelNumber = Telma (Android); type = MDC_MOC_VMS_MDS_AHD

status: Final

code: MDC_ATTR_TIME_ABS: Uses Absolute time clock

subject: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

effective: 2023-02-23 10:24:34+0100

performer: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

value: 2023-02-23 10:24:25+0100

device: Device: identifier = Ieee 11073 System Identifier: C4-F3-12-FF-FE-53-F2-C9,Bluetooth MAC address: Bluetooth_Address_Identifier#C4-F3-12-53-F2-C9; manufacturer = A&D Medical ; serialNumber = 5181000124; modelNumber = UA-651BLE ; type = MDC_MOC_VMS_MDS_SIMP

Request:

POST Observation

Entry 6 - fullUrl = http://hl7.dk/fhir/core/Observation/BloodPressure.Poul.643992

Resource Observation:

Generated Narrative: Observation BloodPressure.Poul.643992

Observation Gateway Device: Device: identifier = IEEE 11073 System Identifier: FE-ED-DA-DA-DE-AD-BE-EF; manufacturer = Trifork; modelNumber = Telma (Android); type = MDC_MOC_VMS_MDS_AHD

identifier: C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-150020-118-266016-87-266016-99-266016-20230223T102408.00

status: Final

category: Vital signs

code: MDC_PRESS_BLD_NONINV: Blood Pressure

subject: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

effective: 2023-02-23 10:24:08+0100

performer: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

device: Device: identifier = Ieee 11073 System Identifier: C4-F3-12-FF-FE-53-F2-C9,Bluetooth MAC address: Bluetooth_Address_Identifier#C4-F3-12-53-F2-C9; manufacturer = A&D Medical ; serialNumber = 5181000124; modelNumber = UA-651BLE ; type = MDC_MOC_VMS_MDS_SIMP

derivedFrom: Observation MDC_ATTR_TIME_ABS

component

code: MDC_PRESS_BLD_NONINV_SYS: Systolic Blood Pressure

value: 118 mmHg (Details: UCUM codemm[Hg] = 'mm[Hg]')

component

code: MDC_PRESS_BLD_NONINV_DIA: Diastolic Blood Pressure

value: 87 mmHg (Details: UCUM codemm[Hg] = 'mm[Hg]')

component

code: MDC_PRESS_BLD_NONINV_MEAN: Mean Blood Pressure

value: 99 mmHg (Details: UCUM codemm[Hg] = 'mm[Hg]')

Request:

POST Observation
If-None-Exist = identifier=C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-150020-118-266016-87-266016-99-266016-20230223T102408.00

Entry 7 - fullUrl = http://hl7.dk/fhir/core/Observation/HeartRate.Poul.1974654

Resource Observation:

Generated Narrative: Observation HeartRate.Poul.1974654

Observation Gateway Device: Device: identifier = IEEE 11073 System Identifier: FE-ED-DA-DA-DE-AD-BE-EF; manufacturer = Trifork; modelNumber = Telma (Android); type = MDC_MOC_VMS_MDS_AHD

identifier: C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-149546-93-{beat}/min-20230223T102408.00

status: Final

category: Vital signs

code: MDC_PULS_RATE_NON_INV: Heart rate

subject: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

effective: 2023-02-23 10:24:08+0100

performer: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

value: 93 bpm (Details: UCUM code/min = '/min')

device: Device: identifier = Ieee 11073 System Identifier: C4-F3-12-FF-FE-53-F2-C9,Bluetooth MAC address: Bluetooth_Address_Identifier#C4-F3-12-53-F2-C9; manufacturer = A&D Medical ; serialNumber = 5181000124; modelNumber = UA-651BLE ; type = MDC_MOC_VMS_MDS_SIMP

derivedFrom: Observation MDC_ATTR_TIME_ABS

Request:

POST Observation
If-None-Exist = identifier=C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-149546-93-{beat}/min-20230223T102408.00

Entry 8 - fullUrl = http://hl7.dk/fhir/core/Observation/BloodPressureStatus.Poul.133527

Resource Observation:

Generated Narrative: Observation BloodPressureStatus.Poul.133527

Observation Gateway Device: Device: identifier = IEEE 11073 System Identifier: FE-ED-DA-DA-DE-AD-BE-EF; manufacturer = Trifork; modelNumber = Telma (Android); type = MDC_MOC_VMS_MDS_AHD

identifier: C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-8410608-8192-20230223T102408.00

status: Final

code: MDC_BLOOD_PRESSURE_MEASUREMENT_STATUS: Blood Pressure measurement problem

subject: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

effective: 2023-02-23 10:24:08+0100

performer: Poul Hansen (no stated gender), DoB Unknown ( National unique individual identifier)

device: Device: identifier = Ieee 11073 System Identifier: C4-F3-12-FF-FE-53-F2-C9,Bluetooth MAC address: Bluetooth_Address_Identifier#C4-F3-12-53-F2-C9; manufacturer = A&D Medical ; serialNumber = 5181000124; modelNumber = UA-651BLE ; type = MDC_MOC_VMS_MDS_SIMP

derivedFrom:

Components

-CodeValue[x]
*irregular-pulseIrregular pulse was detected

Request:

POST Observation
If-None-Exist = identifier=C4F312FFFE53F2C9-3001749995-urn:oid:1.2.208.176.1.2-8410608-8192-20230223T102408.00