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".
Zřetězený hledání
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. Patient
s bude mít často jeden nebo více Encounter
s s předmětem. Pokud chcete vyhledat všechny Encounter
prostředky pro a Patient
se zadaným id
parametrem :
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 , generalPractitioner
vrá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.
Hledání zpětného řetězu
Ř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.
Složené vyhledávání
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.