Implementation Guide
ePA Medication Service
Version 1.0.5-1 - release

## Auslesen der FHIR-Elemente zur Darstellung der eML

Der Medication Service stellt die elektronische Medikationsliste (eML) über die FHIR API bereit. Primärsysteme und ePA-FdV können diese Schnittstelle nutzen, um die eML-Daten in ihre Systemumgebung zu integrieren.

Diese Beschreibung fokussiert sich auf die Datenstruktur und den Abruf der eML, ohne spezifische Vorgaben für die Darstellung in der Benutzeroberfläche der Primärsysteme oder einem ePA-FdV zu machen.

### Auslesen des Verordnungsdatums

Die Ressource MedicationRequest enthält ein Element namens authoredOn (MedicationRequest.authoredOn). Der Wert dieses Elements gibt das Ausstellungsdatum der Verordnung an und soll für die Darstellung des Verordnungsdatums verwendet werden.

    {
        "resourceType": "MedicationRequest",
        ...
        "authoredOn": "2025-01-22",
        ...
    }

### Auslesen des Dispensierdatums

Die Ressource MedicationDispense enthält ein Element namens whenHandedOver (MedicationDispense.whenHandedOver). Der Wert dieses Elements gibt das Datum der Abgabe an und soll für die Darstellung des Dispensierdatums verwendet werden.

    {
        "resourceType": "MedicationDispense",
        ...
        "whenHandedOver": "2025-01-22",
        ...
    }

### Prüfen, ob eine Substitution vorliegt

In der Resource MedicationDispense gibt es das boolesche Element substitution.wasSubstituted, das anzeigt, ob bei der Abgabe ein anderes Medikament als das ursprünglich verschriebene verwendet wurde. Ein Wert von true bedeutet, dass eine Substitution stattgefunden hat, während false zeigt, dass das verschriebene Medikament abgegeben wurde.

Im Profil EPAMedicationDispense wird der Bereich substitution mit “Must Support” markiert, was bedeutet, dass dieses Element beim Lesen des Datensatzes berücksichtigt und interpretiert werden muss, um sicherzustellen, dass Substitutionen korrekt erfasst werden.

    {
        "resourceType": "MedicationDispense",
        ...
        "substitution": {
            "wasSubstituted": false
        },
        ...
    }

### Einfach- und Mehrfachverordnungen

Das Profil EPAMedicationRequest enthält die Erweiterung MultiplePrescription, deren Struktur der Extension _KBV_EX_ERP_Multiple_Prescription_ aus dem E-Rezept MedicationRequest-Profil _KBV_PR_ERP_Prescription_ der KBV entspricht.

- MultiplePrescription (ePA Medication): Extension: MultiplePrescription
- KBV_EX_ERP_Multiple_Prescription (Projekt eRezept): Simplifier-Projekt eRezept

Innerhalb der MultiplePrescription-Erweiterung befindet sich das Element indicator, das als Boolean definiert ist. Dieses Element gibt an, ob die betreffende MedicationRequest-Instanz Teil einer Mehrfachverordnung ist. Beim Auslesen des Datensatzes muss das indicator-Element zwingend interpretiert werden. Es reicht nicht aus, lediglich das Vorhandensein der Extension-Elemente zu prüfen.

    {
        "extension":  [
            {
                "url": "indicator",
                "valueBoolean": true
            }
        ],
        "url": "https://gematik.de/fhir/epa-medication/StructureDefinition/multiple-prescription-extension"
    }

#### Die Erweiterung MultiplePrescription

Die Erweiterung MultiplePrescription umfasst zusätzlich weitere Elemente wie counter, period und id.

Das Element counter zeigt an, die wievielte Verordnung einer Mehrfachverordnung gemeint ist. Zum Beispiel: Bei “2 von 4” steht der numerator für die 2 und der denominator für die 4.

    {
        "url": "counter",
        "valueRatio": {
            "numerator": {
                "value": 2
            },
            "denominator": {
                "value": 4
            }
        }
    },

Das Element period gibt den Zeitraum der Einlösefrist an. Der Wert start markiert den Beginn der Frist, während der Wert end das Ende der Frist beschreibt.

    {
        "url": "period",
        "valuePeriod": {
            "start": "2024-06-15"
        }
    },

Das Element id steht für die ID der Mehrfachverordnung. Diese ID ist bei allen Teilverordnungen einer Mehrfachverordnung identisch und wird als UUID angegeben.

    {
        "url": "id",
        "valueIdentifier": {
            "system": "urn:ietf:rfc:3986",
            "value": "urn:uuid:33bff9fb-75dc-43b4-8593-f6c7937fc10e"
        }
    }

##### Vollständiges Beispiel

    {
        "extension":  [
            {
                "url": "indicator",
                "valueBoolean": true
            },
            {
                "url": "counter",
                "valueRatio": {
                    "numerator": {
                        "value": 2
                    },
                    "denominator": {
                        "value": 4
                    }
                }
            },
            {
                "url": "period",
                "valuePeriod": {
                    "start": "2024-06-15"
                }
            },
            {
                "url": "id",
                "valueIdentifier": {
                    "system": "urn:ietf:rfc:3986",
                    "value": "urn:uuid:33bff9fb-75dc-43b4-8593-f6c7937fc10e"
                }
            }
        ],
        "url": "https://gematik.de/fhir/epa-medication/StructureDefinition/multiple-prescription-extension"
    }

### Auslesen der Dosierungsangaben

In der aktuellen Version soll ausschließlich der String text innerhalb des Dosage-Elements aus der eML ausgelesen werden, da nur dieses Element berücksichtigt werden muss. Das Dosage.text-Element enthält die textuellen Dosieranweisungen, wie sie in dem aktuellen Verordnungssatz üblich sind, beispielsweise in der Form “1-0-1-0” oder ähnliche Darstellungen wie “2mal tägl. 5ml”.

Strukturierte Unterelemente innerhalb des Dosage-Elements, wie doseQuantity, timing oder route, sollen ignoriert werden und müssen nicht verarbeitet werden.

Das Dosage-Element wird in den folgenden Datensätzen der eML verwendet:

- MedicationRequest.dosageInstruction
- MedicationDispense.dosageInstruction

    "dosageInstruction": [
        {
          "text": "2mal tägl. 5ml"
        }
    ]

Die Dosierungsangaben erscheinen in den Dispensierinformationen der Apothekensoftware nur dann, wenn der Apotheker diese im Vergleich zu den Dosierinformationen in der Verordnung konkretisiert, verbessert oder angepasst hat.

Daraus ergibt sich, dass in der eML die Dosierungsangaben aus dem Verordnungsdatensatz (MedicationRequest.dosageInstruction.text) genutzt werden, wenn keine spezifischen Dosierungsinformationen im Dispensierdatensatz (MedicationDispense.dosageInstruction.text) vorliegen.

Abbildung: Ausleselogik für Dispensierinformationen

### Auslesen der Arzneimittelbezeichnung

Um die Arzneimittelbezeichnung auszulesen, muss das Element Medication.code.text aus der Medication-Ressourceninstanz verwendet werden. Sollte das text-Element nicht vorhanden sein, sollte der Wert aus Medication.code.coding.display für das System http://fhir.de/CodeSystem/ifa/pzn ausgelesen werden.

> Wichtig: Die Medication aus dem Abgabedatensatz (MedicationDispense.medicationReference) hat Vorrang gegenüber der Medication, die in der MedicationRequest referenziert wird und sollte für die Darstellung verwendet werden, wenn die Abgabe durchgeführt wurde.

Abbildung: Ausleselogik für die Arzneimittelbezeichnung

#### Beispiel

    {
      "resourceType": "Medication",
      "code": {
        "coding": [
          {
            "code": "03852301",
            "system": "http://fhir.de/CodeSystem/ifa/pzn"
          }
        ],
        "text": "Tamoxifen AL 20 Tabletten N1"
      },
     ...
    }

#### Beispiel ohne code.text

    {
      "resourceType": "Medication",
      "code": {
        "coding": [
          {
            "code": "03852301",
            "system": "http://fhir.de/CodeSystem/ifa/pzn",
            "display": "TAMOXIFEN AL 20 Tabletten 30 St Tabletten"
          }
        ],
      },
     ...
    }

### Auslesen der Pharmazentralnummer (PZN)

Zum Auslesen der Pharmazentralnummer (PZN) muss das Element Medication.code.coding:pzn verwendet werden. Dabei ist zu beachten, dass PZN-Codes immer das System http://fhir.de/CodeSystem/ifa/pzn nutzen. Wenn dieses System nicht in Medication.code.coding angegeben ist, liegt kein PZN-Code vor.

> Wichtig: Die Medication aus dem Abgabedatensatz (MedicationDispense.medicationReference) hat Vorrang gegenüber der Medication, die in der MedicationRequest referenziert wird und sollte für die Darstellung verwendet werden, wenn die Abgabe durchgeführt wurde.

Abbildung: Ausleselogik für die Pharmazentralnummer (PZN)

#### Beispiel

    {
        "resourceType": "Medication",
        ...
        "code": {
            "coding":  [
                {
                    "system": "http://fhir.de/CodeSystem/ifa/pzn",
                    "code": "08545331",
                    "display": "IBU-ratiopharm 800mg akut Schmerztabletten"
                },
                {
                    "system": "http://fhir.de/CodeSystem/bfarm/atc",
                    "code": "M01AE01",
                    "display": "Ibuprofen",
                    "version": "2022"
                }
            ]
        },
        ...
    }

### Abrufen der Darreichungsform (Form)

Für die Darstellung der Darreichungsform wird das Element Medication.form.coding aus der Medication-Ressourceninstanz verwendet. Dabei sollte primär der Display Name (Medication.form.coding.display) für die Darstellung herangezogen werden. Ist kein Display Name verfügbar, wird der Code (Medication.form.coding.code) verwendet.

Falls mehrere Kodierungen in unterschiedlichen Systemen für die Darreichungsform angegeben sind, ist die Kodierung mit dem System https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM zu bevorzugen.

> Wichtig: Die Medication aus dem Abgabedatensatz (MedicationDispense.medicationReference) hat Vorrang gegenüber der Medication, die in der MedicationRequest referenziert wird und sollte für die Darstellung verwendet werden, wenn die Abgabe durchgeführt wurde.

Abbildung: Ausleselogik für die Darreichungsform

#### Beispiel

    {
        "resourceType": "Medication",
        ...
        "form": {
            "coding": [
                {
                    "display": "Tabletten",
                    "code": "TAB",
                    "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM"
                }
            ]
        }
        ...
    }

#### Beispiel ohne “display”

    {
        "resourceType": "Medication",
        ...
        "form": {
            "coding": [
                {
                    "code": "TAB",
                    "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM"
                }
            ]
        }
        ...
    }

#### Beispiel mehrere Codierungen

    {
        "resourceType": "Medication",
        ...
        "form": {
            "coding":  [
                {
                    "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM",
                    "code": "TAB",
                    "display": "Tabletten",
                },
                {
                    "system": "http://standardterms.edqm.eu",
                    "code": "12200",
                    "display": "Tablet"
                },
                {
                    "system": "http://snomed.info/sct",
                    "code": "385055001",
                    "display": "Tablet (basic dose form)",
                }
            ]
        },
        ...
    }

### Auslesen der Wirkstoffnamen und Wirkstärke

Die Wirkstoffnamen werden über das Element Medication.ingredient.itemCodeableConcept.text ausgelesen. Ist das text-Element nicht vorhanden, wird stattdessen der Display Name aus Medication.ingredient.itemCodeableConcept.coding.display verwendet. Dabei hat das text-Element stets Vorrang.

Die Wirkstärke wird aus dem Element Medication.ingredient.strength ausgelesen und setzt sich aus dem Wert (strength.value) sowie der Einheit zusammen. Wenn das Element strength.unit vorhanden ist, wird dieses für die Einheit verwendet. Ist strength.unit nicht angegeben, wird stattdessen der Code (strength.code) genutzt. Der Code gibt die Kodierung für die Einheit an, beispielsweise “mg”.

> Wichtig: Die Medication aus dem Abgabedatensatz (MedicationDispense.medicationReference) hat Vorrang gegenüber der Medication, die in der MedicationRequest referenziert wird und sollte für die Darstellung verwendet werden, wenn die Abgabe durchgeführt wurde.

Abbildung: Ausleselogik für die Wirkstoffnamen und Wirkstärken

#### Beispiel

    {
        "resourceType": "Medication",
        ...
        "ingredient":[
            {
                "itemCodeableConcept": {
                    "text": "Tamoxifen"
                },
                ...
            }
        ],
        ...
    }

#### Beispiel mit itemCodeableConcept.coding

    {
      "resourceType": "Medication",
      ...
      "ingredient": [
        {
          "itemCodeableConcept": {
            "coding": [
              {
                "code": "387207008",
                "system": "http://snomed.info/sct",
                "display": "Ibuprofen (substance)"
              }
            ]
          },
          ...
        }
      ]
    }

#### Beispiel mit Medication.ingredient.strength

    {
        "resourceType": "Medication",
        ...
        "ingredient":
        [
            {
                "itemCodeableConcept":
                {
                    "coding":
                    [
                        {
                            "code": "387207008",
                            "system": "http://snomed.info/sct",
                            "display": "Ibuprofen (substance)"
                        }
                    ],
                    "text": "Ibuprofen"
                },
                "strength":
                {
                    "numerator":
                    {
                        "value": 400,
                        "code": "mg",
                        "system": "http://unitsofmeasure.org",
                    },
                    "denominator":
                    {
                        "value": 1,
                        "code": "{Tablet}",
                        "system": "http://unitsofmeasure.org",
                    }
                }
            }
        ]
    }

### Auslesen der Wirkstoffe mit PZN-Arzneimitteln (Medication-Instanz) als Zutaten (Ingredients)

Die Arzneimittelbezeichnung und die PZN werden aus der referenzierten Medication-Instanz im contained-Element ausgelesen (Medication.contained), die über das Element Medication.ingredient.itemReference.reference angegeben ist.

Die Arzneimittelbezeichnung wird zuerst über das Element Medication.code.text extrahiert. Ist das text-Element nicht vorhanden, wird stattdessen der Display Name aus Medication.code.coding.display verwendet. Dabei hat das text-Element stets Vorrang.

Die PZN wird aus dem Element Medication.code.coding extrahiert. Hierbei wird die Kodierung mit dem System http://fhir.de/CodeSystem/ifa/pzn verwendet. Der Wert wird aus Medication.code.coding.code entnommen und stellt die Pharmazentralnummer (PZN) dar.

Abbildung: Ausleselogik für die PZN-Arzneimittel-Wirkstoffe und Wirkstärken (Medication-Instanz)

#### Beispiel für eine Medication mit Wirkstoffen als PZN-Arzneimittel

    {
      "resourceType": "Medication",
      ...
      "form": {
        "coding": [
          {
            "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM",
            "code": "SAL",
            "display": "Salbe"
          }
        ]
      },
      "contained": [
        {
          "resourceType": "Medication",
          "id": "MedicationHydrocortison",
          "meta": {
            "profile": [
              "https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-pzn-ingredient"
            ]
          },
          "extension": [
            {
              "url": "https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-type-extension",
              "valueCoding": {
                "code": "781405001",
                "system": "http://snomed.info/sct",
                "display": "Medicinal product package (product)"
              }
            }
          ],
          "code": {
            "coding": [
              {
                "system": "http://fhir.de/CodeSystem/ifa/pzn",
                "code": "03424249",
                "display": "Hydrocortison 1% Creme"
              }
            ]
          },
          "batch": {
            "lotNumber": "56498416854"
          }
        },
        {
          "resourceType": "Medication",
          "id": "MedicationDexpanthenol",
          "meta": {
            "profile": [
              "https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-pzn-ingredient"
            ]
          },
          "extension": [
            {
              "url": "https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-type-extension",
              "valueCoding": {
                "code": "781405001",
                "system": "http://snomed.info/sct",
                "display": "Medicinal product package (product)"
              }
            }
          ],
          "code": {
            "coding": [
              {
                "system": "http://fhir.de/CodeSystem/ifa/pzn",
                "code": "16667195",
                "display": "Dexpanthenol 5% Creme"
              }
            ]
          },
          "batch": {
            "lotNumber": "0132456"
          }
        }
      ],
      "code": {
        "text": "Hydrocortison-Dexpanthenol-Salbe"
      },
      "ingredient": [
        {
          "itemReference": {
            "reference": "#MedicationHydrocortison"
          },
          "isActive": true,
          "strength": {
            "numerator": {
              "value": 50,
              "system": "http://unitsofmeasure.org",
              "code": "g",
              "unit": "g"
            },
            "denominator": {
              "value": 100,
              "system": "http://unitsofmeasure.org",
              "code": "g",
              "unit": "g"
            }
          }
        },
        {
          "itemReference": {
            "reference": "#MedicationDexpanthenol"
          },
          "isActive": true,
          "strength": {
            "numerator": {
              "value": 50,
              "system": "http://unitsofmeasure.org",
              "code": "g",
              "unit": "g"
            },
            "denominator": {
              "value": 100,
              "system": "http://unitsofmeasure.org",
              "code": "g",
              "unit": "g"
            }
          }
        }
      ]
    }