Sdílet prostřednictvím


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

Důležité

Rozhraní Azure API for FHIR bude vyřazeno 30. září 2026. Postupujte podle strategií migrace a do tohoto data přejděte na službu FHIR® služby Azure Health Data Services. Vzhledem k vyřazení rozhraní Azure API for FHIR nebudou nová nasazení od 1. dubna 2025 povolena. Služba FHIR služby Azure Health Data Services je vyvinutá verze rozhraní Azure API for FHIR, která zákazníkům umožňuje spravovat služby FHIR, DICOM a MedTech s integrací do jiných služeb Azure.

Níže jsou uvedeny některé příklady použití vyhledávacích operací FHIR® (Fast Healthcare Interoperability Resources), včetně parametrů hledání a modifikátorů hledání, řetězu a zpětného řetězu hledání, složeného vyhledávání, zobrazení další sady položek pro výsledky hledání a hledá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í

_zahrnovat

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

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

Poznámka:

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

_revinclude

_revinclude umožňuje prohledávat opačný směr jako _include. Můžete například vyhledat pacienty a pak vrátit zpět všechny výskyty, které odkazují na pacienty:

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

_elementy

_elements zužuje 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á čárkami oddělený seznam základních prvků:

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, která SUBSETTED označuje, že jsou neúplnou sadou výsledků.

Modifikátory hledání

:ne

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

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

Jako návratová hodnota byste získali všechny položky pacientů, u kterých pohlaví není žena, včetně prázdných hodnot (položky zadané bez pohlaví). To se liší od hledání pacientů, u kterých je pohlaví muž, protože to by nezahrnuly položky bez určitého pohlaví.

:nepřítomný

:missing vrátí všechny prostředky, které nemají hodnotu pro zadaný prvek, pokud je truehodnota , a vrátí všechny prostředky, které obsahují zadaný prvek, pokud je falsehodnota . U jednoduchých prvků datového typu se bude shodovat se všemi prostředky, :missing=true ve kterých 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é neobsahují informace o datu narození, můžete provést:

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

:přesný

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

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

Tento požadavek vrátí Patient prostředky, které mají přesně stejný název jako Jon. Pokud by zdroj měl pacienti s názvy, jako Jonathan je nebo joN, hledání by ignorovalo a přeskočí prostředek, 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 prohledávaném poli. contains nerozlišuje velká a malá písmena a umožňuje zřetězení znaků. Příklad:

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

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

Pokud chcete provést řadu vyhledávacích operací, které pokrývají více referenčních parametrů, můžete "řetězit" řadu referenčních parametrů tak, že je připojíte k požadavku serveru jeden po druhém pomocí tečky .. Pokud například 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 všechny DiagnosticReport prostředky s pacientem s názvem "Sarah". Tečka . za polem Patient provede zřetězený vyhledávací parametr odkazu parametru subject .

Dalším běžným použitím běžného vyhledávání (ne zřetězených vyhledávání) je nalezení všech setkání pro konkrétního pacienta. Patients často mají jeden nebo více Encounters předmětem. Pokud chcete vyhledat všechny Encounter prostředky s poskytnutým idkódemPatient:

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

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

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

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

Řetězené vyhledávání lze navíc provést vícekrát v jednom požadavku pomocí symbolu &, který umožňuje vyhledat více podmínek v jednom požadavku. V takových případech hledání zřetězený "nezávisle" hledá každý parametr místo hledání podmínek, 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

Tím se vrátí všechny Patient prostředky, které mají "Sarah" jako generalPractitioner "Sarah" a mají generalPractitioner adresu se státem WA. Jinými slovy, pokud pacient měl Sarah ze státu NY a Bill ze státu WA oba odkazy jako pacient generalPractitioner, bude vrácen.

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

Řetězové vyhledávání umožňuje hledat prostředky na základě vlastností prostředků, na které odkazují. Pomocí zpětného řetězového vyhledávání to můžete udělat naopak. Pomocí parametru můžete hledat prostředky na základě vlastností prostředků, _has které na ně odkazují. Prostředek má například Observation parametr patient vyhledávání odkazující na prostředek Pacient. Vyhledání všech zdrojů pacientů, na které odkazuje Observation konkrétní code:

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

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

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

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 reverzní zřetězený vyhledávání implementace MVP. Aby bylo možné provést zřetězený vyhledávání ve službě Azure Cosmos DB, implementace provede vyhledávací výraz a vydá dílčí dotazy k vyřešení odpovídajících prostředků. 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.

Chcete-li vyhledat prostředky, které splňují více podmínek najednou, použijte složené vyhledávání, které spojuje posloupnost hodnot s jedním parametrem se symbolem $. Vrácený výsledek by byl průsečíkem prostředků, které odpovídají všem podmínkám zadaným připojenými parametry hledání. Tyto 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 prostředky, 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 draselný. $ Za symbolem určuje rozsah hodnoty pro komponentu, která se používá lt pro "menší než nebo rovno" a 9.2 pro rozsah hodnot draselných hodnot.

Hledání další sady položek

Maximální počet položek, které lze vrátit na jeden vyhledávací dotaz, je 1 000. Můžete však 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 za prvních 1000 vrácených položek. V takovém případě byste použili hodnotu tokenu url pokračování jako v následujícím výsledkuBundle:searchset

    "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 v poli byste udělali požadavek GET na zadanou relation: nextadresu URL:

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

Tím se vrátí další sada položek pro výsledek hledání. Jedná se searchset o úplnou sadu položek výsledků hledání a token url pro pokračování je odkaz, který vám server poskytne k 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žívaly GET požadavky. Operace vyhledávání můžete provádět také pomocí požadavků:POST _search

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

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

Dalším příkladem hledání pomocí příkazu POST, kde se parametry dotazu odesílají jako tělo 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ů hledá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 s povolením HL7.