Ändern von Ressourcen mit PATCH-Operation - AWS HealthLake

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

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

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

JSON-Patch (RFC 6902)

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)

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

Direkte PATCH-Operationen

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

PATCH-Operationen können als Einträge in FHIR-Bundles des Typs enthalten sein batch oder ermöglichen es Ihnentransaction, 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

Unterstützte Vorgänge

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

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

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

Unterstützte Vorgänge

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

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

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 mitmethod: 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

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

Beispielantwort

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

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

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

Funktion JSON-Patch FHIRPath Aufnäher
Art des Inhalts application/json-patch+json application/fhir+json
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

  • 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

Weitere Informationen zu PATCH-Vorgängen finden Sie unter: