This page is part of the Medication IG DE (v1.0.2: Release) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions
| Official URL: http://ig.fhir.de/igs/medication/StructureDefinition/DosageDgMP | Version: 1.0.2 | |||
| Active as of 2025-10-29 | Computable Name: DosageDgMP | |||
Gibt an, wie das Medikament vom Patienten im Kontext dgMP eingenommen wird/wurde oder eingenommen werden soll.
Dieses Profil beschreibt eine technisch streng validierte Ausprägung der FHIR-Ressource Dosage für den deutschen Kontext und ist speziell für den Einsatz im dgMP-Prozess entwickelt worden. Das Profil enthält gezielte Einschränkungen und Vorgaben, um die technische Überprüfbarkeit und Konsistenz von Dosierungsangaben sicherzustellen.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints    Filter:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | 
|    text | SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' | 
|    timing | SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | 
|    doseAndRate | SΣ | 0..1 | Element | Menge des verabreichten Medikaments | 
|     Slices for dose[x] | Σ | 0..1 | SimpleQuantity | Amount of medication per dose Slice: Unordered, Closed by type:$this | 
|      dose[x]:doseQuantity | SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | 
|       unit | SΣ | 1..1 | string | Unit representation | 
|       system | SΣC | 1..1 | uri | System that defines coded unit form | 
|       code | SΣ | 1..1 | code | Coded form of the unit | 
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. | (%resource.ofType(MedicationRequest).dosageInstruction | ofType(MedicationDispense).dosageInstruction | ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
  %resource.dosageInstruction.doseAndRate.dose.ofType(Quantity).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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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. | (%resource.ofType(MedicationRequest).dosageInstruction | 
 ofType(MedicationDispense).dosageInstruction | 
 ofType(MedicationStatement).dosage).all(
  (timing.exists() implies doseAndRate.exists()) and
  (doseAndRate.exists() implies timing.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() | 
| 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
) | 
| 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:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    sequence | 0..0 | |||
|    additionalInstruction | 0..0 | |||
|    patientInstruction | 0..0 | |||
|    timing | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | |
|    asNeeded[x] | 0..0 | |||
|    site | 0..0 | |||
|    route | 0..0 | |||
|    method | 0..0 | |||
|    doseAndRate | 0..1 | Element | Menge des verabreichten Medikaments | |
|     type | 0..0 | |||
|     dose[x] | 0..1 | SimpleQuantity | Amount of medication per dose | |
|     Slices for dose[x] | Content/Rules for all slices | |||
|      dose[x]:doseQuantity | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
|       unit | S | 1..1 | string | Unit representation | 
|       system | S | 1..1 | uri | System that defines coded unit form | 
|       code | S | 1..1 | code | Coded form of the unit | 
|     rate[x] | 0..0 | |||
|    maxDosePerPeriod | 0..0 | |||
|    maxDosePerAdministration | 0..0 | |||
|    maxDosePerLifetime | 0..0 | |||
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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()
)
)
 | 
| 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
) | 
| Name | Flags | Card. | Type | Description & Constraints    Filter:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    id | 0..1 | string | Unique id for inter-element referencing | |
|    extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|    modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | 
|    text | SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' | 
|    timing | SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | 
|    doseAndRate | SΣ | 0..1 | Element | Menge des verabreichten Medikaments | 
|     id | 0..1 | string | Unique id for inter-element referencing | |
|     extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|     Slices for dose[x] | Σ | 0..1 | SimpleQuantity | Amount of medication per dose Slice: Unordered, Closed by type:$this | 
|      dose[x]:doseQuantity | SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | 
|       id | 0..1 | string | Unique id for inter-element referencing | |
|       extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|       value | Σ | 0..1 | decimal | Numerical value (with implicit precision) | 
|       unit | SΣ | 1..1 | string | Unit representation | 
|       system | SΣC | 1..1 | uri | System that defines coded unit form | 
|       code | SΣ | 1..1 | code | Coded form of the unit | 
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. | (%resource.ofType(MedicationRequest).dosageInstruction | ofType(MedicationDispense).dosageInstruction | ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
  %resource.dosageInstruction.doseAndRate.dose.ofType(Quantity).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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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. | (%resource.ofType(MedicationRequest).dosageInstruction | 
 ofType(MedicationDispense).dosageInstruction | 
 ofType(MedicationStatement).dosage).all(
  (timing.exists() implies doseAndRate.exists()) and
  (doseAndRate.exists() implies timing.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() | 
| 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
) | 
| 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:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | 
|    text | SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' | 
|    timing | SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | 
|    doseAndRate | SΣ | 0..1 | Element | Menge des verabreichten Medikaments | 
|     Slices for dose[x] | Σ | 0..1 | SimpleQuantity | Amount of medication per dose Slice: Unordered, Closed by type:$this | 
|      dose[x]:doseQuantity | SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | 
|       unit | SΣ | 1..1 | string | Unit representation | 
|       system | SΣC | 1..1 | uri | System that defines coded unit form | 
|       code | SΣ | 1..1 | code | Coded form of the unit | 
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. | (%resource.ofType(MedicationRequest).dosageInstruction | ofType(MedicationDispense).dosageInstruction | ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
  %resource.dosageInstruction.doseAndRate.dose.ofType(Quantity).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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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. | (%resource.ofType(MedicationRequest).dosageInstruction | 
 ofType(MedicationDispense).dosageInstruction | 
 ofType(MedicationStatement).dosage).all(
  (timing.exists() implies doseAndRate.exists()) and
  (doseAndRate.exists() implies timing.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() | 
| 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
) | 
| 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:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    sequence | 0..0 | |||
|    additionalInstruction | 0..0 | |||
|    patientInstruction | 0..0 | |||
|    timing | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | |
|    asNeeded[x] | 0..0 | |||
|    site | 0..0 | |||
|    route | 0..0 | |||
|    method | 0..0 | |||
|    doseAndRate | 0..1 | Element | Menge des verabreichten Medikaments | |
|     type | 0..0 | |||
|     dose[x] | 0..1 | SimpleQuantity | Amount of medication per dose | |
|     Slices for dose[x] | Content/Rules for all slices | |||
|      dose[x]:doseQuantity | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | |
|       unit | S | 1..1 | string | Unit representation | 
|       system | S | 1..1 | uri | System that defines coded unit form | 
|       code | S | 1..1 | code | Coded form of the unit | 
|     rate[x] | 0..0 | |||
|    maxDosePerPeriod | 0..0 | |||
|    maxDosePerAdministration | 0..0 | |||
|    maxDosePerLifetime | 0..0 | |||
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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()
)
)
 | 
| 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
) | 
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints    Filter:   | 
|---|---|---|---|---|
|   Dosage | C | 0..* | DosageDE | How the medication is/was taken or should be taken Constraints: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode, DosageWarnungViererschemaInText, FreeTextSingleDosageOnlyWarning, DosageStructuredOrFreeText, DosageStructuredRequiresGeneratedText, FreeTextSingleDosageOnly, FreeTextMatchesRenderedText | 
|    id | 0..1 | string | Unique id for inter-element referencing | |
|    extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|    modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | 
|    text | SΣ | 0..1 | string | Freitext-Dosierungsanweisungen, z. B. 'Maximal 3x täglich 1 Stück bei Bedarf' | 
|    timing | SΣ | 0..1 | TimingDgMP | Wann das Medikament verabreicht werden soll | 
|    doseAndRate | SΣ | 0..1 | Element | Menge des verabreichten Medikaments | 
|     id | 0..1 | string | Unique id for inter-element referencing | |
|     extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|     Slices for dose[x] | Σ | 0..1 | SimpleQuantity | Amount of medication per dose Slice: Unordered, Closed by type:$this | 
|      dose[x]:doseQuantity | SΣ | 0..1 | SimpleQuantity | Menge des Medikaments pro Dosis Binding: https://fhir.kbv.de/ValueSet/KBV_VS_SFHIR_BMP_DOSIEREINHEIT (required) | 
|       id | 0..1 | string | Unique id for inter-element referencing | |
|       extension | N | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | 
|       value | Σ | 0..1 | decimal | Numerical value (with implicit precision) | 
|       unit | SΣ | 1..1 | string | Unit representation | 
|       system | SΣC | 1..1 | uri | System that defines coded unit form | 
|       code | SΣ | 1..1 | code | Coded form of the unit | 
|  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 Stated | Unknown | 
| Id | Grade | Path(s) | Description | Expression | 
| DosageDoseUnitSameCode | error | Dosage | Die Dosiereinheit muss über alle Dosierungen gleich sein. | (%resource.ofType(MedicationRequest).dosageInstruction | ofType(MedicationDispense).dosageInstruction | ofType(MedicationStatement).dosage).all(
doseAndRate.exists() implies
  %resource.dosageInstruction.doseAndRate.dose.ofType(Quantity).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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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 | 
 ofType(MedicationDispense).dosageInstruction | 
 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. | (%resource.ofType(MedicationRequest).dosageInstruction | 
 ofType(MedicationDispense).dosageInstruction | 
 ofType(MedicationStatement).dosage).all(
  (timing.exists() implies doseAndRate.exists()) and
  (doseAndRate.exists() implies timing.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() | 
| 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
) | 
| 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