Terminprofile abrufen (Schedule Search)
Inhalt
Beschreibung und fachlicher Kontext
Beim Abrufen von Terminprofilen handelt es sich um die FHIR-Standardinteraktion search. Diese ermöglicht das Synchronisieren mit dem 116117 Terminservice, um den aktuellen Status einzelner oder mehrerer Terminprofile abzurufen.
Der Abruf ist für die initiale Synchronisation der Daten bzw. die Synchronisation nach längerer Zeit (bspw. aufgrund von Betriebsferien) notwendig. In beiden Fällen müssen alle vorhandenen Terminprofile für die im Software-System hinterlegte Praxis / medizinische Einrichtung vom 116117 Terminservice abgerufen werden. Bei Bedarf können aber auch einzelne Terminprofile abgerufen und so deren aktueller Status überprüft werden.
Beim Abrufen der Terminprofile sind die übertragenen Datenmengen in der Regel gering, da es nur selten vorkommt, dass viele Terminprofile angelegt werden.
Generelle Hinweise, die für alle search interactions gelten, sind auf der Seite Operationen und Interaktionen gelistet. Dort sind auch detaillierte Informationen zum Thema Paging
zu finden. Beim Paging ist zu beachten, dass sich die Gesamtzahl der Seiten zwischen dem Abruf von bspw. Seite 1 und Seite 2 ändern kann. Voraussetzung hierfür ist, dass zwischen den beiden Abrufen neue Terminprofile angelegt oder bestehende Terminprofile gelöscht wurden. (Dass ein TVS dies nur
über den 116117 Terminservice mitbekommt, kann bspw. daran liegen, dass die Praxis / medizinische Einrichtung einem Praxisverbund angehört. In diesem Fall kann es sein, dass eine andere Praxis / medizinische Einrichtung aus dem Praxisverbund Terminprofile anlegt oder löscht.)
Request
Das Abrufen von Terminprofilen erfordert einen POST-Request. Es können entweder alle Terminprofile aller autorisierten Einrichtungen oder nur bestimmte Terminprofile anhand entsprechender Suchparameter im Request Body abgefragt werden (siehe hierzu Abschnitt Request Body
).
| HTTP Method | POST |
| URL | https://terminsynchronisation.eterminservice.kv-safenet.de/pvs/terminsynchronisation/api/Schedule/_search |
| Request Body | [suchparameter] |
Bitte beachten: Laut FHIR-Standard wäre auch eine Suche mit Suchparametern innerhalb der URL und / oder mittels GET-Request möglich. Dies wird durch die Systeme des 116117 Terminservices aktuell jedoch NICHT unterstützt. Ein GET-Request auf die oben angegebene URL führt zu einem Fehler. Suchparameter in der URL werden von den Systemen des 116117 Terminservices ignoriert, d.h. weder validiert noch verarbeitet.
Request Header
Folgende Request Header werden von den Systemen des 116117 Terminservices unterstützt und verarbeitet:
| Header | Verpflichtend? | Beschreibung | Wert |
|---|---|---|---|
Authorization |
ja | Im Authentisierungsverfahren erhaltener ACCESS_TOKEN als Bearer Token | Bearer ey... |
Content-Type |
ja | Gibt den ursprünglichen Medien- bzw. Dateitypen der Ressource an. | application/x-www-form-urlencoded |
Accept |
nein | Gibt an, welche Inhaltstypen die Systeme des Anfragenden verstehen.
|
application/fhir+xml |
Request Body
Der Request Body muss alle Suchparameter enthalten, nach denen die Suchergebnisse gefiltert werden sollen.
Für die initiale Synchronisation bzw. die Synchronisation nach längerer Zeit wird beim Abruf nur der Suchparameter bsnr benötigt, da in diesem Fall alle Terminprofile benötigt werden, um eine vollständige Synchronisation mit dem 116117 Terminservice sicherzustellen.
In den folgenden Abschnitten werden die einzelnen Suchparameter im Detail beschrieben. Suchparameter, die hier nicht aufgelistet sind, aber dennoch im Request Body übergeben werden, werden von den Systemen des 116117 Terminservices ignoriert. Das bedeutet, dass die Systeme des 116117 Terminservice diese Suchparameter nicht verarbeiten. Es wird in diesem Fall KEIN Fehler geworfen; die Suche wird ohne die unbekannten Suchparameter durchgeführt.
Bitte beachten: Die Systeme des 116117 Terminservices prüfen bei Angabe mehrerer Suchparameter nur bedingt auf Plausibilität. Das bedeutet, dass nicht zwangsweise eine Fehlermeldung als Response zurückkommt, wenn sich mehrere Suchparameter gegenseitig ausschließen. Beispiele hierfür sind UND-Verknüpfungen bei mehreren BSNRs oder eine UND-Verknüpfung einer ANR und einer BSNR, wobei der zur ANR zugehörige Arzt nicht in der Praxis / medizinischen Einrichtung arbeitet, die zur angegebene BSNR gehört. In solchen Fällen kommt der HTTP-Statuscode 200 OK mit einem Searchset Bundle (im Response Body) zurück, welches KEINE Suchergebnisse enthält.
Suchparameter: ID
| Parameter | _id |
|---|---|
| Beschreibung | ID eines Terminprofils |
| Kardinalität | 0..* |
| Erlaubte Verknüpfungen1 | ODER-Verknüpfung |
| Erlaubte Präfixe2 | - |
| Suchergebnis | Alle Terminprofile, die eine der angegebenen IDs im Feld Schedule.id hinterlegt haben. |
| Anmerkung | Mithilfe dieses Suchparameters lässt sich gezielt ein einzelnes Terminprofil abrufen. Es müssen alle Zeichen der ID übergeben werden. Eine Suche mit bspw. nur den ersten 3 Zeichen einer ID ist nicht zulässig und führt zu einem Fehler. |
Suchparameter: Betriebsstättennummer (BSNR)
| Parameter | bsnr |
|---|---|
| Beschreibung | 9-stellige BSNR der Praxis / medizinischen Einrichtung, die dem Terminprofil zugeordnet ist. |
| Kardinalität | 0..* |
| Erlaubte Verknüpfungen1 | ODER-Verknüpfung |
| Erlaubte Präfixe2 | - |
| Suchergebnis | Alle Terminprofile, die den Praxen / medizinischen Einrichtungen zugeordnet sind, zu denen die angegebenen BSNRs gehören. |
| Anmerkung | Bei der BSNR handelt es sich um einen custom search parameter. Details hierzu sind auf der Seite Suchparameter: BSNR (SearchParameter) zu finden. Wird der Parameter nicht übergeben, werden alle BSNRs aus dem Access Token als Suchparameter übernommen. |
Suchparameter: Arztnummer (ANR)
| Parameter | anr |
|---|---|
| Beschreibung | ANR des Arztes, der dem Terminprofil zugeordnet ist. |
| Kardinalität | 0..* |
| Erlaubte Verknüpfungen1 | ODER-Verknüpfung |
| Erlaubte Präfixe2 | - |
| Suchergebnis | Alle Terminprofile, die den Ärzten zugeordnet sind, zu denen die angegebenen ANRs gehören. |
| Anmerkung | Bei der ANR handelt es sich um einen custom search parameter. Details hierzu sind auf der Seite Suchparameter: ANR (SearchParameter) zu finden. Es können entweder nur die ersten 7 Stellen oder alle 9 Stellen der ANR übergeben werden. |
Suchparameter: Anzahl der Suchergebnisse
| Parameter | _count |
|---|---|
| Beschreibung | Anzahl der Suchergebnisse pro Seite |
| Kardinalität | 0..1 |
| Erlaubte Verknüpfungen1 | - |
| Erlaubte Präfixe2 | - |
| Suchergebnis | Es werden maximal so viele Terminprofile im Response Body zurückgegeben, wie in _count angegeben wurde. (Ressourcen, die in den Terminprofilen referenziert und ebenfalls mit zurückgegeben werden, werden hier nicht mit eingerechnet.) |
| Anmerkung | Wird der Parameter nicht übergeben, wird der Standardwert von 10 als Suchparameter übernommen. Erlaubte Werte sind alle natürlichen Zahlen zwischen 1 und 10, wobei 1 und 10 ebenfalls erlaubt sind. Es kann sein, dass insgesamt mehr Suchergebnisse gefunden werden, als in_count angegeben wurde. In diesem Fall gibt es mehrere Seiten mit Suchergebnissen; die anderen Seiten können über weitere Requests mit dem entsprechenden Wert für den Suchparameter page abgerufen werden. Weitere Details zum Thema Pagingsind auf der Seite Operationen und Interaktionen zu finden. |
Suchparameter: Seite der Suchergebnisse
| Parameter | page |
|---|---|
| Beschreibung | Seite der Suchergebnisse, die zurückgegeben werden soll. |
| Kardinalität | 0..1 |
| Erlaubte Verknüpfungen1 | - |
| Erlaubte Präfixe2 | - |
| Suchergebnis | Es wird die angegebene Seite der Suchergebnisse zurückgegeben. |
| Anmerkung | Wird der Parameter nicht übergeben, wird der Standardwert von 1 als Suchparameter übernommen. Es wird dann also immer die 1. Seite zurückgegeben. Welche Suchergebnisse zurückgegeben werden, hängt auch vom Wert des Suchparameters Wird eine Pagingsind auf der Seite Operationen und Interaktionen zu finden. |
1 Wie Parameter mit UND bzw. ODER verknüpft werden können, ist in der HL7-FHIR-Dokumentation unter Search – Standard Parameters: Composite Search Parameters beschrieben.
2 Die möglichen Präfixe sind in der HL7-FHIR-Dokumentation unter Search – Standard Parameters: Prefixes beschrieben.
Beispiele
Initiale Synchronisation
Beispiel: Suche anhand einer BSNR
# Suche alle Terminprofile, die der Praxis mit der BSNR 123456789 zugeordnet sind
POST https://terminsynchronisation.eterminservice.kv-safenet.de/pvs/terminsynchronisation/api/Schedule/_search
Content-Type: application/x-www-form-urlencoded
bsnr=123456789
Weitere Beispiele
Beispiel 1: Suche anhand mehrerer IDs
# Suche alle Terminprofile, die eine der folgenden IDs haben: 084c8796-a6e8-402d-9170-67a9d05b79a0, 68698730-6e1c-4a09-83e1-b730dcb7fe81
POST https://terminsynchronisation.eterminservice.kv-safenet.de/pvs/terminsynchronisation/api/Schedule/_search
Content-Type: application/x-www-form-urlencoded
_id=084c8796-a6e8-402d-9170-67a9d05b79a0,68698730-6e1c-4a09-83e1-b730dcb7fe81
Beispiel 2: Suche anhand einer ANR
# Suche alle Terminprofile, die dem Arzt mit der ANR 123456789 zugeordnet sind
POST https://terminsynchronisation.eterminservice.kv-safenet.de/pvs/terminsynchronisation/api/Schedule/_search
Content-Type: application/x-www-form-urlencoded
anr=123456789
Response
Für die Suche von Terminprofilen wird im Erfolgsfall der HTTP-Statuscode 200 OK sowie ein Searchset Bundle im Response Body zurückgegeben.
Wurden bei der Suche keine Suchparameter übergeben, enthält das zurückgegebene Searchset alle Terminprofile der Haupt- und Nebenbetriebsstätten der in der Autorisierung übergebenen BSNRs.
Wurde bei der Suche mindestens ein Suchparameter übergeben, enthält dieses Searchset alle Terminprofile, die anhand der Suchparameter in Verbindung mit den autorisierten BSNRs ermittelt werden konnten.
Im Fehlerfall wird ein dem Fehler entsprechender HTTP-Statuscode (bspw. 400 Bad Request oder 500 Internal Server Error) sowie ein OperationOutcome im Response Body zurückgegeben. Dieses OperationOutcome enthält Details zum aufgetretenen Fehler.
Response Header
Folgende Response Header werden von den Systemen des 116117 Terminservices gesetzt und an den Anfragenden zurückgesendet:
| Header | Beschreibung | Wert |
|---|---|---|
Content-Type |
Gibt den ursprünglichen Medien- bzw. Dateitypen der Ressource an. | application/fhir+xml |
Response Body
Im Erfolgsfall ist im Response Body ein Searchset Bundle enthalten, welches folgende Ressourcen und Informationen enthält:
Suchergebnisse, wenn vorhanden: Terminprofile (im Element
Bundle.entry)Alle Suchparameter, die durch die Systeme des 116117 Terminservices verarbeitet und für die Suche genutzt wurden (im Element
Bundle.link)Verweis auf die vorherige und / oder nächste Seite der Suchergebnisse, wenn vorhanden (im Element
Bundle.link)Bitte beachten: Hierbei handelt es sich um einen Verweis in Form einer URL – um die Seite tatsächlich abzurufen, muss jedoch ein POST-Request mit den Suchparametern im Request Body abgeschickt werden.
Details zum Thema
Paging
sind auf der Seite Operationen und Interaktionen zu finden.
In den Schedules referenzierte Ressourcen:
Details zum Searchset Bundle sind unter Profil: Suchergebnisse (Bundle) zu finden.
Im Fehlerfall ist im Response Body ein OperationOutcome enthalten. Details hierzu sind unter Profil: Fehler (OperationOutcome) zu finden.
Beispiele
Alle Beispiele für den Erfolgsfall sind hier im vorliegenden Projekt zu finden.
Alle Beispiele für den Fehlerfall sind hier im vorliegenden Projekt zu finden.