-

Gerar manualmente o hash de um XML de Lote Guias ou qualquer outro XML do padrão da ANS nem sempre é uma tarefa fácil. Uma das possibilidades é gerar o hash manualmente a partir das informações do XML através de um gerador de hash md5 online.

Neste tutorial utilizamos o Notepad++ (https://notepad-plus-plus.org) com o plugin XML Tools que pode ser encontrado em: (https://sourceforge.net/projects/npp-plugins/files/XML%20Tools/.

Após instalado o Notepad++, instale o Plugin XML Tools através do Plugin Manager do Notepad++, siga os passos:

  1. Abra o Notepad++
  2. Acesse o menu Plugins > Plugin Manager > Show Plugin Manager
  3. Procure pelo “XML Tools” na aba Avaiable e clique no botão Install
  4. Após instalado, reinicie o Notepad++. O plugin XML Tools deve aparecer como última opção do menu Plugin conforme Imagem a seguir.

xml-tools

 

Com o Notepad++ e o Plugin XML Tools instalados, abra(ou copie o contéudo) o XML desejado no Notepad++ para geração do hash. Neste exemplo usaremos um XML de Lote de Guias gerado no formato de Client de WebService. (Poderia ser o XML padrão que começa com <ans:mensagemTISS> que é feito Upload para todas as operadoras de plano de saúde ou qualquer outro XML da ANS). Vamos aos passos:

  1. Com o XML aberto no Notepad++ procure a tag referente ao hash para excluir o seu valor. No nosso exemplo é a tag <ans:hash>. (Cada XML da ANS possui uma tag de hash que geralmente possui a palavra hash.)
    limpar-hash
  2. Após removido o conteúdo da tag <ans:hash>, vamos utilizar o plugin XML Tools para transformar o XML em uma única linha via comando Linarize.
    linarizeApós executado esse comando o seu XML deve ficar nesse estilo:
    linarizado
  3. Abra o prompt de Replace do Notepad++ com o atalho CTRL+H ou pelo menu Search -> Replace, pesquise pelo seguinte trecho de expressão regular: <[^>]+>  e clique em REPLACE ALL (atenção: o modo de pesquisa deve ser “Regular Expression”)replace
  4. Após feita a substituição de todas as tags XML, você terá em mãos o conteúdo puro para cálculo do Hash MD5 (padrão utilizado pela ANS até o momento). Acesse um site para cálculo de hash MD5 ou utilize funções PHP ou Java para cálculo de MD5 e cole esse conteúdo e solicite o cálculo do Hash.No nosso exemplo temos o conteúdo
    ENVIO_LOTE_GUIAS82016-07-3012:33:01.0000000-03:0060219370000273.02.0160219377ace4e300c9fa2b00cdaa7a325d1793b80000271513100000661488638100005800NIRACI CARREIRA6021937EDSON FELIX DA SILVA2270927EDSON FELIX DA SILVA70310012403322371092016-07-222221010101230.00que após executar pelo site Md5HashGenerator gerou o HASH 61b1c87318e0759bb150e4cb1625e684Alguns exemplos de site que calculam hash md5 online:
    http://www.md5hashgenerator.com/index.php (usado nesse tutorial)
    http://md5-hash-online.waraxe.us/

    Obs: Cuidado com alguns sites que geram hash online, pois estes utilizam algoritmos MD5 que não condizem com o algoritmo da ANS (em teste deveria ser universal kkk). O que pude perceber é que caracteres especiais alteram a forma como os sites calculam o HASH.

  5. Com o valor de Hash em mãos substitua no arquivo original na tag de hash <ans:hash>
    hash-substitui

Update em 05/07/2017 – gerar hash de SIB da ANS

Para aqueles que estiverem tentando gerar um hash para arquivo do tipo SIB. A ANS em seu manual oficial (arquivo_exemplo exemplo com hash.sbx) exige que no texto do md5 seja concatenado a a string:

http://www.ans.gov.br/padroes/sib/schemas http://www.ans.gov.br/padroes/sib/schemas/sib.xsd

 

SIB_hash_zerado

 

Ficando por exemplo:

http://www.ans.gov.br/padroes/sib/schemas http://www.ans.gov.br/padroes/sib/schemas/sib.xsdSIB02011-05-16T09:00:00.0Z000000035890680001461.1TESTE1ANS0000000000000000000000NOME TESTE 11980-01-01NOME MAE TESTE RUA TESTE000BARRA000000000000000000001000012000-01-01000000000000000000000002000-01-01410000000000002000-01-0100000000000012000-01-01000000000000000000000000000000000000000000000NOME TESTE 11980-01-01NOME MAE TESTE RUA TEST000BARRA000000000000000000001000012000-01-0100000000000

No caso de arquivos do tipo SIB, calcule o hash com base nessa observação!

Fim!

8 replies on “TISS – Gerar Hash do XML manualmente com Notepad++”

Leave a Comment
  1. Valeu pelo post! Mas fique com uma dúvida. No manual Tiss 3.03.00 diz isso:

    “O conteúdo das tags deve ser concatenado e considerado de forma literal, desde o primeiro caracter à esquerda até o último caracter à direita, sem qualquer inserção, supressão, modificação ou ajuste, respeitando maiúsculas e minúsculas, pontuação, acentuação e caracteres especiais, mesmo invisíveis que eventualmente existam(CR,LF,tabs etc).”

    Assim, isso:

    conteudo

    Deveria gerar um hash diferente disso não é não?
    conteudo

  2. Olá Gustavo.

    Exatamente! Se você perceber, ela se refere ao conteúdo das tags e não o conteúdo do arquivo!! Neste caso o que a ANS com o Manual do TISS desejou expressar é que o conteúdo que fica entre os nós , exemplo:

    ...nomeTag>TODO CONTEUDO AQUI COM ACENTOS E TUDO MAIS< /nomeTag...

    De cada Mensagem (Ex: lote de guias, recurso de glosa) deve ser respeitado integralmente, ou seja, mesmo que conteúdo deste nó possua acentos, quebras de linhas ou tabs você deve considerá-los durante o calculo do Hash.

    Tudo isso para que prestadores e operadoras utilizem o mesmo "processo" de calculo do hash.

    Ps. Minha dica é: nunca utilize acentos ou caracteres especiais!!

    Abraços!

  3. Olá.

    Muito bom! Parabéns!

    Você tem esse arquivo xml para me passar? Para eu poder fazer uma comparação da origem com o resultado?

    Valeu!

  4. A respeito do Update em 05/07/2017 – gerar hash de SIB da ANS, uma observação que no teste que realizei, não foi necessário concatenar a string: http://www.ans.gov.br/padroes/sib/schemas http://www.ans.gov.br/padroes/sib/schemas/sib.xsd, pois o hash gerado com essa string foi validado como errado na última versão do aplicativo do SIB(Não sei se em outras versões pode ser diferente, mas comigo não rolou).

    Outra informação que acho interessante compartilhar, é que nos testes verifiquei que a ANS realiza validações case-sensitive e portanto os códigos hash gerados pelos sites normalmente precisam ser alterados colocando as letras sempre em caixa alta.

    Muito obrigada pelo post que tirando essas observações foi muito útil para conseguir gerar o hash dos arquivos do SIB.

    Até mais!

  5. Que bom que foi útil! Grato pela visita.

  6. Rapido, simples e objetivo! parabens!

  7. Na dúvida sobre hash e tiss, sempre consulto este material.

  8. Olá,

    Possou um XML, mas ele não vem com a inicial ANS, gostaria de saber se a alguma forma de incluir ?

Leave a Comment

Your email address will not be published.

You may use these HTML tags and attributes: <a href=""> <abbr> <acronym> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Send a Message