FHIR-zoekvoorbeelden voor Azure API for FHIR
Hieronder ziet u enkele voorbeelden van het gebruik van FHIR-zoekbewerkingen® (Fast Healthcare Interoperability Resources), waaronder zoekparameters en modifiers, zoeken in ketens en omgekeerde ketens, samengesteld zoeken, het weergeven van de volgende invoerset voor zoekresultaten en zoeken met een POST
aanvraag. Zie Overzicht van FHIR Search voor meer informatie over zoeken.
Parameters voor zoekresultaten
_include
_include
zoekt naar resources die de opgegeven parameter van de resource bevatten. U kunt bijvoorbeeld zoeken in MedicationRequest
resources om alleen de resources te vinden die informatie bevatten over de recepten voor een specifieke patiënt, namelijk de reference
parameter patient
. In het onderstaande voorbeeld haalt dit alle MedicationRequests
en alle patiënten op waarnaar wordt verwezen uit de MedicationRequests
:
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Notitie
_include en _revinclude zijn beperkt tot 100 items.
_revinclude
_revinclude
hiermee kunt u in de tegenovergestelde richting zoeken als _include
. U kunt bijvoorbeeld zoeken naar patiënten en vervolgens alle ontmoetingen die naar de patiënten verwijzen, omkeren:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_Elementen
_elements
Hiermee wordt het zoekresultaat beperkt tot een subset van velden om de antwoordgrootte te verkleinen door onnodige gegevens weg te laten. De parameter accepteert een door komma's gescheiden lijst met basiselementen:
GET [your-fhir-server]/Patient?_elements=identifier,active
In deze aanvraag krijgt u een bundel patiënten terug, maar elke resource bevat alleen de id('s) en de actieve status van de patiënt. Resources in dit geretourneerde antwoord bevatten een meta.tag
waarde van SUBSETTED
om aan te geven dat ze een onvolledige set resultaten zijn.
Zoekaanpassingen
:Niet
:not
hiermee kunt u resources vinden waarvan een kenmerk niet waar is. U kunt bijvoorbeeld zoeken naar patiënten waarvan het geslacht niet vrouwelijk is:
GET [your-fhir-server]/Patient?gender:not=female
Als retourwaarde krijgt u alle patiëntvermeldingen waarbij het geslacht niet vrouwelijk is, inclusief lege waarden (vermeldingen die zijn opgegeven zonder geslacht). Dit is anders dan het zoeken naar patiënten waarvan het geslacht mannelijk is, omdat dat de vermeldingen zonder een specifiek geslacht niet zou bevatten.
:Ontbrekende
:missing
retourneert alle resources die geen waarde hebben voor het opgegeven element wanneer de waarde is true
, en retourneert alle resources die het opgegeven element bevatten wanneer de waarde is false
. Voor eenvoudige gegevenstype-elementen komt overeen met alle resources waar het element aanwezig is met extensies, :missing=true
maar een lege waarde heeft. Als u bijvoorbeeld alle Patient
resources wilt zoeken waarvoor informatie over geboortedatum ontbreekt, kunt u het volgende doen:
GET [your-fhir-server]/Patient?birthdate:missing=true
:Exacte
:exact
wordt gebruikt voor string
parameters en retourneert resultaten die exact overeenkomen met de parameter, zoals bij het samenvoegen van hoofdletters en tekens.
GET [your-fhir-server]/Patient?name:exact=Jon
Deze aanvraag retourneert Patient
resources die de naam precies hetzelfde hebben als Jon
. Als de resource Patiënten met namen zoals Jonathan
of joN
had, zou de zoekopdracht de resource negeren en overslaan omdat deze niet precies overeenkomt met de opgegeven waarde.
:Bevat
:contains
wordt gebruikt voor string
parameters en zoekt naar resources met gedeeltelijke overeenkomsten van de opgegeven waarde ergens in de tekenreeks binnen het veld dat wordt gezocht. contains
is niet hoofdlettergevoelig en staat het samenvoegen van tekens toe. Bijvoorbeeld:
GET [your-fhir-server]/Patient?address:contains=Meadow
Met deze aanvraag worden alle Patient
resources geretourneerd met velden met address
waarden die de tekenreeks 'Weide' bevatten. Dit betekent dat er mogelijk adressen met waarden als 'Meadowers' of '59 Meadow ST' als zoekresultaten worden geretourneerd.
Geketende zoekopdracht
Als u een reeks zoekbewerkingen wilt uitvoeren die betrekking hebben op meerdere referentieparameters, kunt u de reeks referentieparameters 'koppelen' door ze één voor één toe te voegen aan de serveraanvraag met behulp van een punt .
. Als u bijvoorbeeld alle DiagnosticReport
resources wilt weergeven met een subject
verwijzing naar een Patient
resource die een bepaalde name
bevat:
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Deze aanvraag retourneert alle resources met een patiëntonderwerp met de DiagnosticReport
naam 'Sarah'. De periode .
na het veld Patient
voert de geketende zoekopdracht uit op de verwijzingsparameter van de subject
parameter.
Een ander veelvoorkomend gebruik van een reguliere zoekopdracht (niet een geketende zoekopdracht) is het vinden van alle ontmoetingen voor een specifieke patiënt. Patient
s heeft vaak een of meer Encounter
s met een onderwerp. Als u wilt zoeken naar alle Encounter
resources voor een Patient
met de opgegeven id
:
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Met behulp van geketende zoekopdrachten kunt u alle Encounter
resources vinden die overeenkomen met een bepaald stukje Patient
informatie, zoals de birthdate
:
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Hierdoor kan niet alleen worden gezocht naar Encounter
resources voor één patiënt, maar voor alle patiënten met de opgegeven geboortedatumwaarde.
Bovendien kan geketende zoekopdracht meer dan één keer in één aanvraag worden uitgevoerd met behulp van het symbool &
, waarmee u kunt zoeken naar meerdere voorwaarden in één aanvraag. In dergelijke gevallen zoekt geketende zoekopdracht 'onafhankelijk' naar elke parameter, in plaats van te zoeken naar voorwaarden die alleen aan alle voorwaarden tegelijk voldoen:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Hiermee worden alle Patient
resources geretourneerd die 'Sarah' als de generalPractitioner
hebben en een generalPractitioner
met het adres met de status WA. Met andere woorden, als een patiënt Sarah van de staat NY en Bill van de staat WA beide had waarnaar werd verwezen als de patiënt generalPractitioner
, zou de worden geretourneerd.
Voor scenario's waarin de zoekopdracht een AND
bewerking moet zijn die alle voorwaarden als groep dekt, raadpleegt u het voorbeeld van een samengestelde zoekopdracht hieronder.
Omgekeerde keten zoeken
Zoeken in ketens kunt u zoeken naar resources op basis van de eigenschappen van resources waarnaar wordt verwezen. Met reverse chain search kunt u dit andersom doen. U kunt zoeken naar resources op basis van de eigenschappen van resources die ernaar verwijzen, met behulp van _has
de parameter. Resource heeft bijvoorbeeld Observation
een zoekparameter patient
die verwijst naar een patiëntresource. Om alle patiëntresources te vinden waarnaar wordt verwezen door Observation
met een specifieke:code
GET [base]/Patient?_has:Observation:patient:code=527
Met deze aanvraag worden patiëntresources geretourneerd die worden doorverwezen Observation
met de code 527
.
Daarnaast kan reverse chain search een recursieve structuur hebben. Als u bijvoorbeeld wilt zoeken naar alle patiënten met Observation
een controlegebeurtenis van een specifieke gebruiker janedoe
, kunt u het volgende doen:
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Notitie
In de Azure API for FHIR en de open-source FHIR-server die wordt ondersteund door Azure Cosmos DB, is de geketende zoekopdracht en reverse chained search een MVP-implementatie. Als u een geketende zoekopdracht wilt uitvoeren in Azure Cosmos DB, gaat de implementatie verder door de zoekexpressie en worden subquery's uitgevoerd om de overeenkomende resources op te lossen. Dit wordt gedaan voor elk niveau van de expressie. Als een query meer dan 100 resultaten retourneert, wordt er een fout gegenereerd.
Samengesteld zoeken
Als u wilt zoeken naar resources die aan meerdere voorwaarden tegelijk voldoen, gebruikt u samengestelde zoekopdrachten die een reeks enkele parameterwaarden met een symbool $
samenvoegen. Het geretourneerde resultaat is het snijpunt van de resources die voldoen aan alle voorwaarden die zijn opgegeven door de gekoppelde zoekparameters. Dergelijke zoekparameters worden samengestelde zoekparameters genoemd en ze definiëren een nieuwe parameter die de meerdere parameters in een geneste structuur combineert. Als u bijvoorbeeld alle DiagnosticReport
resources wilt vinden die een kaliumwaarde kleiner dan of gelijk aan 9,2 bevatten Observation
:
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Met deze aanvraag wordt het onderdeel opgegeven dat een code van 2823-3
bevat. In dit geval zou dit kalium zijn. Na het $
symbool wordt het bereik van de waarde opgegeven voor het onderdeel dat wordt gebruikt lt
voor 'kleiner dan of gelijk aan' en 9.2
voor het kaliumwaardebereik.
Zoeken in de volgende vermeldingenset
Het maximum aantal vermeldingen dat kan worden geretourneerd per één zoekopdracht is 1000. Mogelijk hebt u echter meer dan 1000 vermeldingen die overeenkomen met de zoekquery en wilt u mogelijk de volgende set vermeldingen zien na de eerste 1000 vermeldingen die zijn geretourneerd. In dat geval gebruikt u de waarde van het vervolgtoken url
in searchset
, zoals in het Bundle
onderstaande resultaat:
"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"
}
],
En u doet een GET-aanvraag voor de opgegeven URL onder het veld relation: next
:
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Hiermee wordt de volgende set vermeldingen voor uw zoekresultaat geretourneerd. De searchset
is de volledige set zoekresultaten en het vervolgtoken url
is de koppeling van de server waarmee u de vermeldingen kunt ophalen die niet worden weergegeven in de eerste set, omdat de beperking voor het maximum aantal vermeldingen dat voor een zoekquery wordt geretourneerd.
Zoeken met POST
Alle hierboven genoemde zoekvoorbeelden hebben aanvragen gebruikt GET
. U kunt ook zoekbewerkingen uitvoeren met behulp van POST
aanvragen met behulp van _search
:
POST [your-fhir-server]/Patient/_search?_id=45
Met deze aanvraag worden alle Patient
resources met de id
waarde 45 geretourneerd. Net als bij GET-aanvragen bepaalt de server welke van de set resources voldoet aan de voorwaarde(s) en retourneert een bundelresource in het HTTP-antwoord.
Een ander voorbeeld van zoeken met behulp van POST waarbij de queryparameters worden verzonden als een formuliertekst, is:
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Volgende stappen
In dit artikel hebt u geleerd hoe u kunt zoeken met behulp van verschillende zoekparameters, modifiers en FHIR-zoekhulpprogramma's. Zie voor meer informatie over FHIR Search
FHIR® is een gedeponeerd handelsmerk van HL7 en wordt gebruikt met toestemming van HL7.