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.
Tady jsou 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
. Následující příklad vytá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 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
Z této žádosti získáte sadu pacientů, kde každý prostředek obsahuje pouze identifikátory a aktivní stav pacienta. Prostředky v této odpovědi obsahují 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 odpovídá všem prostředkům, :missing=true
ve kterých je prvek k dispozici s rozšířeními, ale má prázdnou hodnotu. Následující příklad ukazuje, jak najít všechny Patient
prostředky, které chybí informace o datu narození.
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 malá a velká 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
často mají jeden nebo více Encounter
s předmětem. Následující příkaz vyhledá všechny Encounter
prostředky pro Patient
id
zadané prostředky .
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í, jako je například birthdate
.
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
To by umožnilo prohledávat Encounter
prostředky 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
, oba jsou vráceny.
Scénáře, ve kterých musí být AND
operace, která zahrnuje všechny podmínky jako skupinu, najdete v příkladu ve složené hledá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
vyhledávací parametr patient
odkazující na prostředek Pacient. Pomocí následujícího příkazu vyhledejte všechny prostředky pacientů, na které Observation
odkazuje 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. Například následující hledání pro všechny pacienty, kteří mají Observation
, kde má pozorování událost auditu od konkrétního uživatele janedoe
.
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 jednoho parametru se symbolem $
. Výsledkem by byl průnik 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. Například následující hledání najde 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. Pokud je více než 1 000 položek, které odpovídají vyhledávacímu dotazu, můžete pomocí následujícího postupu zobrazit položky větší než 1 000.
Jako v následujícím Bundle
výsledku použijte hodnotu searchset
tokenu url
pokračová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": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
Pak proveďte požadavek GET na zadanou adresu URL v poli 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í. Jedná se searchset
o úplnou sadu položek výsledků hledání a token url
pokračování je odkaz poskytovaný serverem pro načtení položek, které se nezobrazují v prvních 1000.
Hledání pomocí POST
Všechny výše uvedené příklady hledání používaly GET
požadavky. Můžete také provádět operace vyhledávání pomocí POST
požadavků pomocí _search
.
POST [your-fhir-server]/Patient/_search?_id=45
Tento požadavek vrátí Patient
prostředky s id
hodnotou 45. Stejně jako u požadavků GET server určuje, která sada prostředků splňuje podmínku, a vrátí prostředek sady prostředků v odpovědi HTTP.
Dalším příkladem hledání pomocí post, kde se parametry dotazu odesílají jako tělo formuláře, je následující.
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
Poznámka:
FHIR® je registrovaná ochranná známka HL7 a používá se s povolením HL7.