Kemampuan FHIR REST API untuk Azure API untuk FHIR

Dalam artikel ini, kita akan membahas beberapa nuansa interaksi RESTful azure API untuk FHIR.

Pembuatan/pembaruan bersyarah

Azure API untuk FHIR mendukung pembuatan, pembuatan bersyarkat, pembaruan, dan pembaruan bersyarah seperti yang didefinisikan oleh spesifikasi FHIR. Salah satu header yang berguna dalam skenario ini adalah header If-Match . Header If-Match digunakan dan akan memvalidasi versi yang diperbarui sebelum membuat pembaruan. ETag Jika tidak cocok dengan yang diharapkan ETag, itu akan menghasilkan pesan kesalahan 412 Prasyarat Gagal.

Hapus dan Hapus Bersyarah

Azure API untuk FHIR menawarkan dua jenis penghapusan. Ada Hapus, yang juga dikenal sebagai Hard + Soft Delete, dan Conditional Delete.

Hapus (Penghapusan Sementara + Keras)

Penghapusan yang ditentukan oleh spesifikasi FHIR mengharuskan setelah menghapus sumber daya, bacaan spesifik non-versi sumber daya berikutnya mengembalikan kode status HTTP 410. Oleh karena itu, sumber daya tidak lagi ditemukan melalui pencarian. Selain itu, Azure API untuk FHIR memungkinkan Anda menghapus sepenuhnya (termasuk semua riwayat) sumber daya. Untuk menghapus sumber daya sepenuhnya, Anda dapat meneruskan pengaturan hardDelete parameter ke true (DELETE {{FHIR_URL}}/{resource}/{id}?hardDelete=true). Jika Anda tidak meneruskan parameter ini atau mengatur hardDelete ke false, versi historis sumber daya akan tetap tersedia.

Catatan

Jika Anda hanya ingin menghapus riwayat, Azure API untuk FHIR mendukung operasi kustom yang disebut $purge-history. Operasi ini memungkinkan Anda menghapus riwayat dari sumber daya.

Penghapusan Bersyarah

Penghapusan Bersyarah memungkinkan Anda meneruskan kriteria pencarian untuk menghapus sumber daya. Secara default, Penghapusan Bersyarah memungkinkan Anda menghapus satu item pada satu waktu. Anda juga dapat menentukan _count parameter untuk menghapus hingga 100 item sekaligus. Di bawah ini adalah beberapa contoh penggunaan Penghapusan Bersyarah.

Untuk menghapus satu item menggunakan Penghapusan Bersyarah, Anda harus menentukan kriteria pencarian yang mengembalikan satu item.

DELETE https://{{FHIR_URL}}/Patient?identifier=1032704

Anda dapat melakukan pencarian yang sama tetapi menyertakan hardDelete=true untuk juga menghapus semua riwayat.

DELETE https://{{FHIR_URL}}/Patient?identifier=1032704&hardDelete=true

Untuk menghapus beberapa sumber daya, sertakan _count=100 parameter . Parameter ini akan menghapus hingga 100 sumber daya yang cocok dengan kriteria pencarian.

DELETE https://{{FHIR_URL}}/Patient?identifier=1032704&_count=100

Pemulihan file yang dihapus

Jika Anda tidak menggunakan parameter penghapusan keras, rekaman di Azure API untuk FHIR seharusnya masih ada. Rekaman dapat ditemukan dengan melakukan pencarian riwayat pada sumber daya dan mencari versi terakhir dengan data.

Jika ID sumber daya yang dihapus diketahui, gunakan pola URL berikut:

<FHIR_URL>/<resource-type>/<resource-id>/_history

Misalnya: https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/123456789/_history

Jika ID sumber daya tidak diketahui, lakukan pencarian riwayat pada seluruh jenis sumber daya:

<FHIR_URL>/<resource-type>/_history

Misalnya: https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/_history

Setelah Anda menemukan rekaman yang ingin Anda pulihkan, gunakan PUT operasi untuk membuat ulang sumber daya dengan ID yang sama, atau gunakan POST operasi untuk membuat sumber daya baru dengan informasi yang sama.

Catatan

Tidak ada kedaluwarsa berbasis waktu untuk data riwayat/penghapusan sementara. Satu-satunya cara untuk menghapus riwayat/data yang dihapus sementara adalah dengan penghapusan permanen atau operasi riwayat penghapusan menyeluruh.

Patch dan Patch Kondisional

Patch adalah operasi RESTful yang berharga ketika Anda hanya perlu memperbarui sebagian dari sumber daya FHIR. Menggunakan patch memungkinkan Anda menentukan elemen yang ingin Anda perbarui di sumber daya tanpa harus memperbarui seluruh rekaman. FHIR mendefinisikan tiga cara untuk Menambal sumber daya: JSON Patch, XML Patch, dan FHIRPath Patch. Layanan FHIR mendukung Patch JSON dan Patch FHIRPath bersama dengan Patch JSON Kondisional dan Patch FHIRPath Kondisional (yang memungkinkan Anda untuk Patch sumber daya berdasarkan kriteria pencarian alih-alih ID sumber daya). Untuk menelusuri beberapa contoh, lihat sampel file FHIRPath Patch REST dan file JSON Patch REST untuk setiap pendekatan. Untuk detail tambahan, baca dokumentasi HL7 untuk operasi patch dengan FHIR.

Catatan

Saat menggunakan PATCH terhadap STU3, dan jika Anda meminta bundel Riwayat, sumber daya Bundle.entry.request.method yang di-patch dipetakan ke PUT. Ini karena STU3 tidak berisi definisi untuk PATCH kata kerja dalam kumpulan nilai HTTPVerb.

Patch dengan Patch FHIRPath

Metode patch ini adalah yang paling kuat karena memanfaatkan FHIRPath untuk memilih elemen mana yang akan ditargetkan. Salah satu skenario umum adalah menggunakan FHIRPath Patch untuk memperbarui elemen dalam daftar tanpa mengetahui urutan daftar. Misalnya, jika Anda ingin menghapus informasi telekomunikasi rumah pasien tanpa mengetahui indeks, Anda dapat menggunakan contoh di bawah ini.

PATCH http://{FHIR-SERVICE-HOST-NAME}/Patient/{PatientID}
Tipe isi: application/fhir+json

{
    "resourceType": "Parameters",
    "parameter": [
        {
            "name": "operation",
            "part": [
                {
                    "name": "type",
                    "valueCode": "delete"
                },
                {
                    "name": "path",
                    "valueString": "Patient.telecom.where(use = 'home')"
                }
            ]
        }
    ]
}

Setiap operasi Patch FHIRPath harus memiliki application/fhir+json kumpulan header Jenis Konten. FHIRPatch Patch mendukung operasi tambahkan, sisipkan, hapus, hapus, dan pindahkan. Operasi Patch FHIRPatch juga dapat dengan mudah diintegrasikan ke dalam Bundel. Untuk contoh selengkapnya, lihat sampel file FHIRPath Patch REST.

Patch dengan JSON Patch

Patch JSON dalam Layanan FHIR sesuai dengan spesifikasi yang digunakan dengan baik yang ditentukan oleh Internet Engineering Task Force. Format payload tidak menggunakan sumber daya FHIR dan sebaliknya menggunakan dokumen JSON yang memanfaatkan JSON-Pointers untuk pemilihan elemen. JSON Patch lebih ringkas dan memiliki operasi pengujian yang memungkinkan Anda memvalidasi bahwa kondisi benar sebelum melakukan patch. Misalnya, jika Anda ingin menetapkan pasien sebagai meninggal hanya jika belum ditandai sebagai sudah meninggal, Anda dapat menggunakan contoh di bawah ini.

PATCH http://{FHIR-SERVICE-HOST-NAME}/Patient/{PatientID}
Tipe isi: application/json-patch+json

[
	{
		"op": "test",
		"path": "/deceasedBoolean",
		"value": false
	},
	{
		"op": "replace",
		"path": "/deceasedBoolean",
		"value": true
	}
]

Setiap operasi Patch JSON harus memiliki application/json-patch+json kumpulan header Jenis Konten. JSON Patch mendukung operasi tambahkan, hapus, ganti, salin, pindahkan, dan uji. Untuk contoh selengkapnya, lihat contoh file JSON Patch REST.

Patch JSON dalam Bundel

Secara default, Patch JSON tidak didukung dalam sumber daya Bundel. Ini karena Bundel hanya mendukung dengan sumber daya FHIR dan payload Patch JSON bukan sumber daya FHIR. Untuk mengatasi hal ini, kita akan menggunakan sumber daya Biner dengan Jenis Konten dan pengodean "application/json-patch+json" base64 payload JSON di dalam Bundel. Untuk informasi tentang solusi ini, lihat topik ini di FHIR Chat Zulip.

Dalam contoh di bawah ini, kami ingin mengubah jenis kelamin pada pasien menjadi wanita. Kami telah mengambil patch [{"op":"replace","path":"/gender","value":"female"}] JSON dan mengodekannya ke base64.

POSTING https://{FHIR-SERVICE-HOST-NAME}/
Jenis-Konten: application/json

{
	"resourceType": "Bundle",
	"id": "bundle-batch",
	"type": "batch",
	"entry": [
		{
			"fullUrl": "Patient/{PatientID}",
			"resource": {
				"resourceType": "Binary",
				"contentType": "application/json-patch+json",
				"data": "W3sib3AiOiJyZXBsYWNlIiwicGF0aCI6Ii9nZW5kZXIiLCJ2YWx1ZSI6ImZlbWFsZSJ9XQ=="
			},
			"request": { 
				"method": "PATCH",
				"url": "Patient/{PatientID}"
			}
		}
	]
}

Langkah berikutnya

Dalam artikel ini, Anda mempelajari tentang beberapa kemampuan REST Azure API untuk FHIR. Selanjutnya, Anda dapat mempelajari lebih lanjut tentang aspek utama untuk mencari sumber daya di FHIR.

(FHIR®) adalah merek dagang terdaftar dari HL7dan digunakan dengan izin HL7.