Contoh pencarian FHIR
Berikut adalah contoh panggilan API pencarian Fast Healthcare Interoperability Resources (FHIR®) yang menampilkan berbagai parameter pencarian, pengubah, pencarian berantai dan terbalik, pencarian komposit, POST
permintaan pencarian, dan banyak lagi. Untuk pengenalan umum konsep pencarian FHIR, lihat Gambaran Umum Pencarian FHIR.
Parameter hasil pencarian
_include
_include
memungkinkan Anda mencari instans sumber daya, dan menyertakan dalam hasil sumber daya lain yang dirujuk oleh instans sumber daya target. Misalnya, Anda dapat menggunakan _include
untuk mengkueri MedicationRequest
sumber daya dan membatasi pencarian ke resep untuk pasien tertentu. Layanan FHIR kemudian akan mengembalikan MedicationRequest
sumber daya dan sumber daya yang direferensikan Patient
. Dalam contoh berikut, permintaan menarik semua MedicationRequest
instans sumber daya dalam database dan semua pasien yang dirujuk MedicationRequest
oleh instans.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Catatan
Layanan FHIR di Azure Health Data Services membatasi pencarian dengan _include
dan _revinclude
untuk mengembalikan maksimum 100 item.
_revinclude
_revinclude
memungkinkan Anda mencari instans sumber daya, dan menyertakan dalam hasil sumber daya lain yang mereferensikan instans sumber daya target. Misalnya, Anda dapat mencari pasien dan kemudian sebaliknya menyertakan semua pertemuan yang mereferensikan pasien.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
mempersempit informasi dalam hasil pencarian ke subset elemen yang ditentukan untuk jenis sumber daya. Parameter _elements
menerima daftar elemen dasar yang dipisahkan koma.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Permintaan sebelumnya mengembalikan bundel pasien. Setiap entri hanya mencakup pengidentifikasi dan status aktif pasien. Entri dalam respons berisi meta.tag
nilai SUBSETTED
untuk menunjukkan bahwa tidak semua elemen yang ditentukan untuk sumber daya disertakan.
Pengubah pencarian
:not
:not
memungkinkan Anda menemukan sumber daya dengan elemen yang tidak memiliki nilai tertentu. Misalnya, Anda dapat mencari pasien yang bukan perempuan.
GET {{FHIR_URL}}/Patient?gender:not=female
Sebagai imbalannya, Anda akan mendapatkan semua Patient
sumber daya yang nilai elemennya gender
tidak female
, termasuk pasien apa pun tanpa nilai jenis kelamin yang ditentukan. Ini berbeda dengan mencari Patient
sumber daya dengan nilai jenis kelamin male
karena itu akan mengabaikan pasien tanpa jenis kelamin yang ditentukan.
:missing
:missing
mengembalikan semua sumber daya yang tidak memiliki nilai untuk elemen yang ditentukan saat :missing=true
. Selain itu, :missing
mengembalikan semua sumber daya yang berisi elemen yang ditentukan saat :missing=false
. Untuk elemen jenis data sederhana, :missing=true
cocok dengan semua sumber daya tempat elemen ada tetapi memiliki nilai kosong. Misalnya, jika Anda ingin menemukan semua Patient
sumber daya yang kehilangan informasi di birthdate
, Anda dapat melakukan panggilan berikut.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
digunakan untuk mencari elemen dengan string
jenis data dan mengembalikan positif jika nilai parameter sama persis dengan kasus dan urutan karakter penuh dari nilai elemen.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Permintaan ini mengembalikan Patient
sumber daya yang memiliki given
nama Jon
atau family
. Jika ada pasien dengan nama seperti Jonathan
atau JON
, pencarian akan mengabaikan sumber daya tersebut karena namanya tidak cocok dengan nilai yang ditentukan dengan tepat.
:contains
:contains
digunakan untuk mengkueri string
elemen jenis dan memungkinkan kecocokan dengan nilai yang ditentukan di mana saja dalam bidang . contains
tidak peka huruf besar/kecil, dan mengenali string yang cocok yang digabungkan dengan karakter lain. Contohnya:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Permintaan ini akan mengembalikan semua Patient
sumber daya dengan address
bidang elemen yang berisi string "Meadow" (tidak peka huruf besar/kecil). Ini berarti Anda dapat memiliki alamat dengan nilai seperti "Meadows Lane," "Pinemeadow Place", atau "Meadowlark St" yang mengembalikan kecocokan positif.
Pencarian berantai
Untuk melakukan operasi pencarian yang mencakup elemen yang terkandung dalam sumber daya yang direferensikan, Anda dapat "merantai" serangkaian parameter bersama dengan .
. Misalnya, jika Anda ingin menampilkan semua DiagnosticReport
sumber daya dengan subject
referensi ke pasien yang ditentukan oleh name
, gunakan kueri berikut.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Permintaan ini mengembalikan semua DiagnosticReport
sumber daya dengan subjek pasien bernama "Sarah". Titik .
pencarian berantai ke name
elemen dalam sumber daya yang direferensikan Patient
.
Penggunaan umum lain dari pencarian FHIR adalah menemukan semua pertemuan untuk pasien tertentu. Untuk melakukan pencarian reguler (tidak berantai) untuk Encounter
sumber daya yang mereferensikan Patient
dengan penggunaan tertentu id
, gunakan yang berikut ini.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Dengan menggunakan pencarian berantai, Anda dapat menemukan semua Encounter
sumber daya yang mereferensikan pasien yang detailnya cocok dengan parameter pencarian. Contoh berikut menunjukkan cara mencari pertemuan yang merujuk pada pasien yang dipersempit oleh birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Ini akan mengembalikan semua Encounter
instans yang mereferensikan pasien dengan nilai yang ditentukan birthdate
.
Selain itu, Anda dapat memulai beberapa pencarian berantai dengan menggunakan &
operator, yang memungkinkan pencarian terhadap beberapa referensi dalam satu permintaan. Dalam kasus dengan &
pemindaian "independen" pencarian berantai untuk setiap nilai elemen.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Ini mengembalikan semua Patient
sumber daya yang memiliki referensi ke "Sarah" sebagai generalPractitioner
referensi plus ke yang generalPractitioner
memiliki alamat di negara bagian Washington. Dengan kata lain, jika pasien memiliki generalPractitioner
sarah bernama dari negara bagian New York dan yang lain generalPractitioner
bernama Bill dari negara bagian Washington, keduanya akan memenuhi syarat untuk pertandingan positif ketika melakukan pencarian ini.
Untuk skenario di mana pencarian memerlukan kondisi AND logis yang secara ketat memeriksa nilai elemen yang dipasangkan, lihat contoh pencarian komposit berikut.
Pencarian berantai terbalik
Menggunakan pencarian berantai terbalik di FHIR memungkinkan Anda mencari instans sumber daya target yang direferensikan oleh sumber daya lain. Dengan kata lain, Anda dapat mencari sumber daya berdasarkan properti sumber daya yang merujuknya. Ini dicapai dengan _has
parameter . Misalnya, Observation
sumber daya memiliki parameter patient
pencarian yang memeriksa referensi ke Patient
sumber daya. Untuk menemukan semua Patient
sumber daya yang Observation
dirujuk oleh dengan code
, gunakan kode berikut.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Permintaan ini mengembalikan Patient
sumber daya yang dirujuk oleh Observation
sumber daya dengan kode 527
.
Selain itu, pencarian berantai terbalik dapat memiliki struktur rekursif. Misalnya, jika Anda ingin mencari semua pasien yang Observation
dirujuk oleh tempat pengamatan dirujuk oleh AuditEvent
dari praktisi tertentu bernama janedoe
, gunakan:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Pencarian komposit
Untuk mencari sumber daya yang berisi elemen yang dikelompokkan bersama sebagai pasangan yang terhubung secara logis, FHIR mendefinisikan pencarian komposit, yang menggabungkan nilai parameter tunggal bersama dengan $
operator - membentuk sepasang parameter yang terhubung. Dalam pencarian komposit, kecocokan positif terjadi ketika persimpangan nilai elemen memenuhi semua kondisi yang diatur dalam parameter pencarian yang dipasangkan. Contoh kueri berikut untuk semua DiagnosticReport
sumber daya yang berisi nilai kalium kurang dari 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Elemen yang dipasangkan dalam kasus ini akan menjadi code
elemen (dari sumber daya yang Observation
direferensikan sebagai result
) dan elemen yang value
terhubung dengan code
. Mengikuti kode dengan $
operator menetapkan value
kondisi sebagai lt
(untuk "kurang dari") 9.2
(untuk nilai mmol/L kalium).
Parameter pencarian komposit juga dapat digunakan untuk memfilter beberapa jumlah nilai kode komponen dengan OR logis. Misalnya, untuk mengkueri pengamatan dengan tekanan darah diastolik lebih besar dari 90 ATAU tekanan darah sistolik lebih besar dari 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Perhatikan bagaimana ,
fungsi sebagai operator OR logis di antara kedua kondisi tersebut.
Menampilkan set entri berikutnya
Jumlah maksimum sumber daya yang dapat dikembalikan sekaligus dari kueri pencarian adalah 1000. Namun, Anda mungkin memiliki lebih dari 1.000 instans sumber daya yang cocok dengan kueri pencarian, dan Anda ingin mengambil kumpulan hasil berikutnya setelah 1.000 entri pertama. Dalam hal ini, Anda akan menggunakan nilai token url
kelanjutan (yaitu, "next"
) dalam searchset
bundel yang dikembalikan dari pencarian sebagai berikut.
"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"
}
],
Anda akan membuat GET
permintaan untuk URL yang disediakan:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Ini mengembalikan serangkaian entri berikutnya untuk hasil pencarian Anda. Bundel searchset
adalah kumpulan lengkap entri hasil pencarian, dan token url
kelanjutan adalah tautan yang disediakan oleh layanan FHIR untuk mengambil entri yang tidak cocok di subset pertama (karena pembatasan jumlah maksimum entri yang dikembalikan untuk satu halaman).
Mencari menggunakan POST
Semua contoh pencarian yang disebutkan di sini menggunakan GET
permintaan. Namun, Anda juga dapat melakukan panggilan API pencarian FHIR menggunakan POST
dengan _search
parameter sebagai berikut.
POST {{FHIR_URL}}/Patient/_search?_id=45
Permintaan ini mengembalikan instans Patient
sumber daya dengan nilai yang diberikan id
. GET
Seperti halnya permintaan, server menentukan instans sumber daya mana yang memenuhi kondisi dan mengembalikan bundel dalam respons HTTP.
Fitur lain dari pencarian dengan POST
adalah memungkinkan Anda mengirimkan parameter kueri sebagai isi formulir.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Langkah berikutnya
Dalam artikel ini, Anda belajar tentang mencari di FHIR menggunakan parameter pencarian, pengubah, dan metode lainnya. Untuk informasi selengkapnya tentang pencarian FHIR, lihat