Patsiendi üldandmete teenus / Master Patient Index
1.2.2 - trial-use
Publication Build: This will be filled in by the publication tooling
Antud juhend selgitab põhireeglid patsiendi andmete pärimiseks ja sõnumite koostamiseks.
Testimiseks laadige alla Postman kollektsiooni näidetega ja häälestage keskkonna muutujad
X_ROAD_CLIENT: $env/$class/$org-code/$client-id
MPI_FHIR: $host/r1/$env/GOV/70009770/tis/mpi
AUTH_URL: $host/r1/$env/GOV/70009770/tis/auth
Parameeter | Teie X-tee alamsüsteemi seadistus |
---|---|
$env | x-tee keskkond, näiteks ee-dev (xRoadInstance) |
$host | TTO turvaserveri aadress |
$class | TTO alamsüsteemi klass (memberClass) |
$org-code | TTO asutuse registrikood (memberCode) |
$client-id | TTO alamsüsteemi kood (subsystemCode) |
Kollektsiooni proovimiseks TTO peab tellima õigused X-tee teenustele GOV/70009770/tis/mpi ja GOV/70009770/tis/auth ee-dev keskkonnas.
Autoriseerimine on protsess, mille käigus kasutaja saab õigusi/privileege teatud ressursidele. Autoriseerimise käigus valideeritakse kasutaja väidetav roll ning kuuluvus asutusele, mille alt tehakse päringuid.
Token-is kodeeritud kasutaja isikukood ja nimi kasutatakse audit logides, mis kuvatakse ka patsiendile Andmejälgijas!
Postman kollektsioonis 1. Auth -> 1.1 Get token
POST päring /v2/token
järgmise "application/json" sisuga
{
"user": {
"personalCode": "49909090014"
},
"organization": "70009770",
"role": "doctor",
"application": "tto-tis-client-application"
}
Päringu kehas tuleb määrata kasutja roll, isikukood ja asutuse kood. Antud kombinatsioon valideeritakse TAM registri vastu. Rakenduse nimi peab kajastama kasutatud TTO tarkvara, suvaline tekst ilma tühikudeta.
Vastus:
{
"accessToken": "eyJhbGciOiJSUz...",
"expiresIn": 300,
"tokenType": "Bearer"
}
Detailne juhend on leitav teabekeskusest.
Tokeni eluiga on on N sekundit (token päringu vastuses väli expiresIn), kliendirakendus võib tokeni cache-da kuni N sekundit ja taaskasutada erinevates päringutes. NB! Token on kasutajapõhine, kliendirakendus ei tohi jagada sama tokeni mitme erineva kasutaja vahel!
Tokeni tuleb kasutatada Authorization
päises Bearer
prefiksiga. Näiteks
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiA....
Iga FHIR API otspunkt kontrollib õigusi, mis on rollipõhised. Rollide kohta saab lugeda siin. Õiguste maatriks asub siin.
Igas päringus tuleb määrata REST päringu päises mitmed tunnused:
Päise nimi | Võimalikud väärtused | Kommentaar |
---|---|---|
Accept | application/json või application/xml või application/fhir+json või application/fhir+xml | |
Content-Type | application/json või application/xml või application/fhir+json või application/fhir+xml | |
Authorization | Bearer |
Auth teenuse poolt saadud token |
x-road-id | Unikaalne päringu id | |
x-road-issue | Tekstiline selgitus miks antud päring on tehtud, teatud päringutel on kohustuslik. Tekst kuvatakse Andmejälgijas. Päis edastatakse alampäringute puhul teistesse süsteemidesse. |
|
x-road-client | $env/$class/$org-code/$client-id | X-tee rest kliendi määrav identifikaator, vt https://www.x-tee.ee/docs/live/xroad/pr-rest_x-road_message_protocol_for_rest.html#43-use-of-http-headers |
Patsiendi andmete pärimiseks saab esitada REST päringu mis tagastab kas üksiku ressurssi või ressursside kollektsiooni (edaspidi Bundle).
Üksik ressurss tagastatakse siis kui andmed päritakse REST päringuga MPI sisemise id (viida) järgi:
GET {MPI}/Patient/1
Accept: application/json
...
Sõltuvalt Accept päringu väärtuses tuleb vastuseks sõnumi keha JSON või XML vormingus. Näide sektsiooni andmetest minimaalse andmekoosseisuga:
{
"resourceType": "Patient",
"id": "1",
"meta": {
"profile": [
"https://hl7.ee/fhir/StructureDefinition/ee-mpi-patient-verified"
]
},
"identifier": [
{
"system": "https://fhir.ee/sid/pid/est/ni",
"value": "37412251234"
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Tamm",
"given": [
"Tiit",
"Priit"
]
}
],
"gender": "male"
}
Otsing teostatkse päringuga:
GET {MPI}/Patient?{params}
kus {params} on otsingu parameetrite nimekiri koos väärtustega.
Parameeter | Kirjeldus | Väärtustatud näidis |
---|---|---|
_id | Ressursi id | _id=1234 või id=1234,5678 |
_count | Mitu tulemust tagastada lehel, vaikimisi 20. Ülemine piir on 100 | _count=10 |
_page | Lehe number mida tagastada | _page=1 |
identifier | Patsiendi identifikaator kujul "system|value", eraldaja sümbol peab olema URL encode-itud. | identifier=https://fhir.ee/sid/pid/est/ni%7C37412251234 |
birthdate | Sünnikuupäev (lubatud ainult eri õigusega) | birthdate=1974-12-25 |
active | Patsiendi kirje olek (vaikimisi true) | active=false |
external-system-presence | Patsiendi olemasolu välises infosüsteemis. Hetkel on lubatud ainult https://rahvastikuregister.ee väärtus. Ei saa kasutada üksikparameetrina. | external-system-presence=https://rahvastikuregister.ee |
Patsiendi otsingu tulemusena tagastatakse Bundle (või teiste sõnadega "ümbrik"), mis võib sisaldada mitu ressurssi ( 0..n). Järgnevas näites teostatakse otsing Eesti isikukoodi 37412251234 järgi:
GET {MPI}/Patient?identifier=https://fhir.ee/sid/pid/est/ni|37412251234
Enne saatmist peab olema URL encode-itud vähemalt identifikaatori eraldaja sümbol "|":
GET {MPI}/Patient?identifier=https://fhir.ee/sid/pid/est/ni%7C37412251234
Vastusena tuleb (searchset) Bundle mis tagastab meta informatsiooni päringu kohta (total, link) ja kollektsiooni (entry) ressursidest.
{
"resourceType": "Bundle",
"type": "searchset",
"total": 2,
"link": [
{
"relation": "self",
"url": "{MPI}/Patient?identifier=https%3A%2F%2Ffhir.ee%2Fsid%2Fpid%2Fest%2Fni%7C37412251234&_page=1"
},
{
"relation": "first",
"url": "{MPI}/Patient?identifier=https%3A%2F%2Ffhir.ee%2Fsid%2Fpid%2Fest%2Fni%7C37412251234&_page=1"
},
{
"relation": "last",
"url": "{MPI}/Patient?identifier=https%3A%2F%2Ffhir.ee%2Fsid%2Fpid%2Fest%2Fni%7C37412251234&_page=1"
}
],
"entry": [
{
"fullUrl": "Patient/1",
"resource": {
"resourceType": "Patient",
"id": "1",
...
}
},
{
"fullUrl": "Patient/2",
"resource": {
"resourceType": "Patient",
"id": "2",
...
}
}
]
}
Terve andmekomplekti töötlemisel tuleb alati jälgida next linki olemasolu ja kasutada _page parameetri järgmiste lehtede laadimiseks.
Loe rohkem otsingu kohta FHIR dokumentatsioonist.
Vaata toetavate operatsioonide nimekirja.
Iga FHIR ressurssi muutmine loob ressursist uue versiooni. Varasemate versioonide nimekirja saamiseks kasutada päringut:
GET {MPI}/Patient/1/_history
Ühe kindla versiooni saab kätte päringuga:
GET {MPI}/Patient/1/_history/2
, kus 2 on versiooni number.
MPI pakub võimaluse pärida nimekirja muudetud patsientidest alates kindlast ajahetkest:
GET {MPI}/Patient/_history?_since=2023-03-31&_count=10
Patsiendi andmete saatmiseks PEAB iga FHIR-i ressurss sisaldama ressursi tüüpi (“resourceType”) ja profiili (“meta.profile”).
"resourceType" : "Patient",
"id": "1",
"meta": {
"profile": [
"https://fhir.ee/mpi/StructureDefinition/ee-mpi-patient-verified"
],
"source": "https://my.his.ee/Patient/92837-fdsvsd-3f4gfew-2342dwd"
}
Profiil on reeglite kogum, mis seotud kindla kasutusjuhuga. MPI toetab tuvastatud ja tundmatu patsiendi registreerimist. Tulevikus võivad lisanduda vastsündinu- ja surnultsündinu- registreerimine. Iga patsiendi lisamisel või muutmisel tuleb määrata vastav profiil.
Patsiendi loomisel/muutmisel tuleb saata POST/PUT päringud.
POST {MPI}/Patient
PUT {MPI}/Patient/3
Valiidne sõnum tuleb edastada päringu kehas. Andmekoosseis on kirjeldatud lehel Patsiendid
Eduka vastuse korral tagastab FHIR server HTTP koodi 20X. Näiteks uue patsiendi loomisel tagastatakse HTTP-kood = "201 Created". Vastuse päis "Location" sisaldab lingi loodud ressursile ja versioonile. Ressursi loomisel versioon on alati 1, uuendamisel versiooni suurendatakse 1 võrra.
Location: {MPI}/fhir/Patient/3/_history/1
Vastuses kehas on tagastatud salvestatud või uuendatud ressurs. NB! vastuse keha võib olla erinev saadetud kehast ja sisaldada parandatud andmeid, millega arendaja peab arvestama!
Loogilise vea puhul tuleb koodiga 40X viga. Juhul kui teenus ei ole kättesaadav, tuleb 50X viga. Vead tagastatakse OperationOutcome vormingus. Väli "code" sisaldab tüüpiliselt ühte loogilistest koodidest.
Vastuse väljade piiramiseks tuleb kasutada _elements
parameetri.
Väärtuseks tuleb panna komaga eraldatud väljade nimed, mida soovitakse kätte saada.
Näidis päring:
GET /Patient/123?_elements=name.family,gender
Tagastab soovitud välajad ning alati ka kohustuslikud väljad nagu id
ja meta
:
{
"resourceType": "Patient",
"id": "53552",
"meta": {
"lastUpdated": "2024-08-21T17:18:32.526+03:00",
"profile": [
"https://fhir.ee/mpi/StructureDefinition/ee-mpi-patient-verified"
],
"tag": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationValue",
"code": "SUBSETTED",
"display": "Resource encoded in summary mode"
}
]
},
"name": [
{
"family": "Võsaülane"
}
],
"gender": "male"
}
Ressurside vastuvõtmisel MPI FHIR liides toetab ajad erinevates ajatsoonides, näiteks UTC 1974-12-25T23:00:00Z
või offset'iga 1974-12-26T01:00:00+02:00
.
Vaata formaati spetsifikatsioonist.
Kui ajatsooni offset pole määratud, näiteks date tüüpi puhul, siis arvestatakse et aeg on Eesti ajatsoonis ehk Europe/Tallinn
. FHIR vastuses olevad ajad on
alati toodud Eesti ajatsoonis.