Ordem de envio e processamento

Um payload correto ainda pode falhar pelo jeito como foi enviado: um recurso antes da sua dependência, dois envios simultâneos do mesmo registro, ou um lote no endpoint errado. Esta página cobre esses casos.

Wrong ResourceType: … expects … but got Bundle

Causa. Um Bundle foi enviado para o endpoint de um recurso específico. Cada endpoint de recurso aceita só aquele tipo.

O que fazer. Envie lotes para POST /fhir/resources/Bundle. Veja Carga em lote.

As referências internas do lote não resolvem

Causa. O fullUrl das entradas não está no formato urn:uuid:…. Sem esse prefixo, a referência de uma entrada para outra não é reconhecida como interna ao lote, e a Nilo passa a procurar um recurso já cadastrado com aquele identificador — que não existe.

O que fazer. Use urn:uuid: no fullUrl de cada entrada e o mesmo valor no campo de referência que aponta para ela. Veja Referências entre entradas do mesmo lote.

”Recurso não encontrado” mesmo tendo enviado o recurso pai antes

Causa. O recurso pai e o dependente foram enviados em requisições separadas. Cada requisição entra numa fila própria, e não há garantia de que a primeira termine antes da segunda começar — mesmo que ela tenha sido aceita com 200 antes.

O que fazer. Recursos com dependência entre si vão no mesmo lote transacional, com referência interna. É o lote que garante a ordem e resolve as referências; requisições independentes não garantem nada disso. Esse é o caso de cobertura, atendimento, evento ou condição enviados junto com o paciente.

O contrário também é verdade: se os recursos não dependem um do outro, requisições separadas são mais simples e falham de forma mais isolada. O lote transacional é para dependência, não para volume.

Resource dependencies not processed successfully e Dependency … not processed successfully

Causa. Uma entrada do lote depende de outra que falhou. O recurso que você estava acompanhando não foi recusado por si — ele nem chegou a ser processado.

O que fazer. A mensagem traz o fullUrl da entrada que efetivamente falhou. Vá nela: o erro real está na resposta dessa entrada, não na que você estava olhando. Corrigida a dependência, reenvie o lote inteiro.

400 num envio simultâneo, sem erro de conteúdo aparente

Causa. Dois envios que tocam o mesmo registro ao mesmo tempo. Para não deixar um sobrescrever o outro pela metade, a escrita é serializada por recurso — e quando a espera estoura, a requisição perdedora volta com erro, embora o payload esteja correto.

O que fazer. Não envie em paralelo dois lotes que tocam o mesmo paciente. Serialize por paciente na origem e reenvie o que falhou: como a escrita é upsert, o reenvio é seguro.

429 Too Many Requests

Causa. Limite de escrita por tipo de recurso. Ele existe para proteger a plataforma de rajadas — e uma rajada de redisparos automáticos em cima de um 429 só piora o quadro.

O que fazer. Trate 429 como “tente de novo mais tarde”, com espera crescente entre as tentativas. Se o volume que você precisa enviar não caber no limite, o limite pode ser revisto — abra um chamado com o volume esperado em vez de reduzir o intervalo entre as tentativas.

Quantos recursos cabem num lote

A recomendação é no máximo 10 entradas por lote, de preferência cinco — e ela não é validada pela API, que aceita mais. Lotes grandes degradam o processamento e, como não há rollback, um lote grande que falha no meio é mais difícil de reconciliar do que cinco chamadas avulsas.

Prefira agrupar por unidade de sentido — um paciente com suas coberturas e eventos — em vez de encher o lote. Veja Como montar.

value is not a valid list

Causa. Um campo que o FHIR define como lista foi enviado como objeto único, ou o contrário. O caso mais comum é identifier enviado como objeto — ele é sempre uma lista. Também aparece em campos que são lista de referências.

O que fazer. Confira a cardinalidade do campo na tabela de campos da página do recurso, ou na aba Referência. O erro nomeia o campo, e é literal quanto ao tipo esperado.

Aceito com 200, mas não aparece na tela

Causa. Três tempos diferentes se somam entre a resposta e a tela:

EtapaQuando acontece
Escrita do recursoImediata — é o que o 200 confirma
Processamento na plataformaAssíncrono, em segundos ou minutos
Atribuições que rodam em loteUma vez por dia, fora do horário comercial
Cache de algumas telasAlguns minutos de atraso na exibição

O que fazer. Confirme por um GET que o recurso está gravado — se estiver, a escrita está correta e o resto é tempo. Reenviar não acelera nada e, se o reenvio for concorrente com o processamento do primeiro, pode gerar um erro que não existiria. Atribuição de diretriz é o caso mais visível disso: veja Plano de cuidado e diretriz.

500 ou timeout intermitente

Causa. Uma falha transitória no caminho entre os serviços internos. Ela é do lado da Nilo, e não indica nada de errado no payload.

O que fazer. Retente o mesmo payload. Como a escrita é upsert por identificador, o reenvio não duplica nada — desde que não seja simultâneo à tentativa anterior. Se o mesmo recurso falhar de forma consistente, abra um chamado com o payload e o horário.