Příklady hledání FHIR
Následují příklady volání rozhraní API pro vyhledávání Fast Healthcare Interoperability Resources (FHIR®) s různými parametry hledání, modifikátory, zřetězenými a obrácenými zřetězenými vyhledáváními, složenými vyhledáváními, POST
požadavky na vyhledávání a dalšími funkcemi. Obecný úvod do konceptů vyhledávání FHIR najdete v tématu Přehled vyhledávání FHIR.
Parametry výsledků hledání
_include
_include
umožňuje vyhledat instance prostředků a zahrnout do výsledků další prostředky odkazované instancemi cílových prostředků. Můžete například použít _include
dotaz na MedicationRequest
prostředky a omezit vyhledávání na předpis pro konkrétního pacienta. Služba FHIR pak vrátí MedicationRequest
prostředky a odkazovaný Patient
prostředek. V následujícím příkladu žádost vyžádá všechny MedicationRequest
instance prostředků v databázi a všechny pacienty, na které instance odkazují MedicationRequest
.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Poznámka:
Služba FHIR ve službě Azure Health Data Services omezuje vyhledávání a _include
_revinclude
vrací maximálně 100 položek.
_revinclude
_revinclude
umožňuje vyhledat instance prostředků a zahrnout do výsledků další prostředky, které odkazují na cílové instance prostředků. Můžete například vyhledat pacienty a pak vrátit zpět všechna setkání, která odkazují na pacienty.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
zužuje informace ve výsledcích hledání na podmnožinu prvků definovaných pro typ prostředku. Parametr _elements
přijímá čárkami oddělený seznam základních prvků.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Předchozí žádost vrátí svazek pacientů. Každá položka obsahuje pouze identifikátory a aktivní stav pacienta. Položky v odpovědi obsahují meta.tag
hodnotu, která SUBSETTED
označuje, že nejsou zahrnuty všechny prvky definované pro prostředek.
Modifikátory hledání
:not
:not
umožňuje najít prostředky s prvkem, který nemá danou hodnotu. Můžete například vyhledat pacienty, kteří nejsou ženami.
GET {{FHIR_URL}}/Patient?gender:not=female
Ve vrácených hodnotách byste získali všechny Patient
prostředky, jejichž gender
hodnota prvku není female
, včetně všech pacientů, kteří nemají zadanou hodnotu pohlaví. To se liší od hledání Patient
zdrojů s genderovou male
hodnotou, protože by to ignorovalo pacienty bez zadaného pohlaví.
:missing
:missing
vrátí všechny prostředky, které nemají hodnotu pro zadaný prvek, když :missing=true
. Kromě toho vrátí všechny prostředky, :missing
které obsahují zadaný prvek při :missing=false
. U jednoduchých prvků datového typu odpovídá všem prostředkům, :missing=true
kde je prvek, ale má prázdnou hodnotu. Pokud například chcete najít všechny Patient
prostředky, na které chybí informace birthdate
, můžete provést následující volání.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
slouží k vyhledávání prvků s datovými string
typy a vrací kladné, pokud hodnota parametru přesně odpovídá velikosti písmen a úplné posloupnosti znaků hodnoty prvku.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Tento požadavek vrátí Patient
prostředky, které mají given
nebo family
mají název Jon
. Pokud by byli pacienti se jmény, jako Jonathan
je nebo JON
, hledání by tyto prostředky ignorovalo, protože jejich názvy neodpovídají zadané hodnotě přesně.
:contains
:contains
slouží k dotazování na string
elementy typu a umožňuje shody se zadanou hodnotou kdekoli v poli. contains
nerozlišuje malá a velká písmena a rozpozná odpovídající řetězce zřetězené s jinými znaky. Příklad:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Tento požadavek vrátí všechny Patient
prostředky s address
poli prvků, které obsahují řetězec "Meadow" (nerozlišují malá a velká písmena). To znamená, že můžete mít adresy s hodnotami, jako je "Meadows Lane", "Pinemeadow Place" nebo "Meadowlark St", které vrací kladné shody.
Zřetězený hledání
Chcete-li provádět vyhledávací operace, které pokrývají prvky obsažené v odkazovaném prostředku, můžete "řetězit" řadu parametrů společně s .
. Pokud například chcete zobrazit všechny DiagnosticReport
prostředky s odkazem subject
na pacienta určeného name
uživatelem, použijte následující dotaz.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Tato žádost vrátí všechny DiagnosticReport
prostředky s pacientem s názvem "Sarah". Odkazuje .
zřetězený hledání na name
prvek v rámci odkazovaného Patient
prostředku.
Dalším běžným použitím vyhledávání FHIR je nalezení všech setkání pro konkrétního pacienta. Chcete-li provést pravidelné (neřetězené) vyhledávání Encounter
prostředků, které odkazují na Patient
dané id
použití, použijte následující.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Pomocí zřetězených vyhledávání můžete najít všechny Encounter
zdroje, které odkazují na pacienty, jejichž podrobnosti odpovídají parametru hledání. Následující příklad ukazuje, jak vyhledat setkání odkazující na pacienty zúžené .birthdate
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Tím by se vrátily všechny Encounter
výskyty, které odkazují na pacienty se zadanou birthdate
hodnotou.
Kromě toho můžete zahájit více zřetězených hledání pomocí operátoru &
, který umožňuje vyhledávání více odkazů v jednom požadavku. V případech s zřetězeným &
vyhledáváním "nezávisle" vyhledá každou hodnotu prvku.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Tím se vrátí všechny Patient
prostředky, které mají odkaz na "Sarah" jako generalPractitioner
plus odkaz na generalPractitioner
adresu ve státě Washington. Jinými slovy, pokud měl generalPractitioner
pacient jménem Sarah z New Yorku a jiný generalPractitioner
bill ze státu Washington, obě by při tomto hledání splňovaly podmínky pro pozitivní shodu.
Scénáře, ve kterých hledání vyžaduje logickou podmínku AND, která přísně kontroluje spárované hodnoty prvků, najdete v následujících příkladech složeného vyhledávání .
Obrácené zřetězený vyhledávání
Použití reverzního zřetězenýho vyhledávání v FHIR umožňuje vyhledat cílové instance prostředků odkazované jinými prostředky. Jinými slovy, můžete hledat prostředky na základě vlastností prostředků, které na ně odkazují. To se provádí pomocí parametru _has
. Prostředek má například Observation
parametr patient
vyhledávání, který kontroluje odkaz na Patient
prostředek. Pokud chcete najít všechny Patient
prostředky, na které Observation
odkazuje konkrétní code
, použijte následující kód.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Tento požadavek vrátí Patient
prostředky, na Observation
které odkazují prostředky s kódem 527
.
Zpětné zřetězený vyhledávání navíc může mít rekurzivní strukturu. Pokud například chcete vyhledat všechny pacienty odkazované na místo, kde Observation
se na pozorování odkazuje AuditEvent
konkrétní odborník s názvem janedoe
, použijte:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Složené vyhledávání
Pokud chcete vyhledat prostředky, které obsahují prvky seskupené jako logicky propojené páry, FHIR definuje složené vyhledávání, které spojuje hodnoty jednoho parametru společně s operátorem $
– tvoří propojený pár parametrů. Ve složeného vyhledávání dojde ke kladné shodě, když průnik hodnot prvků splňuje všechny podmínky nastavené ve spárovaných parametrech hledání. Následující příklad dotazuje všechny DiagnosticReport
prostředky, které obsahují hodnotu draselné hodnoty menší než 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Spárované prvky v tomto případě by byly code
element (z Observation
prostředku odkazovaného jako result
) a value
prvek spojený s code
. Za kódem operátor $
nastaví podmínku value
jako (pro lt
"menší než") 9.2
(pro hodnotu mmol/L draselný).
Složené parametry hledání se dají použít také k filtrování množství hodnot kódu více součástí pomocí logického operátoru OR. Pokud chcete například dotazovat pozorování s diastolicovým krevním tlakem větším než 90 NEBO systolicovým krevním tlakem vyšším než 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Všimněte si, jak ,
funguje jako logický operátor OR mezi těmito dvěma podmínkami.
Zobrazení další sady položek
Maximální počet prostředků, které lze vrátit najednou z vyhledávacího dotazu, je 1 000. Můžete však mít více než 1 000 instancí prostředků, které odpovídají vyhledávacímu dotazu, a chcete načíst další sadu výsledků po prvních 1 000 položkách. V tomto případě byste použili hodnotu tokenu url
pokračování (tj"next"
. ) v searchset
sadě vrácenou z hledání následujícím způsobem.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
}
],
Zadali byste požadavek na zadanou GET
adresu URL:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Tím se vrátí další sada položek pro výsledky hledání. Sada searchset
je kompletní sada položek výsledků hledání a token url
pokračování je odkaz poskytovaný službou FHIR k načtení položek, které se nevejdou do první podmnožiny (kvůli omezení maximálního počtu položek vrácených pro jednu stránku).
Hledání pomocí POST
Všechny zde uvedené příklady vyhledávání používají GET
požadavky. Volání rozhraní API pro vyhledávání FHIR však můžete provést pomocí POST
následujícího parametru _search
.
POST {{FHIR_URL}}/Patient/_search?_id=45
Tento požadavek vrátí Patient
instanci prostředku s danou id
hodnotou. Stejně jako u GET
požadavků server určuje, které instance prostředků splňují podmínky, a vrátí sadu v odpovědi HTTP.
Další funkcí vyhledávání POST
je, že umožňuje odeslat parametry dotazu jako tělo formuláře.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Další kroky
V tomto článku jste se dozvěděli o vyhledávání v FHIR pomocí parametrů hledání, modifikátorů a dalších metod. Další informace o vyhledávání FHIR najdete v tématu
Poznámka:
FHIR® je registrovaná ochranná známka HL7 a používá se s povolením HL7.