TISS – Gerar Hash do XML manualmente com Notepad++

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.00

    que 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

Fim!


3 Comments

  • Gustavo |

    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

  • Dellanio Alencar |

    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!

  • Gustavo |

    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!

So, what do you think ?