Bagikan melalui


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 Jonatau 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.

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.

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

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

Catatan

FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.