Příklady hledání FHIR
Níže najdete několik příkladů volání rozhraní API pro vyhledávání Fast Healthcare Interoperability Resources (FHIR®) s různými parametry vyhledávání, modifikátory, zřetězeným a zpětně zřetězeným vyhledáváním, složeným vyhledáváním, POST
požadavky hledání a dalšími. 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, na které odkazují cílové instance prostředků. Můžete například použít _include
k dotazování MedicationRequest
na prostředky a omezit vyhledávání na recepty pro konkrétního pacienta. Služba FHIR pak vrátí MedicationRequest
prostředky i odkazovaný Patient
prostředek. V následujícím příkladu požadavek vyžádá všechny MedicationRequest
instance prostředků v databázi a všechny pacienty, na které MedicationRequest
instance odkazují:
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Poznámka
Služba FHIR ve službě Azure Health Data Services omezuje vyhledávání s _include
a _revinclude
tak, aby vracela 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 zpětně zahrnout 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á seznam základních prvků oddělených čárkami:
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Ve výše uvedeném požadavku obdržíte balíček pacientů, ale každá položka bude obsahovat pouze identifikátory a aktivní stav pacienta. Položky v odpovědi budou obsahovat meta.tag
hodnotu SUBSETTED
označující, že nejsou zahrnuty všechny prvky definované pro prostředek.
Modifikátory vyhledává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
Na oplátku byste získali všechny Patient
prostředky, jejichž gender
hodnota prvku není female
, včetně pacientů bez zadané hodnoty pohlaví. To se liší od vyhledávání Patient
prostředků s male
hodnotou pohlaví, protože by se ignorovali pacienti 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, když :missing=false
. U jednoduchých prvků datového typu se bude shodovat u všech prostředků, :missing=true
kde je prvek, ale má prázdnou hodnotu. Pokud například chcete najít všechny Patient
prostředky, ve které chybí informace, birthdate
můžete volat:
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
se používá k vyhledávání prvků s datovými string
typy a vrací kladně, pokud hodnota parametru přesně odpovídá sekvenci písmen a celých znaků hodnoty prvku.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Tento požadavek vrátí Patient
prostředky, které mají given
název Jon
nebo family
. Pokud by existovali pacienti s názvy jako Jonathan
nebo JON
, hledání by tyto prostředky ignorovalo, protože jejich jména přesně neodpovídají zadané hodnotě.
:contains
:contains
se používá k dotazování na string
prvky typu a umožňuje shodovat se zadanou hodnotou kdekoli v poli.
contains
nerozlišuje velká 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 by vrátil všechny Patient
prostředky s address
poli elementu, která obsahují řetězec "Meadow" (nerozlišují velká a malá písmena). To znamená, že můžete mít adresy s hodnotami jako "Meadows Lane", "Pinemeadow Place" nebo "Meadowlark St", které vracejí kladné shody.
Zřetězený hledání
Pokud chcete provádět vyhledávací operace, které pokrývají prvky obsažené v odkazovaném prostředku, můžete "zřetěžovat" řadu parametrů společně s .
. Například pokud chcete zobrazit všechny DiagnosticReport
prostředky s odkazem subject
na pacienta určeného parametrem name
:
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Tento požadavek by vrátil všechny DiagnosticReport
prostředky s pacientem s názvem Sarah. Zřetězený .
dotaz odkazuje na name
prvek v rámci odkazovaného Patient
prostředku.
Dalším běžným využitím vyhledávání FHIR je vyhledání všech setkání pro konkrétního pacienta. Chcete-li provést pravidelné (nezřetězený) vyhledávání Encounter
prostředků, které odkazují na danou Patient
id
:
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Pomocí zřetězovaného 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 výskyty odkazující na pacienty zúžené podle birthdate
:
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Tím by se vrátily všechny Encounter
instance, 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 takových případech se zřetězeným vyhledáváním &
"nezávisle" vyhledá každá hodnota prvku:
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
To by vrátilo všechny Patient
prostředky, které mají odkaz na "Sarah" jako generalPractitioner
plus odkaz na generalPractitioner
objekt, který má adresu ve státě Washington. Jinými slovy, pokud měl generalPractitioner
pacient jménem Sarah z New Yorku a jiného generalPractitioner
billa ze státu Washington, splňovalo by to podmínky pro pozitivní shodu při tomto hledání.
Ve scénářích, ve kterých hledání vyžaduje logickou podmínku AND, která výhradně kontroluje hodnoty párovaných prvků, najdete níže uvedené příklady složeného vyhledávání .
Zpětné zřetězený vyhledávání
Použití zpětného zřetězenýho vyhledávání ve FHIR umožňuje vyhledat cílové instance prostředků, na které odkazují jiné prostředky. Jinými slovy, můžete vyhledávat prostředky na základě vlastností prostředků, které na ně odkazují. K tomu slouží _has
parametr . Prostředek má například vyhledávací parametrpatient
, Observation
který kontroluje odkaz na Patient
prostředek. Pokud chcete najít všechny Patient
prostředky, na které odkazuje objekt Observation
s konkrétním code
objektem :
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Tento požadavek vrátí Patient
prostředky, na které Observation
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, na které Observation
odkazuje místo, kde na pozorování odkazuje AuditEvent
konkrétní odborník s názvem janedoe
:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Složené vyhledávání
Pokud chcete hledat prostředky, které obsahují prvky seskupené jako logicky propojené páry, definuje FHIR složené vyhledávání, které spojuje hodnoty jednoho parametru $
společně s operátorem – tvoří propojený pár parametrů. Při složeného hledání dochází k kladné shodě, když průnik hodnot prvků splňuje všechny podmínky nastavené ve spárovaných parametrech hledání. Například pokud chcete najít všechny DiagnosticReport
zdroje, které obsahují hodnotu draslíku menší než 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Spárované prvky by v tomto případě byly code
elementem (z Observation
prostředku odkazovaného jako result
) a value
elementem propojeným s code
. Následující kód s operátorem $
nastaví podmínku value
jako lt
(pro "menší než") 9.2
(pro hodnotu mmol/L draslíku).
Složené parametry hledání lze také použít k filtrování hodnot více hodnot kódu komponenty pomocí logického nebo. Například dotazování na pozorování s diastolický krevní tlak větší než 90 nebo systolický krevní tlak vyšší 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 najednou vrátit z vyhledávacího dotazu, je 1000. 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 1000 položkách. V takovém případě byste použili hodnotu pokračovacího tokenu url
(tj. "next"
) ve searchset
sadě vrácené z hledá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": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
}
],
Požádali byste o 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í. Balíček searchset
je kompletní sada položek výsledků hledání a token url
pokračování je odkaz poskytnutý službou FHIR, který načte položky, které se nevejdou do první podmnožiny (kvůli omezení maximálního počtu položek vrácených na jednu stránku).
Hledání pomocí POST
Všechny výše uvedené příklady hledání používají GET
požadavky. Můžete ale také provádět volání rozhraní API pro vyhledávání FHIR pomocí POST
parametru _search
:
POST {{FHIR_URL}}/Patient/_search?_id=45
Tento požadavek by vrátil Patient
instanci prostředku s danou id
hodnotou. Stejně jako u GET
požadavků server určí, které instance prostředků splňují podmínky, a vrátí sadu v odpovědi HTTP.
Další funkcí vyhledávání pomocí POST
je to, že umožňuje odeslat parametry dotazu jako text 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í ve FHIR pomocí parametrů hledání, modifikátorů a dalších metod. Další informace o vyhledávání FHIR najdete v tématu
FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.