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.
Bündelung der FHIR-Ressourcen
Ein FHIR Bundle ist ein Container für eine Sammlung von FHIR-Ressourcen in. AWS HealthLake AWS HealthLake unterstützt zwei Arten von Paketen mit unterschiedlichem Verarbeitungsverhalten.
Batch
Transaction
| Feature | Batch | Transaktion |
|---|---|---|
| Modell der Verarbeitung | Jeder Vorgang ist unabhängig davon erfolgreich oder schlägt fehl. | Alle Operationen sind als einzelne atomare Einheit erfolgreich oder schlagen fehl. |
| Fehlerbehandlung | Die Verarbeitung wird auch dann fortgesetzt, wenn einzelne Operationen fehlschlagen. | Das gesamte Paket schlägt fehl, wenn ein einzelner Vorgang fehlschlägt. |
| Reihenfolge der Ausführung | Die Reihenfolge der Ausführung ist nicht garantiert. | Die Operationen werden in der angegebenen Reihenfolge verarbeitet. |
| Referentielle Integrität | Wird nicht betriebsübergreifend durchgesetzt. | Wird für lokal referenzierte Ressourcen innerhalb des Pakets durchgesetzt. |
| Am besten verwendet für | Massenoperationen, bei denen ein teilweiser Erfolg akzeptabel ist. | Verwandte Ressourcen, die zusammen erstellt oder aktualisiert werden müssen. |
Sie können FHIR-Ressourcen desselben oder verschiedener Typen bündeln, und sie können eine Mischung aus FHIR-Operationen wie, create read updatedelete, und enthalten. patch Weitere Informationen finden Sie unter Resource Bundle
Im Folgenden finden Sie beispielhafte Anwendungsfälle für jeden Bundle-Typ.
- Bündel stapeln
-
-
Laden Sie während der nächtlichen Datensynchronisierung mehrere Patientendaten aus verschiedenen Einrichtungen hoch, die nichts miteinander zu tun haben.
-
Laden Sie in großen Mengen historische Medikamentenaufzeichnungen hoch, bei denen es bei einigen Aufzeichnungen zu Validierungsproblemen kommen könnte.
-
Laden Sie Referenzdaten wie Organisationen und Ärzte hoch, bei denen sich einzelne Fehler nicht auf andere Einträge auswirken.
-
- Transaktionspakete
-
-
Erstellen Sie einen Patienten mit entsprechenden Beobachtungen und Erkrankungen während einer Aufnahme in die Notaufnahme, bei der alle Daten zusammen aufgezeichnet werden müssen.
-
Aktualisieren Sie die Medikamentenliste eines Patienten und die zugehörigen Allergie-Informationen, die konsistent bleiben müssen.
-
Erfassen Sie eine vollständige Patientenbegegnung, Beobachtungen, Verfahren und Abrechnungsinformationen in einer einzigen atomaren Einheit.
-
Wichtig
Sowohl Batch- als auch Transaktionspakete verwenden dieselbe Bundle Ressourcenstruktur. Der einzige Unterschied ist der Wert des type Feldes.
Das folgende Beispiel zeigt ein Transaktionspaket mit mehreren Ressourcentypen und Vorgängen.
{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "fullUrl": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065", "resource": { "resourceType": "Patient", "id": "new-patient", "active": true, "name": [ { "family": "Johnson", "given": [ "Sarah" ] } ], "gender": "female", "birthDate": "1985-08-12", "telecom": [ { "system": "phone", "value": "555-123-4567", "use": "home" } ] }, "request": { "method": "POST", "url": "Patient" } }, { "fullUrl": "urn:uuid:7f83f473-d8cc-4a8d-86d3-9d9876a3248b", "resource": { "resourceType": "Observation", "id": "blood-pressure", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel" } ], "text": "Blood pressure panel" }, "subject": { "reference": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065" }, "effectiveDateTime": "2023-10-15T09:30:00Z", "component": [ { "code": { "coding": [ { "system": "http://loinc.org", "code": "8480-6", "display": "Systolic blood pressure" } ] }, "valueQuantity": { "value": 120, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } }, { "code": { "coding": [ { "system": "http://loinc.org", "code": "8462-4", "display": "Diastolic blood pressure" } ] }, "valueQuantity": { "value": 80, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] }, "request": { "method": "POST", "url": "Observation" } }, { "resource": { "resourceType": "Appointment", "id": "appointment-123", "status": "booked", "description": "Annual physical examination", "start": "2023-11-15T09:00:00Z", "end": "2023-11-15T09:30:00Z", "participant": [ { "actor": { "reference": "urn:uuid:4f6a30fb-cd3c-4ab6-8757-532101f72065" }, "status": "accepted" } ] }, "request": { "method": "PUT", "url": "Appointment/appointment-123" } }, { "request": { "method": "DELETE", "url": "MedicationRequest/med-request-456" } } ] }
Bündelung von FHIR-Ressourcen als unabhängige Einheiten
Um FHIR-Ressourcen als unabhängige Einheiten zu bündeln
-
Sammle HealthLake
regionunddatastoreIdwerte. Weitere Informationen finden Sie unter Eigenschaften des Datenspeichers abrufen. -
Erstellen Sie eine URL für die Anfrage anhand der gesammelten Werte für HealthLake
regionunddatastoreId. Geben Sie in der URL keinen FHIR-Ressourcentyp an. Um den gesamten URL-Pfad im folgenden Beispiel anzuzeigen, scrollen Sie über die Schaltfläche Kopieren.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Konstruieren Sie einen JSON-Text für die Anfrage und geben Sie jedes HTTP-Verb als Teil der
methodElemente an. Im folgenden Beispiel wird einebatchTypinteraktion mit derBundleRessource verwendet, um neueMedicationUND-RessourcenPatientzu erstellen. Alle erforderlichen Abschnitte sind entsprechend kommentiert. Speichern Sie die Datei für dieses Verfahren unterbatch-independent.json.{ "resourceType": "Bundle", "id": "bundle-batch", "meta": { "lastUpdated": "2014-08-18T01:43:30Z" }, "type": "batch", "entry": [ { "resource": { "resourceType": "Patient", "meta": { "lastUpdated": "2022-06-03T17:53:36.724Z" }, "text": { "status": "generated", "div": "Some narrative" }, "active": true, "name": [ { "use": "official", "family": "Jackson", "given": [ "Mateo", "James" ] } ], "gender": "male", "birthDate": "1974-12-25" }, "request": { "method": "POST", "url": "Patient" } }, { "resource": { "resourceType": "Medication", "id": "med0310", "contained": [ { "resourceType": "Substance", "id": "sub03", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "55452001", "display": "Oxycodone (substance)" } ] } } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "430127000", "display": "Oral Form Oxycodone (product)" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385055001", "display": "Tablet dose form (qualifier value)" } ] }, "ingredient": [ { "itemReference": { "reference": "#sub03" }, "strength": { "numerator": { "value": 5, "system": "http://unitsofmeasure.org", "code": "mg" }, "denominator": { "value": 1, "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, "request": { "method": "POST", "url": "Medication" } } ] } -
Senden Sie die Anforderung . Der
BundleFHIR-Batchtyp verwendet bei FHIR-Autorisierung einePOSTAnfrage mit entweder AWS Signature Version 4 oder SMART. Im folgenden Codebeispiel wird dascurlBefehlszeilentool zu Demonstrationszwecken verwendet.Der Server gibt eine Antwort zurück, in der die
PatientMedicationRessourcen angezeigt werden, die als Ergebnis derBundleBatch-Anfrage erstellt wurden.
Bedingte PUTs in Bündeln
AWS HealthLake unterstützt bedingte Aktualisierungen innerhalb von Paketen mithilfe der folgenden Abfrageparameter:
Anmerkung
Bedingte PUTs werden nur in batch Paketen unterstützt. TransactionBundles unterstützen keine bedingten PUTs.
-
_id(eigenständig) -
_idin Kombination mit einer der folgenden Optionen:-
_tag -
createdAt -
_lastUpdated
-
Wenn Sie bedingte PUTs in Paketen verwenden, AWS HealthLake wertet es die Abfrageparameter anhand vorhandener Ressourcen aus und ergreift auf der Grundlage der Abgleichsergebnisse Maßnahmen.
| Szenario | HTTP-Status | Ergriffene Maßnahme |
|---|---|---|
| Ressource ohne angegebene ID | 201 Erstellt | Erstellt immer eine neue Ressource. |
| Ressource mit neuer ID (keine Übereinstimmung) | 201 Erstellt | Erstellt eine neue Ressource mit der angegebenen ID. |
| Ressource mit vorhandener ID (einzelne Übereinstimmung) | 200 OK | Aktualisiert die passende Ressource. |
| Ressource mit vorhandener ID (Konflikt erkannt) | 409 Conflict (409 Konflikt) | Gibt einen Fehler zurück. Es werden keine Änderungen vorgenommen. |
| Ressource mit vorhandener ID (ID stimmt nicht überein) | 400 Bad Request (400 Ungültige Anfrage) | Gibt einen Fehler zurück. Es werden keine Änderungen vorgenommen. |
| Mehrere Ressourcen entsprechen den Bedingungen | 412 Precondition Failed (412 Vorbedingung fehlgeschlagen) | Gibt einen Fehler zurück. Es werden keine Änderungen vorgenommen. |
Im folgenden Beispielpaket mit einer bedingten Aktualisierung wird die Patient Ressource mit der FHIR-ID nur 476 aktualisiert, wenn die Bedingung erfüllt _lastUpdated=lt2025-04-20 ist.
{ "resourceType": "Bundle", "id": "bundle-batch", "meta": { "lastUpdated": "2014-08-18T01:43:30Z" }, "type": "batch", "entry": [ { "resource": { "resourceType": "Patient", "id": "476", "meta": { "lastUpdated": "2022-06-03T17:53:36.724Z" }, "active": true, "name": [ { "use": "official", "family": "Jackson", "given": [ "Mateo", "James" ] } ], "gender": "male", "birthDate": "1974-12-25" }, "request": { "method": "PUT", "url": "Patient?_id=476&_lastUpdated=lt2025-04-20" } }, { "resource": { "resourceType": "Medication", "id": "med0310", "contained": [ { "resourceType": "Substance", "id": "sub03", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "55452001", "display": "Oxycodone (substance)" } ] } } ], "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "430127000", "display": "Oral Form Oxycodone (product)" } ] }, "form": { "coding": [ { "system": "http://snomed.info/sct", "code": "385055001", "display": "Tablet dose form (qualifier value)" } ] }, "ingredient": [ { "itemReference": { "reference": "#sub03" }, "strength": { "numerator": { "value": 5, "system": "http://unitsofmeasure.org", "code": "mg" }, "denominator": { "value": 1, "system": "http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm", "code": "TAB" } } } ] }, "request": { "method": "POST", "url": "Medication" } } ] }
Bündelung der FHIR-Ressourcen als eine Einheit
Um FHIR-Ressourcen als eine Einheit zu bündeln
-
Sammle HealthLake
regionunddatastoreIdWerte. Weitere Informationen finden Sie unter Eigenschaften des Datenspeichers abrufen. -
Erstellen Sie eine URL für die Anfrage anhand der gesammelten Werte für HealthLake
regionunddatastoreId. Schließen Sie den FHIR-RessourcentypBundleals Teil der URL ein. Um den gesamten URL-Pfad im folgenden Beispiel anzuzeigen, scrollen Sie über die Schaltfläche Kopieren.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Bundle -
Erstellen Sie einen JSON-Text für die Anfrage und geben Sie die FHIR-Ressourcen an, die gruppiert werden sollen. Im folgenden Beispiel werden zwei
PatientRessourcen gruppiert HealthLake. Speichern Sie die Datei für dieses Verfahren unterbatch-single.json.{ "resourceType": "Bundle", "id": "bundle-minimal", "language": "en-US", "identifier": { "system": "urn:oid:1.2.3.4.5", "value": "28b95815-76ce-457b-b7ae-a972e527db4f" }, "type": "document", "timestamp": "2020-12-11T14:30:00+01:00", "entry": [ { "fullUrl": "urn:uuid:f40b07e3-37e8-48c3-bf1c-ae70fe12dabf", "resource": { "resourceType": "Composition", "id": "f40b07e3-37e8-48c3-bf1c-ae70fe12dabf", "status": "final", "type": { "coding": [ { "system": "http://loinc.org", "code": "60591-5", "display": "Patient summary Document" } ] }, "date": "2020-12-11T14:30:00+01:00", "author": [ { "reference": "urn:uuid:45271f7f-63ab-4946-970f-3daaaa0663ff" } ], "title": "Patient Summary as of December 7, 2020 14:30" } }, { "fullUrl": "urn:uuid:45271f7f-63ab-4946-970f-3daaaa0663ff", "resource": { "resourceType": "Practitioner", "id": "45271f7f-63ab-4946-970f-3daaaa0663ff", "active": true, "name": [ { "family": "Doe", "given": [ "John" ] } ] } } ] } -
Senden Sie die Anforderung . Der
BundleDokumenttyp FHIR verwendet einePOSTAnfrage mit dem AWS Signaturprotokoll Signature Version 4. Im folgenden Codebeispiel wird dascurlBefehlszeilentool zu Demonstrationszwecken verwendet.Der Server gibt eine Antwort zurück, in der zwei
PatientRessourcen angezeigt werden, die als Ergebnis der Anforderung desBundleDokumenttyps erstellt wurden.
Konfiguration der Validierungsstufe für Pakete
Beim Bündeln von FHIR-Ressourcen können Sie optional einen x-amzn-healthlake-fhir-validation-level HTTP-Header angeben, um eine Validierungsebene für die Ressource zu konfigurieren. Diese Validierungsstufe wird für alle Erstellungs- und Aktualisierungsanfragen innerhalb des Pakets festgelegt. AWS HealthLake unterstützt derzeit die folgenden Validierungsstufen:
-
strict: Ressourcen werden gemäß dem Profilelement der Ressource oder der R4-Spezifikation validiert, wenn kein Profil vorhanden ist. Dies ist die Standard-Validierungsstufe für AWS HealthLake. -
structure-only: Ressourcen werden anhand von R4 validiert, wobei alle referenzierten Profile ignoriert werden. -
minimal: Ressourcen werden nur minimal validiert, wobei bestimmte R4-Regeln ignoriert werden. Ressourcen, die die erforderlichen Strukturprüfungen nicht bestehen, search/analytics werden aktualisiert und mit einer Auditwarnung versehen.
Ressourcen, die mit der Mindestvalidierungsstufe gebündelt sind, können in einen Datenspeicher aufgenommen werden, obwohl die für die Suchindexierung erforderliche Validierung nicht bestanden hat. In diesem Fall werden die Ressourcen aktualisiert und um eine Healthlake-spezifische Erweiterung erweitert, um diese Fehler zu dokumentieren. Die Einträge in der Paketantwort enthalten Ressourcen wie folgt: OperationOutcome
{ "resourceType": "Bundle", "type": "batch-response", "timestamp": "2025-08-25T22:58:48.846287342Z", "entry": [ { "response": { "status": "201", "location": "Patient/195abc49-ba8e-4c8b-95c2-abc88fef7544/_history/1", "etag": "W/\"1\"", "lastModified": "2025-08-25T22:58:48.801245445Z", "outcome": { "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "processing", "details": { "text": "FHIR resource in payload failed FHIR validation rules." }, "diagnostics": "FHIR resource in payload failed FHIR validation rules." } ] } } } ] }
Zusätzlich wird der folgende HTTP-Antwort-Header mit dem Wert „true“ enthalten sein:
x-amzn-healthlake-validation-issues : true
Anmerkung
Beachten Sie, dass aufgenommene Daten, die gemäß der R4-Spezifikation falsch formatiert sind, möglicherweise nicht wie erwartet durchsucht werden können, wenn diese Fehler vorliegen.
Eingeschränkte Unterstützung für den Pakettyp „Nachricht“
HealthLake bietet begrenzte Unterstützung für den FHIR-Bundle-Typ message durch einen internen Konvertierungsprozess. Diese Unterstützung ist für Szenarien konzipiert, in denen Nachrichtenpakete nicht an der Quelle neu formatiert werden können, z. B. beim Aufnehmen von ADT-Feeds (Admission, Discharge, Transfer) aus älteren Krankenhaussystemen.
Warnung
Diese Funktion erfordert eine explizite Zuteilung von AWS Konten und erzwingt weder die Semantik noch die referenzielle Integrität von FHIR R4-Nachrichten. Wenden Sie sich an den AWS Support, um die Aktivierung Ihres Kontos zu beantragen, bevor Sie Nachrichtenpakete verwenden.
Wesentliche Unterschiede zur standardmäßigen Nachrichtenverarbeitung
-
Nachrichtenpakete (FHIR-Spezifikation): Der erste Eintrag muss ein Eintrag sein
MessageHeader, der auf andere Ressourcen verweist. Ressourcen fehlen einzelnerequestObjekte, und das MessageHeader Ereignis bestimmt die Verarbeitungsaktionen. -
HealthLake Verarbeitung: Konvertiert Nachrichtenpakete in Batch-Bundles, indem jedem Ressourceneintrag automatisch PUT-Operationen zugewiesen werden. Ressourcen werden unabhängig voneinander verarbeitet, ohne dass Nachrichtensemantik oder referentielle Integrität erzwungen werden.
Wichtige Einschränkungen
-
Die FHIR Message-specific R4-Verarbeitungsregeln werden nicht durchgesetzt
-
Keine ressourcenübergreifende Transaktionsintegrität
-
Inter-resource Referenzen werden nicht validiert
-
Erfordert eine explizite Zuteilung von Konten
Beispiel für eine Nachrichtenpaket-Struktur
{ "resourceType": "Bundle", "type": "message", "entry": [ { "resource": { "resourceType": "MessageHeader", "eventCoding": { "system": "http://hl7.org/fhir/us/davinci-alerts/CodeSystem/notification-event", "code": "notification-admit" }, "focus": [{"reference": "Encounter/example-id"}] } }, { "resource": {"resourceType": "Patient", "id": "example-id"} }, { "resource": {"resourceType": "Encounter", "id": "example-id"} } ] }
Anmerkung
Jede Ressource wird unabhängig gespeichert, als ob sie über einzelne PUT-Operationen übermittelt worden wäre. Wenn eine vollständige Überprüfung der FHIR-Nachrichtensemantik oder der referentiellen Integrität erforderlich ist, verarbeiten Sie Nachrichtenpakete vorab oder implementieren Sie vor der Übermittlung eine Validierung auf Anwendungsebene.
Asynchrone Pakettransaktionen
AWS HealthLake unterstützt den asynchronen Bundle Typtransaction, mit dem Sie Transaktionen mit bis zu 500 Ressourcen einreichen können. Wenn Sie eine asynchrone Transaktion einreichen, wird sie zur Verarbeitung in die HealthLake Warteschlange gestellt und sofort eine Abfrage-URL zurückgegeben. Sie können diese URL verwenden, um den Status zu überprüfen und die Antwort abzurufen. Dies folgt dem asynchronen FHIR-Bundlemuster.
Wann sollten asynchrone Transaktionen verwendet werden
-
Sie müssen mehr als 100 Ressourcen (synchrones Limit) in einer einzigen Transaktion einreichen.
-
Sie möchten vermeiden, dass Ihre Anwendung blockiert wird, während Sie auf den Abschluss der Transaktionsverarbeitung warten.
-
Sie müssen große Mengen verwandter Ressourcen mit besserem Durchsatz verarbeiten.
Wichtig
Die Umfrageergebnisse sind nach Abschluss der Transaktion 90 Tage lang verfügbar. Nach Ablauf dieser 90 Tage gibt die Abfrage-URL keine Ergebnisse mehr zurück. Entwerfen Sie Ihre Integration so, dass Ergebnisse in diesem Fenster abgerufen und gespeichert werden.
Anmerkung
Der synchrone Bundle Typ unterstützt transaction weiterhin bis zu 100 Ressourcen und ist der Standardverarbeitungsmodus. Wenn Sie einen Bundle Typ transaction mit mehr als 100 Ressourcen ohne Prefer: respond-async Header senden, wird ein 422 Unprocessable Entity Fehler HealthLake zurückgegeben. Pakete mit Typ batch werden für die asynchrone Verarbeitung nicht unterstützt. Nur der Bundle Typ transaction kann asynchron gesendet werden (mit bis zu 500 Vorgängen).
Anmerkung
PATCHOperationen und bedingte PUTs werden in asynchronen Bundle-Transaktionen nicht unterstützt.
Senden einer asynchronen Transaktion
Um eine asynchrone Transaktion zu senden, senden Sie eine POST Anforderung mit dem Header an den Datenspeicher-Endpunkt. Prefer: respond-async Das Paket muss einen Typ haben. transaction Bundles mit Typ batch werden für die asynchrone Paketverarbeitung nicht unterstützt.
HealthLake führt bei der Einreichung erste Validierungen für das Paket durch. Wenn die Validierung erfolgreich ist, wird HTTP 202 Accepted mit einem content-location Antwort-Header HealthLake zurückgegeben, der die Abfrage-URL enthält.
Um eine asynchrone Transaktion vom Typ Bundle einzureichen
-
Senden Sie eine
POSTAnfrage an den HealthLake Datenspeicher-Endpunkt.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Konstruieren Sie einen JSON-Text für die Anfrage mit dem Pakettyp
transaction. Speichern Sie die Datei für dieses Verfahren unterasync-transaction.json.{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "resource": { "resourceType": "Patient", "active": true, "name": [ { "use": "official", "family": "Smith", "given": ["Jane"] } ], "gender": "female", "birthDate": "1990-01-15" }, "request": { "method": "POST", "url": "Patient" } }, { "resource": { "resourceType": "Observation", "status": "final", "code": { "coding": [ { "system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel" } ] }, "subject": { "reference": "urn:uuid:example-patient-id" } }, "request": { "method": "POST", "url": "Observation" } } ] } -
Senden Sie die Anfrage mit dem
Prefer: respond-asyncHeader. DerBundleFHIR-Transaktionstyp verwendet bei FHIR-Autorisierung einePOSTAnfrage mit entweder AWS Signature Version 4 oder SMART. Im folgenden Codebeispiel wird dascurlBefehlszeilentool zu Demonstrationszwecken verwendet. -
Bei erfolgreicher Übermittlung gibt der Server HTTP 202 Accepted zurück. Der
content-locationAntwortheader enthält die Abfrage-URL. Der Antworttext ist eineOperationOutcomeRessource.HTTP/1.1 202 Accepted content-location: https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Transaction/transactionId{ "resourceType": "OperationOutcome", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "Submitted Asynchronous Bundle Transaction", "location": [ "https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Transaction/transactionId" ] } ] }
Abfrage des Transaktionsstatus
Nachdem Sie eine asynchrone Transaktion eingereicht haben, verwenden Sie die Abfrage-URL aus dem content-location Antwort-Header, um den Transaktionsstatus zu überprüfen. Senden Sie eine GET Anfrage an die Abfrage-URL.
Anmerkung
Für SMART auf FHIR-fähigen Datenspeichern muss das Autorisierungstoken read Berechtigungen für den Transaction Ressourcentyp enthalten, um den Transaktionsstatus abzufragen. Weitere Informationen zu SMART in FHIR-Bereichen finden Sie unter. SMART auf FHIR OAuth 2.0-Bereichen, unterstützt von HealthLake
Senden Sie eine GET Anfrage an die Abfrage-URL. Im folgenden Beispiel wird das curl Befehlszeilentool verwendet.
In der folgenden Tabelle werden die möglichen Antworten beschrieben.
| HTTP-Status | Bedeutung | Antworttext |
|---|---|---|
| 202 Akzeptiert | Die Transaktion befindet sich in der Warteschlange | OperationOutcomemit der Diagnose „EINGEREICHT“ |
| 202 Akzeptiert | Die Transaktion wird bearbeitet | OperationOutcomemit Diagnose „IN_PROGRESS“ |
| 200 OK | Transaktion erfolgreich abgeschlossen | Bundlemit Typ transaction-response |
| 4xx/5xx | Transaktion ist fehlgeschlagen | OperationOutcomemit Fehlerdetails |
Die folgenden Beispiele zeigen jeden Antworttyp.
Transaktion in die Warteschlange gestellt (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "SUBMITTED" } ] }
Transaktionsverarbeitung (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "IN_PROGRESS" } ] }
Transaktion abgeschlossen (200)
{ "resourceType": "Bundle", "type": "transaction-response", "entry": [ { "response": { "status": "201", "location": "Patient/example-id/_history/1", "etag": "W/\"1\"", "lastModified": "2024-01-15T10:30:00.000Z" } }, { "response": { "status": "201", "location": "Observation/example-id/_history/1", "etag": "W/\"1\"", "lastModified": "2024-01-15T10:30:00.000Z" } } ] }
Transaktion ist fehlgeschlagen (4xx/5xx)
{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Transaction failed: conflict detected on resource Patient/example-id" } ] }
Bestellung wird bearbeitet
Asynchrone Pakete des Typs transaction befinden sich in der Warteschlange, werden aber nicht in strikter Reihenfolge verarbeitet. HealthLake optimiert die Verarbeitung auf der Grundlage der verfügbaren Kapazität und der Systemlast.
Wichtig
Verlassen Sie sich nicht darauf, dass Transaktionen in der Reihenfolge verarbeitet werden, in der sie eingereicht wurden. Wenn Sie beispielsweise Transaktion A um 10:00 Uhr und Transaktion B um 10:01 Uhr einreichen, wird Transaktion B möglicherweise vor Transaktion A abgeschlossen. Gestalten Sie Ihren Antrag wie folgt:
-
Bearbeiten Sie den Abschluss einer Bestellung, die nicht abgeschlossen wurde.
-
Verwenden Sie die Abfrage-URL, um jede Transaktion unabhängig zu verfolgen.
-
Implementieren Sie eine Sequenzierung auf Anwendungsebene, wenn die Reihenfolge für Ihren Anwendungsfall wichtig ist.
Kontingente und Drosselung
Die folgenden Kontingente und Ratenbeschränkungen gelten für asynchrone Transaktionen.
| Kontingent | Wert | Einstellbar |
|---|---|---|
| Maximale Anzahl an Vorgängen pro asynchroner Transaktion | 500 | Nein |
| Maximale Anzahl ausstehender Transaktionen pro Datenspeicher | 500 | Ja |
-
Für asynchrone Transaktionen gelten dieselben API-Ratenlimits, die unter definiert sind. Servicekontingente
-
Für Abfragen des Transaktionsstatus gelten dieselben API-Ratenlimits wie für read (
GET) -Operationen auf FHIR-Ressourcen. -
Wenn das Limit für ausstehende Transaktionen erreicht ist, geben nachfolgende Übermittlungen einen Fehler zurück, bis bestehende Transaktionen abgeschlossen sind.
Fehlerbehandlung
Bei einem Transaktionspaket werden alle im Paket enthaltenen FHIR-Ressourcen als atomare Operation verarbeitet. Alle Ressourcen in der Operation müssen erfolgreich sein, oder es werden keine Operationen im Paket verarbeitet.
Fehler lassen sich in zwei Kategorien einteilen: Übertragungsfehler, die synchron HealthLake zurückgegeben werden, und Verarbeitungsfehler, die Sie durch Abfragen abrufen.
Fehler beim Einreichen
HealthLake validiert das Paket zum Zeitpunkt der Einreichung und gibt synchron Fehler zurück, bevor die Transaktion in die Warteschlange gestellt wird. Zu den Übermittlungsfehlern gehören ungültige FHIR-Ressourcenvalidierungsfehler, nicht unterstützte Ressourcentypen, das Überschreiten der Grenze von 500 Vorgängen und die Verwendung des Prefer: respond-async Headers mit Batch-Bundles. Wenn das Limit für ausstehende Transaktionen für den Datenspeicher erreicht wurde, HealthLake wird a zurückgegeben. ThrottlingException Wenn ein Übermittlungsfehler auftritt, wird die Transaktion nicht in die Warteschlange gestellt.
Fehler bei der Verarbeitung
Verarbeitungsfehler treten auf, nachdem die Transaktion in die Warteschlange gestellt wurde, und werden über die Abfrage-URL zurückgegeben. Dazu gehören Transaktionskonflikte, bei denen durch einen anderen Vorgang eine Ressource geändert wurde, die Teil der Transaktion ist, und Serverfehler während der Verarbeitung. Wenn ein Verarbeitungsfehler auftritt, werden keine Ressourcenmutationen für Ressourcen in der Transaktion vorgenommen. Die Abfrage-URL gibt eine OperationOutcome mit den Fehlerdetails zurück.