Dela via


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 birthdatekan 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 Joneller family . Om det fanns patienter med namn som Jonathan eller JONskulle 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.

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 nameanvä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 .

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 codeanvä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

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 codetill . 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.