Implementation Guide
TIFlow - Grenzüberschreitender Datenaustausch
Version 2.0.0-ballot.2 - ballot

## Resource Profile: Dispensation of the Prescription from the EU

Official URL: https://gematik.de/fhir/tiflow-xborder/StructureDefinition/GEM-ERPEU-PR-MedicationDispense | Version: 2.0.0-ballot.2
Draft as of 2026-06-30 | Computable Name: GEM_ERPEU_PR_MedicationDispense

Handles information about the redeem of the prescription and the submited medication from the EU.

Usages:

- Use this Profile: GEM ERP PR EU CloseOperation Input
- Examples for this Profile: MedicationDispense/Example-MedicationDispense-EU

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
--- | --- | --- | --- | ---
MedicationDispense | C | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient Constraints: dom-2, dom-3, dom-4, dom-5, dom-6, mdd-1
meta | S Σ | 0..1 | Meta | Metadata about the resource
versionId | S Σ | 0..1 | id | Version specific identifier
lastUpdated | S Σ | 0..1 | instant | When the resource version last changed
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:rxPrescriptionProcessIdentifier | N | 0..1 | RxPrescriptionProcessIdentifier | Optional Extensions Element URL: https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension
extension:renderedDosageInstruction | S N | 0..1 | (Complex) | Vollständige Darstellung der Dosierungsanweisungen (generiert aus den Dosage-Elementen). URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction
extension |  | 0..0 |  | Additional content defined by implementations Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction"
value[x] | S N | 0..1 | markdown | Full representation of the dosage instructions
extension:generatedDosageInstructionsMeta | S N | 0..1 | (Complex) | Metadaten zu den generierten Dosierungsanweisungen URL: http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
Slices for identifier |  | 1..* | Identifier | ePrescription identifier Slice: Unordered, Open by pattern:$this
identifier:RxOriginatorProcessIdentifier | N | 0..1 | RxOriginatorProcessIdentifier | An identifier intended for computation Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/epa-medication/sid/rx-originator-process-identifier
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
status | ?!S Σ | 1..1 | code | completed Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs (required): A coded concept specifying the state of the dispense event. Fixed Value: completed
category | S | 0..1 | CodeableConcept | Fehlender oder nicht vorhandener Wert weist auf eine Abgabe mit Verschreibung hin. Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs (required): Definiert den Kontext einer Abgabe: mit oder ohne ärztliche Verschreibung.
medication[x] | S Σ | 1..1 | Reference(EU-Medication) | What medication was supplied
subject | S Σ C | 1..1 | Reference(Patient) | Who the dispense is for Constraints: ref-1
identifier | S Σ | 1..1 | IdentifierKvid10 | An identifier intended for computation
performer | S | 1..1 | BackboneElement | Who performed event
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | C | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing Constraints: ref-1
authorizingPrescription | S C | 0..* | Reference(MedicationRequest) | Medication order that authorizes the dispense Constraints: ref-1
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: qty-3, sqty-1, erp-eu-positiveAnzahlPackungen
value | S Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 0..1 | string | Unit representation
whenPrepared | Σ C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | S C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
dosageInstruction | S C | 0..* | DosageDE | Hier werden Informationen zur Dosierung angegeben. Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning
substitution | S | 0..1 | BackboneElement | Whether a substitution was performed on the dispense
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
MedicationDispense.status | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs | Not State | Unknown
MedicationDispense.category | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
DosageDoseUnitSameCode | error | MedicationDispense.dosageInstruction | Die Dosiereinheit muss über alle Dosierungen gleich sein. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( doseAndRate.exists() implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code ).distinct().count() = 1 )`
DosageStructuredOrFreeTextWarning | warning | MedicationDispense.dosageInstruction | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (text.exists() and timing.empty() and doseAndRate.empty()) or (text.empty() and (timing.exists() or doseAndRate.exists())) )`
DosageStructuredRequiresBoth | error | MedicationDispense.dosageInstruction | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (timing.exists() implies doseAndRate.exists()) and (doseAndRate.exists() implies timing.exists()) )`
DosageWarnungViererschemaInText | warning | MedicationDispense.dosageInstruction | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. | `text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()`
FreeTextSingleDosageOnlyWarning | warning | MedicationDispense.dosageInstruction | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(text.exists() and timing.empty() and doseAndRate.empty()) ) implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).count() = 1 )`
dom-2 | error | MedicationDispense | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | MedicationDispense | 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 | MedicationDispense | 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 | MedicationDispense | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | MedicationDispense | 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())`
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
mdd-1 | error | MedicationDispense | whenHandedOver cannot be before whenPrepared | `whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared`
qty-3 | error | MedicationDispense.quantity | If a code for the unit is present, the system SHALL also be present | `code.empty() or system.exists()`
ref-1 | error | MedicationDispense.subject, MedicationDispense.performer.actor, MedicationDispense.authorizingPrescription | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`
sqty-1 | error | MedicationDispense.quantity | The comparator is not used on a SimpleQuantity | `comparator.empty()`

This structure is derived from TIMedicationDispenseDgMP

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
MedicationDispense |  | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient
identifier |  | 1..* | Identifier | ePrescription identifier
Slices for identifier |  |  |  | Content/Rules for all slices
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
status |  | 1..1 | code | completed Fixed Value: completed
medication[x] |  | 1..1 | Reference(EU-Medication) | What medication was supplied
performer |  | 1..1 | BackboneElement | Who performed event
actor |  | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: erp-eu-positiveAnzahlPackungen
value | S | 0..1 | decimal | Numerical value (with implicit precision)
unit | S | 0..1 | string | Unit representation
whenPrepared | C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
substitution |  |  |  |
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
MedicationDispense | C | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient Constraints: dom-2, dom-3, dom-4, dom-5, dom-6, mdd-1
id | Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
versionId | S Σ | 0..1 | id | Version specific identifier
lastUpdated | S Σ | 0..1 | instant | When the resource version last changed
source | Σ | 0..1 | uri | Identifies where the resource comes from
profile | Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
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
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:rxPrescriptionProcessIdentifier | N | 0..1 | RxPrescriptionProcessIdentifier | Optional Extensions Element URL: https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension
extension:renderedDosageInstruction | S N | 0..1 | (Complex) | Vollständige Darstellung der Dosierungsanweisungen (generiert aus den Dosage-Elementen). URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Additional content defined by implementations Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction"
value[x] | S N | 0..1 | markdown | Full representation of the dosage instructions
extension:generatedDosageInstructionsMeta | S N | 0..1 | (Complex) | Metadaten zu den generierten Dosierungsanweisungen URL: http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
Slices for identifier |  | 1..* | Identifier | ePrescription identifier Slice: Unordered, Open by pattern:$this
identifier:RxOriginatorProcessIdentifier | N | 0..1 | RxOriginatorProcessIdentifier | An identifier intended for computation Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/epa-medication/sid/rx-originator-process-identifier
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
partOf | C | 0..* | Reference(Procedure) | Event that dispense is part of Constraints: ref-1
status | ?!S Σ | 1..1 | code | completed Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs (required): A coded concept specifying the state of the dispense event. Fixed Value: completed
statusReason[x] |  | 0..1 |  | Why a dispense was not performed Binding: MedicationDispense Status Reason Codes (example): A code describing why a dispense was not performed.
statusReasonCodeableConcept |  |  | CodeableConcept |
statusReasonReference |  |  | Reference(DetectedIssue) |
category | S | 0..1 | CodeableConcept | Fehlender oder nicht vorhandener Wert weist auf eine Abgabe mit Verschreibung hin. Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs (required): Definiert den Kontext einer Abgabe: mit oder ohne ärztliche Verschreibung.
medication[x] | S Σ | 1..1 | Reference(EU-Medication) | What medication was supplied
subject | S Σ C | 1..1 | Reference(Patient) | Who the dispense is for Constraints: ref-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 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
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
identifier | S Σ | 1..1 | IdentifierKvid10 | An identifier intended for computation
display | Σ | 0..1 | string | Text alternative for the resource
context | C | 0..1 | Reference(Encounter | EpisodeOfCare) | Encounter / Episode associated with event Constraints: ref-1
supportingInformation | C | 0..* | Reference(Resource) | Information that supports the dispensing of the medication Constraints: ref-1
performer | S | 1..1 | BackboneElement | Who performed event
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function |  | 0..1 | CodeableConcept | Who performed the dispense and what they did Binding: MedicationDispense Performer Function Codes (example): A code describing the role an individual played in dispensing a medication.
actor | C | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing Constraints: ref-1
location | C | 0..1 | Reference(Location) | Where the dispense occurred Constraints: ref-1
authorizingPrescription | S C | 0..* | Reference(MedicationRequest) | Medication order that authorizes the dispense Constraints: ref-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (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
display | Σ | 0..1 | string | Text alternative for the resource
type |  | 0..1 | CodeableConcept | Trial fill, partial fill, emergency fill, etc. Binding: ActPharmacySupplyType (example): Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: qty-3, sqty-1, erp-eu-positiveAnzahlPackungen
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
value | S Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 0..1 | string | Unit representation
system | Σ C | 0..1 | uri | System that defines coded unit form
code | Σ | 0..1 | code | Coded form of the unit
daysSupply | C | 0..1 | SimpleQuantity | Amount of medication expressed as a timing amount Constraints: qty-3, sqty-1
whenPrepared | Σ C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | S C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
destination | C | 0..1 | Reference(Location) | Where the medication was sent Constraints: ref-1
receiver | C | 0..* | Reference(Patient | Practitioner) | Who collected the medication Constraints: ref-1
note |  | 0..* | Annotation | Information about the dispense
dosageInstruction | S C | 0..* | DosageDE | Hier werden Informationen zur Dosierung angegeben. Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning
substitution | S | 0..1 | BackboneElement | Whether a substitution was performed on the dispense
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
type |  | 0..1 | CodeableConcept | Code signifying whether a different drug was dispensed from what was prescribed Binding: ActSubstanceAdminSubstitutionCode (example): A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescription.
reason |  | 0..* | CodeableConcept | Why was substitution made Binding: SubstanceAdminSubstitutionReason (example): A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed.
responsibleParty | C | 0..* | Reference(Practitioner | PractitionerRole) | Who is responsible for the substitution Constraints: ref-1
detectedIssue | C | 0..* | Reference(DetectedIssue) | Clinical issue with action Constraints: ref-1
eventHistory | C | 0..* | Reference(Provenance) | A list of relevant lifecycle events Constraints: ref-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
MedicationDispense.meta.​security | Base | extensible | SecurityLabels | 📦4.0.1 | FHIR Std.
MedicationDispense.meta.​tag | Base | example | Common Tags | 📦4.0.1 | FHIR Std.
MedicationDispense.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
MedicationDispense.status | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs | Not State | Unknown
MedicationDispense.statusReason[x] | Base | example | Medication dispense status reason codes | 📦4.0.1 | FHIR Std.
MedicationDispense.category | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs | Not State | Unknown
MedicationDispense.subject.​type | Base | extensible | ResourceType | 📦4.0.1 | FHIR Std.
MedicationDispense.performer.​function | Base | example | Medication dispense performer function codes | 📦4.0.1 | FHIR Std.
MedicationDispense.authorizingPrescription.​type | Base | extensible | ResourceType | 📦4.0.1 | FHIR Std.
MedicationDispense.type | Base | example | ActPharmacySupplyType | 📦3.0.0 | THO v7.2
MedicationDispense.substitution.​type | Base | example | ActSubstanceAdminSubstitutionCode | 📦3.0.0 | THO v7.2
MedicationDispense.substitution.​reason | Base | example | SubstanceAdminSubstitutionReason | 📦3.0.0 | THO v7.2

#### Constraints

Id | Grade | Path(s) | Description | Expression
DosageDoseUnitSameCode | error | MedicationDispense.dosageInstruction | Die Dosiereinheit muss über alle Dosierungen gleich sein. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( doseAndRate.exists() implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code ).distinct().count() = 1 )`
DosageStructuredOrFreeTextWarning | warning | MedicationDispense.dosageInstruction | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (text.exists() and timing.empty() and doseAndRate.empty()) or (text.empty() and (timing.exists() or doseAndRate.exists())) )`
DosageStructuredRequiresBoth | error | MedicationDispense.dosageInstruction | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (timing.exists() implies doseAndRate.exists()) and (doseAndRate.exists() implies timing.exists()) )`
DosageWarnungViererschemaInText | warning | MedicationDispense.dosageInstruction | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. | `text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()`
FreeTextSingleDosageOnlyWarning | warning | MedicationDispense.dosageInstruction | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(text.exists() and timing.empty() and doseAndRate.empty()) ) implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).count() = 1 )`
dom-2 | error | MedicationDispense | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | MedicationDispense | 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 | MedicationDispense | 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 | MedicationDispense | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | MedicationDispense | 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())`
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
mdd-1 | error | MedicationDispense | whenHandedOver cannot be before whenPrepared | `whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared`
qty-3 | error | MedicationDispense.quantity, MedicationDispense.daysSupply | If a code for the unit is present, the system SHALL also be present | `code.empty() or system.exists()`
ref-1 | error | MedicationDispense.partOf, MedicationDispense.subject, MedicationDispense.context, MedicationDispense.supportingInformation, MedicationDispense.performer.actor, MedicationDispense.location, MedicationDispense.authorizingPrescription, MedicationDispense.destination, MedicationDispense.receiver, MedicationDispense.substitution.responsibleParty, MedicationDispense.detectedIssue, MedicationDispense.eventHistory | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`
sqty-1 | error | MedicationDispense.quantity, MedicationDispense.daysSupply | The comparator is not used on a SimpleQuantity | `comparator.empty()`

This structure is derived from TIMedicationDispenseDgMP

Summary

Mandatory: 2 elements
Must-Support: 4 elements
Fixed: 1 element

Structures

This structure refers to these other structures:

- Identifikator Profil für E-Rezept-IDs (https://gematik.de/fhir/ti/StructureDefinition/e-prescription-id)
- EU-Medication (https://gematik.de/fhir/tiflow-xborder/StructureDefinition/GEM-ERPEU-PR-Medication)
- PractitionerRole Information Received from the EU (https://gematik.de/fhir/tiflow-xborder/StructureDefinition/GEM-ERPEU-PR-PractitionerRole)

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
MedicationDispense | C | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient Constraints: dom-2, dom-3, dom-4, dom-5, dom-6, mdd-1
meta | S Σ | 0..1 | Meta | Metadata about the resource
versionId | S Σ | 0..1 | id | Version specific identifier
lastUpdated | S Σ | 0..1 | instant | When the resource version last changed
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:rxPrescriptionProcessIdentifier | N | 0..1 | RxPrescriptionProcessIdentifier | Optional Extensions Element URL: https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension
extension:renderedDosageInstruction | S N | 0..1 | (Complex) | Vollständige Darstellung der Dosierungsanweisungen (generiert aus den Dosage-Elementen). URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction
extension |  | 0..0 |  | Additional content defined by implementations Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction"
value[x] | S N | 0..1 | markdown | Full representation of the dosage instructions
extension:generatedDosageInstructionsMeta | S N | 0..1 | (Complex) | Metadaten zu den generierten Dosierungsanweisungen URL: http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
Slices for identifier |  | 1..* | Identifier | ePrescription identifier Slice: Unordered, Open by pattern:$this
identifier:RxOriginatorProcessIdentifier | N | 0..1 | RxOriginatorProcessIdentifier | An identifier intended for computation Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/epa-medication/sid/rx-originator-process-identifier
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
status | ?!S Σ | 1..1 | code | completed Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs (required): A coded concept specifying the state of the dispense event. Fixed Value: completed
category | S | 0..1 | CodeableConcept | Fehlender oder nicht vorhandener Wert weist auf eine Abgabe mit Verschreibung hin. Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs (required): Definiert den Kontext einer Abgabe: mit oder ohne ärztliche Verschreibung.
medication[x] | S Σ | 1..1 | Reference(EU-Medication) | What medication was supplied
subject | S Σ C | 1..1 | Reference(Patient) | Who the dispense is for Constraints: ref-1
identifier | S Σ | 1..1 | IdentifierKvid10 | An identifier intended for computation
performer | S | 1..1 | BackboneElement | Who performed event
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | C | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing Constraints: ref-1
authorizingPrescription | S C | 0..* | Reference(MedicationRequest) | Medication order that authorizes the dispense Constraints: ref-1
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: qty-3, sqty-1, erp-eu-positiveAnzahlPackungen
value | S Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 0..1 | string | Unit representation
whenPrepared | Σ C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | S C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
dosageInstruction | S C | 0..* | DosageDE | Hier werden Informationen zur Dosierung angegeben. Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning
substitution | S | 0..1 | BackboneElement | Whether a substitution was performed on the dispense
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
MedicationDispense.status | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs | Not State | Unknown
MedicationDispense.category | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
DosageDoseUnitSameCode | error | MedicationDispense.dosageInstruction | Die Dosiereinheit muss über alle Dosierungen gleich sein. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( doseAndRate.exists() implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code ).distinct().count() = 1 )`
DosageStructuredOrFreeTextWarning | warning | MedicationDispense.dosageInstruction | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (text.exists() and timing.empty() and doseAndRate.empty()) or (text.empty() and (timing.exists() or doseAndRate.exists())) )`
DosageStructuredRequiresBoth | error | MedicationDispense.dosageInstruction | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (timing.exists() implies doseAndRate.exists()) and (doseAndRate.exists() implies timing.exists()) )`
DosageWarnungViererschemaInText | warning | MedicationDispense.dosageInstruction | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. | `text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()`
FreeTextSingleDosageOnlyWarning | warning | MedicationDispense.dosageInstruction | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(text.exists() and timing.empty() and doseAndRate.empty()) ) implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).count() = 1 )`
dom-2 | error | MedicationDispense | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | MedicationDispense | 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 | MedicationDispense | 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 | MedicationDispense | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | MedicationDispense | 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())`
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
mdd-1 | error | MedicationDispense | whenHandedOver cannot be before whenPrepared | `whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared`
qty-3 | error | MedicationDispense.quantity | If a code for the unit is present, the system SHALL also be present | `code.empty() or system.exists()`
ref-1 | error | MedicationDispense.subject, MedicationDispense.performer.actor, MedicationDispense.authorizingPrescription | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`
sqty-1 | error | MedicationDispense.quantity | The comparator is not used on a SimpleQuantity | `comparator.empty()`

Differential View

This structure is derived from TIMedicationDispenseDgMP

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
MedicationDispense |  | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient
identifier |  | 1..* | Identifier | ePrescription identifier
Slices for identifier |  |  |  | Content/Rules for all slices
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
status |  | 1..1 | code | completed Fixed Value: completed
medication[x] |  | 1..1 | Reference(EU-Medication) | What medication was supplied
performer |  | 1..1 | BackboneElement | Who performed event
actor |  | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: erp-eu-positiveAnzahlPackungen
value | S | 0..1 | decimal | Numerical value (with implicit precision)
unit | S | 0..1 | string | Unit representation
whenPrepared | C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
substitution |  |  |  |
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
Documentation for this format

#### Constraints

Id | Grade | Path(s) | Description | Expression
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
MedicationDispense | C | 0..* | TIMedicationDispenseDgMP | Dispensing a medication to a named patient Constraints: dom-2, dom-3, dom-4, dom-5, dom-6, mdd-1
id | Σ | 0..1 | id | Logical id of this artifact
meta | S Σ | 0..1 | Meta | Metadata about the resource
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
versionId | S Σ | 0..1 | id | Version specific identifier
lastUpdated | S Σ | 0..1 | instant | When the resource version last changed
source | Σ | 0..1 | uri | Identifies where the resource comes from
profile | Σ | 0..* | canonical(StructureDefinition) | Profiles this resource claims to conform to
security | Σ | 0..* | Coding | Security Labels applied to this resource Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
tag | Σ | 0..* | Coding | Tags applied to this resource Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
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
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:rxPrescriptionProcessIdentifier | N | 0..1 | RxPrescriptionProcessIdentifier | Optional Extensions Element URL: https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension
extension:renderedDosageInstruction | S N | 0..1 | (Complex) | Vollständige Darstellung der Dosierungsanweisungen (generiert aus den Dosage-Elementen). URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Additional content defined by implementations Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction"
value[x] | S N | 0..1 | markdown | Full representation of the dosage instructions
extension:generatedDosageInstructionsMeta | S N | 0..1 | (Complex) | Metadaten zu den generierten Dosierungsanweisungen URL: http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored Slice: Unordered, Open by value:url
Slices for identifier |  | 1..* | Identifier | ePrescription identifier Slice: Unordered, Open by pattern:$this
identifier:RxOriginatorProcessIdentifier | N | 0..1 | RxOriginatorProcessIdentifier | An identifier intended for computation Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/epa-medication/sid/rx-originator-process-identifier
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
identifier:prescriptionID |  | 1..1 | EPrescriptionId | External identifier Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
use |  | 0..1 | code | usual | official | temp | secondary | old (If known)
type |  | 0..1 | CodeableConcept | Description of identifier
system |  | 1..1 | uri | The namespace for the identifier value Fixed Value: https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId
value |  | 0..1 | string | The value that is unique
period |  | 0..1 | Period | Time period when id is/was valid for use
assigner |  | 0..1 | Reference(Organization) | Organization that issued id (may be just text)
partOf | C | 0..* | Reference(Procedure) | Event that dispense is part of Constraints: ref-1
status | ?!S Σ | 1..1 | code | completed Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs (required): A coded concept specifying the state of the dispense event. Fixed Value: completed
statusReason[x] |  | 0..1 |  | Why a dispense was not performed Binding: MedicationDispense Status Reason Codes (example): A code describing why a dispense was not performed.
statusReasonCodeableConcept |  |  | CodeableConcept |
statusReasonReference |  |  | Reference(DetectedIssue) |
category | S | 0..1 | CodeableConcept | Fehlender oder nicht vorhandener Wert weist auf eine Abgabe mit Verschreibung hin. Binding: https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs (required): Definiert den Kontext einer Abgabe: mit oder ohne ärztliche Verschreibung.
medication[x] | S Σ | 1..1 | Reference(EU-Medication) | What medication was supplied
subject | S Σ C | 1..1 | Reference(Patient) | Who the dispense is for Constraints: ref-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 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
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (extensible): Aa resource (or, for logical models, the URI of the logical model).
identifier | S Σ | 1..1 | IdentifierKvid10 | An identifier intended for computation
display | Σ | 0..1 | string | Text alternative for the resource
context | C | 0..1 | Reference(Encounter | EpisodeOfCare) | Encounter / Episode associated with event Constraints: ref-1
supportingInformation | C | 0..* | Reference(Resource) | Information that supports the dispensing of the medication Constraints: ref-1
performer | S | 1..1 | BackboneElement | Who performed event
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
function |  | 0..1 | CodeableConcept | Who performed the dispense and what they did Binding: MedicationDispense Performer Function Codes (example): A code describing the role an individual played in dispensing a medication.
actor | C | 1..1 | Reference(PractitionerRole Information Received from the EU) | Individual who was performing Constraints: ref-1
location | C | 0..1 | Reference(Location) | Where the dispense occurred Constraints: ref-1
authorizingPrescription | S C | 0..* | Reference(MedicationRequest) | Medication order that authorizes the dispense Constraints: ref-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
reference | S Σ C | 1..1 | string | Literal reference, Relative, internal or absolute URL
type | Σ | 0..1 | uri | Type the reference refers to (e.g. "Patient") Binding: ResourceType (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
display | Σ | 0..1 | string | Text alternative for the resource
type |  | 0..1 | CodeableConcept | Trial fill, partial fill, emergency fill, etc. Binding: ActPharmacySupplyType (example): Indicates the type of dispensing event that is performed. For example, Trial Fill, Completion of Trial, Partial Fill, Emergency Fill, Samples, etc.
quantity | S C | 0..1 | SimpleQuantity | Number of dispensed packages/ units Constraints: qty-3, sqty-1, erp-eu-positiveAnzahlPackungen
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
value | S Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 0..1 | string | Unit representation
system | Σ C | 0..1 | uri | System that defines coded unit form
code | Σ | 0..1 | code | Coded form of the unit
daysSupply | C | 0..1 | SimpleQuantity | Amount of medication expressed as a timing amount Constraints: qty-3, sqty-1
whenPrepared | Σ C | 0..1 | dateTime | When product was packaged and reviewed Constraints: erp-eu-abgabeDatumsFormat
whenHandedOver | S C | 1..1 | dateTime | When product was given out Constraints: erp-eu-abgabeDatumsFormat
destination | C | 0..1 | Reference(Location) | Where the medication was sent Constraints: ref-1
receiver | C | 0..* | Reference(Patient | Practitioner) | Who collected the medication Constraints: ref-1
note |  | 0..* | Annotation | Information about the dispense
dosageInstruction | S C | 0..* | DosageDE | Hier werden Informationen zur Dosierung angegeben. Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning
substitution | S | 0..1 | BackboneElement | Whether a substitution was performed on the dispense
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
wasSubstituted | S | 1..1 | boolean | Indicates whether a substitution was made on the dispensed medication
type |  | 0..1 | CodeableConcept | Code signifying whether a different drug was dispensed from what was prescribed Binding: ActSubstanceAdminSubstitutionCode (example): A coded concept describing whether a different medicinal product may be dispensed other than the product as specified exactly in the prescription.
reason |  | 0..* | CodeableConcept | Why was substitution made Binding: SubstanceAdminSubstitutionReason (example): A coded concept describing the reason that a different medication should (or should not) be substituted from what was prescribed.
responsibleParty | C | 0..* | Reference(Practitioner | PractitionerRole) | Who is responsible for the substitution Constraints: ref-1
detectedIssue | C | 0..* | Reference(DetectedIssue) | Clinical issue with action Constraints: ref-1
eventHistory | C | 0..* | Reference(Provenance) | A list of relevant lifecycle events Constraints: ref-1
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
MedicationDispense.meta.​security | Base | extensible | SecurityLabels | 📦4.0.1 | FHIR Std.
MedicationDispense.meta.​tag | Base | example | Common Tags | 📦4.0.1 | FHIR Std.
MedicationDispense.language | Base | preferred | Common Languages | 📦4.0.1 | FHIR Std.
MedicationDispense.status | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-status-vs | Not State | Unknown
MedicationDispense.statusReason[x] | Base | example | Medication dispense status reason codes | 📦4.0.1 | FHIR Std.
MedicationDispense.category | Base | required | https://gematik.de/fhir/terminology/ValueSet/ti-medication-dispense-category-vs | Not State | Unknown
MedicationDispense.subject.​type | Base | extensible | ResourceType | 📦4.0.1 | FHIR Std.
MedicationDispense.performer.​function | Base | example | Medication dispense performer function codes | 📦4.0.1 | FHIR Std.
MedicationDispense.authorizingPrescription.​type | Base | extensible | ResourceType | 📦4.0.1 | FHIR Std.
MedicationDispense.type | Base | example | ActPharmacySupplyType | 📦3.0.0 | THO v7.2
MedicationDispense.substitution.​type | Base | example | ActSubstanceAdminSubstitutionCode | 📦3.0.0 | THO v7.2
MedicationDispense.substitution.​reason | Base | example | SubstanceAdminSubstitutionReason | 📦3.0.0 | THO v7.2

#### Constraints

Id | Grade | Path(s) | Description | Expression
DosageDoseUnitSameCode | error | MedicationDispense.dosageInstruction | Die Dosiereinheit muss über alle Dosierungen gleich sein. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( doseAndRate.exists() implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code | (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code ).distinct().count() = 1 )`
DosageStructuredOrFreeTextWarning | warning | MedicationDispense.dosageInstruction | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (text.exists() and timing.empty() and doseAndRate.empty()) or (text.empty() and (timing.exists() or doseAndRate.exists())) )`
DosageStructuredRequiresBoth | error | MedicationDispense.dosageInstruction | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. | `(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all( (timing.exists() implies doseAndRate.exists()) and (doseAndRate.exists() implies timing.exists()) )`
DosageWarnungViererschemaInText | warning | MedicationDispense.dosageInstruction | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. | `text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()`
FreeTextSingleDosageOnlyWarning | warning | MedicationDispense.dosageInstruction | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(text.exists() and timing.empty() and doseAndRate.empty()) ) implies ( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).count() = 1 )`
dom-2 | error | MedicationDispense | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | MedicationDispense | 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 | MedicationDispense | 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 | MedicationDispense | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | MedicationDispense | 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())`
erp-eu-abgabeDatumsFormat | error | MedicationDispense.whenPrepared, MedicationDispense.whenHandedOver | Wert muss ein Datum in der Form: YYYY-MM-DD sein. | `toString().length()=10`
erp-eu-positiveAnzahlPackungen | error | MedicationDispense.quantity | Der Wert der Packungen muss positiv sein (größer gleich 0). | `value>=0`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`
mdd-1 | error | MedicationDispense | whenHandedOver cannot be before whenPrepared | `whenHandedOver.empty() or whenPrepared.empty() or whenHandedOver >= whenPrepared`
qty-3 | error | MedicationDispense.quantity, MedicationDispense.daysSupply | If a code for the unit is present, the system SHALL also be present | `code.empty() or system.exists()`
ref-1 | error | MedicationDispense.partOf, MedicationDispense.subject, MedicationDispense.context, MedicationDispense.supportingInformation, MedicationDispense.performer.actor, MedicationDispense.location, MedicationDispense.authorizingPrescription, MedicationDispense.destination, MedicationDispense.receiver, MedicationDispense.substitution.responsibleParty, MedicationDispense.detectedIssue, MedicationDispense.eventHistory | SHALL have a contained resource if a local reference is provided | `reference.startsWith('#').not() or (reference.substring(1).trace('url') in %rootResource.contained.id.trace('ids'))`
sqty-1 | error | MedicationDispense.quantity, MedicationDispense.daysSupply | The comparator is not used on a SimpleQuantity | `comparator.empty()`

This structure is derived from TIMedicationDispenseDgMP

Summary

Mandatory: 2 elements
Must-Support: 4 elements
Fixed: 1 element

Structures

This structure refers to these other structures:

- Identifikator Profil für E-Rezept-IDs (https://gematik.de/fhir/ti/StructureDefinition/e-prescription-id)
- EU-Medication (https://gematik.de/fhir/tiflow-xborder/StructureDefinition/GEM-ERPEU-PR-Medication)
- PractitionerRole Information Received from the EU (https://gematik.de/fhir/tiflow-xborder/StructureDefinition/GEM-ERPEU-PR-PractitionerRole)

Other representations of profile: CSV, Excel, Schematron