Implementation Guide
TIFlow - Datenaustausch BfArM Webdienst
Version 2.0.0 - release

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

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

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

map "https://gematik.de/fhir/tiflow-bfarm/StructureMap/ERPTPrescriptionStructureMapKBVCompoundingMedication" = "ERPTPrescriptionStructureMapKBVCompoundingMedication"

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

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

// Mapping-Anweisungen zur Transformation von KBV Rezeptur-Medikamenten zu BfArM T-Prescription Format
group ERPTPrescriptionStructureMapKBVCompoundingMedication(source kbvMedicationCompounding : kbvMedicationCompounding, target bfarmMedication : bfarmMedication) {
  // Mappt Rezeptur-spezifische Extensions von KBV- zu BfArM-Format
  kbvMedicationCompounding.extension as extVar -> bfarmMedication.extension as tgtExtVar then {
    // Transformiert KBV-Verpackungs-Extension in gematik-Formulierungs-Verpackungs-Extension
    extVar as extMatchVar where (url='https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Packaging') -> tgtExtVar.url = 'https://gematik.de/fhir/epa-medication/StructureDefinition/medication-formulation-packaging-extension' then {
      // Übernimmt den Verpackungswert für die Rezeptur
      extMatchVar.value as extValVar -> tgtExtVar.value = extValVar "copyExtensionValue";
    } "copyFormulaPackagingExtensionUrl";
    // Transformiert KBV-Herstellungsanweisung-Extension in gematik-Formulierungs-Herstellungsanweisung-Extension
    extVar as extMatchVar where (url='https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_CompoundingInstruction') -> tgtExtVar.url = 'https://gematik.de/fhir/epa-medication/StructureDefinition/medication-manufacturing-instructions-extension' then {
      // Übernimmt den Herstellungsanweisung für die Rezeptur
      extMatchVar.value as extValVar -> tgtExtVar.value = extValVar "copyExtensionValue";
    } "copyFormulaInstructionExtensionUrl";
  } "medicationExt";
  // Übernimmt die eindeutige Medication-ID unverändert
  kbvMedicationCompounding.id as IdVar -> bfarmMedication.id = IdVar "medicationId";
  // Mappt den Rezeptur-Code mit Bezeichnung
  kbvMedicationCompounding.code as srcCodeVar -> bfarmMedication.code as tgtCodeVar then {
    // Kopiert die Bezeichnung der Rezeptur (z.B. 'Hydrocortison-Salbe 1%')
    srcCodeVar.text as srcCodeTextVar -> tgtCodeVar.text = srcCodeTextVar "medicationCodeText";
  } "medicationCode";
  // Übernimmt die Darreichungsform der Rezeptur (Salbe, Creme, Kapseln, etc.)
  kbvMedicationCompounding.form as formVar -> bfarmMedication.form = formVar "medicationForm";
  // Mappt die Gesamtmenge der herzustellenden Rezeptur
  kbvMedicationCompounding.amount as amountVar -> bfarmMedication.amount as tgtAmountVar then {
    // Kopiert den Nenner der Mengenangabe (z.B. '1' für 'pro Rezeptur')
    amountVar.denominator as amountDenominatorVar -> tgtAmountVar.denominator = amountDenominatorVar "medicationAmountDenominator";
    // Mappt die detaillierte Mengenangabe der Rezeptur
    amountVar.numerator as amountNumeratorVar -> tgtAmountVar.numerator as tgtAmountNumeratorVar then {
      // Transformiert Packungsgrößen-Extensions für Rezepturen
      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' "copyPackagingSizeExtensionUrl";
        // Übernimmt den Packungsgrößenwert für die Rezeptur
        amountNumExtVar.value as extValVar -> tgtAmountNumExtVar.value = extValVar "copyExtensionValue";
      } "medicationAmountExt";
      // Kopiert den numerischen Wert der Gesamtmenge (z.B. '50' für 50g Salbe)
      amountNumeratorVar.value as amountNumeratorValueVar -> tgtAmountNumeratorVar.value = amountNumeratorValueVar "medicationAmountNumeratorValue";
      // Übernimmt die Mengeneinheit für die Rezeptur (g, ml, Stück, 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";
  // Mappt die Bestandteile der Rezeptur mit detaillierten Mengen- und Stärkeangaben
  kbvMedicationCompounding.ingredient as ingredientVar -> bfarmMedication.ingredient as tgtIngredientVar then {
    // Kopiert die Referenz oder den Code des Rezeptur-Bestandteils
    ingredientVar.item as IngredientItemValueVar -> tgtIngredientVar.item = IngredientItemValueVar "medicationIngredientItemValue";
    // Transformiert Bestandteil-spezifische Extensions
    ingredientVar.extension as IngredientExtVar -> tgtIngredientVar.extension as tgtIngredientExtVar then {
      // Wandelt KBV-Bestandteil-Darreichungsform-Extension in gematik-Format um
      IngredientExtVar where (url='https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Ingredient_Form') -> tgtIngredientExtVar.url = 'https://gematik.de/fhir/epa-medication/StructureDefinition/medication-ingredient-darreichungsform-extension' then {
        // Übernimmt die Darreichungsform des Bestandteils
        IngredientExtVar.value as extValVar -> tgtIngredientExtVar.value = extValVar "copyExtensionValue";
      } "copyIngredientFormExtensionUrl";
    } "medicationIngredientExt";
    // Mappt die Stärke/Konzentration des Bestandteils in der Rezeptur
    ingredientVar.strength as IngredientStrengthValueVar -> tgtIngredientVar.strength as IngredientStrengthValueVar then {
      // Kopiert den Nenner für die Stärkeangabe (Bezugsmenge)
      IngredientStrengthValueVar.denominator as ingredientDenominatorVar -> IngredientStrengthValueVar.denominator = ingredientDenominatorVar "medicationIngredientDenominator";
      // Kopiert den Zähler für die Stärkeangabe (Wirkstoffmenge)
      IngredientStrengthValueVar.numerator as ingredientNumeratorVar -> IngredientStrengthValueVar.numerator = ingredientNumeratorVar "medicationIngredientNumerator";
      // Transformiert Bestandteil-Mengen-Extensions
      IngredientStrengthValueVar.extension as IngredientStrExtVar -> IngredientStrengthValueVar.extension as tgtIngredientStrExtVar then {
        // Wandelt KBV-Bestandteil-Mengen-Extension in gematik-Format um
        IngredientStrExtVar where (url='https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Ingredient_Amount') -> tgtIngredientStrExtVar.url = 'https://gematik.de/fhir/epa-medication/StructureDefinition/medication-ingredient-amount-extension' then {
          // Übernimmt die Mengenangabe des Bestandteils
          IngredientStrExtVar.value as extValVar -> tgtIngredientStrExtVar.value = extValVar "copyExtensionValue";
        } "copyIngredientAmountExtensionUrl";
      } "medicationIngredientStrengthExt";
    } "medicationIngredientStrength";
  } "medicationIngredient";
}