Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memodifikasi Sumber Daya dengan Operasi PATCH
AWS HealthLake mendukung operasi PATCH untuk sumber daya FHIR, memungkinkan Anda untuk memodifikasi sumber daya dengan menargetkan elemen tertentu untuk menambah, mengganti, atau menghapus tanpa memperbarui seluruh sumber daya. Operasi ini sangat berguna ketika Anda perlu:
-
Buat pembaruan yang ditargetkan ke sumber daya besar
-
Mengurangi penggunaan bandwidth jaringan
-
Lakukan modifikasi atom pada elemen sumber daya tertentu
-
Meminimalkan risiko penimpaan perubahan bersamaan
-
Perbarui sumber daya sebagai bagian dari alur kerja batch dan transaksi
Format PATCH yang Didukung
AWS HealthLake mendukung dua format PATCH standar:
Tambalan JSON (RFC 6902)
Menggunakan sintaks JSON Pointer untuk menargetkan elemen dengan posisi mereka dalam struktur sumber daya.
Tipe Konten: application/json-patch+json
FHIRPath Patch (Spesifikasi FHIR R4)
Menggunakan FHIRPath ekspresi untuk menargetkan elemen berdasarkan konten dan hubungannya, memberikan pendekatan asli FHIR untuk menambal.
Tipe Konten: application/fhir+json
Penggunaan
Operasi PATCH Langsung
Operasi PATCH dapat dipanggil langsung pada sumber daya FHIR menggunakan metode PATCH HTTP:
PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}
PATCH dalam Bundel
Operasi PATCH dapat dimasukkan sebagai entri dalam FHIR Bundle jenis batch atautransaction, memungkinkan Anda untuk menggabungkan operasi patch dengan interaksi FHIR lainnya (membuat, membaca, memperbarui, menghapus) dalam satu permintaan.
-
Bundel transaksi: Semua entri berhasil atau gagal secara atom
-
Bundel Batch: Setiap entri diproses secara independen
Format Patch JSON
Operasi yang Didukung
| Operasi | Deskripsi |
|---|---|
add |
Tambahkan nilai baru ke sumber daya |
remove |
Hapus nilai dari sumber daya |
replace |
Ganti nilai yang ada di sumber daya |
move |
Hapus nilai dari satu lokasi dan tambahkan ke lokasi lain |
copy |
Salin nilai dari satu lokasi ke lokasi lain |
test |
Uji bahwa nilai di lokasi target sama dengan nilai yang ditentukan |
Sintaks Path
JSON Patch menggunakan sintaks JSON Pointer (RFC 6901):
| Contoh Jalur | Deskripsi |
|---|---|
/name/0/family |
Elemen keluarga nama depan |
/telecom/- |
Tambahkan ke array telekomunikasi |
/active |
Elemen aktif tingkat akar |
/address/0/line/1 |
Baris kedua dari alamat pertama |
Contoh
Permintaan Patch JSON Langsung dengan Beberapa Operasi
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
If-Match: W/"1"
[
{
"op": "replace",
"path": "/name/0/family",
"value": "Smith"
},
{
"op": "add",
"path": "/telecom/-",
"value": {
"system": "phone",
"value": "555-555-5555",
"use": "home"
}
},
{
"op": "remove",
"path": "/address/0"
},
{
"op": "move",
"from": "/name/0/family",
"path": "/name/1/family"
},
{
"op": "test",
"path": "/gender",
"value": "male"
},
{
"op": "copy",
"from": "/name/0",
"path": "/name/1"
}
]
Permintaan Patch JSON Langsung dengan Operasi Tunggal
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
[
{
"op": "replace",
"path": "/active",
"value": false
}
]
JSON Patch dalam Bundel
Gunakan sumber daya Biner yang berisi payload JSON Patch yang disandikan base64:
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [{
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ=="
},
"request": {
"method": "PATCH",
"url": "Patient/123"
}
}]
}
FHIRPath Format Patch
Operasi yang Didukung
| Operasi | Deskripsi |
|---|---|
add |
Tambahkan elemen baru ke sumber daya |
insert |
Menyisipkan elemen pada posisi tertentu dalam daftar |
delete |
Hapus elemen dari sumber daya |
replace |
Ganti nilai elemen yang ada |
move |
Menyusun ulang elemen dalam daftar |
Sintaks Path
FHIRPath Patch menggunakan FHIRPath ekspresi, mendukung:
-
Akses berbasis indeks:
Patient.name[0] -
Penyaringan dengan
where():Patient.name.where(use = 'official') -
Logika Boolean:
Patient.telecom.where(system = 'phone' and use = 'work') -
Fungsi subsetting:
first(),last() -
Pemeriksaan keberadaan:
exists(),count() -
Navigasi polimorfik:
Observation.value
Contoh
Permintaan FHIRPath Patch Langsung
PATCH [base]/Patient/123
Content-Type: application/fhir+json
Authorization: ...
{
"resourceType": "Parameters",
"parameter": [{
"name": "operation",
"part": [
{ "name": "type", "valueCode": "add" },
{ "name": "path", "valueString": "Patient" },
{ "name": "name", "valueString": "birthDate" },
{ "name": "value", "valueDate": "1990-01-01" }
]
}]
}
FHIRPath Patch dalam Bundel
Gunakan sumber daya Parameter sebagai sumber daya entri denganmethod: PATCH:
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [{
"resource": {
"resourceType": "Parameters",
"parameter": [{
"name": "operation",
"part": [
{ "name": "type", "valueCode": "add" },
{ "name": "path", "valueString": "Patient" },
{ "name": "name", "valueString": "birthDate" },
{ "name": "value", "valueDate": "1990-01-01" }
]
}]
},
"request": {
"method": "PATCH",
"url": "Patient/123"
}
}]
}
Header Permintaan
| Header | Diperlukan | Deskripsi |
|---|---|---|
Content-Type |
Ya | application/json-patch+jsonuntuk JSON Patch atau application/fhir+json untuk FHIRPath Patch |
If-Match |
Tidak | Pembaruan bersyarat khusus versi menggunakan ETag |
Contoh Respons
Operasi mengembalikan sumber daya yang diperbarui dengan informasi versi baru:
HTTP/1.1 200 OK
Content-Type: application/fhir+json
ETag: W/"2"
Last-Modified: Mon, 05 May 2025 10:10:10 GMT
{
"resourceType": "Patient",
"id": "example",
"active": true,
"name": [
{
"family": "Smith",
"given": ["John"]
}
],
"telecom": [
{
"system": "phone",
"value": "555-555-5555",
"use": "home"
}
],
"meta": {
"versionId": "2",
"lastUpdated": "2025-05-05T10:10:10Z"
}
}
Perilaku
Operasi PATCH:
-
Memvalidasi sintaks patch sesuai dengan spesifikasi yang sesuai (RFC 6902 untuk JSON Patch, FHIR R4 untuk Patch) FHIRPath
-
Menerapkan operasi secara atom - semua operasi berhasil atau semuanya gagal
-
Memperbarui ID versi sumber daya dan membuat entri riwayat baru
-
Mempertahankan sumber daya asli dalam sejarah sebelum menerapkan perubahan
-
Memvalidasi kendala sumber daya FHIR setelah menerapkan tambalan
-
Mendukung pembaruan bersyarat menggunakan header If-Match dengan ETag
Penanganan Kesalahan
Operasi menangani kondisi kesalahan berikut:
-
400 Permintaan Buruk: Sintaks tambalan tidak valid (permintaan tidak sesuai atau dokumen tambalan yang salah)
-
404 Tidak Ditemukan: Sumber daya tidak ditemukan (ID tertentu tidak ada)
-
409 Konflik: Konflik versi (pembaruan bersamaan atau ID versi tidak saat ini disediakan)
-
422 Entitas yang Tidak Dapat Diproses: Operasi tambalan tidak dapat diterapkan ke elemen sumber daya yang ditentukan
Kesimpulan dari Capabilities
| Kemampuan | Tambalan JSON | FHIRPath Patch |
|---|---|---|
| Jenis Konten | application/json-patch+json |
application/fhir+json |
| Format Jalur | Penunjuk JSON (RFC 6901) | FHIRPath ekspresi |
| API PATCH langsung | Didukung | Didukung |
| Bundel Batch | Didukung (melalui Biner) | Didukung (melalui Parameter) |
| Transaksi Bundel | Didukung (melalui Biner) | Didukung (melalui Parameter) |
| Operasi | tambahkan, hapus, ganti, pindahkan, salin, uji | tambahkan, masukkan, hapus, ganti, pindahkan |
Batasan
-
Operasi PATCH bersyarat menggunakan kondisi pencarian tidak didukung
-
JSON Patch dalam bundel harus menggunakan sumber daya Biner dengan konten yang disandikan base64
-
FHIRPath Patch dalam bundel harus menggunakan sumber daya Parameter
Sumber Daya Tambahan
Untuk informasi selengkapnya tentang operasi PATCH, lihat: