Operation API: Medikationsplanungsdaten mit Verschreibungsdaten verlinken
Das Hauptziel der FHIR Operation $link-prescription-process
besteht darin, Verschreibungsdaten mit der Medikationsplanung zu verlinken. Durch den Einsatz dieser Operation soll eine nahtlose Verbindung zwischen geplanten und tatsächlich verschriebenen Arzneimitteln ermöglicht werden. Dies dient der Verbesserung der Medikamentenmanagement- und Abgabepraktiken.
Die Operation $link-prescription-process
ermöglicht die Zuordnung von Verschreibungen zu einem geplanten Medikament. Dies erfolgt durch die Angabe, dass die durch den Verschreibungsprozess erzeugte MedicationRequest-Ressource mittels einer FHIR Extension (MedicationRequest Linked Statement) auf die MedicationStatement-Instanz verweist, die die Medikamentenplanung repräsentiert. Durch diese Verknüpfung wird jede Verschreibung eines geplanten Medikaments mit dem Verschreibungs- und Dispensierungsprozess selbst verbunden, was die Verwaltung und Überprüfung der Medikamentenplanung vereinfacht.
Asynchrone Verlinkung von Verschreibungsdaten mittels FHIR Resource Task
Das Ziel dieser asynchronen Verlinkungsstrategie ist es, einen Mechanismus für die Verarbeitung und Verlinkung von Verschreibungsdaten zu schaffen, selbst wenn diese Daten zum Zeitpunkt des ersten Verlinkungsversuchs noch nicht vom E-Rezept-Fachdienst übermittelt wurden. Durch die Nutzung der FHIR Task-Ressource wird ein kontrollierter Workflow ermöglicht, der die Nachverfolgung des Verlinkungsstatus von Verschreibungsdaten erleichtert und ferner sicherstellt, dass alle notwendigen Informationen korrekt und zeitgerecht verknüpft werden.
Task-Profil: EPAMedicationPrescriptionLinkTask
Ablauf der Operation
Bearbeitung ausstehender Tasks durch $provide-prescription-erp
Operation API: Verschreibungsdaten einstellen (E-Rezept-Fachdienst)
Die Hard-Delete-Funktion stellt sicher, dass die Task-Ressource vollständig und unwiederbringlich aus dem Medication Service entfernt wird, ohne dass eine Versionshistorie verbleibt. Dies garantiert eine effiziente und sichere Verwaltung der Verlinkungsprozesse.
Automatisierte Löschung veralteter Task-Instanz
Um die Datenintegrität im Medication Service zu wahren, ist es notwendig, nicht bearbeitete Task-Ressourcen, die älter als ein Monat sind, automatisch zu entfernen. Dieser Prozess soll sicherstellen, dass der Medication Service frei von veralteten Daten bleibt, die keine Relevanz mehr für den aktuellen Betriebsablauf haben. Dabei ist es besonders wichtig, dass beim Löschen dieser Ressourcen keine FHIR-Versionsartefakte verbleiben. Um eine vollständige Entfernung der identifizierten Task-Ressourcen zu gewährleisten, wird die Hard-Delete-Funktion eingesetzt.
OperationDefinition
Operation Definition: Link Prescription Process
Geschäftslogik
Überprüfung der Telematik-ID bei einem Schreibvorgang
Jeder Lese- und Schreibvorgang erfordert die Authentifizierung der Leistungserbringerinstitution mittels OpenID Connect. Das signierte ID-Token des Identity Providers (IDP-Dienst) MUSS die Telematik-ID des zugreifenden Nutzers enthalten. Bei einem Schreibvorgang MUSS die Übereinstimmung der Telematik-ID des Nutzers überprüft und sichergestellt werden.
Erstellung des Wertes für den RxPrescriptionProcessIdentifier
Der im Medication Service erzeugte Identifier folgt dem Schema prescriptionId
+ "_" + authoredOn
[YYYYMMDD]. Dabei wird die Verschreibungs-ID (Prescription-ID) mit dem Datum der Verschreibung kombiniert, um einen eindeutigen Identifier zu erzeugen. Das Datum wird im Format YYYYMMDD
(Jahr, Monat, Tag) angegeben.
Beispiel
{ "system": "https://gematik.de/fhir/epa-medication/sid/rx-prescription-process-identifier", "value": "160.153.303.257.459_20250122" }
Voraussetzungen
Dem Medication Service MÜSSEN zur Auswertung in Operationen für jede Aktivität die folgenden Informationen bereitstehen:
- Name des Nutzers
- Nutzergruppe/Rolle ((profession-)oid)
- Kennung (Telematik-ID oder KVNR)
- Hinweis auf eine gültige Befugnis des aktuellen Benutzers (requestor)
HTTP Header-Parameter
Ein ePA-Client MUSS die folgenden HTTP Header bei einer Anfrage an den Medication Service setzen:
Name | Anforderung | Datentyp | Beschreibung |
---|---|---|---|
x-insurantid | MUSS | String | Health Record Identifier |
x-useragent | KANN | String | User Agent Information |
X-Request-ID | MUSS | String | UUID der Nachricht |
Wiederholungsintervalle
Die folgenden Wiederholungsintervalle werden im Falle einer Fehlerantwort definiert:
- '409' Conflict (statusMismatch)
- etwa 24 Stunden
- '500' Internal Error
- etwa 10 Minuten
Erlaubte Nutzergruppen
professionOID |
---|
oid_versicherter |
oid_praxis_arzt |
oid_krankenhaus |
oid_institution |
oid_krankenhaus |
oid_institution-vorsorge-reha |
oid_zahnarztpraxis |
oid_praxis_psychotherapeut |
oid_institution-oegd |
oid_öffentliche_apotheke |
oid_institution-pflege |
oid_institution-geburtshilfe |
oid_praxis-physiotherapeut |
oid_institution-arbeitsmedizin |
Interaktion (MedicationStatement/[id]/$link-prescription-process)
POST [base]/epa/medication/api/v1/fhir/MedicationStatement/[id]/$link-prescription-process
OperationId: linkPrescriptionProcess_MedicationSvc
Beispielanfrage
{ "resourceType": "Parameters", "id": "example-epa-op-link-prescription-process-input-parameters-1", "meta": { "profile": [ "https://gematik.de/fhir/epa-medication/StructureDefinition/epa-op-link-prescription-process-input-parameters" ] }, "parameter": [ { "name": "rxPrescription", "part": [ { "name": "prescriptionId", "valueIdentifier": { "system": "https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId", "value": "160.153.303.257.459" } }, { "name": "authoredOn", "valueDate": "2025-01-22" } ] }, { "name": "performer", "part": [ { "name": "organization", "resource": { "resourceType": "Organization", "id": "be51e0d2-783d-4e21-b16b-1a4cd7403515", "meta": { "tag": [ { "system": "https://gematik.de/fhir/directory/CodeSystem/Origin", "code": "ldap" } ], "profile": [ "https://gematik.de/fhir/directory/StructureDefinition/OrganizationDirectory" ] }, "identifier": [ { "system": "https://gematik.de/fhir/sid/telematik-id", "value": "9-2.58.00000040" } ], "active": true, "type": [ { "coding": [ { "code": "1.2.276.0.76.4.58", "system": "https://gematik.de/fhir/directory/CodeSystem/OrganizationProfessionOID", "display": "Betriebsstätte gematik" } ] } ], "name": "gematik GmbH", "alias": [ "gematik" ], "address": [ { "text": "gematik GmbH\nFriedrichstr. 136, \n10117 Berlin", "line": [ "Friedrichstr. 136" ], "city": "Berlin", "district": "Mitte", "state": "Berlin", "postalCode": "10117", "country": "DE" } ], "contact": [ { "purpose": { "coding": [ { "code": "ADMIN", "system": "http://terminology.hl7.org/CodeSystem/contactentity-type" } ] }, "name": { "text": "gematik ITSM" }, "telecom": [ { "system": "email", "value": "betrieb@gematik.de" } ] } ] } }, { "name": "practitioner", "resource": { "resourceType": "Practitioner", "id": "498c345f-31f5-4da6-9f04-00fa2bc8af7c", "meta": { "tag": [ { "system": "https://gematik.de/fhir/directory/CodeSystem/Origin", "code": "ldap" } ], "profile": [ "https://gematik.de/fhir/directory/StructureDefinition/PractitionerDirectory" ] }, "identifier": [ { "system": "https://gematik.de/fhir/sid/telematik-id", "value": "1-1.58.00000040" }, { "system": "https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR", "value": "123456789" } ], "active": true, "qualification": [ { "code": { "coding": [ { "code": "1.2.276.0.76.4.31", "system": "https://gematik.de/fhir/directory/CodeSystem/PractitionerProfessionOID" } ] } }, { "code": { "coding": [ { "code": "010", "system": "urn:oid:1.2.276.0.76.5.514", "display": "FA Allgemeinmedizin" } ] } }, { "code": { "coding": [ { "code": "523", "system": "urn:oid:1.2.276.0.76.5.514", "display": "FA Innere Medizin und (SP) Gastroenterologie" } ] } } ], "name": [ { "prefix": [ "Dr." ], "given": [ "Max", "Manfred" ], "family": "Musterman", "text": "Dr. Max Manfred Mustermann" } ] } }, { "name": "practitionerRole", "resource": { "resourceType": "PractitionerRole", "id": "ExampleEPAPractitionerRoleMax", "meta": { "versionId": "1", "lastUpdated": "2023-02-03T11:20:00+01:00", "profile": [ "https://gematik.de/fhir/epa/StructureDefinition/epa-practitioner-role" ] }, "organization": { "identifier": { "system": "https://gematik.de/fhir/sid/telematik-id", "type": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "code": "PRN", "version": "2.9.0", "display": "Provider number" } ] }, "value": "9-2.58.00000040" }, "reference": "Organization/be51e0d2-783d-4e21-b16b-1a4cd7403515" }, "practitioner": { "reference": "Practitioner/498c345f-31f5-4da6-9f04-00fa2bc8af7c", "identifier": { "type": { "coding": [ { "version": "2.9.0", "code": "PRN", "system": "http://terminology.hl7.org/CodeSystem/v2-0203", "display": "Provider number" } ] }, "system": "https://gematik.de/fhir/sid/telematik-id", "value": "1-1.58.00000040" } }, "code": [ { "coding": [ { "code": "API", "system": "https://gematik.de/fhir/terminology/CodeSystem/epa-role-care-cs", "display": "Ärztliche(r) PraxisinhaberIn", "version": "1.0.0" } ], "text": "Ärztlicher Praxisinhaber" } ], "specialty": [ { "coding": [ { "code": "01", "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_BAR2_ARZTNRFACHGRUPPE", "display": "Allgemeinmedizin", "version": "1.03" } ], "text": "Allgemeinmedizin" } ], "telecom": [ { "system": "phone", "value": "0300000000000000" } ] } } ] } ] }
<Parameters xmlns="http://hl7.org/fhir"> <id value="example-epa-op-link-prescription-process-input-parameters-1" /> <meta> <profile value="https://gematik.de/fhir/epa-medication/StructureDefinition/epa-op-link-prescription-process-input-parameters" /> </meta> <parameter> <name value="rxPrescription" /> <part> <name value="prescriptionId" /> <valueIdentifier> <system value="https://gematik.de/fhir/erp/NamingSystem/GEM_ERP_NS_PrescriptionId" /> <value value="160.153.303.257.459" /> </valueIdentifier> </part> <part> <name value="authoredOn" /> <valueDate value="2025-01-22" /> </part> </parameter> <parameter> <name value="performer" /> <part> <name value="organization" /> <resource> <Organization> <id value="be51e0d2-783d-4e21-b16b-1a4cd7403515" /> <meta> <profile value="https://gematik.de/fhir/directory/StructureDefinition/OrganizationDirectory" /> <tag> <system value="https://gematik.de/fhir/directory/CodeSystem/Origin" /> <code value="ldap" /> </tag> </meta> <identifier> <system value="https://gematik.de/fhir/sid/telematik-id" /> <value value="9-2.58.00000040" /> </identifier> <active value="true" /> <type> <coding> <system value="https://gematik.de/fhir/directory/CodeSystem/OrganizationProfessionOID" /> <code value="1.2.276.0.76.4.58" /> <display value="Betriebsstätte gematik" /> </coding> </type> <name value="gematik GmbH" /> <alias value="gematik" /> <address> <text value="gematik GmbH\nFriedrichstr. 136, \n10117 Berlin" /> <line value="Friedrichstr. 136" /> <city value="Berlin" /> <district value="Mitte" /> <state value="Berlin" /> <postalCode value="10117" /> <country value="DE" /> </address> <contact> <purpose> <coding> <system value="http://terminology.hl7.org/CodeSystem/contactentity-type" /> <code value="ADMIN" /> </coding> </purpose> <name> <text value="gematik ITSM" /> </name> <telecom> <system value="email" /> <value value="betrieb@gematik.de" /> </telecom> </contact> </Organization> </resource> </part> <part> <name value="practitioner" /> <resource> <Practitioner> <id value="498c345f-31f5-4da6-9f04-00fa2bc8af7c" /> <meta> <profile value="https://gematik.de/fhir/directory/StructureDefinition/PractitionerDirectory" /> <tag> <system value="https://gematik.de/fhir/directory/CodeSystem/Origin" /> <code value="ldap" /> </tag> </meta> <identifier> <system value="https://gematik.de/fhir/sid/telematik-id" /> <value value="1-1.58.00000040" /> </identifier> <identifier> <system value="https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR" /> <value value="123456789" /> </identifier> <active value="true" /> <name> <text value="Dr. Max Manfred Mustermann" /> <family value="Musterman" /> <given value="Max" /> <given value="Manfred" /> <prefix value="Dr." /> </name> <qualification> <code> <coding> <system value="https://gematik.de/fhir/directory/CodeSystem/PractitionerProfessionOID" /> <code value="1.2.276.0.76.4.31" /> </coding> </code> </qualification> <qualification> <code> <coding> <system value="urn:oid:1.2.276.0.76.5.514" /> <code value="010" /> <display value="FA Allgemeinmedizin" /> </coding> </code> </qualification> <qualification> <code> <coding> <system value="urn:oid:1.2.276.0.76.5.514" /> <code value="523" /> <display value="FA Innere Medizin und (SP) Gastroenterologie" /> </coding> </code> </qualification> </Practitioner> </resource> </part> <part> <name value="practitionerRole" /> <resource> <PractitionerRole> <id value="ExampleEPAPractitionerRoleMax" /> <meta> <versionId value="1" /> <lastUpdated value="2023-02-03T11:20:00+01:00" /> <profile value="https://gematik.de/fhir/epa/StructureDefinition/epa-practitioner-role" /> </meta> <practitioner> <reference value="Practitioner/498c345f-31f5-4da6-9f04-00fa2bc8af7c" /> <identifier> <type> <coding> <system value="http://terminology.hl7.org/CodeSystem/v2-0203" /> <version value="2.9.0" /> <code value="PRN" /> <display value="Provider number" /> </coding> </type> <system value="https://gematik.de/fhir/sid/telematik-id" /> <value value="1-1.58.00000040" /> </identifier> </practitioner> <organization> <reference value="Organization/be51e0d2-783d-4e21-b16b-1a4cd7403515" /> <identifier> <type> <coding> <system value="http://terminology.hl7.org/CodeSystem/v2-0203" /> <version value="2.9.0" /> <code value="PRN" /> <display value="Provider number" /> </coding> </type> <system value="https://gematik.de/fhir/sid/telematik-id" /> <value value="9-2.58.00000040" /> </identifier> </organization> <code> <coding> <system value="https://gematik.de/fhir/terminology/CodeSystem/epa-role-care-cs" /> <version value="1.0.0" /> <code value="API" /> <display value="Ärztliche(r) PraxisinhaberIn" /> </coding> <text value="Ärztlicher Praxisinhaber" /> </code> <specialty> <coding> <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_BAR2_ARZTNRFACHGRUPPE" /> <version value="1.03" /> <code value="01" /> <display value="Allgemeinmedizin" /> </coding> <text value="Allgemeinmedizin" /> </specialty> <telecom> <system value="phone" /> <value value="0300000000000000" /> </telecom> </PractitionerRole> </resource> </part> </parameter> </Parameters>
Beispielantwort
{ "resourceType": "OperationOutcome", "id": "255002c7-aa1b-4163-bdd4-ede482453cca", "meta": { "profile": [ "https://gematik.de/fhir/epa/StructureDefinition/epa-operation-outcome" ] }, "issue": [ { "severity": "information", "code": "informational", "details": { "coding": [ { "code": "MEDICATIONSVC_OPERATION_SUCCESS", "system": "https://gematik.de/fhir/epa/CodeSystem/epa-operation-outcome-codes-cs", "display": "Operation Successfully Completed in Medication Service" } ] } } ] }
<OperationOutcome xmlns="http://hl7.org/fhir"> <id value="255002c7-aa1b-4163-bdd4-ede482453cca" /> <meta> <profile value="https://gematik.de/fhir/epa/StructureDefinition/epa-operation-outcome" /> </meta> <issue> <severity value="information" /> <code value="informational" /> <details> <coding> <system value="https://gematik.de/fhir/epa/CodeSystem/epa-operation-outcome-codes-cs" /> <code value="MEDICATIONSVC_OPERATION_SUCCESS" /> <display value="Operation Successfully Completed in Medication Service" /> </coding> </details> </issue> </OperationOutcome>
Antwort-Status-Codes
Status Code | Bedingung | Error Code | Bemerkung |
---|---|---|---|
200 | Successful operation | EPA OperationOutcome | |
400 | Invalid request | EPA OperationOutcome | |
403 | Requestor role is not in the list of allowed user groups | invalidOid | |
403 | Requestor is not entitled | notEntitled | |
403 | ID-Token or Insurant-ID mismatch | EPA OperationOutcome | |
404 | Resource is not known | EPA OperationOutcome | |
404 | Unknown resource type | EPA OperationOutcome | |
404 | Not Found | EPA OperationOutcome | |
404 | Health record is in state UNKNOWN or INITIALIZED | noHealthRecord | (siehe 'Wiederholungsintervalle') |
409 | Health record is in state SUSPENDED | statusMismatch | (siehe 'Wiederholungsintervalle') |
423 | If the insurant objected to the medication process or objected to the submission of prescription and dispensation data into the ePA system, the Medication Service is locked. | locked | |
500 | Any other error | internalError | (siehe 'Wiederholungsintervalle') |
Serviceübergreifende Error Codes ohne Verweis auf EPA OperationOutcome MÜSSEN mit dem entsprechenden HTTP Status Code vom Medication Service mit dem Media Type application/json
nach folgendem Schema zurückgegeben werden:
{ "errorCode": "statusMismatch" }