Implementation Guide
TIFlow - Verordnungen für Arzneimittel
Version 2.0.0 - release

Mapping von Verordnungsdaten

Nach Einstellen eines E-Rezepts durch ein verordnendes System müssen die Verordnungsdaten an den ePA Medication Service übermittelt werden.

Die Verordnung wird technisch als ein KBV_PR_ERP_Bundle eingestellt und muss an den ePA Medication Service in die EPAOpProvidePrescriptionERPInputParameters Struktur überführt werden.

Transformation des Bundles
Abbildung: Transformation des KBV_PR_ERP_Bundle in EPAOpProvidePrescriptionERPInputParameters


Hierbei werden verschiedene Quellen benötigt, um die Daten vollständig zu überführen:

  • Der Verordnungsdatensatz als KBV_PR_ERP_Bundle
  • Die Nutzerinformation (zeta-user-info) der Anfrage zur $activate-Operation

Übersicht des Mappingvorgehens

Für dieses Mapping wird ein FHIR-Bundle in eine FHIR-Parameters Struktur überführt. Ein FHIR Bundle enthält eine Liste von FHIR-Ressourcen (entries). Dort ist tabellarisch beschrieben, wie die einzelnen Elemente des KBV_PR_ERP_Bundle in die entsprechenden Elemente der Provide_Prescription_Parameters Struktur überführt werden und welche Mappings für die enthaltenen Ressourcen verwendet werden.

Die folgende Seite beschreibt das generelle Mapping des Bundles:

Die folgenden Seiten beschreiben die Mappings der einzelnen Ressourcen im Detail:

Transformationsregeln für Verordnungsdaten

Einige Daten müssen zusätzlich durch Transformationsregeln angepasst oder ergänzt werden. Die folgenden Transformationsregeln werden für das Mapping von Verordnungsdaten verwendet:

Organization für provide Prescription

ID F_006b
Beschreibung

Bei provide Prescription ist die Organization aus der KBV_PR_FOR_Organization zu mappen.

Der Transformator muss sicherstellen, dass bei Organization.identifier mindestens die TelematikID der Organisation enthalten, die auch in zeta-user-info der Anfrage angegeben ist. Dazu muss nach der A_25946 die TelematikId bei "identifier:TelematikID" durch die idNummer aus der zeta-user-info des verwendeten Operationsaufrufes ersetzt werden bzw. erzeugt werden, wenn diese nicht vorhanden ist.

Folgende Operationen durchzuführen:

Organization.identifier:TelematikID idNummer → aus zeta-user-info der Anfrage

Organization.name organizationName → aus zeta-user-info der Anfrage

Organization.type:profession professionOID → aus zeta-user-info der Anfrage

Profile
Referenzen

Address Slices in Organization

ID F_007
Beschreibung

Beim Mapping der Organization bei providePrescription (siehe 006b) sollen die Extensions der Adresse:

  • Organization.address:Strassenanschrift.line.extension:Adresszusatz
  • Organization.address:Strassenanschrift.line.extension:Hausnummer
  • Organization.address:Strassenanschrift.line.extension:Strasse in das OpenSlicing des Organization-Profils des VZD übernommen werden, auch wenn diese nicht explizit dort modelliert sind.
Profile
Referenzen

Eintrag für MedicationRequest.subject

ID F_010
Beschreibung

Das Befüllen des MedicationRequest.subject muss erfolgen, indem die Werte von

  • Patient.identifier.system
  • Patient.identifier.value

aus dem KbvBundle.patient.identifier übernommen werden und in der folgenden Form im ePA MedicationRequest angegeben werden:

  <subject>
    <identifier>
      <system value="http://fhir.de/sid/gkv/kvid-10" />
      <value value="X110411319" />
    </identifier>
  </subject>
Profile
Referenzen

Befüllung von Practitioner.name

ID F_011
Beschreibung

Der Practitioner.name.text ist ein Pflichtfeld und muss aus den Namensinformationen erzeugt werden.

Dabei ist folgende Bildungsregel anzuwenden:

def build_practitioner_name(practitioner):
  # Verknüpft Elemente einer Liste zu einem String, getrennt durch Leerzeichen
  def join_with_space(elements):
    return " ".join(elements)

  # Hilfsfunktion zum Abrufen des Werts einer Extension
  def get_extension_value(extensions, url):
    for ext in extensions:
      if ext.get("url") == url:
        return ext.get("valueString") or ext.get("valueCode", "")
    return ""

  # Namenszusätze und Präfix-Qualifier URLs
  namenszusatz_url = "http://hl7.org/fhir/StructureDefinition/humanname-namenszusatz"
  nachname_url = "http://hl7.org/fhir/StructureDefinition/humanname-own-name"
  vorsatzwort_url = "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix"
  prefix_qualifier_url = "http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier"

  # Zusätzliche Namenskomponenten aus den Extensions abrufen
  family_extensions = practitioner["name"][0]["family"]["extension"]
  namenszusatz = get_extension_value(family_extensions, namenszusatz_url)
  nachname = get_extension_value(family_extensions, nachname_url)
  vorsatzwort = get_extension_value(family_extensions, vorsatzwort_url)
  prefix_extensions = practitioner["name"][0].get("prefix", [{}])[0].get("extension", [])
  prefix_qualifier = get_extension_value(prefix_extensions, prefix_qualifier_url)

  # Zusammensetzung des Namens
  prefix = join_with_space([practitioner["name"][0].get("prefix", {}).get("value", "")])
  given_name = practitioner["name"][0].get("given", "")
  family_name = f"{vorsatzwort} {nachname} {namenszusatz}".strip()

  # Zusammensetzen des vollständigen Namens mit Leerzeichen dazwischen
  full_name = f"{prefix_qualifier} {prefix} {given_name} {family_name}".strip()

  return full_name


# Beispielhafte Verwendung
practitioner_example = {
  "name": [
    {
      "use": "official",
      "family": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/humanname-namenszusatz",
            "valueString": "von",
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/humanname-own-name",
            "valueString": "Müller",
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix",
            "valueString": "Dr.",
          },
        ],
        "family": "Müller",
      },
      "given": "Hans",
      "prefix": [
        {
          "extension": [
            {
              "url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier",
              "valueCode": "AC",
            }
          ],
          "value": "Prof.",
        }
      ],
    }
  ]
}

print(build_practitioner_name(practitioner_example))
Profile
Referenzen

Befüllung der Telematik-ID des Arztes

ID F_013-01
Beschreibung

Die Telematik-ID des Arztes wird wie folgt ermittelt und gesetzt:

  • Primär: Aus der QES-Signatur des Zertifikats.
  • Fallback: Wenn keine Telematik-ID in der QES-Signatur vorhanden ist, wird die Seriennummer des Zertifikats (Subject Serial Number) ausgelesen und die zugehörige Telematik-ID über die Nachschlagetabelle ermittelt.
  • Fehlerfall: Kann die Telematik-ID nicht ermittelt werden, wird die Verordnung nicht übertragen
Profile
Referenzen

Mapping des korrekten Practitioners

ID F_016
Beschreibung

Im https://simplifier.net/erezept/kbv_pr_erp_bundle sind zwei Practitioner erlaubt (AusstellendeVerschreibendeVerantwortlichePerson). Beim Mapping für provide-prescription muss der Practitioner übernommen werden, welcher in der Composition (https://simplifier.net/erezept/kbvprerpcomposition) unter “author” referenziert wird:

  <author> 
    <reference value="Practitioner/667ffd79-42a3-4002-b7ca-6b9098f20ccb"/> 
    <type value="Practitioner"/> 
  </author> 
  <attester> 
    <mode value="legal"/> 
    <party> 
      <reference value="Practitioner/d6f3b55d-3095-4655-96dc-da3bec21271c"/> 
    </party> 
  </attester>
Profile
Referenzen

Mapping von KBV_PR_ERP_Medication_Compounding

ID F_017
Beschreibung

Handelt es sich bei der ingredient des QuellProfils um einen PZN Codierten Wirkstoff muss eine contained Medication vom Typ "EPA Medication Ingredient" hinzugefügt werden

Hinweis: F_009 findet hier auch Anwendung

Daher muss wenn Medication eine KBV_PR_ERP_Medication_Compounding ist:

Für jedes ingredient:

  1. Wenn ingredient.itemCodeableConcept.coding.system=http://fhir.de/CodeSystem/ifa/pzn dann weiter zu 2.
  2. Füge eine Medication (contained) hinzu vom Typ "EPA Medication Ingredient":
  <Medication>
      <id value="MedicationHydrocortison-FD" />
      <meta>
          <profile value="https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-pzn-ingredient" />
      </meta>
      <!-- "EPA Medication Ingredients" haben haben immer diese Extension -->
      <extension url="https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-type-extension">
          <valueCoding>
              <system value="http://snomed.info/sct" />
              <version value="http://snomed.info/sct/900000000000207008/version/20240201" />
              <code value="781405001" />    
              <display value="Medicinal product package (product)" />
          </valueCoding>
      </extension>
      <code>
          <coding>
              <system value="http://fhir.de/CodeSystem/ifa/pzn" />
              <code value="03424249" />                       <!-- Wert von ingredient.itemCodeableConcept.coding.code -->
              <display value="Hydrocortison 1% Creme" />      <!-- Wert von ingredient.itemCodeableConcept.text -->
          </coding>
          <text value="Hydrocortison 1% Creme" />             <!-- Wert von ingredient.itemCodeableConcept.text -->
      </code>
  </Medication>
  1. In der Ziel Medication.ingredient setze die itemReference:
<itemReference>
    <reference value="#MedicationHydrocortison-FD" />
</itemReference>

Hinweise:

"EPA Medication Ingredients" haben haben immer die Extension:

  <extension url="https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-type-extension">
    <valueCoding>
        <system value="http://snomed.info/sct" />
        <version value="http://snomed.info/sct/900000000000207008/version/20240201" />
        <code value="781405001" />    
        <display value="Medicinal product package (product)" />            
    </valueCoding>
  </extension>

Die Werte in der EPA Medication Ingredients für <code> werden wie folgt gesetzt

  • code: Wert von ingredient.itemCodeableConcept.coding.code
  • display: Wert von ingredient.itemCodeableConcept.text
  • text: Wert von ingredient.itemCodeableConcept.text
Profile
Referenzen

Erzeugen von Medication.extension:type

ID F_020
Beschreibung

Bei der Erzeugung von

  • EPA Medication
  • EPA Medication Ingredient
  • EPA Pharmaceutical Product Medication

soll nach Möglichkeit Medication.extension:type erzeugt und mit dem korrekten Wert belegt werden.

Folgende Optionen stehen für ePA 3.0 zur Verfügung (s. EPAMedicationTypeVS):

Code Display Deutsche Entsprechung
781405001 Medicinal product package (product) Fertigarzneimittel
1208954007 Extemporaneous preparation (product) Rezeptur
373873005 Pharmaceutical / biologic product (product) Komponente einer Kombipackung

Für folgende Konstellationen sind die Codes entsprechend zu setzen:

# Konstellation Quellprofil Erkennung/Kriterium EPA Medication (type) EPA Medication Ingredient (type) EPA Pharmaceutical Product Medication (type)
1 PZN Verordnung KBV_PR_ERP_Medication_PZN .form.code != KPG Fertigarzneimittel (781405001, Medicinal product package (product)) n/a n/a
2 PZN Verordnung einer Kombipackung KBV_PR_ERP_Medication_PZN .form.code = KPG Extension nicht setzen (wird über .form.code erkannt) n/a n/a
3 Wirkstoffverordnung KBV_PR_ERP_Medication_Ingredient — Fertigarzneimittel (781405001, Medicinal product package (product)) n/a n/a
4 Freitextverordnung KBV_PR_ERP_Medication_FreeText — Extension nicht setzen n/a n/a
5 Rezeptur ohne PZNs in Rezepturbestandteilen KBV_PR_ERP_Medication_Compounding .ingredient.itemCodeableConcept.text Rezeptur (1208954007, Extemporaneous preparation (product)) n/a n/a
6 Rezeptur mit PZNs in Rezepturbestandteilen KBV_PR_ERP_Medication_Compounding .ingredient.itemCodeableConcept.coding.code:pzn Rezeptur (1208954007, Extemporaneous preparation (product)) Fertigarzneimittel (781405001, Medicinal product package (product)) n/a
Profile