Autoriseerimise teenus
Autoriseerimise teenust kasutavad rakendused tokeni küsimiseks. Esialgu token valideeritakse ning selle käigus ka application. Kasutaja õigusi antud rollide ja asutustega kontrollitakse õiguste haldus- ja valideerimisteenuse abiga, kus andmeid koostatakse ning saadetakse /token päring SSO-sse. Lisaks võimaldab autoriseerimise teenus küsida sessiooni infot JWT tokenist (user info, role, organization info* jne) ja tühistada sessioon id järgi.
Liidestusjuhend tervisehoiuteenuse osutajale
Tervise infosüsteemi (TIS) X-Tee teenuste kasutamiseks tuleb eelnevalt küsida token (autoriseerimist kinnitav ligipääsupilet) autoriseerimise X-Tee teenuselt, andes sisendiks infot päringute sooritaja ja päringute subjekti kohta. Saadud token tuleb lisada TIS X-Tee päringute päisesse. Token on taaskasutatav kuni enda eluaja lõpuni.
Tokeni päring
Tokeni saamiseks peab tervishoiuteenuse osutaja (TTO) tarkvara pöörduma X-Tee turvaserveri poole X-Tee REST teenuse kaudu.POST https://{tto_turvaserveri_host}/r1/{INSTANCE}/GOV/70009770/tis/auth/v2/token
Päised
Päringute päised vastavad X-Tee REST protokolli nõuetele (https://www.x-tee.ee/docs/live/xroad/pr-rest_x-road_message_protocol_for_rest.html#4-message-format)
Teenus ootab järgmisi päiseid:
| Nimetus | Kirjeldus | |
|---|---|---|
| X-Road-UserId | X-Tee kasutaja isikukood EE eesliitega. Lubatud nii ISO 3166-1 alpha-2 riigi koodi eesliitega kui ka ilma | |
| X-Road-Client | Client vormis INSTANCE/CLASS/MEMBER/SUBSYSTEM |
Keha
Päringu teostamiseks on vaja anda päringu kehas objekt JSON kujul:
| Nimi | Kard. | Tüüp | Kirjeldus |
|---|---|---|---|
| ├─ user | 1…1 | OBJECT | Kasutaja, kelle nimelt andmed päritakse ühe tokeni kontekstis. |
| │ ├─ personalCode | 1…1 | STRING | Kasutaja isikukood |
| │ │ | Väärtus peab vastama X-Road-UserId päises oleva isikukoodiga. | ||
| │ └─ personalCodeSystem | 0…1 | STRING | Kasutaja isikukoodi süsteem. |
| │ | Vaikimisi: https://fhir.ee/sid/pid/est/ni | ||
| ├─ organization | 1…1 | STRING | Päringu sooritaja asutuse registrikood. |
| │ | Väärtus peab vastama X-Road-Client päises oleva member code osaga. | ||
| ├─ patient | 0…1 | OBJECT | Patsient, kelle kohta andmete pärimiseks tokenit võetakse. |
| │ │ | Peab olema defineeritud vähemalt üks väärtus: id, personalCode | ||
| │ │ | Kohustuslik patsiendite rollide puhul | ||
| │ ├─ id | 0…1 | STRING | Patsiendi ressursi id MPI-s. |
| │ ├─ personalCode | 0…1 | STRING | Patsiendi isikukood. |
| │ └─ personalCodeSystem | 0…1 | STRING | Patsiendi isikukoodi süsteem. |
| │ | Vaikimisi: https://fhir.ee/sid/pid/est/ni | ||
| ├─ representedParty | 0…1 | STRING | Asutuse registrikood, kelle nimelt andmed päritakse ühe tokeni kontekstis. |
| │ | Vajalik vaid juhul, kui see ei võrdu päringu sooritaja asutusega | ||
| ├─ role | 1…1 | STRING | Soovitud roll nimekirjast |
| │ | Lubatud väärtused: https://teabekeskus.tehik.ee/et/teenused/tis-teenused/tis-andmevahetus/autoriseerimise-teenuse-kasutajate-rollid | ||
| ├─ application | 1…1 | STRING | Päringut sooritav rakendus |
Tokeni pärimisel valideeritakse andmed tervishoiutöötajate registri, Terviseameti registri ja Rahvastikuregistri vastu
- Tervishoiuteenuse osutaja (TTO) juures töötava isiku puhul
- Kasutaja on kantud Terviseameti tervishoiutöötajate registrisse arstina või spetsialistina.
- Kasutajal on Terviseameti registrites seos kasutaja ja tervishoiuasutuse vahel.
- Patsiendi rolli puhul
- Kasutaja peab eksisteerima rahvastikuregistris
- Esindaja rolli puhul
- Peab eksisteerima vastav sugulusseos või esindusseos rahvastikuregistris (näiteks lapsevanem või hooldaja) või nõusolek
Täpsema valideerimise algoritmi leiab allpool peatükis “Rolli valideerimine”.
- Peab eksisteerima vastav sugulusseos või esindusseos rahvastikuregistris (näiteks lapsevanem või hooldaja) või nõusolek
Päringu näide - nurse
{
"user": {
"personalCode": "12345678901",
"personalCodeSystem": "https://fhir.ee/sid/pid/est/ni"
},
"organization": "12345678",
"representedParty": "87654321",
"role": "nurse",
"application": "my-app"
}Päringu näide – patient
{
"user": {
"personalCode": "12345678901"
},
"organization": "12345678",
"role": "patient",
"application": "my-app",
"patient": {
"personalCode": "12345678901"
}
}Päringu näide - authorized-person
{
"user": {
"personalCode": "1234567891"
},
"organization": "12345678",
"role": "authorized-person",
"application": "my-app",
"patient": {
"personalCode": "09876543211"
}
}Väljund
Vastuseks tuleb JSONi kujul autoriseerimise koodi objekt
| Nimi | Kirjeldus |
|---|---|
| └─ accessToken | Juurdepääsu token JWT formaadis |
| └─ expiresIn | Tokeni kehtivuse aeg sekundites |
| └─ tokenType | Tokeni tüüp |
Vastuse näide
{
"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expiresIn":300,
"tokenType":"Bearer"
}X-Tee päring ligipääsu tokeniga
Tervise infosüsteemi X-Tee päringu teostamisel tuleb lisaks standardsetel X-Tee päistele lisada esimesel sammul saadud token väljast accessToken järgmisel kujul:
| Nimetus | Väärtus |
|---|---|
| Authorization | Bearer {accessToken} |
Näide
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cVaata siit detailseid tabeleid Kasutajate rollid ja Rollide kirjeldused
Kontrollid
Kohustuslike elementide kontroll
Kohustuslikud elemendid on kirjeldatud peatükis “Liidestusjuhend”.
Lisaks valideeritakse, et asutuste registrikoodid vastaksid nõuetele ehk oleksid 8-kohalised araabia numbrid.
Küsides rolli patient, patient-limited, legal-representative, consent-representative või consent-representative-limited kontrollitakse patsiendi isikukoodi olemasolu. Rollide patient ja patient-limited peab patsiendi isikukood vastama kasutaja isikukoodiga. Teistel juhtudel peab erinema.
Asutuste valideerimine
Esmase asutuse kood leitakse päringu kehast organization väljalt, kus valideeritakse, et on sama (kui eksisteerib) x-road-client päisest member code väljaga. Viimane vastab X-Road Message Protocol For rest#Use of HTTP headers kirjeldatud formaadile.
Antud koodi alusel kontrollitakse MEDRE registrist, kas asutusel on kehtiv tegevusluba.
Kui päringu sisendis eksisteerib represented_party väljal registrikood, siis kontrollitakse kas antud asutus on aktiivne TAM registris.
Kasutaja seos tervishoiuteenuse osutajaga (TTO)
Kui soovitakse tervishoiutöötaja rolli, siis kontrollitakse kas kasutajal on kehtiv sissekanne TAM registris isikukoodi alusel. TAM vastusest leitakse isiku seosed TTO-dega ning leitakse vaste.
- Tervishoiutöötajad (arst, hambaarst, õde, ämmaemand) ja proviisor, farmatseut on MEDREsse registreeritud.
- Tervishoiuteenuse osutamisel osalevaid isikuid ja tervishoiutöötajaga võrdsustatud isikuid (spetsialistid jne) ei registreerita MEDREsse TTKS § 27 tähenduses, vaid nende andmed jõuavad sinna tegevusloa taotluse või tööandja esitatava tegevusloa teatise kaudu.
TÖR töösuhte kontroll
Töösuhte kontrollimiseks teostatakse TÖR registri päring, mis tagastab aktiivsed töösuhted. Kontrollitakse, et päringu asutuse registrikood esineb töösuhetes.
Esindatavust kirjeldav joonis
Patsiendi ja tema seaduslike esindajate info tuleb Rahvastikuregistrist ning täieõiguslike usaldusisikute info tervise infosüsteemi tabelist NRDB_CONSENT