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 |