FHIR-keresési példák az Azure API for FHIR-hez

Az alábbiakban néhány példát láthat a Fast Healthcare Interoperability Resources (FHIR®) keresési műveleteinek használatára, beleértve a keresési paramétereket és módosítókat, a lánc- és fordítottlánc-keresést, az összetett keresést, a keresési eredmények következő bejegyzéskészletének megtekintését és a POST kérésekkel való keresést. A kereséssel kapcsolatos további információkért lásd: Az FHIR-keresés áttekintése.

Keresési eredmények paraméterei

_Tartalmaz

_include az erőforrások között megkeresi azokat, amelyek tartalmazzák az erőforrás megadott paraméterét. Kereshet például erőforrások között MedicationRequest , és csak azokat keresheti meg, amelyek egy adott beteg receptjeire vonatkozó információkat tartalmaznak, ez pedig a reference paraméter patient. Az alábbi példában ez lekéri az MedicationRequests összes és az összes olyan beteget, akire hivatkozik a MedicationRequestskövetkezőből:

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Megjegyzés

_include és _revinclude legfeljebb 100 elemet tartalmazhatnak.

_revinclude

_revinclude lehetővé teszi, hogy az ellenkező irányban keressen a következővel _include: . Megkeresheti például a betegeket, majd megfordíthatja az összes olyan találkozást, amely a betegekre hivatkozik:

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_Elemek

_elements a keresési eredményeket a mezők egy részhalmazára szűkíti, hogy szükségtelen adatok kihagyásával csökkentse a válasz méretét. A paraméter elfogadja az alapelemek vesszővel tagolt listáját:

GET [your-fhir-server]/Patient?_elements=identifier,active

Ebben a kérésben egy betegcsomagot kap vissza, de minden erőforrás csak az azonosító(ka)t és a beteg aktív állapotát tartalmazza. A visszaadott válaszban meta.tag szereplő erőforrások értéke SUBSETTED jelzi, hogy az eredmények hiányosak.

Módosítók keresése

:Nem

:not segítségével megkeresheti azokat az erőforrásokat, amelyekben egy attribútum nem igaz. Kereshet például olyan betegeket, akiknél nem nő a nem:

GET [your-fhir-server]/Patient?gender:not=female

Visszatérési értékként az összes olyan betegbejegyzést megkapná, ahol a nem nem nő, beleértve az üres értékeket is (a nemek nélkül megadott bejegyzéseket). Ez nem ugyanaz, mint a nemi férfiakat tartalmazó betegek keresése, mivel ez nem tartalmazza a konkrét nem nélküli bejegyzéseket.

:Hiányzó

:missingvisszaadja az összes olyan erőforrást, amely nem rendelkezik értékkel a megadott elemhez, ha az érték true, és visszaadja a megadott elemet tartalmazó összes erőforrást, ha az érték .false Egyszerű adattípus-elemek esetén a függvény az összes olyan erőforráson megegyezik, :missing=true ahol az elem bővítményekkel van jelen, de üres értékkel rendelkezik. Ha például az összes Patient olyan erőforrást meg szeretné keresni, amelyből hiányoznak a születési dátummal kapcsolatos információk, a következőket teheti:

GET [your-fhir-server]/Patient?birthdate:missing=true

:Pontos

:exact a paraméterekhez string használatos, és pontosan egyező eredményeket ad vissza, például a burkolatokban és a karakterösszefűzésben.

GET [your-fhir-server]/Patient?name:exact=Jon

Ez a kérés olyan erőforrásokat ad Patient vissza, amelyek neve pontosan megegyezik a következővel Jon: . Ha az erőforrásban olyan nevű betegek szerepelnek, mint a Jonathan vagy joN, a keresés figyelmen kívül hagyja és kihagyja az erőforrást, mivel az nem pontosan egyezik meg a megadott értékkel.

:Tartalmaz

:contains a paramétert használja, string és olyan erőforrásokat keres, amelyek a megadott érték részleges egyezéseit használják bárhol a keresett mezőben található sztringben. contains nem különbözteti meg a kis- és nagybetűket, és lehetővé teszi a karakterek összefűzését. Például:

GET [your-fhir-server]/Patient?address:contains=Meadow

Ez a kérés az összes Patient olyan erőforrást address visszaadja, amelynek mezői a "Meadow" sztringet tartalmazó értékekkel rendelkeznek. Ez azt jelenti, hogy olyan címeket kaphat, amelyek keresési eredményként olyan értékeket tartalmaznak, mint a "Meadowers" vagy az "59 Meadow ST".

Több referenciaparamétert lefedő keresési műveletek sorozatának végrehajtásához a hivatkozási paraméterek sorozatát egyesével, egy pont .használatával hozzáfűzheti a kiszolgálókéréshez. Ha például az összes DiagnosticReport erőforrást egy adott nameerőforrásra Patient mutató hivatkozással subject szeretné megtekinteni:

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

Ez a kérés visszaadja az összes erőforrást egy DiagnosticReport "Sarah" nevű betegtulajdonossal. A mező Patient utáni időszak . a láncolt keresést a paraméter referenciaparaméterén hajtja subject végre.

A rendszeres keresés (nem láncolt keresés) egy másik gyakori alkalmazása egy adott beteg összes találkozásának megkeresése. PatientAz s-nek gyakran van egy vagy több Encountertárgya. Ha az összes Encounter erőforrást a megadottal idszeretné megkeresniPatient:

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Láncolt kereséssel megtalálhatja az Encounter összes olyan erőforrást, amely megfelel egy adott információnakPatient, például:birthdate

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Ez nem csak egyetlen beteg erőforrás-keresését Encounter teszi lehetővé, hanem az összes olyan beteg esetében, amely rendelkezik a megadott születési dátumértékkel.

Emellett a láncolt keresés egy kérelemben többször is elvégezhető a szimbólum &használatával, amely lehetővé teszi több feltétel keresését egyetlen kérelemben. Ilyen esetekben a láncolt keresés "egymástól függetlenül" keres minden paramétert, ahelyett, hogy olyan feltételeket keres, amelyek egyszerre csak az összes feltételnek felelnek meg:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Ez az összes Patient olyan erőforrást visszaadja, amelynek "Sarah" a értéke, generalPractitioner és generalPractitioner amelynek a címe WA állapotú. Más szóval, ha egy beteg sarah az állam NY és Bill az állam WA egyaránt hivatkozott, mint a beteg generalPractitioner, a lesz vissza.

Az olyan forgatókönyvek esetében, amelyekben a keresésnek olyan AND műveletnek kell lennie, amely minden feltételt lefed csoportként, tekintse meg az alábbi összetett keresési példát.

A lánckeresés lehetővé teszi az erőforrások keresését az általuk hivatkozott erőforrások tulajdonságai alapján. A fordított láncos keresés lehetővé teszi, hogy fordítva végezze el. Az erőforrásokat a rájuk hivatkozó erőforrások tulajdonságai alapján keresheti meg a paraméterrel _has . Az erőforrás például Observation egy patient erőforrásra hivatkozó keresési paraméterrel patient rendelkezik. Az összes olyan betegerőforrás megkeresése, amelyekre Observation egy adott codereferenciával hivatkozik:

GET [base]/Patient?_has:Observation:patient:code=527

Ez a kérés a kóddal 527hivatkozott Observation patient-erőforrásokat adja vissza.

A fordítottlánc-keresés emellett rekurzív struktúrával is rendelkezhet. Ha például az összes olyan beteget meg szeretné keresni, akinek Observation a megfigyelése egy adott felhasználótól janedoeszármazó naplózási eseményt tartalmaz, a következőket teheti:

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Megjegyzés

Az Azure API for FHIR-ben és az Azure Cosmos DB által támogatott nyílt forráskódú FHIR-kiszolgálón a láncolt keresés és a fordított láncolt keresés MVP-implementáció. Az Azure Cosmos DB láncolt keresésének végrehajtásához az implementáció végigvezeti a keresési kifejezésen, és allekérdezésekkel oldja meg a megfeleltethető erőforrásokat. Ez a kifejezés minden szintjén megtörténik. Ha egy lekérdezés 100-nál több eredményt ad vissza, a rendszer hibát jelez.

Ha egyszerre több feltételnek megfelelő erőforrásokat szeretne keresni, használjon összetett keresést, amely egyetlen paraméterérték-sorozatot illeszt össze egy szimbólummal $. A visszaadott eredmény azoknak az erőforrásoknak a metszete, amelyek megfelelnek az összekapcsolt keresési paraméterek által megadott összes feltételnek. Az ilyen keresési paramétereket összetett keresési paramétereknek nevezzük, és egy új paramétert határoznak meg, amely egy beágyazott struktúrában egyesíti a több paramétert. Ha például az összes DiagnosticReport olyan erőforrást keresi, amely 9,2-nél kisebb vagy azzal egyenlő káliumértéket tartalmaz Observation :

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Ez a kérelem megadja a kódját 2823-3tartalmazó összetevőt, amely ebben az esetben kálium lenne. A $ szimbólumot követve meghatározza az összetevő értéktartományát a "kisebb vagy egyenlő" és 9.2 a kálium-értéktartomány használatávallt.

Keresés a következő bejegyzéskészletben

Az egy keresési lekérdezésben visszaadható bejegyzések maximális száma 1000. Előfordulhat azonban, hogy több mint 1000 olyan bejegyzése van, amely megfelel a keresési lekérdezésnek, és előfordulhat, hogy az első 1000 visszaadott bejegyzés után szeretné látni a következő bejegyzéskészletet. Ebben az esetben a folytatási jogkivonat url értékét searchsetBundle az alábbi módon használhatja:

    "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 megadott URL-címhez pedig get kérést kell küldenie a mezőben relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Ez a keresési eredmény következő bejegyzéskészletét adja vissza. A searchset a keresési eredmények bejegyzéseinek teljes készlete, a folytatási jogkivonat url pedig a kiszolgáló által biztosított hivatkozás, amellyel lekérheti azokat a bejegyzéseket, amelyek nem jelennek meg az első készletben, mert a keresési lekérdezéshez visszaadott bejegyzések maximális számának korlátozása.

Keresés a POST használatával

A fent említett összes keresési példa kéréseket használt GET . A kérések használatával POST is végezhet keresési műveleteket a használatával _search:

POST [your-fhir-server]/Patient/_search?_id=45

Ez a kérés az összes Patient 45 értékű erőforrást id visszaadja. A GET-kérésekhez hasonlóan a kiszolgáló határozza meg, hogy az erőforráskészlet mely készlete felel meg a feltétel(ek)nek, és egy kötegerőforrást ad vissza a HTTP-válaszban.

Egy másik példa a POST használatával végzett keresésre, ahol a lekérdezési paraméterek űrlaptörzsként vannak elküldve:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Következő lépések

Ebből a cikkből megtudhatta, hogyan kereshet különböző keresési paraméterek, módosítók és FHIR keresési eszközök használatával. Az FHIR-kereséssel kapcsolatos további információkért lásd:

Az FHIR® a HL7 bejegyzett védjegye, és a HL7 engedélyével használják.