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 que contiene una colección de recursos del FHIR. AWS HealthLake AWS HealthLake admite dos tipos de paquetes con comportamientos diferentes: o. batchtransaction
-
En el caso de un paquete «por lotes», cada recurso del FHIR contenido en el paquete se procesa y registra individualmente. Cada operación de recursos se trata de forma independiente de los demás recursos.
-
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 confirma ni almacena ninguna actualización de los recursos del paquete.
Puede agrupar recursos del FHIR del mismo tipo o de tipos diferentes, y estos pueden incluir una combinación de otras interacciones del FHIR definidas en este capítulo (p. ej.create,read, updatedelete, ysearch). Para obtener información adicional, consulte el paquete de recursos
Diferencias clave entre los paquetes de tipo Batch y Transaction:
- Por lotes
-
-
Operaciones independientes que pueden tener éxito o fallar individualmente
-
El procesamiento continúa incluso si algunas operaciones fallan
-
La orden de ejecución no está garantizada
-
Ideal para operaciones masivas en las que es aceptable un éxito parcial
-
- Transacción
-
-
Atomicidad garantizada: o todas tienen éxito o todas fallan
-
Mantiene la integridad referencial de los recursos a los que se hace referencia localmente (dentro del paquete)
-
Operaciones procesadas en el orden especificado
-
Se produce un error total si se produce un error en alguna operación
-
Ejemplos de casos de uso:
-
Batch: carga de varios registros de pacientes no relacionados
-
Transacción: crear un paciente con observaciones y afecciones relacionadas, en las que todos deben triunfar juntos
nota
Ambos utilizan el tipo de recurso Bundle, pero difieren en el campo «tipo»:
{ "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
-
Recolecta HealthLake
regionydatastoreIdvalora. 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 y especifica cada verbo HTTP como parte de los
methodelementos. En el siguiente ejemplo, se utiliza una interacción debatchtipos con elBundlerecurso para crearMedicationrecursosPatienty nuevos. Todas las secciones obligatorias se comentan en consecuencia. Para realizar 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 del FHIR utiliza unaPOSTsolicitud con la versión 4 de AWS Signature o SMART previa autorización del FHIR. El siguiente ejemplo de código 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 tipoBundlelote.
Condicional PUTs en paquetes
AWS HealthLake admite las actualizaciones condicionales dentro de los paquetes mediante los siguientes parámetros de consulta:
-
_id(independiente) -
_iden combinación con uno de los siguientes:-
_tag -
_createdAt -
_lastUpdated
-
En función de los resultados de hacer coincidir las condiciones proporcionadas con el recurso existente, ocurrirá lo siguiente con los códigos de resultado asociados que indican la acción realizada:
Al crear o actualizar los recursos del FHIR, el sistema gestiona diferentes escenarios en función de la asignación de ID de recursos y de las coincidencias existentes:
-
Los recursos que no IDs los tienen siempre se crean (201).
-
IDs Se crean los recursos con nuevos (201).
-
Los recursos existentes IDs actualizan el recurso coincidente (200) o devuelven errores si hay un conflicto (409) o si los identificadores no coinciden (400).
-
Si hay varios recursos coincidentes, se produce un error en una condición previa (419).
En el ejemplo del paquete con actualización condicional, el recurso para pacientes con el identificador FHIR solo 456 se actualizará 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
-
HealthLake
regionRecopila ydatastoreIdvalora. 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. En el siguiente ejemplo, se agrupan dos
Patientrecursos. HealthLake Para realizar 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 versión 4. El siguiente ejemplo de código 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, puede especificar opcionalmente 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 presente. Este es el nivel de validación predeterminado para AWS HealthLake. -
structure-only: Los recursos se validan con el R4 e ignoran 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 requeridas se search/analytics actualizarán para incluir una advertencia para la auditoría.
Los recursos incluidos con un nivel de validación mínimo pueden incorporarse a un almacén de datos a pesar de no pasar 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 para documentar dichos errores, y las entradas de la respuesta del paquete incluirán los siguientes recursos: 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 ingresados que tengan un formato incorrecto según la especificación R4 no se puedan buscar como se esperaba si se presentan estos errores.