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:
- Abra o Notepad++
- Acesse o menu Plugins > Plugin Manager > Show Plugin Manager
- Procure pelo “XML Tools” na aba Avaiable e clique no botão Install
- Após instalado, reinicie o Notepad++. O plugin XML Tools deve aparecer como última opção do menu Plugin conforme Imagem a seguir.
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:
- 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.)
- 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.
Após executado esse comando o seu XML deve ficar nesse estilo:
- 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”)
- 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.
- Com o valor de Hash em mãos substitua no arquivo original na tag de hash <ans:hash>
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
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!