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
ellerapplication/x-www-form-urlencoded
Authorization: Påkrevd. Skal ha verdien
Bearer <aksesstoken>
. (Se 01 - Sikkerhetsmodell og Helsenorge sikkerhetstjeneste )Accept: Frivillig. Dersom satt skal ha en av verdiene:
application/fhir+xml
,application/fhir+json
,application/json
ellerapplication/xml
. (Dersom ikke satt vil responsen sinContent-Type
være satt tilapplication/fhir+json
)
Støttede operasjoner
Lagre en FHIR ressurs på Helsenorge
Create - HTTP POST
Klienter kan 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 erLocation
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 medBundle.type = "transaction-response"
Feil:
400 Bad Request
+ Bundle med et sett FHIR OperationOutcome
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.
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:
200 OK
Feil:
400 Bad Request
+ FHIR OperationOutcome
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