Da consulta ao Bundle
Cada atendimento processado gera um Bundle segundo a arquitetura documentada.
- 1Coletar
Recuperar atendimento e dados clínicos no AGHUx.
- 2Estruturar
Organizar o conjunto intermediário no BundleDTO.
- 3Construir
Criar recursos e referências com o BundleBuilder e HAPI FHIR.
- 4Serializar
Converter o Bundle FHIR R4 para JSON com o parser HAPI.
- 5Transmitir
Enviar o documento para a operação de Bundle da API RNDS.
// Exemplo didático; não representa uma classe copiada do projeto
IParser parser = FhirContext.forR4()
.newJsonParser();
String payload = parser.encodeResourceToString(bundle);
// O payload segue para o serviço assíncrono de envio.Envio assíncrono e encerramento controlado
O BundleAsyncService distribui tarefas em um pool de threads para aumentar vazão, enquanto o BundleExecutionTracker acompanha o estado dos envios.
Fila de bundles pendentes
↓
BundleAsyncService
↓ distribui tarefas
Thread pool
↙ ↓ ↘
envios HTTP
↓
RNDS
↓
resultado + auditoria- Concorrência melhora vazão, mas aumenta a importância de limites, timeout e observabilidade.
- O tracker distingue bundles em execução e finalizados.
- O job aguarda a finalização dos envios acompanhados antes de concluir.
- Falha parcial precisa preservar a identidade de cada Bundle para reprocessamento seletivo.
Separar falhas de transformação e transporte
A resposta operacional melhora quando a equipe classifica a falha antes de agir.
| Categoria | Exemplos | Primeira verificação |
|---|---|---|
| Dados de origem | Paciente, profissional ou informação clínica ausente | Consulta AGHU e critérios da carga |
| Construção | Referência, cardinalidade ou recurso incorreto | Builder, DTO e perfil aplicável |
| Serialização | Payload não produzido | Parser, recurso inválido e exceção local |
| Autenticação | Token, certificado ou TLS | TokenService, validade e relógio |
| Transporte | Timeout, indisponibilidade ou HTTP | Rede, endpoint e correlação |
| Negócio RNDS | Código EHR-ERR ou MSG | Descrição do código e conteúdo do Bundle |