Halaman ini menjelaskan opsi untuk menyimpan data FHIR dalam jumlah besar di Cloud Healthcare API.
Mengimpor resource FHIR
Gunakan metode fhirStores.import
untuk memuat resource FHIR dari Cloud Storage ke Cloud Healthcare API.
Metode ini berfungsi optimal saat memuat data ke penyimpanan FHIR kosong tanpa gangguan
dari aplikasi lain.
Untuk memanggil fhirStores.import
, baca artikel Mengimpor dan mengekspor resource FHIR menggunakan Cloud Storage.
Pertimbangkan properti metode fhirStores.import
berikut saat memutuskan apakah akan menggunakannya. Jika fhirStores.import
tidak cocok
untuk aplikasi Anda, pertimbangkan untuk menggunakan
metode fhir.executeBundle
untuk memuat data. Untuk mengetahui informasi cara memanggil fhir.executeBundle
, lihat
Mengelola resource FHIR menggunakan paket FHIR.
- Metode
fhirStores.import
menerima paket yang lebih besar dari batas 50 MB padafhir.executeBundle
. Namun, ukuran setiap resource individual dalam paket dibatasi hingga 10 MB. Menggunakan
fhirStores.import
akan menghilangkan kerumitan dalam menjalankan paket FHIR besar, seperti berikut:- Memecah paket FHIR menjadi paket-paket yang lebih kecil
- Mengelola beberapa jadwal paket
- Mengelola error sementara yang dapat dicoba lagi di tingkat resource atau paket
Sering kali, keuntungan ini lebih besar daripada keuntungan menggunakan paket.
Setiap resource dalam input harus berisi ID yang disediakan klien. Setiap resource disimpan menggunakan ID yang diberikan, terlepas dari setelan
enableUpdateCreate
di penyimpanan FHIR.Proses impor tidak menerapkan integritas referensial, terlepas dari setelan
disableReferentialIntegrity
di penyimpanan FHIR. Dengan tidak menerapkan integritas referensial, Anda dapat mengimpor resource dengan interdependensi arbitrer tanpa mempertimbangkan pengelompokan atau pengurutan. Jika data input berisi referensi yang tidak valid atau jika beberapa resource gagal diimpor, status penyimpanan FHIR mungkin melanggar integritas referensial.Jika resource dengan ID yang diberikan sudah ada di toko, versi terbaru resource akan ditimpa tanpa membuat versi historis baru. Penimpaan terjadi terlepas dari setelan
disableResourceVersioning
di penyimpanan FHIR. Jika terjadi kegagalan sementara selama impor, resource yang berhasil diimpor dapat ditimpa lebih dari sekali.Operasi impor bersifat idempoten kecuali jika data input berisi beberapa resource yang valid dengan ID yang sama tetapi dengan konten yang berbeda. Dalam hal ini, setelah impor selesai, penyimpanan akan berisi tepat satu resource dengan setiap ID, tetapi entri duplikat dapat berisi versi konten apa pun. Misalnya, mengimpor satu juta resource dengan ID yang sama hanya akan menulis satu resource ke penyimpanan.
Penghitung hasil operasi tidak menghitung ID duplikat sebagai sebuah kesalahan. Setiap resource dalam input akan dihitung sebagai satu keberhasilan. Hal ini dapat mengakibatkan jumlah keberhasilan yang lebih besar daripada jumlah resource di penyimpanan FHIR. Hal ini sering terjadi saat mengimpor data yang diatur dalam paket yang dihasilkan oleh
Patient-everything
dengan setiap paket berisi salinan resource-nya sendiri, sepertiPractitioner
, yang mungkin dirujuk oleh banyak resource Pasien.Jika beberapa resource gagal diimpor, seperti karena error penguraian, resource yang berhasil diimpor tidak akan di-roll back. Misalnya, jika 5 dari 100 resource gagal diimpor, 95 resource yang tersisa akan diimpor ke penyimpanan FHIR.
Saat menggunakan format
BUNDLE
, metode impor akan menolak paket denganBundle.type
darihistory
. Metode impor tidak menerapkan semantik pemrosesan paket untuk paket batch atau transaksi. Tidak seperti difhir.executeBundle
, paket transaksi tidak dijalankan sebagai transaksi tunggal dan referensi internal paket tidak ditulis ulang. Paket diperlakukan sebagai kumpulan resource yang akan ditulis seperti yang disediakan diBundle.entry.resource
, dengan mengabaikanBundle.entry.request
. Misalnya, hal ini memungkinkan impor paket set penelusuran yang dihasilkan oleh penelusuran FHIR atau operasiPatient-everything
.
Menggunakan paket FHIR
Lihat paket FHIR untuk mengetahui ringkasan paket FHIR.
Kapan paket FHIR digunakan
Pertimbangkan karakteristik dan keuntungan menggunakan metode fhir.executeBundle
berikut saat memutuskan apakah akan menggunakannya untuk menyimpan resource FHIR:
- Jika biayanya terlalu mahal, baik dalam hal biaya penagihan maupun bandwidth jaringan, untuk mem-build pipeline yang menyimpan data di Cloud Storage, lalu mengimpor data menggunakan
fhirStores.import
, gunakanfhir.executeBundle
. - Saat menjalankan paket, integritas transaksi dapat diterapkan.
- Saat menjalankan paket, validasi profil FHIR dapat diterapkan.
- Jika Anda perlu mengirim notifikasi Pub/Sub
saat FHIR membuat, mengupdate, atau menghapus operasi, gunakan
fhir.executeBundle
. Notifikasi Pub/Sub tidak dikirim saat resource FHIR diimpor menggunakanfhirStores.import
. - Jika waktu pemrosesan resource FHIR tertentu adalah dalam
detik atau menit, gunakan
fhir.executeBundle
. Jika waktu pemrosesan resource FHIR tertentu adalah dalam jam atau hari, gunakanfhirStores.import
. - Jika project Google Cloud Anda memiliki banyak operasi jangka panjang (LRO) yang menjalankan tugas lain, Anda mungkin akan mendapatkan performa yang lebih baik dengan
fhir.executeBundle
dibandingkanfhirStores.import
. Jika aplikasi yang mengelola operasi
fhirStores.import
tidak memiliki strategi yang baik untuk hal berikut, gunakanfhir.executeBundle
:- Menangani error massal
- Mengatasi kegagalan pada sebagian resource FHIR atau seluruh batch
Kapan paket FHIR tidak boleh digunakan
Pertimbangkan batasan fhir.executeBundle
berikut saat menentukan apakah akan menggunakannya untuk menyimpan resource FHIR:
Paket memiliki kuota dan penagihan setara yang diterapkan ke operasi di dalam paket seolah-olah operasi dijalankan di luar paket. Misalnya, jika paket memiliki 10 operasi
POST
, 5 operasiGET
, dan 1 operasiDELETE
, kuota dan penagihan yang diterapkan pada paket sama seolah-olah operasi tersebut dijalankan secara independen.Dengan demikian, tujuan untuk mengurangi batas kuota dan biaya operasi FHIR bukanlah alasan untuk menggunakan paket, bukan
fhirStores.import
.Paket transaksi besar mungkin lebih cenderung memiliki konflik transaksi yang menyebabkan pertentangan data dan kegagalan operasi. Untuk mengetahui informasi tentang bagaimana masalah ini dapat terjadi dan cara menyelesaikannya, lihat Mencegah error
429 Resource Exhausted operation_too_costly
.Anda dapat mencapai dan mempertahankan throughput data yang tinggi menggunakan paket batch, yang membantu Anda menghindari pertentangan data. Namun, paket batch tidak memiliki kemampuan konsistensi transaksional, seperti integritas referensial
Jika paket berukuran besar, meskipun berupa paket batch, Anda mungkin mengalami penurunan throughput data. Untuk informasi selengkapnya, lihat Menghindari paket transaksi berukuran besar.