FHIR-sökexempel
Här följer exempel på FHIR-sök-API-anrop® (Fast Healthcare Interoperability Resources) med olika sökparametrar, modifierare, länkade och omvända länkade sökningar, sammansatta sökningar, POST
sökförfrågningar med mera. En allmän introduktion till FHIR-sökbegrepp finns i Översikt över FHIR-sökning.
Sökresultatparametrar
_include
_include
låter dig söka efter resursinstanser och inkludera andra resurser som refereras av målresursinstanserna i resultatet. Du kan till exempel använda _include
för MedicationRequest
att fråga efter resurser och begränsa sökningen till recept för en specifik patient. FHIR-tjänsten returnerar MedicationRequest
sedan resurserna och den refererade Patient
resursen. I följande exempel hämtar begäran alla MedicationRequest
resursinstanser i databasen och alla patienter som refereras av MedicationRequest
instanserna.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Kommentar
FHIR-tjänsten i Azure Health Data Services begränsar sökningar med _include
och _revinclude
för att returnera högst 100 objekt.
_revinclude
_revinclude
gör att du kan söka efter resursinstanser och inkludera andra resurser som refererar till målresursinstanserna i resultatet. Du kan till exempel söka efter patienter och sedan omvänd inkludera alla möten som refererar till patienterna.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
begränsar informationen i sökresultatet till en delmängd av elementen som definierats för en resurstyp. Parametern _elements
accepterar en kommaavgränsad lista med baselement.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Föregående begäran returnerar ett paket med patienter. Varje post innehåller endast identifierarna och patientens aktiva status. Posterna i svaret innehåller värdet meta.tag
SUBSETTED
för för att indikera att inte alla element som definierats för resursen ingår.
Sökmodifierare
:not
:not
gör att du kan hitta resurser med ett element som inte har ett angivet värde. Du kan till exempel söka efter patienter som inte är kvinnor.
GET {{FHIR_URL}}/Patient?gender:not=female
I gengäld får du alla Patient
resurser vars gender
elementvärde inte female
är , inklusive alla patienter utan angivet könsvärde. Detta skiljer sig från att söka Patient
efter resurser med male
könsvärdet eftersom det skulle ignorera patienter utan angivet kön.
:missing
:missing
returnerar alla resurser som inte har något värde för det angivna elementet när :missing=true
. :missing
Dessutom returnerar alla resurser som innehåller det angivna elementet när :missing=false
. För enkla datatypselement :missing=true
matchar på alla resurser där ett element finns men har ett tomt värde. Om du till exempel vill hitta alla Patient
resurser som saknar information om birthdate
kan du göra följande anrop.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
används för att söka efter element med string
datatyper och returnerar positivt om parametervärdet exakt matchar skiftläget och den fullständiga teckensekvensen för elementvärdet.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Den här begäran returnerar Patient
resurser som har given
namnet Jon
eller family
. Om det fanns patienter med namn som Jonathan
eller JON
skulle sökningen ignorera dessa resurser eftersom deras namn inte matchar det angivna värdet exakt.
:contains
:contains
används för string
att fråga efter typelement och tillåter matchningar med det angivna värdet var som helst i fältet. contains
är inte skiftlägeskänslig och identifierar matchande strängar som sammanfogats med andra tecken. Till exempel:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Den här begäran returnerar alla Patient
resurser med address
elementfält som innehåller strängen "Meadow" (skiftlägesokänslig). Det innebär att du kan ha adresser med värden som "Meadows Lane", "Pinemeadow Place" eller "Meadowlark St" som returnerar positiva matchningar.
Länkad sökning
Om du vill utföra sökåtgärder som omfattar element som finns i en refererad resurs kan du "kedja" en serie parametrar tillsammans med .
. Om du till exempel vill visa alla DiagnosticReport
resurser med en subject
referens till en patient som anges av name
använder du följande fråga.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Den här begäran returnerar alla DiagnosticReport
resurser med ett patientämne med namnet "Sarah". Pekar .
den länkade sökningen till elementet name
i den refererade Patient
resursen.
En annan vanlig användning av FHIR-sökning är att hitta alla möten för en specifik patient. Om du vill göra en vanlig (icke-länkad) sökning efter Encounter
resurser som refererar till en Patient
med en viss id
användning använder du följande.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Med hjälp av länkad sökning kan du hitta alla Encounter
resurser som refererar till patienter vars information matchar en sökparameter. I följande exempel visas hur du söker efter möten som refererar till patienter som begränsas av birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Detta returnerar alla Encounter
instanser som refererar till patienter med det angivna birthdate
värdet.
Dessutom kan du initiera flera länkade sökningar med hjälp av operatorn &
, vilket gör det möjligt att söka mot flera referenser i en begäran. I fall med &
söker länkad sökning "oberoende" efter varje elementvärde.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Detta returnerar alla Patient
resurser som har en referens till "Sarah" som plus generalPractitioner
en referens till en generalPractitioner
som har en adress i delstaten Washington. Med andra ord, om en patient hade en namngiven Sarah från Delstaten New York och en generalPractitioner
annan generalPractitioner
som heter Bill från Delstaten Washington, skulle båda uppfylla villkoren för en positiv matchning när de gjorde denna sökning.
Scenarier där sökningen kräver ett logiskt AND-villkor som strikt söker efter parkopplade elementvärden finns i följande sammansatta sökexempel .
Omvänd länkad sökning
Med omvänd länkad sökning i FHIR kan du söka efter målresursinstanser som refereras av andra resurser. Med andra ord kan du söka efter resurser baserat på egenskaperna för resurser som refererar till dem. Detta görs med parametern _has
. Resursen Observation
har till exempel en sökparameter patient
som söker efter en referens till en Patient
resurs. Om du vill hitta alla Patient
resurser som refereras av en Observation
med en specifik code
använder du följande kod.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Den här begäran returnerar Patient
resurser som refereras av Observation
resurser med koden 527
.
Dessutom kan omvänd länkad sökning ha en rekursiv struktur. Om du till exempel vill söka efter alla patienter som refereras av en Observation
där observationen refereras av en AuditEvent
från en specifik läkare med namnet janedoe
, använder du:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Sammansatt sökning
Om du vill söka efter resurser som innehåller element grupperade som logiskt anslutna par definierar FHIR sammansatt sökning, som kopplar samman enskilda parametervärden tillsammans med operatorn $
– och bildar ett anslutet par parametrar. I en sammansatt sökning inträffar en positiv matchning när skärningspunkten mellan elementvärden uppfyller alla villkor som anges i de kopplade sökparametrarna. Följande exempel frågar efter alla DiagnosticReport
resurser som innehåller ett kaliumvärde som är mindre än 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
De kopplade elementen i det här fallet är elementet code
(från en Observation
resurs som refereras till som result
) och elementet som är anslutet value
code
till . Efter koden med operatorn $
anger villkoret value
som lt
(för "mindre än") 9.2
(för kalium mmol/L-värdet).
Sammansatta sökparametrar kan också användas för att filtrera flera komponentkodvärdekvantiteter med en logisk OR. Till exempel för att fråga efter observationer med diastoliskt blodtryck större än 90 ELLER systoliskt blodtryck större än 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Observera hur ,
fungerar som den logiska OR-operatorn mellan de två villkoren.
Visa nästa postuppsättning
Det maximala antalet resurser som kan returneras samtidigt från en sökfråga är 1 000. Du kan dock ha fler än 1 000 resursinstanser som matchar sökfrågan och du vill hämta nästa uppsättning resultat efter de första 1 000 posterna. I det här fallet använder du värdet för fortsättningstoken (dvs"next"
. ) i paketet searchset
som returneras från sökningen enligt url
följande.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
}
],
Du skulle göra en GET
begäran om den angivna URL:en:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Detta returnerar nästa uppsättning poster för sökresultaten. Paketet searchset
är den fullständiga uppsättningen sökresultatposter och fortsättningstoken url
är länken som tillhandahålls av FHIR-tjänsten för att hämta de poster som inte får plats i den första delmängden (på grund av begränsningen för det maximala antalet poster som returneras för en sida).
Sök med hjälp av POST
Alla sökexempel som nämns här använder GET
begäranden. Du kan dock även göra FHIR-sök-API-anrop med hjälp av POST
parametern enligt _search
följande.
POST {{FHIR_URL}}/Patient/_search?_id=45
Den här begäran returnerar resursinstansen Patient
med det angivna id
värdet. Precis som med GET
begäranden avgör servern vilka resursinstanser som uppfyller villkoren och returnerar ett paket i HTTP-svaret.
En annan funktion för att söka med POST
är att du kan skicka frågeparametrarna som en formulärtext.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Nästa steg
I den här artikeln har du lärt dig om att söka i FHIR med hjälp av sökparametrar, modifierare och andra metoder. Mer information om FHIR-sökning finns i
Kommentar
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.