Sdílet prostřednictvím


Příklady hledání FHIR

Níže najdete několik příkladů volání rozhraní API pro vyhledávání Fast Healthcare Interoperability Resources (FHIR®) s různými parametry vyhledávání, modifikátory, zřetězeným a zpětně zřetězeným vyhledáváním, složeným vyhledáváním, POST požadavky hledání a dalšími. Obecný úvod do konceptů vyhledávání FHIR najdete v tématu Přehled vyhledávání FHIR.

Parametry výsledků hledání

_include

_include umožňuje vyhledat instance prostředků a zahrnout do výsledků další prostředky, na které odkazují cílové instance prostředků. Můžete například použít _include k dotazování MedicationRequest na prostředky a omezit vyhledávání na recepty pro konkrétního pacienta. Služba FHIR pak vrátí MedicationRequest prostředky i odkazovaný Patient prostředek. V následujícím příkladu požadavek vyžádá všechny MedicationRequest instance prostředků v databázi a všechny pacienty, na které MedicationRequest instance odkazují:

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Poznámka

Služba FHIR ve službě Azure Health Data Services omezuje vyhledávání s _include a _revinclude tak, aby vracela maximálně 100 položek.

_revinclude

_revinclude umožňuje vyhledat instance prostředků a zahrnout do výsledků další prostředky, které odkazují na cílové instance prostředků. Můžete například vyhledat pacienty a pak zpětně zahrnout všechna setkání, která odkazují na pacienty:

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements zužuje informace ve výsledcích hledání na podmnožinu prvků definovaných pro typ prostředku. Parametr _elements přijímá seznam základních prvků oddělených čárkami:

GET {{FHIR_URL}}/Patient?_elements=identifier,active

Ve výše uvedeném požadavku obdržíte balíček pacientů, ale každá položka bude obsahovat pouze identifikátory a aktivní stav pacienta. Položky v odpovědi budou obsahovat meta.tag hodnotu SUBSETTED označující, že nejsou zahrnuty všechny prvky definované pro prostředek.

Modifikátory vyhledávání

:not

:not umožňuje najít prostředky s prvkem, který nemá danou hodnotu. Můžete například vyhledat pacienty, kteří nejsou ženami:

GET {{FHIR_URL}}/Patient?gender:not=female

Na oplátku byste získali všechny Patient prostředky, jejichž gender hodnota prvku není female, včetně pacientů bez zadané hodnoty pohlaví. To se liší od vyhledávání Patient prostředků s male hodnotou pohlaví, protože by se ignorovali pacienti bez zadaného pohlaví.

:missing

:missing vrátí všechny prostředky, které nemají hodnotu pro zadaný prvek, když :missing=true. Kromě toho vrátí všechny prostředky, :missing které obsahují zadaný prvek, když :missing=false. U jednoduchých prvků datového typu se bude shodovat u všech prostředků, :missing=true kde je prvek, ale má prázdnou hodnotu. Pokud například chcete najít všechny Patient prostředky, ve které chybí informace, birthdatemůžete volat:

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

:exact se používá k vyhledávání prvků s datovými string typy a vrací kladně, pokud hodnota parametru přesně odpovídá sekvenci písmen a celých znaků hodnoty prvku.

GET {{FHIR_URL}}/Patient?name:exact=Jon

Tento požadavek vrátí Patient prostředky, které mají given název Jonnebo family . Pokud by existovali pacienti s názvy jako Jonathan nebo JON, hledání by tyto prostředky ignorovalo, protože jejich jména přesně neodpovídají zadané hodnotě.

:contains

:contains se používá k dotazování na string prvky typu a umožňuje shodovat se zadanou hodnotou kdekoli v poli. contains nerozlišuje velká a velká písmena a rozpozná odpovídající řetězce zřetězené s jinými znaky. Příklad:

GET {{FHIR_URL}}/Patient?address:contains=Meadow

Tento požadavek by vrátil všechny Patient prostředky s address poli elementu, která obsahují řetězec "Meadow" (nerozlišují velká a malá písmena). To znamená, že můžete mít adresy s hodnotami jako "Meadows Lane", "Pinemeadow Place" nebo "Meadowlark St", které vracejí kladné shody.

Pokud chcete provádět vyhledávací operace, které pokrývají prvky obsažené v odkazovaném prostředku, můžete "zřetěžovat" řadu parametrů společně s .. Například pokud chcete zobrazit všechny DiagnosticReport prostředky s odkazem subject na pacienta určeného parametrem name:

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

Tento požadavek by vrátil všechny DiagnosticReport prostředky s pacientem s názvem Sarah. Zřetězený . dotaz odkazuje na name prvek v rámci odkazovaného Patient prostředku.

Dalším běžným využitím vyhledávání FHIR je vyhledání všech setkání pro konkrétního pacienta. Chcete-li provést pravidelné (nezřetězený) vyhledávání Encounter prostředků, které odkazují na danou Patientid:

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Pomocí zřetězovaného vyhledávání můžete najít všechny Encounter zdroje, které odkazují na pacienty, jejichž podrobnosti odpovídají parametru hledání. Následující příklad ukazuje, jak vyhledat výskyty odkazující na pacienty zúžené podle birthdate:

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

Tím by se vrátily všechny Encounter instance, které odkazují na pacienty se zadanou birthdate hodnotou.

Kromě toho můžete zahájit více zřetězených hledání pomocí operátoru & , který umožňuje vyhledávání více odkazů v jednom požadavku. V takových případech se zřetězeným vyhledáváním &"nezávisle" vyhledá každá hodnota prvku:

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

To by vrátilo všechny Patient prostředky, které mají odkaz na "Sarah" jako generalPractitioner plus odkaz na generalPractitioner objekt, který má adresu ve státě Washington. Jinými slovy, pokud měl generalPractitioner pacient jménem Sarah z New Yorku a jiného generalPractitioner billa ze státu Washington, splňovalo by to podmínky pro pozitivní shodu při tomto hledání.

Ve scénářích, ve kterých hledání vyžaduje logickou podmínku AND, která výhradně kontroluje hodnoty párovaných prvků, najdete níže uvedené příklady složeného vyhledávání .

Použití zpětného zřetězenýho vyhledávání ve FHIR umožňuje vyhledat cílové instance prostředků, na které odkazují jiné prostředky. Jinými slovy, můžete vyhledávat prostředky na základě vlastností prostředků, které na ně odkazují. K tomu slouží _has parametr . Prostředek má například vyhledávací parametrpatient, Observation který kontroluje odkaz na Patient prostředek. Pokud chcete najít všechny Patient prostředky, na které odkazuje objekt Observation s konkrétním codeobjektem :

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

Tento požadavek vrátí Patient prostředky, na které Observation odkazují prostředky s kódem 527.

Zpětné zřetězené vyhledávání navíc může mít rekurzivní strukturu. Pokud například chcete vyhledat všechny pacienty, na které Observation odkazuje místo, kde na pozorování odkazuje AuditEvent konkrétní odborník s názvem janedoe:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Pokud chcete hledat prostředky, které obsahují prvky seskupené jako logicky propojené páry, definuje FHIR složené vyhledávání, které spojuje hodnoty jednoho parametru $ společně s operátorem – tvoří propojený pár parametrů. Při složeného hledání dochází k kladné shodě, když průnik hodnot prvků splňuje všechny podmínky nastavené ve spárovaných parametrech hledání. Například pokud chcete najít všechny DiagnosticReport zdroje, které obsahují hodnotu draslíku menší než 9.2:

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Spárované prvky by v tomto případě byly code elementem (z Observation prostředku odkazovaného jako result) a value elementem propojeným s code. Následující kód s operátorem $ nastaví podmínku value jako lt (pro "menší než") 9.2 (pro hodnotu mmol/L draslíku).

Složené parametry hledání lze také použít k filtrování hodnot více hodnot kódu komponenty pomocí logického nebo. Například dotazování na pozorování s diastolický krevní tlak větší než 90 nebo systolický krevní tlak vyšší než 140:

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

Všimněte si, jak , funguje jako logický operátor OR mezi těmito dvěma podmínkami.

Zobrazení další sady položek

Maximální počet prostředků, které lze najednou vrátit z vyhledávacího dotazu, je 1000. Můžete však mít více než 1 000 instancí prostředků, které odpovídají vyhledávacímu dotazu, a chcete načíst další sadu výsledků po prvních 1000 položkách. V takovém případě byste použili hodnotu pokračovacího tokenu url (tj. "next") ve searchset sadě vrácené z hledání:

    "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"
        }
    ],

Požádali byste o zadanou GET adresu URL:

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Tím se vrátí další sada položek pro výsledky hledání. Balíček searchset je kompletní sada položek výsledků hledání a token url pokračování je odkaz poskytnutý službou FHIR, který načte položky, které se nevejdou do první podmnožiny (kvůli omezení maximálního počtu položek vrácených na jednu stránku).

Hledání pomocí POST

Všechny výše uvedené příklady hledání používají GET požadavky. Můžete ale také provádět volání rozhraní API pro vyhledávání FHIR pomocí POST parametru _search :

POST {{FHIR_URL}}/Patient/_search?_id=45

Tento požadavek by vrátil Patient instanci prostředku s danou id hodnotou. Stejně jako u GET požadavků server určí, které instance prostředků splňují podmínky, a vrátí sadu v odpovědi HTTP.

Další funkcí vyhledávání pomocí POST je to, že umožňuje odeslat parametry dotazu jako text formuláře:

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Další kroky

V tomto článku jste se dozvěděli o vyhledávání ve FHIR pomocí parametrů hledání, modifikátorů a dalších metod. Další informace o vyhledávání FHIR najdete v tématu

FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.