XpanDH Hospital Discharge Report
0.1.0 - ci-build 150

XpanDH Hospital Discharge Report, published by XpanDH Project. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/hl7-eu/xpandh-hdr/ and changes regularly. See the Directory of published versions

## Resource Profile: Medication (Xpandh)

Official URL: http://hl7.eu/fhir/ig/xpandh/hdr/StructureDefinition/medication-xpandh | Version: 0.1.0
Active as of 2025-10-10 | Computable Name: MedicationXpandh
Copyright/Legal: Used by permission of the XpanDH project, all rights reserved Creative Commons License

This profile represents the constraints applied to the Medication resource by the Xpandh project FHIR Implementation Guide, based on FHIR R4.

This profile constrains the representation of a medication, in the context of the international patient summary as specified by the IPS project of HL7 International.

Usages:

- Refer to this Profile: MedicationRequest and MedicationStatement

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

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

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
code | S | 1..1 | CodeableConceptIPS | Medication that was administered or was to be administered (medication code from any code system) Binding: Medications - SNOMED CT + Absent/Unknown (IPS) (preferred): SNOMED CT medications (Pharmaceutical / biologic product) or a code for absent/unknown medication
Additional Bindings | Purpose
Medications - SNOMED CT IPS Free Set | candidate
WHO ATC - IPS | candidate
Absent or Unknown Medication - IPS | candidate
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
form | S | 0..1 | CodeableConceptIPS | Concept - reference to a terminology or just text Binding: Medicine Doseform - IPS (preferred)
ingredient | S | 0..* | BackboneElement | Active or inactive ingredient
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
item[x] | S | 1..1 |  | The actual ingredient or content Binding: Medicine Active Substances - IPS (preferred): SNOMED CT drug substances
itemCodeableConcept |  |  | CodeableConcept(CodeableConceptIPS) |
itemReference |  |  | Reference(Substance | Medication) |
strength | S C | 0..1 | RatioIPS | A ratio of two Quantity values - a numerator and a denominator Constraints: rat-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.code | Base | preferred | Medications - SNOMED CT + Absent/Unknown (IPS) | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | preferred | Medicine Doseform - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.ingredient.​item[x] | Base | preferred | Medicine Active Substances - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Medication | 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 | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Medication | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
rat-1 | error | Medication.ingredient.strength | Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present | `(numerator.empty() xor denominator.exists()) and (numerator.exists() or extension.exists())`

This structure is derived from MedicationIPS

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
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
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business identifier for this medication
code | S | 1..1 | CodeableConceptIPS | Medication that was administered or was to be administered (medication code from any code system) Binding: Medications - SNOMED CT + Absent/Unknown (IPS) (preferred): SNOMED CT medications (Pharmaceutical / biologic product) or a code for absent/unknown medication
Additional Bindings | Purpose
Medications - SNOMED CT IPS Free Set | candidate
WHO ATC - IPS | candidate
Absent or Unknown Medication - IPS | candidate
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
manufacturer | Σ | 0..1 | Reference(Organization) | Manufacturer of the item
form | S | 0..1 | CodeableConceptIPS | Concept - reference to a terminology or just text Binding: Medicine Doseform - IPS (preferred)
amount | Σ | 0..1 | Ratio | Amount of drug in package
ingredient | S | 0..* | BackboneElement | Active or inactive ingredient
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
item[x] | S | 1..1 |  | The actual ingredient or content Binding: Medicine Active Substances - IPS (preferred): SNOMED CT drug substances
itemCodeableConcept |  |  | CodeableConcept(CodeableConceptIPS) |
itemReference |  |  | Reference(Substance | Medication) |
isActive |  | 0..1 | boolean | Active ingredient indicator
strength | S C | 0..1 | RatioIPS | A ratio of two Quantity values - a numerator and a denominator Constraints: rat-1
batch |  | 0..1 | BackboneElement | Details about packaged medications
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
lotNumber |  | 0..1 | string | Identifier assigned to batch
expirationDate |  | 0..1 | dateTime | When batch will expire
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
Medication.code | Base | preferred | Medications - SNOMED CT + Absent/Unknown (IPS) | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | preferred | Medicine Doseform - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.ingredient.​item[x] | Base | preferred | Medicine Active Substances - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Medication | 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 | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Medication | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
rat-1 | error | Medication.ingredient.strength | Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present | `(numerator.empty() xor denominator.exists()) and (numerator.exists() or extension.exists())`

This structure is derived from MedicationIPS

Summary

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
code | S | 1..1 | CodeableConceptIPS | Medication that was administered or was to be administered (medication code from any code system) Binding: Medications - SNOMED CT + Absent/Unknown (IPS) (preferred): SNOMED CT medications (Pharmaceutical / biologic product) or a code for absent/unknown medication
Additional Bindings | Purpose
Medications - SNOMED CT IPS Free Set | candidate
WHO ATC - IPS | candidate
Absent or Unknown Medication - IPS | candidate
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
form | S | 0..1 | CodeableConceptIPS | Concept - reference to a terminology or just text Binding: Medicine Doseform - IPS (preferred)
ingredient | S | 0..* | BackboneElement | Active or inactive ingredient
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
item[x] | S | 1..1 |  | The actual ingredient or content Binding: Medicine Active Substances - IPS (preferred): SNOMED CT drug substances
itemCodeableConcept |  |  | CodeableConcept(CodeableConceptIPS) |
itemReference |  |  | Reference(Substance | Medication) |
strength | S C | 0..1 | RatioIPS | A ratio of two Quantity values - a numerator and a denominator Constraints: rat-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.code | Base | preferred | Medications - SNOMED CT + Absent/Unknown (IPS) | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | preferred | Medicine Doseform - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.ingredient.​item[x] | Base | preferred | Medicine Active Substances - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Medication | 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 | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Medication | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
rat-1 | error | Medication.ingredient.strength | Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present | `(numerator.empty() xor denominator.exists()) and (numerator.exists() or extension.exists())`

Differential View

This structure is derived from MedicationIPS

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Medication |  | 0..* | MedicationIPS | Definition of a Medication
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
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
contained |  | 0..* | Resource | Contained, inline Resources
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | Σ | 0..* | Identifier | Business identifier for this medication
code | S | 1..1 | CodeableConceptIPS | Medication that was administered or was to be administered (medication code from any code system) Binding: Medications - SNOMED CT + Absent/Unknown (IPS) (preferred): SNOMED CT medications (Pharmaceutical / biologic product) or a code for absent/unknown medication
Additional Bindings | Purpose
Medications - SNOMED CT IPS Free Set | candidate
WHO ATC - IPS | candidate
Absent or Unknown Medication - IPS | candidate
status | ?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
manufacturer | Σ | 0..1 | Reference(Organization) | Manufacturer of the item
form | S | 0..1 | CodeableConceptIPS | Concept - reference to a terminology or just text Binding: Medicine Doseform - IPS (preferred)
amount | Σ | 0..1 | Ratio | Amount of drug in package
ingredient | S | 0..* | BackboneElement | Active or inactive ingredient
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
item[x] | S | 1..1 |  | The actual ingredient or content Binding: Medicine Active Substances - IPS (preferred): SNOMED CT drug substances
itemCodeableConcept |  |  | CodeableConcept(CodeableConceptIPS) |
itemReference |  |  | Reference(Substance | Medication) |
isActive |  | 0..1 | boolean | Active ingredient indicator
strength | S C | 0..1 | RatioIPS | A ratio of two Quantity values - a numerator and a denominator Constraints: rat-1
batch |  | 0..1 | BackboneElement | Details about packaged medications
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
lotNumber |  | 0..1 | string | Identifier assigned to batch
expirationDate |  | 0..1 | dateTime | When batch will expire
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Medication.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
Medication.code | Base | preferred | Medications - SNOMED CT + Absent/Unknown (IPS) | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std.
Medication.form | Base | preferred | Medicine Doseform - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1
Medication.ingredient.​item[x] | Base | preferred | Medicine Active Substances - IPS | 📦1.1.0 | International Patient Summary Implementation Guide v1.1

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Medication | 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 | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Medication | A resource should have narrative for robust management | `text.`div`.exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
rat-1 | error | Medication.ingredient.strength | Numerator and denominator SHALL both be present, or both are absent. If both are absent, there SHALL be some extension present | `(numerator.empty() xor denominator.exists()) and (numerator.exists() or extension.exists())`

This structure is derived from MedicationIPS

Summary

Other representations of profile: CSV, Excel, Schematron