Share via


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 joNhad, 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.

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 namebevat:

 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. Patients heeft vaak een of meer Encounters 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.

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.

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-3bevat. 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.