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.
Idempotencia y concurrencia
Claves de idempotencia
AWS HealthLake admite claves de idempotencia para las POST operaciones del FHIR, lo que proporciona un mecanismo sólido para garantizar la integridad de los datos durante la creación de los recursos. Al incluir un UUID único como clave de idempotencia en el encabezado de la solicitud, las aplicaciones sanitarias pueden garantizar que cada recurso del FHIR se cree exactamente una vez, incluso en escenarios que impliquen inestabilidad de la red o reintentos automáticos.
Esta característica es particularmente crucial para los sistemas de salud, donde la duplicación de registros médicos podría tener graves consecuencias. Cuando se reciba una solicitud con la misma clave de idempotencia que una solicitud anterior, HealthLake devolverá el recurso original en lugar de crear un duplicado. Por ejemplo, esto podría ocurrir durante un ciclo de reintento o debido a canalizaciones de solicitudes redundantes. El uso de la clave de idempotencia permite mantener la coherencia de los datos y, HealthLake al mismo tiempo, proporciona una experiencia perfecta para las aplicaciones cliente que gestionan problemas de conectividad intermitentes.
Implementación
POST/<baseURL>/Patient x-amz-fhir-idempotency-key: 123e4567-e89b-12d3-a456-426614174000 { "resourceType": "Patient", "name": [...] }
Escenarios de respuesta
- Primera solicitud (201 creada)
-
-
El nuevo recurso se creó correctamente
-
La respuesta incluye el identificador del recurso
-
- Solicitud duplicada (409 Conflicto)
-
-
Se detectó la misma clave de idempotencia
-
Recurso original devuelto
-
No se ha creado ningún recurso nuevo
-
- Solicitud no válida (400 solicitudes incorrectas)
-
-
UUID mal formado
-
Faltan campos obligatorios
-
Prácticas recomendadas
-
Genera un UUID único para cada nueva creación de recursos
-
Almacene las claves de idempotencia para la lógica de reintento
-
Utilice un formato de clave coherente: se recomienda el UUID v4
-
Implételo en las aplicaciones cliente que gestionen la creación de recursos
nota
Esta función es particularmente valiosa para los sistemas de salud que requieren una precisión de datos estricta y evitan la duplicación de registros médicos.
ETag en AWS HealthLake
AWS HealthLake utiliza un control ETags de simultaneidad optimista en los recursos del FHIR, proporcionando un mecanismo fiable para gestionar las modificaciones simultáneas y mantener la coherencia de los datos. Un ETag es un identificador único que representa una versión específica de un recurso y funciona como un sistema de control de versiones a través de encabezados HTTP. Al leer o modificar los recursos, las aplicaciones pueden utilizarlos ETags para evitar sobrescrituras no deseadas y garantizar la integridad de los datos, especialmente en escenarios con posibles actualizaciones simultáneas.
Ejemplo de implementación
// Initial Read GET /fhir/Patient/123 Response: ETag: W/"1" // Update with If-Match PUT /fhir/Patient/123 If-Match: W/"1" {resource content} // Create with If-None-Match PUT /fhir/Patient/123 If-None-Match: * {resource content} // Succeeds only if resource doesn't exist // Fails with 412 if resource exists
Escenarios de respuesta
- Funcionamiento exitoso (200 OK o 204 sin contenido)
-
-
ETag coincide con la versión actual
-
La operación se desarrolla según lo previsto
-
- Conflicto de versión (error en la condición previa 412)
-
-
ETag no coincide con la versión actual
-
Actualización rechazada para evitar la pérdida de datos
-
Prácticas recomendadas
-
Incluir ETags en todas las operaciones de actualización y eliminación
-
Implemente la lógica de reintento para gestionar los conflictos de versiones
-
Utilice If-None-Match: * para escenarios create-if-not-exists
-
Compruebe siempre la ETag frescura antes de realizar modificaciones
Este sistema de control de simultaneidad es esencial para mantener la integridad de los datos de atención médica, especialmente en entornos con varios usuarios o sistemas que acceden a los mismos recursos y los modifican.