Idempotência e concorrência - AWS HealthLake

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á.

Idempotência e concorrência

Chaves de idempotência

AWS HealthLake suporta chaves de idempotência para POST operações de FHIR, fornecendo um mecanismo robusto para garantir a integridade dos dados durante a criação de recursos. Ao incluir um UUID exclusivo como chave de idempotência no cabeçalho da solicitação, os aplicativos de saúde podem garantir que cada recurso FHIR seja criado exatamente uma vez, mesmo em cenários que envolvam instabilidade de rede ou novas tentativas automáticas.

Esse recurso é particularmente crucial para sistemas de saúde em que registros médicos duplicados podem ter consequências graves. Quando uma solicitação é recebida com a mesma chave de idempotência de uma solicitação anterior, HealthLake retornará o recurso original em vez de criar uma duplicata. Por exemplo, isso pode ocorrer durante um ciclo de repetição ou devido a pipelines de solicitação redundantes. O uso da chave de idempotência permite manter HealthLake a consistência dos dados e, ao mesmo tempo, fornecer uma experiência perfeita para aplicativos clientes que lidam com problemas de conectividade intermitentes.

Implementação

POST /<baseURL>/Patient x-amz-fhir-idempotency-key: 123e4567-e89b-12d3-a456-426614174000 { "resourceType": "Patient", "name": [...] }

Cenários de resposta

Primeira solicitação (201 criada)
  • Novo recurso criado com sucesso

  • A resposta inclui ID do recurso

Solicitação duplicada (409 Conflito)
  • Mesma chave de idempotência detectada

  • Recurso original devolvido

  • Nenhum novo recurso criado

Solicitação inválida (400 solicitações inválidas)
  • UUID malformado

  • Campos obrigatórios ausentes

Práticas recomendadas

  • Gere UUID exclusivo para cada criação de novo recurso

  • Armazene as chaves de idempotência para a lógica de repetição

  • Use um formato de chave consistente: recomendado o UUID v4

  • Implemente em aplicativos clientes que lidam com a criação de recursos

nota

Esse recurso é particularmente valioso para sistemas de saúde que exigem uma precisão rigorosa dos dados e evitam registros médicos duplicados.

ETag na AWS HealthLake

AWS HealthLake usa ETags para controle otimista de simultaneidade em recursos do FHIR, fornecendo um mecanismo confiável para gerenciar modificações simultâneas e manter a consistência dos dados. An ETag é um identificador exclusivo que representa uma versão específica de um recurso, funcionando como um sistema de controle de versão por meio de cabeçalhos HTTP. Ao ler ou modificar recursos, os aplicativos podem ser usados ETags para evitar substituições não intencionais e garantir a integridade dos dados, especialmente em cenários com possíveis atualizações simultâneas.

Exemplo de implementação

// 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

Cenários de resposta

Operação bem-sucedida (200 OK ou 204 sem conteúdo)
  • ETag corresponde à versão atual

  • A operação prossegue conforme o planejado

Conflito de versão (falha na pré-condição 412)
  • ETag não corresponde à versão atual

  • Atualização rejeitada para evitar perda de dados

Práticas recomendadas

  • Incluir ETags em todas as operações de atualização e exclusão

  • Implemente a lógica de repetição para lidar com conflitos de versão

  • Use If-None-Match: * para create-if-not-exists cenários

  • Sempre verifique o ETag frescor antes das modificações

Esse sistema de controle de concorrência é essencial para manter a integridade dos dados de saúde, especialmente em ambientes com vários usuários ou sistemas acessando e modificando os mesmos recursos.