FHIR - REST Operasjoner

Generelt

Alle FHIR API’er på Helsenorge støtter et subset av den fulle spesifikasjonen: http://hl7.org/fhir/http.html

  • Det skal benyttes HTTPS

  • Det støttes ikke versjonering av FHIR-ressurser

HTTP-headere

Når FHIR API’ene på Helsenorge kalles, skal/kan følgende HTTP header parametere benyttes:

  • Content-Type: Påkrevet ved POST, PUT eller PATCH. Skal ha en av verdiene: application/fhir+xml, application/fhir+json, application/json, application/xml eller  application/x-www-form-urlencoded

  • Authorization: Påkrevd. Skal ha verdien Bearer <aksesstoken>. (Se https://helsenorge.atlassian.net/wiki/spaces/HELSENORGE/pages/1389330656 )

  • Accept: Frivillig. Dersom satt skal ha en av verdiene: application/fhir+xml, application/fhir+json, application/json eller application/xml. (Dersom ikke satt vil responsen sin Content-Type være satt til application/fhir+json)

Støttede operasjoner

Opprette/Lagre en FHIR ressurs på Helsenorge

Create - HTTP POST

Klienter kan alltid benytte “Create” for å kreere en ny ressurs på Helsenorge. Det er Helsenorge som bestemmer ressurs-ID’en.

Request/response:

  • Method + Url: POST [base]/[type]

  • Content-Type: En av verdiene fra generell del over

  • Body: En FHIR ressurs av type [type] (Dersom ressursen har en ressurs-ID fra før, vil denne endres og bestemmes av Helsenorge)

  • Respons:

    • OK: 201 Created. Ved suksessfull opprettelse av ressursen og påfølgende respons er Location headeren satt inneholdende logisk id, i tillegg returneres den opprettede ressursen i sin helhet.

    • Feil: 400 Bad Request + FHIR OperationOutcome

Transaction - HTTP POST

Klienter kan benytte “Transaction” for å sende en FHIR Bundle til Helsenorge, og ressursene i Bundelen blir opprettet. Det er forutsatt at bundelen kun inneholder FHIR ressurser som støttes i det aktuelle grensesnitt.

Request/response:

  • Method + Url: POST [base]

  • Content-Type: En av verdiene fra generell del over

  • Body:

    • En FHIR ressurs av type Bundle (Dersom Bundle har en ressurs-ID fra før, vil denne endres)

    • Hver ressurs i Bundle SKAL etterfølges av hvilken operasjon som skal utføres. Det støttes kun HTTP POST operasjon for ressursene i bundelen, dvs. at alle ressursene i Bundelen får en ID tilordnet av Helsenorge når de opprettes.

  • Respons:

    • 200 OK + Bundle med Bundle.type = "transaction-response"

    • Feil:

Hente ut en FHIR ressurs fra Helsenorge

Read - HTTP GET

Request/response:

  • Method + Url: GET [base]/[type]/[id]

  • Accept: En av verdiene fra generell del over

  • Body: N/A

  • Respons:

    • 200 OK + FHIR-resource of [type] with resource-ID [id]

    • Feil:

      • 404 Not Found

Search - HTTP POST (_search)

Vi ønsker ikke at potensiell sensitiv informasjon (eks. innbyggers fødselsnummer) skal finnes i URL’er, derfor støttes kun POST basert search.

Request/response:

  • Method + Url: POST [base]/[type]/_search

  • Content-type: application/x-www-form-urlencoded

  • Body: [query-parameters]

  • Respons:

    • 200 OK + Bundle med Bundle.type = "searchset” med en samling av FHIR ressurser av type [type] og som tilfredsstiller søkeparameterne. Dersom søket ikke ga noe resultat inneholder Bundelen ingen ressurser.

    • Feil:

      • 401 Not Authorized

      • 400 Bad request - Hvis man ikke støtter ressurstypen

Endre en FHIR ressurs som finnes på Helsenorge

Patch - HTTP PATCH

Denne kan alltid benyttes for å oppdatere en ressurs som allerede er lagret på Helsenorge.

Request/response:

  • Method + Url: PATCH [base]/[type]/[id]

  • Content-Type: En av verdiene fra generell del over

  • Body: FHIRPath Patch

  • Respons:

    • 200 OK

    • Feil:

      • 400 Bad request

Update - HTTP PUT

For noen ressurser kan klienten benytte “Update” for å endre en allerede eksisterende ressurs. Det støttes ikke opprettelse av ressurser ved hjelp av PUT.

Merk! For de fleste FHIR ressurser har vi på Helsenorge valgt å ikke støtte Update ved hjelp av PUT. Dette fordi mange av ressursene inngår i en workflow på Helsenorge, og der Helsenorge er avhengig av å selv ha “kontroll” på diverse elementer i ressursen. For disse ressursene skal PATCH benyttes dersom ekstern aktør ønsker å modifisere noen elementer i ressursen.

Request/response:

  • Method + Url: PUT [base]/[type]/[id]

  • Content-Type: En av verdiene fra generell del over

  • Body: En FHIR ressurs av type [type]- Ressursens-ID skal være satt og den samme som er angitt i URL. ID’en skal være den som Helsenorge returnerte når ressursen ble opprettet med POST.

  • Respons:

Slette en FHIR ressurs som er lagret på Helsenorge

Delete - HTTP DELETE

I noen av løsningene på Helsenorge tillates at ekstern aktør kan slette en FHIR ressurs på Helsenorge. Dersom dette er tillatt, vil det fremgå av beskrivelsen for den aktuelle tjeneste.

Request/response:

  • Method + Url: DELETE [base]/[type]/[id]

  • Body: N/A

  • Respons:

    • 204 No Content

    • Feil:

      • 405 Method not Allowed