Discussão sobre o TISSNet, Web Services e Ponto-a-ponto

Alguém tem alguma novidade sobre o TISS, mais mudanças???

Se depender dos convênios vamos ter que criar um .xsd para cada operadora. :shock::frowning:

Boa tarde!

Estou com problemas pra colocar o tissnet como ouvinte em meu servidor.
Tenho tudo em maos mais preciso de ajuda pra poder coloca-lo no ar para os meus prestadores.

No Aguardo de alguem poder me ajudar.

valeu…

[quote=bfgaleno]Boa tarde!

Estou com problemas pra colocar o tissnet como ouvinte em meu servidor.
Tenho tudo em maos mais preciso de ajuda pra poder coloca-lo no ar para os meus prestadores.

No Aguardo de alguem poder me ajudar.

valeu…[/quote]

q tipo de problema amigo?

Bom dia!

Tenho o um servidor, estou com o java já instalado, com o tiss net tbm, executei o comando pra poder coloca-lo com ouvinte conforme instruções no site do Evandro.net, mais na hora que tento fazer a transmissão dá erro dizendo que houve falha na conexão.
Como poderei fazer as configurações no meu servidor pra poder ficar recebendo os XML?
Tenho que fazer alguma configuração no IIS?
Qual a melhor maneira pra poder receber os XML dos prestadores: via Webservice ou via Tissnet?

[quote=bfgaleno]Bom dia!

Tenho o um servidor, estou com o java já instalado, com o tiss net tbm, executei o comando pra poder coloca-lo com ouvinte conforme instruções no site do Evandro.net, mais na hora que tento fazer a transmissão dá erro dizendo que houve falha na conexão.
Como poderei fazer as configurações no meu servidor pra poder ficar recebendo os XML?
Tenho que fazer alguma configuração no IIS?
Qual a melhor maneira pra poder receber os XML dos prestadores: via Webservice ou via Tissnet?[/quote]

Se você quer enviar os arquivos você não precisa levantar o ouvinte. Só será necessário caso você deseje receber os arquivos.
O erro “Falha na conexão” pode acontecer por seu firewall ou anti-virus estar bloqueando as portas utilizadas por esse aplicativo, que por default é a porta 57057. Abra o arquivo tiss.ini e verifique as configurações que estão lá.
Verifique também se o cadastro de destino foi feito corretamente.


Oi, estou querendo é receber os arquivos. Mais sou novato nesse negocio de tiss, pois sou o técnico de minha empresa, e a pouco tempo ingressei no tiss. que tipo de configurações tenho que ver no tiss.ini.

Cara abra o tiss.ini no bloco de notas e veja na parte onde se refere a configurações da OPERADORA. Pegue esse arquivo que estou colocando em anexo, descompacte-o, coloque ele dentro da pasta do TISSNET4.0 e execute-o.

Você já tem um endereço ip com uma porta desbloqueada para receber esses arquivos?

Porque você precisa infromar isso dentro do arquivo de configuração do tissnet que é o tiss.ini.

Verifique e me informe.

Sim, já tenho o ip e a porta desbloqueada. O que tenho que fazer com essas informações?

No Aguardo!

[quote=bfgaleno]Sim, já tenho o ip e a porta desbloqueada. O que tenho que fazer com essas informações?

No Aguardo!

[/quote]

Abra o arquivo tiss.ini encontre o campo chave “tiss.porta.servidor” e informe a porta que você irá utilizar. Passe seu ip e porta para o prestador que irá enviar para você os arquivos, execute o ouvinte e você já estará apto a receber os arquivos.

Se você não definir no tiss.ini oonde você quer que os arquivos sejam salvos, por default, ele irá salvar dentro da pasta TRANSMISSAO dentro do TISSNET4.0.

Para eu transmitir via tiss net precisarei te um certificado?
Ou não precisa, já que a transmissão é ponto a ponto.

Fiz da maneira como vc disse mais na hora de transmitir dá o seguinte

** Iniciando transmissao…
** Conectando-se a http://unimedparnaiba.no-ip.org:57057
** Impossível abrir conexão com 333719 (http://unimedparnaiba.no-ip.org:57057)
** null
** 1 mensagem permaneceu na fila por erro de transmissão
** Ciclo de transmissão terminado!!

na hora que tento fazer um teste de um pc normal para o servidor.

Pessoal,

Eu iniciei o projeto de construção de um Web Service para receber arquivos XML no padrão TISS. Mas, antes de escrever alguma linha de código, estou procurando reunir informações a respeito de como construir este Web Service. Li os manuais disponibilizados pela ANS e surgiu uma dúvida: ao receber um arquivo XML e processá-lo, devo imediatamente enviar uma mensagem de resposta ou devo simplesmente colocar o arquivo XML que contém os dados da resposta na caixa de saída?

Att.

Anderson Araujo
Arquiteto de Soluções

Rafael,

Acompanhei todo o conteúdo deste tópico do fórum e no entanto não consegui calcular o hash.
Pelo que entendi vc usou os seguintes comandos a partir do TissNet*.jar:

//setando o hash no arquivo
mensagem.setEpilogo(new MensagemTISS.Epilogo());
mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

No entanto na classe MensagemTiss não tem um método chamado calcularHash(). Vc implementou este método?
Se for possível gostaria que disponibilizasse este método pois não estou encontrando informações sobre como fazer para extrair os valores sem as tags do arquivo XML para gerar o Hash.

Obrigado

[quote=bfgaleno]Para eu transmitir via tiss net precisarei te um certificado?
Ou não precisa, já que a transmissão é ponto a ponto.
[/quote]

R = Não se faz obrigatório a utilização de certificado digital para transmissão ponto-a-ponto.

[quote]
Fiz da maneira como vc disse mais na hora de transmitir dá o seguinte

** Iniciando transmissao…
** Conectando-se a http://unimedparnaiba.no-ip.org:57057
** Impossível abrir conexão com 333719 (http://unimedparnaiba.no-ip.org:57057)
** null
** 1 mensagem permaneceu na fila por erro de transmissão
** Ciclo de transmissão terminado!!

na hora que tento fazer um teste de um pc normal para o servidor.[/quote]

R = Sempre que tive esse erro foi por algum erro na conexão, na maioria das vezes o endereço e a porta especificadas não estavam liberadas no proxy aqui do hospital. Alguma coisa barrava a conexão.

[quote=andersonlaraujo]Pessoal,

Eu iniciei o projeto de construção de um Web Service para receber arquivos XML no padrão TISS. Mas, antes de escrever alguma linha de código, estou procurando reunir informações a respeito de como construir este Web Service. Li os manuais disponibilizados pela ANS e surgiu uma dúvida: ao receber um arquivo XML e processá-lo, devo imediatamente enviar uma mensagem de resposta ou devo simplesmente colocar o arquivo XML que contém os dados da resposta na caixa de saída?

Att.

Anderson Araujo
Arquiteto de Soluções[/quote]

Parece que você é uma operadora, correto?

No seu caso não tenho certeza absoluta. Mas, pelo que já li e já vi você imediantamente devolve uma resposta tipo “EM ANALISE”. Quanto tiver a resposta você joga na caixa de saída, que o PRESTADOR deverá solicitá-lo novamente.
Não tenho certeza, seria bom você pesquisar mais com outras pessoas. E quando tiver mais seguro, post aqui também. Certo?

Abraços

[quote=tobiasrdm]Rafael,
não estou encontrando informações sobre como fazer para extrair os valores sem as tags do arquivo XML para gerar o Hash.

Obrigado[/quote]

tobiasrdm, vc esta usando que api para trabalhar com xml???
Tente usar o JAXB, aqui nao tive nenhum problema para fazer esse tipo de tratamento com ela.

[]'s

Consegui calcular o Hash.
Utilizei um método disponível no próprio TissNet que realiza o cálculo.

Para realizar o cálculo do Hash deve-se seguir os seguintes passos:

Descompactar o TissNet em uma pasta.
Abrir o projeto TissNet pelo NetBeans (caso não conseguir abrir, criar um novo projeto e copiar os arquivos fontes e lib para o novo projeto).
Ao abrir o projeto do TissNet utilizando Java SE 6 é preciso baixar a versão do arquivo bcprov-jdk16-.jar compatível com Java SE 6 que está disponível em: http://www.bouncycastle.org/latest_releases.html. Calocar este arquivo na pasta lib do TissNet e adicioná-lo ao projeto.
Na classe br.gov.ans.tiss.nucleo.MensagemTiss modificar o método isHashOk() para que sempre retorne true.
Gerar um novo TissNet
.jar contendo a modificação.
Colocar este novo TissNet*.jar na pasta lib do projeto que gera o arquivo XML.
Obs: este novo TissNet*.jar deve ser usado apenas na pasta lib do projeto. Para enviar o arquivo utilizando ponto-a-ponto deve ser utilizado a versão original do TissNet*.jar.
Para utilizar os métodos do TissNet para calcular o Hash usar os seguintes comandos:

public class GeraMensTiss {    
    private static br.gov.ans.padroes.tiss.schemas.v20103.MensagemTISS mensagemTissSchema;
    public static final ObjectFactory OBJ_FACTORY = new ObjectFactory();
    private static JAXBContext jc;
    public static void execute() {
        try {
            jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas.v20103");
            mensagemTissSchema = OBJ_FACTORY.createMensagemTISS();
            // Epílogo
            mensagemTissSchema.setEpilogo(OBJ_FACTORY.createMensagemTISSEpilogo());
            //colocando um código qualquer para não ocorrer erro de
            //NullPointException quando chamar o método setDocumentoMensagem abaixo
            mensagemTissSchema.getEpilogo().setHash("0");
            //Criando um objeto MensagemTiss do pakage Nucleo para obter o HashCalculado
            br.gov.ans.tiss.nucleo.MensagemTiss mensagemTissNucleo =
                    new br.gov.ans.tiss.nucleo.MensagemTiss();
            mensagemTissNucleo.setDocumentoMensagem(mensagemTissSchema);
            mensagemTissSchema.getEpilogo().setHash(mensagemTissNucleo.getHashCalculado());
            File fileXML = new File("mensagemTiss_" + mensagemTissNucleo.getHashCalculado() + ".xml");
            Marshaller marshal = jc.createMarshaller();
            marshal.marshal(mensagemTissSchema, new FileOutputStream(fileXML));
            System.out.println("Arquivo gerado com sucesso.");
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

Desta maneira o Hash é calculando sem problemas.
O incoveniente é que toda vez que sair uma nova versão terá que alterar o TissNet*.jar para que o isHashOk() sempre retorne true, gerar novamente o TissNet*.jar e colocá-lo na pasta lib do projeto que gera o XML.

Rafael, obrigado pela atenção.

Tobias Ricken de Medeiros.

[quote=tobiasrdm]
Rafael, obrigado pela atenção.

Tobias Ricken de Medeiros.[/quote]

Obrigado você pela contribuição deixada.

Estamos todos no mesmo barco e é sempre bom um ajudar o outro.

Abraços.

Boa sorte.

Olá,

Sobre o problema de hash md5 não confere, o próprio TissNet já mostra a string/texto que está sendo levado em consideração para o cálculo do hash.

Para isso, execute o TissNet com o seguinte comando: java -jar TissNet*.jar

Se quiser que os dados sejam gravados em um arquivo texto, para posterior comparação entre o texto utilizado pelo seu sistema e o texto utilizado pelo TissNet, o comando é: java -jar TissNet*.jar > debug.txt

Aqui tem um exemplo de como corrigir o hash na mão, caso esteja com algum problema:

http://evandro.net/tiss/tiss-hash-md5-nao-confere.html :!:

Estou terminando um programa em java para corrigir o hash nos XML’s do Padrão TISS.


[]'s
Evandro
http://evandro.net/
http://evandro.net/tiss/

Ola para todos, estou chegando agora por aqui… também no barco do TISS…

A maneira como está definido o calculo o HASH (para o TISS) é a seguinte:

[quote]“O epílogo da mensagem TISS contém o HASH das informações. Esse campo contém o HASH apenas dos valores contidos nas transações, não incluindo as tags XML. O objetivo do HASH é garantir que o dado, uma vez gravado, não seja alterado.
O atributo VALOR do elemento HASH de uma transação deve conter, em hexadecimal (32 caracteres), o HASH MD5 (Message-Digest Algorithm) dos valores dos atributos da transação justapostos, lidos da esquerda para a direita.
Não devem ser incluídos no cálculo do HASH os nomes dos elementos ou dos atributos da transação.”[/quote]

Vou postar que problemas que identificamos:

´artefatos´ que surgem ANTES da primeira TAG, no arquivo XML (alguns programas introduzem “problemas”, ex. notepad++)
´artefatos´ que surgem DEPOIS da última TAG, no arquivo XML (alguns programas introduzem “problemas”, ex. alguns sistemas UNIX)
´artefatos´ que surgem AO FINAL da linha, no arquivo XML (alguns programas introduzem “problemas”, ex. ‘\n’ em alguns sistemas)
Espaços em Branco (na versão 3.8 do TISSNET, foi realizada a Evolução: DESPREZAR BRANCOS NO CÁLCULO DO HASH)
Tags sem conteúdo sendo consideradas (na versão 3.9 do TISSNET, foi realizada a Evolução: NÃO CONSIDERAR TAGS SEM CONTEÚDO NA MONTAGEM DO STRING BASE PARA O HASH)
caracter de tabulação que prejudicam o calculo (alguns sistemas utilizam o TAB como separador de elementos)

No final das contas, entendo que os campos devem ser concatenados, SEM OS ESPAÇOS EM BRANCO e sem as TAGS (e formatações)… sendo em seguida encaminhados para o processamento do HASH. Desta forma está implementado no TISSNET.

[]s

Renato Cerceau