Příklady hledání FHIR pro Azure API for FHIR

Níže najdete několik příkladů použití vyhledávacích operací FHIR® (Fast Healthcare Interoperability Resources), včetně parametrů a modifikátorů hledání, hledání řetězu a zpětného řetězu, složeného vyhledávání, zobrazení další sady položek pro výsledky hledání a vyhledávání pomocí POST požadavku. Další informace o vyhledávání najdete v tématu Přehled vyhledávání FHIR.

Parametry výsledků hledání

_Zahrnout

_include vyhledá mezi prostředky ty, které obsahují zadaný parametr prostředku. Můžete například hledat v různých MedicationRequest zdrojích a najít jenom ty, které obsahují informace o receptech pro konkrétního pacienta, což je reference parametr patient. V následujícím příkladu to stáhne všechny MedicationRequests a všechny pacienty, na které se odkazuje z MedicationRequests:

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Poznámka

_include a _revinclude jsou omezené na 100 položek.

_revinclude

_revinclude umožňuje hledat v opačném směru jako _include. Můžete například vyhledat pacienty a pak zpětně zahrnout všechna setkání, která odkazují na pacienty:

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_Prvky

_elements zúží výsledek hledání na podmnožinu polí, aby se zmenšila velikost odpovědi vynecháním nepotřebných dat. Parametr přijímá seznam základních prvků oddělených čárkami:

GET [your-fhir-server]/Patient?_elements=identifier,active

V této žádosti získáte zpět sadu pacientů, ale každý prostředek bude obsahovat pouze identifikátory a aktivní stav pacienta. Prostředky v této vrácené odpovědi budou obsahovat meta.tag hodnotu SUBSETTED , která značí, že se jedná o neúplnou sadu výsledků.

Modifikátory vyhledávání

:Ne

:not umožňuje najít prostředky, u kterých atribut není pravdivý. Můžete například vyhledat pacienty, u kterých pohlaví není ženské:

GET [your-fhir-server]/Patient?gender:not=female

Jako návratovou hodnotu byste získali všechny položky pacientů, u kterých pohlaví není ženské, včetně prázdných hodnot (položek zadaných bez pohlaví). To se liší od hledání u pacientů, kde pohlaví je mužské, protože by to nezahrnuly položky bez konkrétního pohlaví.

:Chybějící

:missing vrátí všechny prostředky, které nemají hodnotu pro zadaný prvek, pokud hodnota je true, a vrátí všechny prostředky, které obsahují zadaný prvek, pokud hodnota je false. U jednoduchých prvků datového typu se bude shodovat u všech prostředků, :missing=true kde je prvek k dispozici s rozšířeními, ale má prázdnou hodnotu. Pokud například chcete najít všechny Patient prostředky, kterým chybí informace o datu narození, můžete udělat:

GET [your-fhir-server]/Patient?birthdate:missing=true

:Přesné

:exact se používá pro string parametry a vrací výsledky, které přesně odpovídají parametru, například při zřetězení malých a malých a malých písmen.

GET [your-fhir-server]/Patient?name:exact=Jon

Tento požadavek vrátí Patient prostředky, které mají název přesně stejný jako Jon. Pokud by prostředek obsahoval pacienty s názvy jako Jonathan nebo joN, hledání by prostředek ignoroval a přeskočil, protože přesně neodpovídá zadané hodnotě.

:Obsahuje

:contains se používá pro string parametry a hledá prostředky s částečnou shodou zadané hodnoty kdekoli v řetězci v rámci hledaného pole. contains nerozlišuje velká a velká písmena a umožňuje zřetězení znaků. Příklad:

GET [your-fhir-server]/Patient?address:contains=Meadow

Tento požadavek by vám vrátil všechny Patient prostředky s address poli, která obsahují hodnoty obsahující řetězec "Meadow". To znamená, že jako výsledky hledání můžete mít adresy, které obsahují hodnoty jako "Meadowers" nebo "59 Meadow ST".

Pokud chcete provést řadu vyhledávacích operací, které pokrývají více parametrů odkazu, můžete řadu referenčních parametrů "zřetězovat" tak, že je k požadavku serveru připojíte jeden po druhém pomocí tečky .. Například pokud chcete zobrazit všechny DiagnosticReport prostředky s odkazem subject na Patient prostředek, který obsahuje konkrétní name:

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

Tato žádost by vrátila DiagnosticReport všechny prostředky s pacientem s názvem Sarah. Období . za polem Patient provede zřetězený hledání referenčního parametru parametru subject .

Dalším běžným použitím běžného vyhledávání (nikoli řetězového hledání) je nalezení všech setkání pro konkrétního pacienta. Patients bude mít často jeden nebo více Encounters s předmětem. Pokud chcete vyhledat všechny Encounter prostředky pro a Patient se zadaným idparametrem :

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Pomocí zřetězeným vyhledáváním můžete najít všechny Encounter prostředky, které odpovídají určité Patient informaci, například birthdate:

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

To by umožnilo vyhledávat Encounter prostředky nejen pro jednoho pacienta, ale pro všechny pacienty, kteří mají zadanou hodnotu data narození.

Kromě toho je možné zřetězený vyhledávání provést více než jednou v jednom požadavku pomocí symbolu &, který umožňuje vyhledat více podmínek v jednom požadavku. V takových případech zřetězený vyhledávání "nezávisle" vyhledá každý parametr místo toho, aby hledal podmínky, které splňují pouze všechny podmínky najednou:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

To by vrátilo všechny Patient prostředky, které mají jako generalPractitioner "Sarah" a mají generalPractitioner adresu se stavem WA. Jinými slovy, pokud pacient měl Sarah ze státu NY a Bill ze stavu WA oba odkazované jako pacient , generalPractitionervrátí se.

Scénáře, ve kterých musí být vyhledávání operací AND , která zahrnuje všechny podmínky jako skupinu, najdete v příkladu složeného vyhledávání níže.

Řetězové vyhledávání umožňuje vyhledávat prostředky na základě vlastností prostředků, na které odkazují. Použití zpětného řetězového vyhledávání vám umožní provést to naopak. Pomocí parametru můžete vyhledávat prostředky na základě vlastností prostředků, _has které na ně odkazují. Prostředek má například parametr patient vyhledávání odkazující Observation na prostředek Pacient. Pokud chcete najít všechny prostředky pro pacienty, na které odkazuje Observation konkrétní code:

GET [base]/Patient?_has:Observation:patient:code=527

Tento požadavek vrátí prostředky pacienta, na Observation které odkazuje kód 527.

Kromě toho může mít vyhledávání zpětného řetězu rekurzivní strukturu. Pokud například chcete vyhledat všechny pacienty, u kterých Observation je u pozorování událost auditu od konkrétního uživatele janedoe, můžete udělat:

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Poznámka

V rozhraní Azure API for FHIR a opensourcovém serveru FHIR založeném na službě Azure Cosmos DB je zřetězený vyhledávání a zpětné zřetězený vyhledávání implementací MVP. Aby bylo možné provést zřetězený vyhledávání ve službě Azure Cosmos DB, implementace provede hledaný výraz a vydá dílčí dotazy, které vyřeší odpovídající prostředky. To se provádí pro každou úroveň výrazu. Pokud některý dotaz vrátí více než 100 výsledků, vyvolá se chyba.

Pokud chcete hledat prostředky, které splňují více podmínek najednou, použijte složené vyhledávání, které spojí sekvenci hodnot jednoho parametru se symbolem $. Vráceným výsledkem by byl průnik prostředků, které odpovídají všem podmínkám zadaným parametry spojeného hledání. Takové parametry hledání se nazývají složené parametry hledání a definují nový parametr, který kombinuje více parametrů ve vnořené struktuře. Pokud například chcete najít všechny DiagnosticReport zdroje, které obsahují Observation hodnotu draslíku menší nebo rovnou 9,2:

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Tento požadavek určuje komponentu obsahující kód 2823-3, který by v tomto případě byl draslík. $ Za tímto symbolem určuje rozsah hodnot pro komponentu, která se používá lt pro "menší než nebo rovno" a 9.2 pro rozsah hodnot draslíku.

Hledat v další sadě položek

Maximální počet položek, které lze vrátit na jeden vyhledávací dotaz, je 1000. Můžete ale mít více než 1 000 položek, které odpovídají vyhledávacímu dotazu, a můžete chtít zobrazit další sadu položek po prvních 1000 vrácených položkách. V takovém případě byste použili hodnotu pokračovacího tokenu url v searchset následujícím výsledku Bundle :

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

A vy byste udělali požadavek GET pro zadanou adresu URL pod polem relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Tím se vrátí další sada položek pro výsledek hledání. Je searchset kompletní sada položek výsledků hledání a token url pokračování je odkaz poskytnutý serverem pro načtení položek, které se nezobrazují v první sadě, protože omezení maximálního počtu položek vrácených pro vyhledávací dotaz.

Hledání pomocí POST

Všechny výše uvedené příklady vyhledávání používají GET požadavky. Můžete také provádět operace hledání pomocí POST požadavků pomocí _search:

POST [your-fhir-server]/Patient/_search?_id=45

Tento požadavek by vrátil všechny Patient prostředky s id hodnotou 45. Stejně jako v požadavcích GET server určí, který ze sady prostředků splňuje podmínky, a vrátí prostředek balíčku v odpovědi HTTP.

Dalším příkladem vyhledávání pomocí post, kdy se parametry dotazu odesílají jako text formuláře, je:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Další kroky

V tomto článku jste se dozvěděli, jak hledat pomocí různých parametrů vyhledávání, modifikátorů a vyhledávacích nástrojů FHIR. Další informace o FHIR Search najdete v tématu

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