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

This page is part of the HL7 FHIR Implementation Guide: DK Core (v3.4.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

Resource Profile: Danish Core Basic Observation Profile

Official URL: http://hl7.dk/fhir/core/StructureDefinition/dk-core-basic-observation Version: 3.4.0
Active as of 2025-02-01 Computable Name: DkCoreBasicObservation

HL7 Denmark core profile for basic observations, which is a profiling of DkCoreObservation.

Scope and usage

The Danish Core Basic Observation profile is intended to represent basis observations performed on a subject. The purpose of this profile is to ensure a common structure of frequently measured and shared observations. A basic observation is, in a Danish context, a measurable and often used value. This can be observations such as vital signs and basic observations like height and weight.

The profile is a further profiling of DkCoreObservation and in most cases it complies to HL7's Vital Signs profile. Instances will not be compliant with HL7's Vital Signs profile when using the code 59408-5 (Oxygen saturation in Arterial blood by Pulse oximetry) from the LOINC ValueSet and the unit {fraction} (fraction) from the UCUM ValueSet, as these codes are not included in the ValueSets in the Vital Signs profile.

Codes

It is required to include a LOINC code at Observation.code. The LOINC ValueSet used in the HL7's Vital Signs profile is expanded with the code 59408-5 "Oxygen saturation in Arterial blood by Pulse oximetry" because it is an often used, measurable parameter in Denmark.

Further, DK Core NPU Basic Observation, DK Core IEEE Basic Observation, and DK Core SNOMED CT Basic Observation ValueSets are added to the given slices, and codes from these ValueSets are optional to include.

An overall guidance of using the ValueSets follows the guidance of DkCoreObservation and is further specified here:

  • NPU codes can be used when communicating observations from the laboratory area. NPU also covers codes concerning basic observations. For this reason, NPU is included.
  • IEEE codes can be used, if the original observation of the device is represented with IEEE codes.
  • SNOMED CT codes are accepted in Denmark. They can be included as a reference terminology, where it is used in addition to the original coding. SNOMED CT codes can also be used in areas where NPU does not cover.

The codes in the three ValueSets are selected to best represent the codes included in the LOINC ValueSet. The following describes the possible use of additional codes:

  • No meaningful code: Not all LOINC codes are represented in ValueSets, as no meaningful codes exists in the terminology. An example is that the 8478-0 Mean blood pressure does not exists in the NPUBasicObservation ValueSet.
  • One meaningful code: When one meaningful code is included from the ValueSet, as the code best represents the LOINC code. An example is the 150022 MDC_PRESS_BLD_NONINV_DIA from the IEEE ValueSet which represents 8462-4 Diastolic blood pressure the best.
  • Multiple meaningful codes: Multiple codes in a ValueSet may be used to represent a code from the LOINC ValueSet, which may be relevant to express a higher level of granularity. An example is multiple codes representing systolic blood pressure in the SNOMED CT ValueSet depending on the circumstances of the measurement, which all represents 8480-6 Systolic blood pressure.

If a measurement is documented in a system or device e.g. with a SNOMED CT or IEEE code, but no LOINC code. The system must map the SNOMED CT or IEEE code to the LOINC code before exchanging it. Otherwise, it will not accommodate the requirements of the DkCoreBasicObservation profile, since a LOINC code is required.

Units

The UCUM ValueSet used in HL7's Vital Signs profile is extended in the DK Core UCUM Basic Units ValueSet to include a code for fraction {fraction} fraction. In the NPU ValueSet, this unit is used for the code NPU27280 Hb(Fe; O2-bind.;aB)—Oxygen(O2); sat.(Pulse oximetry) = ?, why it is included. However, using the fraction unit is not compliant with HL7's Vital Signs profile, here the unit % percent is used for the LOINC code "2708-6 "Oxygen saturation in Arterial blood". The example John's oxygen saturation measurement (Observation) illustrates how this can be handled by deriving the instance with the NPU code from an instance with a LOINC and IEEE code.

The DK Core UCUM Basic Units ValueSet is added to the elements Observation.valueQuantity and Observation.component.valueQuantity.

Examples

The table below includes instances of the DkCoreBasicObservation used to represent observations used to evaluate the patient based on different procedures used in Denmark.

Note: The current FHIR validator (per Nowember 2023) validates Observation instances with LOINC-codes from the international Vital Signs profile against the requirements in this profile. This have influenced instances in DkCore by 1) removal of the LOINC-code "2708-6 "Oxygen saturation in Arterial blood" in John's oxygen saturation measurement (Observation) which means it cannot be an instance of DkCoreBasicObservation but has to obey from DkCoreObservation, and 2) addition of effective timestamps in ObservationOxySatBasicObservationOrg and ObservationRespiratoryBasicObservation.

Example Description
Glasgow Coma Scale (GCS) This example includes the relevant observations related to Glasgow Coma Scale. This scale is used to assess the level of consciousness in people with brain damage.
TOKS (Danish: Tidlig opsporing af kritisk sygdom) TOKS is a scoring system used to determine if a patient is in a critical state at an early state. The example includes basic observations, such as heartrate, temperature and more, as well as a Glasgow Coma Scale.
TOBS (Danish: Tidlig opsporing af begyndende sygdom) TOBS is a scoring system used to determine if a citizen is in the early state of illnesses. The example includes basic observations, such as heartrate, temperature, TOBS score and more, as well as a reference to the performer of the observations.
Vital signs panel An example of observations included in a vital signs panel. From the element Observation.hasMember, the panel observations are referenced.
John's oxygen saturation measurement (Observation) This example suggests a way to handle the oxygen saturation case, where the original measurement was reported in '%' by a device or typed in manually, and then 'translated' to the NPU system, which requires the value to be unitless.

Usage:

Formal Views of Profile Content

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

NameFlagsCard.TypeDescription & Constraintsdoco
.. Observation C 0..* DkCoreObservation Measurements and simple assertions
dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources
dom-3: 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
dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated
dom-5: If a resource is contained in another resource, it SHALL NOT have a security label
dom-6: A resource should have narrative for robust management
obs-6: dataAbsentReason SHALL only be present if Observation.value[x] is not present
obs-7: If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present
dk-core-observation-mandatory-units: If value is specified then unit and/or code must be specified
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
ele-1: All FHIR elements must have a @value or children
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
ele-1: All FHIR elements must have a @value or children
ext-1: Must have either extensions or value[x], not both
... status ?!Σ 1..1 code registered | preliminary | final | amended +
Binding: ObservationStatus (required): Codes providing the status of an observation.


ele-1: All FHIR elements must have a @value or children
.... coding 1..* Coding Code defined by a terminology system
Fixed Value: (complex)
..... system 1..1 uri Identity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/observation-category
..... code 1..1 code Symbol in syntax defined by the system
Fixed Value: vital-signs
... code Σ 1..1 CodeableConcept Type of observation (code / type)
Binding: LOINCCodes (example): Codes identifying names of simple observations.


ele-1: All FHIR elements must have a @value or children
.... Slices for coding Σ 1..* Coding Code defined by a terminology system
Slice: Unordered, Open by value:system
ele-1: All FHIR elements must have a @value or children
..... coding:LOINC Σ 1..1 Coding LOINC code for the observation
Binding: DK Core LOINC Basic Observations (extensible)
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: http://loinc.org
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
..... coding:SNOMEDCT Σ 0..1 Coding SNOMED CT code for the observation
Binding: DK Core SNOMED CT Basic Observation (extensible)
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: http://snomed.info/sct
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
..... coding:NPU Σ 0..1 Coding NPU code for the observation. NPU codes are administred by the Danish Health Data Authority.
Binding: DK Core NPU Basic Observation (extensible)
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: urn:oid:1.2.208.176.2.1
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
..... coding:IEEE Σ 0..1 Coding IEEE code for the observation
Binding: Dk Core IEEE Basic Observation (extensible)
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: urn:iso:std:iso:11073:10101
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
..... coding:MedCom Σ 0..1 Coding MedCom code for the observation. MedCom codes are administred by the MedCom.
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: http://medcomfhir.dk/ig/terminology/CodeSystem/medcom-observation-codes
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
..... coding:SKS Σ 0..1 Coding SKS code for the observation
ele-1: All FHIR elements must have a @value or children
...... system Σ 1..1 uri Identity of the terminology system
ele-1: All FHIR elements must have a @value or children
Fixed Value: urn:oid:1.2.208.176.2.4
...... code Σ 1..1 code Symbol in syntax defined by the system
ele-1: All FHIR elements must have a @value or children
... subject Σ 1..1 Reference(Danish Core Patient Profile | Group | Danish Core Location Profile | Device) Who and/or what the observation is about
ele-1: All FHIR elements must have a @value or children
... Slices for value[x] ΣC 0..1 Actual result
Slice: Unordered, Closed by type:$this
ele-1: All FHIR elements must have a @value or children
.... valueQuantity Quantity
.... valueCodeableConcept CodeableConcept
.... valueString string
.... valueBoolean boolean
.... valueInteger integer
.... valueRange Range
.... valueRatio Ratio
.... valueSampledData SampledData
.... valueTime time
.... valueDateTime dateTime
.... valuePeriod Period
.... value[x]:valueQuantity ΣC 0..1 Quantity Actual result
ele-1: All FHIR elements must have a @value or children
..... comparator ?!Σ 0..1 code < | <= | >= | > - how to understand the value
Binding: QuantityComparator (required): How the Quantity should be understood and represented.


ele-1: All FHIR elements must have a @value or children
..... system ΣC 0..1 uri System that defines coded unit form
Binding: DK Core UCUM Basic Units (extensible)
ele-1: All FHIR elements must have a @value or children
Required Pattern: http://unitsofmeasure.org

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Observation.statusrequiredObservationStatus
http://hl7.org/fhir/ValueSet/observation-status|4.0.1
from the FHIR Standard
Observation.categorypreferredPattern: vital-signs
http://hl7.org/fhir/ValueSet/observation-category
from the FHIR Standard
Observation.codeexampleLOINCCodes (a valid code from LOINC)
http://hl7.org/fhir/ValueSet/observation-codes
from the FHIR Standard
Observation.code.coding:LOINCextensibleLoincBasicObservation
http://hl7.dk/fhir/core/ValueSet/dk-core-LoincBasicObservation
from this IG
Observation.code.coding:SNOMEDCTextensibleSCTBasicObservation
http://hl7.dk/fhir/core/ValueSet/dk-core-SCTBasicObservation
from this IG
Observation.code.coding:NPUextensibleNPUBasicObservation
http://hl7.dk/fhir/core/ValueSet/dk-core-NPUBasicObservation
from this IG
Observation.code.coding:IEEEextensibleIEEEBasicObservation
http://hl7.dk/fhir/core/ValueSet/dk-core-IEEEBasicObservation
from this IG
Observation.value[x]:valueQuantity.comparatorrequiredQuantityComparator
http://hl7.org/fhir/ValueSet/quantity-comparator|4.0.1
from the FHIR Standard
Observation.value[x]:valueQuantity.systemextensiblePattern: http://unitsofmeasure.org
http://hl7.dk/fhir/core/ValueSet/dk-core-UCUM-BasicUnits
from this IG

 

Other representations of profile: CSV, Excel, Schematron