Implementation Guide
TIFlow - Datenaustausch BfArM Webdienst
Version 2.0.0 - release

StructureMap: E-T-Rezept Structure Map for MedicationDispense

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

Mapping-Anweisungen zur Transformation von gematik ERP MedicationDispense zu BfArM T-Prescription MedicationDispense

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

// Mapping-Anweisungen zur Transformation von gematik ERP MedicationDispense zu BfArM T-Prescription MedicationDispense

uses "http://hl7.org/fhir/StructureDefinition/MedicationDispense" alias gematikMedicationDispense as source
uses "http://hl7.org/fhir/StructureDefinition/MedicationDispense" alias bfarmMedicationDispense as target

// Mapping-Anweisungen zur Transformation von gematik ERP MedicationDispense zu BfArM T-Prescription MedicationDispense
group ERPTPrescriptionStructureMapMedicationDispense(source gematikMedicationDispense : gematikMedicationDispense, target bfarmMedicationDispense : bfarmMedicationDispense) {
  // Kopiert Dosage Metadata Extension
  gematikMedicationDispense.extension as extDosageMetaVar where (url='http://ig.fhir.de/igs/medication/StructureDefinition/GeneratedDosageInstructionsMeta') -> bfarmMedicationDispense.extension = extDosageMetaVar "medicationDispenseExt";
  // Kopiert RenderedDosageText
  gematikMedicationDispense.extension as extDosageRenderedVar where (url='http://hl7.org/fhir/5.0/StructureDefinition/extension-MedicationDispense.renderedDosageInstruction') -> bfarmMedicationDispense.extension = extDosageRenderedVar "medicationDispenseExt";
  // Übernimmt die Dosierungsanweisungen aus der ursprünglichen Abgabe für den digitalen Durchschlag
  gematikMedicationDispense.dosageInstruction as dosageInstructionVar -> bfarmMedicationDispense.dosageInstruction = dosageInstructionVar "medicationDispenseDosageInstruction";
  // Kopiert das Abgabedatum zur Dokumentation des Zeitpunkts der Medikamentenausgabe
  gematikMedicationDispense.whenHandedOver as whenHandedOverVar -> bfarmMedicationDispense.whenHandedOver = whenHandedOverVar "medicationDispenseWhenHandedOver";
  // Kopiert die Medikamentenreferenz - das referenzierte Medication wird separat gemappt
  gematikMedicationDispense.medication as medicationVar -> bfarmMedicationDispense.medication = medicationVar "medicationReference";
  // Setzt den Status auf 'completed' da die Abgabe bereits erfolgt ist (digitaler Durchschlag)
  gematikMedicationDispense.status as gematikMedicationDispenseStatus -> bfarmMedicationDispense.status = 'completed' "medicationDispenseStatus";
  // Übernimmt die abgegebene Menge zur Dokumentation der tatsächlich ausgehändigten Medikamentenmenge
  gematikMedicationDispense.quantity as quantityVar -> bfarmMedicationDispense.quantity = quantityVar "medicationDispenseQuantity";
  // Transformiert Apotheken-Identifier zu Organization-Referenz für eindeutige Zuordnung der abgebenden Apotheke
  gematikMedicationDispense.performer as srcPerformerVar -> bfarmMedicationDispense.performer as tgtPerformerVar then {
    // Verarbeitet den Actor (abgebende Apotheke) des Performers
    srcPerformerVar.actor as srcPerformerActorVar -> tgtPerformerVar.actor as tgtPerformerActorVar then {
      // Extrahiert den Identifier der abgebenden Apotheke
      srcPerformerActorVar.identifier as srcPerformerActorIdentifierVar then {
        // Wandelt Apotheken-Identifier in Organization-Referenz um (Organization/<telematik-id>)
        srcPerformerActorIdentifierVar.value as srcPerformerActorIdentifierValueVar -> tgtPerformerActorVar.reference = append('Organization/', srcPerformerActorIdentifierValueVar) "medicationDispensePerformerActorIdentifierValue";
      } "medicationDispensePerformerActorIdentifier";
    } "medicationDispensePerformerActor";
  } "medicationDispensePerformer";
}