Medication IG DE - Local Development build (v1.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: http://ig.fhir.de/igs/medication/StructureDefinition/DosageDgMP | Version: 1.1.0 | |||
| Active as of 2026-07-06 | Computable Name: DosageDgMP | |||
Gibt an, wie das Medikament vom Patienten im Kontext dgMP eingenommen wird/wurde oder eingenommen werden soll.
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, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 |
![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() |
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 | 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 | 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].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
(
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code
).distinct().count() = 1
)
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredOrFreeTextWarning | warning | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresBoth | error | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing angegeben werden. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(timing.exists() implies doseAndRate.exists()) and
(doseAndRate.exists() implies (
timing.exists() or
asNeeded.ofType(boolean) = true or
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists()
))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DosageWarnungViererschemaInText | warning | Dosage | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. |
text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| FreeTextSingleDosageOnlyWarning | warning | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
| dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from DosageDE
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() |
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 | 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.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 |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 | |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() |
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 | 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 | |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..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].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
(
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code
).distinct().count() = 1
)
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredOrFreeTextWarning | warning | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresBoth | error | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing angegeben werden. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(timing.exists() implies doseAndRate.exists()) and
(doseAndRate.exists() implies (
timing.exists() or
asNeeded.ofType(boolean) = true or
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists()
))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DosageWarnungViererschemaInText | warning | Dosage | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. |
text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| FreeTextSingleDosageOnlyWarning | warning | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
| dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from DosageDE
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, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 |
![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() |
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 | 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 | 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].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
(
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code
).distinct().count() = 1
)
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredOrFreeTextWarning | warning | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresBoth | error | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing angegeben werden. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(timing.exists() implies doseAndRate.exists()) and
(doseAndRate.exists() implies (
timing.exists() or
asNeeded.ofType(boolean) = true or
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists()
))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DosageWarnungViererschemaInText | warning | Dosage | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. |
text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| FreeTextSingleDosageOnlyWarning | warning | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
| dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Differential View
This structure is derived from DosageDE
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 | |
![]() ![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() ![]() |
1..1 | string | Unit representation | |
![]() ![]() ![]() ![]() ![]() |
1..1 | uri | System that defines coded unit form | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Coded form of the unit | |
![]() ![]() |
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 | 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.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 |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, dos-1, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText, PatientInstructionIdentical, MaxDoseSameUnitAsDose, MaxDosePerPeriodOnly24hOr1d, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, VarFreqNoMaxDose, VarPeriodNoMindestabstand, AsNeededForRequiresAsNeeded |
![]() ![]() |
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 | |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Numerical value (with implicit precision) |
![]() ![]() ![]() ![]() ![]() |
?!Σ | 0..1 | code | < | <= | >= | > - how to understand the value Binding: QuantityComparator (required): How the Quantity should be understood and represented. |
![]() ![]() ![]() ![]() ![]() |
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 | 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 | |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..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].comparator | Base | required | QuantityComparator | 📍4.0.1 | FHIR Std. |
| Dosage.doseAndRate.dose[x]:doseQuantity | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.low | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Dosage.doseAndRate.dose[x]:doseRange.high | Base | required | https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT | Not State | Unknown |
| Id | Grade | Path(s) | Description | Expression |
| AsNeededForRequiresAsNeeded | error | Dosage | Ein Einnahmeanlass (asNeededFor) darf nur bei einer Bedarfsdosierung (asNeededBoolean=true) angegeben werden. Eine Bedarfsdosierung selbst benötigt keinen Einnahmeanlass. |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists() implies asNeeded.ofType(boolean) = true
|
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
(
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Quantity).code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).low.code |
(%resource.ofType(MedicationRequest).dosageInstruction | %resource.ofType(MedicationDispense).dosageInstruction | %resource.ofType(MedicationStatement).dosage).doseAndRate.dose.ofType(Range).high.code
).distinct().count() = 1
)
|
| DosageStructuredOrFreeText | error | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredOrFreeTextWarning | warning | Dosage | Die Dosierungsangabe darf entweder nur als Freitext oder nur als vollständige strukturierte Information erfolgen — eine Mischung ist nicht erlaubt. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(text.exists() and timing.empty() and doseAndRate.empty()) or
(text.empty() and (timing.exists() or doseAndRate.exists()))
)
|
| DosageStructuredRequiresBoth | error | Dosage | Wenn eine strukturierte Dosierungsangabe erfolgt, müssen sowohl timing als auch doseAndRate angegeben werden. Für reine Bedarfsdosierungen darf doseAndRate auch ohne timing angegeben werden. |
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage).all(
(timing.exists() implies doseAndRate.exists()) and
(doseAndRate.exists() implies (
timing.exists() or
asNeeded.ofType(boolean) = true or
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').exists()
))
)
|
| DosageStructuredRequiresGeneratedText | error | Dosage | Liegt eine strukturierte Dosierungsangabe vor (timing und doseAndRate belegt, text leer), muss die Extension GeneratedDosageInstructionsMeta vorhanden sein. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(timing.exists() and doseAndRate.exists() and text.empty())
)
implies
(
%resource.extension.where(
url = 'http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta'
).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).exists() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).exists()
)
)
|
| DosageWarnungViererschemaInText | warning | Dosage | Hinweis: In Dosage.text wurde ein Viererschema (z. B. 1-1-1-1) erkannt. Bitte prüfen, ob dies strukturiert abgebildet werden kann. |
text.exists() implies text.matches('.*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\s*\\d+\\s*[-–]\\d+.*').not()
|
| DoseRangeHighRequiredWhenLowPresent | error | Dosage | Wenn bei doseRange eine Untergrenze angegeben wird, muss auch eine Obergrenze angegeben werden. |
doseAndRate.dose.ofType(Range).low.empty() or doseAndRate.dose.ofType(Range).high.exists()
|
| DoseRangeLowAndHighSameUnit | error | Dosage | Unter- und Obergrenze einer variablen Einzeldosis müssen dieselbe Maßeinheit verwenden. |
doseAndRate.dose.ofType(Range).low.empty()
or doseAndRate.dose.ofType(Range).high.empty()
or (
doseAndRate.dose.ofType(Range).low.system = doseAndRate.dose.ofType(Range).high.system
and doseAndRate.dose.ofType(Range).low.code = doseAndRate.dose.ofType(Range).high.code
and doseAndRate.dose.ofType(Range).low.unit = doseAndRate.dose.ofType(Range).high.unit
)
|
| DoseRangeNoVarPeriod | warning | Dosage | Eine variable Einzeldosis und eine variable Periode sollten nicht gemeinsam verwendet werden. |
doseAndRate.dose.ofType(Range).empty() or timing.repeat.periodMax.empty()
|
| FreeTextMatchesRenderedText | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist (text vorhanden, timing und doseAndRate leer) UND die Extension renderedDosageInstruction befüllt ist, muss der Wert in dosageInstruction.text mit dem Wert in der Extension übereinstimmen. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).where(text.exists() and timing.empty() and doseAndRate.empty()).exists()
)
implies
(
(
%resource.ofType(MedicationRequest).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationRequest.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationDispense).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction'
).value = %resource.dosageInstruction.text
)
) or
(
%resource.ofType(MedicationStatement).exists() and
(
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).empty() or
%resource.extension.where(
url = 'http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationStatement.renderedDosageInstruction'
).value = %resource.dosage.text
)
)
)
|
| FreeTextSingleDosageOnly | error | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, darf nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| FreeTextSingleDosageOnlyWarning | warning | Dosage | Wenn eine Dosierung als reiner Freitext angegeben ist, soll nur genau ein Dosage-Element existieren. |
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).exists(text.exists() and timing.empty() and doseAndRate.empty())
)
implies
(
(%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).count() = 1
)
|
| MaxDosePerPeriodOnly24hOr1d | error | Dosage | maxDosePerPeriod ist nur mit einem Bezugszeitraum von 24 Stunden (24 h) oder 1 Tag (1 d) zulässig. Andere Perioden (z. B. maximal 3 alle 6 h) sind nicht erlaubt. |
maxDosePerPeriod.empty() or (
(maxDosePerPeriod.denominator.value = 24 and maxDosePerPeriod.denominator.code = 'h') or
(maxDosePerPeriod.denominator.value = 1 and maxDosePerPeriod.denominator.code = 'd')
)
|
| MaxDoseSameUnitAsDose | error | Dosage | maxDosePerPeriod muss die gleiche Einheit, den gleichen Code und das gleiche System wie doseQuantity verwenden. |
maxDosePerPeriod.empty() or (
(
doseAndRate.dose.ofType(Quantity).exists() and
doseAndRate.dose.ofType(Quantity).system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Quantity).code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Quantity).unit = maxDosePerPeriod.numerator.unit
) or (
doseAndRate.dose.ofType(Range).exists() and
(
doseAndRate.dose.ofType(Range).low.empty() or (
doseAndRate.dose.ofType(Range).low.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).low.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).low.unit = maxDosePerPeriod.numerator.unit
)
) and (
doseAndRate.dose.ofType(Range).high.empty() or (
doseAndRate.dose.ofType(Range).high.system = maxDosePerPeriod.numerator.system and
doseAndRate.dose.ofType(Range).high.code = maxDosePerPeriod.numerator.code and
doseAndRate.dose.ofType(Range).high.unit = maxDosePerPeriod.numerator.unit
)
)
)
)
|
| PatientInstructionIdentical | error | Dosage | Wenn patientInstruction in einer Ressource mit mehreren Dosierungen verwendet wird, muss das Feld in allen Dosage-Elementen identisch befüllt sein. |
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.distinct().count() <= 1
)
and
(
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).patientInstruction.exists()
)
implies
(
(
%resource.ofType(MedicationRequest).dosageInstruction |
%resource.ofType(MedicationDispense).dosageInstruction |
%resource.ofType(MedicationStatement).dosage
).all(patientInstruction.exists())
)
)
|
| VarFreqNoMaxDose | error | Dosage | Variable Frequenz und maximale Dosis pro Zeitraum dürfen nicht gemeinsam verwendet werden. |
timing.repeat.frequencyMax.empty() or maxDosePerPeriod.empty()
|
| VarPeriodNoMindestabstand | error | Dosage | Variable Periode und Mindestabstand zwischen zwei Einzelgaben dürfen nicht gemeinsam verwendet werden. |
timing.repeat.periodMax.empty() or modifierExtension.where(url='http://ig.fhir.de/igs/medication/StructureDefinition/MindestabstandZwischenGaben').empty()
|
| dos-1 | error | Dosage | AsNeededFor can only be set if AsNeeded is empty or true |
extension.where(url='http://hl7.org/fhir/5.0/StructureDefinition/extension-Dosage.asNeededFor').empty() or asNeeded.empty() or asNeeded
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from DosageDE
Other representations of profile: CSV, Excel, Schematron