翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
PATCH オペレーションによるリソースの変更
AWS HealthLake は FHIR リソースの PATCH オペレーションをサポートしているため、リソース全体を更新することなく、特定の要素をターゲットにして追加、置換、または削除することで、リソースを変更できます。このオペレーションは、以下が必要な場合に特に役立ちます。
-
大規模なリソースをターゲットに更新する
-
ネットワーク帯域幅の使用量を減らす
-
特定のリソース要素に対してアトミック変更を実行する
-
同時変更を上書きするリスクを最小限に抑える
-
バッチワークフローとトランザクションワークフローの一部としてリソースを更新する
サポートされているパッチ形式
AWS HealthLake は 2 つの標準 PATCH 形式をサポートしています。
JSON パッチ (RFC 6902)
JSON ポインタ構文を使用して、リソース構造内の要素の位置で要素をターゲットにします。
Content-Type: application/json-patch+json
FHIRPath パッチ (FHIR R4 仕様)
FHIRPath 式を使用して、コンテンツと関係によって要素をターゲットにし、パッチ適用に対する FHIR ネイティブアプローチを提供します。
Content-Type: application/fhir+json
使用方法
Direct PATCH オペレーション
PATCH オペレーションは、PATCH HTTP メソッドを使用して FHIR リソースで直接呼び出すことができます。
PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}
バンドル内のパッチ
パッチオペレーションは、タイプ batchまたは の FHIR バンドル内のエントリとして含めることができるためtransaction、1 つのリクエストでパッチオペレーションを他の FHIR インタラクション (作成、読み取り、更新、削除) と組み合わせることができます。
-
トランザクションバンドル: すべてのエントリがアトミックに成功または失敗する
-
バッチバンドル: 各エントリは個別に処理されます
JSON パッチ形式
サポートされているオペレーション
| 運用 | 説明 |
|---|---|
add |
リソースに新しい値を追加する |
remove |
リソースから値を削除する |
replace |
リソース内の既存の値を置き換える |
move |
ある場所から値を削除し、別の場所に追加する |
copy |
ある場所から別の場所に値をコピーする |
test |
ターゲットロケーションの値が指定された値と等しいことをテストする |
パス構文
JSON パッチは JSON ポインタ構文 (RFC 6901) を使用します。
| パスの例 | 説明 |
|---|---|
/name/0/family |
名前のファミリー要素 |
/telecom/- |
テレコム配列に追加 |
/active |
ルートレベルのアクティブ要素 |
/address/0/line/1 |
最初のアドレスの 2 行目 |
例
複数のオペレーションによる直接 JSON パッチリクエスト
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"
}
]
単一のオペレーションによる直接 JSON パッチリクエスト
PATCH [base]/Patient/example
Content-Type: application/json-patch+json
[
{
"op": "replace",
"path": "/active",
"value": false
}
]
バンドルの JSON パッチ
base64 でエンコードされた JSON パッチペイロードを含むバイナリリソースを使用します。
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [{
"resource": {
"resourceType": "Binary",
"contentType": "application/json-patch+json",
"data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ=="
},
"request": {
"method": "PATCH",
"url": "Patient/123"
}
}]
}
FHIRPath パッチ形式
サポートされているオペレーション
| 運用 | 説明 |
|---|---|
add |
リソースに新しい要素を追加する |
insert |
リスト内の特定の位置に要素を挿入する |
delete |
リソースから 要素を削除する |
replace |
既存の要素の値を置き換える |
move |
リスト内の要素の順序を変更する |
パス構文
FHIRPath Patch は、以下をサポートする FHIRPath 式を使用します。
-
インデックスベースのアクセス:
Patient.name[0] -
を使用したフィルタリング
where():Patient.name.where(use = 'official') -
ブールロジック:
Patient.telecom.where(system = 'phone' and use = 'work') -
サブセット関数:
first()、last() -
存在チェック:
exists()、count() -
多形ナビゲーション:
Observation.value
例
Direct FHIRPath パッチリクエスト
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 パッチ
Parameters リソースを のエントリリソースとして使用しますmethod: 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"
}
}]
}
リクエストヘッダー
| ヘッダー | 必要 | 説明 |
|---|---|---|
Content-Type |
はい | application/json-patch+json for JSON パッチまたは application/fhir+json for FHIRPath パッチ |
If-Match |
いいえ | ETag を使用したバージョン固有の条件付き更新 |
レスポンス例
オペレーションは、更新されたリソースに新しいバージョン情報を返します。
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"
}
}
行動
PATCH オペレーション:
-
適切な仕様に従ってパッチ構文を検証します (JSON パッチの場合は RFC 6902、FHIRPath パッチの場合は FHIR R4)
-
オペレーションをアトミックに適用 - すべてのオペレーションが成功または失敗する
-
リソースバージョン ID を更新し、新しい履歴エントリを作成します。
-
変更を適用する前に、元のリソースを履歴に保持します
-
パッチを適用した後、FHIR リソースの制約を検証します
-
ETag で If-Match ヘッダーを使用した条件付き更新をサポート
エラー処理
オペレーションは、次のエラー条件を処理します。
-
400 不正なリクエスト: 無効なパッチ構文 (非準拠のリクエストまたは不正な形式のパッチドキュメント)
-
404 Not Found: リソースが見つかりません (指定された ID は存在しません)
-
409 競合: バージョン競合 (同時更新または以前のバージョン ID の提供)
-
422 未処理のエンティティ: パッチオペレーションを指定されたリソース要素に適用できません
機能の概要
| 機能 | JSON パッチ | FHIRPath パッチ |
|---|---|---|
| コンテンツタイプ | application/json-patch+json |
application/fhir+json |
| パス形式 | JSON ポインタ (RFC 6901) | FHIRPath 式 |
| Direct PATCH API | サポート対象 | サポート |
| バンドルバッチ | サポートされている (バイナリ経由) | サポートされている (パラメータ経由) |
| バンドルトランザクション | サポートされている (バイナリ経由) | サポートされている (パラメータ経由) |
| オペレーション | 追加、削除、置換、移動、コピー、テスト | 追加、挿入、削除、置換、移動 |
制限事項
-
検索条件を使用した条件付き PATCH オペレーションはサポートされていません
-
バンドル内の JSON パッチは、base64 でエンコードされたコンテンツを含むバイナリリソースを使用する必要があります
-
バンドルの FHIRPath パッチは Parameters リソースを使用する必要があります
その他のリソース
PATCH オペレーションの詳細については、以下を参照してください。