ELGA e-Diagnose R4 (Draft), published by ELGA GmbH. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7Austria/ELGA-e-Diagnose-R4/ and changes regularly. See the Directory of published versions
Im Folgenden werden standardisierte Interaktionen für den lesenden und schreibenden Zugriff auf die Diagnosenliste eines Patienten bzw. einer Patientin erläutert, die für alle technischen Use Cases relevant sind.
ToDo: Wording Liste, eDiagnosenliste,…
List-History-Read
Der History Read dient ausschließlich der Anzeige historischer Versionen einer Liste. Die Fachanwendung stellt bereits persistierte historische Collection Bundles unverändert bereit. Der Zugriff erfolgt lesend und ermöglicht keine nachfolgende Bearbeitung der Liste.
Ablauf
Der GDA fürht ein GET auf das persistierte Collection Bundle der Liste aus.
Die Fachanwendung prüft, on die Liste vorhanden ist.
Ist keine Liste vorhanden, wird ein leeres Ergebnis zurückgeliefert.
Ist eine Liste vorhanden, wird das aktuelle oder angeforderte historische Collection Bundle zurückgeliefert.
Das Collection Bundle enthält:
die List-Ressource
alle referenzierten Ressourcen
Beim List History Read erfolgt keine Veränderung von Flags, Status oder Inhalten durch die Fachanwendung.
Der Zugriff dient ausschließlich der Anzeige bzw. Informationsabfrage von aktueller oder historischer Listversionen.
Sequenzdiagramm List History Read
Beispiele für Zugriffe mittels Suchparameter:
Aktuelle Listenversion der relevanten Diagnosen (Conditions) mit dem Suchparameter Patient abrufen: GET [base]/Bundle?type=collection&_count=1&_sort=-timestamp&list.subject={bPK-GH}&list.code=http://loinc.org|11450-4
Alle Listenversionen der relevanten Operationen (Procedures) mit dem Suchparameter Patient abrufen: GET [base]/Bundle?type=collection&_sort=-timestamp&list.subject={bPK-GH}&list.code=http://loinc.org|47519-4
List-Read
List Read dient dem Abruf der Liste und der Vorbereitung einer nachfolgenden Änderung.
Ablauf
Der GDA führt einen POST $list-read auf das Collection Bundle aus, dass die Liste mit allen zugehörigen relevanten Ressourcen enthält.
Die Fachanwendung prüft auf Existenz der Liste für die angegebene Patientin bzw. den angegebenen Patienten.
Ist keine Liste vorhanden, wird dieser erstellt siehe Liste-initialisieren und
eine leere Liste mit dem emptyReason notstarted wird zurückgeliefert.
Existiert bereits eine Liste, wird von der Fachanwendung aus diesem ein Collection Bundle zur Auslieferung bereitgestellt. Die Inhalte werden von der Fachanwendung wie folgt aufbereitet:
Falls der vorherige GDA neue Listeneinträge hinzugefügt oder bestehende geändert hat (List.entry.flag haben den Wert new oder changed), werden diese auf unchanged gesetzt.
Falls der vorherige GDA Listenneinträge beendet hat (deren List.entry.flag haben den Wert removed), werden diese Einträge aus der Liste entfernt.
Falls der vorherige GDA alle vorhandenen Einträge mit removed gekennzeichnet hat, wird List.emptyReason mit nilknown zurückgeliefert, um nachfolgenden GDA zu signalisieren, dass der Patient zum Zeitpunkt des letzten Schreibens keine Einträge hatte.
Die Fachanwendung liefert an den GDA die Liste und alle referenzierten Ressourcen.
Ziel ist ein neutraler, weiterbearbeitbarer Zustand für den abrufenden GDA.
Sequenzdiagramm List Read
List-Write
List Write ist eine eigenständige Operation, die ausschließlich im Kontext eines zuvor ausgeführtenList-Read erfolgen darf.
Ablauf
Der GDA übermittelt via POST $ListWrite die aktualisierte Liste als Transaction Bundle:
alle neuen und geänderten und zu entfernenden Ressourcen sind inline im Bundle enthalten,
alle unveränderten Ressourcen werden nur referenziert.
Die Fachanwendung prüft, ob der übermittelte List.identifier mit dem List.identifier der temporär gespeicherten Listenversion übereinstimmt (d.h. es wurde zwischenzeitlich kein anderer Schreibvorgang durchgeführt).
Stimmt der List.identifier nicht überein, lehnt die Fachanwendung das Speichern ab.
Es muss erneut ein List Read ausgeführt werden. Die Änderungen sind anschließend auf Basis der aktuellen Listversion erneut vorzunehmen und zu speichern.
Ist die Prüfung erfolgreich, validiert die Fachanwendung die neue Liste und stellt sicher, dass keine unzulässigen Zustandsübergänge vorgenommen wurden.
Bei erfolgreicher Validierung:
werden die übermittelten Änderungen in die Ressourcen übernommen,
und auf Basis der aktualisierten Ressource erstellt die Fachanwendung ein neues Collection Bundle, das als neue Lsite persistiert wird.
Der GDA erhält eine Meldung, dass die Liste erfolgreich aktualisiert wurde.
Sequenzdiagramm List Write
Abgelehnter List Write
Ablauf
GDA 1 führt einen POST $ListRead auf die Liste einer Patientin bzw. eines Patienten durch.
Die Fachanwendung prüft, ob eine Liste existiert.
Die Fachanwendung liefert die aktuelle Liste als Collection Bundl mit dem aktuellen List.identifier „123" an GDA 1 aus.
GDA 1 beginnt mit der fachlichen Bearbeitung der Liste.
Währenddessen führt GDA 2 ebenfalls ein List Read auf dieselbe Liste durch.
Die Fachanwendung liefert auch an GDA 2 die aktuelle Liste mit dem List.identifier „123" aus.
GDA 2 bearbeitet die Liste.
GDA 2 sendet zuerst mittels POST $ListWrite ein Transaction Bundle mit den vorgenommenen Änderungen.
Die Fachanwendung prüft, ob der im Transaction Bundle enthaltene List.identifier mit dem aktuellen List.identifier der zuletzt gespeicherten Liste übereinstimmt.
Die Prüfung verläuft erfolgreich, da beide den Wert „123" besitzen.
Die Fachanwendung validiert die übermittelten Änderungen und prüft insbesondere, ob keine unzulässigen Zustandsübergänge vorliegen.
Die Änderungen werden übernommen und eine neue Version der Liste wird persistiert.
Dabei wird ein neuer List.identifier erzeugt, beispielsweise „124".
GDA 2 erhält eine Meldung, dass die Aktualisierung erfolgreich durchgeführt wurde.
Anschließend sendet GDA 1 mittels POST $ListWrite seine ebenfalls auf Basis des ursprünglichen List.identifier „123" vorgenommenen Änderungen.
Die Fachanwendung prüft erneut den übermittelten List.identifier gegen die aktuell persistierte Diagnosenliste.
Die Prüfung schlägt fehl, da die aktuelle Liste mittlerweile den List.identifier „124" besitzt.
Die Fachanwendung lehnt das Speichern ab.
GDA 1 erhält eine Fehlermeldung, dass zwischenzeitlich eine neuere Version der Liste gespeichert wurde.
GDA 1 muss erneut einen POST $ListRead durchführen, die zwischenzeitlich vorgenommenen Änderungen prüfen und gegebenenfalls in die aktuelle Version übernehmen, bevor ein neuer Schreibvorgang erfolgen kann.