Estou trabalhando na geração de arquivos XML TISS para envio de guias médicas e me deparei com um problema relacionado ao cálculo do hash.
Minha dúvida é a seguinte:
Como o hash de um arquivo XML TISS deve ser calculado corretamente?
Li que o hash deve ser calculado sobre o conteúdo do XML, excluindo a tag <ans:hash>, mas gostaria de confirmar se existe alguma especificação adicional quanto à codificação do arquivo (deve ser sempre UTF-8 ou pode ser ISO-8859-1?).
O que fazer se a plataforma de validação TISS estiver rejeitando o arquivo devido a um hash incorreto?
É necessário garantir que o conteúdo do XML esteja completamente limpo (sem espaços extras ou quebras de linha) antes de calcular o hash?
É possível automatizar o cálculo do hash em uma ferramenta personalizada ou devo fazer isso manualmente a cada vez?
Existem recomendações sobre bibliotecas ou ferramentas para calcular o hash de forma eficiente?
Agradeceria muito qualquer orientação ou recurso adicional para esclarecer esses pontos, pois estou enfrentando dificuldades para fazer o hash gerado coincidir com o que a plataforma de validação TISS espera.
Olá! Esse tipo de dúvida é comum ao trabalhar com XML TISS, especialmente na parte de assinatura digital e integridade dos dados. Vamos aos pontos:
Ferramentas automatizadas
O Validador TISS permite validar o seu XML e verificar se o hash está incorreto. Ele também tem a opção de calcular o hash correto e alterar diretamente seu XML com esse valor.
1. Como o hash de um XML TISS deve ser calculado?
O hash deve ser calculado sobre o conteúdo do XML, excluindo a tag <ans:hash>, como você mencionou. Essa tag deve estar vazia no momento do cálculo, e só deve ser preenchida após o hash estar pronto.
2. Qual a codificação correta (UTF-8 ou ISO-8859-1)?
O charset do TISS é ISO-8859-1. Porém, algumas operadoras podem calcular com UTF-8, o que pode ocasionar divergências e recusa no arquivo.
Para resolver isso, o Validador TISS possui recursos como o cálculo nos dois encodes e a sanitização do XML para minimizar essas divergências no cálculo do lado da operadora.
3. E se a plataforma TISS rejeitar por hash incorreto?
Verifique se a tag <ans:hash> está vazia no momento do cálculo.
Certifique-se de que nenhuma alteração (espaços, indentação, quebras de linha) foi feita entre o cálculo do hash e o envio do XML.
A plataforma é sensível a qualquer modificação no conteúdo, então é essencial que o conteúdo usado para o cálculo seja exatamente o mesmo enviado.
4. O conteúdo do XML precisa estar “limpo”?
Sim, é altamente recomendado:
Remover indentação desnecessária.
Evitar quebras de linha ou espaços que não sejam estritamente necessários.
Usar um formato “canônico” do XML (canonicalization), caso possível.
Isso reduz as chances de divergência entre o conteúdo usado no hash e o XML real enviado.
O Validador TISS já faz todo esse processo para você também.
5. Posso automatizar o cálculo do hash?
Sim, e deve ser automatizado. O ideal é que sua aplicação: