Hakuoperaation HTTP pyyntö (request)
Hakuoperaatio välitetään palvelulle HTTP pyyntönä (request) POST-metodilla. HTTP pyynnön tiedot välittyvät HTTP header- ja body-osuuksiin jaettuna. HTTP pyynnön header-osuus sisältää palvelua käyttävän tahon tunnistautumiseen ja valtuuttamiseen liittyvät tiedot. HTTP pyynnön body-osuus sisältää pyynnössä käytettävät kyselyparametrit.
Pyynnön HTTP header
Operaation pyynnön HTTP header sisältää HTTP authorization header-osuudessa palvelua käyttävän tahon tunnistautumiseen ja valtuuttamiseen liittyvät tiedot sekä muita yleisiä HTTP header tietoja.
HTTP authorization header-tiedot
Header-osuuden tekninen muoto
Header-osuuden tekninen muoto on seuraava:
- HTTP authorization header-osuuden sisältö Base64-enkoodataan ennen liittämistä HTTP headeriin
- Käytettävä merkistö (charset): UTF-8
- Rivivaihdon erotin (newline separator): LF (Unix)
HTTP authorization header-osuuden tietosisältö
HTTP authorization header-osuudessa välitetään alla olevassa taulukossa kuvatut tiedot.
P=Pakollinen, EP=Ehdollisesti pakollinen, V=Valinnainen
Header-osa | Kenttä | Pakollisuus | Selite |
---|---|---|---|
system | P | Pyynnön tehnyt järjestelmä | |
id | P | Pyynnön tehneen tietojärjestelmän tunniste | |
name | P | Pyynnön tehneen tietojärjestelmän nimi | |
user | P | Pyynnön tehnyt käyttäjä | |
id | P | Pyynnön tehneen käyttäjän tunniste | |
name | P | Pyynnön tehneen käyttäjän nimi | |
authenticationMethod | P | Tunnistautumismenetelmä (KanTa-palvelut - tunnistautumistapa -koodiston mukainen arvo) | |
serviceSubscriber | P | Liittyjän organisaation tiedot (palvelunantaja tai yhteisliittymismallin isäntä) | |
id | P | Liittyjän tunniste | |
name | P | Liittyjän nimi | |
unitId | V vai EP | Liittyjän organisaation palveluyksikön tunniste | |
unitName | V vai EP | Liittyjän organisaation palveluyksikön nimi | |
serviceRequester | P | Pyynnön tehneen organisaation tiedot: palvelunantajan tai yhteisliittymismallin vuokralaisen tiedot | |
id | P | Pyynnön tehneen organisaation tunniste | |
name | P | Pyynnön tehneen organisaation nimi | |
unitId | V vai EP | Pyynnön tehneen palveluyksikön tunniste | |
unitName | V vai EP | Pyynnön tehneen palveluyksikön nimi |
Authorization header esimerkki (suoraan liittynyt, ei yhteisliittymistä):
{ "system": { "id": "123-XYZ", "name": "Burana softa" }, "user": { "id": "1.2.246.537.25.000018", "name": "Vilhelmiina Adelmiina Heinänenä", "authenticationMethod": "1" }, "serviceSubscriber": { "id": "1.2.246.10.10694591.10.0", "name": "Lääkärikeskus Oy" }, "serviceRequester": { "id": "1.2.246.10.10694591.10.0", "name": "Lääkärikeskus Oy" } }
Authorization header esimerkki2 (yhteisliittyminen):
{ "system": { "id": "123-XYZ", "name": "Burana softa" }, "user": { "id": "1.2.246.537.25.000018", "name": "Vilhelmiina Adelmiina Heinänenä", "authenticationMethod": "1" }, "serviceSubscriber": { "id": "1.2.246.10.10694591.10.0", "name": "Lääkärikeskus Oy", "unitId": "1.2.246.10.10694591.10.1", "unitName": "Lääkärikeskus, palveluyksikkö" }, "serviceRequester": { "id": "1.2.246.10.10694480.10.0", "name": "Vuokralainen", "unitId": "1.2.246.10.10694480.10.1", "unitName": "Vuokralaisen palveluyksikkö" } }
Esimerkki tietosisällön Base64-enkoodattu muodosta:
ew0KICAgICJzeXN0ZW0iOiB7DQogICAgICAgICJpZCI6ICIxMjMtWFlaIiwNCiAgICAgICAgIm5hbWUiOiAiQnVyYW5hIHNvZnRhIg0KICAgIH0sDQogICAgInVzZXIiOiB7DQogICAgICAgICJpZCI6ICIxLjIuMjQ2LjUzNy4yNS4wMDAwMTgiLA0KICAgICAgICAibmFtZSI6ICJWaWxoZWxtaWluYSBBZGVsbWlpbmEgSGVpbsOkbmVuw6QiLA0KICAgICAgICAiYXV0aGVudGljYXRpb25NZXRob2QiOiAiMSINCiAgIH0sDQogICAgInNlcnZpY2VTdWJzY3JpYmVyIjogew0KICAgICAgICAiaWQiOiAiMS4yLjI0Ni4xMC4xMDY5NDU5MS4xMC4wIiwNCiAgICAgICAgIm5hbWUiOiAiTMOkw6Rrw6RyaWtlc2t1cyBPeSIsDQogICAgICAgICJ1bml0SWQiOiAiMS4yLjI0Ni4xMC4xMDY5NDU5MS4xMC4xIiwNCiAgICAgICAgInVuaXROYW1lIjogIkzDpMOka8OkcmlrZXNrdXMsIHBhbHZlbHV5a3Npa2vDtiINCiAgICB9LA0KICAgICJzZXJ2aWNlUmVxdWVzdGVyIjogew0KICAgICAgICAiaWQiOiAiMS4yLjI0Ni4xMC4xMDY5NDQ4MC4xMC4wIiwNCiAgICAgICAgIm5hbWUiOiAiVnVva3JhbGFpbmVuIiwNCiAgICAgICAgInVuaXRJZCI6ICIxLjIuMjQ2LjEwLjEwNjk0NDgwLjEwLjEiLA0KICAgICAgICAidW5pdE5hbWUiOiAiVnVva3JhbGFpc2VuIHBhbHZlbHV5a3Npa2vDtiINCiAgICB9DQp9
Yleiset HTTP header-tiedot
Pyynnön yleiset HTTP header-tiedot ovat seuraavat
- Content-Type (pakollinen): pyyntösanoman muoto: application/fhir+json
- X-Request-Id (pakollinen): pyyntösanoman yksilöivä tunniste. esim.: 2a844596-bee7-4173-b469-cef15b1554c0
- X-ConsentCode (pakollinen): suostumustyyppi. esim. 1
Lisätiedot X-alkuisista FHIR custom headereista: FHIR custom headers
HTTP header-tietoihin siirretyt HL7 V3 MR parametrit
Seuraavat tiedot on HL7 V3 MR rajapinnassa esitetty kyselyparametreina tai kontrollikehyksessä. Ne ovat siirretty FHIR rajapinnassa HTTP header-tiedoiksi. Näitä tietoja ovat:
- X-ActiveServiceEventId (ehdollisesti pakollinen): Palvelutapahtuman tunniste, jonka toteuttamiseen reseptikeskuksesta haettavia tietoja käytetään. Vastaa HL7 V3 MR tietoa activeEncompassingEncounterId, ehdollisesti pakollinen samalla ehdolla kun MR rajapinnassa (MR-ehto: Tämä kenttä on pakollinen potilastietojärjestelmän tehdessä hakuja, jos haku tehdään palvelutapahtuman yhteydessä)
- X-Purpose (pakollinen): Kyselyn syy (1.2.246.537.5.40110.2006 - koodiston koodit). Vastaa HL7 V3 MR kontrollikehys tietoa reasonCode.
- X-Extent (optionaalinen): Palautettavien tietojen laajuus (1.2.246.537.5.40160.2008 - koodiston koodit. Vastaa HL7 V3 MR kontrollikehys tietoa reasonCode.
- X-ConsentCode (pakollinen): Suostumustyyppi (1.2.246.537.5.40119.2006 - koodiston koodit). Vastaa HL7 V3 MR kontrollikehys tietoa detectedIssueManagement.
Pyynnön HTTP header esimerkki
POST http://example.org/baseR4/MedicationRequest/$get-prescriptions-metadata HTTP/1.1
Content-Type: application/json+fhir
Authorization: Kanta-Rx ew0KICAgImxpaXR0eWphIjp7DQogICAgICAidHVubmlzdGUiOiIxLjIuMjQ2LjEwLjIy...
X-Request-Id: 2a844596-bee7-4173-b469-cef15b1554c0
X-Purpose: 1
X-ConsentCode: 1
Pyynnön HTTP body
Operaation kyselyparametrit ovat kuvattu tämän oppaan kohdassa Yksilöintitietojen kyselyparametrit. Kyselyparametrit välitetään HTTP pyynnön body-osassa Parameters resurssin avulla.
Yksittäiset parametrit yhdistetään AND ehdolla ja parametrien toistumat OR ehdolla.
Alla esimerkki Parameters resurssi-instanssista
{ "resourceType": "Parameters", "parameter": [ { "name": "patientIdentifier", "valueIdentifier": { "system": "urn:oid:1.2.246.21", "value": "010308A9016" } }, { "name": "assignedAuthorId", "valueIdentifier": { "system": "urn:oid:1.2.246.537.25", "value": "032763" } }, { "name": "statusReason", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "1" } }, { "name": "statusReason", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "2" } }, { "name": "statusReason", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "3" } } ] }
Esimerkkihakuja
Alla on kuvattu yksilöintitietojen yleisimmin käytettyjä hakuyhdistelmiä. Laajemmin erilaisia hakuyhdistelmiä löytyy Reseptien haku- liitteistä potilas- ja apteekkitietojärjestelmille. Kyselyn syy välitetään pyynnön HTTP header-osuudessa.
Yksilöintitietojen haku Reseptikeskuksesta
Potilastietojärjestelmä
Reseptien haku hoitoa varten, kaikki määräykset
- Hakuehdot: henkilötunnus
{ "resourceType" : "Parameters", "parameter" : [ { "name": "patientIdentifier", "valueIdentifier": { "system": "urn:oid:1.2.246.21", "value": "010308A9016" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "1" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "2" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "3" } } ] }
Apteekkitietojärjestelmä
Reseptien haku toimittamista varten (avoapteekki)
- Hakuehdot: henkilötunnus, dispenseStatus
{ "resourceType" : "Parameters", "parameter" : [ { "name": "patientIdentifier", "valueIdentifier": { "system": "urn:oid:1.2.246.21", "value": "010308A9016" } }, { "name" : "dispenseStatus", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40121.2006", "code": "1" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "1" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "2" } }, { "name" : "statusReason", "valueCoding" : { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "3" } }, { "name" : "category", "valueCoding" : { "system": "urn:oid:1.2.246.537.6.605.2014", "code": "1" } } ] }
Yksilöintitietojen kyselyparametrit
Alla olevassa taulukossa on kuvattu Yksilöintitietojen REST hakuoperaatiossa käytettävät kyselyparametrit. Kyselyparametrit on määritelty käyttäen Parameters resurssia.
Kyselyparametrien pakollisuudet ja hakujen rajaukset ovat kuvattu Medical records- dokumentin kappaleessa 8 ja Yksilöintitietojen REST hakuoperaatio noudattaa näitä samoja Medical Records määrittelyjä.
Kyselyparametri | parameter.value[x] | FHIR esimerkki | MR-kenttä, selite |
---|---|---|---|
patientIdentifier | valueIdentifier 0..n | { "resourceType": "Parameters", "parameter": [ { "name": "patientIdentifier", "valueIdentifier": { "system": "urn:oid:1.2.246.21", "value": "030875-999Y" } }, { "name": "patientIdentifier", "valueIdentifier": { "system": "urn:oid:1.2.246.21", "value": "120385-123P" }} ] } | patient.id - henkilötunnus - haetaan tietyn potilaan asiakirjoja. Max 20 hetua.Jos on useampi henkilötunnus - toistetaan patientIdentifier parametria. |
assignedAuthorId | valueIdentifier 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "assignedAuthorId", "valueIdentifier": { "system": "urn:oid:1.2.246.537.25", "value": "032763" } } ] } | assignedAuthor.id - asiakirjan laatijan id - haetaan tietyn henkilön laatimia dokumentteja |
representedOrganizationId | valueIdentifier 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "representedOrganiza-tionId", "valueIdentifier": { "system": "urn:ietf:rfc:3986", "value": "urn:oid:1.2.246.10.8182355.10.1" } } ] } | representedOrganization.id - organisaaation id -haetaan tietyn organisaation (palveluyksikön) laatimia dokumentteja, HUOM. tämä parametri käytössä vain apteekkien tekemässä haussa |
identifier | valueIdentifier 0..n | { "resourceType": "Parameters", "parameter": [ { "name": "identifier", "valueIdentifier": { "system": "http://resepti.kanta.fi/fhir/id/id", "value": "urn:oid:1.2.246.10.11111111.93.2020.1158" } } ] } | clinicalDocument.id - asiakirjan id - yksi tai useampi id. Jos on useampi id, toistetaan identifier parametria. Identifier kyselyparametria käytetään sekä clinicalDocumentId että setId hauissa. Kyselyt voidaan erottaa toisistaan eri "system" arvoilla |
identifier | valueIdentifier 0..n | { "resourceType": "Parameters", "parameter": [ { "name": "identifier", "valueIdentifier": { "system": "http://resepti.kanta.fi/fhir/id/setId", "value": "urn:oid:1.2.246.10.11111111.93.2020.1158" } } ] } | setId - asiakirjan eri versiot yhdistävä Id |
clinicalDocumentEffectiveTime | valuePeriod 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "clinicalDocumentEf-fectiveTime", "valuePeriod": { "start": "2021-02-20", "end": "2021-02-22" }} ] } | clinicalDocument.effectiveTime - asiakirjan luontiaikaa. DateTime sekunnin tarkkuudella |
authoredOn | valuePeriod 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "authoredOn", "valuePeriod": { "start": "2021-02-20", "end": "2021-02-22" }} ] } | encompassingEncounter.effectiveTime - low/high - aikaväli. Lääkemääräyksessä määräyspäivä, toimituksessa toimituspäivä. Muissa asiakirjoissa kuin lääkemääräyksissä ja toimituksissa sekä näiden korjauksissa ja mitätöinneissä toimenpiteen tekohetki (esimerkiksi lukituksen tekoaika) |
statusReason | coding 1..n | { "resourceType": "Parameters", "parameter": [ { "name": "statusReason", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40105.2006", "code": "1" }} ] } | clinicalDocument.code. Koodisto: Sähköinen lääkemääräys - Reseptisanoman tyyppi - 1.2.246.537.5.40105.2006 |
dispenseStatus | coding 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "dispenseStatus", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40121.2006", "code": "1" }} ] } | dispenseStatus - voidaan pyytää tietyssä toimitustilassa olevat lääkemääräykset. Koodisto: Sähköinen lääkemääräys - Lääkemääräyksen toimituksen tila - 1.2.246.537.5.40121.2006 |
category | coding 0..n | { "resourceType": "Parameters", "parameter": [ { "name": "category", "valueCoding": { "system": "urn:oid:1.2.246.537.6.605.2014", "code": "1" }} ] } | prescriptionType. Koodisto: THL - Reseptin laji - 1.2.246.537.6.605.2014 |
recentMedicationinformation | boolean 0..1 | "resourceType": "Parameters", "parameter": [ { "name": "recentMedicationinformation", "valueBoolean": true} ] } | recentMedicationinformation - "true/false arvo. Asetetaan arvoon ”true” osoittamaan, että kysely rajataan koskemaan voimassa olevaa lääkitystä. |
recentDispenseinformation | boolean 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "recentDispenseinformation", "valueBoolean": true} ] } | recentDispenseinformation - "true/false arvo. Asetetaan arvoon ”true” osoittamaan, että kysely rajataan koskemaan tietyllä ajalla toimitettuja lääkemääräyksiä. |
specialQueryCode | part 0..1 | { "resourceType": "Parameters", "parameter": [ { "name": "specialQueryCode", "part": [ { "name": "code", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40187.2011", "code": "2" } }, { "name": "value", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40118.2006", "code": "H" } }, { "name": "value", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40118.2006", "code": "P" } },{ "name": "value", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40118.2006", "code": "Z" } },{ "name": "value", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40118.2006", "code": "PA" } },{ "name": "value", "valueCoding": { "system": "urn:oid:1.2.246.537.5.40118.2006", "code": "ZA" } } ] } ] } | specialQueryCode - voidaan antaa arvoja eri koodistoista KanTa-palvelut - Sisäisen hakukysely -koodiston mukaan 1.2.246.537.5.40187.2011 |