Implementation Guide
E-T-Rezept Datenaustausch
Version 1.1.0-ballot-1 - ballot

StructureMap: E-T-Rezept Structure Map for KBV PZN Medication

Official URL: https://gematik.de/fhir/erp-t-prescription/StructureMap/ERPTPrescriptionStructureMapKBVPZNMedication Version: 1.1.0-ballot-1
Draft as of 2025-07-07 Computable Name: ERPTPrescriptionStructureMapKBVPZNMedication

Mapping-Anweisungen zur Transformation von KBV PZN-Medikamenten zu BfArM T-Prescription Format

map "https://gematik.de/fhir/erp-t-prescription/StructureMap/ERPTPrescriptionStructureMapKBVPZNMedication" = "ERPTPrescriptionStructureMapKBVPZNMedication"

// Mapping-Anweisungen zur Transformation von KBV PZN-Medikamenten zu BfArM T-Prescription Format

uses "http://hl7.org/fhir/StructureDefinition/Medication" alias kbvMedicationPZN as source
uses "http://hl7.org/fhir/StructureDefinition/Medication" alias bfarmMedication as target

// Mapping-Anweisungen zur Transformation von KBV PZN-Medikamenten zu BfArM T-Prescription Format
group ERPTPrescriptionStructureMapKBVPZNMedication(source kbvMedicationPZN : kbvMedicationPZN, target bfarmMedication : bfarmMedication) {
  kbvMedicationPZN.extension as extVar -> bfarmMedication.extension as tgtExtVar then {
    extVar where url='http://fhir.de/StructureDefinition/normgroesse' -> tgtExtVar.url = 'http://fhir.de/StructureDefinition/normgroesse' then {
      extVar.value as extValVar -> tgtExtVar.value = extValVar "copyExtensionValue"; // Kopiert den Wert der Normgröße-Extension (N1, N2, N3)
    } "copyNormgroesseExtensionUrl"; // Übernimmt die Normgröße-Extension unverändert (deutsche Packungsgrößenangabe)
  } "medicationExt"; // Mappt Medication-Extensions von KBV- zu BfArM-Format
  kbvMedicationPZN.id as IdVar -> bfarmMedication.id = IdVar "medicationId"; // Übernimmt die eindeutige Medication-ID unverändert
  kbvMedicationPZN.code as codeVar -> bfarmMedication.code = codeVar "medicationCode"; // Kopiert den Medikamentencode (PZN - Pharmazentralnummer) für die eindeutige Identifikation
  kbvMedicationPZN.form as formVar -> bfarmMedication.form = formVar "medicationForm"; // Übernimmt die Darreichungsform (Tabletten, Kapseln, Tropfen, etc.)
  kbvMedicationPZN.amount as amountVar -> bfarmMedication.amount as tgtAmountVar then {
    amountVar.denominator as amountDenominatorVar -> tgtAmountVar.denominator = amountDenominatorVar "medicationAmountDenominator"; // Kopiert den Nenner der Mengenangabe (z.B. '1' für 'pro Packung')
    amountVar.numerator as amountNumeratorVar -> tgtAmountVar.numerator as tgtAmountNumeratorVar then {
      amountNumeratorVar.extension as amountNumExtVar -> tgtAmountNumeratorVar.extension as tgtAmountNumExtVar then {
        amountNumExtVar where url='https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_PackagingSize' -> tgtAmountNumExtVar.url = 'https://gematik.de/fhir/epa-medication/StructureDefinition/medication-packaging-size-extension' then {
          amountNumExtVar.value as extValVar -> tgtAmountNumExtVar.value = extValVar "copyExtensionValue"; // Übernimmt den Packungsgrößenwert unverändert
        } "copyPackagingSizeExtensionUrl"; // Wandelt KBV-Packungsgrößen-Extension in gematik EPA-Medication Extension um
      } "medicationAmountExt"; // Transformiert Packungsgrößen-Extensions von KBV- zu gematik-Format
      amountNumeratorVar.value as amountNumeratorValueVar -> tgtAmountNumeratorVar.value = amountNumeratorValueVar "medicationAmountNumeratorValue"; // Kopiert den numerischen Wert der Menge (z.B. '20' für 20 Tabletten)
      amountNumeratorVar.unit as amountNumeratorUnitVar -> tgtAmountNumeratorVar.unit = amountNumeratorUnitVar "medicationAmountNumeratorUnit"; // Übernimmt die Mengeneinheit (Stück, ml, g, etc.)
      amountNumeratorVar.system as amountNumeratorSystemVar -> tgtAmountNumeratorVar.system = amountNumeratorSystemVar "medicationAmountNumeratorSystem"; // Kopiert das Codesystem für die Mengeneinheit (meist UCUM)
      amountNumeratorVar.code as amountNumeratorCodeVar -> tgtAmountNumeratorVar.code = amountNumeratorCodeVar "medicationAmountNumeratorCode"; // Übernimmt den standardisierten Code für die Mengeneinheit
    } "medicationAmountNumerator"; // Mappt den Zähler der Mengenangabe mit allen Details (Wert, Einheit, Extensions)
  } "medicationAmount"; // Mappt die Mengenangaben des Fertigarzneimittels (Packungsgröße und Inhalt)
  kbvMedicationPZN.ingredient as ingredientVar -> bfarmMedication.ingredient = ingredientVar "medicationIngredient"; // Kopiert Wirkstoffinformationen (bei PZN-Medikamenten meist nicht detailliert angegeben)
}