

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# PATCH オペレーションによるリソースの変更
<a name="managing-fhir-resources-patch"></a>

AWS HealthLake は FHIR リソースの PATCH オペレーションをサポートしているため、リソース全体を更新することなく、特定の要素をターゲットにして追加、置換、または削除することで、リソースを変更できます。このオペレーションは、以下が必要な場合に特に役立ちます。
+ 大規模なリソースをターゲットに更新する
+ ネットワーク帯域幅の使用量を減らす
+ 特定のリソース要素に対してアトミック変更を実行する
+ 同時変更を上書きするリスクを最小限に抑える
+ バッチワークフローとトランザクションワークフローの一部としてリソースを更新する

## サポートされているパッチ形式
<a name="patch-supported-formats"></a>

AWS HealthLake は 2 つの標準 PATCH 形式をサポートしています。

### JSON パッチ (RFC 6902)
<a name="patch-format-json"></a>

JSON ポインタ構文を使用して、リソース構造内の要素の位置で要素をターゲットにします。

**Content-Type:** `application/json-patch+json`

### FHIRPath パッチ (FHIR R4 仕様)
<a name="patch-format-fhirpath"></a>

FHIRPath 式を使用して、コンテンツと関係によって要素をターゲットにし、パッチ適用に対する FHIR ネイティブアプローチを提供します。

**Content-Type:** `application/fhir+json`

## 使用方法
<a name="patch-usage"></a>

### Direct PATCH オペレーション
<a name="patch-usage-direct"></a>

PATCH オペレーションは、PATCH HTTP メソッドを使用して FHIR リソースで直接呼び出すことができます。

```
PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}
```

### バンドル内のパッチ
<a name="patch-usage-bundles"></a>

パッチオペレーションは、タイプ `batch`または の FHIR バンドル内のエントリとして含めることができるため`transaction`、1 つのリクエストでパッチオペレーションを他の FHIR インタラクション (作成、読み取り、更新、削除) と組み合わせることができます。
+ **トランザクションバンドル**: すべてのエントリがアトミックに成功または失敗する
+ **バッチバンドル**: 各エントリは個別に処理されます

## JSON パッチ形式
<a name="patch-json-format"></a>

### サポートされているオペレーション
<a name="patch-json-supported-operations"></a>


| 運用 | 説明 | 
| --- | --- | 
| add | リソースに新しい値を追加する | 
| remove | リソースから値を削除する | 
| replace | リソース内の既存の値を置き換える | 
| move | ある場所から値を削除し、別の場所に追加する | 
| copy | ある場所から別の場所に値をコピーする | 
| test | ターゲットロケーションの値が指定された値と等しいことをテストする | 

### パス構文
<a name="patch-json-path-syntax"></a>

JSON パッチは JSON ポインタ構文 (RFC 6901) を使用します。


| パスの例 | 説明 | 
| --- | --- | 
| /name/0/family | 名前のファミリー要素 | 
| /telecom/- | テレコム配列に追加 | 
| /active | ルートレベルのアクティブ要素 | 
| /address/0/line/1 | 最初のアドレスの 2 行目 | 

### 例
<a name="patch-json-examples"></a>

**複数のオペレーションによる直接 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 パッチ形式
<a name="patch-fhirpath-format"></a>

### サポートされているオペレーション
<a name="patch-fhirpath-supported-operations"></a>


| 運用 | 説明 | 
| --- | --- | 
| add | リソースに新しい要素を追加する | 
| insert | リスト内の特定の位置に要素を挿入する | 
| delete | リソースから 要素を削除する | 
| replace | 既存の要素の値を置き換える | 
| move | リスト内の要素の順序を変更する | 

### パス構文
<a name="patch-fhirpath-path-syntax"></a>

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`

### 例
<a name="patch-fhirpath-examples"></a>

**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"
    }
  }]
}
```

## リクエストヘッダー
<a name="patch-request-headers"></a>


| ヘッダー | 必要 | 説明 | 
| --- | --- | --- | 
| Content-Type | はい | application/json-patch\$1json for JSON パッチまたは application/fhir\$1json for FHIRPath パッチ | 
| If-Match | いいえ | ETag を使用したバージョン固有の条件付き更新 | 

## レスポンス例
<a name="patch-sample-response"></a>

オペレーションは、更新されたリソースに新しいバージョン情報を返します。

```
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"
  }
}
```

## 行動
<a name="patch-behavior"></a>

PATCH オペレーション:
+ 適切な仕様に従ってパッチ構文を検証します (JSON パッチの場合は RFC 6902、FHIRPath パッチの場合は FHIR R4)
+ オペレーションをアトミックに適用 - すべてのオペレーションが成功または失敗する
+ リソースバージョン ID を更新し、新しい履歴エントリを作成します。
+ 変更を適用する前に、元のリソースを履歴に保持します
+ パッチを適用した後、FHIR リソースの制約を検証します
+ ETag で If-Match ヘッダーを使用した条件付き更新をサポート

## エラー処理
<a name="patch-error-handling"></a>

オペレーションは、次のエラー条件を処理します。
+ **400 不正なリクエスト**: 無効なパッチ構文 (非準拠のリクエストまたは不正な形式のパッチドキュメント)
+ **404 Not Found**: リソースが見つかりません (指定された ID は存在しません)
+ **409 競合**: バージョン競合 (同時更新または以前のバージョン ID の提供)
+ **422 未処理のエンティティ**: パッチオペレーションを指定されたリソース要素に適用できません

## 機能の概要
<a name="patch-summary-of-capabilities"></a>


| 機能 | JSON パッチ | FHIRPath パッチ | 
| --- | --- | --- | 
| コンテンツタイプ | application/json-patch\$1json | application/fhir\$1json | 
| パス形式 | JSON ポインタ (RFC 6901) | FHIRPath 式 | 
| Direct PATCH API | サポート対象 | サポート | 
| バンドルバッチ | サポートされている (バイナリ経由) | サポートされている (パラメータ経由) | 
| バンドルトランザクション | サポートされている (バイナリ経由) | サポートされている (パラメータ経由) | 
| オペレーション | 追加、削除、置換、移動、コピー、テスト | 追加、挿入、削除、置換、移動 | 

## 制限事項
<a name="patch-limitations"></a>
+ 検索条件を使用した条件付き PATCH オペレーションはサポートされていません
+ バンドル内の JSON パッチは、base64 でエンコードされたコンテンツを含むバイナリリソースを使用する必要があります
+ バンドルの FHIRPath パッチは Parameters リソースを使用する必要があります

## その他のリソース
<a name="patch-additional-resources"></a>

PATCH オペレーションの詳細については、以下を参照してください。
+ [FHIR R4 パッチドキュメント](https://hl7.org/fhir/http.html#patch)
+ [FHIR R4 FHIRPath パッチ仕様](https://hl7.org/fhir/fhirpatch.html)
+ [RFC 6902 - JSON パッチ](https://datatracker.ietf.org/doc/html/rfc6902#section-4)
+ [RFC 6901 - JSON ポインタ](https://datatracker.ietf.org/doc/html/rfc6901)