Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menggunakan operasi import untuk memasukkan data FHIR® ke server FHIR dengan throughput tinggi. Operasi impor memungkinkan impor data FHIR dalam format NDJSON ke server FHIR.
Mode operasi impor
Operasi ini import mendukung dua mode: awal dan inkremental. Setiap mode memiliki fitur dan kasus penggunaan yang berbeda.
Mode awal
Ditujukan untuk memuat sumber daya FHIR ke server FHIR kosong.
Memblokir penulisan API ke server FHIR.
Mode bertahap
Dioptimalkan untuk memuat data ke server FHIR secara berkala dan tidak memblokir penulisan melalui API.
Memungkinkan Anda memuat nilai
lastUpdateddanversionIddari metadata sumber daya jika nilai tersebut ada di JSON sumber daya.Memungkinkan Anda memuat sumber daya dalam urutan versi yang tidak berurutan. Catatan untuk penyerapan sumber daya yang tidak berurutan
- Jika file impor tidak memiliki nilai bidang
versiondanlastUpdatedyang ditentukan, tidak ada jaminan bahwa semua sumber daya dalam layanan FHIR dapat diimpor. - Jika berkas impor memiliki sumber daya dengan nilai duplikat pada bidang
versiondanlastUpdated, hanya satu sumber daya yang diproses secara acak dalam layanan FHIR. - Selama eksekusi paralel, jika beberapa sumber daya memiliki ID sumber daya yang sama, hanya salah satu sumber daya yang diimpor secara acak.
- Jika file impor tidak memiliki nilai bidang
Tabel berikut ini memperlihatkan perbedaan antara mode impor.
| Wilayah | Mode awal | Mode bertahap |
|---|---|---|
| Kemampuan | Muatan awal data ke dalam layanan FHIR | Penyerapan data berkelanjutan ke layanan FHIR (Bertahap atau Hampir Real-Time). |
| Panggilan API bersamaan | Memblokir operasi tulis bersamaan | Data dapat diserap secara bersamaan saat menjalankan operasi CRUD API di server FHIR. |
| Penyerapan sumber daya versi | Tidak didukung, hanya versi terbaru yang dipertahankan, dan lastUpdated diatur ke waktu impor | Supported. Memungkinkan penyerapan beberapa versi sumber daya FHIR dalam satu batch sambil mempertahankan riwayat sumber daya dan nilai lastUpdated asli. Catatan: Gunakan mode impor bertahap jika Anda perlu mempertahankan versi historis atau mempertahankan tanda waktu lastUpdated asli |
| Pertahankan nilai kolom lastUpdated | Tidak didukung | Pertahankan nilai bidang lastUpdated di sumber daya FHIR selama proses penyerapan. |
| Penagihan | Tidak dikenakan biaya apa pun | Dikenakan biaya berdasarkan sumber daya yang berhasil diserap. Biaya dikenakan per harga API. |
Pertimbangan performa
Untuk mencapai performa terbaik dengan import operasi, pertimbangkan faktor-faktor berikut.
Gunakan file besar untuk diimpor. Ukuran file NDJSON optimal untuk impor adalah >=50 MB (atau >sumber daya =20 K, tanpa batas atas). Pertimbangkan untuk menggabungkan file yang lebih kecil bersama-sama.
Impor file sumber daya FHIR sebagai satu kumpulan. Untuk performa optimal, impor semua file sumber daya FHIR yang ingin Anda serap di server FHIR dalam satu
importoperasi. Mengimpor semua file dalam satu operasi mengurangi overhead pembuatan dan pengelolaan beberapa pekerjaan impor. Secara optimal, ukuran total file dalam satu impor harus besar (>=100 GB atau >sumber daya =100M, tanpa batas atas).Batasi jumlah pekerjaan impor paralel. Anda dapat menjalankan beberapa
importpekerjaan secara bersamaan, tetapi ini dapat memengaruhi keseluruhan throughput operasiimport.
Untuk mencapai throughput tinggi,import operasi dilakukan menggunakan infrastruktur komputasi terdistribusi. Ini membagi file input dalam unit data dan memproses unit ini secara paralel dan independen satu sama lain.
Melakukan operasi impor
Prasyarat
Untuk menggunakan
importoperasi ini, Anda memerlukan peran Pengimpor Data FHIR di server FHIR.Konfigurasikan server FHIR. Data FHIR harus disimpan dalam file khusus sumber daya dalam format FHIR NDJSON di penyimpanan blob Azure. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan impor.
Data harus berada di penyewa yang sama dengan layanan FHIR.
Untuk mendapatkan token akses, lihat Token Akses
Menghubungi
Lakukan POST panggilan ke <<FHIR service base URL>>/$import dengan header dan isi permintaan berikut.
Tajuk permintaan
Prefer:respond-async
Content-Type:application/fhir+json
Tubuh
Tabel-tabel berikut menjelaskan parameter badan dan input.
| Nama Parameter | Deskripsi | Kardinalitas | Nilai yang diterima |
|---|---|---|---|
inputFormat |
String yang mewakili nama format sumber data. Hanya file FHIR NDJSON yang didukung. | 1..1 | application/fhir+ndjson |
mode |
Nilai opsi impor. | 1..1 | Untuk impor dalam mode awal, gunakan nilai mode InitialLoad. Untuk mode impor inkremental, gunakan nilai untuk mode IncrementalLoad. Jika Anda tidak memberikan nilai mode, IncrementalLoad nilai mode digunakan secara default. |
allowNegativeVersions |
Memungkinkan server FHIR menetapkan versi negatif untuk rekaman sumber daya dengan nilai lastUpdated eksplisit dan tidak ada versi yang ditentukan ketika input tidak cocok dalam ruang yang berdekatan dari versi positif yang ada di penyimpanan. | 0..1 | Untuk mengaktifkan fitur ini, berikan true. Secara default, ini salah. |
errorContainerName |
String yang mewakili nama kontainer tempat kesalahan ditemui selama proses impor akan dicatat. | 0..1 | Nama kontainer kustom untuk log kesalahan. Nama harus antara 3-63 karakter dan hanya berisi huruf kecil, angka, dan tanda hubung. Jika tidak ditentukan, kontainer default akan digunakan. |
input |
Rincian dari file-file input. | 1..* | Array JSON dengan tiga bagian yang dijelaskan dalam tabel berikut. |
| Nama bagian input | Deskripsi | Kardinalitas | Nilai yang diterima |
|---|---|---|---|
type |
Jenis sumber daya file input. | 0..1 | Jenis sumber daya FHIR yang valid yang cocok dengan file input. Bidang ini bersifat opsional. |
url |
URL penyimpanan Azure dari file input. | 1..1 | Nilai URL file input. Nilai tidak dapat dimodifikasi. |
etag |
ETag dari berkas masukan di penyimpanan Azure. Digunakan untuk memverifikasi bahwa konten file tidak diubah setelah import pendaftaran. |
0..1 | Nilai ETag untuk file masukan. |
{
"resourceType": "Parameters",
"parameter": [
{
"name": "inputFormat",
"valueString": "application/fhir+ndjson"
},
{
"name": "mode",
"valueString": "<Use "InitialLoad" for initial mode import / Use "IncrementalLoad" for incremental mode import>"
},
{
"name": "allowNegativeVersions",
"valueBoolean": true
},
{
"name": "errorContainerName",
"valueString": "import-error-logs"
},
{
"name": "input",
"part": [
{
"name": "url",
"valueUri": "https://example.blob.core.windows.net/resources/filename.ndjson"
},
{
"name": "etag",
"valueUri": "\"0x8D92A7342657F4F\""
}
]
}
]
}
Memeriksa status impor
Setelah Anda memulai operasi import, isi respons kosong dengan tautan callback dikembalikan pada Content-location header respons, bersama dengan kode status 202 Accepted.
callback Simpan tautan untuk memeriksa status impor.
Pendaftaran operasi import diimplementasikan sebagai panggilan idempoten. Payload pendaftaran yang sama menghasilkan pendaftaran yang sama, yang memengaruhi kemampuan untuk memproses ulang file dengan nama yang sama. Hindari memperbarui file secara langsung. Sebagai gantinya, kami sarankan Anda menggunakan nama file yang berbeda untuk data yang diperbarui. Atau, jika pembaruan di tempat dengan nama file yang sama tidak dapat dihindari, tambahkan ETags pada payload pendaftaran.
Untuk memeriksa status impor, lakukan panggilan REST dengan metode GET ke tautan callback yang dikembalikan di langkah sebelumnya.
Menginterpretasikan respons dengan menggunakan tabel ini.
| Kode respons | Badan respons | Deskripsi |
|---|---|---|
202 Accepted |
Operasi masih berjalan. | |
200 OK |
The response body doesn't contain any error.url entry |
Semua sumber daya berhasil diimpor. |
200 OK |
The response body contains some error.url entry |
Terjadi kesalahan selama impor beberapa sumber daya. Untuk detailnya, lihat file yang terletak di error.url. Sumber daya yang tersisa berhasil diimpor. |
Other |
Terjadi kesalahan fatal dan operasi berhenti. Sumber daya yang berhasil diimpor tidak digulung balik. |
Tabel berikut ini menjelaskan bidang penting dalam isi respons:
| Bidang | Deskripsi |
|---|---|
transactionTime |
Waktu mulai operasi massal import . |
output.count |
Jumlah sumber daya yang berhasil diimpor. |
error.count |
Jumlah sumber daya yang tidak diimpor karena kesalahan. |
error.url |
URL file yang berisi detail kesalahan. Setiap error.url instans unik untuk URL input. |
{
"transactionTime": "2021-07-16T06:46:52.3873388+00:00",
"request": "https://importperf.azurewebsites.net/$Import",
"output": [
{
"type": <null in case type parameter in not populated in request. If provided, resource name will be added>,
"count": 10000,
"inputUrl": "https://example.blob.core.windows.net/resources/filename.ndjson"
}
],
"error": [
{
"type": "OperationOutcome",
"count": 51,
"inputUrl": "https://example.blob.core.windows.net/resources/CarePlan.ndjson",
"url": "https://example.blob.core.windows.net/fhirlogs/CarePlan06b88c6933a34c7c83cb18b7dd6ae3d8.ndjson"
}
]
}
Menyerap sumber daya yang dihapus sementara
Impor mode inkremental mendukung penyerapan sumber daya yang dihapus sementara. Anda perlu menggunakan ekstensi untuk mengimpor sumber daya yang dihapus secara lembut dalam layanan FHIR.
Tambahkan ekstensi ke sumber daya untuk menginformasikan layanan FHIR bahwa sumber daya dihapus sementara.
{"resourceType": "Patient", "id": "example10", "meta": { "lastUpdated": "2023-10-27T04:00:00.000Z", "versionId": 4, "extension": [ { "url": "http://azurehealthcareapis.com/data-extensions/deleted-state", "valueString": "soft-deleted" } ] } }
import Setelah operasi berhasil diselesaikan, lakukan pencarian riwayat pada sumber daya untuk memvalidasi sumber daya yang dihapus sementara. Jika Anda mengetahui ID sumber daya yang dihapus, gunakan pola URL dalam contoh berikut.
<FHIR_URL>/<resource-type>/<resource-id>/_history
Jika Anda tidak mengetahui ID sumber daya, lakukan pencarian riwayat pada jenis sumber daya.
<FHIR_URL>/<resource-type>/_history
Memecahkan masalah operasi impor
Berikut adalah pesan kesalahan yang terjadi jika import operasi gagal, bersama dengan tindakan yang direkomendasikan untuk menyelesaikan masalah.
200 OK, tetapi ada kesalahan dengan URL dalam respons
import operasi berhasil dan mengembalikan 200 OK. Namun, error.url hadir dalam isi respons. File yang ada di lokasi error.url mengandung fragmen JSON yang mirip dengan contoh berikut.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"details": {
"text": "Given conditional reference '{0}' doesn't resolve to a resource."
},
"diagnostics": "Failed to process resource at line: {0} with stream start offset: {1}"
}
]
}
Penyebab: File NDJSON berisi sumber daya dengan referensi bersyarat yang import tidak mendukung.
Solusi: Ganti referensi bersyarat ke referensi normal dalam file NDJSON.
400 Permintaan Tidak Valid
Operasi import gagal dan mengembalikan 400 Bad Request. Isi respons berisi konten diagnostik
operasi impor gagal dengan alasan: Tidak ada host yang dikenal. (example.blob.core.windows.net:443) Solusi: Verifikasi bahwa tautan ke penyimpanan Azure sudah benar. Periksa pengaturan jaringan dan firewall untuk memastikan bahwa server FHIR dapat mengakses penyimpanan. Jika layanan Anda berada dalam jaringan virtual, pastikan penyimpanan berada di jaringan virtual yang sama atau di jaringan virtual yang di-peering dengan jaringan virtual layanan FHIR.
Sumber daya SearchParameter tidak dapat diproses dengan impor Solusi: Operasi impor mengembalikan kesalahan HTTP 400 saat sumber daya parameter pencarian diserap melalui proses impor. Perubahan ini dimaksudkan untuk mencegah parameter pencarian ditempatkan dalam status tidak valid saat diserap dengan operasi impor.
403 Dilarang
Operasi import gagal dan mengembalikan 403 Forbidden. Isi respons berisi konten diagnostik.
operasi impor gagal karena alasan: Server gagal mengautentikasi permintaan. Pastikan nilai header Otorisasi dibentuk dengan benar, termasuk tanda tangannya. Penyebab: Layanan FHIR menggunakan identitas terkelola untuk autentikasi penyimpanan sumber. Kesalahan ini menunjukkan penetapan peran yang hilang atau salah. Solusi: Tetapkan peran Kontributor Data Blob Penyimpanan ke server FHIR. Untuk informasi selengkapnya, lihat Menetapkan peran Azure.
Kesalahan Server Internal 500
Operasi import gagal dan mengembalikan 500 Internal Server Error. Isi respons berisi konten diagnostik
operasi impor gagal karena alasan: Database '****' telah mencapai kuota ukurannya. Partisi atau hapus data, hilangkan indeks, atau lihat dokumentasi untuk kemungkinan resolusi.
Penyebab: Anda mencapai batas penyimpanan layanan FHIR.
Solusi: Kurangi ukuran data Anda atau pertimbangkan Azure API untuk FHIR, yang memiliki batas penyimpanan yang lebih tinggi.
423 Terkunci
Perilaku:import Operasi gagal dan mengembalikan 423 Locked. Isi respons mencakup konten ini:
{
"resourceType": "OperationOutcome",
"id": "13876ec9-3170-4525-87ec-9e165052d70d",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "import operation failed for reason: Service is locked for initial import mode."
}
]
}
Sebab: Layanan FHIR dikonfigurasi dengan mode Impor awal yang memblokir operasi lain.
Larutan: Matikan mode Impor awal layanan FHIR, atau pilih Mode bertahap.
Keterbatasan
- Jumlah maksimum file yang diizinkan untuk setiap
importoperasi adalah 10.000. - Jumlah file yang diserap di server FHIR dengan nilai bidang lastUpdated yang sama hingga milidetik tidak boleh melebihi 10.000.
- Operasi impor tidak didukung untuk jenis sumber daya SearchParameter.
- Operasi impor tidak mendukung referensi bersyarat dalam sumber daya.
Langkah berikutnya
Mengonfigurasi pengaturan ekspor dan menyiapkan akun penyimpanan