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 MedicationRequests
kö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ó
:missing
visszaadja 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".
Láncolt keresés
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 name
erő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. Patient
Az s-nek gyakran van egy vagy több Encounter
tárgya. Ha az összes Encounter
erőforrást a megadottal id
szeretné 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.
Fordított lánc keresése
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 code
referenciával hivatkozik:
GET [base]/Patient?_has:Observation:patient:code=527
Ez a kérés a kóddal 527
hivatkozott 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 janedoe
szá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.
Összetett keresés
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-3
tartalmazó ö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 searchset
Bundle
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.