From d5bc8779a0cc05ec81e8aba9822cc5f3b393ed42 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sat, 9 Mar 2024 12:38:06 +0100 Subject: [PATCH] docs: add http request examples and resulting kafka records --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4a04268..d4094f9 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Die folgenden Endpunkte sind verfügbar: Zum Löschen von Patienteninformationen wird intern ein MTB-File mit Consent-Status `REJECTED` erzeugt und weiter geleitet. Hier ist kein Request-Body erforderlich. -Bei Erfolg enthält die Antwort enthält im HTTP-Header `x-request-id` die Anfrage-ID, die auch im ETL-Prozessor verwendet +Bei Erfolg enthält die Antwort im HTTP-Header `x-request-id` die Anfrage-ID, die auch im ETL-Prozessor verwendet wird. ### Authentifizierung @@ -46,4 +46,70 @@ Es ist hierzu erforderlich, die erforderliche Umgebungsvariable `APP_SECURITY_TO htpasswd -Bn token ``` -Der hintere Teil (hinter `token:`) entspricht dem *bcrypt*-Hash des Tokens. \ No newline at end of file +Der hintere Teil (hinter `token:`) entspricht dem *bcrypt*-Hash des Tokens. + +### Beispiele für HTTP-Requests und resultierende Kafka-Records + +Beispiele für gültige HTTP-Requests zum Übermitteln und Löschen eines MTB-Files. + +#### Übermittlung eines MTB-Files + +Anfrage mit *curl*: + +```bash +curl -u token:very-secret \ + -H "Content-Type: application/json" \ + --data '{"consent":{"id":"C1","patient":"P1","status":"active"},"episode":{"id":"E1","patient":"P1","period":{"start":"2024-03-01"}},"patient":{"id":"P1","gender":"unknown"}}' \ + http://localhost:3000/mtbfile +``` + +Antwort: + +``` +HTTP/1.1 202 Accepted +x-request-id: 1804d5c1-af3d-4f75-81a0-d9ca7c9739ef +content-length: 0 +date: Sat, 09 Mar 2024 11:16:44 GMT +``` + +Resultierender Kafka-Record: + +* **Key**: `{"pid":"P1"}` +* **Headers**: + * `requestId`: `1804d5c1-af3d-4f75-81a0-d9ca7c9739ef` +* **Value**: `{"consent":{"id":"C1","patient":"P1","status":"active"},"episode":{"id":"E1","patient":"P1","period":{"start":"2024-03-01"}},"patient":{"gender":"unknown","id":"P1"}}` + +#### Löschen von Patienten + +Anfrage auch hier mit **curl**: + +```bash +curl -v -u token:very-secret \ + -H "Content-Type: application/json" \ + -X DELETE \ + http://localhost:3000/mtbfile/P1 +``` + +Antwort: + +``` +HTTP/1.1 202 Accepted +x-request-id: 8473fa67-8b18-4e8f-aa89-874f74fcc672 +content-length: 0 +date: Sat, 09 Mar 2024 11:24:35 GMT +``` + +Resultierender Kafka-Record: + +* **Key**: `{"pid":"P1"}` +* **Headers**: + * `requestId`: `8473fa67-8b18-4e8f-aa89-874f74fcc672` +* **Value**: `{"consent":{"id":"","patient":"P1","status":"rejected"},"episode":{"id":"","patient":"P1","period":{"start":""}},"patient":{"gender":"unknown","id":"P1"}}` + +Es werden keine weiteren patientenbezogenen Daten übermittelt. + +In optionaler Verbindung mit [Key-Based-Retention](https://github.com/CCC-MF/etl-processor#key-based-retention) wird lediglich der +letzte und aktuelle Record, hier die Information eines Consent-Widerspruchs, in Kafka vorgehalten. + +Trifft dieser Kafka-Record im [ETL-Prozessor](https://github.com/CCC-MF/etl-processor) ein, so wird dort ebenfalls eine +Löschanfrage ausgelöst, da der Consent-Status den Wert `rejected` hat. \ No newline at end of file