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.

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. Patients akan sering memiliki satu atau lebih Encounterdengan 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 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 janedoetertentu, 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.

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.