Implementation Guide
ePA Medication Service
Version 1.0.5-ballot.1 - draft

Operation API: Dispensierinformationen einstellen (E-Rezept-Fachdienst)

Die Operation Dispensierinformationen einstellen (E-Rezept-Fachdienst) im Medication Service dient dazu, Informationen über die Arzneimittelabgabe, die auf Basis einer Verschreibung erfolgt, in den Medication Service einzutragen. Diese Operation wird vom E-Rezept-Fachdienst verwendet, wenn ein Versicherter sein Arzneimittel in einer Apotheke erhält. Sie dokumentiert, dass das Arzneimittel gemäß der Verschreibung abgegeben wurde, einschließlich der Details wie Menge, Abgabedatum und Informationen zur Apotheke. Dies ermöglicht einen vollständigen Überblick über die verschriebenen und dispensierten Arzneimittel des Versicherten.

ePA-AktensystemePA-Aktensystem / VAUAVSE-Rezept-FachdienstInformation ServiceMedication ServiceVAUSessionManagement1Anfrage: Dispensierinformationen übermitteln2Durchführen der standardmäßigen Workflow-Logik des E-Rezept-Fachdienstes3Antwort: Erfolg4Persistieren der Dispensierinformationen in einer Warteschlangefür die asynchrone ÜbertragungrefLokalisierung der Service-Endpunkte der ePA und der Akte eines Versicherten5Anfrage: Widerspruchsinformationen zum Einstellen durch E-Rezept-Fachdienst6Antwort: Widerspruchsinformationenalt[Widerspruch zum Einstellen durch E-Rezept-Fachdienst vorhanden]7Abbruch. Löschen der Dispensierinformationen aus der Warteschlange[Kein Widerspruch zum Einstellen durch E-Rezept-Fachdienst]refLogin in die Akte des Versicherten8Erzeugen der FHIR-Ressourcen MedicationDispense, Medication, Organizationauf Grundlage der Dispensierinformationen9Übermittlung der erzeugten FHIR-Ressourcen als FHIR Operation per HTTP POST10FHIR-Ressourcenpersistierenalt[successful case]11Antwort: Transaktion erfolgreich12Löschen der Dispensierinformationen aus der Warteschlange13Abbruch. Die Dispensierinformationen bleiben in der Warteschlange für eine spätere Übertragung
Abbildung: Anwendungsfall Dispensierinformationen einstellen

Nachricht

Die Nachricht zum Übertragen von Dispensierinformationen wird als HTTP POST-Anfrage an den Medication Service gesendet.

Auslösung

Der E-Rezept-Fachdienst sendet eine Dispensierinformationen einstellen-Nachricht an den Medication Service, um eine bereits erstellte elektronische Dispensierung zu übertragen. Der Medication Service verarbeitet die empfangenen Daten und speichert die Dispensierinformationen dauerhaft.

FHIR Operation API

Der Medication Service MUSS die Operation API: Dispensierinformationen einstellen (E-Rezept-Fachdienst) gemäß der FHIR OperationDefinition Provide Dispensation eRP ausführen. Die Verarbeitung der Dispensierinformationen MUSS entsprechend den in der OperationDefinition festgelegten Regeln und Strukturen erfolgen. Der Medication Service MUSS die Operation Dispensierinformationen einstellen (E-Rezept-Fachdienst) mittels einer HTTP POST-Anfrage verarbeiten. Die empfangenen Dispensierinformationen MÜSSEN verarbeitet und die Dispensierinformationen dauerhaft gespeichert werden. Der Medication Service MUSS für die Operation Dispensierinformationen einstellen (E-Rezept-Fachdienst) einen Partial Success ermöglichen.
  • Falls einzelne Dispensierungen erfolgreich verarbeitet wurden, MUSS der Medication Service die zugehörigen prescriptionId und authoredOn Werte in der Antwort zurückgeben
  • Falls einzelne Dispensierungen nicht verarbeitet werden können, MUSS der Medication Service für diese ein OperationOutcome in der Antwort bereitstellen
  • Auch bei einer erfolgreichen Verarbeitung MUSS der Medication Service ein OperationOutcome mit einer entsprechenden Bestätigung bereitstellen
  • Der HTTP-Response-Code MUSS 200 OK sein, unabhängig davon, ob eine oder mehrere Dispensierungen fehlschlagen

Geschäftslogik

Das folgende Aktivitätsdiagramm illustriert die Geschäftslogik der Operation Dispensierinformationen einstellen (E-Rezept-Fachdienst) im Medication Service.

$provide-dispensation-erpValidate allMedication,OrganizationandMedicationDispensefromInput-Parameters[x].RxDispensation.part Validation successful yesnoGenerateRxPrescriptionProcessIdentifierfrom values ofInput-Parameters[x].RxDispensation.part.authoredOnandInput-Parameters[x].RxDispensation.part.PrescriptionId Check whether there is aMedicationRequestwithRxPrescriptionProcessIdentifier andstatus NOTcompleted noyesAdd errorOperationOutcome(MEDICATIONSVC_PRESCRIPTION_NO_EXIST)or (MEDICATIONSVC_PRESCRIPTION_STATUS) toOutput-ParameterstransactionSet allMedicationDispensewithextension[RxPrescriptionProcessIdentifier] equal toRxPrescriptionProcessIdentifier in Medication Service to StatusdeclinedSet allMedicationwithextension[RxPrescriptionProcessIdentifier] equal toRxPrescriptionProcessIdentifierto StatusinactiveCheck for existingOrganizationwith TelematikID from Input-Parameters[x].RxDispensation.part.OrganizationOrganizationexists?yesno«Update»OrganizationfromInput-Parameters[x].RxDispensation.part.Organization identifier[TelematikID] = Value(TelematikID)Replace all other elements with given resource instance«Create»OrganizationfromInput-Parameters[x].RxDispensation.part.Organization identifier[TelematikID] = Value(TelematikID)Set all other elements with given resource instanceloop GetMedicationresource referenced byMedicationDispense fromInput-Parameters[x].RxDispensation.part Generate forEPAMedicationUniqueIdentifierfrom hashed Input-Medication Verify whether there is aMedicationwithRxPrescriptionProcessIdentifierextensionandgenerated hash forEPAMedicationUniqueIdentifierin the Medication Service yesnoUpdateMedicationwithRxPrescriptionProcessIdentifierextensionandEPAMedicationUniqueIdentifierto StatusactiveGenerate forRxOriginatorProcessIdentifierfrom values ofInput-Parameters[x].RxDispensation.part.Medication.Id and Input-PrescriptionId«Create»MedicationfromInput-Parameters[x].RxDispensation.part.Medicationidentifier[EPAMedicationUniqueIdentifier] = Value(EPAMedicationUniqueIdentifier)identifier[RxOriginatorProcessIdentifier] = Value(RxOriginatorProcessIdentifier)extension[RxPrescriptionProcessIdentifier] = Value(RxPrescriptionProcessIdentifier)status =activeSet all other elements with given resource instanceGenerate forRxOriginatorProcessIdentifierfrom values ofInput-Parameters[x].RxDispensation.part.MedicationDispense.Id and Input-PrescriptionId«Create»MedicationDispensefromInput-Parameters[x].RxDispensation.part.MedicationDispenseidentifier[RxOriginatorProcessIdentifier] = Value(RxOriginatorProcessIdentifier)extension[RxPrescriptionProcessIdentifier] = Value(RxPrescriptionProcessIdentifier)medicationReference = Reference(Medication)performer.actor = Reference(Organization)authorizingPrescription = Reference(MedicationRequest)status =completedGet nextMedicationDispensefrom currentRxDispensation Input-Parameterspart listno If nextMedicationDispenseinInput-Parameters RxDispensationpart list exists yesSetMedicationRequestwithRxPrescriptionProcessIdentifierto StatuscompletedAdd informationOperationOutcome(MEDICATIONSVC_OPERATION_SUCCESS) toOutput-ParametersAdd errorOperationOutcome(NO_VALID_STRUCTURE) toOutput-ParametersGet nextRxDispensationfromInput-ParametersnoIf nextInput-ParametersexistsyesReturn "Output-Parameters"
Abbildung: Geschäftslogik des Medication Service für die Operation Dispensierinformationen einstellen (E-Rezept-Fachdienst)

Sicherheitsanforderungen

Generelle Sicherheitsanforderungen werden hier festgehalten.