Exempelapplikation

Här hittar du ett exempel på en applikation som visar hur man snabbt kan komma igång och bygga applikationer mot Cambio Open Services.

Syftet är visa hur du som utvecklare snabbt och enkelt kan komma igång och arbeta med att integrera din applikation med APIerna i Cambio Open Services.

Applikationen är inte ämnad för drift i produktion utan är endast ett exempel på hur du snabbt skall komma igång. Av den anledningen skall man heller inte se den som ett exempel på hur en fullständig applikation i skarp drift skall se ut. Du kommer bland annat själv behöva designa och implementera säkerhetsmekanismer som passar för dina ändamål, skriva tester med mera.

Applikationen

Applikationen finns att tillgå på Github https://github.com/chilmers/cos-example-application

Eller för nedladdning här: cos-example-application-main-20220429.zip

Syfte och avsedd användning

VIKTIGT! Avsikten med applikationen är inte att visa hur man skapar en säker och produktionsfärdig applikation. Du kommer behöva designa och implementera säkerhetsmekanismer och annat som är lämpligt för behoven i just din applikation. Syftet är endast att ge dig en idé om hur du snabbt kan komma igång och börja bygga lösningar med FHIR-APIerna i Cambio Open Services. Mönstren som används i applikationen är bara exempel och liknande resultat kan åstadkommas på olika sätt, med hjälp av olika verktyg och programmeringsspråk.

Säkerhet

Applikationen har en naiv lösning för inloggning och åtkomst till dess API baserat på basic-authentication. Det finns en enda hårdkodad användare med användarnamn och lösenord 'user' respektive 'password'.

Funktionalitet

Exempelapplikationen publicerar ett api med enda funktionalitet att söka efter en patient baserat på personnummer.

Översikt

Bilden nedan visar en översikt över informationsflödet i exempelapplikationen.

Picture

Applikationens API

Sök patient

BESKRIVNING: Utför en sökning på patient baserat på personnummer

HTTP-METOD: GET

URL: /patient

SKYDD:

  • basic-authentication

    Lägg till HTTP Header "Authorization: Basic dXNlcjpwYXNzd29yZA=="

    Ovan motsvarar inloggning med basic-authentication för användare med användarnamn och lösenord 'user:password'

PARAMETRAR:

  • ?pnr=[personnummer]

    Query-parameter som anger patientens personnummer på formatet ååååMMddNNNN

    Exempel: 191212121212

SVAR:

  • application/json

  • Svarar med en json-representation av funnen patient

FELHANTERING:

  • 400 BAD REQUEST - Om pnr-parametern inte anges

  • 404 NOT FOUND - Om patienten inte kunde hittas

  • 500 SERVER ERROR - Vid oväntade fel på serversidan

Kom igång

  • Säkerställ att Java och Maven är installerade på datorn

    Du behöver ha Java och Maven installerat på din dator för att använda exempelapplikationen. Applikationen har testats och fungerar med Java 17.0.2 och Maven 3.8.4 men kan även fungera med tidigare versioner.

  • Ladda ned och packa upp applikationen cos-example-application-main-20220429.zip

  • Ändra där det står CHANGE_ME nedan och kör sedan följande kommando i den katalog som skapades när du packade upp applikationen.

    mvn spring-boot:run -Dspring-boot.run.jvmArguments="-DCOS_API_KEY=CHANGE_ME -DCOS_OAUTH_CLIENT_ID=CHANGE_ME -DCOS_OAUTH_CLIENT_SECRET=CHANGE_ME"

  • Applikationen skall nu vara startad

    För mer information om konfiguration, se README.md i applikationens rot-katalog.

Skicka en förfrågan till applikationen

Om allt gick bra skall applikationen nu ha startat på port 8080. Applikationen har en användare med hårdkokta användarnamn: och lösenord som är user och password.

  • För att testa applikationen kan du använda t.ex. curl eller annan applikation som kan utföra HTTP-anrop:

    curl -v -u user:password http://localhost:8080/patient\?pnr\=191212121212

  • Du bör få ett svar med följande JSON:

    {

    "birthDate": "1912-12-12",

    "deceased": false,

    "fhirId": "https://api.openservices.cambio.se/fhir/Patient/1/_history/6656",

    "fullName": "Tolvan Tolvansson",

    "gender": "Male",

    "identifierSystem": "urn:oid:1.2.752.129.2.1.3.1",

    "identifierValue": "191212121212"

    }