HL7 FHIR Implementation Guide: DK Core
3.1.0 - release Denmark flag

This page is part of the HL7 FHIR Implementation Guide: DK Core (v3.1.0: Release) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. For a full list of available versions, 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

Bundle ContinuaBundleWithDevice of type transaction


Entry 1 - fullUrl = Patient/Poul

Request:

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

Resource Patient:

Poul Hansen null, DoB: ( National unique individual identifier: 3001749995)


Entry 2 - fullUrl = Device/Telma.FEEDDADADEADBEEF

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

Resource Device:

Generated Narrative: Device

Resource Device "Telma.FEEDDADADEADBEEF"

Profile: PhgDevice

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 (ISO 11073-10101 Health informatics - Point-of-care#531981 "MDC_MOC_VMS_MDS_AHD")

version

type: MDC_REG_CERT_DATA_CONTINUA_VERSION: Continua version (ISO 11073-10101 Health informatics - Point-of-care#532352 "MDC_REG_CERT_DATA_CONTINUA_VERSION")

value: 7.0

version

type: MDC_ID_PROD_SPEC_HW: Hardware version (ISO 11073-10101 Health informatics - Point-of-care#531974 "MDC_ID_PROD_SPEC_HW")

value: Samsung Tab S7+ (SM-T970)

version

type: MDC_ID_PROD_SPEC_SW: Software version (ISO 11073-10101 Health informatics - Point-of-care#531975 "MDC_ID_PROD_SPEC_SW")

value: 1.2.0 (build 2662)

version

type: MDC_ID_PROD_SPEC_FW: Firmware version (ISO 11073-10101 Health informatics - Point-of-care#531976 "MDC_ID_PROD_SPEC_FW")

value: Android 12 (API 31)

property

type: MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST: Continua certified device list (ISO 11073-10101 Health informatics - Point-of-care#532353 "MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST")

property

type: MDC_REG_CERT_DATA_CONTINUA_AHD_CERT_LIST: Continua certified Health&Fitness interfaces list (ISO 11073-10101 Health informatics - Point-of-care#532355 "MDC_REG_CERT_DATA_CONTINUA_AHD_CERT_LIST")

property

type: MDC_TIME_SYNC_PROTOCOL: Time synchronization protocol (ISO 11073-10101 Health informatics - Point-of-care#68220 "MDC_TIME_SYNC_PROTOCOL")

property

type: regulation-status (ASN1ToHL7#532354.0)


Entry 3 - fullUrl = Device/BPMonitor.C4F312FFFE53F2C9

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

Resource Device:

Generated Narrative: Device

Resource Device "BPMonitor.C4F312FFFE53F2C9"

Profile: PhdDevice

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 (ISO 11073-10101 Health informatics - Point-of-care#65573 "MDC_MOC_VMS_MDS_SIMP")

version

type: MDC_REG_CERT_DATA_CONTINUA_VERSION: Continua version (ISO 11073-10101 Health informatics - Point-of-care#532352 "MDC_REG_CERT_DATA_CONTINUA_VERSION")

value: 4.1

version

type: MDC_ID_PROD_SPEC_HW: Hardware version (ISO 11073-10101 Health informatics - Point-of-care#531974 "MDC_ID_PROD_SPEC_HW")

value: 0.00

version

type: MDC_ID_PROD_SPEC_SW: Software version (ISO 11073-10101 Health informatics - Point-of-care#531975 "MDC_ID_PROD_SPEC_SW")

value: 0.00

version

type: MDC_ID_PROD_SPEC_FW: Firmware version (ISO 11073-10101 Health informatics - Point-of-care#531976 "MDC_ID_PROD_SPEC_FW")

value: BLP009_02_005

property

type: MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST: Continua certified device list (ISO 11073-10101 Health informatics - Point-of-care#532353 "MDC_REG_CERT_DATA_CONTINUA_CERT_DEV_LIST")

property

type: MDC_TIME_SYNC_PROTOCOL: Time synchronization protocol (ISO 11073-10101 Health informatics - Point-of-care#68220 "MDC_TIME_SYNC_PROTOCOL")

property

type: regulation-status (ASN1ToHL7#532354.0)

property

type: mds-time-capab-real-time-clock (ASN1ToHL7#68219.0)

property

type: mds-time-capab-set-clock (ASN1ToHL7#68219.1)


Entry 4 - fullUrl = Observation/BatteryLevel.0944

Request:

POST Observation

Resource Observation:

Generated Narrative: Observation

Resource Observation "BatteryLevel.0944"

Profiles: Danish Core Observation Profiles, PhdNumericObservation

Gateway Device: See above (Device/Telma.FEEDDADADEADBEEF)

status: FINAL

code: MDC_ATTR_VAL_BATT_CHARGE: Battery level (ISO 11073-10101 Health informatics - Point-of-care#67996 "MDC_ATTR_VAL_BATT_CHARGE")

subject: See above (Patient/Poul)

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

performer: See above (Patient/Poul)

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

device: See above (Device/BPMonitor.C4F312FFFE53F2C9)


Entry 5 - fullUrl = Observation/CoincidentTimeStamp.0222

Request:

POST Observation

Resource Observation:

Generated Narrative: Observation

Resource Observation "CoincidentTimeStamp.0222"

Profiles: Danish Core Observation Profiles, PhdCoincidentTimeStampObservation

Gateway Device: See above (Device/Telma.FEEDDADADEADBEEF)

status: FINAL

code: MDC_ATTR_TIME_ABS: Uses Absolute time clock (ISO 11073-10101 Health informatics - Point-of-care#67975 "MDC_ATTR_TIME_ABS")

subject: See above (Patient/Poul)

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

performer: See above (Patient/Poul)

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

device: See above (Device/BPMonitor.C4F312FFFE53F2C9)


Entry 6 - fullUrl = Observation/BloodPressure.Poul.643992

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

Resource Observation:

Generated Narrative: Observation

Gateway Device: See above (Device/Telma.FEEDDADADEADBEEF)

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

status: FINAL

category: Vital signs (Observation Category Codes#vital-signs)

code: MDC_PRESS_BLD_NONINV: Blood Pressure (LOINC#85354-9 "Blood pressure panel with all children optional"; ISO 11073-10101 Health informatics - Point-of-care#150020 "MDC_PRESS_BLD_NONINV"; unknown#ZZ3170 "Hjemmeblodtryksmåling udført af patienten")

subject: See above (Patient/Poul)

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

performer: See above (Patient/Poul)

device: See above (Device/BPMonitor.C4F312FFFE53F2C9)

derivedFrom: See above (Observation/CoincidentTimeStamp.0222)

component

code: MDC_PRESS_BLD_NONINV_SYS: Systolic Blood Pressure (LOINC#8480-6 "Systolic blood pressure"; ISO 11073-10101 Health informatics - Point-of-care#150021 "MDC_PRESS_BLD_NONINV_SYS"; medcom-observation-codes#MCS88019 "Arm—Blodtryk(systolisk) hjemme; tryk = ? mmHg")

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

component

code: MDC_PRESS_BLD_NONINV_DIA: Diastolic Blood Pressure (LOINC#8462-4 "Diastolic blood pressure"; ISO 11073-10101 Health informatics - Point-of-care#150022 "MDC_PRESS_BLD_NONINV_DIA"; medcom-observation-codes#MCS88020 "Arm—Blodtryk(diastolisk) hjemme; tryk = ? mmHg")

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

component

code: MDC_PRESS_BLD_NONINV_MEAN: Mean Blood Pressure (ISO 11073-10101 Health informatics - Point-of-care#150023 "MDC_PRESS_BLD_NONINV_MEAN")

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


Entry 7 - fullUrl = Observation/HeartRate.Poul.1974654

Request:

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

Resource Observation:

Generated Narrative: Observation

Gateway Device: See above (Device/Telma.FEEDDADADEADBEEF)

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

status: FINAL

category: Vital signs (Observation Category Codes#vital-signs)

code: MDC_PULS_RATE_NON_INV: Heart rate (LOINC#8867-4 "Heart rate"; ISO 11073-10101 Health informatics - Point-of-care#149546 "MDC_PULS_RATE_NON_INV"; unknown#NPU21692 "Heart—Systole; frequency = ? × 1/min")

subject: See above (Patient/Poul)

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

performer: See above (Patient/Poul)

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

device: See above (Device/BPMonitor.C4F312FFFE53F2C9)

derivedFrom: See above (Observation/CoincidentTimeStamp.0222)


Entry 8 - fullUrl = Observation/BloodPressureStatus.Poul.133527

Request:

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

Resource Observation:

Generated Narrative: Observation

Resource Observation "BloodPressureStatus.Poul.133527"

Profiles: Danish Core Observation Profiles, PhdBitsEnumerationObservation

Gateway Device: See above (Device/Telma.FEEDDADADEADBEEF)

identifier: id: 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 (ISO 11073-10101 Health informatics - Point-of-care#8410608 "MDC_BLOOD_PRESSURE_MEASUREMENT_STATUS")

subject: See above (Patient/Poul)

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

performer: See above (Patient/Poul)

device: See above (Device/BPMonitor.C4F312FFFE53F2C9)

derivedFrom:

Components

-CodeValue[x]
*irregular-pulse (ASN1ToHL7#8410608.2)Irregular pulse was detected (v2 Y/N Indicator#Y)