Medication IG DE
1.1.0 - STU1

Medication IG DE - Local Development build (v1.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

## Data Type Profile: Dosage dgMP

Official URL: http://ig.fhir.de/igs/medication/StructureDefinition/DosageDgMP | Version: 1.1.0
Active as of 2026-07-06 | Computable Name: DosageDgMP

Gibt an, wie das Medikament vom Patienten im Kontext dgMP eingenommen wird/wurde oder eingenommen werden soll.

## Verwendung

Dieses Profil beschreibt eine technisch streng validierte Ausprägung der FHIR-Ressource `Dosage` für den deutschen Kontext und ist speziell für den Einsatz im dgMP-Prozess entwickelt worden. Das Profil enthält gezielte Einschränkungen und Vorgaben, um die technische Überprüfbarkeit und Konsistenz von Dosierungsangaben sicherzustellen.

Hinweis für Entwickler: Verwenden Sie dieses Profil immer dann, wenn Dosierungsinformationen im Rahmen des dgMP-Prozesses erstellt oder verarbeitet werden. Insbesondere bei zentralen Diensten innerhalb der Telematikinfrastruktur (z.B. E-Rezept-Fachdienst) ist die Einhaltung dieses Profils erforderlich, da hier eine technische Validierung der Dosierung erfolgt. Beachten Sie, dass dieses Profil bewusst Einschränkungen in der Interoperabilität zugunsten der Validierbarkeit in Kauf nimmt.

Usages:

- Use this DataType Profile: Medication Dispense dgMP, Medication Request dgMP and Medication Statement dgMP

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
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
Slices for extension |  |  |  | Content/Rules for all slices
extension:asNeededFor | S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
text | S Σ | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension | ?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url
modifierExtension:mindestabstandZwischenGaben | ?!S Σ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben"
value[x] | S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented.
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
text | S Σ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf'
patientInstruction | S Σ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing | S Σ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] | S Σ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
doseAndRate | S Σ | 0..1 | Element | Menge des verabreichten Medikaments
Slices for dose[x] | S Σ | 0..1 |  | Amount of medication per dose Slice: Unordered, Closed by type:$this
doseRange |  |  | Range |
doseQuantity |  |  | Quantity(SimpleQuantity) |
dose[x]:doseQuantity | S Σ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
dose[x]:doseRange | S Σ | 0..1 | Range | Amount of medication per dose
low | S Σ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value | S Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
high | S Σ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value | S Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
maxDosePerPeriod | S Σ | 0..1 | Ratio | Maximale Dosis pro Zeitraum
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.extension:asNeededFor.​value[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📦4.0.1 | FHIR Std.
Dosage.modifierExtension:mindestabstandZwischenGaben.​value[x].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std.
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageDoseUnitSameCode | error | Dosage | 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 )`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredOrFreeTextWarning | warning | Dosage | 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 | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing 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() or asNeeded.ofType(boolean) = true or extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() )) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DosageWarnungViererschemaInText | warning | Dosage | 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()`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
FreeTextSingleDosageOnlyWarning | warning | Dosage | 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`
dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded`
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()`

This structure is derived from DosageDE

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
Slices for extension |  |  |  | Content/Rules for all slices
extension:asNeededFor |  | 0..* | R5 Dosage.asNeededFor | Dosage asNeededFor
value[x] |  |  |  |
coding |  | 0..0 |  | Code defined by a terminology system
text |  | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension |  |  |  | Content/Rules for all slices
modifierExtension:mindestabstandZwischenGaben |  | 0..1 | MindestabstandZwischenGabenEx | Mindestabstand zwischen Gaben
value[x] |  |  |  |
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
sequence |  | 0..0 |  | The order of the dosage instructions
additionalInstruction |  | 0..0 |  | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
patientInstruction |  | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing |  | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] |  | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
site |  | 0..0 |  | Body site to administer to
route |  | 0..0 |  | How drug should enter body
method |  | 0..0 |  | Technique for administering medication
doseAndRate |  | 0..1 | Element | Menge des verabreichten Medikaments
type |  | 0..0 |  | The kind of dose or rate specified
Slices for dose[x] |  |  |  | Content/Rules for all slices
dose[x]:doseQuantity |  | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
dose[x]:doseRange |  | 0..1 | Range | Amount of medication per dose
low |  | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value |  | 1..1 | decimal | Numerical value (with implicit precision)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
high |  | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value |  | 1..1 | decimal | Numerical value (with implicit precision)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
rate[x] |  | 0..0 |  | Amount of medication per unit of time
maxDosePerAdministration |  | 0..0 |  | Upper limit on medication per administration
maxDosePerLifetime |  | 0..0 |  | Upper limit on medication per lifetime of the patient
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:asNeededFor | S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
text | S Σ | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension | ?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url
modifierExtension:mindestabstandZwischenGaben | ?!S Σ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben"
value[x] | S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben
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 | Σ | 0..1 | decimal | Numerical value (with implicit precision)
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented.
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
text | S Σ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf'
patientInstruction | S Σ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing | S Σ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] | S Σ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
doseAndRate | S Σ | 0..1 | Element | Menge des verabreichten Medikaments
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for dose[x] | S Σ | 0..1 |  | Amount of medication per dose Slice: Unordered, Closed by type:$this
doseRange |  |  | Range |
doseQuantity |  |  | Quantity(SimpleQuantity) |
dose[x]:doseQuantity | S Σ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 | Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
dose[x]:doseRange | S Σ | 0..1 | Range | Amount of medication per dose
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
low | S Σ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
high | S Σ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
maxDosePerPeriod | S Σ | 0..1 | Ratio | Maximale Dosis pro Zeitraum
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.extension:asNeededFor.​value[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📦4.0.1 | FHIR Std.
Dosage.modifierExtension:mindestabstandZwischenGaben.​value[x].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std.
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageDoseUnitSameCode | error | Dosage | 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 )`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredOrFreeTextWarning | warning | Dosage | 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 | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing 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() or asNeeded.ofType(boolean) = true or extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() )) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DosageWarnungViererschemaInText | warning | Dosage | 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()`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
FreeTextSingleDosageOnlyWarning | warning | Dosage | 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`
dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded`
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()`

This structure is derived from DosageDE

Summary

Mandatory: 0 element(15 nested mandatory elements)
Prohibited: 10 elements

Structures

This structure refers to these other structures:

- Timing dgMP (http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP)
- SimpleQuantity (http://hl7.org/fhir/StructureDefinition/SimpleQuantity)

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
Slices for extension |  |  |  | Content/Rules for all slices
extension:asNeededFor | S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
text | S Σ | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension | ?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url
modifierExtension:mindestabstandZwischenGaben | ?!S Σ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben"
value[x] | S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented.
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
text | S Σ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf'
patientInstruction | S Σ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing | S Σ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] | S Σ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
doseAndRate | S Σ | 0..1 | Element | Menge des verabreichten Medikaments
Slices for dose[x] | S Σ | 0..1 |  | Amount of medication per dose Slice: Unordered, Closed by type:$this
doseRange |  |  | Range |
doseQuantity |  |  | Quantity(SimpleQuantity) |
dose[x]:doseQuantity | S Σ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
dose[x]:doseRange | S Σ | 0..1 | Range | Amount of medication per dose
low | S Σ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value | S Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
high | S Σ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value | S Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
maxDosePerPeriod | S Σ | 0..1 | Ratio | Maximale Dosis pro Zeitraum
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.extension:asNeededFor.​value[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📦4.0.1 | FHIR Std.
Dosage.modifierExtension:mindestabstandZwischenGaben.​value[x].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std.
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageDoseUnitSameCode | error | Dosage | 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 )`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredOrFreeTextWarning | warning | Dosage | 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 | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing 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() or asNeeded.ofType(boolean) = true or extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() )) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DosageWarnungViererschemaInText | warning | Dosage | 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()`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
FreeTextSingleDosageOnlyWarning | warning | Dosage | 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`
dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded`
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()`

Differential View

This structure is derived from DosageDE

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
Slices for extension |  |  |  | Content/Rules for all slices
extension:asNeededFor |  | 0..* | R5 Dosage.asNeededFor | Dosage asNeededFor
value[x] |  |  |  |
coding |  | 0..0 |  | Code defined by a terminology system
text |  | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension |  |  |  | Content/Rules for all slices
modifierExtension:mindestabstandZwischenGaben |  | 0..1 | MindestabstandZwischenGabenEx | Mindestabstand zwischen Gaben
value[x] |  |  |  |
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
sequence |  | 0..0 |  | The order of the dosage instructions
additionalInstruction |  | 0..0 |  | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness"
patientInstruction |  | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing |  | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] |  | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
site |  | 0..0 |  | Body site to administer to
route |  | 0..0 |  | How drug should enter body
method |  | 0..0 |  | Technique for administering medication
doseAndRate |  | 0..1 | Element | Menge des verabreichten Medikaments
type |  | 0..0 |  | The kind of dose or rate specified
Slices for dose[x] |  |  |  | Content/Rules for all slices
dose[x]:doseQuantity |  | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
dose[x]:doseRange |  | 0..1 | Range | Amount of medication per dose
low |  | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value |  | 1..1 | decimal | Numerical value (with implicit precision)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
high |  | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
value |  | 1..1 | decimal | Numerical value (with implicit precision)
unit |  | 1..1 | string | Unit representation
system |  | 1..1 | uri | System that defines coded unit form
code |  | 1..1 | code | Coded form of the unit
rate[x] |  | 0..0 |  | Amount of medication per unit of time
maxDosePerAdministration |  | 0..0 |  | Upper limit on medication per administration
maxDosePerLifetime |  | 0..0 |  | Upper limit on medication per lifetime of the patient
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:asNeededFor | S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
text | S Σ | 1..1 | string | Plain text representation of the concept
Slices for modifierExtension | ?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url
modifierExtension:mindestabstandZwischenGaben | ?!S Σ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben"
value[x] | S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben
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 | Σ | 0..1 | decimal | Numerical value (with implicit precision)
comparator | ?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented.
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
text | S Σ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf'
patientInstruction | S Σ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten
timing | S Σ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll
asNeeded[x] | S Σ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe)
doseAndRate | S Σ | 0..1 | Element | Menge des verabreichten Medikaments
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
Slices for dose[x] | S Σ | 0..1 |  | Amount of medication per dose Slice: Unordered, Closed by type:$this
doseRange |  |  | Range |
doseQuantity |  |  | Quantity(SimpleQuantity) |
dose[x]:doseQuantity | S Σ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 | Σ | 0..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
dose[x]:doseRange | S Σ | 0..1 | Range | Amount of medication per dose
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
low | S Σ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
high | S Σ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required)
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 Σ | 1..1 | decimal | Numerical value (with implicit precision)
unit | S Σ | 1..1 | string | Unit representation
system | S Σ C | 1..1 | uri | System that defines coded unit form
code | S Σ | 1..1 | code | Coded form of the unit
maxDosePerPeriod | S Σ | 0..1 | Ratio | Maximale Dosis pro Zeitraum
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Dosage.extension:asNeededFor.​value[x] | Base | example | SNOMED CT Medication As Needed Reason Codes | 📦4.0.1 | FHIR Std.
Dosage.modifierExtension:mindestabstandZwischenGaben.​value[x].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std.
Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown
Dosage.doseAndRate.dose[x]:doseRange.​high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown

#### Constraints

Id | Grade | Path(s) | Description | Expression
AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true`
DosageDoseUnitSameCode | error | Dosage | 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 )`
DosageStructuredOrFreeText | error | Dosage | 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())) )`
DosageStructuredOrFreeTextWarning | warning | Dosage | 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 | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing 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() or asNeeded.ofType(boolean) = true or extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() )) )`
DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).exists(timing.exists() and doseAndRate.exists() and text.empty()) ) implies ( %resource.extension.where( url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta' ).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).exists() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).exists() ) )`
DosageWarnungViererschemaInText | warning | Dosage | 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()`
DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()`
DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. | `doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit )`
DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. | `doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()`
FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. | `( (%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).where(text.exists() and timing.empty() and doseAndRate.empty()).exists() ) implies ( ( %resource.ofType(MedicationRequest).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationDispense).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction' ).value = %resource.dosageInstruction.text ) ) or ( %resource.ofType(MedicationStatement).exists() and ( %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).empty() or %resource.extension.where( url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction' ).value = %resource.dosage.text ) ) )`
FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf 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 )`
FreeTextSingleDosageOnlyWarning | warning | Dosage | 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 )`
MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. | `maxDosePerPeriod.empty() or ( (maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or (maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd') )`
MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. | `maxDosePerPeriod.empty() or ( ( doseAndRate.dose.ofType(Quantity).exists() and doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit ) or ( doseAndRate.dose.ofType(Range).exists() and ( doseAndRate.dose.ofType(Range).low.empty() or ( doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit ) ) and ( doseAndRate.dose.ofType(Range).high.empty() or ( doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit ) ) ) )`
PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. | `( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.distinct().count() <= 1 ) and ( ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).patientInstruction.exists() ) implies ( ( %resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage ).all(patientInstruction.exists()) ) )`
VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. | `timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()`
VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. | `timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()`
dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true | `extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded`
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()`

This structure is derived from DosageDE

Summary

Mandatory: 0 element(15 nested mandatory elements)
Prohibited: 10 elements

Structures

This structure refers to these other structures:

- Timing dgMP (http://ig.fhir.de/igs/medication/StructureDefinition/TimingDgMP)
- SimpleQuantity (http://hl7.org/fhir/StructureDefinition/SimpleQuantity)

Other representations of profile: CSV, Excel, Schematron