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 |
Sí | 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: