View a markdown version of this page

Skaliertes Patchen von Ressourcen mit $bulk-patch - 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.

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-patch Vorgang 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:

  1. Senden Sie eine Bulk-Patch-Anfrage, in der die Zielressourcen und Patchvorgänge angegeben sind. Die Antwort enthält eine Job-ID.

  2. Fragen Sie den Jobstatus mithilfe des Describe-Endpunkts ab, bis der Status COMPLETED oder lautetCOMPLETED_WITH_ERRORS.

  3. 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 validationLevel Parameter, 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 skippedResources Listen failedResources und 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 read und write umfasst. SMART v2-Datenspeicher benötigen search und umfassen. update

      • Einen Job starten (Modus „Ressourcen-IDs“) — SMART v1 benötigt read und umfasst. write SMART v2-Datenspeicher benötigen read und 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.