TIFlow - Verordnungen für Arzneimittel
Version 2.0.0-ballot.1 - ci-build

Mapping des Verordnenden für Verordnungsdaten

Diese Seite beschreibt Anforderungen und Umsetzungsunterstützung für das Mapping vom

Wichtige Punkte beim Mapping der Practitioner Ressource

Die folgenden Punkte sind relevant für das Mapping der Practitioner Ressource:

  • Die Telematik-ID wird aus dem Accesstoken der Anfrage bezogen (F_013)
  • Der Name des Practitioners muss aus Bestandteilen zusammengesetzt werden (F_011)
  • Es muss überprüft werden, welcher Practitioner zu mappen ist (F_016)
  • Die Qualifikation des Practitioners darf nicht übertragen werden

Generelles Mapping des Profils

Die folgende Tabelle stellt generell das Mapping der beiden Profile gegenüber:

Feld-Mappings

Quelle (Eingangsdaten) Ziel (Ausgabedaten) Aktion Transformation & Beschreibung
KBVPRFORPractitioner.meta PractitionerDirectory.meta.profile Fester Wert setzt festen Wert: https://gematik.de/fhir/directory/StructureDefinition/PractitionerDirectory
KBVPRFORPractitioner.name PractitionerDirectory.name Manuell Zum Erzeugen von name.text siehe Transformationsregel F_011 | Quelle: Practitioner.name.text
KBVPRFORPractitioner.qualification PractitionerDirectory.qualification Nicht Übertragen Feld wird nicht gemappt | Quelle: Practitioner.qualification:ASV-Fachgruppennummer
KBVPRFORPractitioner.qualification PractitionerDirectory.qualification Nicht Übertragen Feld wird nicht gemappt | Quelle: Practitioner.qualification:Berufsbezeichnung
KBVPRFORPractitioner.qualification PractitionerDirectory.qualification Nicht Übertragen Feld wird nicht gemappt | Quelle: Practitioner.qualification:Typ

Transformationsregeln

Folgende zusätzliche Anmerkungen und Regeln sind für das Mapping zu umzusetzen:

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