Implementation Guide
ePA Basisfunktionalitäten
Version 1.0.6-2 - release

## Audit Service: Query API

Die Query API: AuditEvent ermöglicht den Abruf protokollierter Ereignisse und Zugriffe auf die ePA eines Versicherten im ePA-Aktensystem.

### Einsatzbereich

Das ePA-FdV oder das Primärsystem einer Ombudsstelle nehmen Einsicht in die Protokolldaten zum Zwecke der Datenschutzkontrolle für den Akteninhaber.

### Nachricht

Die Nachricht zum Abruf von Protkolldaten wird als HTTP GET-Anfrage an den Audit Event Service gesendet, um eine Liste von Audit-Ereignislisten abzurufen.

#### Auslösung

Wenn das ePA-Client-System eine Suche über protokollierter Ereignisse und ePA-Zugriffe durchführen und dazu die korrespondierenden AuditEvent-Ressourcen ermitteln möchte, sendet es eine Query API: AuditEvent-Nachricht an den Audit Event Service.

#### Resource API

Anfragen an die AuditEvent-Ressource werden über die RESTful API mittels HTTP GET-Anfragen durchgeführt werden. Dabei können spezifische Suchparameter genutzt werden, um die Anfragen zu verfeinern.

Bei Anfragen an die Query API für die AuditEvent-Ressource wird die Antwort als ein FHIR Bundle des Typs searchset zurückgegeben. Dieses Bundle enthält eine Sammlung von Einträgen, die jeweils eine Instanz der AuditEvent-Ressource enthalten.

contentTypes: - "application/fhir+json" headerParams: - name: "x-insurantid" expectation: "MUSS" type: "string" description: "Health Record Identifier" - name: "x-useragent" expectation: "MUSS" type: "string" description: "User Agent Information" - name: "X-Request-ID" expectation: "KANN" type: "string" description: "UUID der Nachricht" base: "[base]" paths: /epa/audit/api/v1/fhir/AuditEvent: get: include: - "#DefaultApi" operationId: "listAuditEvents_AuditEventSvc" fhir: capabilityStatement: url: "CapabilityStatement-epa-audit-event-server.json" forResourceType: "AuditEvent" responseExamples: - name: "application/fhir+json" type: JSON url: './Bundle-example-searchset-audit-event.json' responses: - statusCode: '200' description: "Successful operation" errorCode: "-" note: "-" - statusCode: '400' description: "Unknown search parameter" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '400' description: "Invalid query parameter(s)" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '400' description: "Invalid request" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '404' description: "Unknown resource type" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '403' description: "Requestor not authorized" errorCode: "invalAuth" note: "No user session with valid ID-Token available" - statusCode: '403' description: "Requestor has no valid entitlement" errorCode: "notEntitled" note: "-" - statusCode: '403' description: "Requestor role is not in the list of allowed user groups" errorCode: "invalidOid" note: "-" - statusCode: '403' description: "Device registration does not exist" errorCode: "unregisteredDevice" note: "if requestor role is oid_versicherter only" - statusCode: '404' description: "Health record is in state UNKNOWN or INITIALIZED" errorCode: "noHealthRecord" note: "-" - statusCode: '409' description: "Health record is in state SUSPENDED" errorCode: "statusMismatch" note: "-" - statusCode: '500' description: "Any other error" errorCode: "internalError" note: "-" Der Audit Event Service MUSS die Suchparameter, die in dem CapabilityStatement mit dem Namen EPAAuditEventServer verarbeiten können. Die Standardsortierung des Audit Event Service MUSS anhand des Attributs recorded in absteigender Reihenfolge, sodass die neuesten Daten zuerst angezeigt werden.

#### Instance API

Um spezifische Details zu einem einzelnen Audit Event mittels der RESTful API zu erhalten, wird die AuditEvent Instance API verwendet, indem eine HTTP GET-Anfrage an den Endpunkt /AuditEvent/[id] gestellt wird.

base: "[base]" paths: /epa/audit/api/v1/fhir/AuditEvent/[id]: get: include: - "#DefaultApi" operationId: "getAuditEventById_AuditEventSvc" responses: - statusCode: '200' description: "Successful operation" errorCode: "-" note: "-" - statusCode: '400' description: "Invalid request" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '404' description: "Unknown resource type" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '404' description: "Resource is not known" errorCode: "-" note: "EPAOperationOutcome" - statusCode: '403' description: "Requestor not authorized" errorCode: "invalAuth" note: "No user session with valid ID-Token available" - statusCode: '403' description: "Requestor has no valid entitlement" errorCode: "notEntitled" note: "-" - statusCode: '403' description: "Requestor role is not in the list of allowed user groups" errorCode: "invalidOid" note: "-" - statusCode: '403' description: "Device registration does not exist" errorCode: "unregisteredDevice" note: "if requestor role is oid_versicherter only" - statusCode: '404' description: "Health record is in state UNKNOWN or INITIALIZED" errorCode: "noHealthRecord" note: "-" - statusCode: '409' description: "Health record is in state SUSPENDED" errorCode: "statusMismatch" note: "-" - statusCode: '500' description: "Any other error" errorCode: "internalError" note: "-"

#### Verarbeitung

Der Audit Event Service verarbeitet die Anfrage, um die AuditEvent-Einträge zu ermitteln, die den angegebenen Suchparametern entsprechen. Darüber hinaus gibt er einen zur Verarbeitung passenden HTTP Status Code sowie ein FHIR Bundle der passenden AuditEvent-Ressourcen zurück.

### Sicherheitsanforderungen

Generelle Sicherheitsanforderungen werden hier festgehalten.

### Protokollierung

Die Protokollierung erfolgt über den Audit Event Service. Weitere Anforderungen sind [gemSpec_Aktensystem_ePAfueralle#Protokollierung] zu entnehmen.