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 true
hodnota , a vrátí všechny prostředky, které obsahují zadaný prvek, pokud je false
hodnota . 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í.
Zřetězený 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. Patient
s často mají jeden nebo více Encounter
s předmětem. Pokud chcete vyhledat všechny Encounter
prostředky s poskytnutým id
kó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í .
Vyhledávání v obráceném řetězu
Ř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.
Složené vyhledávání
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: next
adresu 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.