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.
Skaliertes Patchen von Ressourcen mit $bulk-patch
AWS HealthLake unterstützt den $bulk-patch Vorgang zum asynchronen Anwenden von Patch-Vorgängen auf eine große Anzahl von FHIR-Ressourcen. Sie können eine bestimmte Liste von Ressourcen nach ID oder alle Ressourcen eines bestimmten Typs innerhalb eines Datenspeichers als Ziel auswählen. Mit diesem Vorgang können Sie Ressourcen in großem Umfang ändern, ohne jede Ressource einzeln aktualisieren zu müssen.
Die $bulk-patch Operation ist besonders nützlich, wenn Sie Folgendes tun müssen:
-
Wenden Sie Metadaten-Tags oder -Labels auf Ressourcen in einem gesamten Datenspeicher an
-
Aktualisieren Sie bestimmte Felder für Tausende oder Millionen von Ressourcen
-
Führen Sie umfangreiche Datenkorrekturen oder -anreicherungen durch
-
Wenden Sie Compliance-bezogene Änderungen für alle Ressourcentypen an
-
Migrieren oder standardisieren Sie Datenelemente im großen Maßstab
Anmerkung
-
Der
$bulk-patchVorgang wendet denselben Patch auf jede Zielressource an. Verwenden Sie den PATCH-Vorgang, um eine einzelne Ressource zu ändern. Weitere Informationen finden Sie unter Ändern von Ressourcen mit PATCH-Operation. -
Der Bulk-Patch wendet jeden Patch atomar auf jede Ressource an. Jede Ressource ist unabhängig davon entweder erfolgreich oder schlägt fehl.
-
Ressourcen, die nach der Auftragsübergabe gelöscht oder geändert werden, werden übersprungen und nicht gepatcht, um zu vermeiden, dass gleichzeitig vorgenommene Änderungen überschrieben werden.
Usage
Der $bulk-patch Vorgang ist asynchron. Um einen Job zu starten, senden Sie eine POST-Anfrage:
POST [base]/$bulk-patch
Verwenden Sie den Describe-Endpunkt, um den Status eines Jobs abzufragen:
GET [base]/$bulk-patch/{jobId}
Gehen Sie wie folgt vor, um mit dem $bulk-patch Vorgang zu beginnen:
-
Senden Sie eine Bulk-Patch-Anfrage, in der die Zielressourcen und Patchvorgänge angegeben sind. Die Antwort enthält eine Job-ID.
-
Fragen Sie den Jobstatus mithilfe des Describe-Endpunkts ab, bis der Status
COMPLETEDoder lautetCOMPLETED_WITH_ERRORS. -
Sehen Sie in der Auftragsübersicht nach, wie viele Ressourcen erfolgreich waren, fehlgeschlagen sind oder übersprungen wurden.
Parameters
Der $bulk-patch Vorgang unterstützt die folgenden Parameter.
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
resourceType |
Zeichenfolge | Ja | Der FHIR-Ressourcentyp, der gepatcht werden soll, zum Beispiel Patient oderObservation. |
resourceIds |
Zeichenfolge [] | Nein | Die Liste der Ressourcen-IDs, die gepatcht werden sollen. Wenn Sie diesen Parameter weglassen, patcht der Vorgang alle Ressourcen des angegebenen Typs. |
operations |
object | Ja | Die anzuwendenden Patch-Operationen. Akzeptiert entweder ein JSON-Patch-Array oder eine Parameters FHIR-Patch-Ressource. |
clientToken |
Zeichenfolge | Nein | User-provided Token, das zur Sicherstellung der Idempotenz verwendet wird. Wenn Sie einen Auftrag erneut mit demselben Client-Token einreichen, wird der vorhandene Auftrag zurückgegeben, anstatt einen neuen zu erstellen. |
validationLevel |
Zeichenfolge | Nein | Die FHIR-Validierungsstufe, die bei der Aktualisierung der einzelnen Ressourcen angewendet wurde. Zulässige Werte sind strict (Standard)structure-only, undminimal. |
Ressourcen ins Visier nehmen
Sie können Ressourcen in zwei Modi gezielt einsetzen.
Modus „Ressourcentyp“
Im Ressourcentypmodus patcht der Vorgang alle Ressourcen eines bestimmten Typs im Datenspeicher.
{
"resourceType": "Patient",
"operations": { ... }
}
Modus „Ressourcen-IDs“
Im Modus „Ressourcen-IDs“ patcht der Vorgang eine bestimmte Liste von Ressourcen nach ID. Alle Ressourcen-IDs müssen vom gleichen Typ sein und mit dem resourceType Parameter übereinstimmen. Das Format kann eine vollständige Referenz ([resourceType]/[id]) oder nur die ID ([id]) sein. Die Liste kann bis zu 50.000 Ressourcen-IDs enthalten.
{
"resourceType": "Patient",
"resourceIds": ["Patient/001", "Patient/002", "Patient/003"],
"operations": { ... }
}
Unterstützte Patch-Formate
Die $bulk-patch Operation unterstützt sowohl die JSON Patch (RFC 6902) als auch die FHIR Patch (FHIRPath-based) -Syntax. Sie verwendet dieselben unterstützten Operationen und dieselbe Syntax wie die synchrone PATCH-Operation. Weitere Informationen finden Sie unter Ändern von Ressourcen mit PATCH-Operation.
Beispiel für einen Bulk-Patch-Job starten
Im folgenden Beispiel wird ein Bulk-Patch-Auftrag übermittelt, der mithilfe von FHIR Patch bestimmten Patient Ressourcen ein Compliance-Tag hinzufügt.
Beispielanforderung
POST [base]/$bulk-patch
Content-Type: application/json
{
"resourceType": "Patient",
"resourceIds": ["patient-1", "patient-2", "patient-3"],
"validationLevel": "strict",
"clientToken": "unique-idempotency-token-123",
"operations": {
"resourceType": "Parameters",
"parameter": [
{
"name": "operation",
"part": [
{"name": "type", "valueCode": "add"},
{"name": "path", "valueString": "Patient.meta"},
{"name": "name", "valueString": "tag"},
{"name": "value", "valueCoding": {
"system": "http://example.org/compliance",
"code": "2026-audit-complete"
}}
]
}
]
}
}
Beispielantwort
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"jobStatus": "SUBMITTED"
}
Statusabfrage für Bulk-Patch-Jobs
Nachdem Sie einen Auftrag eingereicht haben, fragen Sie den Auftragsstatus ab, um den Fortschritt zu verfolgen und Ergebnisse abzurufen. Der Job wechselt über SUBMITTED IN_PROGRESS und dann in den Endzustand COMPLETED oderCOMPLETED_WITH_ERRORS.
GET [base]/$bulk-patch/{jobId}
Das folgende Beispiel zeigt eine Antwort für einen Job, der gerade ausgeführt wird.
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"status": "IN_PROGRESS",
"submittedTime": "2026-09-14T06:53:31.429Z",
"summary": {
"estimatedResourceCount": 1000
}
}
Anmerkung
Der estimatedResourceCount ist exakt für den Modus „Ressourcen-IDs“ und entspricht der Größe der übermittelten Liste. Im Ressourcentypmodus kann die tatsächliche Anzahl der verarbeiteten Ressourcen leicht abweichen, da Ressourcen erstellt oder gelöscht werden können, während der Job ausgeführt wird.
Wenn der Job den Endzustand erreicht, enthält die Describe-Antwort eine Zusammenfassung der Anzahl erfolgreicher, fehlgeschlagener und übersprungener Ressourcen. Wenn Ressourcen ausgefallen sind oder übersprungen wurden, werden in der Antwort die Gründe in failedResources und aufgeführt. skippedResources Der Auftragsstatus wird angezeigt, COMPLETED_WITH_ERRORS wenn ein Fehler aufgetreten ist, unabhängig davon, ob es sich um einen Kundenfehler oder einen Serverfehler handelt. Durch die Größe der Antwort sind die skippedResources Listen failedResources und begrenzt, sodass sie möglicherweise gekürzt werden. Prüfen Sie failedResourcesTruncated und skippedResourcesTruncated stellen Sie fest, ob die vollständige Liste enthalten ist.
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"status": "COMPLETED_WITH_ERRORS",
"submittedTime": "2026-09-14T06:53:31.429Z",
"endTime": "2026-09-14T07:08:34.930Z",
"summary": {
"estimatedResourceCount": 1000,
"totalResourcesProcessed": 1000,
"succeeded": 985,
"failedWithCustomerError": 5,
"failedWithServerError": 0,
"skipped": 10
},
"failedResources": [
{
"resourceId": "Patient/patient-101",
"message": "FHIR resource in payload failed FHIR validation rules."
}
],
"skippedResources": [
{
"resourceId": "Patient/patient-201",
"message": "Resource was modified after job submission"
},
{
"resourceId": "Patient/patient-202",
"message": "Resource was deleted."
},
{
"resourceId": "Patient/patient-203",
"message": "Resource not found."
}
],
"failedResourcesTruncated": false,
"skippedResourcesTruncated": false
}
Häufige Gründe für übersprungene Auslassungen
Bei dem Vorgang wird eine Ressource übersprungen, wenn sie im Gültigkeitsbereich ist, aber sie kann nicht gepatcht werden, da sich ihr Status zwischen Auftragsübergabe und Verarbeitung geändert hat. Übersprungene Ressourcen werden nicht als Fehler betrachtet. Im Folgenden sind häufige Gründe dafür aufgeführt, dass eine Ressource übersprungen wird.
-
Ressource wurde nach der Auftragsübermittlung geändert — Die Ressource wurde durch einen weiteren Vorgang aktualisiert, nachdem der Bulk-Patch-Auftrag die Version zum Zeitpunkt der Übermittlung erfasst hatte. In seltenen Fällen kann es vorkommen, dass eine Ressource, die erfolgreich gepatcht wurde, nach der Auftragsübergabe als übersprungen gemeldet wird. Der Grund dafür wurde geändert. Dies ist zu erwarten und kann in einer sehr niedrigen Rate auftreten (1 von Millionen von Ressourcen).
-
Ressource wurde nach der Auftragsübermittlung gelöscht — Die Ressource wurde gelöscht, nachdem der Auftrag eingereicht wurde (Ressourcentypmodus). Nicht alle gelöschten Ressourcen werden garantiert in der Liste der übersprungenen Ressourcen angezeigt. Wenn eine Ressource gelöscht wird, bevor der Auftrag mit der Verarbeitung beginnt, wird sie vollständig aus dem Auftragsumfang ausgeschlossen und spiegelt sich nicht in den Auftragsergebnissen wider.
-
Ressource wurde gelöscht — Die angegebene Ressourcen-ID befindet sich im Status „Gelöscht“ (Modus „Ressourcen-IDs“).
-
Ressource nicht gefunden — Die angegebene Ressourcen-ID existiert nicht (nur im Modus „Ressourcen-IDs“).
Häufige Kundenfehler
Eine Ressource schlägt fehl, wenn der Vorgang den Patch aufgrund eines Problems mit der Ressource oder den Patch-Vorgängen nicht anwenden kann. Bei fehlgeschlagenen Ressourcen wird eine Fehlermeldung mit Diagnosedetails angezeigt. Im Folgenden sind häufige Kundenfehler aufgeführt.
-
FHIR-Validierungsfehler — Die gepatchte Ressource hat die FHIR-Validierung nicht bestanden. Der Bulk-Patch wendet die FHIR-Validierung auf die gesamte gepatchte Ressource an, nicht nur auf die geänderten Felder. Dieser Fehler kann auftreten, wenn der Patch einen ungültigen Feldwert erzeugt oder wenn die Ressource bereits Felder enthält, die nicht FHIR-konform sind. Verwenden Sie den
validationLevelParameter, um die Validierungsstriktheit zu kontrollieren. -
Fehler bei der Patch-Anwendung — Die Patch-Operationen sind nicht mit der Ressourcenstruktur kompatibel. Sie ersetzen beispielsweise ein Feld, das nicht existiert, oder fügen es einem Pfad hinzu, der kein Array ist.
Bewährte Methoden
Wir empfehlen die folgenden bewährten Methoden, wenn Sie den $bulk-patch Vorgang verwenden.
-
Testen Sie zuerst mit synchronem PATCH. AWS HealthLake validiert die Syntax des Patch-Vorgangs bei der Auftragsübergabe und lehnt ungültige Payloads synchron ab. Syntaktisch gültige Patch-Operationen können jedoch immer noch zur Verarbeitungszeit fehlschlagen, wenn sie nicht der zugrunde liegenden gespeicherten Ressourcenstruktur entsprechen. Machen Sie sich mit den Eigenschaften Ihrer Zielressourcen vertraut und testen Sie Ihre Patch-Operationen mit dem synchronen PATCH-Vorgang, bevor Sie einen Bulk-Patch-Job ausführen. Dies hilft Ihnen, groß angelegte Ausfälle zu vermeiden.
-
Verwenden Sie Gründe für Fehler und übersprungene Fehler zum Debuggen. Lesen Sie die
skippedResourcesListenfailedResourcesund in der Beschreibungsantwort, um zu verstehen, warum bestimmte Ressourcen nicht gepatcht wurden. -
Überprüfen Sie den Ressourcenstatus, bevor Sie es erneut versuchen. Patch-Operationen sind von Natur aus nicht idempotent. Das zweimalige Anwenden desselben Patches kann zu unterschiedlichen Ergebnissen führen. Wenn Sie beispielsweise ein bereits vorhandenes Tag hinzufügen, entsteht ein Duplikat. Wenn Sie feststellen, dass Ressourcen übersprungen wurden oder ausgefallen sind, überprüfen Sie den aktuellen Ressourcenstatus, bevor Sie einen Wiederholungsauftrag senden.
Autorisierung
Der $bulk-patch Vorgang unterstützt die folgenden Autorisierungsmethoden:
-
AWS Identity and Access Management (IAM) -Signaturversion 4 (SigV4) für programmatischen Zugriff.
-
SMART on FHIR mit den folgenden erforderlichen Bereichen:
-
Bereichsebene — Nur Bereiche auf Systemebene werden unterstützt. Bei der Operation werden Bereiche auf Patienten- und Benutzerebene abgelehnt.
-
Ressourcentyp — Die Bereiche müssen dem Ressourcentyp entsprechen, auf den der Job abzielt.
-
Operationen — Die erforderlichen Bereiche hängen vom Jobmodus und der SMART-Version ab:
-
Einen Job starten (Ressourcentypmodus) — SMART v1 benötigt
readundwriteumfasst. SMART v2-Datenspeicher benötigensearchund umfassen.update -
Einen Job starten (Modus „Ressourcen-IDs“) — SMART v1 benötigt
readund umfasst.writeSMART v2-Datenspeicher benötigenreadund umfassen.update -
Beschreiben Sie einen Job — Erfordert den Umfang.
read
-
-
Leistungsmerkmale
Der $bulk-patch Vorgang ist für die Verarbeitung großer Datenmengen konzipiert und läuft asynchron.
-
Parallelität — Jeder Datenspeicher unterstützt maximal einen gleichzeitigen Bulk-Patch-Job. Der Vorgang stellt zusätzliche Jobs in die Warteschlange und startet sie automatisch, wenn der aktuelle Job abgeschlossen ist.
-
Skalierbarkeit — Jeder Job unterstützt bis zu 2 Milliarden Ressourcen. Der Vorgang lehnt Aufträge ab, die diesen Grenzwert überschreiten. Dieses Limit verhindert längere Verarbeitungszeiten, in denen viele Ressourcen ihren Status ändern können, und verhindert, dass die Parallelität von Datenspeicheraufträgen über einen längeren Zeitraum unterbrochen wird. Verwenden Sie den Modus „Ressourcen-IDs“, um die Arbeitslast zu partitionieren. Beispiel für eine Antwort, wenn ein Auftrag den unterstützten Maßstab überschreitet:
"status": "COMPLETED_WITH_ERRORS", "message": "The requested bulk patch operation exceeds the supported scale." -
Parallele Operationen — Bulk-Patch ist nicht mit gleichzeitigen Massenlösch-, Import- oder Exportvorgängen auf demselben Datenspeicher kompatibel.
-
Abbruch — Bulk-Patch-Jobs können nicht storniert werden, nachdem sie eingereicht wurden.
Zugehörige -Vorgänge
-
Ändern von Ressourcen mit PATCH-Operation— Single-resource PATCH mit JSON Patch oder FHIR Patch.
-
Ressourcentypen löschen mit $bulk-delete— Löscht alle Ressourcen eines bestimmten Typs.
-
FHIR R4 $operations für HealthLake— Vollständige Liste der unterstützten Operationen.