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: