Medication IG DE
2.0.0-ballot - ballot

Medication IG DE, published by HL7 Deutschland e.V.. This guide is not an authorized publication; it is the continuous build for version 2.0.0-ballot 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

Release Notes

Release: 2.0.0-ballot

Diese Version erweitert das dgMP-Dosiermodell erheblich: Dosierungen, die bisher als „nicht unterstützt" geführt waren, sind jetzt strukturiert abbildbar. Der Eintrag fasst alle Änderungen seit 1.0.5 zusammen; die dazwischenliegenden Versionen 1.0.6 und 1.0.7 waren technisch getrieben und ohne fachliche Änderung.

Version des Textgenerierungs-Algorithmus: 2.0.0-ballot. Der Algorithmus wird in hl7germany/dgMP-DosageTextgenerierung-Skript gepflegt; seine Änderungen stehen im dortigen CHANGELOG.md.

Neu unterstützte Dosierangaben

  • Variable Einzeldosis über doseRange — „1 bis 2 Stück" statt eines festen Werts. Untergrenze 0 ist zulässig, Obergrenze ist Pflicht. Siehe Variable Angaben.
  • Variable Frequenz und Periode über frequencyMax und periodMax — „1 bis 2 x täglich", „alle 2 bis 3 Tage". Bei einer reinen Intervallangabe darf von beiden nur eine größer als 1 sein (TimingFreqOrPeriodGtOne): „2 x alle 8 Stunden" wird als „alle 4 Stunden" ausgedrückt, und beide Achsen zugleich zu variieren ist damit ebenfalls ausgeschlossen. Im generischen DE-Profil löst die Regel eine Warnung aus.
  • Bedarfsmedikation über asNeededBoolean, mit Anlass (asNeededFor), Mindestabstand zwischen zwei Gaben und Maximalmenge (maxDosePerPeriod). Mehrere Anlässe sind zulässig und werden als Aufzählung wiedergegeben; der Mindestabstand ist der reinen Bedarfsdosierung vorbehalten. Siehe Schema für Bedarfsmedikation.
  • Anwendungszeitraum über boundsPeriod — Start- und/oder Enddatum, optional mit Uhrzeit und Zeitzone. Siehe Angabe von Start- und Enddatum.
  • Zusätzliche Instruktionen über patientInstruction für Hinweise, die sich nicht strukturiert abbilden lassen. Siehe Zusätzliche Instruktionen.
  • Kombination aus Zeitintervall und Tageszeiten- beziehungsweise Uhrzeiten-Bezug — nicht tägliche Perioden (d, wk, mo) zusammen mit when oder timeOfDay. Siehe Schema für Kombinationen von Zeitintervallen.
  • Rückwärtskompatibilität für redundante Legacy-Angaben: Bei Wochentagsschemata bleiben frequency sowie das Paar period = 1, periodUnit = wk zulässig. Sie begründen kein Intervallschema und verändern den erzeugten Text nicht.

Damit entfallen 20 Beispiele aus der Liste nicht unterstützter Dosierkonfigurationen: asNeededBoolean, asNeededCodeableConcept, doseRange, maxDosePerPeriod und boundsPeriod.

Neue Artefakte

  • Extensions: MinimumIntervalBetweenAdministrations, Backport von asNeededFor aus R5
  • ValueSet: MindestabstandUnitsOfTimeDgMP
  • Seiten: Bedarfsmedikation, Variable Angaben, Start- und Enddatum, Zusätzliche Instruktionen

Invarianten

Neu sind 31 Invarianten; sie sichern die oben genannten Angaben ab. Was jede einzelne prüft, beschreibt die Übersicht der Timing- & Dosierungs-Invarianten.

  • DosageDgMP: AsNeededForIdentical, AsNeededForRequiresAsNeeded, AsNeededIdentical, AsNeededSingleDosageOnly, DosageDoseQuantityAllowedFractions, DosageDoseValueDecimalNotation, DosageDoseValuePositive, DosageFourSlotPatternInText, DoseRangeHighRequiredWhenLowPresent, DoseRangeLowAndHighSameUnit, DoseRangeNoVarPeriod, MaxDoseOnlyPureAsNeeded, MaxDosePerPeriodOnly24hOr1d, MaxDoseSameUnitAsDose, MinimumIntervalOnlyPureAsNeeded, MinimumIntervalUnitMatchesCode, PatientInstructionIdentical
  • TimingDgMP: TimingBoundsDurationOnlyWholeNumber, TimingFreqOrPeriodGtOne, TimingPeriodOnlyWholeNumber, TimingVarFreqGtMin, TimingVarPeriodGtMin
  • DosageDE (Warnungen): DosageDoseUnitSameCodeWarning, DosageDoseValuePositiveWarning, DosageFourSlotPatternInTextWarning, DosageStructuredRequiresBothWarning, dos-1
  • TimingDE (Warnungen): TimingBoundsUnitMatchesCodeWarning, TimingFreqOrPeriodGtOneWarning, TimingSingleDosageForTimeOfDayWarning, TimingSingleDosageForWhenWarning

Geändert haben sich die folgenden bestehenden Regeln. Ihr Wortlaut steht hier, weil die Übersichtsseite nur den aktuellen Stand zeigt, nicht den Unterschied zu 1.0.5:

  • TimingOnlyOneType (TimingDgMP)
    • Bei dayOfWeek sind frequency sowie das Paar period = 1, periodUnit = wk als redundante Legacy-Angaben zulässig; zuvor führten sie zu einem Fehler. Jede andere Periode ist mit dayOfWeek nicht kombinierbar.
    • Die Kombination aus Zeitintervall und Tageszeiten- beziehungsweise Uhrzeiten-Bezug ist als eigenes Schema erfasst.
    • Eine variable Frequenz (frequencyMax) bleibt der reinen Intervallangabe vorbehalten; konkrete Zeitpunkte und Wochentage legen die Zahl der Gaben bereits fest.
  • TimingPeriodUnit (TimingDgMP)
    • periodUnit darf nur zusammen mit period angegeben werden. Bei dayOfWeek ist ausschließlich die redundante Wochenangabe zulässig; bei when oder timeOfDay ohne dayOfWeek sind Tage, Wochen oder Monate zulässig. Zuvor war dort ausschließlich d erlaubt, wodurch wöchentliche und monatliche Kombinationen nicht abbildbar waren.
  • TimingSingleDosageForTimeOfDay und TimingSingleDosageForWhen (TimingDgMP)
    • Geprüft wird jetzt, ob jedes Dosage-Element eine eindeutige vollständige Dosis einschließlich Datentyp trägt. Zuvor genügte es, dass überhaupt zwei unterschiedliche Werte vorkamen — Ressourcen mit den Dosen 1, 1 und 2 wurden dadurch fälschlich akzeptiert.
  • TimingFrequencyCount (TimingDgMP)
    • Beschreibung präzisiert, Ausdruck unverändert: frequency ist bei when, timeOfDay und dayOfWeek optional, muss bei Angabe aber der Anzahl der konkreten Anwendungen entsprechen.
  • DosageWarnungViererschemaInText (DosageDE) — umbenannt in DosageFourSlotPatternInTextWarning
    • Der Schlüssel trug als einziger einen deutschen Wortstamm und zudem „Warnung" statt des sonst verwendeten Warning-Suffixes. Er erscheint in Validierungsmeldungen; Werkzeuge, die darauf abstellen, müssen angepasst werden. Der Ausdruck ist unverändert.
  • TimingVarFreqGtMin (TimingDgMP)
    • Vergleicht frequency und frequencyMax jetzt numerisch über .value.toInteger(). Zuvor verglich der Ausdruck die Werte als Zeichenketten: „9 bis 10 x täglich" galt dadurch als ungültig, weil "9" < "10" lexikographisch nicht zutrifft. Betroffen war jede variable Frequenz, deren Ober- und Untergrenze unterschiedlich viele Stellen haben.
  • TimingOnlyOneWhen, TimingOnlyOneTimeOfDay, TimingOnlyOneDayOfWeek, TimingOnlyOneTimeForInterval und TimingOnlyWhenOrTimeOfDay (TimingDgMP)
    • Die Schema-Erkennung in der Vorbedingung setzt frequency, period und periodUnit nicht mehr voraus. Zuvor griffen diese Regeln nur, wenn alle drei Felder belegt waren — seit sie optionale Legacy-Angaben sind, wären Ressourcen ohne sie ungeprüft geblieben. Die Regeln erfassen damit alle Ressourcen des jeweiligen Schemas.
  • DosageStructuredRequiresBoth und DosageStructuredRequiresGeneratedText (DosageDgMP)
    • Beide berücksichtigen jetzt die reine Bedarfsmedikation: doseAndRate darf ohne timing angegeben werden, wenn asNeededBoolean = true oder ein Anlass gesetzt ist, und eine solche Dosierung verlangt ebenfalls die Extension GeneratedDosageInstructionsMeta. Zuvor galt eine Dosierung ohne timing als unvollständig.
  • TimingOnlyOneBounds (TimingDgMP)
    • Deckt zusätzlich boundsPeriod ab: Start und Ende müssen über alle Dosage-Elemente gleich belegt sein. Zuvor prüfte die Regel nur boundsDuration, obwohl die Textgenerierung den Zeitrahmen in beiden Fällen ausschließlich aus dem ersten Element liest. Ebenso gilt jetzt: Entweder tragen alle Elemente einen Zeitrahmen oder keines.
  • TimingOnlyOnePeriodForDayOfWeek (TimingDgMP)
    • Von Timing.repeat auf Timing verschoben, um einen Überlauf im IG Publisher bei der Erzeugung der Excel-Tabellen zu umgehen. Der Ausdruck wertet ohnehin die gesamte Ressource aus; inhaltlich ändert sich nichts.
  • MinimumIntervalOnlyPureAsNeeded (DosageDgMP) — neu
    • modifierExtension[MinimumIntervalBetweenAdministrations] ist nur zusammen mit asNeededBoolean = true und ohne timing zulässig.
    • Ein strukturierter Rhythmus legt den Abstand zwischen zwei Gaben bereits fest. Eine zweite, schwächere Untergrenze daneben lässt offen, welche Angabe gilt — „alle 8 Stunden, mit mindestens 6 Stunden Abstand" ist als Anweisung widersprüchlich.

Sonstiges

  • Die Spezifikation der Dosis-Textgenerierung liegt nicht mehr im IG. Die Seite Dosis Textgenerierung verweist auf das externe Repository; der Build bezieht den Algorithmus als über Tag und Prüfsumme gepinnte Version.
  • Die Seiten der Dosierschemata beschreiben jetzt durchgängig, welche frequency-, period- und periodUnit-Angaben optional zulässig sind und dass sie den erzeugten Text nicht verändern.

Release: 1.0.7

What's Changed

  • Fehlerkorrektur in der package.json
    • Behebung eines Fehlers im Feld url, der durch den Tooling-Workaround bei der Nutzung der alten SUSHI-Version entstanden ist.
    • Keine fachlichen Änderungen; das Release stellt lediglich sicher, dass die Abhängigkeiten unverändert zu Version 1.0.4 bleiben.

Release: 1.0.6

What's Changed

  • Technischer Rebuild von 1.0.5
    • Neu gebaut mit SUSHI 3.18.1, um zu verhindern, dass das Paket hl7.fhir.uv.xver-r5.r4#0.1.0 automatisch als Abhängigkeit aufgenommen wird.
    • Keine fachlichen Änderungen; das Release stellt lediglich sicher, dass die Abhängigkeiten unverändert zu Version 1.0.4 bleiben.

Release: 1.0.5

What's Changed

  • Fix für Timing-Schema-Mischungen mit dayOfWeek:
    • TimingDgMP: TimingOnlyWhenOrTimeOfDay
  • Erweiterte Negativbeispiele zur Absicherung gegen Schema-Mischung

Details

  • TimingOnlyWhenOrTimeOfDay (TimingDgMP)
    • Vom Fix betroffene Ressourcentypen: MedicationRequest, MedicationDispense, MedicationStatement
    • Fix: Die Einschränkung dayOfWeek.empty() wurde aus der Schema-Erkennung entfernt. Dadurch wird jetzt auch der Fall korrekt invalidiert, in dem innerhalb einer Ressource dayOfWeek + timeOfDay und dayOfWeek + when gemischt werden.
  • Testabdeckung für Mischformen von Dosierschemata
    • Für TimingOnlyWhenOrTimeOfDay wurden Negativbeispiele für alle drei Ressourcentypen um Fälle mit gesetztem dayOfWeek ergänzt.
    • Für TimingOnlyOneType wurden zusätzliche Negativbeispiele ergänzt, um Mischungen zusammengesetzter Schemata explizit abzudecken:
      • reines dayOfWeek gemischt mit dayOfWeek + when
      • reines dayOfWeek gemischt mit dayOfWeek + timeOfDay
      • reines Interval gemischt mit Interval + when
      • reines Interval gemischt mit Interval + timeOfDay
      • dayOfWeek + when gemischt mit reinem Interval
      • dayOfWeek + timeOfDay gemischt mit reinem Interval
      • dayOfWeek + when gemischt mit Interval + when
      • dayOfWeek + timeOfDay gemischt mit Interval + timeOfDay

Release: 1.0.4

What's Changed

  • Gefixte Invarianten:
    • DosageDE: DosageStructuredOrFreeTextWarning, DosageStructuredRequiresBoth, DosageDoseUnitSameCode
    • DosageDgMP: DosageStructuredOrFreeText
    • TimingDgMP: TimingOnlyOneType, TimingOnlyOneTimeForInterval, TimingOnlyOnePeriodForDayOfWeek

Details je Invariante

  • DosageStructuredOrFreeTextWarning (DosageDE)
    • Vom Fix betroffene Ressourcentypen: MedicationDispense, MedicationStatement
    • Fix: Fehlende %resource.-Präfixe vor ofType(...) ergänzt, damit die Regel in allen drei Ressourcentypzweigen korrekt evaluiert wird.
  • DosageStructuredRequiresBoth (DosageDE)
    • Vom Fix betroffene Ressourcentypen: MedicationDispense, MedicationStatement
    • Fix: Fehlende %resource.-Präfixe vor ofType(...) ergänzt, damit die wechselseitige Pflicht von timing und doseAndRate korrekt geprüft wird.
  • DosageDoseUnitSameCode (DosageDE)
    • Vom Fix betroffene Ressourcentypen: MedicationDispense, MedicationStatement
    • Fix: Ressourcentypspezifische Pfade im Ausdruck korrigiert; dadurch wird die Einheitengleichheit über alle Dosierungen je Ressource korrekt für Quantity und Range geprüft.
  • DosageStructuredOrFreeText (DosageDgMP)
    • Vom Fix betroffene Ressourcentypen: MedicationDispense, MedicationStatement
    • Fix: Analog zu DosageStructuredOrFreeTextWarning wurden fehlende %resource.-Präfixe ergänzt, damit Mischformen aus Freitext und Struktur verlässlich erkannt werden.
  • TimingOnlyOneType (TimingDgMP)
    • Vom Fix betroffene Ressourcentypen: MedicationDispense, MedicationStatement
    • Fix: Fehlende %resource.-Präfixe in den Unterbedingungen ergänzt; dadurch greifen die Typprüfungen (DayOfWeek, Interval, Kombinationsschemata) konsistent pro Ressource.
  • TimingOnlyOneTimeForInterval (TimingDgMP)
    • Vom Fix betroffene Ressourcentypen: MedicationStatement
    • Fix: In der MedicationStatement-Prüfung wurde eine logisch redundante und inhaltlich falsche Typbedingung entfernt; dadurch wird die Konsistenz von period/periodUnit auch für MedicationStatement tatsächlich geprüft (zusätzlich zur Einzigartigkeitsprüfung von timeOfDay/when).
  • TimingOnlyOnePeriodForDayOfWeek (TimingDgMP)
    • Vom Fix betroffene Ressourcentypen: MedicationRequest, MedicationDispense, MedicationStatement
    • Fix: Falsche Collection-vs-Integer-Vergleiche korrigiert (distinct().count() statt distinct()), damit doppelte (dayOfWeek + when/timeOfDay)-Kombinationen korrekt validiert werden.

Release: 1.0.3

What's Changed

  • Fix dosage dose unit same code by @patrick-werner in #106 to also support dosageRanges
  • Added guidance on backport extension usage and for defect tim-9 invariant

Release: 1.0.2

What's Changed

  • Fix: Update constraints and examples for DosageStructuredRequiresGeneratedText, maintain versioning in configuration

Release: 1.0.1

What's Changed

  • Fix dosage structured requires generated text constraint by @patrick-werner in #104
  • Updates from Publication Feedback by @patrick-werner in #105

Release: 1.0.0

What's Changed

  • Add ISiK as an example case in the Implementation Guide by @f-peverali in #39
  • Update schema-freitext.md by @f-peverali in #70
  • fix: correct punctuation in dosage text generation documentation by @patrick-werner in #79
  • refactor: update dosage terminology from 'Tablette' to 'Stück' in examples and descriptions by @patrick-werner in #72
  • fix: update link in dosage text generation documentation by @patrick-werner in #73
  • Fix der Timing Tabelle, Verbesserung des python scripts, HDB-650 by @patrick-werner in #74
  • feat: add invariant for structured dosage instructions requiring generated text by @patrick-werner in #75
  • fix: correct description of dosage timing bounds in TimingDgMP.fsh by @patrick-werner in #76
  • feat: made value in duration in TimingDgMP mandatory (1..1), added MS in TimingDE.fsh by @patrick-werner in #77
  • refactor: rename GematikDosageTextGenerator to DgMPDosageTextGenerator by @patrick-werner in #78
  • Add note to usage of dosage text script by @florianschoffke in #80
  • refactor: fix python indentation by @patrick-werner in #81
  • feat: set comparator on boundsDuration to 0..0 in TimingDgMP by @patrick-werner in #82
  • Add all 0..0 fields to deny lists in text generation script HDB-656 by @patrick-werner in #83
  • feat: add invariant for timing bounds unit string consistency with UCUM codes by @patrick-werner in #84
  • feat: fix TimingBoundsUnitMatchesCode invariant and add examples by @patrick-werner in #85
  • Add Examples for DosageStructuredRequiresGeneratedText by @florianschoffke in #86
  • fix: update dosage unit from 'Tablette' to 'Stück' for consistency across documentation by @patrick-werner in #87
  • fix: clarify mustSupport requirements for implementation and processing of elements by @patrick-werner in #88
  • refactor script by @florianschoffke in #89
  • Only one dosage by @patrick-werner in #90
  • Ig-page-for-script by @florianschoffke in #92
  • Skript für eine zusammenfassende Evaluierung der Dosierung by @florianschoffke in #93
  • added DosageFourSlotPatternInTextWarning & example by @patrick-werner in #91
  • feat: add FreeTextSingleDosageOnly invariant to enforce single dosage element in free text by @patrick-werner in #95
  • Update ext card and script by @patrick-werner in #94
  • Extract-script by @florianschoffke in #96
  • Set extension cardinality and add language support by @florianschoffke in #99
  • fix: update duration unit retrieval in medication dosage text generation by @patrick-werner in #103
  • docs: clarify prerequisites for text generation in dosage script by @patrick-werner in #102
  • 1.0.0 release by @patrick-werner in #98

Release: 1.0.0-ballot

Release for the first ballot: 1.0.0-ballot