Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Agrupación de recursos del FHIR
Un FHIR Bundle es un contenedor para una colección de recursos del FHIR. AWS HealthLake AWS HealthLake admite dos tipos de paquetes con diferentes comportamientos de procesamiento.
Batch
Transaction
| Característica | Lote | Transacción |
|---|---|---|
| Modelo de procesamiento | Cada operación tiene éxito o falla de forma independiente. | Todas las operaciones se realizan correctamente o fallan como una sola unidad atómica. |
| Administración de errores | El procesamiento continúa incluso si las operaciones individuales fallan. | Se produce un error en todo el paquete si se produce un error en una sola operación. |
| Orden de ejecución | La orden de ejecución no está garantizada. | Las operaciones se procesan en el orden especificado. |
| Integridad referencial | No se aplica en todas las operaciones. | Se aplica a los recursos de referencia local del paquete. |
| Más adecuado para | Operaciones masivas en las que el éxito parcial es aceptable. | Recursos relacionados que deben crearse o actualizarse de forma conjunta. |
Puede agrupar recursos del FHIR del mismo tipo o de tipos diferentes, y estos pueden incluir una combinación de operaciones del FHIR, comocreate,, read updatedelete, y. patch Para obtener información adicional, consulte el paquete de recursos
A continuación se muestran ejemplos de casos de uso para cada tipo de paquete.
- Paquetes por lotes
-
-
Cargue varios registros de pacientes no relacionados de diferentes centros durante la sincronización de datos nocturna.
-
Cargue de forma masiva registros históricos de medicamentos cuando algunos registros puedan tener problemas de validación.
-
Cargue datos de referencia, como los de organizaciones y profesionales, cuando los errores individuales no afecten a otras entradas.
-
- Paquetes de transacciones
-
-
Cree un paciente con observaciones y afecciones relacionadas durante el ingreso a un servicio de urgencias, donde todos los datos deben registrarse juntos.
-
Actualice la lista de medicamentos de un paciente y la información relacionada con las alergias, que deben ser coherentes.
-
Registra el encuentro completo con el paciente, las observaciones, los procedimientos y la información de facturación en una sola unidad atómica.
-
importante
Tanto los paquetes de lotes como los de transacciones utilizan la misma estructura Bundle de recursos. La única diferencia es el valor del type campo.
El siguiente ejemplo muestra un paquete de transacciones con varios tipos de recursos y operaciones.
{ "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" } } ] }
Agrupar los recursos del FHIR como entidades independientes
Para agrupar los recursos del FHIR como entidades independientes
-
Coleccionar HealthLake
regionydatastoreIdvalorar. Para obtener más información, consulte Obtención de propiedades de los almacenes de datos. -
Cree una URL para la solicitud utilizando los valores recopilados para HealthLake
regionydatastoreId. No especifique un tipo de recurso FHIR en la URL. Para ver la ruta URL completa en el siguiente ejemplo, desplázate sobre el botón Copiar.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Crea un cuerpo JSON para la solicitud especificando cada verbo HTTP como parte de los
methodelementos. En el siguiente ejemplo, se utiliza una interacción debatchtipos con elBundlerecurso para crear nuevosPatientMedicationrecursos. Todas las secciones obligatorias se comentan en consecuencia. Para este procedimiento, guarde el archivo comobatch-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" } } ] } -
Envíe la solicitud . El tipo de
Bundlelote FHIR utiliza unaPOSTsolicitud con la autorización AWS Signature Version 4 o SMART on FHIR. En el siguiente ejemplo de código, se utiliza la herramienta de línea decurlcomandos con fines de demostración.El servidor devuelve una respuesta que muestra los
MedicationrecursosPatienty los recursos creados como resultado de la solicitud de tipo deBundlelote.
Las PUT condicionales en paquetes
AWS HealthLake admite actualizaciones condicionales dentro de paquetes mediante los siguientes parámetros de consulta:
nota
Las PUT condicionales solo se admiten en batch paquetes. Transactionlos paquetes no admiten PUT condicionales.
-
_id(independiente) -
_iden combinación con una de las siguientes opciones:-
_tag -
createdAt -
_lastUpdated
-
Al usar PUT condicionales en paquetes, AWS HealthLake evalúa los parámetros de la consulta comparándolos con los recursos existentes y toma medidas en función de los resultados de las coincidencias.
| Escenario | Estado HTTP | Acción tomada |
|---|---|---|
| Recurso sin identificación proporcionada | 201 Creado | Crea siempre un nuevo recurso. |
| Recurso con un nuevo identificador (no coincide) | 201 Creado | Crea un nuevo recurso con el ID especificado. |
| Recurso con un ID existente (coincidencia única) | 200 OK | Actualiza el recurso coincidente. |
| Recurso con un identificador existente (se ha detectado un conflicto) | Conflicto, 409 | Devuelve un error. No se realiza ningún cambio. |
| Recurso con un identificador existente (el identificador no coincide) | 400: solicitud maligna | Devuelve un error. No se realiza ningún cambio. |
| Varios recursos cumplen las condiciones | Condición previa con error, 412 | Devuelve un error. No se realiza ningún cambio. |
En el siguiente paquete de ejemplo con una actualización condicional, el Patient recurso con el identificador FHIR solo se 476 actualiza si _lastUpdated=lt2025-04-20 se cumple la condición.
{ "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" } } ] }
Agrupar los recursos del FHIR como una sola entidad
Para agrupar los recursos del FHIR como una sola entidad
-
Coleccionar HealthLake
regionydatastoreIdvalorar. Para obtener más información, consulte Obtención de propiedades de los almacenes de datos. -
Cree una URL para la solicitud utilizando los valores recopilados para HealthLake
regionydatastoreId. Incluya el tipo de recurso FHIRBundlecomo parte de la URL. Para ver la ruta URL completa en el siguiente ejemplo, desplázate sobre el botón Copiar.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/Bundle -
Crea un cuerpo JSON para la solicitud, especificando los recursos del FHIR que quieres agrupar. El siguiente ejemplo agrupa dos
Patientrecursos. HealthLake Para este procedimiento, guarde el archivo comobatch-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" ] } ] } } ] } -
Envíe la solicitud . El tipo de
Bundledocumento FHIR utiliza unaPOSTsolicitud con el protocolo de AWS firma Signature Version 4. En el siguiente ejemplo de código, se utiliza la herramienta de línea decurlcomandos con fines de demostración.El servidor devuelve una respuesta que muestra dos
Patientrecursos creados como resultado de la solicitud de tipo deBundledocumento.
Configurar el nivel de validación de los paquetes
Al agrupar los recursos del FHIR, si lo desea, puede especificar un encabezado x-amzn-healthlake-fhir-validation-level HTTP para configurar un nivel de validación para el recurso. Este nivel de validación se establecerá para todas las solicitudes de creación y actualización del paquete. AWS HealthLake actualmente admite los siguientes niveles de validación:
-
strict: Los recursos se validan según el elemento de perfil del recurso o según la especificación R4 si no hay ningún perfil. Este es el nivel de validación predeterminado para AWS HealthLake. -
structure-only: Los recursos se validan con R4, ignorando los perfiles a los que se hace referencia. -
minimal: Los recursos se validan mínimamente, ignorando ciertas reglas de R4. Los recursos que no superen las comprobaciones de estructura necesarias se search/analytics actualizarán para incluir una advertencia de auditoría.
Los recursos incluidos con el nivel de validación mínimo se pueden incorporar a un almacén de datos a pesar de no superar la validación necesaria para la indexación de las búsquedas. En este caso, los recursos se actualizarán para incluir una extensión específica de Healthlake que documente dichas fallas, y las entradas de la respuesta del paquete incluirán los recursos de la siguiente manera: 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." } ] } } } ] }
Además, se incluirá el siguiente encabezado de respuesta HTTP con el valor «true»:
x-amzn-healthlake-validation-issues : true
nota
Tenga en cuenta que es posible que los datos ingeridos que estén mal formados de acuerdo con la especificación R4 no se puedan buscar de la manera esperada si se presentan estos errores.
Soporte limitado para el tipo de paquete «mensaje»
HealthLake proporciona soporte limitado para el tipo de paquete FHIR message mediante un proceso de conversión interno. Esta compatibilidad está diseñada para situaciones en las que los paquetes de mensajes no se pueden formatear en su origen, por ejemplo, cuando se ingieren canales ADT (admisión, alta y transferencia) de sistemas hospitalarios antiguos.
aviso
Esta función requiere la inclusión explícita de AWS cuentas permitidas y no exige la semántica de los mensajes del FHIR R4 ni su integridad referencial. Ponte en contacto con AWS el equipo de soporte para solicitar la habilitación de tu cuenta antes de usar los paquetes de mensajes.
Diferencias clave con respecto al procesamiento de mensajes estándar
-
Paquetes de mensajes (especificación FHIR): la primera entrada debe ser una
MessageHeaderque haga referencia a otros recursos. Los recursos carecen derequestobjetos individuales y el MessageHeader evento determina las acciones de procesamiento. -
HealthLake Procesamiento: convierte los paquetes de mensajes en paquetes por lotes mediante la asignación automática de operaciones PUT a cada entrada de recurso. Los recursos se procesan de forma independiente sin imponer la semántica de los mensajes ni la integridad referencial.
Limitaciones importantes
-
Las reglas de Message-specific procesamiento del FHIR R4 no se aplican
-
No hay integridad transaccional en todos los recursos
-
Inter-resource las referencias no están validadas
-
Requiere una lista explícita de permisos de cuentas
Ejemplo de estructura de paquetes de mensajes
{ "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
Cada recurso se almacena de forma independiente, como si se hubiera enviado mediante operaciones PUT individuales. Si se requiere una validación completa de la semántica de la mensajería o de la integridad referencial del FHIR, procese previamente los paquetes de mensajes o implemente la validación a nivel de aplicación antes de enviarlos.
Transacciones de paquetes asincrónicas
AWS HealthLake admite el Bundle tipo asincrónico transaction que le permite enviar transacciones con hasta 500 recursos. Cuando envías una transacción asincrónica, la pones en HealthLake cola para su procesamiento e inmediatamente devuelve una URL de sondeo. Puedes usar esta URL para comprobar el estado y recuperar la respuesta. Sigue el patrón de paquetes asíncronos del FHIR.
Cuándo usar transacciones asincrónicas
-
Debes enviar más de 100 recursos (límite sincrónico) en una sola transacción.
-
Quieres evitar bloquear tu solicitud mientras esperas a que finalice el procesamiento de la transacción.
-
Necesita procesar grandes volúmenes de recursos relacionados con un mejor rendimiento.
importante
Los resultados de las encuestas están disponibles durante 90 días después de que se complete la transacción. Transcurrido este período de 90 días, la URL de la encuesta ya no arroja resultados. Diseñe su integración para recuperar y almacenar los resultados en esta ventana.
nota
El Bundle tipo sincrónico transaction sigue admitiendo hasta 100 recursos y es el modo de procesamiento predeterminado. Si envía un Bundle tipo transaction con más de 100 recursos sin el Prefer: respond-async encabezado, HealthLake devuelve un 422 Unprocessable Entity error. Los paquetes con tipos no batch se admiten para el procesamiento asincrónico; solo los Bundle tipos se transaction pueden enviar de forma asincrónica (con un máximo de 500 operaciones).
nota
PATCHlas operaciones y las PUT condicionales no se admiten en las transacciones de paquetes asincrónicas.
Enviar una transacción asincrónica
Para enviar una transacción asincrónica, envíe una POST solicitud al punto final del almacén de datos con el encabezado. Prefer: respond-async El paquete debe tener un tipo. transaction Los lotes con tipo no batch son compatibles con el procesamiento asincrónico de paquetes.
HealthLake realiza las validaciones iniciales del paquete en el momento del envío. Si la validación se realiza correctamente, HealthLake devuelve HTTP 202 Accepted con un encabezado de content-location respuesta que contiene la URL de la encuesta.
Para enviar una transacción de tipo paquete asincrónica
-
Envíe una
POSTsolicitud al punto final del almacén de HealthLake datos.POST https://healthlake.region.amazonaws.com/datastore/datastoreId/r4/ -
Crea un cuerpo JSON para la solicitud con el tipo de paquete
transaction. Para este procedimiento, guarde el archivo comoasync-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" } } ] } -
Envíe la solicitud con el
Prefer: respond-asyncencabezado. El tipo deBundletransacción del FHIR utiliza unaPOSTsolicitud con la autorización AWS Signature Version 4 o SMART on FHIR. El siguiente ejemplo de código utiliza la herramienta de línea decurlcomandos con fines de demostración. -
Si el envío se realiza correctamente, el servidor devuelve HTTP 202 Accepted. El encabezado de la
content-locationrespuesta contiene la URL de la encuesta. El cuerpo de la respuesta es unOperationOutcomerecurso.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" ] } ] }
Sondeo para conocer el estado de la transacción
Después de enviar una transacción asincrónica, usa la URL de sondeo que aparece en el encabezado de la content-location respuesta para comprobar el estado de la transacción. Envía una GET solicitud a la URL de la encuesta.
nota
En el caso de los almacenes de datos compatibles con SMART en FHIR, el token de autorización debe incluir read permisos sobre el tipo de Transaction recurso para consultar el estado de la transacción. Para obtener más información sobre SMART en los ámbitos del FHIR, consulte. Los osciloscopios OAuth 2.0 SMART on FHIR son compatibles con HealthLake
Envíe una GET solicitud a la URL de la encuesta. En el siguiente ejemplo, se utiliza la herramienta de línea de curl comandos.
En la tabla siguiente se describen las posibles respuestas.
| Estado HTTP | Significado | Cuerpo de respuesta |
|---|---|---|
| 202: aceptada | La transacción está en cola | OperationOutcomecon el diagnóstico «ENVIADO» |
| 202: aceptada | La transacción se está procesando | OperationOutcomecon el diagnóstico «IN_PROGRESS» |
| 200 OK | La transacción se completó correctamente | Bundlecon tipo transaction-response |
| 4xx/5xx | Fallo en la transacción | OperationOutcomecon detalles del error |
Los siguientes ejemplos muestran cada tipo de respuesta.
Transacción en cola (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "SUBMITTED" } ] }
Procesamiento de transacciones (202)
{ "resourceType": "OperationOutcome", "id": "transactionId", "issue": [ { "severity": "information", "code": "informational", "diagnostics": "IN_PROGRESS" } ] }
Transacción completada (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" } } ] }
Transacción fallida (4xx/5xx)
{ "resourceType": "OperationOutcome", "issue": [ { "severity": "error", "code": "exception", "diagnostics": "Transaction failed: conflict detected on resource Patient/example-id" } ] }
Procesando el pedido
Los paquetes asincrónicos de este tipo transaction están en cola, pero no se procesan siguiendo un orden de envío estricto. HealthLake optimiza el procesamiento en función de la capacidad disponible y la carga del sistema.
importante
No dependa de que las transacciones se procesen en el orden en que se enviaron. Por ejemplo, si envías la transacción A a las 10:00 a. m. y la transacción B a las 10:01 a. m., la transacción B podría completarse antes que la transacción A. Diseñe su solicitud para:
-
Gestione la finalización de los pedidos pendientes.
-
Usa la URL de sondeo para rastrear cada transacción de forma independiente.
-
Implemente la secuenciación a nivel de aplicación si el orden es importante para su caso de uso.
Cuotas y limitaciones
Las siguientes cuotas y límites de velocidad se aplican a las transacciones asincrónicas.
| Cuota | Valor | Ajustable |
|---|---|---|
| Máximo de operaciones por transacción asincrónica | 500 | No |
| Número máximo de transacciones pendientes por almacén de datos | 500 | Sí |
-
Las transacciones asincrónicas comparten los mismos límites de velocidad de API definidos en. Cuotas de servicio
-
La consulta del estado de las transacciones comparte los mismos límites de velocidad de API que las operaciones de lectura (
GET) en los recursos del FHIR. -
Si se alcanza el límite de transacciones pendientes, los envíos posteriores arrojan un error hasta que se completen las transacciones existentes.
Gestión de errores
En el caso de un paquete de «transacciones», todos los recursos del FHIR contenidos en el paquete se procesan como una operación atómica. Todos los recursos de la operación deben realizarse correctamente o no se procesará ninguna operación del paquete.
Los errores se clasifican en dos categorías: los errores de envío, que se HealthLake devuelven de forma sincrónica, y los errores de procesamiento, que se recuperan mediante sondeos.
Errores de envío
HealthLake valida el paquete en el momento del envío y devuelve los errores de forma sincrónica antes de que la transacción pase a la cola. Entre los errores de envío se incluyen los errores de validación de recursos del FHIR no válidos, los tipos de recursos no admitidos, la superación del límite de 500 operaciones y el uso del encabezado con los Prefer: respond-async paquetes por lotes. Si se ha alcanzado el límite de transacciones pendientes del banco de datos, HealthLake devuelve un. ThrottlingException Cuando se produce un error de envío, la transacción no se pondrá en cola.
Errores de procesamiento
Los errores de procesamiento se producen después de que la transacción se haya puesto en cola y se devuelven a través de la URL de sondeo. Estos incluyen los conflictos de transacciones, en los que otra operación modificó un recurso que forma parte de la transacción, y los errores del servidor durante el procesamiento. Cuando se produce un error de procesamiento, no se produce ninguna mutación en los recursos de la transacción. La URL de sondeo devolverá una OperationOutcome con los detalles del error.