View a markdown version of this page

Modificación de recursos con la operación PATCH - AWS HealthLake

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.

Modificación de recursos con la operación PATCH

AWS HealthLake admite la operación PATCH para los recursos del FHIR, lo que le permite modificar los recursos seleccionando elementos específicos para añadirlos, sustituirlos o eliminarlos sin necesidad de actualizar todo el recurso. Esta operación resulta especialmente útil cuando se necesita:

  • Realice actualizaciones específicas en recursos de gran tamaño

  • Reduzca el uso del ancho de banda de

  • Realice modificaciones atómicas en elementos de recursos específicos

  • Minimice el riesgo de sobrescribir los cambios simultáneos

  • Actualice los recursos como parte de los flujos de trabajo por lotes y transacciones

Formatos PATCH compatibles

AWS HealthLake admite dos formatos PATCH estándar:

Parche JSON (RFC 6902)

Utiliza la sintaxis JSON Pointer para seleccionar los elementos según su posición en la estructura de recursos.

Tipo de contenido: application/json-patch+json

FHIRPath Parche (especificación FHIR R4)

Utiliza FHIRPath expresiones para seleccionar los elementos según su contenido y sus relaciones, lo que proporciona un enfoque de aplicación de parches nativo del FHIR.

Tipo de contenido: application/fhir+json

De uso

Operaciones directas de PATCH

La operación PATCH se puede invocar directamente en los recursos del FHIR mediante el método HTTP PATCH:

PATCH [base]/[resource-type]/[id]{?_format=[mime-type]}

PATCH en paquetes

Las operaciones PATCH se pueden incluir como entradas en los paquetes del FHIR batch o bientransaction, lo que permite combinar las operaciones de parche con otras interacciones del FHIR (crear, leer, actualizar, eliminar) en una sola solicitud.

  • Paquetes de transacciones: todas las entradas se realizan correctamente o fallan de forma atómica

  • Paquetes de lotes: cada entrada se procesa de forma independiente

Formato de parche JSON

Operaciones admitidas

Operación Description (Descripción)
add Agregue un nuevo valor al recurso
remove Eliminar un valor del recurso
replace Reemplace un valor existente en el recurso
move Elimine un valor de una ubicación y agréguelo a otra
copy Copie un valor de una ubicación a otra
test Compruebe que un valor en la ubicación de destino es igual a un valor especificado

Sintaxis de ruta

El parche JSON utiliza la sintaxis JSON Pointer (RFC 6901):

Ejemplo de ruta Description (Descripción)
/name/0/family Elemento familiar del nombre
/telecom/- Añadir a la matriz de telecomunicaciones
/active Elemento activo a nivel de raíz
/address/0/line/1 Segunda línea de la primera dirección

Ejemplos

Solicitud directa de parches JSON con múltiples operaciones

PATCH [base]/Patient/example Content-Type: application/json-patch+json If-Match: W/"1" [ { "op": "replace", "path": "/name/0/family", "value": "Smith" }, { "op": "add", "path": "/telecom/-", "value": { "system": "phone", "value": "555-555-5555", "use": "home" } }, { "op": "remove", "path": "/address/0" }, { "op": "move", "from": "/name/0/family", "path": "/name/1/family" }, { "op": "test", "path": "/gender", "value": "male" }, { "op": "copy", "from": "/name/0", "path": "/name/1" } ]
Solicitud directa de parches JSON con una sola operación

PATCH [base]/Patient/example Content-Type: application/json-patch+json [ { "op": "replace", "path": "/active", "value": false } ]
Parche JSON en paquete

Utilice un recurso binario que contenga la carga útil del parche JSON codificada en base64:

{ "resourceType": "Bundle", "type": "transaction", "entry": [{ "resource": { "resourceType": "Binary", "contentType": "application/json-patch+json", "data": "W3sib3AiOiJhZGQiLCJwYXRoIjoiL2JpcnRoRGF0ZSIsInZhbHVlIjoiMTk5MC0wMS0wMSJ9XQ==" }, "request": { "method": "PATCH", "url": "Patient/123" } }] }

FHIRPath Formato de parche

Operaciones admitidas

Operación Description (Descripción)
add Añadir un elemento nuevo a un recurso
insert Inserte un elemento en una posición específica de una lista
delete Eliminar un elemento de un recurso
replace Reemplace el valor de un elemento existente
move Reordenar los elementos de una lista

Sintaxis de ruta

FHIRPath El parche usa FHIRPath expresiones que admiten:

  • Acceso basado en índices: Patient.name[0]

  • Filtrar con: where() Patient.name.where(use = 'official')

  • Lógica booleana: Patient.telecom.where(system = 'phone' and use = 'work')

  • Funciones de subconjuntos:, first() last()

  • Comprobaciones de existencia:exists(), count()

  • Navegación polimórfica: Observation.value

Ejemplos

Solicitud de parche directa FHIRPath

PATCH [base]/Patient/123 Content-Type: application/fhir+json Authorization: ... { "resourceType": "Parameters", "parameter": [{ "name": "operation", "part": [ { "name": "type", "valueCode": "add" }, { "name": "path", "valueString": "Patient" }, { "name": "name", "valueString": "birthDate" }, { "name": "value", "valueDate": "1990-01-01" } ] }] }
FHIRPath Parche en paquete

Utilice un recurso de parámetros como recurso de entrada conmethod: PATCH:

{ "resourceType": "Bundle", "type": "transaction", "entry": [{ "resource": { "resourceType": "Parameters", "parameter": [{ "name": "operation", "part": [ { "name": "type", "valueCode": "add" }, { "name": "path", "valueString": "Patient" }, { "name": "name", "valueString": "birthDate" }, { "name": "value", "valueDate": "1990-01-01" } ] }] }, "request": { "method": "PATCH", "url": "Patient/123" } }] }

Encabezados de solicitud

Encabezado Obligatorio Descripción
Content-Type application/json-patch+jsonpara JSON Patch o application/fhir+json para FHIRPath Patch
If-Match No Actualización condicional específica de la versión mediante ETag

Respuesta de ejemplo

La operación devuelve el recurso actualizado con la información de la nueva versión:

HTTP/1.1 200 OK Content-Type: application/fhir+json ETag: W/"2" Last-Modified: Mon, 05 May 2025 10:10:10 GMT { "resourceType": "Patient", "id": "example", "active": true, "name": [ { "family": "Smith", "given": ["John"] } ], "telecom": [ { "system": "phone", "value": "555-555-5555", "use": "home" } ], "meta": { "versionId": "2", "lastUpdated": "2025-05-05T10:10:10Z" } }

Comportamiento

La operación PATCH:

  • Valida la sintaxis del parche según la especificación correspondiente (RFC 6902 para JSON Patch, FHIR R4 para Patch) FHIRPath

  • Aplica las operaciones de forma atómica: todas las operaciones se realizan correctamente o todas fallan

  • Actualiza el ID de versión del recurso y crea una nueva entrada en el historial

  • Conserva el recurso original en el historial antes de aplicar los cambios

  • Valida las restricciones de recursos del FHIR después de aplicar los parches

  • Admite actualizaciones condicionales mediante el encabezado If-Match con ETag

Gestión de errores

La operación gestiona las siguientes condiciones de error:

  • 400 Solicitud errónea: sintaxis de parche no válida (solicitud no conforme o documento de parche mal formado)

  • 404 No encontrado: no se encontró el recurso (el ID especificado no existe)

  • 409 Conflicto: conflicto de versiones (se proporciona un identificador de versión no actualizado o actualizaciones simultáneas)

  • 422 Entidad inprocesable: las operaciones de parche no se pueden aplicar a los elementos de recursos especificados

Resumen de capacidades

Funcionalidad Parche JSON FHIRPath Parche
Tipo de contenido application/json-patch+json application/fhir+json
Formato de ruta Puntero JSON (RFC 6901) FHIRPath expresiones
API DIRECT PATCH Soportado compatible
Batch de paquetes Compatible (mediante binario) Compatible (mediante parámetros)
Transacción de paquete Compatible (mediante binario) Compatible (mediante parámetros)
Operaciones añadir, eliminar, reemplazar, mover, copiar, probar añadir, insertar, eliminar, reemplazar, mover

Limitaciones

  • No se admiten las operaciones PATCH condicionales que utilizan condiciones de búsqueda

  • Los paquetes de parches JSON deben utilizar recursos binarios con contenido codificado en base64

  • FHIRPath Los parches incluidos en los paquetes deben usar recursos de parámetros

Recursos adicionales

Para obtener más información sobre las operaciones PATCH, consulte: