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

StructureMap: E-T-Rezept Structure Map for MedicationDispense

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

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

map "https://gematik.de/fhir/erp-t-prescription/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 "https://gematik.de/fhir/erp-t-prescription/StructureDefinition/erp-tprescription-medication-dispense" 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) {
  gematikMedicationDispense.dosageInstruction as dosageInstructionVar -> bfarmMedicationDispense.dosageInstruction = dosageInstructionVar "medicationDispenseDosageInstruction"; // Übernimmt die Dosierungsanweisungen aus der ursprünglichen Abgabe für den digitalen Durchschlag
  gematikMedicationDispense.whenHandedOver as whenHandedOverVar -> bfarmMedicationDispense.whenHandedOver = whenHandedOverVar "medicationDispenseWhenHandedOver"; // Kopiert das Abgabedatum zur Dokumentation des Zeitpunkts der Medikamentenausgabe
  gematikMedicationDispense.medication as medicationVar -> bfarmMedicationDispense.medication = medicationVar "medicationReference"; // Kopiert die Medikamentenreferenz - das referenzierte Medication wird separat gemappt
  gematikMedicationDispense.status as gematikMedicationDispenseStatus -> bfarmMedicationDispense.status = 'completed' "medicationDispenseStatus"; // Setzt den Status auf 'completed' da die Abgabe bereits erfolgt ist (digitaler Durchschlag)
  gematikMedicationDispense.quantity as quantityVar -> bfarmMedicationDispense.quantity = quantityVar "medicationDispenseQuantity"; // Übernimmt die abgegebene Menge zur Dokumentation der tatsächlich ausgehändigten Medikamentenmenge
  gematikMedicationDispense.performer as srcPerformerVar -> bfarmMedicationDispense.performer as tgtPerformerVar then {
    srcPerformerVar.actor as srcPerformerActorVar -> tgtPerformerVar.actor as tgtPerformerActorVar then {
      srcPerformerActorVar.identifier as srcPerformerActorIdentifierVar then {
        srcPerformerActorIdentifierVar.value as srcPerformerActorIdentifierValueVar -> tgtPerformerActorVar.reference = append('Organization/', srcPerformerActorIdentifierValueVar) "medicationDispensePerformerActorIdentifierValue"; // Wandelt Apotheken-Identifier in Organization-Referenz um (Organization/<telematik-id>)
      } "medicationDispensePerformerActorIdentifier"; // Extrahiert den Identifier der abgebenden Apotheke
    } "medicationDispensePerformerActor"; // Verarbeitet den Actor (abgebende Apotheke) des Performers
  } "medicationDispensePerformer"; // Transformiert Apotheken-Identifier zu Organization-Referenz für eindeutige Zuordnung der abgebenden Apotheke
}