Medication IG DE
1.0.4 - STU1

Medication IG DE, published by HL7 Deutschland e.V.. This guide is not an authorized publication; it is the continuous build for version 1.0.4 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/hl7germany/medication-ig-de-r4/ and changes regularly. See the Directory of published versions

## Übersicht der Timing & Dosierungs-Invarianten

Im Folgenden werden alle definierten Invarianten für das Timing-Profil aufgelistet, jeweils mit einer kurzen Beschreibung und der Begründung für ihre Existenz. Diese Regeln sorgen für eine konsistente und eindeutige Modellierung von Dosierungszeitpunkten im FHIR-Kontext.

Neben den Timing-bezogenen Regeln existieren weitere Invarianten auf Ebene des Dosage-Elements (Profil `DosageDE` bzw. `DosageDgMP`). Diese steuern, wie strukturierte und Freitext‑Dosierungen zulässig kombiniert werden und stellen Konsistenz bei Dosiereinheiten sicher. Alle aktuell definierten Constraints sind nachfolgend aufgeführt.

### Timing-bezogene Constraints

#### TimingFrequencyCount

Beschreibung:
Die Häufigkeit (`frequency`) muss mit der Anzahl der angegebenen Zeitpunkte (`timeOfDay` oder `when`) übereinstimmen, abhängig davon, welche Felder gesetzt sind.

Warum?
Diese Regel stellt sicher, dass die Anzahl der Dosierungen pro Periode korrekt mit den angegebenen Zeitpunkten übereinstimmt. So wird verhindert, dass widersprüchliche oder unklare Dosierungsangaben entstehen.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingFrequencyCount-Dispense-01-of-05 | 1 Stück |  |  | 2 | 1 | d |  |  | MORN |
MedicationDispense-INV-C-TimingFrequencyCount-Dispense-02-of-05 | 1 Stück |  |  | 2 | 1 | d |  | 08:00:00 |  |
MedicationDispense-INV-C-TimingFrequencyCount-Dispense-03-of-05 | 2 Stück |  |  | 3 | 1 | wk | tue, thu |  |  |
MedicationDispense-INV-C-TimingFrequencyCount-Dispense-04-of-05 | 1 Stück 2 Stück |  |  | 3 2 | 2 | d |  | 08:00:00, 20:00:00 10:00:00, 14:00:00, 22:00:00 |  |
MedicationDispense-INV-C-TimingFrequencyCount-Dispense-05-of-05 | 1 Stück |  |  | 3 | 1 | wk | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationRequest-INV-C-TimingFrequencyCount-Request-01-of-05 | 1 Stück |  |  | 2 | 1 | d |  |  | MORN |
MedicationRequest-INV-C-TimingFrequencyCount-Request-02-of-05 | 1 Stück |  |  | 2 | 1 | d |  | 08:00:00 |  |
MedicationRequest-INV-C-TimingFrequencyCount-Request-03-of-05 | 2 Stück |  |  | 3 | 1 | wk | tue, thu |  |  |
MedicationRequest-INV-C-TimingFrequencyCount-Request-04-of-05 | 1 Stück 2 Stück |  |  | 3 2 | 2 | d |  | 08:00:00, 20:00:00 10:00:00, 14:00:00, 22:00:00 |  |
MedicationRequest-INV-C-TimingFrequencyCount-Request-05-of-05 | 1 Stück |  |  | 3 | 1 | wk | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationStatement-INV-C-TimingFrequencyCount-Statement-01-of-05 | 1 Stück |  |  | 2 | 1 | d |  |  | MORN |
MedicationStatement-INV-C-TimingFrequencyCount-Statement-02-of-05 | 1 Stück |  |  | 2 | 1 | d |  | 08:00:00 |  |
MedicationStatement-INV-C-TimingFrequencyCount-Statement-03-of-05 | 2 Stück |  |  | 3 | 1 | wk | tue, thu |  |  |
MedicationStatement-INV-C-TimingFrequencyCount-Statement-04-of-05 | 1 Stück 2 Stück |  |  | 3 2 | 2 | d |  | 08:00:00, 20:00:00 10:00:00, 14:00:00, 22:00:00 |  |
MedicationStatement-INV-C-TimingFrequencyCount-Statement-05-of-05 | 1 Stück |  |  | 3 | 1 | wk | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}

#### TimingPeriodUnit

Beschreibung:
Wenn Wochentage (`dayOfWeek`) angegeben sind, muss die Zeiteinheit (`periodUnit`) "Woche" (`wk`) sein, andernfalls "Tag" (`d`).

Warum?
Dadurch wird sichergestellt, dass die Zeiteinheit zur Angabe der Dosierungsperiode konsistent zu den verwendeten Feldern passt und keine Missverständnisse bei der Interpretation entstehen.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingPeriodUnit-Dispense-01-of-05 | 1 Stück |  |  | 1 | 1 | wk |  |  | MORN |
MedicationDispense-INV-C-TimingPeriodUnit-Dispense-02-of-05 | 1 Stück |  |  | 1 | 1 | wk |  | 08:00:00 |  |
MedicationDispense-INV-C-TimingPeriodUnit-Dispense-03-of-05 | 2 Stück |  |  | 1 | 1 | d | tue |  |  |
MedicationDispense-INV-C-TimingPeriodUnit-Dispense-04-of-05 | 1 Stück |  |  | 2 | 1 | d | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationDispense-INV-C-TimingPeriodUnit-Dispense-05-of-05 | 1 Stück 2 Stück |  |  | 2 | 1 | wk d | mon, fri |  | MORN NOON | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationRequest-INV-C-TimingPeriodUnit-Request-01-of-05 | 1 Stück |  |  | 1 | 1 | wk |  |  | MORN |
MedicationRequest-INV-C-TimingPeriodUnit-Request-02-of-05 | 1 Stück |  |  | 1 | 1 | wk |  | 08:00:00 |  |
MedicationRequest-INV-C-TimingPeriodUnit-Request-03-of-05 | 2 Stück |  |  | 1 | 1 | d | tue |  |  |
MedicationRequest-INV-C-TimingPeriodUnit-Request-04-of-05 | 1 Stück |  |  | 2 | 1 | d | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationRequest-INV-C-TimingPeriodUnit-Request-05-of-05 | 1 Stück 2 Stück |  |  | 2 | 1 | wk d | mon, fri |  | MORN NOON | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationStatement-INV-C-TimingPeriodUnit-Statement-01-of-05 | 1 Stück |  |  | 1 | 1 | wk |  |  | MORN |
MedicationStatement-INV-C-TimingPeriodUnit-Statement-02-of-05 | 1 Stück |  |  | 1 | 1 | wk |  | 08:00:00 |  |
MedicationStatement-INV-C-TimingPeriodUnit-Statement-03-of-05 | 2 Stück |  |  | 1 | 1 | d | tue |  |  |
MedicationStatement-INV-C-TimingPeriodUnit-Statement-04-of-05 | 1 Stück |  |  | 2 | 1 | d | mon, fri |  | MORN | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationStatement-INV-C-TimingPeriodUnit-Statement-05-of-05 | 1 Stück 2 Stück |  |  | 2 | 1 | wk d | mon, fri |  | MORN NOON | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}

#### TimingOnlyOneType

Beschreibung:
Es darf pro Dosierung nur eine Art der Zeitangabe verwendet werden (z.B. ausschließlich `4-Schema`, `TimeOfDay`, `DayOfWeek`, `Interval`, Kombinationen wie `DayOfWeek+TimeOfDay` oder `Interval+TimeOfDay`).

Warum?
Diese Einschränkung verhindert Mehrdeutigkeiten und sorgt dafür, dass die Dosierungszeitpunkte eindeutig interpretierbar bleiben.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingOnlyOneType-Dispense-01-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | mon |  | EVE |
MedicationDispense-INV-C-TimingOnlyOneType-Dispense-02-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | NOON |
MedicationDispense-INV-C-TimingOnlyOneType-Dispense-03-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | fri | 07:00:00 |  |
MedicationDispense-INV-C-TimingOnlyOneType-Dispense-04-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 12:00:00 |  |
MedicationDispense-INV-C-TimingOnlyOneType-Dispense-05-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | wk d | tue |  |  |
MedicationRequest-INV-C-TimingOnlyOneType-Request-01-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | mon |  | EVE |
MedicationRequest-INV-C-TimingOnlyOneType-Request-02-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | NOON |
MedicationRequest-INV-C-TimingOnlyOneType-Request-03-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | fri | 07:00:00 |  |
MedicationRequest-INV-C-TimingOnlyOneType-Request-04-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 12:00:00 |  |
MedicationRequest-INV-C-TimingOnlyOneType-Request-05-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | wk d | tue |  |  |
MedicationStatement-INV-C-TimingOnlyOneType-Statement-01-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | mon |  | EVE |
MedicationStatement-INV-C-TimingOnlyOneType-Statement-02-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | NOON |
MedicationStatement-INV-C-TimingOnlyOneType-Statement-03-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d wk | fri | 07:00:00 |  |
MedicationStatement-INV-C-TimingOnlyOneType-Statement-04-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 12:00:00 |  |
MedicationStatement-INV-C-TimingOnlyOneType-Statement-05-of-05 | 1 Stück 1 Stück |  |  | 1 | 1 | wk d | tue |  |  |

#### TimingOnlyOneWhen

Beschreibung:
Es darf nicht derselbe Zeitraum des Tages (`when`) in mehreren Dosierungsinstanzen vorkommen.

Warum?
Dadurch wird verhindert, dass Dosierungen mehrfach für denselben Zeitraum angegeben werden, was zu Überdosierung oder Verwirrung führen könnte.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-07-of-10-C-TimingOnlyOneWhen-MD | 1 Stück 2 Stück |  |  | 1 2 | 2 | d |  |  | MORN MORN, EVE |
MedicationDispense-Invalid-Dosage-11-of-12-C-TimingOnlyOneWhen-MD | 1 Stück 2 Stück |  |  | 1 | 1 | d |  |  | MORN MORN, EVE |
MedicationRequest-INV-multiple-07-of-10-C-TimingOnlyOneWhen | 1 Stück 2 Stück |  |  | 1 2 | 2 | d |  |  | MORN MORN, EVE |
MedicationRequest-Invalid-Dosage-11-of-12-C-TimingOnlyOneWhen | 1 Stück 2 Stück |  |  | 1 | 1 | d |  |  | MORN MORN, EVE |
MedicationStatement-INV-multiple-07-of-10-C-TimingOnlyOneWhen-MS | 1 Stück 2 Stück |  |  | 1 2 | 2 | d |  |  | MORN MORN, EVE |
MedicationStatement-Invalid-Dosage-11-of-12-C-TimingOnlyOneWhen-MS | 1 Stück 2 Stück |  |  | 1 | 1 | d |  |  | MORN MORN, EVE |

#### TimingOnlyWhenOrTimeOfDay

Beschreibung:
Es darf nicht die Tageszeit `timeOfDay` und der Zeitraum des Tages `when` in mehreren Dosierungsinstanzen gleichzeitig vorkommen.

Warum?
Dadurch wird verhindert, dass Dosierungen gemischte Schemata anzeigen.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingOnlyWhenOrTimeOfDay-Dispense-01-of-01 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 | MORN |
MedicationRequest-INV-C-TimingOnlyWhenOrTimeOfDay-Request-01-of-01 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 | MORN |
MedicationStatement-INV-C-TimingOnlyWhenOrTimeOfDay-Statement-01-of-01 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 | MORN |

#### TimingOnlyOneTimeOfDay

Beschreibung:
Es darf nicht dieselbe Tageszeit (`timeOfDay`) in mehreren Dosierungsinstanzen vorkommen.

Warum?
Auch hier wird sichergestellt, dass Dosierungen nicht mehrfach für dieselbe Uhrzeit definiert werden, um Redundanzen und Fehler zu vermeiden.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-02-of-10-C-TimingOnlyOneTimeOfDay-MD | 2 Stück 1 Stück |  |  | 1 2 | 1 | d |  | 08:00:00 08:00:00, 14:00:00 |  |
MedicationDispense-INV-multiple-08-of-10-C-TimingOnlyOneTimeOfDay-MD | 1 Stück 2 Stück |  |  | 1 | 2 | d |  | 08:00:00 |  |
MedicationRequest-INV-multiple-02-of-10-C-TimingOnlyOneTimeOfDay | 2 Stück 1 Stück |  |  | 1 2 | 1 | d |  | 08:00:00 08:00:00, 14:00:00 |  |
MedicationRequest-INV-multiple-08-of-10-C-TimingOnlyOneTimeOfDay | 1 Stück 2 Stück |  |  | 1 | 2 | d |  | 08:00:00 |  |
MedicationStatement-INV-multiple-02-of-10-C-TimingOnlyOneTimeOfDay-MS | 2 Stück 1 Stück |  |  | 1 2 | 1 | d |  | 08:00:00 08:00:00, 14:00:00 |  |
MedicationStatement-INV-multiple-08-of-10-C-TimingOnlyOneTimeOfDay-MS | 1 Stück 2 Stück |  |  | 1 | 2 | d |  | 08:00:00 |  |

#### TimingOnlyOneDayOfWeek

Beschreibung:
Es darf nicht derselbe Wochentag (`dayOfWeek`) in mehreren Dosierungsinstanzen vorkommen.

Warum?
Dies verhindert doppelte Einträge für denselben Wochentag und stellt eine eindeutige Zuordnung sicher.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-Invalid-Dosage-12-of-12-C-TimingOnlyOneDayOfWeek-MD | 1 Stück 2 Stück |  |  | 1 | 1 | wk | mon |  |  |
MedicationRequest-Invalid-Dosage-12-of-12-C-TimingOnlyOneDayOfWeek | 1 Stück 2 Stück |  |  | 1 | 1 | wk | mon |  |  |
MedicationStatement-Invalid-Dosage-12-of-12-C-TimingOnlyOneDayOfWeek-MS | 1 Stück 2 Stück |  |  | 1 | 1 | wk | mon |  |  |

#### TimingOnlyOneBounds

Beschreibung:
Für die Dauer (`bounds` vom Typ `Duration`) dürfen pro Ressource nur ein Wert und ein Code vorkommen.

Warum?
So wird ausgeschlossen, dass mehrere unterschiedliche Zeiträume für eine Dosierung angegeben werden, was die Interpretation erschweren würde.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-10-of-10-C-TimingOnlyOneBounds-MD | 1 Stück 2 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  | {'system': 'http://unitsofmeasure.org', 'value': 2, 'code': 'wk', 'unit': 'Woche(n)'} {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationRequest-INV-multiple-10-of-10-C-TimingOnlyOneBounds | 1 Stück 2 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  | {'system': 'http://unitsofmeasure.org', 'value': 2, 'code': 'wk', 'unit': 'Woche(n)'} {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}
MedicationStatement-INV-multiple-10-of-10-C-TimingOnlyOneBounds-MS | 1 Stück 2 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  | {'system': 'http://unitsofmeasure.org', 'value': 2, 'code': 'wk', 'unit': 'Woche(n)'} {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Woche(n)'}

#### TimingIntervalOnlyOneFrequency

Beschreibung:
Bei Intervallangaben darf es nur eine Dosierungsinstanz geben.

Warum?
Dadurch wird verhindert, dass ein Intervall mehrfach beschrieben wird, was zu widersprüchlichen Angaben führen könnte.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-06-of-10-C-TimingIntervalOnlyOneFrequency-MD | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  |  |  |
MedicationRequest-INV-multiple-06-of-10-C-TimingIntervalOnlyOneFrequency | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  |  |  |
MedicationStatement-INV-multiple-06-of-10-C-TimingIntervalOnlyOneFrequency-MS | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  |  |  |

#### TimingOnlyOnePeriodForDayOfWeek

Beschreibung:
Wenn für einen Wochentag mehrere Einträge existieren, müssen sich deren Zeitangaben (`when`/`timeOfDay`) unterscheiden.

Warum?
Dies stellt sicher, dass für jeden Wochentag die Dosierungszeitpunkte eindeutig sind und keine Dopplungen auftreten.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-04-of-10-C-TimingOnlyOnePeriodForDayOfWeek-MD | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat |  | MORN, EVE MORN |
MedicationDispense-INV-multiple-05-of-10-C-TimingOnlyOnePeriodForDayOfWeek-MD | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat | 08:00:00, 12:00:00 08:00:00 |  |
MedicationDispense-INV-period-03-of-06-C-TimingOnlyOnePeriodForDayOfWeek-MD | 1 Stück 2 Stück |  |  | 1 | 1 | wk | fri | 14:00:00 |  |
MedicationDispense-INV-period-04-of-06-C-TimingOnlyOnePeriodForDayOfWeek-MD | 1 Stück 2 Stück |  |  | 1 | 1 | wk | sun |  | MORN |
MedicationRequest-INV-multiple-04-of-10-C-TimingOnlyOnePeriodForDayOfWeek | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat |  | MORN, EVE MORN |
MedicationRequest-INV-multiple-05-of-10-C-TimingOnlyOnePeriodForDayOfWeek | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat | 08:00:00, 12:00:00 08:00:00 |  |
MedicationRequest-INV-period-01-of-06-C-TimingOnlyOnePeriodForDayOfWeek | 1 Stück 2 Stück |  |  | 1 | 1 | wk | thu | 12:00:00 |  |
MedicationRequest-INV-period-02-of-06-C-TimingOnlyOnePeriodForDayOfWeek | 1 Stück 3 Stück |  |  | 1 | 1 | wk | sat |  | NIGHT |
MedicationStatement-INV-multiple-04-of-10-C-TimingOnlyOnePeriodForDayOfWeek-MS | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat |  | MORN, EVE MORN |
MedicationStatement-INV-multiple-05-of-10-C-TimingOnlyOnePeriodForDayOfWeek-MS | 1 Stück 2 Stück |  |  | 2 1 | 1 | d | mon, fri mon, sat | 08:00:00, 12:00:00 08:00:00 |  |
MedicationStatement-INV-period-05-of-06-C-TimingOnlyOnePeriodForDayOfWeek-MS | 1 Stück 3 Stück |  |  | 1 | 1 | wk | wed | 10:00:00 |  |
MedicationStatement-INV-period-06-of-06-C-TimingOnlyOnePeriodForDayOfWeek-MS | 1 Stück 2 Stück |  |  | 1 | 1 | wk | thu |  | NOON |

#### TimingOnlyOneTimeForInterval

Beschreibung:
Bei Intervallangaben mit Zeitpunkten (`when` oder `timeOfDay`) dürfen die Zeitangaben nicht mehrfach vorkommen und die Periodenangaben müssen eindeutig sein.

Warum?
Damit wird verhindert, dass für ein Intervall mehrere widersprüchliche Zeitpunkte oder Perioden definiert werden.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-multiple-09-of-10-C-TimingOnlyOneTimeForInterval-MD | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  | 08:00:00 20:00:00 |  |
MedicationDispense-Invalid-Dosage-09-of-12-C-TimingOnlyOneTimeForInterval-MD | 1 Stück 2 Stück |  |  | 1 2 | 1 2 | d |  |  | MORN NOON, EVE |
MedicationRequest-INV-multiple-09-of-10-C-TimingOnlyOneTimeForInterval | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  | 08:00:00 20:00:00 |  |
MedicationRequest-Invalid-Dosage-09-of-12-C-TimingOnlyOneTimeForInterval | 1 Stück 2 Stück |  |  | 1 2 | 1 2 | d |  |  | MORN NOON, EVE |
MedicationStatement-INV-multiple-09-of-10-C-TimingOnlyOneTimeForInterval-MS | 1 Stück 2 Stück |  |  | 1 | 2 3 | d |  | 08:00:00 20:00:00 |  |
MedicationStatement-Invalid-Dosage-09-of-12-C-TimingOnlyOneTimeForInterval-MS | 1 Stück 2 Stück |  |  | 1 2 | 1 2 | d |  |  | MORN NOON, EVE |

#### TimingBoundsUnitMatchesCode

Beschreibung:
Die Einheit (`boundsDuration.unit`) muss zum UCUM‑Code (`boundsDuration.code`) passen; z. B. `wk` nur mit „Woche(n)“, `d` nur mit „Tag(e)“, `mo` nur mit „Monat(e)“, `a` nur mit „Jahr(e)“.

Warum?
Verhindert widersprüchliche Angaben wie `code='wk'` mit `unit='Tag(e)'`.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingBoundsUnitMatchesCode-Dispense-02-of-03 | 1 Stück |  |  | 1 | 2 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Tag(e)'}
MedicationDispense-INV-C-TimingBoundsUnitMatchesCode-Dispense-05-of-06 | 1 Stück |  |  | 1 | 1 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 2, 'code': 'mo', 'unit': 'Jahr(e)'}
MedicationRequest-INV-C-TimingBoundsUnitMatchesCode-Request-01-of-03 | 1 Stück |  |  | 1 | 2 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Tag(e)'}
MedicationRequest-INV-C-TimingBoundsUnitMatchesCode-Request-04-of-06 | 1 Stück |  |  | 1 | 1 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 5, 'code': 'd', 'unit': 'Woche(n)'}
MedicationStatement-INV-C-TimingBoundsUnitMatchesCode-Statement-03-of-03 | 1 Stück |  |  | 1 | 2 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 3, 'code': 'wk', 'unit': 'Tag(e)'}
MedicationStatement-INV-C-TimingBoundsUnitMatchesCode-Statement-06-of-06 | 1 Stück |  |  | 1 | 1 | d |  |  |  | {'system': 'http://unitsofmeasure.org', 'value': 1, 'code': 'a', 'unit': 'Monat(e)'}

#### TimingSingleDosageForTimeOfDay

Beschreibung:
Wenn nur `timeOfDay` verwendet wird und täglich dosiert wird, sind mehrere Tageszeiten in einem einzigen `Dosage`‑Element zu modellieren. Mehrere `Dosage`‑Elemente sind nur zulässig, wenn sich die Dosis (Wert) unterscheidet.

Warum?
Verhindert unnötige Aufsplitterung gleichartiger Dosierungen und sorgt für eine klare, eindeutige Modellierung der Tageszeiten.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingSingleDosageForTimeOfDay-Dispense-02-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  |
MedicationRequest-INV-C-TimingSingleDosageForTimeOfDay-Request-01-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  |
MedicationStatement-INV-C-TimingSingleDosageForTimeOfDay-Statement-03-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  | 08:00:00 20:00:00 |  |

#### TimingSingleDosageForWhen

Beschreibung:
Wenn nur `when` verwendet wird und täglich dosiert wird, sind mehrere Zeitabschnitte des Tages in einem einzigen `Dosage`‑Element zu modellieren. Mehrere `Dosage`‑Elemente sind nur zulässig, wenn sich die Dosis (Wert) unterscheidet.

Warum?
Verhindert unnötige Aufsplitterung gleichartiger Dosierungen und sorgt für eine klare, eindeutige Modellierung der Tagesabschnitte.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-TimingSingleDosageForWhen-Dispense-02-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | MORN EVE |
MedicationRequest-INV-C-TimingSingleDosageForWhen-Request-01-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | MORN EVE |
MedicationStatement-INV-C-TimingSingleDosageForWhen-Statement-03-of-03 | 1 Stück 1 Stück |  |  | 1 | 1 | d |  |  | MORN EVE |

### Dosage-bezogene Constraints

Die folgenden Invarianten beziehen sich auf das Dosage-Element insgesamt (nicht nur auf `timing.repeat`). Sie wirken über alle Dosierungsinstanzen einer Ressource (z. B. alle `dosageInstruction` eines `MedicationRequest`).

#### DosageStructuredOrFreeText / DosageStructuredOrFreeTextWarning

Beschreibung:
Eine Dosierungsangabe darf entweder vollständig strukturiert (mit `timing` und/oder `doseAndRate`) oder ausschließlich als Freitext (`text`) vorliegen - eine Mischung ist nicht zulässig.

Hinweis zur Ausprägung:
Im generischen Profil `DosageDE` ist dies als Warnung (`warning`) modelliert (`DosageStructuredOrFreeTextWarning`), im dgMP‑Spezialprofil (`DosageDgMP`) als Fehler (`error`, Invariante `DosageStructuredOrFreeText`). Implementierungen sollten die strukturierte Variante bevorzugen und Freitext nur verwenden, wenn eine strukturierte Abbildung nicht möglich ist.

Warum?
Verhindert widersprüchliche oder doppelte Informationsquellen (Freitext vs. Struktur) und erleichtert automatische Verarbeitung (z. B. Generierung patientenverständlicher Texte).

Beispiele (Fehlerfall – Mischform aus Text und Struktur):

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-Dosage-W-DosageStructuredOrFreeTextWarning-02-of-03 |  |  |  |  |  |  |  |  |  |
MedicationDispense-INV-C-DosageStructuredOrFreeText-Dispense-01-of-02 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationDispense-INV-C-DosageStructuredOrFreeText-Dispense-02-of-02 | 2 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationRequest-Dosage-W-DosageStructuredOrFreeTextWarning-01-of-03 |  |  |  |  |  |  |  |  |  |
MedicationRequest-INV-C-DosageStructuredOrFreeText-Request-01-of-02 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationRequest-INV-C-DosageStructuredOrFreeText-Request-02-of-02 | 2 Stück |  |  |  |  |  |  |  |  |
MedicationStatement-Dosage-W-DosageStructuredOrFreeTextWarning-03-of-03 |  |  |  |  |  |  |  |  |  |
MedicationStatement-INV-C-DosageStructuredOrFreeText-Statement-01-of-02 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationStatement-INV-C-DosageStructuredOrFreeText-Statement-02-of-02 | 2 Stück |  |  |  |  |  |  |  |  |

Gültige Varianten (Warnungskontext – nur Text oder nur Struktur):

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-Dosage-W-DosageStructuredOrFreeTextWarning-02-of-03 |  |  |  |  |  |  |  |  |  |
MedicationRequest-Dosage-W-DosageStructuredOrFreeTextWarning-01-of-03 |  |  |  |  |  |  |  |  |  |
MedicationStatement-Dosage-W-DosageStructuredOrFreeTextWarning-03-of-03 |  |  |  |  |  |  |  |  |  |

#### DosageStructuredRequiresBoth

Beschreibung:
Wenn eine strukturierte Dosierung angegeben wird, müssen sowohl zeitliche Angaben (`timing`) als auch die Dosis (`doseAndRate`) vorhanden sein.

Warum?
Stellt sicher, dass eine strukturierte Dosierung hinreichend vollständig ist, um automatisiert interpretiert werden zu können (Zeit + Menge).

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-DosageStructuredRequiresBoth-Dispense-01-of-02 |  |  |  | 1 | 1 | d |  |  | MORN |
MedicationDispense-INV-C-DosageStructuredRequiresBoth-Dispense-02-of-02 | 1 Stück |  |  |  |  |  |  |  |  |
MedicationRequest-INV-C-DosageStructuredRequiresBoth-Request-01-of-02 |  |  |  | 1 | 1 | d |  |  | MORN |
MedicationRequest-INV-C-DosageStructuredRequiresBoth-Request-02-of-02 | 1 Stück |  |  |  |  |  |  |  |  |
MedicationStatement-INV-C-DosageStructuredRequiresBoth-Statement-01-of-02 |  |  |  | 1 | 1 | d |  |  | MORN |
MedicationStatement-INV-C-DosageStructuredRequiresBoth-Statement-02-of-02 | 1 Stück |  |  |  |  |  |  |  |  |

#### DosageStructuredRequiresGeneratedText

Beschreibung:
Liegt eine strukturierte Dosierung vor (strukturierte Elemente befüllt, Freitext leer), muss die Extension `GeneratedDosageInstructionsMeta` existieren sowie genau eine der FHIR R5 RenderedDosageInstruction-Extensions passend zur Ressource (MedicationRequest/Dispense/Statement).

Warum?
Dokumentiert, dass ein (maschinen-)generierter, patientenlesbarer Dosierungstext verfügbar ist und stellt die Nachvollziehbarkeit der Generierung sicher.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-DosageStructuredRequiresGeneratedText-Dispense-01-of-01 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationRequest-INV-C-DosageStructuredRequiresGeneratedText-Request-01-of-01 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |
MedicationStatement-INV-C-DosageStructuredRequiresGeneratedText-Statement-01-of-01 | 1 Stück |  |  | 1 | 1 | d |  |  | MORN |

#### FreeTextMatchesRenderedText

Beschreibung:
Wenn eine Dosierung als reiner Freitext angegeben ist (nur `text`, kein `timing`/`doseAndRate`), muss der Wert in `dosageInstruction.text` exakt mit dem Wert in der Extension `renderedDosageInstruction` übereinstimmen.

Warum?
Verhindert Inkonsistenzen zwischen der Freitextangabe und der gerenderten Dosierungsanweisung. Dies stellt sicher, dass der vom Anwender eingegebene Freitext konsistent in der Extension für die Darstellung übernommen wird.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-FreeTextMatchesRenderedText-Dispense-01-of-01 |  |  |  |  |  |  |  |  |  |
MedicationRequest-INV-C-FreeTextMatchesRenderedText-Request-01-of-01 |  |  |  |  |  |  |  |  |  |
MedicationStatement-INV-C-FreeTextMatchesRenderedText-Statement-01-of-01 |  |  |  |  |  |  |  |  |  |

#### FreeTextSingleDosageOnly

Beschreibung:
Wenn eine Dosierung als reiner Freitext angegeben ist (nur `text`, kein `timing`/`doseAndRate`), darf in der Ressource insgesamt nur genau ein `Dosage`‑Eintrag vorkommen.

Warum?
Verhindert widersprüchliche oder doppelte Freitextangaben, die nicht automatisch zusammengeführt werden können. Fördert eindeutige, konsolidierte Freitext‑Anweisungen, wenn keine strukturierte Modellierung erfolgt.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-FreeTextSingleDosageOnly-Dispense-01-of-01 |  |  |  |  |  |  |  |  |  |
MedicationRequest-INV-C-FreeTextSingleDosageOnly-Request-01-of-01 |  |  |  |  |  |  |  |  |  |
MedicationStatement-INV-C-FreeTextSingleDosageOnly-Statement-01-of-01 |  |  |  |  |  |  |  |  |  |

#### DosageDoseUnitSameCode

Beschreibung:
Alle Dosierungsinstanzen innerhalb derselben Ressource müssen dieselbe Dosiereinheit (Code) verwenden.

Warum?
Verhindert inkonsistente oder schwer vergleichbare Einträge (z. B. Mischung von Einheiten wie Stück vs. mg) und reduziert Interpretationsfehler bei Summierung oder Darstellung.

Folgende Beispiele sind nicht valide, da sie den Constraint brechen:

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-INV-C-DosageDoseUnitSameCode-Dispense-01-of-01 | 1 Stück 500 mg |  |  | 1 | 1 | d |  |  | MORN EVE |
MedicationRequest-INV-C-DosageDoseUnitSameCode-Request-01-of-01 | 1 Stück 500 mg |  |  | 1 | 1 | d |  |  | MORN EVE |
MedicationStatement-INV-C-DosageDoseUnitSameCode-Statement-01-of-01 | 1 Stück 500 mg |  |  | 1 | 1 | d |  |  | MORN EVE |

#### DosageWarnungViererschemaInText

Beschreibung:
Warnung, wenn ein klassisches 4-Schema (z. B. Darstellung wie "1-0-1-0") im Freitext angegeben wird, obwohl eine strukturierte Abbildung möglich wäre.

Warum?
Ermutigt zur strukturierten Modellierung der Einnahmezeiten anstelle rein schematischer Textdarstellungen, verbessert maschinelle Auswertbarkeit und Textgenerierung.

Gültige Beispiele (Warnungskontext – Freitext enthält 4-Schema):

File | doseQuantity | duration | durationUnit | frequency | period | periodUnit | Day of Week | Time Of Day | when | bounds[x]
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
MedicationDispense-Warning-Dosage-W-DosageWarnungViererschemaInText-02-of-03 |  |  |  |  |  |  |  |  |  |
MedicationRequest-Warning-Dosage-W-DosageWarnungViererschemaInText-01-of-03 |  |  |  |  |  |  |  |  |  |
MedicationStatement-Warning-Dosage-W-DosageWarnungViererschemaInText-03-of-03 |  |  |  |  |  |  |  |  |  |