## Profile Comparison between http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-obl-eu-lab vs http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-obl-eu-lab

Left: | Observation: Obligations (http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-obl-eu-lab)
Right: | Observation: Obligations (http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-obl-eu-lab)

### Messages

Error | StructureDefinition.version | Values for version differ: '0.1.1' vs '2.0.0-alpha'
Information | StructureDefinition.status | Values for status differ: 'active' vs 'draft'
Information | StructureDefinition.date | Values for date differ: '2025-03-25T12:00:10+01:00' vs '2026-02-25T15:28:07+01:00'
Information | Observation.language | Example/preferred bindings differ at Observation.language using binding from ObservationEuObligations
Information | Observation.category | Example/preferred bindings differ at Observation.category using binding from ObservationEuObligations
Information | StructureDefinition.comment | Values for comment differ: 'In the context of this Observation-laboratory-uv-ips profile, when the observation plays the role of a grouper of member sub-observations, the code represent the group (for instance a panel code). In case no code is available, at least a text shall be provided.' vs 'In the context of this Observation-laboratory profile, when the observation plays the role of a grouper of member sub-observations, the code represent the group (for instance a panel code). In case no code is available, at least a text shall be provided.'
Information | StructureDefinition.comment | Values for comment differ: 'Laboratory technique (method of measurement) are integral parts of the test specification of some laboratory test coding systems (e.g. NPU), in LOINC hovewer measurement principle is not always present in the test definition. In some cases however knowledge of the used measurment techique is important for proper interpretation of the test result. That's why it is important to explicitly include informaiton about measurement method is such cases.' vs 'Laboratory technique (method of measurement) are integral parts of the test specification of some laboratory test coding systems (e.g. NPU), in LOINC hovewer measurement principle is not always present in the test definition. In some cases however knowledge of the used measurment techique is important for proper interpretation of the test result. That's why it is important to explicitly include informaiton about measurement method is such cases.'
Information | Observation.referenceRange.type | Example/preferred bindings differ at Observation.referenceRange.type using binding from ObservationEuObligations
Information | StructureDefinition.short | Values for short differ: 'Extension' vs 'Additional content defined by implementations'
Information | StructureDefinition.definition | Values for definition differ: 'An Extension' vs 'May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.'
Information | Observation.component.code | Example/preferred bindings differ at Observation.component.code using binding from ObservationEuObligations
Information | Observation.component.referenceRange.type | Example/preferred bindings differ at Observation.component.referenceRange.type using binding from ObservationEuObligations

### Metadata

Name | Value | Comments
--- | --- | ---
abstract | false |
baseDefinition | http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-resultslab-eu-lab |
copyright | Used by permission of HL7 Europe, all rights reserved Creative Commons License |
date | 2025-03-25T12:00:10+01:00 | 2026-02-25T15:28:07+01:00 | Values Differ
description | This profile defines obligations for Observation in FHIR for the purpose of this guide. |
experimental |  |
fhirVersion | 4.0.1 |
jurisdiction |  |
jurisdiction[0] | http://unstats.un.org/unsd/methods/m49/m49.htm#150 |
kind | resource |
name | ObservationEuObligations |
publisher | HL7 Europe |
purpose |  |
status | active | draft | Values Differ
title | Observation: Obligations |
type | Observation |
url | http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-obl-eu-lab |
version | 0.1.1 | 2.0.0-alpha | Values Differ

### Structure

Name | L Flags | L Card. | L Type | L Description & Constraints | R Flags | R Card. | R Type | R Description & Constraints | Comments
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Observation | C | 0..* | ObservationResultsLaboratoryEu | Laboratory result for a simple test or for a panel/study | C | 0..* | ObservationResultsLaboratoryEu | Laboratory result for a simple test or for a panel/study |
id | Σ | 0..1 | id | Logical id of this artifact | Σ | 0..1 | id | Logical id of this artifact |
meta | Σ | 0..1 | Meta | Metadata about the resource | Σ | 0..1 | Meta | Metadata about the resource |
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created | ?!Σ | 0..1 | uri | A set of rules under which this content was created |
language |  | 0..1 | code | Language of the resource content Binding: ?? (preferred): A human language.
Additional Bindings | Purpose
?? | Max Binding
|  | 0..1 | code | Language of the resource content Binding: ?? (preferred): A human language.
Additional Bindings | Purpose
?? | Max Binding
| Example/preferred bindings differ at Observation.language using binding from ObservationEuObligations
text |  | 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..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 |
contained |  | 0..* | Resource | Contained, inline Resources |  | 0..* | Resource | Contained, inline Resources |
Slices for extension |  | 0..* | Extension | Laboratory Test Kit Slice: Unordered, Open by value:url |  | 0..* | Extension | Laboratory Test Kit Slice: Unordered, Open by value:url |
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored | ?! | 0..* | Extension | Extensions that cannot be ignored |
identifier | Σ | 0..* | Identifier | Business Identifier for observation | Σ | 0..* | Identifier | Business Identifier for observation |
basedOn | Σ | 0..* | Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order | Σ | 0..* | Reference(CarePlan | DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) | Fulfills plan, proposal or order |
partOf | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event | Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event |
status | ?!O Σ | 1..1 | code | Status of this observation (e.g. preliminary, final,...) Binding: ?? (required): Codes providing the status of an observation.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| ?!O Σ | 1..1 | code | Status of this observation (e.g. preliminary, final,...) Binding: ?? (required): Codes providing the status of an observation.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
Slices for category | O | 1..* | ?? | Classification of type of observation Slice: Unordered, Open by value:$this Binding: ?? (preferred): Codes for high level observation categories.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O | 1..* | ?? | Classification of type of observation Slice: Unordered, Open by pattern:$this Binding: ?? (preferred): Codes for high level observation categories.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| Example/preferred bindings differ at Observation.category using binding from ObservationEuObligations
code | O Σ | 1..1 | ?? | Type of observation (code / type) Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 1..1 | ?? | Type of observation (code / type) Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
subject | O Σ | 1..1 | Reference(Patient: Animal | Patient: Person | Group | Device | Location) | Who and/or what the observation is about
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 1..1 | Reference(Patient: Animal | Patient (EU core) | Group | Device | Location) | Who and/or what the observation is about
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
id |  | 0..1 | string | Unique id for inter-element referencing |  |  |  |  | Removed this element
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |  |  |  |  | Removed this element
reference | Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL |  |  |  |  | Removed this element
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ?? (extensible): Aa resource (or, for logical models, the URI of the logical model). |  |  |  |  | Removed this element
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known |  |  |  |  | Removed this element
display | Σ | 0..1 | string | Text alternative for the resource |  |  |  |  | Removed this element
focus | Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record | Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record |
encounter | Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made | Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made |
effective[x] | O Σ | 1..1 | dateTime, Period | Clinically relevant time/time-period for observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 1..1 | dateTime, Period, Timing, instant | Clinically relevant time/time-period for observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
id |  | 0..1 | string | Unique id for inter-element referencing |  |  |  |  | Removed this element
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |  |  |  |  | Removed this element
issued | O Σ | 0..1 | instant | Date/Time this result was made available
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHOULD:able-to-populate | LabReportCreator
| O Σ | 0..1 | instant | Date/Time this result was made available
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHOULD:able-to-populate | LabReportCreator
performer | O Σ | 1..* | Reference(PractitionerRole: Laboratory Report | Practitioner: Laboratory Report | Organization (IPS) | CareTeam | Patient: Person | RelatedPerson) | Who is responsible for the observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 1..* | Reference(PractitionerRole (EU core) | Practitioner (EU core) | Organization (IPS) | CareTeam | Patient (EU core) | RelatedPerson) | Who is responsible for the observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
id |  | 0..1 | string | Unique id for inter-element referencing |  | 0..1 | string | Unique id for inter-element referencing |
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url |
reference | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL | Σ C | 0..1 | string | Literal reference, Relative, internal or absolute URL |
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ?? (extensible): Aa resource (or, for logical models, the URI of the logical model). | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ?? (extensible): Aa resource (or, for logical models, the URI of the logical model). |
identifier | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known | Σ | 0..1 | Identifier | Logical reference, when literal reference is not known |
display | Σ | 0..1 | string | Text alternative for the resource | Σ | 0..1 | string | Text alternative for the resource |
Slices for value[x] | O Σ C | 0..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period | Actual result Slice: Unordered, Closed by type:$this
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ C | 0..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period | Actual result Slice: Unordered, Closed by type:$this
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
dataAbsentReason | C | 0..1 | CodeableConcept | Provides a reason why the expected value is missing. Binding: ?? (extensible): Codes specifying why the result (Observation.value[x]) is missing. | C | 0..1 | CodeableConcept | Provides a reason why the expected value is missing. Binding: ?? (extensible): Codes specifying why the result (Observation.value[x]) is missing. |
interpretation | O | 0..* | ?? | High, low, normal, etc. Binding: ?? (extensible): Codes identifying interpretations of observations.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O | 0..* | ?? | High, low, normal, etc. Binding: ?? (extensible): Codes identifying interpretations of observations.
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
note |  | 0..* | Annotation | Comments about the observation |  | 0..* | Annotation | Comments about the observation |
bodySite |  | 0..1 | CodeableConcept | Observed body part Binding: ?? (example): Codes describing anatomical locations. May include laterality. |  | 0..1 | CodeableConcept | Observed body part Binding: ?? (example): Codes describing anatomical locations. May include laterality. |
method | O | 0..1 | ?? | How it was done Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O | 0..1 | ?? | How it was done Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
specimen | O | 0..1 | Reference(Specimen: Laboratory) | Specimen used for this observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O | 0..1 | Reference(Specimen: Laboratory) | Specimen used for this observation
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
device |  | 0..1 | Reference(Device | DeviceMetric) | Measuring instrument |  | 0..1 | Reference(Device | DeviceMetric) | Measuring instrument |
referenceRange | C | 0..* | BackboneElement | Provides guide for interpretation | C | 0..* | BackboneElement | Provides guide for interpretation |
id |  | 0..1 | string | Unique id for inter-element referencing |  | 0..1 | string | Unique id for inter-element referencing |
extension |  | 0..* | Extension | Additional content defined by implementations |  | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
low | C | 0..1 | ?? | Low Range, if relevant | C | 0..1 | ?? | Low Range, if relevant |
high | C | 0..1 | ?? | High Range, if relevant | C | 0..1 | ?? | High Range, if relevant |
type |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ?? (preferred): Code for the meaning of a reference range. |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ?? (preferred): Code for the meaning of a reference range. | Example/preferred bindings differ at Observation.referenceRange.type using binding from ObservationEuObligations
appliesTo |  | 0..* | CodeableConcept | Reference range population Binding: ?? (example): Codes identifying the population the reference range applies to. |  | 0..* | CodeableConcept | Reference range population Binding: ?? (example): Codes identifying the population the reference range applies to. |
age |  | 0..1 | Range | Applicable age range, if relevant |  | 0..1 | Range | Applicable age range, if relevant |
text |  | 0..1 | string | Text based reference range in an observation |  | 0..1 | string | Text based reference range in an observation |
hasMember | O Σ | 0..* | Reference(Observation Results: laboratory) | Related resource that belongs to the Observation group
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 0..* | Reference(Observation Results: laboratory) | Related resource that belongs to the Observation group
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
derivedFrom | Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from | Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from |
component | O Σ | 0..* | BackboneElement | Laboratory result
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 0..* | BackboneElement | Laboratory result
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
id |  | 0..1 | string | Unique id for inter-element referencing |  | 0..1 | string | Unique id for inter-element referencing |
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url |  | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
code | O Σ | 1..1 | ?? | Type of component observation (code / type) Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 1..1 | ?? | Type of component observation (code / type) Binding: ?? (preferred)
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| Example/preferred bindings differ at Observation.component.code using binding from ObservationEuObligations
Slices for value[x] | O Σ | 0..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period | Actual component result Slice: Unordered, Closed by type:$this
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
| O Σ | 0..1 | Quantity, CodeableConcept, string, boolean, integer, Range, Ratio, SampledData, time, dateTime, Period | Actual component result Slice: Unordered, Closed by type:$this
Obligations | Actor
SHALL:handle | LabReportRepos
SHALL:handle | LabReportConsumer
SHALL:able-to-populate | LabReportCreator
dataAbsentReason | C | 0..1 | CodeableConcept | Why the component result is missing Binding: ?? (extensible): Codes specifying why the result (Observation.value[x]) is missing. | C | 0..1 | CodeableConcept | Why the component result is missing Binding: ?? (extensible): Codes specifying why the result (Observation.value[x]) is missing. |
interpretation |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ?? (extensible): Codes identifying interpretations of observations. |  | 0..* | CodeableConcept | High, low, normal, etc. Binding: ?? (extensible): Codes identifying interpretations of observations. |
referenceRange |  | 0..* | See referenceRange (Observation) | Provides guide for interpretation of component result |  | 0..* | See referenceRange (Observation) | Provides guide for interpretation of component result |
id |  | 0..1 | string | Unique id for inter-element referencing |  | 0..1 | string | Unique id for inter-element referencing |
extension |  | 0..* | Extension | Additional content defined by implementations |  | 0..* | Extension | Additional content defined by implementations |
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
low | C | 0..1 | ?? | Low Range, if relevant | C | 0..1 | ?? | Low Range, if relevant |
high | C | 0..1 | ?? | High Range, if relevant | C | 0..1 | ?? | High Range, if relevant |
type |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ?? (preferred): Code for the meaning of a reference range. |  | 0..1 | CodeableConcept | Reference range qualifier Binding: ?? (preferred): Code for the meaning of a reference range. | Example/preferred bindings differ at Observation.component.referenceRange.type using binding from ObservationEuObligations
appliesTo |  | 0..* | CodeableConcept | Reference range population Binding: ?? (example): Codes identifying the population the reference range applies to. |  | 0..* | CodeableConcept | Reference range population Binding: ?? (example): Codes identifying the population the reference range applies to. |
age |  | 0..1 | Range | Applicable age range, if relevant |  | 0..1 | Range | Applicable age range, if relevant |
text |  | 0..1 | string | Text based reference range in an observation |  | 0..1 | string | Text based reference range in an observation |
Documentation for this format