

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Ändern von Ressourcen mit PATCH-Operation
<a name="managing-fhir-resources-patch"></a>

AWS HealthLake unterstützt den PATCH-Vorgang für FHIR-Ressourcen, sodass Sie Ressourcen ändern können, indem Sie gezielt bestimmte Elemente hinzufügen, ersetzen oder löschen möchten, ohne die gesamte Ressource zu aktualisieren. Dieser Vorgang ist besonders nützlich, wenn Sie:
+ Nehmen Sie gezielte Aktualisierungen großer Ressourcen vor
+ Reduzieren Sie die Nutzung der Netzwerkbandbreite
+ Führen Sie atomare Änderungen an bestimmten Ressourcenelementen durch
+ Minimiere das Risiko, dass gleichzeitige Änderungen überschrieben werden
+ Aktualisieren Sie Ressourcen im Rahmen von Batch- und Transaktions-Workflows

## Unterstützte PATCH-Formate
<a name="patch-supported-formats"></a>

AWS HealthLake unterstützt zwei Standard-PATCH-Formate:

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

Verwendet die JSON-Pointer-Syntax, um Elemente anhand ihrer Position in der Ressourcenstruktur als Ziel auszuwählen.

**Inhaltstyp:** `application/json-patch+json`

### FHIRPath Patch (FHIR R4-Spezifikation)
<a name="patch-format-fhirpath"></a>

Verwendet FHIRPath Ausdrücke, um Elemente anhand ihres Inhalts und ihrer Beziehungen gezielt anzusprechen, und bietet so einen FHIR-nativen Patchansatz.

**Inhaltstyp:** `application/fhir+json`

## Usage
<a name="patch-usage"></a>

### Direkte PATCH-Operationen
<a name="patch-usage-direct"></a>

Der PATCH-Vorgang kann mit der PATCH-HTTP-Methode direkt auf FHIR-Ressourcen aufgerufen werden:

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

### PATCH in Paketen
<a name="patch-usage-bundles"></a>

PATCH-Operationen können als Einträge in FHIR-Bundles des Typs enthalten sein `batch` oder ermöglichen es Ihnen`transaction`, Patch-Operationen mit anderen FHIR-Interaktionen (Erstellen, Lesen, Aktualisieren, Löschen) in einer einzigen Anfrage zu kombinieren.
+ **Transaktionspakete**: Alle Einträge sind atomar erfolgreich oder schlagen fehl
+ **Batch-Bundles**: Jeder Eintrag wird unabhängig verarbeitet

## JSON-Patch-Format
<a name="patch-json-format"></a>

### Unterstützte Vorgänge
<a name="patch-json-supported-operations"></a>


| Operation | Description | 
| --- | --- | 
| add | Fügen Sie der Ressource einen neuen Wert hinzu | 
| remove | Entferne einen Wert aus der Ressource | 
| replace | Ersetzt einen vorhandenen Wert in der Ressource | 
| move | Entferne einen Wert von einem Ort und füge ihn einem anderen hinzu | 
| copy | Kopiert einen Wert von einem Ort an einen anderen | 
| test | Testen Sie, ob ein Wert an der Zielposition einem bestimmten Wert entspricht | 

### Pfadsyntax
<a name="patch-json-path-syntax"></a>

Der JSON-Patch verwendet die JSON-Pointer-Syntax (RFC 6901):


| Beispiel für einen Pfad | Description | 
| --- | --- | 
| /name/0/family | Das Familienelement des Vornamens | 
| /telecom/- | An das Telekommunikations-Array anhängen | 
| /active | Aktives Element auf Stammebene | 
| /address/0/line/1 | Zweite Zeile der ersten Adresse | 

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

**Direkte JSON-Patch-Anfrage mit mehreren Vorgängen**  


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

**Direkte JSON-Patch-Anfrage mit einem einzigen Vorgang**  


```
PATCH [base]/Patient/example
Content-Type: application/json-patch+json

[
  {
    "op": "replace",
    "path": "/active",
    "value": false
  }
]
```

**JSON-Patch im Paket**  
Verwenden Sie eine Binärressource, die die Base64-kodierte JSON-Patch-Payload enthält:

```
{
  "resourceType": "Bundle",
  "type": "transaction",
  "entry": [{
    "resource": {
      "resourceType": "Binary",
      "contentType": "application/json-patch+json",
      "data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ=="
    },
    "request": {
      "method": "PATCH",
      "url": "Patient/123"
    }
  }]
}
```

## FHIRPath Patch-Format
<a name="patch-fhirpath-format"></a>

### Unterstützte Vorgänge
<a name="patch-fhirpath-supported-operations"></a>


| Operation | Description | 
| --- | --- | 
| add | Fügt einer Ressource ein neues Element hinzu | 
| insert | Fügt ein Element an einer bestimmten Position in einer Liste ein | 
| delete | Ein Element aus einer Ressource entfernen | 
| replace | Ersetzt den Wert eines vorhandenen Elements | 
| move | Ordnen Sie Elemente innerhalb einer Liste neu an | 

### Pfadsyntax
<a name="patch-fhirpath-path-syntax"></a>

FHIRPath Patch verwendet FHIRPath Ausdrücke und unterstützt:
+ **Indexbasierter Zugriff**: `Patient.name[0]`
+ **Filterung** mit: `where()` `Patient.name.where(use = 'official')`
+ **Boolesche Logik**: `Patient.telecom.where(system = 'phone' and use = 'work')`
+ Funktionen zur **Unterteilung:,** `first()` `last()`
+ **Existenzprüfungen**:`exists()`, `count()`
+ **Polymorphe Navigation**: `Observation.value`

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

**Direkte Patch-Anfrage 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 Patch im Paket**  
Verwenden Sie eine Parameter-Ressource als Eingangsressource mit`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"
    }
  }]
}
```

## Anforderungsheader
<a name="patch-request-headers"></a>


| Header | Erforderlich | Beschreibung | 
| --- | --- | --- | 
| Content-Type | Ja | application/json-patch\$1jsonfür JSON Patch oder application/fhir\$1json für FHIRPath Patch | 
| If-Match | Nein | Versionsspezifisches bedingtes Update mit ETag | 

## Beispielantwort
<a name="patch-sample-response"></a>

Der Vorgang gibt die aktualisierte Ressource mit neuen Versionsinformationen zurück:

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

## Behavior
<a name="patch-behavior"></a>

Die PATCH-Operation:
+ Validiert die Patch-Syntax gemäß der entsprechenden Spezifikation (RFC 6902 für JSON Patch, FHIR R4 für Patch) FHIRPath 
+ Wendet Operationen atomar an — alle Operationen sind erfolgreich oder alle schlagen fehl
+ Aktualisiert die Versions-ID der Ressource und erstellt einen neuen Verlaufseintrag
+ Behält die ursprüngliche Ressource im Verlauf bei, bevor Änderungen übernommen werden
+ Überprüft die FHIR-Ressourcenbeschränkungen nach dem Anwenden von Patches
+ Unterstützt bedingte Aktualisierungen mithilfe des If-Match-Headers mit ETag

## Fehlerbehandlung
<a name="patch-error-handling"></a>

Der Vorgang behandelt die folgenden Fehlerbedingungen:
+ **400 Bad Request**: Ungültige Patch-Syntax (fehlerhafte Anfrage oder fehlerhaftes Patch-Dokument)
+ **404 Nicht gefunden**: Ressource nicht gefunden (angegebene ID existiert nicht)
+ **409-Konflikt**: Versionskonflikt (gleichzeitige Updates oder veraltete Versions-ID angegeben)
+ **422 Unverarbeitbare Entität**: Patch-Operationen können nicht auf die angegebenen Ressourcenelemente angewendet werden

## Zusammenfassung der Funktionen
<a name="patch-summary-of-capabilities"></a>


| Funktion | JSON-Patch | FHIRPath Aufnäher | 
| --- | --- | --- | 
| Art des Inhalts | application/json-patch\$1json | application/fhir\$1json | 
| Pfadformat | JSON-Zeiger (RFC 6901) | FHIRPath Ausdrücke | 
| Direkte PATCH-API | Unterstützt | Unterstützt | 
| Batch bündeln | Unterstützt (über Binary) | Unterstützt (über Parameter) | 
| Transaktion bündeln | Unterstützt (per Binärdatei) | Unterstützt (über Parameter) | 
| Operationen | hinzufügen, entfernen, ersetzen, verschieben, kopieren, testen | hinzufügen, einfügen, löschen, ersetzen, verschieben | 

## Einschränkungen
<a name="patch-limitations"></a>
+ Bedingte PATCH-Operationen, die Suchbedingungen verwenden, werden nicht unterstützt
+ JSON-Patch in Bundles muss Binärressourcen mit Base64-codiertem Inhalt verwenden
+ FHIRPath Patches in Bundles müssen Parameter-Ressourcen verwenden

## Weitere Ressourcen
<a name="patch-additional-resources"></a>

Weitere Informationen zu PATCH-Vorgängen finden Sie unter:
+ [FHIR R4 PATCH-Dokumentation](https://hl7.org/fhir/http.html#patch)
+ [FHIR R4-Patch-Spezifikation FHIRPath ](https://hl7.org/fhir/fhirpatch.html)
+ [RFC 6902 — JSON-Patch](https://datatracker.ietf.org/doc/html/rfc6902#section-4)
+ [RFC 6901 — JSON-Zeiger](https://datatracker.ietf.org/doc/html/rfc6901)