Contoh pencarian FHIR untuk Azure API untuk FHIR
Di bawah ini adalah beberapa contoh penggunaan operasi pencarian Fast Healthcare Interoperability Resources (FHIR®), termasuk parameter pencarian dan pengubah, pencarian rantai dan rantai terbalik, pencarian komposit, melihat entri berikutnya yang ditetapkan untuk hasil pencarian, dan mencari dengan POST
permintaan. Untuk informasi selengkapnya tentang pencarian, lihat Gambaran Umum Pencarian FHIR.
Parameter hasil pencarian
_Termasuk
_include
mencari di seluruh sumber daya untuk sumber daya yang menyertakan parameter sumber daya yang ditentukan. Misalnya, Anda dapat mencari di seluruh MedicationRequest
sumber daya untuk menemukan hanya sumber daya yang menyertakan informasi tentang resep untuk pasien tertentu, yang merupakan reference
parameter patient
. Dalam contoh di bawah ini, ini akan menarik semua MedicationRequests
dan semua pasien yang dirujuk dari MedicationRequests
:
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Catatan
_include dan _revinclude dibatasi hingga 100 item.
_revinclude
_revinclude
memungkinkan Anda untuk mencari arah yang berlawanan sebagai _include
. Misalnya, Anda dapat mencari pasien dan kemudian sebaliknya menyertakan semua pertemuan yang mereferensikan pasien:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_Elemen
_elements
mempersempit hasil pencarian ke subset bidang untuk mengurangi ukuran respons dengan menghilangkan data yang tidak perlu. Parameter menerima daftar elemen dasar yang dipisahkan koma:
GET [your-fhir-server]/Patient?_elements=identifier,active
Dalam permintaan ini, Anda akan mendapatkan kembali bundel pasien, tetapi setiap sumber daya hanya akan menyertakan pengidentifikasi dan status aktif pasien. Sumber daya dalam respons yang meta.tag
dikembalikan ini akan berisi nilai SUBSETTED
untuk menunjukkan bahwa sumber daya tersebut adalah serangkaian hasil yang tidak lengkap.
Modifikasi pencarian
:Tidak
:not
memungkinkan Anda menemukan sumber daya di mana atribut tidak benar. Misalnya, Anda dapat mencari pasien di mana jenis kelaminnya bukan perempuan:
GET [your-fhir-server]/Patient?gender:not=female
Sebagai nilai yang dikembalikan, Anda akan mendapatkan semua entri pasien di mana jenis kelamin bukan perempuan, termasuk nilai kosong (entri yang ditentukan tanpa jenis kelamin). Ini berbeda dengan mencari Pasien di mana jenis kelamin berjenis kelamin laki-laki, karena itu tidak akan menyertakan entri tanpa jenis kelamin tertentu.
:Hilang
:missing
mengembalikan semua sumber daya yang tidak memiliki nilai untuk elemen yang ditentukan saat nilainya adalah true
, dan mengembalikan semua sumber daya yang berisi elemen yang ditentukan saat nilainya adalah false
. Untuk elemen jenis data sederhana, :missing=true
akan cocok pada semua sumber daya di mana elemen hadir dengan ekstensi tetapi memiliki nilai kosong. Misalnya, jika Anda ingin menemukan semua Patient
sumber daya yang kehilangan informasi pada tanggal lahir, Anda dapat melakukan:
GET [your-fhir-server]/Patient?birthdate:missing=true
:Tepat
:exact
digunakan untuk string
parameter, dan mengembalikan hasil yang cocok dengan parameter dengan tepat, seperti dalam casing dan perangkaian karakter.
GET [your-fhir-server]/Patient?name:exact=Jon
Permintaan ini mengembalikan Patient
sumber daya yang memiliki nama sama persis dengan Jon
. Jika sumber daya memiliki Pasien dengan nama seperti Jonathan
atau joN
, pencarian akan mengabaikan dan melewati sumber daya karena tidak sama persis dengan nilai yang ditentukan.
:Berisi
:contains
digunakan untuk string
parameter dan pencarian sumber daya dengan kecocokan parsial dari nilai yang ditentukan di mana saja dalam string dalam bidang yang sedang dicari.
contains
tidak peka huruf besar/kecil dan memungkinkan penggandaan karakter. Contohnya:
GET [your-fhir-server]/Patient?address:contains=Meadow
Permintaan ini akan mengembalikan semua Patient
sumber daya dengan address
bidang yang memiliki nilai yang berisi string "Meadow". Ini berarti Anda dapat memiliki alamat yang menyertakan nilai seperti "Meadowers" atau "59 Meadow ST" yang dikembalikan sebagai hasil pencarian.
Pencarian berantai
Untuk melakukan serangkaian operasi pencarian yang mencakup beberapa parameter referensi, Anda dapat "merantai" rangkaian parameter referensi dengan menambahkannya ke permintaan server satu per satu menggunakan titik .
. Misalnya, jika Anda ingin melihat semua DiagnosticReport
sumber daya dengan subject
referensi ke Patient
sumber daya yang menyertakan name
:
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Permintaan ini akan mengembalikan semua DiagnosticReport
sumber daya dengan subjek pasien bernama "Sarah". Periode .
setelah bidang Patient
melakukan pencarian berantai pada parameter subject
referensi parameter.
Penggunaan umum lain dari pencarian reguler (bukan pencarian berantai) adalah menemukan semua pertemuan untuk pasien tertentu.
Patient
s akan sering memiliki satu atau lebih Encounter
dengan subjek. Untuk mencari semua Encounter
sumber daya Patient
dengan yang disediakan id
:
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Dengan menggunakan pencarian berantai, Anda dapat menemukan semua Encounter
sumber daya yang cocok dengan informasi Patient
tertentu, seperti birthdate
:
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Ini akan memungkinkan tidak hanya mencari Encounter
sumber daya untuk satu pasien, tetapi di semua pasien yang memiliki nilai tanggal lahir yang ditentukan.
Selain itu, pencarian berantai dapat dilakukan lebih dari sekali dalam satu permintaan dengan menggunakan simbol &
, yang memungkinkan Anda mencari beberapa kondisi dalam satu permintaan. Dalam kasus seperti itu, pencarian berantai "secara independen" mencari setiap parameter, alih-alih mencari kondisi yang hanya memenuhi semua kondisi sekaligus:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Ini akan mengembalikan semua Patient
sumber daya yang memiliki "Sarah" sebagai generalPractitioner
dan memiliki generalPractitioner
yang memiliki alamat dengan status WA. Dengan kata lain, jika pasien memiliki Sarah dari negara bagian NY dan Bill dari NEGARA WA keduanya dirujuk sebagai pasien generalPractitioner
, akan dikembalikan.
Untuk skenario di mana pencarian harus menjadi AND
operasi yang mencakup semua kondisi sebagai grup, lihat contoh pencarian komposit di bawah ini.
Pencarian rantai terbalik
Pencarian rantai memungkinkan Anda mencari sumber daya berdasarkan properti sumber daya yang mereka rujuk. Menggunakan pencarian rantai terbalik, memungkinkan Anda melakukannya dengan cara lain. Anda dapat mencari sumber daya berdasarkan properti sumber daya yang merujuknya, menggunakan _has
parameter . Misalnya, Observation
sumber daya memiliki parameter patient
pencarian yang mengacu pada sumber daya Pasien. Untuk menemukan semua sumber daya Pasien yang dirujuk oleh Observation
dengan :code
GET [base]/Patient?_has:Observation:patient:code=527
Permintaan ini mengembalikan sumber daya Pasien yang dirujuk dengan Observation
kode 527
.
Selain itu, pencarian rantai terbalik dapat memiliki struktur rekursif. Misalnya, jika Anda ingin mencari semua pasien yang memiliki Observation
tempat pengamatan memiliki peristiwa audit dari pengguna janedoe
tertentu, Anda dapat melakukan:
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Catatan
Di Azure API untuk FHIR dan server FHIR sumber terbuka yang didukung oleh Azure Cosmos DB, pencarian berantai dan pencarian berantai terbalik adalah implementasi MVP. Untuk menyelesaikan pencarian berantai di Azure Cosmos DB, implementasi memandu ekspresi pencarian dan mengeluarkan subkueri untuk menyelesaikan sumber daya yang cocok. Ini dilakukan untuk setiap tingkat ekspresi. Jika ada kueri yang mengembalikan lebih dari 100 hasil, kesalahan akan dilemparkan.
Pencarian komposit
Untuk mencari sumber daya yang memenuhi beberapa kondisi sekaligus, gunakan pencarian komposit yang menggabungkan urutan nilai parameter tunggal dengan simbol $
. Hasil yang dikembalikan adalah persimpangan sumber daya yang cocok dengan semua kondisi yang ditentukan oleh parameter pencarian yang digabungkan. Parameter pencarian tersebut disebut parameter pencarian komposit, dan menentukan parameter baru yang menggabungkan beberapa parameter dalam struktur berlapis. Misalnya, jika Anda ingin menemukan semua DiagnosticReport
sumber daya yang berisi Observation
dengan nilai kalium kurang dari atau sama dengan 9,2:
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Permintaan ini menentukan komponen yang berisi kode 2823-3
, yang dalam hal ini akan menjadi kalium.
$
Mengikuti simbol , ini menentukan rentang nilai untuk komponen yang digunakan lt
untuk "kurang dari atau sama dengan" dan 9.2
untuk rentang nilai kalium.
Cari set entri berikutnya
Jumlah maksimum entri yang dapat dikembalikan per satu kueri pencarian adalah 1000. Namun, Anda mungkin memiliki lebih dari 1000 entri yang cocok dengan kueri pencarian, dan Anda mungkin ingin melihat kumpulan entri berikutnya setelah 1000 entri pertama yang dikembalikan. Dalam kasus seperti itu, Anda akan menggunakan nilai token url
kelanjutan seperti searchset
pada hasil Bundle
di bawah ini:
"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"
}
],
Dan Anda akan melakukan permintaan GET untuk URL yang disediakan di bawah bidang relation: next
:
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Ini akan mengembalikan kumpulan entri berikutnya untuk hasil pencarian Anda.
searchset
adalah kumpulan lengkap entri hasil pencarian, dan token url
kelanjutan adalah tautan yang disediakan oleh server bagi Anda untuk mengambil entri yang tidak muncul pada set pertama karena pembatasan jumlah maksimum entri yang dikembalikan untuk kueri pencarian.
Mencari menggunakan POST
Semua contoh pencarian yang disebutkan di atas telah menggunakan GET
permintaan. Anda juga dapat melakukan operasi pencarian menggunakan POST
permintaan menggunakan _search
:
POST [your-fhir-server]/Patient/_search?_id=45
Permintaan ini akan mengembalikan semua Patient
sumber daya dengan id
nilai 45. Sama seperti dalam permintaan GET, server menentukan set sumber daya mana yang memenuhi kondisi, dan mengembalikan sumber daya bundel dalam respons HTTP.
Contoh lain pencarian menggunakan POST di mana parameter kueri dikirimkan sebagai isi formulir adalah:
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Langkah berikutnya
Dalam artikel ini, Anda mempelajari tentang cara mencari menggunakan parameter pencarian, pengubah, dan alat pencarian FHIR yang berbeda. Untuk informasi selengkapnya tentang Pencarian FHIR, lihat
FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.