railslove / recover-backlog

Backlog tickets for the recover app. recover provides localities a privacy-compliant, safe, and easy way for their guests to check in. See https://www.recoverapp.de/ for more details.
https://recoverapp.de
GNU Affero General Public License v3.0
2 stars 3 forks source link

Sormas integration #67

Open rennrennrenn opened 3 years ago

rennrennrenn commented 3 years ago

https://www.dropbox.com/scl/fi/hbq12qb7ynz9r0hkl32nf/Recover-App-%E2%86%92-SORMAS-%C3%96GD-Integration.paper?dl=0&noDesktopRedirect=1&open_id=server-69e9291d-70ae-4b4e-83fc-2d3a5445f7c9&parent_frame_referrer=&rlkey=iqzpklf1o9eqt4h6yjt67owbv

hey-johnnypark commented 3 years ago

@rennrennrenn Update from my side.

I am trying to build the project based on https://github.com/hzi-braunschweig/SORMAS-Project/blob/development/DEVELOPMENT_ENVIRONMENT.md. However it is a complex project that uses Java Vaadin, EAP, Glassfish (Enterprise stack).

My idea is now to focus on trying the integration with a running test system:

https://demoversion.sormas-oegd.de/

My first tries failed so I reached out to the developer chat again which was quite useful the last time.

https://gitter.im/SORMAS-Project/sormas-questions?source=orgpage

Screenshot 2021-01-20 at 20 51 22
hey-johnnypark commented 3 years ago

Hi,

quick update. I got access to the REST API of https://demoversion.sormas-oegd.de.

However, the documentation is not 100% clear so I am trying to reverse engineer the REST calls.

Stay tuned. Andi

hey-johnnypark commented 3 years ago

SORMAS Rest API

SORMAS Datenmodell

FALL: Ein bestätigter Fall von Coronavirus, der über ein positives Testergebnis an das GA weitergeleitet wurde. KONTAKT: Ein Kontakt einer anderen Person mit der Person aus dem FALL. PERSON: Eine Person die zum KONTAKT gehört.

Dabei ist die Relation folgende:

FALL 1 -> n KONTAKT 1 -> 1 PERSON

Beispiel Recover:

Die Person aus einem Fall war in Gastronomie A am Tag X zwischen Y und Z.

In diesem Fall muss Recover folgende Daten erstellen:

n = Anzahl der Checkins in Restaurant (oder Bereich) am Tag X zwischen Y und Z

n PERSON n KONTAKT

Jedem KONTAKT ist dabei eine PERSON zugewiesen.

Review Rest API

Positiv:

Optimierungsbedarf:

Anleitung zum erstellen eines Kontaktes über die API.

Wir starten mit dem Anlegen eines Falles (das würd das GA machen)

1) Log dich auf der SORMAS Testseite ein.

https://demoversion.sormas-oegd.de/sormas-ui/login

Username: SurvOff Password: SurvOff

2) Erstelle einen neuen Fall.

Fälle -> + Neuer Fall

Melde Datum: Aktuelles Datum über DateTimePicker Vorname: Foo Nachname: Foo Geschlecht: Divers Einrichtung: Zu Hause

Screenshot 2021-01-21 at 12 22 52

3) Copy dir die Fall ID

Screenshot 2021-01-21 at 12 26 53

Jetzt kommen wir zum API call (das würde Recover App machen)

4) Erstelle erst mal eine Person. Dafür brauchst du frische UUID (https://www.uuidgenerator.net/)

curl --location --request POST 'https://demoversion.sormas-oegd.de/sormas-rest/persons/push' \
--header 'Authorization: Basic U3Vydk9mZjpTdXJ2T2Zm' \
--header 'Content-Type: application/json' \
--data-raw '[
    {
        "uuid": "<DEINE frische UUID>",   # Das ist die eindeutige ID der PERSON. Diese kann über https://www.uuidgenerator.net/ generiert werden. Setzt man sie nicht oder benutzt man die selbe ID noch einmal, bekommt man einen 500er Server Fehler
        "firstName": "Kontakt",
        "lastName": "von Recover",
        "sex": "OTHER"
    }
]'

5) Erstelle jetzt einen Kontakt. Dafür brauchst du zwei frische UUIDs (https://www.uuidgenerator.net/)

curl --location --request POST 'https://demoversion.sormas-oegd.de/sormas-rest/contacts/push' \
--header 'Authorization: Basic U3Vydk9mZjpTdXJ2T2Zm' \
--header 'Content-Type: application/json' \
--data-raw '[
    {
        "uuid": "<DEINE erste frische UUID>", # Das ist die eindeutige ID des KONTAKTes. Diese kann über https://www.uuidgenerator.net/ generiert werden. Setzt man sie nicht oder benutzt man die selbe ID noch einmal, bekommt man einen 500er Server Fehler
        "caze": {
            "uuid": "<DIE Fall UUID aus Step 3) >" # Das ist die eindeutige ID des Falles die wir vorher im Webinterface kopiert haben. Später können wie diese ID über Recover ermitteln, indem der GA Mitarbeiter die ersten 6 Stellen mitteilt. 
        },
        "disease": "CORONAVIRUS",
        "reportDateTime": 1611232518,
        "reportingUser": {
            "uuid": "TN2E4T-2OUTRL-FUFFX2-BMACKCDU".   # Siehe oben, die UUID sollte sich eigentlich aus den User credentials ableiten. 
        },
        "contactClassification": "UNCONFIRMED",
        "person": {
            "uuid": "<Die Person UUID aus Step 4)>"           # Das ist die eindeutige ID der Person die wir vorher angelegt haben.   
        },        
        "healthConditions": {
            "creationDate": 1611232518,            
            "uuid": "<DEINE zweite frische UUID>"            # Muss generiert werden über https://www.uuidgenerator.net/ . Sollte man die nicht setzen, bekommt man einen 500er Fehler. 
        },
        "contactProximity": "SAME_ROOM",
        "contactProximityDetails": "Besuch der selben Einrichtung am 20.01. zwischen 14:00 und 16:00",
        "contactCategory": "LOW_RISK",
        "followUpStatus": "FOLLOW_UP",
        "followUpComment": "Telefon Nummer aus Recover App 03012312312213"        
    }
]'

Jetzt können wir den Kontakt im Web Interface sehen

Screenshot 2021-01-21 at 12 37 30

Postman

Eine Postman collection gibt es hier https://github.com/railslove/recover-backlog/blob/main/SORMAS.postman_collection.json.

Diese kann man in Postman importieren und step by step ausführen.

Postman hat den Vorteil, dass es UUIDs generieren kann.

koos commented 3 years ago

Pics for the Blogpost

Screenshot 2021-01-27 at 00 14 37

Untitled

Screenshot 2021-01-27 at 00 18 11

koos commented 3 years ago

Kommentar von Sormas selbst:

Zwei Anmerkungen: 6:29 https://github.com/hzi-braunschweig/SORMAS-Project/pull/4086 (edited) 6:29 Das fixed das Problem mit den UUIDs :slightly_smiling_face: 6:31 Under der 500 Server Error ist behoben und sollte auch mit einer brauchbaren Fehlermeldung antworten. Ich habe den PR gereviewt finde ihn aber nicht mehr gerade :smile: 6:31 Also in der neuen 1.55 version sollte das gegessen sein :slightly_smiling_face: (edited) 6:32 ah hier https://github.com/hzi-braunschweig/SORMAS-Project/pull/4000 (edited) 6:32 super hilfreich auf jeden Fall euer Post! 6:33 Wir sind eh gerade dran einiges besser zu machen, also falls du sonst noch Anmerkungen hast gerne melden und dann können wir telefonieren :slightly_smiling_face: white_check_mark eyes raised_hands

6:35 Und da jetzt auch bald SORMAS Angular kommt, kann man auch bald BEARER tokens nehmen statt UUID and http standard auth (edited)