FHIR-sökexempel för Azure API för FHIR
Nedan visas några exempel på hur du använder FHIR-sökåtgärder® (Fast Healthcare Interoperability Resources), inklusive sökparametrar och modifierare, sökning i kedja och omvänd kedja, sammansatt sökning, visning av nästa postuppsättning för sökresultat och sökning med en POST
begäran. Mer information om sökning finns i Översikt över FHIR-sökning.
Sökresultatparametrar
_Inkluderar
_include
söker över resurser efter de som innehåller den angivna parametern för resursen. Du kan till exempel söka bland MedicationRequest
resurser för att bara hitta de som innehåller information om recepten för en specifik patient, vilket är parametern reference
patient
. I exemplet nedan hämtas alla MedicationRequests
och alla patienter som refereras från MedicationRequests
:
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Anteckning
_include och _revinclude är begränsade till 100 objekt.
_revinclude
_revinclude
gör att du kan söka i motsatt riktning som _include
. Du kan till exempel söka efter patienter och sedan omvänd inkludera alla möten som refererar till patienterna:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_Element
_elements
begränsar sökresultatet till en delmängd av fälten för att minska svarsstorleken genom att utelämna onödiga data. Parametern accepterar en kommaavgränsad lista över baselement:
GET [your-fhir-server]/Patient?_elements=identifier,active
I den här begäran får du tillbaka ett paket med patienter, men varje resurs innehåller bara identifierare och patientens aktiva status. Resurser i det här returnerade svaret innehåller värdet meta.tag
SUBSETTED
för för att indikera att de är en ofullständig uppsättning resultat.
Sökmodifierare
:Inte
:not
gör att du kan hitta resurser där ett attribut inte är sant. Du kan till exempel söka efter patienter där könet inte är kvinnligt:
GET [your-fhir-server]/Patient?gender:not=female
Som returvärde får du alla patientposter där könet inte är kvinnligt, inklusive tomma värden (poster som anges utan kön). Detta skiljer sig från att söka efter patienter där kön är man, eftersom det inte skulle inkludera posterna utan ett specifikt kön.
:Saknas
:missing
returnerar alla resurser som inte har något värde för det angivna elementet när värdet är true
och returnerar alla resurser som innehåller det angivna elementet när värdet är false
. För enkla datatypselement :missing=true
matchar det alla resurser där elementet finns med tillägg men har ett tomt värde. Om du till exempel vill hitta alla Patient
resurser som saknar information om födelsedatum kan du göra följande:
GET [your-fhir-server]/Patient?birthdate:missing=true
:Exakta
:exact
används för string
parametrar och returnerar resultat som matchar parametern exakt, till exempel i hölje och teckensammanfogning.
GET [your-fhir-server]/Patient?name:exact=Jon
Den här begäran returnerar Patient
resurser som har namnet exakt samma som Jon
. Om resursen hade Patienter med namn som Jonathan
eller joN
skulle sökningen ignorera och hoppa över resursen eftersom den inte exakt matchar det angivna värdet.
:Innehåller
:contains
används för string
parametrar och söker efter resurser med partiella matchningar av det angivna värdet var som helst i strängen i fältet som genomsöks. contains
är skiftlägesokänsligt och tillåter teckensammanfogning. Exempel:
GET [your-fhir-server]/Patient?address:contains=Meadow
Den här begäran returnerar alla Patient
resurser med address
fält med värden som innehåller strängen "Meadow". Det innebär att du kan ha adresser som innehåller värden som "Meadowers" eller "59 Meadow ST" som returneras som sökresultat.
Länkad sökning
Om du vill utföra en serie sökåtgärder som omfattar flera referensparametrar kan du "kedja" serien med referensparametrar genom att lägga till dem i serverbegäran en i taget med hjälp av en punkt .
. Om du till exempel vill visa alla DiagnosticReport
resurser med en subject
referens till en Patient
resurs som innehåller en viss name
:
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Den här begäran returnerar alla DiagnosticReport
resurser med ett patientämne med namnet "Sarah". Perioden .
efter fältet Patient
utför den länkade sökningen på parameterns referensparameter subject
.
En annan vanlig användning av en vanlig sökning (inte en länkad sökning) är att hitta alla möten för en specifik patient. Patient
s har ofta en eller flera Encounter
s med ett ämne. Så här söker du efter alla Encounter
resurser för en Patient
med det angivna id
:
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Med hjälp av Patient
länkad sökning kan du hitta alla Encounter
resurser som matchar en viss information, till exempel birthdate
:
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Detta skulle göra det möjligt att inte bara söka efter Encounter
resurser efter en enskild patient, utan för alla patienter som har det angivna födelsedatumvärdet.
Dessutom kan länkad sökning göras mer än en gång i en begäran med hjälp av symbolen &
, vilket gör att du kan söka efter flera villkor i en begäran. I sådana fall söker länkad sökning "oberoende" efter varje parameter, i stället för att söka efter villkor som endast uppfyller alla villkor samtidigt:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Detta returnerar alla Patient
resurser som har "Sarah" som generalPractitioner
och har en generalPractitioner
som har adressen med delstaten WA. Med andra ord, om en patient hade Sarah från delstaten NY och Bill från delstaten WA båda refererade som patientens generalPractitioner
, skulle returneras.
Information om scenarier där sökningen måste vara en AND
åtgärd som omfattar alla villkor som en grupp finns i det sammansatta sökexemplet nedan.
Sökning i omvänd kedja
Med kedjesökning kan du söka efter resurser baserat på egenskaperna för de resurser som de refererar till. Med hjälp av sökning i omvänd kedja kan du göra det tvärtom. Du kan söka efter resurser baserat på egenskaperna för resurser som refererar till dem med hjälp av _has
parametern . Resursen har till exempel Observation
en sökparameter patient
som refererar till en patientresurs. Så här hittar du alla patientresurser som refereras av Observation
med en specifik code
:
GET [base]/Patient?_has:Observation:patient:code=527
Den här begäran returnerar patientresurser som refereras av Observation
med koden 527
.
Dessutom kan sökning i omvänd kedja ha en rekursiv struktur. Om du till exempel vill söka efter alla patienter där Observation
observationen har en granskningshändelse från en viss användare janedoe
kan du göra följande:
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Anteckning
I Azure API för FHIR och FHIR-servern med öppen källkod som backas upp av Azure Cosmos DB är den länkade sökningen och den omvända länkade sökningen en MVP-implementering. För att utföra länkad sökning i Azure Cosmos DB går implementeringen igenom sökuttrycket och utfärdar underfrågor för att lösa de matchade resurserna. Detta görs för varje nivå i uttrycket. Om någon fråga returnerar fler än 100 resultat utlöses ett fel.
Sammansatt sökning
Om du vill söka efter resurser som uppfyller flera villkor samtidigt använder du sammansatt sökning som kopplar en sekvens med enstaka parametervärden med en symbol $
. Det returnerade resultatet skulle vara skärningspunkten för de resurser som matchar alla villkor som anges av de anslutna sökparametrarna. Sådana sökparametrar kallas sammansatta sökparametrar och de definierar en ny parameter som kombinerar de flera parametrarna i en kapslad struktur. Om du till exempel vill hitta alla DiagnosticReport
resurser som innehåller Observation
ett kaliumvärde som är mindre än eller lika med 9,2:
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Den här begäran anger komponenten som innehåller en kod för 2823-3
, som i det här fallet skulle vara kalium. Efter symbolen $
anger den intervallet för värdet för komponenten som använder lt
för "mindre än eller lika med" och 9.2
för kaliumvärdeintervallet.
Sök i nästa postuppsättning
Det maximala antalet poster som kan returneras per en enskild sökfråga är 1 000. Du kan dock ha fler än 1 000 poster som matchar sökfrågan, och du kanske vill se nästa uppsättning poster efter de första 1 000 posterna som returnerades. I så fall använder du värdet för fortsättningstoken url
i searchset
som i resultatet Bundle
nedan:
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
Och du skulle göra en GET-begäran för den angivna URL:en under fältet relation: next
:
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Då returneras nästa uppsättning poster för sökresultatet. searchset
är den fullständiga uppsättningen sökresultatposter och fortsättningstoken url
är länken som tillhandahålls av servern för att hämta de poster som inte visas i den första uppsättningen eftersom begränsningen för det maximala antalet poster som returneras för en sökfråga.
Sök med POST
Alla sökexempel som nämns ovan har använt GET
begäranden. Du kan också utföra sökåtgärder med hjälp av POST
begäranden med hjälp av _search
:
POST [your-fhir-server]/Patient/_search?_id=45
Den här begäran returnerar alla Patient
resurser med id
värdet 45. Precis som i GET-begäranden avgör servern vilken av resurserna som uppfyller villkoren och returnerar en samlingsresurs i HTTP-svaret.
Ett annat exempel på sökning med POST där frågeparametrarna skickas som formulärtext är:
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Nästa steg
I den här artikeln har du lärt dig hur du söker med hjälp av olika sökparametrar, modifierare och FHIR-sökverktyg. Mer information om FHIR-sökning finns i
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för