Medication IG DE, published by HL7 Deutschland e.V.. This guide is not an authorized publication; it is the continuous build for version 2.0.0-alpha1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/hl7germany/medication-ig-de-r4/ and changes regularly. See the Directory of published versions
| Official URL: http://ig.fhir.de/igs/medication/StructureDefinition/DosageDgMP | Version: 2.0.0-alpha1 | |||
| Active as of 2026-07-29 | Computable Name: DosageDgMP | |||
Gibt an, wie das Medikament vom Patienten im Kontext dgMP eingenommen wird/wurde oder eingenommen werden soll.
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.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBothWarning, DosageDoseUnitSameCodeWarning, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor" | |
![]() ![]() ![]() ![]() |
0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Plain text representation of the concept |
![]() ![]() |
?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url |
![]() ![]() ![]() |
?!SΣ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben" | |
![]() ![]() ![]() ![]() |
S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) |
![]() ![]() |
SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' |
![]() ![]() |
SΣ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten |
![]() ![]() |
SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll |
![]() ![]() |
SΣ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) |
![]() ![]() |
SΣ | 0..1 | Element | Menge des verabreichten Medikaments |
![]() ![]() ![]() |
SΣ | 0..1 | Amount of medication per dose Slice: Unordered, Closed by type:$this | |
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Range | Amount of medication per dose |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() |
SΣ | 0..1 | Ratio | Maximale Dosis pro Zeitraum |
Documentation for this format | ||||
| 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].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseUnitSameCodeWarning | warning | Dosage | Die Dosiereinheit sollte ü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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()
))
)
|
| DosageStructuredRequiresBothWarning | warning | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, sollten 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').not()
|
| 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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..* | R5 Dosage.asNeededFor | Dosage asNeededFor | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
0..0 | Code defined by a terminology system | ||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Plain text representation of the concept | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..1 | MindestabstandZwischenGabenEx | Mindestabstand zwischen Gaben | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
0..0 | < | <= | >= | > - how to understand the value | ||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) | |
![]() ![]() |
0..0 | The order of the dosage instructions | ||
![]() ![]() |
0..0 | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" | ||
![]() ![]() |
0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten | |
![]() ![]() |
0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | |
![]() ![]() |
0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) | |
![]() ![]() |
0..0 | Body site to administer to | ||
![]() ![]() |
0..0 | How drug should enter body | ||
![]() ![]() |
0..0 | Technique for administering medication | ||
![]() ![]() |
0..1 | Element | Menge des verabreichten Medikaments | |
![]() ![]() ![]() |
0..0 | The kind of dose or rate specified | ||
![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() ![]() |
0..1 | Range | Amount of medication per dose | |
![]() ![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() |
0..0 | Amount of medication per unit of time | ||
![]() ![]() |
0..0 | Upper limit on medication per administration | ||
![]() ![]() |
0..0 | Upper limit on medication per lifetime of the patient | ||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.modifierExtension:mindestabstandZwischenGaben.value[x].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()))
)
|
| 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBothWarning, DosageDoseUnitSameCodeWarning, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor" | |
![]() ![]() ![]() ![]() |
0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Plain text representation of the concept |
![]() ![]() |
?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url |
![]() ![]() ![]() |
?!SΣ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben" | |
![]() ![]() ![]() ![]() |
S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) |
![]() ![]() |
SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' |
![]() ![]() |
SΣ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten |
![]() ![]() |
SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll |
![]() ![]() |
SΣ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) |
![]() ![]() |
SΣ | 0..1 | Element | Menge des verabreichten Medikaments |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
SΣ | 0..1 | Amount of medication per dose Slice: Unordered, Closed by type:$this | |
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Range | Amount of medication per dose |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() |
SΣ | 0..1 | Ratio | Maximale Dosis pro Zeitraum |
Documentation for this format | ||||
| 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].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseUnitSameCodeWarning | warning | Dosage | Die Dosiereinheit sollte ü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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()
))
)
|
| DosageStructuredRequiresBothWarning | warning | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, sollten 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').not()
|
| 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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBothWarning, DosageDoseUnitSameCodeWarning, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor" | |
![]() ![]() ![]() ![]() |
0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Plain text representation of the concept |
![]() ![]() |
?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url |
![]() ![]() ![]() |
?!SΣ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben" | |
![]() ![]() ![]() ![]() |
S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) |
![]() ![]() |
SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' |
![]() ![]() |
SΣ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten |
![]() ![]() |
SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll |
![]() ![]() |
SΣ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) |
![]() ![]() |
SΣ | 0..1 | Element | Menge des verabreichten Medikaments |
![]() ![]() ![]() |
SΣ | 0..1 | Amount of medication per dose Slice: Unordered, Closed by type:$this | |
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Range | Amount of medication per dose |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() |
SΣ | 0..1 | Ratio | Maximale Dosis pro Zeitraum |
Documentation for this format | ||||
| 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].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseUnitSameCodeWarning | warning | Dosage | Die Dosiereinheit sollte ü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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()
))
)
|
| DosageStructuredRequiresBothWarning | warning | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, sollten 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').not()
|
| 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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..* | R5 Dosage.asNeededFor | Dosage asNeededFor | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
0..0 | Code defined by a terminology system | ||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Plain text representation of the concept | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..1 | MindestabstandZwischenGabenEx | Mindestabstand zwischen Gaben | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
S | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
0..0 | < | <= | >= | > - how to understand the value | ||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) | |
![]() ![]() |
0..0 | The order of the dosage instructions | ||
![]() ![]() |
0..0 | Supplemental instruction or warnings to the patient - e.g. "with meals", "may cause drowsiness" | ||
![]() ![]() |
0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten | |
![]() ![]() |
0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | |
![]() ![]() |
0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) | |
![]() ![]() |
0..0 | Body site to administer to | ||
![]() ![]() |
0..0 | How drug should enter body | ||
![]() ![]() |
0..0 | Technique for administering medication | ||
![]() ![]() |
0..1 | Element | Menge des verabreichten Medikaments | |
![]() ![]() ![]() |
0..0 | The kind of dose or rate specified | ||
![]() ![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() ![]() |
0..1 | Range | Amount of medication per dose | |
![]() ![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() ![]() ![]() |
0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | decimal | Numerical value (with implicit precision) | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() ![]() |
0..0 | Amount of medication per unit of time | ||
![]() ![]() |
0..0 | Upper limit on medication per administration | ||
![]() ![]() |
0..0 | Upper limit on medication per lifetime of the patient | ||
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Dosage.modifierExtension:mindestabstandZwischenGaben.value[x].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()))
)
|
| 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBothWarning, DosageDoseUnitSameCodeWarning, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresBoth, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, DosageDoseQuantityAllowedFractions, DosageDoseUnitSameCode, DosageDoseValueDecimalNotation, DosageViererschemaInText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, MaxDoseOnlyWhenAsNeeded, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded, AsNeededSingleDosageOnly, AsNeededIdentical, AsNeededForIdentical, MindestabstandIdentical, MindestabstandUnitMatchesCode, MaxDosePerPeriodIdentical |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..* | (Complex) | Dosage asNeededFor URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor" | |
![]() ![]() ![]() ![]() |
0..1 | CodeableConcept | Value of extension Binding: SNOMEDCTMedicationAsNeededReasonCodes (example) | |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Plain text representation of the concept |
![]() ![]() |
?!Σ | 0..* | Extension | Extension Slice: Unordered, Open by value:url |
![]() ![]() ![]() |
?!SΣ | 0..1 | (Complex) | Mindestabstand zwischen Gaben URL: http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben" | |
![]() ![]() ![]() ![]() |
S | 1..1 | Duration | Mindestabstand zwischen zwei Gaben |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form Fixed Value: http://unitsofmeasure.org |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit Binding: Mindestabstand UnitsOfTime dgMP ValueSet (required) |
![]() ![]() |
SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' |
![]() ![]() |
SΣ | 0..1 | string | Ergänzende Anwendungshinweise für Patientinnen und Patienten |
![]() ![]() |
SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll |
![]() ![]() |
SΣ | 0..1 | boolean | Bedarfsdosierung (nur Ja/Nein-Angabe) |
![]() ![]() |
SΣ | 0..1 | Element | Menge des verabreichten Medikaments |
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
SΣ | 0..1 | Amount of medication per dose Slice: Unordered, Closed by type:$this | |
![]() ![]() ![]() ![]() |
Range | |||
![]() ![]() ![]() ![]() |
Quantity(SimpleQuantity) | |||
![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() |
SΣ | 0..1 | Range | Amount of medication per dose |
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | Low limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() ![]() ![]() ![]() |
SΣ | 0..1 | SimpleQuantity(4.0.1) | High limit Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) |
![]() ![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | string | Unit representation |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣC | 1..1 | uri | System that defines coded unit form |
![]() ![]() ![]() ![]() ![]() ![]() |
SΣ | 1..1 | code | Coded form of the unit |
![]() ![]() |
SΣ | 0..1 | Ratio | Maximale Dosis pro Zeitraum |
Documentation for this format | ||||
| 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].code | Base | required | Mindestabstand UnitsOfTime dgMP ValueSet | 📦2.0.0-alpha1 | This IG |
| 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 |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForIdentical | error | Dosage | Der Einnahmeanlass (asNeededFor) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. Mehrere Anlässe je Element sind zulässig, müssen dann aber in allen Elementen übereinstimmen. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).extension.where(
url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor'
).value.ofType(CodeableConcept).text.distinct().count()
)
|
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| AsNeededIdentical | error | Dosage | Das Bedarfskennzeichen (asNeededBoolean) muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).asNeeded.ofType(boolean).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(asNeeded.ofType(boolean).exists())
)
)
|
| AsNeededSingleDosageOnly | error | Dosage | Wenn eine Bedarfsdosierung mit asNeededBoolean = true ohne timing angegeben ist, muss genau ein Dosage-Element in der Ressource existieren. |
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(
asNeeded.ofType(boolean) = true and timing.empty()
).exists()
implies
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
|
| DosageDoseQuantityAllowedFractions | error | Dosage | Dosiswerte in doseQuantity oder doseRange dürfen nur ganzzahlig sein oder einen der folgenden Dezimalanteile verwenden: .25, .33, .5, .66 oder .75. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.all(
($this mod 1 = 0) or
($this mod 1 = 0.25) or
($this mod 1 = 0.33) or
($this mod 1 = 0.5) or
($this mod 1 = 0.66) or
($this mod 1 = 0.75)
)
)
)
|
| 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
)
|
| DosageDoseUnitSameCodeWarning | warning | Dosage | Die Dosiereinheit sollte ü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
)
|
| DosageDoseValueDecimalNotation | error | Dosage | Dosiswerte in doseQuantity oder doseRange müssen in einfacher Dezimalschreibweise mit maximal zwei Nachkommastellen angegeben werden. Die Exponentialschreibweise (z. B. 50e-2 statt 0.5) ist nicht zulässig. |
doseAndRate.all(
(
dose.ofType(Quantity).value.empty() or
dose.ofType(Quantity).value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).low.value.empty() or
dose.ofType(Range).low.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
and
(
dose.ofType(Range).high.value.empty() or
dose.ofType(Range).high.value.toString().matches('^[0-9]+([.][0-9]{1,2})?$')
)
)
|
| 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()
))
)
|
| DosageStructuredRequiresBothWarning | warning | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, sollten 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 (doseAndRate belegt, text leer, dazu timing oder eine reine Bedarfsdosierung), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(
text.empty() and doseAndRate.exists() and
(timing.exists() or asNeeded.ofType(boolean) = true)
)
)
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()
)
)
|
| DosageViererschemaInText | error | Dosage | Ein reines Viererschema (z. B. 1-0-1-0 oder 1-0-1-0 Stück) darf nicht als Freitext in Dosage.text angegeben werden, sondern ist strukturiert abzubilden. |
text.exists() implies text.matches('^\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?(\\s*[-–]\\s*\\d+([.,]\\d+)?(\\s*/\\s*\\d+)?){3}(\\s*[A-Za-zÄÖÜäöüß().]+)?\\s*$').not()
|
| 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
)
|
| MaxDoseOnlyWhenAsNeeded | error | Dosage | Eine Maximalmenge (maxDosePerPeriod) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. |
maxDosePerPeriod.empty() or asNeeded.ofType(boolean) = true
|
| MaxDosePerPeriodIdentical | error | Dosage | Die Maximalmenge (maxDosePerPeriod) gilt für die Gesamtmenge im Bezugszeitraum und muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.all(
numerator.value.hasValue() and numerator.unit.hasValue() and
denominator.value.hasValue() and denominator.code.hasValue()
)
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.numerator.unit.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.denominator.code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).maxDosePerPeriod.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(maxDosePerPeriod.exists())
)
)
|
| 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
)
)
)
)
|
| MindestabstandIdentical | error | Dosage | Der Mindestabstand zwischen Gaben muss über alle Dosage-Elemente einer Ressource identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.where($this.hasValue()).count()
=
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).count()
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).value.distinct().count() <= 1
)
and
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).code.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).exists()
)
)
)
|
| MindestabstandUnitMatchesCode | error | Dosage | Die Anzeigeeinheit des Mindestabstands (valueDuration.unit) muss zum UCUM-Code passen (z. B. 'Stunde(n)' nur mit code='h'). |
modifierExtension.where(
url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben'
).value.ofType(Duration).all(
(
code = 'min'
implies
(unit = 'Minute(n)' or unit = 'Minute' or unit = 'Minuten')
) and (
code = 'h'
implies
(unit = 'Stunde(n)' or unit = 'Stunde' or unit = 'Stunden')
)
)
|
| 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
Other representations of profile: CSV, Excel, Schematron