As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Corrigindo recursos em grande escala com $bulk-patch
AWS HealthLake suporta a $bulk-patch operação de aplicação de operações de patch a um grande número de recursos FHIR de forma assíncrona. Você pode segmentar uma lista específica de recursos por ID ou todos os recursos de um determinado tipo em um armazenamento de dados. Com essa operação, você pode modificar recursos em grande escala sem atualizar cada recurso individualmente.
A $bulk-patch operação é particularmente útil quando você precisa fazer o seguinte:
-
Aplique etiquetas ou rótulos de metadados aos recursos em todo o armazenamento de dados
-
Atualize campos específicos em milhares ou milhões de recursos
-
Execute correções ou enriquecimentos de dados em massa
-
Aplique mudanças relacionadas à conformidade em todos os tipos de recursos
-
Migre ou padronize elementos de dados em grande escala
nota
-
A
$bulk-patchoperação aplica o mesmo patch a todos os recursos de destino. Para modificar um recurso individual, use a operação PATCH. Para obter mais informações, consulte Modificando recursos com a operação PATCH. -
O patch em massa aplica cada patch atomicamente a cada recurso. Cada recurso é bem-sucedido ou fracassado de forma independente.
-
Os recursos que são excluídos ou modificados após o envio do trabalho são ignorados em vez de corrigidos, para evitar a substituição de alterações simultâneas.
Usage
A $bulk-patch operação é assíncrona. Para iniciar um trabalho, envie uma solicitação POST:
POST [base]/$bulk-patch
Para pesquisar o status de um trabalho, use o endpoint de descrição:
GET [base]/$bulk-patch/{jobId}
Para começar a $bulk-patch operação, faça o seguinte:
-
Envie uma solicitação de patch em massa que especifique os recursos de destino e as operações de patch. A resposta inclui um ID de trabalho.
-
Pesquise o status do trabalho usando o endpoint de descrição até que o status seja
COMPLETEDou.COMPLETED_WITH_ERRORS -
Analise o resumo do trabalho para ver quantos recursos foram bem-sucedidos, falharam ou foram ignorados.
Parâmetros
A $bulk-patch operação suporta os seguintes parâmetros.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
resourceType |
string | Sim | O tipo de recurso FHIR a ser corrigido, por exemploPatient, ou. Observation |
resourceIds |
string[] | Não | A lista de IDs de recursos a serem corrigidos. Quando você omite esse parâmetro, a operação corrige todos os recursos do tipo especificado. |
operations |
objeto | Sim | As operações de patch a serem aplicadas. Aceita uma matriz JSON Patch ou um recurso FHIR Patch. Parameters |
clientToken |
string | Não | User-provided token usado para garantir a idempotência. O reenvio de um trabalho com o mesmo token de cliente retorna o trabalho existente em vez de criar um novo. |
validationLevel |
string | Não | O nível de validação do FHIR aplicado ao atualizar cada recurso. Os valores aceitos são strict (padrão) minimal e. structure-only |
Recursos de segmentação
Você pode direcionar recursos em dois modos.
Modo de tipo de recurso
No modo de tipo de recurso, a operação corrige todos os recursos de um tipo específico no armazenamento de dados.
{
"resourceType": "Patient",
"operations": { ... }
}
Modo de IDs de recursos
No modo de IDs de recursos, a operação corrige uma lista específica de recursos por ID. Todos os IDs de recursos devem ser do mesmo tipo e corresponder ao resourceType parâmetro. O formato pode ser uma referência completa ([resourceType]/[id]) ou somente o ID ([id]). A lista pode conter até 50.000 IDs de recursos.
{
"resourceType": "Patient",
"resourceIds": ["Patient/001", "Patient/002", "Patient/003"],
"operations": { ... }
}
Formatos de patch suportados
A $bulk-patch operação suporta a sintaxe JSON Patch (RFC 6902) e FHIR Patch (). FHIRPath-based Ele usa o mesmo conjunto de operações suportadas e a mesma sintaxe da operação PATCH síncrona. Para obter mais informações, consulte Modificando recursos com a operação PATCH.
Exemplo de trabalho de patch em massa para iniciar
O exemplo a seguir envia um trabalho de patch em massa que adiciona uma tag de conformidade a Patient recursos específicos usando o FHIR Patch.
Exemplo de solicitação
POST [base]/$bulk-patch
Content-Type: application/json
{
"resourceType": "Patient",
"resourceIds": ["patient-1", "patient-2", "patient-3"],
"validationLevel": "strict",
"clientToken": "unique-idempotency-token-123",
"operations": {
"resourceType": "Parameters",
"parameter": [
{
"name": "operation",
"part": [
{"name": "type", "valueCode": "add"},
{"name": "path", "valueString": "Patient.meta"},
{"name": "name", "valueString": "tag"},
{"name": "value", "valueCoding": {
"system": "http://example.org/compliance",
"code": "2026-audit-complete"
}}
]
}
]
}
}
Exemplo de resposta
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"jobStatus": "SUBMITTED"
}
Pesquisa de status do trabalho de patch em massa
Depois de enviar um trabalho, pesquise o status do trabalho para acompanhar o progresso e recuperar os resultados. O trabalho passa por SUBMITTED e eIN_PROGRESS, em seguida, para um estado terminal de COMPLETED ouCOMPLETED_WITH_ERRORS.
GET [base]/$bulk-patch/{jobId}
O exemplo a seguir mostra uma resposta para um trabalho que está em andamento.
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"status": "IN_PROGRESS",
"submittedTime": "2026-09-14T06:53:31.429Z",
"summary": {
"estimatedResourceCount": 1000
}
}
nota
O estimatedResourceCount é exato para o modo IDs de recursos e é igual ao tamanho da lista enviada. No modo de tipo de recurso, o número real de recursos processados pode ser um pouco diferente porque os recursos podem ser criados ou excluídos enquanto o trabalho está em execução.
Quando o trabalho atinge um estado terminal, a resposta de descrição inclui um resumo da contagem de recursos bem-sucedidos, com falha e ignorados. Se algum recurso falhou ou foi ignorado, a resposta lista os motivos em e. failedResources skippedResources O status do trabalho é COMPLETED_WITH_ERRORS quando há alguma falha, seja um erro do cliente ou um erro do servidor. O tamanho da resposta limita as skippedResources listas failedResources e, portanto, elas podem ser truncadas. Verifique failedResourcesTruncated e determine skippedResourcesTruncated se a lista completa está incluída.
{
"datastoreId": "datastoreId",
"jobId": "jobId",
"status": "COMPLETED_WITH_ERRORS",
"submittedTime": "2026-09-14T06:53:31.429Z",
"endTime": "2026-09-14T07:08:34.930Z",
"summary": {
"estimatedResourceCount": 1000,
"totalResourcesProcessed": 1000,
"succeeded": 985,
"failedWithCustomerError": 5,
"failedWithServerError": 0,
"skipped": 10
},
"failedResources": [
{
"resourceId": "Patient/patient-101",
"message": "FHIR resource in payload failed FHIR validation rules."
}
],
"skippedResources": [
{
"resourceId": "Patient/patient-201",
"message": "Resource was modified after job submission"
},
{
"resourceId": "Patient/patient-202",
"message": "Resource was deleted."
},
{
"resourceId": "Patient/patient-203",
"message": "Resource not found."
}
],
"failedResourcesTruncated": false,
"skippedResourcesTruncated": false
}
Razões comuns ignoradas
A operação ignora um recurso quando ele está no escopo, mas não pode corrigir o recurso porque seu estado mudou entre o envio e o processamento do trabalho. Recursos ignorados não são considerados erros. A seguir estão os motivos comuns pelos quais um recurso é ignorado.
-
O recurso foi modificado após o envio do trabalho — O recurso foi atualizado por outra operação depois que o trabalho de patch em massa capturou sua versão no momento do envio. Em casos raros, um recurso que foi corrigido com sucesso pode ser relatado como ignorado com o motivo modificado após o envio do trabalho. Isso é esperado e pode ocorrer a uma taxa muito baixa (1 em milhões de recursos).
-
O recurso foi excluído após o envio do trabalho — O recurso foi excluído após o envio do trabalho (modo de tipo de recurso). É garantido que nem todos os recursos excluídos apareçam na lista ignorada. Se um recurso for excluído antes do início do processamento do trabalho, ele será totalmente excluído do escopo do trabalho e não será refletido nos resultados do trabalho.
-
O recurso foi excluído — O ID do recurso especificado está em um estado excluído (modo IDs do recurso).
-
Recurso não encontrado — O ID do recurso especificado não existe (somente no modo IDs de recursos).
Falhas comuns de clientes
Um recurso falha quando a operação não pode aplicar o patch devido a um problema com o recurso ou com as operações do patch. Os recursos com falha incluem uma mensagem de erro com detalhes do diagnóstico. A seguir estão as falhas comuns dos clientes.
-
Falha na validação do FHIR — O recurso corrigido falha na validação do FHIR. O patch em massa aplica a validação FHIR em todo o recurso corrigido, não apenas nos campos modificados. Essa falha pode ocorrer quando o patch produz um valor de campo inválido ou quando o recurso já contém campos que não são compatíveis com FHIR. Use o
validationLevelparâmetro para controlar a rigidez da validação. -
Falha no aplicativo de patch — As operações de patch são incompatíveis com a estrutura de recursos, por exemplo, substituindo um campo que não existe ou adicionando um caminho que não seja de matriz.
Práticas recomendadas
Recomendamos as seguintes práticas recomendadas ao usar a $bulk-patch operação.
-
Teste primeiro com PATCH síncrono. AWS HealthLake valida a sintaxe da operação de patch no envio do trabalho e rejeita cargas inválidas de forma síncrona. No entanto, as operações de patch sintaticamente válidas ainda podem falhar no momento do processamento se não corresponderem à estrutura subjacente de recursos armazenados. Entenda as características dos recursos de destino e teste suas operações de patch com a operação síncrona PATCH antes de executar um trabalho de patch em massa. Isso ajuda a evitar falhas em grande escala.
-
Use motivos errados e ignorados para depurar. Analise as
skippedResourceslistasfailedResourcese na resposta descrita para entender por que recursos específicos não foram corrigidos. -
Verifique o estado do recurso antes de tentar novamente. As operações de patch não são idempotentes por natureza. Aplicar o mesmo patch duas vezes pode produzir resultados diferentes, por exemplo, adicionar uma tag que já existe cria uma duplicata. Depois de ver os recursos ignorados ou com falha, verifique o estado atual do recurso antes de enviar uma nova tentativa.
Autorização
A $bulk-patch operação oferece suporte aos seguintes métodos de autorização:
-
AWS Signature Version 4 (SigV4) de gerenciamento de identidade e acesso (IAM) para acesso programático.
-
SMART em FHIR com os seguintes escopos necessários:
-
Nível de escopo — Somente escopos em nível de sistema são suportados. A operação rejeita escopos no nível do paciente e no nível do usuário.
-
Tipo de recurso — Os escopos devem corresponder ao tipo de recurso visado pelo trabalho.
-
Operações — Os escopos necessários dependem do modo de trabalho e da versão SMART:
-
Iniciar um trabalho (modo de tipo de recurso) — o SMART v1 exige
reade abrangewrite. Os armazenamentos de dados SMART v2 exigemsearche escopos.update -
Iniciar um trabalho (modo de IDs de recursos) — o SMART v1 exige
reade abrangewrite. Os armazenamentos de dados SMART v2 exigemreade escopos.update -
Descreva um trabalho — Requer o
readescopo.
-
-
Características de desempenho
A $bulk-patch operação foi projetada para processamento de alto volume e é executada de forma assíncrona.
-
Simultaneidade — cada armazenamento de dados suporta no máximo 1 trabalho de patch em massa simultâneo. A operação coloca em fila trabalhos adicionais e os inicia automaticamente quando o trabalho atual é concluído.
-
Escalabilidade — Cada trabalho suporta até 2 bilhões de recursos. A operação rejeita trabalhos que excedam esse limite. Esse limite evita tempos de processamento prolongados, durante os quais muitos recursos podem mudar de estado, e evita manter a simultaneidade de tarefas do datastore por um longo período. Use o modo de IDs de recursos para particionar a carga de trabalho. Exemplo de resposta quando um trabalho excede a escala suportada:
"status": "COMPLETED_WITH_ERRORS", "message": "The requested bulk patch operation exceeds the supported scale." -
Operações paralelas — O patch em massa não é compatível com operações simultâneas de exclusão, importação ou exportação em massa no mesmo armazenamento de dados.
-
Cancelamento — Os trabalhos de patch em massa não podem ser cancelados após serem enviados.
Operações do relacionadas
-
Modificando recursos com a operação PATCH— Single-resource PATCH usando JSON Patch ou FHIR Patch.
-
Excluindo tipos de recursos com $bulk-delete— Exclua todos os recursos de um tipo específico.
-
Operações FHIR R4 $ para HealthLake— Lista completa das operações suportadas.