FHIR-zoekvoorbeelden
Hieronder volgen voorbeelden van FHIR-zoek-API-aanroepen® (Fast Healthcare Interoperability Resources) met verschillende zoekparameters, modifiers, gekoppelde en omgekeerde zoekopdrachten, samengestelde zoekopdrachten, POST
zoekaanvragen en meer. Zie Overzicht van FHIR Search voor een algemene inleiding tot FHIR-zoekconcepten.
Parameters voor zoekresultaat
_include
_include
hiermee kunt u zoeken naar resource-exemplaren en in de resultaten opnemen waarnaar wordt verwezen door de doelresource-exemplaren. U kunt _include
bijvoorbeeld zoeken naar MedicationRequest
resources en de zoekopdracht beperken tot recepten voor een specifieke patiënt. De FHIR-service retourneert vervolgens de MedicationRequest
resources en de resource Patient
waarnaar wordt verwezen. In het volgende voorbeeld haalt de aanvraag alle MedicationRequest
resource-exemplaren op in de database en alle patiënten waarnaar wordt verwezen door de MedicationRequest
exemplaren.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Notitie
De FHIR-service in Azure Health Data Services beperkt zoekopdrachten met _include
en _revinclude
retourneert maximaal 100 items.
_revinclude
_revinclude
hiermee kunt u zoeken naar resource-exemplaren en deze opnemen in de resultaten van andere resources die verwijzen naar de doelresource-exemplaren. U kunt bijvoorbeeld zoeken naar patiënten en vervolgens omkeren alle ontmoetingen die verwijzen naar de patiënten.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
beperkt de informatie in de zoekresultaten tot een subset van de elementen die zijn gedefinieerd voor een resourcetype. De _elements
parameter accepteert een door komma's gescheiden lijst met basiselementen.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
De voorgaande aanvraag retourneert een bundel patiënten. Elke vermelding bevat alleen de id's en de actieve status van de patiënt. De vermeldingen in het antwoord bevatten een meta.tag
waarde om SUBSETTED
aan te geven dat niet alle elementen die voor de resource zijn gedefinieerd, zijn opgenomen.
Zoekaanpassingen
:not
:not
hiermee kunt u resources zoeken met een element dat geen bepaalde waarde heeft. U kunt bijvoorbeeld zoeken naar patiënten die geen vrouw zijn.
GET {{FHIR_URL}}/Patient?gender:not=female
Als resultaat krijgt u alle Patient
resources waarvan gender
de elementwaarde niet female
is, inclusief patiënten zonder geslachtswaarde opgegeven. Dit verschilt van het zoeken Patient
naar resources met de male
geslachtswaarde, omdat patiënten zonder opgegeven geslacht worden genegeerd.
:missing
:missing
retourneert alle resources die geen waarde hebben voor het opgegeven element wanneer :missing=true
. Retourneert bovendien :missing
alle resources die het opgegeven element bevatten wanneer :missing=false
. Voor eenvoudige gegevenstype-elementen komt :missing=true
deze overeen met alle resources waar een element aanwezig is, maar heeft deze een lege waarde. Als u bijvoorbeeld alle Patient
resources wilt zoeken waarvoor informatie birthdate
ontbreekt, kunt u de volgende aanroep uitvoeren.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
wordt gebruikt om te zoeken naar elementen met string
gegevenstypen en retourneert positief als de parameterwaarde exact overeenkomt met het hoofdlettergebruik en de volledige tekenreeks van de elementwaarde.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Deze aanvraag retourneert Patient
resources met de naam of family
de given
naam van Jon
. Als er patiënten waren met namen zoals Jonathan
of JON
, negeert de zoekopdracht deze resources omdat hun namen niet exact overeenkomen met de opgegeven waarde.
:contains
:contains
wordt gebruikt om een query uit te voeren voor string
typeelementen en kan overal in het veld overeenkomen met de opgegeven waarde. contains
is niet hoofdlettergevoelig en herkent overeenkomende tekenreeksen die zijn samengevoegd met andere tekens. Voorbeeld:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Met deze aanvraag worden alle Patient
resources geretourneerd met address
elementvelden die de tekenreeks 'Weide' bevatten (hoofdlettergevoelig). Dit betekent dat u adressen kunt hebben met waarden zoals "Meadows Lane", "Pinemeadow Place" of "Meadowlark St" die positieve overeenkomsten retourneren.
Gekoppelde zoekopdracht
Als u zoekbewerkingen wilt uitvoeren die betrekking hebben op elementen in een resource waarnaar wordt verwezen, kunt u een reeks parameters 'koppelen' samen met .
. Als u bijvoorbeeld alle DiagnosticReport
resources wilt weergeven met een subject
verwijzing naar een patiënt die is opgegeven door name
, gebruikt u de volgende query.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Deze aanvraag retourneert alle DiagnosticReport
resources met een patiëntonderwerp met de naam Sarah. De .
gekoppelde zoekopdracht verwijst naar het name
element in de resource waarnaar wordt verwezen Patient
.
Een ander veelvoorkomend gebruik van FHIR-zoekopdrachten is het vinden van alle overeenkomsten voor een specifieke patiënt. Als u regelmatig (niet-gekoppeld) wilt zoeken naar Encounter
resources waarnaar wordt Patient
verwezen met een bepaald id
gebruik, gebruikt u het volgende.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Met behulp van ketenzoekopdrachten vindt u alle Encounter
resources die verwijzen naar patiënten waarvan de details overeenkomen met een zoekparameter. In het volgende voorbeeld ziet u hoe u kunt zoeken naar personen die verwijzen naar patiënten die worden beperkt door birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Hiermee worden alle Encounter
exemplaren geretourneerd die verwijzen naar patiënten met de opgegeven birthdate
waarde.
Daarnaast kunt u meerdere gekoppelde zoekopdrachten initiëren met behulp van de &
operator, waarmee u kunt zoeken op meerdere verwijzingen in één aanvraag. In gevallen waarbij &
ketenzoekopdrachten 'onafhankelijk' worden gescand op elke elementwaarde.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Hiermee worden alle Patient
resources geretourneerd die een verwijzing naar Sarah hebben als plus generalPractitioner
een verwijzing naar een generalPractitioner
adres in de staat Washington. Met andere woorden, als een patiënt een generalPractitioner
genaamd Sarah uit New York staat en een andere generalPractitioner
genaamd Bill uit Washington staat, beide voldoen aan de voorwaarden voor een positieve overeenkomst bij het uitvoeren van deze zoekopdracht.
Raadpleeg de volgende samengestelde zoekvoorbeelden voor scenario's waarin voor de zoekopdracht een logische AND-voorwaarde is vereist die strikt controleert op waarden voor gekoppelde elementen.
Zoeken in omgekeerde keten
Met reverse chained search in FHIR kunt u zoeken naar doelresource-exemplaren waarnaar wordt verwezen door andere resources. Met andere woorden, u kunt zoeken naar resources op basis van de eigenschappen van resources die ernaar verwijzen. Dit wordt bereikt met de _has
parameter. De Observation
resource heeft bijvoorbeeld een zoekparameter patient
waarmee wordt gecontroleerd op een verwijzing naar een Patient
resource. Gebruik de volgende code om alle Patient
resources te vinden waarnaar wordt verwezen door een Observation
specifieke code
resource.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Met deze aanvraag worden resources geretourneerd Patient
waarnaar wordt verwezen door Observation
resources met de code 527
.
Bovendien kan omgekeerde ketenzoekopdrachten een recursieve structuur hebben. Als u bijvoorbeeld wilt zoeken naar alle patiënten waarnaar wordt verwezen door een Observation
waar de observatie wordt verwezen door een AuditEvent
specifieke beoefenaar met de naam janedoe
, gebruikt u:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Samengestelde zoekopdracht
Als u wilt zoeken naar resources die elementen bevatten die zijn gegroepeerd als logisch verbonden paren, definieert FHIR samengestelde zoekopdrachten, waarmee enkelvoudige parameterwaarden worden samengevoegd met de $
operator, die een verbonden paar parameters vormen. In een samengestelde zoekopdracht treedt een positieve overeenkomst op wanneer het snijpunt van elementwaarden voldoet aan alle voorwaarden die zijn ingesteld in de gekoppelde zoekparameters. In het volgende voorbeeld worden query's uitgevoerd voor alle DiagnosticReport
resources die een kaliumwaarde bevatten die kleiner is dan 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
De gekoppelde elementen in dit geval zijn het code
element (van een Observation
resource waarnaar wordt verwezen als de result
) en het value
element dat is verbonden met de code
. Als u de code met de $
operator volgt, wordt de value
voorwaarde ingesteld als lt
(voor "kleiner dan") 9.2
(voor de kalium mmol/L-waarde).
Samengestelde zoekparameters kunnen ook worden gebruikt voor het filteren van hoeveelheden codewaarden van meerdere onderdelen met een logische OF. Als u bijvoorbeeld query's wilt uitvoeren op waarnemingen met diastolische bloeddruk groter dan 90 OF systolic bloeddruk groter dan 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Let op hoe ,
de logische OR-operator tussen de twee voorwaarden functioneert.
De volgende invoerset weergeven
Het maximum aantal resources dat tegelijk kan worden geretourneerd vanuit een zoekquery is 1000. Mogelijk hebt u echter meer dan 1000 resource-exemplaren die overeenkomen met de zoekquery en wilt u de volgende set resultaten ophalen na de eerste 1000 vermeldingen. In dit geval gebruikt u de vervolgtokenwaarde url
(dat wil "next"
gezegd) in de searchset
bundel die als volgt wordt geretourneerd door de zoekopdracht.
"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"
}
],
U doet een GET
aanvraag voor de opgegeven URL:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Hiermee wordt de volgende set vermeldingen voor uw zoekresultaten geretourneerd. De searchset
bundel is de volledige set zoekresultaten en het vervolgtoken url
is de koppeling van de FHIR-service om de vermeldingen op te halen die niet in de eerste subset passen (vanwege de beperking voor het maximum aantal vermeldingen dat voor één pagina wordt geretourneerd).
Zoeken met POST
Alle hier genoemde zoekvoorbeelden gebruiken GET
aanvragen. U kunt echter ook FHIR-zoek-API-aanroepen uitvoeren met behulp van POST
de _search
parameter als volgt.
POST {{FHIR_URL}}/Patient/_search?_id=45
Deze aanvraag retourneert het Patient
resource-exemplaar met de opgegeven id
waarde. Net als bij GET
aanvragen bepaalt de server welke resource-exemplaren voldoen aan de voorwaarden en retourneert een bundel in het HTTP-antwoord.
Een andere functie waarmee u kunt zoeken POST
, is dat u hiermee de queryparameters kunt verzenden als hoofdtekst van een formulier.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Volgende stappen
In dit artikel hebt u geleerd hoe u in FHIR kunt zoeken met behulp van zoekparameters, modifiers en andere methoden. Zie voor meer informatie over FHIR zoeken
Notitie
FHIR® is een geregistreerd handelsmerk van HL7 en wordt gebruikt met de machtiging HL7.