Composition-eu-lab

Summary

The Composition resource defines the clinical purpose and type of a document Bundle (for example, a laboratory test report document). It provides a human‑readable structure that acts as a table of contents and establishes a predictable, well‑defined hierarchy that receiving systems can use to reliably interpret and process the document.

The resource profile is derived from Composition-eu-lab, as described in the HL7 Europe Laboratory Report FHIR Implementation Guide . Links to the base FHIR R4 Composition resource and the current UK Core Composition profile are provided below for additional context.

Profile Views

Refer to Profile Descriptions for a definition of the different profile view formats.

idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueReferenceReference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
id0..1string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
modifierExtension?! C0..*Extension
identifierΣ1..1Identifier
statusΣ ?!1..1codeBinding
typeΣ1..1CodeableConceptBinding
studyTypeΣ0..*CodeableConceptBinding
specialtyΣ0..*CodeableConceptBinding
subjectΣ C1..1Reference(LocationEuCore | PatientEuCore | Device | Group)
encounterΣ C0..1Reference(Encounter)
dateΣ1..1dateTime
authorΣ C1..*Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
titleΣ1..1string
confidentialityΣ0..1codeBinding
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBinding
time0..1dateTime
partyC0..1Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | RelatedPerson)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
custodianΣ C0..1Reference(OrganizationEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
code1..1codeBinding
targetIdentifierIdentifier
targetReferenceReference(Composition)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
codeΣ0..*CodeableConcept
periodΣ C0..1Period
detailΣ C0..*Reference(Resource)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConcept
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..*Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..*see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..0Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC1..*Reference(Binary | DocumentReference)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)
idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueReferenceReference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
id0..1string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
modifierExtension?! C0..*Extension
identifierΣ1..1Identifier
statusΣ ?!1..1codeBinding
typeΣ1..1CodeableConceptBinding
studyTypeΣ0..*CodeableConceptBinding
specialtyΣ0..*CodeableConceptBinding
subjectΣ C1..1Reference(LocationEuCore | PatientEuCore | Device | Group)
encounterΣ C0..1Reference(Encounter)
dateΣ1..1dateTime
authorΣ C1..*Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
titleΣ1..1string
confidentialityΣ0..1codeBinding
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBinding
time0..1dateTime
partyC0..1Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | RelatedPerson)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
custodianΣ C0..1Reference(OrganizationEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
code1..1codeBinding
targetIdentifierIdentifier
targetReferenceReference(Composition)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
codeΣ0..*CodeableConcept
periodΣ C0..1Period
detailΣ C0..*Reference(Resource)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConcept
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..*Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..*see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..0Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC1..*Reference(Binary | DocumentReference)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)
idΣ0..1id
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueStringstring
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
valueReferenceReference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
id0..1string
extensionC0..0Extension
url1..1uriFixed Value
id0..1string
extensionC0..*Extension
referenceΣ C1..1string
typeΣ0..1uriBinding
identifierΣ0..1Identifier
displayΣ0..1string
modifierExtension?! C0..*Extension
identifierΣ1..1Identifier
statusΣ ?!1..1codeBinding
typeΣ1..1CodeableConceptBinding
studyTypeΣ0..*CodeableConceptBinding
specialtyΣ0..*CodeableConceptBinding
subjectΣ C1..1Reference(LocationEuCore | PatientEuCore | Device | Group)
encounterΣ C0..1Reference(Encounter)
dateΣ1..1dateTime
authorΣ C1..*Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | Device | RelatedPerson)
titleΣ1..1string
confidentialityΣ0..1codeBinding
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBinding
time0..1dateTime
partyC0..1Reference(OrganizationEuCore | PatientEuCore | PractitionerEuCore | PractitionerRoleEuCore | RelatedPerson)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
mode1..1codeBindingPattern
time1..1dateTime
partyC1..1Reference(PractitionerEuCore | PractitionerRoleEuCore)
custodianΣ C0..1Reference(OrganizationEuCore)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
code1..1codeBinding
targetIdentifierIdentifier
targetReferenceReference(Composition)
id0..1string
extensionC0..*Extension
modifierExtensionΣ ?! C0..*Extension
codeΣ0..*CodeableConcept
periodΣ C0..1Period
detailΣ C0..*Reference(Resource)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConcept
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..*Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..*see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC0..0Reference(Resource)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)
id0..1string
section-noteC0..*Extension(Annotation)
modifierExtensionΣ ?! C0..*Extension
title1..1string
code1..1CodeableConceptPattern
authorC0..*Reference(Device | Organization | Patient | Practitioner | PractitionerRole | RelatedPerson)
focusC0..1Reference(Resource)
textC1..1Narrative
mode0..1codeBinding
orderedBy0..1CodeableConceptBinding
entryC1..*Reference(Binary | DocumentReference)
emptyReasonC0..1CodeableConceptBinding
sectionC0..0see (section)

Additional Guidance

The diagram below illustrates how the values in the Composition are derived from the other resources contained within the Bundle.
The lab-nosubsection profile is used when an Observation is referenced directly from the Composition.
The lab-subsection profile is used when referencing a panel (grouper/organizer); in this case, the Composition includes nested section elements to represent each Observation that belongs to that panel.



EUComposition.drawio



meta.profile

This SHALL be populated using the appropriate value from the table on the Profiles page.


identifier

This SHALL be the same as one of the DiagnosticReport.identifier values, if any are present.


status

This SHALL be populated with a value taken from the CompositionStatus ValueSet.


type

This is the high-level categorisation of the set of resources.

It is expected that the values will be taken from DiagnosticReport.code.


category

This is the specific category of the set of resources.

The element SHALL be populated with the following value, taken from the LabSpecialtyEuVs ValueSet:

"category": [
    {
        "coding": [
            {
                "system": "http://snomed.info/sct",
                "code": "394915009",
                "display": "General pathology (specialty)"
            }
        ]
    }
]


subject

Reference to the Patient.


author

Reference to the performing Organization.


title

This SHALL be Laboratory Report.


attester

Reference to the performing Organization.

Composition.attester.mode SHALL be populated with a value of official, as illustrated below:

"attester": [
    {
        "mode": "official",
        "party": {
            "reference": "urn:uuid:8a6d85b8-9837-4fed-a257-4cf207988338"
        }
    }
],


section

The following rules describe how Observation resources should be referenced within the Composition:

  • Each Composition.section SHALL contain both a title and a code.

  • When the referenced Observation represents a grouper (sometimes called an organizer or test group), only the grouper Observation is listed in the section. Child Observation resources SHALL NOT be referenced directly within the same section, as they are already linked through the grouper’s hasMember relationships.

  • When the referenced resource is a single (non‑grouper) Observation, that Observation SHALL be referenced directly within the section.

  • There is no requirement that all sections use the same type. Different sections (e.g., section[0], section[1], etc.) may reference different types of Observations, as long as the rules for groupers and single Observations are followed within each section.


section.title

It is expected that the values will be taken from Observation.code.coding.display. If there are multiple codings use the PaLM coding display.


section.code

It is expected that the values will be taken from Observation.code.coding. If there are multiple codings use the PaLM coding display.


section.text

This element is mandatory in the profile, however within the context of this implementation guide it does not need to be populated with narrative content. It SHALL be populated as follows:

"text": {
    "status": "empty",
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">empty</div>"
},


section.entry

This references the Observation resource.