Pieprasījumi
Resursu nodrošināšanas principi FHIR API
Izmantojamais API ir balstīts FHIR REST API, kas nodrošina darbu ar dažādiem HL7 FHIR objektiem. Pieejamie FHIR objekti ir atkarīgi no tā, cik FHIR profili ir pieejami sistēmai.
Vispārēja informācija par FHIR Standartiem ir pieejama šeit.
Pieejamie gala punkti
Izsaukuma metode | Galapunkts | Operācija | Apraksts | Statuss |
---|---|---|---|---|
POST | /api/(resourceType) | Saglabā jaunu resursa ierakstu LAB IS | Pieejams | |
PUT | /api/(resourceType) | id | Saglabā jaunu resursa ieraksta versiju LAB IS | Pieejams |
PATCH | /api/(resourceType) | id | Saglabā jaunu resursa ieraksta versiju LAB IS, veicot izmaiņas norādītajā resursa lauka vērtībā, pārējo saturu pārņemot no iepriekšējās resursa versijas | Izstrādē |
GET | /api/(resourceType) | id | Izmantojot resursa ieraksta identifikatoru, iegūst konkrētā resursa ieraksta datus. | Pieejams |
GET | /api/(resourceType)/(id) | _history | Izmantojot resursa ieraksta identifikatoru, iegūst konkrētā resursa ieraksta aktuālos un vēsturiskos datus | Pieejams |
GET | /api/(resourceType)/(id) | _history/(version) | Izmantojot resursa ieraksta identifikatoru un versiju, iegūst konkrētā resursa ieraksta norādīto versiju | Pieejams |
GET | /api/(resourceType)/ | _search | Meklē norādīto resursu pēc atļautajiem datu laukiem | Pieejams |
POST | /api/(resourceType)/ | _search | Meklē norādīto resursa tipu | Izstrādē |
POST | /api/(resourceType)/ | by-identity | Meklē norādīto resursa ierakstu pēc tipa, sistēmas un vērtības | Pieejams |
POST | /api/ | Saņem transakciju izpildei | Pieejams |
NVD testa vides gala punkts:
https://fhir-api-tv.lab.eveseliba.gov.lv/fhir/api
Pieejamo galapunktu pieprasījumu galvenes lauki
Izsaukuma metode | Galapunkts | Operācija | Galvenes lauks | Vērtība | Galvenes lauka apraksts | Kad? |
---|---|---|---|---|---|---|
POST | /api/(resourceType) | |||||
Content-Type | application/fhir+json | Pieprasījuma body formāts | Vienmēr | |||
X-Provenance | JSON | Provenance objekts, kas satur t.sk. datu parakstu | Ja pieprasījuma resurs nav "Patient" | |||
Prefer | respond-async | Norāda uz asinhrono pieprasījuma apstrādi | Vienmēr | |||
Prefer | return=representation | Ja atbildē sagaidām jaunizveidoto resursu | Ja pieprasījuma resurs ir "Patient" | |||
PUT | /api/(resourceType) | id | ||||
Content-Type | application/fhir+json | Pieprasījuma body formāts | Vienmēr | |||
X-Provenance | JSON | Provenance objekts, kas satur t.sk. datu parakstu | Ja pieprasījuma resurs nav "Patient" | |||
Prefer | respond-async | Norāda uz asinhrono pieprasījuma apstrādi | Vienmēr | |||
GET | /api/(resourceType) | id | ||||
Accept | application/fhir+json | Norāda uz atbildes formātu | Ja iegūstamie JSON | |||
GET | /api/(resourceType)/(id) | _history | ||||
Accept | application/fhir+json | Norāda uz atbildes formātu | Vienmēr | |||
GET | /api/(resourceType)/(id) | _history/(version) | ||||
Accept | application/fhir+json | Norāda uz atbildes formātu | Vienmēr | |||
GET | /api/(resourceType)/ | _search | ||||
Accept | application/fhir+json | Norāda uz atbildes formātu | Vienmēr | |||
Prefer | return=representation | Norāda, ja atbilde nepieciešams saņemt pieprasījuma statusu kopā ar izveidoto resursu | Neobligāts "_job" resursa datu izsaukumiem | |||
POST | /api/(resourceType)/ | by-identity | ||||
Content-Type | application/fhir+json | Pieprasījuma body formāts | Vienmēr | |||
Accept | application/fhir+json | Norāda uz atbildes formātu | Vienmēr | |||
Prefer | respond-async | Norāda uz asinhrono pieprasījuma apstrādi | Vienmēr |
Izsaukumos pieejamie resursu veidi
NVD FHIR saskarne datu apmaiņai nodrošina atbalstu šādiem resursu tipiem:
Binary - binārās datnes (piem., pdf);
Communication - dati par komunikācijas notikumu;
Condition - diagnožu dati;
Consent - dati par papildus pieejas ierobežojumiem;
Coverage - dati par apmaksas avotiem (piem., apdrošināšanas līgumi, valsts garantēta apmaksa);
DiagnosticReport - izmeklējumu rezultātu pārskati;
MedicationStatement - ārstniecības līdzekļu dati;
Observation - izmeklējumu dati;
Organization - dati par ĀI un to filiālēm;
Patient - dati par pacienta personu;
Practitioner - dati par ĀP;
PractitionerRole - dati par ĀP;
Procedure - manipulāciju dati;
ServiceRequest - nosūtījumi;
Specimen - dati par paraugiem.
Sistēma nodrošina atbalstu tikai resursiem, kas balstīti uz NVD vajadzībām pielāgotajiem publicētiem profiliem.
Profilu norāde
Visos FHIR izsaukumos kuri pievieno vai labo LAB IS datus obligāti pie iesūtāmajiem datiem nepieciešams veikt pieprasījumā izmantojamā profila norādi!
Piemērs:
{ "meta": { "profile": [ "https://vvis.gov.lv/fhir/StructureDefinition/Patient/LVPatient" ] } <<<Biznesa dati>>> }
Pieprasījumu struktūras
/api/(resourceType)
Metode GET
Galapunkta GET metodei ir pieejamas vairākas operācijas, kuras savā starpā atšķirās ar pieprasījuma izveides struktūru.
- Metode "/id" - Metodes ietvaros pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā resursa tipu un LAB IS ieraksta identifikatoru, veidojot izsaukumu atbilstoši formātam: "/api/(resourceType)/(id)". Atgieztā datu struktūra satur datus par izsaukto sistēmas ierakstu.
- Metode "/_history" - Metodes ietvaros pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā restursa tipu un LAB IS ieraksta identifikatoru, veidojot izsaukumu atbilstoši formātam: "/api/(resourceType)/(id)/_history". Atgieztā datu struktūra saturēs datus par izsaukto sistēmas ierakstu un visām vēsturiskajām ieraksta datu kopām.
- Metode "/_history/(version)" - Metodes ietvaros pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā restursa tipu, LAB IS ieraksta identifikatoru un versiju, par kuru jāatgriež aktuālais vēsturiskais ieraksts, veidojot izsaukumu atbilstoši formātam: "/api/(resourceType)/(id)/_history/(date)". Atgieztā datu struktūra saturēs datus ieraksta datu kopu atbilstoši norādītajai versijai.
- Metode "/_search" - pieprasījumā tiek norādīts atļautais FHIR path lauks kā meklēšanas parametrs
Metode PUT
Galapunkta PUT metodei ir izmantojama datu labošanas/aizvietošanas vajadzībām.
- Metode "/id" - Metodes ietvaros pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā restursa tipu un LAB IS ieraksta identifikatoru veidojot izsaukumu atbilstoši formātam: "/api/(resourceType)/(id)". Papildus metodē ir iespējams norādīt callback header parametru, kurā var norādīt adresi, uz kuru FHIR API nosūta transakcijas statusu. PUT metodes body struktūra ir atkarīga no resursa tipa definētā profila.
Metode POST
Galapunkta POST metodei ir izmantojama datu izveidei.
- Pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā restursa tipu,veidojot izsaukumu atbilstoši formātam: "/api/(resourceType)". Papildus metodē ir iespējams norādīt callback header parametru, kurā var norādīt adresi, uz kuru FHIR API nosūta tranzakcijas statusu. POST metodes body struktūra ir atkarīga no resursa tipa definētā profila.
/api/search/(resourceType)
Metode POST
Galapunkta POST metodei ir pieejamas vairākas operācijas, kuras savā starpā atšķirās ar pieprasijuma izveides struktūru.
- Metode "/id" - Metodes ietvaros pieprasījumu struktūrā ir sagaidāms norādīt izsaucamā restursa tipu, veidojot izsaukumu atbilstoši formātam: "/api/search/(resourceType)/by-identity". Izsaukuma body struktūra vienmēr saturēs sekojošos laukus: "{ "value": "string", - Meklējamā vērtība "system": "string", - meklējamās vērtības sistēmas identifikators "resourceType": "string" - Sagaidāmā atbildes resursa tipa nosaukums. }"Atgieztā datu struktūra saturēs datus par izsaukto sistēmas ierakstu.
Dinamiskā meklēšana ar _search
Operācijā izmantojamie resursi
Meklēšanas operācija ir izmantojama sekojošajiem FHIR resursiem:
Resursa nosaukums sistēmā | Aprakts |
---|---|
PractitionerRole | Arstniecības personas darba vieta |
Organization | Medicīnas iestāde vai medicīnas iestādes filiāle |
Practitioner | Arstniecības persona |
Resursiem piesaistītie vērtību filtra lauki
Resursa nosaukums sistēmā | Filtra lauks | Filtra lauka vērtības |
---|---|---|
PractitionerRole | active | true vai false |
PractitionerRole | identifier[].system | Klasifikatora OID "1.3.6.1.4.1.38760.2.37" |
Organization | active | true vai false |
Organization | identifier[].system | Klasifikatora OID, kur "1.3.6.1.4.1.38760.2.23" tiek norādīts meklējot ārstniecības iestādī un "1.3.6.1.4.1.38760.2.28" tiek norādīts meklējot ārstniecības iestādes filiāli |
Practitioner | active | true vai false |
Practitioner | identifier[].system | Klasifikatora OID "1.3.6.1.4.1.38760.3.1.4" vai "1.3.6.1.4.1.38760.3.1.1" |
Lapošanas izmantošana operācijas izsaukumos
Ja meklēšanas operācijas atrasto ierakstu skaits pārsniedz sistēmā definēto vienas lappas izmēru, tad izsaukuma atbildes struktūra tiek papildināta ar "link" objektu masīvu, kur masīva objekts satur laukus "relation" un "url"
JSON lauks | Apraksts |
---|---|
link | Satur lappaspušu navigācijas datus |
link.relation | Norāde uz objekta link.url pielietojumu. Iespējamās vērtības "self" - norāda pašreizējās lapas datu izsaukuma saiti; "next" - norādā nākamās lapas datu izsaukuma saiti; "previous" - norāda iepriekšējās lapas datu izsaukuma saiti |
link.url | Lapas datu izsaukuma saiti |
Piezīme:
- Pašreizējās lapas saite tiek uzrādīta tikai gadījumā, ja "link" masīvs satur vienu vai abus JSON objektus ar references lauka vērtībām "next" vai/un "previous".
- Nākamās lapas saite tiek uzrādīta tikai gadījumā, ja nākamā lappa eksistē.
- Iepriekšejās lapas saite tiek uzrādīta tikai gadījumā, ja ja iepriekšējā lappa eksistē.
- Veicot iepriekšējās lapas datu pieprasījumu dati tiek kārtoti dilstōša secībā pēc ieraksta identifikatoriem.
- Veicot nākamās lapas datu pieprasījumu dati tiek kārtoti augošā secībā pēc ieraksta identifikatoriem.
Piemērs lapošanas masīvam
"link": [ { "relation": "previous", "url": "{DOMAIN}/fhir/api/Organization/_search?active=true&identifier[].system=1.3.6.1.4.1.38760.2.23&search_previous=01H0JKDZ1F010MXYSJF6JBYJW0" }, { "relation": "self", "url": "{DOMAIN}/fhir/api/Organization/_search?active=true&identifier[].system=1.3.6.1.4.1.38760.2.23&search_next=01H0JKDZ1F01XHMXW69XCCX4CW" }, { "relation": "next", "url": "{DOMAIN}/fhir/api/Organization/_search?active=true&identifier[].system=1.3.6.1.4.1.38760.2.23&search_next=01H0JKDZ1F035PXAZHXVEX641E" } ]
Piezīme: piemera nolūkos host saite aizvietota ar DOMAIN!