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