View a markdown version of this page

Memodifikasi Sumber Daya dengan Operasi PATCH - AWS HealthLake

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: