Implementation Guide
TIFlow - Datenaustausch BfArM Webdienst
Version 2.0.0 - release

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

Official URL: https://gematik.de/fhir/tiflow-bfarm/StructureMap/ERPTPrescriptionStructureMapKBVPZNMedication Version: 2.0.0
Active as of 2026-10-02 Computable Name: ERPTPrescriptionStructureMapKBVPZNMedication

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

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