Dúvida sobre o cálculo do hash no XML TISS e a validação na plataforma

Olá a todos,

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:

  1. 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?).
  2. 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?
  3. É 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.

Agradeço pela ajuda!

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?

  1. Verifique se a tag <ans:hash> está vazia no momento do cálculo.
  2. 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.
  3. 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:

  1. Gere o XML com a tag <ans:hash> vazia.
  2. Calcule o hash sobre o conteúdo.
  3. Insira o hash na tag.
  4. Envie o XML finalizado.