Seiteninhalt:
Der TI-Flow-Fachdienst stellt eine http-Schnittstelle für den Aufruf durch Clientsysteme bereit. Das Ergebnis der Operation wird in der Verwendung von Http-Status-Codes [HTTP-STATUS-CODES] mitgeteilt. Die folgende Tabelle listet die vom TI-Flow-Fachdienst genutzten Http-Status-Codes auf.
Server-Anforderungen zur Fehlerbehandlung
Die Fehlermeldung beinhaltet bei fachlichen Fehlern einen VAU-verschlüsselten inneren http-Response. In diesem inneren Response werden ggf. ausschliesslich personenbezogene oder medizinische Daten an den aufrufenden Client übermittelt, welche bereits im VAU-verschlüsselten inneren http-Request, welcher zum Fehler führte, enthalten waren. Das kann bspw. bei Fehlern bei der Prüfung der FHIR Konformität von Datensätzen auftreten.
Da der TI-Flow-Fachdienst FHIR als grundlegenedes Austauschformat für den überwiegenden Teil der API verwendet, werden alle FHIR-Schnittstellen im Fehlerfall mit einer TIFlow-OperationOutcome quittiert:
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | OperationOutcome | Information about the success/failure of an action | |
![]() ![]() |
Σ | 1..* | BackboneElement | A single issue associated with the action |
![]() ![]() ![]() |
Σ | 1..1 | code | fatal | error | warning | information Binding: IssueSeverity (required): How the issue affects the success of the action. |
![]() ![]() ![]() |
Σ | 1..1 | code | Error or warning code Binding: IssueType (required): A code that describes the type of issue. |
![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Additional details about the error Binding: TIFLOW Operation Outcome Details VS (required) |
Documentation for this format | ||||
Folgende Felder der OperationOutcome sind für den Client bei der Auswertung relevant:
| HTTP-Code | HTTP-Status-Code | Beschreibung |
|---|---|---|
| Severity | OperationOutcome.issue.severity | Gibt an, um welche Schwere des Fehlers es sich handelt: Warnung oder Fehler |
| Code | OperationOutcome.issue.code | Gibt an, um welche Art des Fehlers es sich handelt, bspw. ob es ein Validierungs- oder ein inhaltlicher Verarbeitungsfehler ist. |
| Details | OperationOutcome.issue.details | Gibt eine genauere Beschreibung des Fehlers in einer kodierten Art und Weise an. Dabei sind textuelle und kodierte Inhalte vorhanden |
| Details Code | OperationOutcome.issue.details.coding.code | Gibt einen Fehlercode, der in diesem IG beschrieben ist an |
| Details Text | OperationOutcome.issue.details.text | Gibt eine textuelle Repräsentation des Fehlers an. |
Wichtig für die Auswertung sind die Terminologien von issue.details. Dieses Feld ist ein FHIR CodeableConcept und kann daher nur eine definierte Anzahl an Terminologien enthalten.
Das ValueSet, was referenziert ist wird im jeweiligen IG beschrieben. So entält das ValueSet tiflow-erezept-operation-outcome-details-vs alle Fehlercodes, die in [gemIG_TIFlow_erezept] definiert sind.
Dabei können Fehler aus den folgenden Quellen definiert sein:
| Quelle | Beschreibung | Beispiel |
|---|---|---|
| HL7 OperationOutcome Codes | FHIR übergreifende Fehlercodes definiert in der FHIR-Spezifikation. | MSG_ID_INVALID - invalid id of the FHIR-Resource |
| TI-Common OperationOutcomeDetailsCS | TI-weite Fehlercodes, die für FHIR Systeme der TI gelten. | SVC_INVALID_ACCESS_TOKEN - Ungültiges ACCESS_TOKEN |
| TI-Flow OperationOutcomeDetailsCS | Fehlercodes, die für die TIFlow-Anwendungen gelten. | TIFLOW_AUTH_ROLE_NOT_ALLOWED - Rolle für den Endpunkt nicht autorisiert |
| TI-Flow Modul OperationOutcomeDetailsCS | Fehlercodes, die für das konkrete TI-Flow Modul definiert wurden. | TIFLOW_EREZEPT_PZN_INVALID - Invalide PZN |
Der jeweilige IG bindet ein ValueSet an das OperationOutcome wodurch die Liste der für diesen IG möglichen Fehlercodes definiert ist.
In den IGs der TI-Flow Anwendungen sind die Schnittstellen jeweils beschrieben (ref. Query API). Jede dieser Seiten enthält eine farblich gekennzeichnete API Beschreibung mit möglichen HTTP-Headern, Query-Parametern, Beispiele für Request- und Response-Body, sowie eine Auflistung der Fehlercodes, die dieser Endpunkt zurückgeben kann.
Die Liste an möglichen Fehlercodes, die ein Endpunkt zurückgibt, ergibt sich dabei aus
Zum besseren Verständnis der Prüfung, können die Server-Anforderungen nach dem Fehlercode durchsucht werden, um die entsprechende Anforderung anzuschauen.
FHIR definiert grundsätzlich zwei Arten von Endpunkten: Query-Endpunkte, welche sich nach dem Muster [baseUrl]/<FHIR-Ressource> bilden, sowie Operation-Endpunkte, die durch ein $ gekennzeichnet werden, bspw. [baseUrl]/Task/$<FHIR-Operation>.
FHIR definiert dabei für Query Endpunkte bestimmte Interaktions Arten: RESTful API. Für diese Arten gelten für die IGs der TIFlow-Anwendungen jeweils folgende Fehlercodes:
Die folgenden Fehlercodes können ungeachtet des Endpunktes auftreten und gelten damit global für alle Endpunkte der TI-Flow Anwendungen:
| API Interaktion | Mögliche Fehlercodes |
|---|---|
| Any |
|
Für die Ressourcen-Endpunkte in FHIR gelten die folgenden übergreifenden Fehlercodes. Diese sind jeweils für die FHIR-Interaktionen definiert:
| API Interaktion | Mögliche Fehlercodes |
|---|---|
| Instance - read |
|
| Instance - update |
|
| Instance - patch |
|
| Instance - delete |
|
| Type - create |
|
| Type - search |
|
FHIR definiert drei Ebenen auf denen Operationen ausgeführt werden können:
| Ebene | Beispiel |
|---|---|
| System Level | [baseUrl]/$operation |
| Type Level | [baseUrl]/Task/$operation |
| Instance Level | [baseUrl]/Task/ |
Hierfür gelten für die TIFlow-Anwendungen die folgenden Fehlercodes für Operationen:
| API Interaktion | Mögliche Fehlercodes |
|---|---|
| System Operationen |
|
| Type Operationen |
|
| Instance Operationen |
|
Der TI-Flow-Fachdienst bietet Schnittstellen, deren Austauschformat nicht nach FHIR modelliert wurde. Bspw. Push-API: Pusher.
Diese Schnittstellen haben eine eigens definierte JSON Struktur von Fehlern, die in der jeweils referenzierten OpenAPI dokumentiert ist. Im Fehlerfall erhalten Clients eine HTTP Antwort mit HTTP Status Code und einem Response Body im Media Type application/json.
Im Folgenden, ein Beispiel:
{
"errorCode": "RESOURCE_NOT_FOUND",
"errorDetail": "The requested pusher could not be found"
}
Treten Fehler beim VAU-Transport (bspw. innerer http-Request kann nicht entschlüsselt werden) auf, beinhaltet die Fehlermeldung keinen inneren http-Response.
Telemetriedaten werden bei jedem Fehler übermittelt. Die Daten beinhalten einen Statuscode, der eindeutig einem Fehlercode zugeordnet ist, und das Mapping zwischen den Fehlercodes und den Telemetriedaten-Statuscodes ist hier zu finden: TIFLOW_CM_TelemetryDataStatusCodes