Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Raggruppamento delle risorse FHIR
Un FHIR Bundle è un contenitore per una raccolta di risorse FHIR in. AWS HealthLake AWS HealthLake supporta due tipi di pacchetti con comportamenti di elaborazione diversi.
Batch
Transaction
| Funzionalità | Archiviazione | Transaction |
|---|---|---|
| Modello di elaborazione | Ogni operazione riesce o fallisce indipendentemente. | Tutte le operazioni riescono o falliscono come una singola unità atomica. |
| Gestione degli errori | L'elaborazione continua anche se le singole operazioni falliscono. | L'intero pacchetto fallisce se una singola operazione fallisce. |
| Ordine di esecuzione | L'ordine di esecuzione non è garantito. | Le operazioni vengono elaborate nell'ordine specificato. |
| Integrità referenziale | Non applicata in tutte le operazioni. | Applicato per le risorse referenziate localmente all'interno del pacchetto. |
| Ideale per | Operazioni in blocco in cui il successo parziale è accettabile. | Risorse correlate che devono essere create o aggiornate insieme. |
È possibile raggruppare risorse FHIR dello stesso tipo o di tipi diversi e possono includere una combinazione di operazioni FHIR, ad esempiocreate, readupdate, delete e. patch Per ulteriori informazioni, vedere Resource Bundle
Di seguito sono riportati alcuni esempi di casi d'uso per ogni tipo di pacchetto.
- Pacchetti in batch
-
-
Carica più cartelle cliniche non correlate provenienti da diverse strutture durante la sincronizzazione notturna dei dati.
-
Carica in blocco i registri storici dei farmaci, laddove alcuni documenti potrebbero presentare problemi di convalida.
-
Carica i dati di riferimento, ad esempio organizzazioni e professionisti, in cui i singoli errori non influiscono sugli altri dati.
-
- Pacchetti di transazioni
-
-
Crea un paziente con le relative osservazioni e condizioni durante un ricovero al pronto soccorso in cui tutti i dati devono essere registrati insieme.
-
Aggiorna l'elenco dei farmaci di un paziente e le relative informazioni sulle allergie che devono rimanere coerenti.
-
Registra un incontro completo con il paziente, le osservazioni, le procedure e le informazioni di fatturazione come un'unica unità atomica.
-
Importante
Sia i pacchetti batch che quelli di transazioni utilizzano la stessa Bundle struttura di risorse. L'unica differenza è il valore del type campo.
L'esempio seguente mostra un pacchetto di transazioni con più tipi di risorse e operazioni.
{ "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" } } ] }
Raggruppamento delle risorse FHIR come entità indipendenti
Raggruppare le risorse FHIR come entità indipendenti
-
Raccogli HealthLake
regione valori.datastoreIdPer ulteriori informazioni, consulta Ottenere le proprietà dell'archivio dati. -
Costruisci un URL per la richiesta utilizzando i valori raccolti per HealthLake
regionedatastoreId. Non specificate un tipo di risorsa FHIR nell'URL. Per visualizzare l'intero percorso dell'URL nell'esempio seguente, scorri il pulsante Copia.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Costruisci un corpo JSON per la richiesta, specificando ogni verbo HTTP come parte degli elementi.
methodL'esempio seguente utilizza un'interazionebatchdi tipo con laBundlerisorsa per creare nuove risorse.PatientMedicationTutte le sezioni obbligatorie vengono commentate di conseguenza. Ai fini di questa procedura, salvare il file con nome.batch-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" } } ] } -
Inviare la richiesta . Il tipo di
Bundlebatch FHIR utilizza unaPOSTrichiesta con autorizzazione AWS Signature Version 4 o SMART on FHIR. L'esempio di codice seguente utilizza lo strumento a riga dicurlcomando a scopo dimostrativo.Il server restituisce una risposta che mostra le
MedicationrisorsePatiente le risorse create come risultato della richiesta di tipoBundlebatch.
PUT condizionali in pacchetti
AWS HealthLake supporta gli aggiornamenti condizionali all'interno dei pacchetti utilizzando i seguenti parametri di interrogazione:
Nota
I PUT condizionali sono supportati solo nei pacchetti. batch Transactioni bundle non supportano i PUT condizionali.
-
_id(autonomo) -
_idin combinazione con uno dei seguenti:-
_tag -
createdAt -
_lastUpdated
-
Quando si utilizzano PUT condizionali nei pacchetti, AWS HealthLake valuta i parametri della query rispetto alle risorse esistenti e interviene in base ai risultati della corrispondenza.
| Scenario | Stato HTTP | Azione intrapresa |
|---|---|---|
| Risorsa senza ID fornito | 201 creato | Crea sempre una nuova risorsa. |
| Risorsa con nuovo ID (nessuna corrispondenza) | 201 creato | Crea una nuova risorsa con l'ID specificato. |
| Risorsa con ID esistente (corrispondenza singola) | 200 OK | Aggiorna la risorsa corrispondente. |
| Risorsa con ID esistente (conflitto rilevato) | 409 Conflitto | Restituisce un errore. Non viene apportata alcuna modifica. |
| Risorsa con ID esistente (ID non corrispondente) | 400 Richiesta non valida | Restituisce un errore. Non viene apportata alcuna modifica. |
| Diverse risorse soddisfano le condizioni | 412 Precondizione non riuscita | Restituisce un errore. Non viene apportata alcuna modifica. |
Nel seguente pacchetto di esempio con un aggiornamento condizionale, la Patient risorsa con ID FHIR si 476 aggiorna solo se la condizione _lastUpdated=lt2025-04-20 è soddisfatta.
{ "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" } } ] }
Raggruppamento delle risorse FHIR in un'unica entità
Per raggruppare le risorse FHIR come un'unica entità
-
Raccogli HealthLake
regione valori.datastoreIdPer ulteriori informazioni, consulta Ottenere le proprietà dell'archivio dati. -
Costruisci un URL per la richiesta utilizzando i valori raccolti per HealthLake
regionedatastoreId. Includi il tipo di risorsa FHIRBundlecome parte dell'URL. Per visualizzare l'intero percorso dell'URL nell'esempio seguente, scorri il pulsante Copia.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Bundle -
Costruisci un corpo JSON per la richiesta, specificando le risorse FHIR da raggruppare. L'esempio seguente raggruppa due risorse in.
PatientHealthLake Ai fini di questa procedura, salvare il file con nomebatch-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" ] } ] } } ] } -
Inviare la richiesta . Il tipo di
Bundledocumento FHIR utilizza unaPOSTrichiesta con protocollo di AWS firma Signature Version 4. L'esempio di codice seguente utilizza lo strumento a riga dicurlcomando a scopo dimostrativo.Il server restituisce una risposta che mostra due
Patientrisorse create come risultato della richiesta del tipo diBundledocumento.
Configurazione del livello di convalida per i pacchetti
Quando si raggruppano le risorse FHIR, è possibile specificare facoltativamente un'intestazione x-amzn-healthlake-fhir-validation-level HTTP per configurare un livello di convalida per la risorsa. Questo livello di convalida verrà impostato per tutte le richieste di creazione e aggiornamento all'interno del pacchetto. AWS HealthLake attualmente supporta i seguenti livelli di convalida:
-
strict: le risorse vengono convalidate in base all'elemento del profilo della risorsa o alla specifica R4 se non è presente alcun profilo. Questo è il livello di convalida predefinito per. AWS HealthLake -
structure-only: le risorse vengono convalidate rispetto a R4, ignorando qualsiasi profilo di riferimento. -
minimal: le risorse vengono convalidate minimamente, ignorando alcune regole R4. Le risorse che non superano i controlli di struttura richiesti search/analytics verranno aggiornate per includere un avviso di verifica.
Le risorse incluse nel livello di convalida minimo possono essere inserite in un Datastore nonostante la convalida fallita richiesta per l'indicizzazione delle ricerche. In questo caso, le risorse verranno aggiornate per includere un'estensione specifica di Healthlake per documentare tali errori e le voci all'interno della risposta del pacchetto includeranno le seguenti risorse: 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." } ] } } } ] }
Inoltre, la seguente intestazione della risposta HTTP verrà inclusa con il valore «true»:
x-amzn-healthlake-validation-issues : true
Nota
Tieni presente che i dati inseriti in modo errato secondo la specifica R4 potrebbero non essere ricercabili come previsto se sono presenti questi errori.
Supporto limitato per il tipo di pacchetto «messaggio»
HealthLake fornisce un supporto limitato per il tipo di pacchetto FHIR message attraverso un processo di conversione interno. Questo supporto è progettato per scenari in cui i pacchetti di messaggi non possono essere riformattati all'origine, ad esempio l'acquisizione di feed ADT (Admission, Discharge, Transfer) dai sistemi ospedalieri precedenti.
avvertimento
Questa funzionalità richiede un elenco esplicito degli AWS account e non applica la semantica dei messaggi FHIR R4 o l'integrità referenziale. Contatta l' AWS assistenza per richiedere l'abilitazione del tuo account prima di utilizzare i pacchetti di messaggi.
Principali differenze rispetto all'elaborazione standard dei messaggi
-
Pacchetti di messaggi (specifica FHIR): la prima voce deve essere una
MessageHeaderche fa riferimento ad altre risorse. Le risorse sono prive direquestoggetti singoli e l' MessageHeader evento determina le azioni di elaborazione. -
HealthLake Elaborazione: converte i pacchetti di messaggi in pacchetti batch assegnando automaticamente le operazioni PUT a ogni voce di risorsa. Le risorse vengono elaborate in modo indipendente senza applicare la semantica dei messaggi o l'integrità referenziale.
Limitazioni importanti
-
Le regole di Message-specific elaborazione FHIR R4 non vengono applicate
-
Nessuna integrità transazionale tra le risorse
-
Inter-resource i riferimenti non sono convalidati
-
Richiede un elenco esplicito delle autorizzazioni dell'account
Esempio di struttura del pacchetto di messaggi
{ "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"} } ] }
Nota
Ogni risorsa viene archiviata in modo indipendente come se fosse stata inviata tramite singole operazioni PUT. Se sono richieste la semantica completa della messaggistica FHIR o la convalida dell'integrità referenziale, preelabora i pacchetti di messaggi o implementa la convalida a livello di applicazione prima dell'invio.
Transazioni in bundle asincrone
AWS HealthLake supporta il Bundle tipo asincrono transaction che consente di inviare transazioni con un massimo di 500 risorse. Quando invii una transazione asincrona, la mette in HealthLake coda per l'elaborazione e restituisce immediatamente un URL di polling. Puoi utilizzare questo URL per verificare lo stato e recuperare la risposta. Questo segue lo schema del pacchetto asincrono FHIR.
Quando utilizzare le transazioni asincrone
-
È necessario inviare più di 100 risorse (limite sincrono) in una singola transazione.
-
Vuoi evitare di bloccare la tua applicazione in attesa del completamento dell'elaborazione della transazione.
-
È necessario elaborare elevati volumi di risorse correlate con un throughput migliore.
Importante
I risultati del sondaggio sono disponibili per 90 giorni dopo il completamento della transazione. Dopo questo periodo di 90 giorni, l'URL di polling non restituisce più risultati. Progetta la tua integrazione per recuperare e archiviare i risultati all'interno di questa finestra.
Nota
Il Bundle tipo sincrono transaction continua a supportare fino a 100 risorse ed è la modalità di elaborazione predefinita. Se invii un Bundle tipo transaction con più di 100 risorse senza l'Prefer: respond-asyncintestazione, HealthLake restituisce un 422 Unprocessable Entity errore. I pacchetti con tipo non batch sono supportati per l'elaborazione asincrona: solo il Bundle tipo transaction può essere inviato in modo asincrono (con un massimo di 500 operazioni).
Nota
PATCHle operazioni e le PUT condizionali non sono supportate nelle transazioni di bundle asincrone.
Invio di una transazione asincrona
Per inviare una transazione asincrona, invia una POST richiesta all'endpoint del data store con l'intestazione. Prefer: respond-async Il pacchetto deve avere un tipo. transaction I pacchetti con tipo non batch sono supportati per l'elaborazione asincrona dei pacchetti.
HealthLake esegue le convalide iniziali per il pacchetto al momento dell'invio. Se la convalida ha esito positivo, HealthLake restituisce HTTP 202 Accepted con un'intestazione di content-location risposta che contiene l'URL di polling.
Per inviare una transazione asincrona di tipo Bundle
-
Invia una
POSTrichiesta all'endpoint del HealthLake data store.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Costruisci un corpo JSON per la richiesta con il tipo di pacchetto.
transactionAi fini di questa procedura, salva il file come.async-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" } } ] } -
Invia la richiesta con l'
Prefer: respond-asyncintestazione. Il tipo diBundletransazione FHIR utilizza unaPOSTrichiesta con autorizzazione AWS Signature Version 4 o SMART on FHIR. Il seguente esempio di codice utilizza lo strumento a riga dicurlcomando a scopo dimostrativo. -
In caso di invio riuscito, il server restituisce HTTP 202 Accettato. L'intestazione della
content-locationrisposta contiene l'URL del polling. Il corpo della risposta è unaOperationOutcomerisorsa.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" ] } ] }
Sondaggio sullo stato della transazione
Dopo aver inviato una transazione asincrona, utilizza l'URL di polling nell'intestazione della content-location risposta per verificare lo stato della transazione. Invia una GET richiesta all'URL di polling.
Nota
Per gli archivi dati SMART su FHIR abilitati, il token di autorizzazione deve includere read le autorizzazioni sul tipo di Transaction risorsa per il polling dello stato della transazione. Per ulteriori informazioni sugli ambiti SMART on FHIR, vedere. SMART su ambiti FHIR OAuth 2.0 supportati da HealthLake
Invia una GET richiesta all'URL del polling. L'esempio seguente utilizza lo strumento da curl riga di comando.
La tabella seguente descrive le possibili risposte.
| Stato HTTP | Significato | Corpo di risposta |
|---|---|---|
| 202 Accettato | La transazione è in coda | OperationOutcomecon diagnostica «INVIATO» |
| 202 Accettato | La transazione è in fase di elaborazione | OperationOutcomecon diagnostica «IN_PROGRESS» |
| 200 OK | Transazione completata con successo | Bundlecon tipo transaction-response |
| 4xx/5xx | Transazione fallita | OperationOutcomecon i dettagli dell'errore |
Gli esempi seguenti mostrano ogni tipo di risposta.
Transazione in coda (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "SUBMITTED" } ] }
Elaborazione delle transazioni (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "IN_PROGRESS" } ] }
Transazione completata (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" } } ] }
Transazione fallita (4xx/5xx)
{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Transaction failed: conflict detected on resource Patient/example-id" } ] }
Elaborazione dell'ordine
I pacchetti di tipo asincrono vengono messi in coda ma non transaction vengono elaborati in un rigoroso ordine di invio. HealthLake ottimizza l'elaborazione in base alla capacità disponibile e al carico del sistema.
Importante
Non dipendono dalle transazioni in corso di elaborazione nell'ordine in cui sono state inviate. Ad esempio, se invii la Transazione A alle 10:00 e la Transazione B alle 10:01, la Transazione B potrebbe essere completata prima della Transazione A. Progetta la tua domanda in modo da:
-
Gestisci il completamento degli ordini non conformi.
-
Usa l'URL di polling per tracciare ogni transazione in modo indipendente.
-
Implementa il sequenziamento a livello di applicazione se l'ordine è importante per il tuo caso d'uso.
Quote e limitazioni
Le quote e i limiti di tasso seguenti si applicano alle transazioni asincrone.
| Quota | Valore | Regolabile |
|---|---|---|
| Numero massimo di operazioni per transazione asincrona | 500 | No |
| Numero massimo di transazioni in sospeso per archivio dati | 500 | Sì |
-
Le transazioni asincrone condividono gli stessi limiti di velocità API definiti in. Service Quotas
-
Il polling per lo stato delle transazioni condivide gli stessi limiti di velocità API delle operazioni read (
GET) sulle risorse FHIR. -
Se viene raggiunto il limite delle transazioni in sospeso, gli invii successivi restituiscono un errore fino al completamento delle transazioni esistenti.
Gestione degli errori
Per un pacchetto «transazione», tutte le risorse FHIR contenute nel pacchetto vengono elaborate come un'operazione atomica. Tutte le risorse dell'operazione devono avere esito positivo, altrimenti nessuna operazione del pacchetto viene elaborata.
Gli errori si dividono in due categorie: errori di invio che vengono HealthLake restituiti in modo sincrono ed errori di elaborazione recuperati tramite polling.
Errori di invio
HealthLake convalida il pacchetto al momento dell'invio e restituisce gli errori in modo sincrono prima che la transazione venga messa in coda. Gli errori di invio includono errori di convalida delle risorse FHIR non validi, tipi di risorse non supportati, superamento del limite di 500 operazioni e utilizzo dell'intestazione con bundle batch. Prefer: respond-async Se è stato raggiunto il limite di transazioni in sospeso per il data store, restituisce un. HealthLake ThrottlingException Quando si verifica un errore di invio, la transazione non verrà messa in coda.
Errori di elaborazione
Gli errori di elaborazione si verificano dopo che la transazione è stata messa in coda e vengono restituiti tramite l'URL di polling. Questi includono i conflitti di transazione, in cui un'altra operazione ha modificato una risorsa che fa parte della transazione, e gli errori del server durante l'elaborazione. Quando si verifica un errore di elaborazione, non vengono apportate modifiche alle risorse della transazione. L'URL di polling restituirà un messaggio OperationOutcome con i dettagli dell'errore.