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

176 respostas
rbamartins

Galera estarei postando aqui uma dúvida de uma pessoa que encontrou em contato comigo para falar do TISS (Troca de Informações em Saúde Suplementar).

Estarei postando neste post a Dúvida dessa pessoa e, logo abaixo, responderei a mesma.

Pergunta: ========================================

Gostei da idéia do TISS e acho muito boa a iniciativa de montarmos um grupo para quem está desenvolvendo isso, principalmente em Java. Na verdade nosso sistema que cuida desta parte é feito em Qt, mas estou pensando em implementar esta parte em Java mesmo, acho o suporte a XML melhor.

Bom, vamos às minhas dúvidas mais “críticas”:

  1. Vocês irão transmitir os dados para uma operadora, certo? O que será usado, comunicação ponto-a-ponto ou webservices? No caso da comunicação ponto-a-ponto, será utilizado o próprio Tissnet? E no caso de webservices, o que estarão utilizando? Tem como utilizar o Tissnet também ou precisaram criar uma solução própria? No caso de solução própria, reutilizaram as APIs da ANS?
  2. Não consegui entender direito como estarão distribuidas as guias dentro do arquivo. No nosso caso, a guia vem em branco para o nosso faturamento preencher manualmente (o papel tbm será obrigatório, certo?), mas nas nossas agências transfusionais (que ficam dentro de diversos hospitais) não há como preencher isso… O que acontece é que um determinado serviço ou produto derivado de sangue que seja necessário para um paciente, pode incluir implicitamente diversos outros exames e serviços, os quais devem ser cobrados também. Assim, nosso sistema relaciona apenas um único número de guia (no caso a SADT) a cada ficha de requisição de transfusão/exames. Devo ter um único arquivo XML para cada guia? Posso unificar o envio de diversos itens (relacionados a um mesmo paciente, mas distribuidos em varias guias) em um unico número e relacionar tudo dentro do XML? Isso porque existe também o problema da guia SADT ter espaço para apenas 5 procedimentos…
  3. Qual a estratégi que você utilizou para mapear os campos que vão para o xml? Os schemas são, digamos… GRANDES DEMAIS.

Sei que escrevi demais e tenho bastante dúvidas, mas se puder me ajudar (e quem sabe eu também ajudá-lo…) ficaria muito agradecido.

Mais uma vez obrigado pela força!

Abraço,

===============================================

176 Respostas

rbamartins

Galera estarei agora respondendo às dúvidas postadas acima, enviadas a mim pelo companheiro Cássio. Onde em contato com ele, achamos melhor que fosse criado um tópico de discursão para que todos possamos nos ajudar.

Resposta: ========================================

Certo, iremos transmitir os dados para uma operadora.
Iremos usar Web Services, mas pelo padrão Tiss estaremos preparados para as duas formas de transmissão, ponto-a-ponto e Web Services.
Na comunicação ponto-a-ponto usaremos o TISSNet.
Na comunicação via Web Services pode-se usar o TISSNet sim, mas estaremos usando uma ‘solução própria’ em web Services. Onde estaremos usando a lib do Tiss, para que assim nao fujamos ao padrão da ANS. Como API estou usando também o AXIS para auxilio na criação dos clientes de Web Services, visto que, terei além de disponibilizar serviçoes para que as Operadoras consumam, irei criar clientes que consumam os serviços disponibilizados pelas Operadoras(por exemplo, quando for solicitar alguma prorrogação de procedimento).

Sobre as guias, você pode enviar um Lote de Guias. E não apenas um XML por vez.

  1. A estratégia que usamos para mapear os campos do XML, foi o de utilizar a própria estrutura do Tiss, usando sua lib e instanciando um objeto do tipo MensagemTISS você consegue obter todos os campos necessários no XML.

Para te ajudar nisso, vou te dar uma dica que me foi passada quando ingressei neste projeto.
Se já baixou o TISSNet no site da ANS (Agência Nacional de Saúde), dentro dele em docs tem um manual do TissNet 3.0. Este documento explica tudo que se deve fazer e dependendo do que for tem exemplos de como deve-se implementar.

===============================================

Cássio, espero ter ajudado com o pouco que sei.
Qualquer coisa que eu possa ajudar, sinta-se a vontade de perguntar.

Abração

Estarei divulgando também este post em meu blog pessoal

:slight_smile:

cassio

Olá Rafael,

Muito obrigado por suas respostas!

Você disse que no caso de webservices não utilizariam o Tissnet e sim uma solução própria. Poderia dizer porque? Também não entendi como o Tissnet poderia ser utilizado para enviar via web-service… mas tambem nao entendi como o Tissnet poderia ser utilizado para envio com webservice… entendi q ele seria apenas ponto a ponto…

No caso de agrupar as guisas em um lote, isso eu entendi. Mas o que perguntei foi sobre agrupar os itens de diversas guias em um único número, entende? Talvez fazer isso lhe soe estranho, mas há anos nosso sistema funciona assim e não acredito que a ANS tenha feito as coisas de forma que nosso sistema legado tenha que ser alterado neste nível para se adequar…

Mais uma vez obrigado pela ajuda!

cassio

Outra dúvida!

O elemento <epilogo> no fim do arquivo XMl contém o hash md5 certo? Mas o que exatamente eu devo considerar para calcular o hash, já que o resultado vai dentro do arquivo… não saquei isso!

Obrigado!

rbamartins

Sobre a dúvida que vc me deixou no msn:
Vc tem que usar a API JAXB da propria Sun ou a API XSTREAM da Apache que servem manipular XML.
Instanciando a classe Unmarshaller vc transforma um conteudo XML em objeto JAVA. E, instanciando a classe Marshaller vc faz o contrario de objeto JAVA para XML.

Quanto a mensagem q me deixou agora no GUJ, mais tarde olho direito como faço esta sendo feita essa parte, mas tem um setHash e setEpilogo.
que lhe ajudam nisso.

B

Bom, sou mais um sofredor do TISSNet…
Tenho meu webservice operadora rodando no glassfish certinho, acesso via HTTPS a pagina do schema https://localhost:8181/tissTransmiteMensagem/tissTransmiteMensagemV2_01_01?wsdl sem problemas com o certificado padrão do Java, primeiro pq não sei onde é o diretório que ele le no glassfish o tiss.ini, tentei o diretorio config mas me parece q nao deu certo.
O meu problema é na hora de enviar um arquivo como prestador, ele da erro na chave SSL, já tentei gerar uma chave própria sem sucesso nos testes.
Gostaria saber se alguem tem um webservice com glassfish ou jboss e como fizeram as configurações no tiss.ini e a parte de chaves keystore e trutstore, tentei por esses sites que validam temporariamente free mas nao deu certo, nao sei qual problema estou tendo.
Abraços

T

Buenas

Gostaria de saber como sera feita a troca de informações na parte de autorização de exames. Por exemplo usando o TISSNET a prestadora envia o pedido de autorização para a operadora e dae em diante como fica o processo???

Grato

rbamartins

blah:
Bom, sou mais um sofredor do TISSNet…
Tenho meu webservice operadora rodando no glassfish certinho, acesso via HTTPS a pagina do schema https://localhost:8181/tissTransmiteMensagem/tissTransmiteMensagemV2_01_01?wsdl sem problemas com o certificado padrão do Java, primeiro pq não sei onde é o diretório que ele le no glassfish o tiss.ini, tentei o diretorio config mas me parece q nao deu certo.
O meu problema é na hora de enviar um arquivo como prestador, ele da erro na chave SSL, já tentei gerar uma chave própria sem sucesso nos testes.
Gostaria saber se alguem tem um webservice com glassfish ou jboss e como fizeram as configurações no tiss.ini e a parte de chaves keystore e trutstore, tentei por esses sites que validam temporariamente free mas nao deu certo, nao sei qual problema estou tendo.
Abraços

blah…

cara tive o mesmo problema que voce anteriormente.
o que me explicaram aqui no GUJ mesmo é que o erro estava sendo gerado pelo fato de ser o certificado trial que eu estava usando. pois, assim ele nao existe num banco de dados de uma raiz certificadora e, assim, dava sempre erro na validaçao.
Ai tivemos que comprar um certificado digital valido mesmo.

estou com algumas duvidas ainda, pois estou terminando ainda o web services para tal.

vc ai vai usar a implementacao do TissNet mesmo nao é?

F

rbamartins:
Galera estarei agora respondendo às dúvidas postadas acima, enviadas a mim pelo companheiro Cássio. Onde em contato com ele, achamos melhor que fosse criado um tópico de discursão para que todos possamos nos ajudar.

Resposta: ========================================

Certo, iremos transmitir os dados para uma operadora.
Iremos usar Web Services, mas pelo padrão Tiss estaremos preparados para as duas formas de transmissão, ponto-a-ponto e Web Services.
Na comunicação ponto-a-ponto usaremos o TISSNet.
Na comunicação via Web Services pode-se usar o TISSNet sim, mas estaremos usando uma ‘solução própria’ em web Services. Onde estaremos usando a lib do Tiss, para que assim nao fujamos ao padrão da ANS. Como API estou usando também o AXIS para auxilio na criação dos clientes de Web Services, visto que, terei além de disponibilizar serviçoes para que as Operadoras consumam, irei criar clientes que consumam os serviços disponibilizados pelas Operadoras(por exemplo, quando for solicitar alguma prorrogação de procedimento).

Sobre as guias, você pode enviar um Lote de Guias. E não apenas um XML por vez.

  1. A estratégia que usamos para mapear os campos do XML, foi o de utilizar a própria estrutura do Tiss, usando sua lib e instanciando um objeto do tipo MensagemTISS você consegue obter todos os campos necessários no XML.

Para te ajudar nisso, vou te dar uma dica que me foi passada quando ingressei neste projeto.
Se já baixou o TISSNet no site da ANS (Agência Nacional de Saúde), dentro dele em docs tem um manual do TissNet 3.0. Este documento explica tudo que se deve fazer e dependendo do que for tem exemplos de como deve-se implementar.

===============================================

Cássio, espero ter ajudado com o pouco que sei.
Qualquer coisa que eu possa ajudar, sinta-se a vontade de perguntar.

Abração

Estarei divulgando também este post em meu blog pessoal

:)

Rafael, Gostaria que vc explicasse melhor esta parte do WebService, como voce implementou de colocar a lib do tissnet dentro do projeto.seria esse arquivo? “appserv-ws.jar”
de preferencia colocando um codigo de exemplo de como vc recebeu uma guia via webservice.

Fico muito grato pela ajuda… uma abraco!!!

rbamartins
Rafael, Gostaria que vc explicasse melhor esta parte do WebService, como voce implementou de colocar a lib do tissnet dentro do projeto.seria esse arquivo? "appserv-ws.jar" de preferencia colocando um codigo de exemplo de como vc recebeu uma guia via webservice.

Fico muito grato pela ajuda.. uma abraco!!!!

Flavio (fhsantiago),

gerei um jar do tissnet e setei no classpath de meu projeto de WS.
As guias sao enviadas via XML. Quando vc envia algo via web services o conteudo dessa mensagem vai como XML e se quiser manipula-la deverá receber esse conteudo e transformar em objeto java.

aqui por exemplo eu serializo em XML:
JAXBContext jc = JAXBContext.newInstance( "br.scmba.tiss.schemas" );
			
Marshaller m = jc.createMarshaller();
m.setProperty( m.JAXB_ENCODING, "ISO-8859-1" );
m.setProperty( m.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
			
unico = new java.util.Date().getTime();
random = ( int ) ( java.lang.Math.random() * 100 ); 
			
pXmlGerado = InformacoesAplicacao.getCaminhoAplicacao() + "/tiss/xml/mensagemTISS_" + String.valueOf( unico ) + String.valueOf( random ) + ".xml";
			
m.marshal( pMensagem, new FileOutputStream(pXmlGerado) );
			
xmlGerado = new File(pathXmlGerado);
e aqui faço o inverso que é pegar um XML e transformar em objeto java:
JAXBContext jc = JAXBContext.newInstance( "br.scmba.tiss.schemas" );
			
MensagemTISS mensagem = null; // limpando objeto mensagem para ser tabalhado com o unmarshaller
/**
* o Unmarshaller é usado para transformar de XML para objeto JAVA
*/
Unmarshaller unmarshaller = jc.createUnmarshaller();
			
String arquivo = "c:/teste_envio/exemplo_operadora_resposta.xml";
			
File file = new File( arquivo );
			
mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(
		 file.getAbsolutePath()));
		
//setado como false para que o construtor de MensagemTiss ao invés de
 validar, calcule o hash para meu arquivo xml

 MensagemTiss mensagemTiss = new MensagemTiss(file.getAbsolutePath(), false);
		
//setando o hash no arquivo
mensagem.setEpilogo(new MensagemTISS.Epilogo());
mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

n sei se consegui te ajudar muito. mas pode perguntar mais se precisar.
to com algumas dúvidas aqui tb, qdo tiver mais elaborado vou postar aqui pra ver se alguem sabe como me ajudar.

blz
esse TissNet....

F

Rafael, veja se voce pode me ajudar, eu recebo um xml que pode ser de qualquer coisa(envio de lotes,solicitacao procedimento, etc). faco essa verificacao no cabechalho…

xml.loadXML(arquivo.getInputStream());
NodeList nodeList = xml.selectNodes(padraoAns + "cabechalho");
String tipoTransacao = (((Element) nodeList.item(0)).getElementsByTagName(padraoAns + "tipoTransacao").item(0).getFirstChild().getNodeValue());
if(tipoTransacao.equals("ENVIO_LOTE_GUIAS")){
	
	geraGuiasViaLote(xml);
}

so que no meu metodo geraGuiasViaLote eu preciso ainda saber de qual guia é o lote… consulta,internacao, etc… tem algum campo no cabechalo que indica isso:?
valeu

rbamartins

fhsantiago:
Rafael, veja se voce pode me ajudar, eu recebo um xml que pode ser de qualquer coisa(envio de lotes,solicitacao procedimento, etc). faco essa verificacao no cabechalho…

xml.loadXML(arquivo.getInputStream());
NodeList nodeList = xml.selectNodes(padraoAns + "cabechalho");
String tipoTransacao = (((Element) nodeList.item(0)).getElementsByTagName(padraoAns + "tipoTransacao").item(0).getFirstChild().getNodeValue());
if(tipoTransacao.equals("ENVIO_LOTE_GUIAS")){
	
	geraGuiasViaLote(xml);
}

so que no meu metodo geraGuiasViaLote eu preciso ainda saber de qual guia é o lote… consulta,internacao, etc… tem algum campo no cabechalo que indica isso:?
valeu

Flavio,

ficaria muito mais fácil para você trabalhar da seguinte forma:

capture o arquivo xml e transforme ele em objeto java com a api JAXB usando a classe Unmarshaller

MensagemTiss mensagem = (MensagemTiss) unmarshaller.unmarshal(new FileInputStream(arquivoTemporario));

e se vc verificar no schema (no .xsd do Tiss) vai identificar que no cabeçalho tem isso tudo. verifique tb a classe CtCabecalhoTransacao.
entao assim vc pode fazer isso que coloco ai abaixo:

mensagemTISS.getCabecalho().getIdentificacaoTransacao().getTipoTransacao();

espero ter ajudado em algo…
abraços

T

Como devemos implementar um Web Service? Somos uma prestadora e nossas operadoras cadastradas encontraram inumeros modos de transferencia tais como: ftp, email, upload nos seus sites com uso de usuario e senha, tissnet, tissnet com usuario e senha…
Se nós criarmos um WS poderei manter conectividade automaticamente com quais por exemplo???
Já o nosso banco de dados faz o levantamento das informações e conseguimos já gerar o XML e largar prontinho em uma pasta com o codigo ou nome de cada prestadora. O fato é que ei terá que um usuario ir lá na tal pasta e pegar os arquivos para fazer os uploads ou mandar por ftp enfim tá uma porcaria mas ai insisto na perguntaanterios.
A ANS criou um padrao e dentro desse padra cada Operadora criou um padrao e ai como que ficaria meu WEB SERVICE supriria as necessidades de todas eu consiguiria adapta-lo a todas elas???
Grato

rbamartins

Tchê Bagual:
Como devemos implementar um Web Service? Somos uma prestadora e nossas operadoras cadastradas encontraram inumeros modos de transferencia tais como: ftp, email, upload nos seus sites com uso de usuario e senha, tissnet, tissnet com usuario e senha…
Se nós criarmos um WS poderei manter conectividade automaticamente com quais por exemplo???
Já o nosso banco de dados faz o levantamento das informações e conseguimos já gerar o XML e largar prontinho em uma pasta com o codigo ou nome de cada prestadora. O fato é que ei terá que um usuario ir lá na tal pasta e pegar os arquivos para fazer os uploads ou mandar por ftp enfim tá uma porcaria mas ai insisto na perguntaanterios.
A ANS criou um padrao e dentro desse padra cada Operadora criou um padrao e ai como que ficaria meu WEB SERVICE supriria as necessidades de todas eu consiguiria adapta-lo a todas elas???
Grato

oh… pra vc criar web services, vc terá q ter em algum lugar a url dos web services de cada operadora, onde vc ira selecionar pra qual vc deseja enviar. Cria um cliente padrao pra cada tipo de serviço(que sao sete) e só setará a url da operadora correspondente.

para seu web service, eu n sei muito bem se entendi sua pergunta… se vc puder mandar de novo mais detalhada…

abraços.
qq coisa me add no msn.

rbamartins

alguém ai ta fazendo tela de Upload pro TISS???

ghzatomic

Bom dia pessoal … tb sou mais um sofredor do TISSNET … gostaria de saber como vcs fizeram p implementar o https no tissnet … :smiley: … alguem ai pode me dar uma luz ?

ghzatomic

Bom dia pessoal … tb sou mais um sofredor do TISSNET … gostaria de saber como vcs fizeram p implementar o https no tissnet … … alguem ai pode me dar uma luz ?

Caike

cassio:
Outra dúvida!

O elemento <epilogo> no fim do arquivo XMl contém o hash md5 certo? Mas o que exatamente eu devo considerar para calcular o hash, já que o resultado vai dentro do arquivo… não saquei isso!

Obrigado!

Fala Cassio,

Pelo que eu li em um outro fórum, o cálculo do hash é feito em cima dos valores, e apenas dos valores, dos nodos do arquivo XML.

phtcosta

http://forum.datasus.gov.br/viewtopic.php?t=8061

rbamartins

Cara, vc quer implementar https para o tissnet, ponto-a-ponto, é isso?

Eu implementei para WebServices.

se puder especificar mais sua dúvida. Gostaria de poder ajuda-lo se possivel, blz?.

abraços

ghzatomic

entao … eu implementei o webservice … mas … agora eu nao tenho nem ideia do q fazer com o certificado digital … ele ja implementa issu automaticamente ?? … ou eu tenho q configurar mais alguma coisa ?

rbamartins

ghzatomic,

você tem deverá configurar o certificado digital no seu servidor de aplicação para seu projeto.

C

Dentro do assunto Webservices, pelas minhas pesquisas, concluí que: o webservices é necessário somente para as Operadoras e as Prestadoras (Clients) não precisam do webservices… somente se conectaria. É correto afirmar isso?

No meu caso sou Prestador… para fazer teste, eu consigo utilizar o TissNet como WebServices? não estou tendo sucesso nos meus teste para fazer o TissNet como WebServices… o que fiz:

1º) Criei um bat para start do server do TissNet, com o conteudo:
“C:\Arquivos de programas\java\jre1.5.0_12\bin\java” -cp “TissNet3.6.jar” br.gov.ans.tiss.servidor.Ouvinte

2º) Fiz um teste de envio de um Arquivo XML via TissNet (Client) para o meu server do TissNet starting anteriormente, deu certo.

Agora tentando com WebServices:
3º) Estou tentando conectar ao meu WebServices (de teste), e dá erro… estou tentando assim:
http:\localhost:57057\schemas\tissVerificaElegibilidadeV2_01_02.wsdl

4º) Para utilizar o WebServices é obrigatório o uso de Certificação SSL? para o meu teste (local) da para fazer testes sem a Certificação SSL? as Prestadoras também deverão ter uma Certificação SSL?

Muito Obrigado
Cristian Amaral

rbamartins

cristian_amaral, vou tentar responder dentro do conhecimento que adquirir nestes meses de luta com o TISS.

R.: Como, assim como eu, você é Prestador, se a Operadora só disponibilizar meios de transmissão via Webservices, você vai ter que enviar via WebServices. Estamos presos à vontade dela. O padrão TISS é MUITO flexível.

R.: Nunca consegui fazer transmissão para um webservices através do aplicativo TISSNet.


1º) Criei um bat para start do server do TissNet, com o conteudo:
“C:\Arquivos de programas\java\jre1.5.0_12\bin\java” -cp “TissNet3.6.jar” br.gov.ans.tiss.servidor.Ouvinte

2º) Fiz um teste de envio de um Arquivo XML via TissNet (Client) para o meu server do TissNet starting anteriormente, deu certo.

Agora tentando com WebServices:
3º) Estou tentando conectar ao meu WebServices (de teste), e dá erro… estou tentando assim:
http:\localhost:57057\schemas\tissVerificaElegibilidadeV2_01_02.wsdl

4º) Para utilizar o WebServices é obrigatório o uso de Certificação SSL? para o meu teste (local) da para fazer testes sem a Certificação SSL? as Prestadoras também deverão ter uma Certificação SSL?

Muito Obrigado
Cristian Amaral

R.: Ambas as partes, Prestador ou Operadora, se o tipo de transmissão for via WebServices é obrigatório a utilização de Certificação Digital com Nível 1 de requisito.
Caso seja via ponto-a-ponto, TISSNet, não se faz obrigatório a utilização de SSL.

Vou anexar um documento da ANS que explica bastante coisa sobre esses pontos de segurança e transmissão.

Abraços, qq coisa pode perguntar.

C

Outra questão dentro do TISS… Elegibilidade…

Tenho dúvida sobre o fluxo de comunicação Prestador X Operadora, para Elegibilidade… estou desenvolvendo uma app para conectar com a Operadora, onde irá mandar um arquivo XML(Elegibilidade) para a Operadora via ponto a ponto; ou irei comunicar via WebServices (isso dependerá de uma configuração por Operadora).

Minha dúvida:

  1. Como será o retorno da Operadora, via ponto-a-ponto, é na mesma conexão que envio o arquivo? e como é esse retorno, arquivo xml? alguem tem um arquivo de retorno de exemplo…

  2. Como será o retorno da Operadora, quando for com WebServices?

  3. tanto para as perguntas 1) e 2) esse retorno será on-line… ou terá um delay de processamento da Operadora, e se houver este delay, quando será o retorno?

Obrigado

Luca

Olá

Muito bom este tópico. Eu, que não sabia nem que existia este tal de TISS, aprendi um bocado.

[]s
Luca

rbamartins

Luca:
Olá

Muito bom este tópico. Eu, que não sabia nem que existia este tal de TISS, aprendi um bocado.

[]s
Luca

Luca, valeu mesmo. O TISS é um padrão estabelecido pela ANS (Agência Nacional de Saúde) que deverá ser implementado por todas os Prestadores (Hospitais, clinicas e etc) e Operadoras (planos de saúde). Uma forma de padronizar e agilizar a troca de informações entre os Hospitais e as Operadoras de planos de saúde. Dessa forma, por exemplo, para saber se um paciente está em dia com o plano ou se ele o plano autoriza ou não que seja feito tal atendimento não será mais necessário que ninguém fique fazendo isso via telefone, agora posso fazer de forma eletrônica (implementando, por exemplo, um webservices padrão da operadora onde vou e busco tal informação). Tudo arquivo XML, até as guias. O prazo final para que todos estejam de acordo com o TISS é dia 01/09/2007.

Abraços

rbamartins

cristian_amaral:

Minha dúvida:

  1. Como será o retorno da Operadora, via ponto-a-ponto, é na mesma conexão que envio o arquivo? e como é esse retorno, arquivo xml? alguem tem um arquivo de retorno de exemplo…

R.: Acredito que o retorno seja automático.

cristian_amaral:

2) Como será o retorno da Operadora, quando for com WebServices?

R.: Da mesma forma que via tissnet, ponto-a-ponto. A resposta é automatica. Dependendo do tipo de socilitação, como solicitacao de autorizacao, deve ser retornado um arquivo com uma resposta automatica “EM ANALISE”. Onde devemos ficar reenviando até que a operadora tenha a resposta para dar e mande o arquivo com a informação desejada.

R.: O retorno é síncrono, para cada envio tem sempre uma resposta automática.

Pelo menos é o que entendi.

Qual coisa pode tentar ver os tipos de retorno para cada tipo de envio nos schemas (arquivos .xsd).

Eu deixei ai na página um arquivo para download que pode ajudar bastante.

Espero ter ajudado em algo.

Abraços.

ghzatomic

oi pessoal … agora eu to na reta final dessa porcaria … e me surgiu uma duvida … q na verdade n eh bem uma duvida … mas eu nao endendi bem o como fazer … p implementar o ValidadorCertificados :smiley: … alguem ai ja fez ? :smiley:

rbamartins

ghzatomic, o que eu sei dessa parte é que esse validador é usado para verificar se o certificado digital que esta sendo usado é verdadeiro.
Realmente, não sei dizer mais sobre isso. Caso alguém saiba, por favor divulgue aqui.

Abraços.

ghzatomic

vixi … rsssss ta foda esse negocio … mas vlw ai :smiley:

ghzatomic

quando eu terminar de implementar SE eu terminar issu rsssssssssss eu posto :smiley:

rbamartins

Post mesmo. E que dia 01/09/2007 demore de chegar… hehe…

Abraços.

rbamartins

Alguém aqui conseguiu fazer funcionar a chamada a um WEBSERVICES de uma OPERADORA com HTTPS?Conseguiu fazer seu cliente chamar esse serviço e funcionar?

Se sim, me ajudem, por favor.

Para mim da o seguinte erro quando meu cliente chama a url do serviço com HTTPS:

CANNOT CREATE SERVICE INSTANCE, SERVICE {HTTP://WWW.ANS.GOV.BR/TISS/WS/TIPOS/TISSLOTEGUIAS/V20102}TISSLOTEGUIASV2_01_02 NOT FOUND IN THE WSDL HTTPS://WWW.AMIL.COM.BR/AMILWEBSERVICES/SERVICES/TISSLOTEGUIAS?WSDL

Abraços e bom dia a todos.

ghzatomic

eh exatamente ai q eu tb estou com problema ! :frowning: ,… mas eu nao cheguei a ver esse erro …

rbamartins

Que rumo vc ta seguindo?

:frowning:

rbamartins

Siga por aqui também.

Tem gente tentando me ajudar…

vamos ver se conseguimos resolver isso juntos

http://www.guj.com.br/posts/list/69005.java

ghzatomic

entao kara … acabei de ve a cagada q ta dando no servidor, … v c vc ja viw issu …

EJB5090: Exception in creating EJB container [javax.xml.ws.WebServiceException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found]
appId=AEPSTISS moduleName=TissNet3_8_jar ejbName=tissSolicitacaoStatusAutorizacaoV2_01_02
LDR5004: UnExpected error occured while creating ejb container
javax.xml.ws.WebServiceException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found

rbamartins

Não lembro se já tive isso não. Mas vi que voce ta usando o Tissnet 3.8 ainda…

olha só… já saiu o 3.9 com algumas mudanças em relacao a 3.8 e agora já saiu a 3.10

acompanhe aqui tambem http://www.guj.com.br/posts/list/69005.java

rbamartins

ghzatomic, adicionei vc no msn. Quem sabe podemos nos ajudar.

Abraços

rbamartins

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

rbamartins

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

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…

rbamartins

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…

q tipo de problema amigo?

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?

rbamartins

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?

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.


bfgaleno

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.

rbamartins

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.

bfgaleno

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

No Aguardo!

rbamartins

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

No Aguardo!

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.

bfgaleno

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.

A

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

tobiasrdm

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

rbamartins

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

R = Não se faz obrigatório a utilização de certificado digital para 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.

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.

rbamartins

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

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

rbamartins

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

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

tobiasrdm

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.

rbamartins

tobiasrdm:

Rafael, obrigado pela atenção.

Tobias Ricken de Medeiros.

Obrigado você pela contribuição deixada.

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

Abraços.

Boa sorte.

esstein

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/

R

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:

“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.”

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

M

Olá!

Por acaso os srs conhecem algum tutorial/know-how para faturamento TISS?
Estou buscando a melhor forma pra desenvolver e manipular o xml, por hoje dei uma estudada nos manuais da ans e em alguns frameworks(dom4j, jabx) para manipulação xml, no entanto não cheguei a uma conclusão concreta gostaria que se possível indicacassem o que escolheram e o por que. (framework).

Obrigado!

rbamartins

Marco Nascimento:
Olá!

Por acaso os srs conhecem algum tutorial/know-how para faturamento TISS?
Estou buscando a melhor forma pra desenvolver e manipular o xml, por hoje dei uma estudada nos manuais da ans e em alguns frameworks(dom4j, jabx) para manipulação xml, no entanto não cheguei a uma conclusão concreta gostaria que se possível indicacassem o que escolheram e o por que. (framework).

Obrigado!

Optamos por utilizar o JAXB. Apesar de conhecer pessoas que se deram muito bem usando o DOM.
O maior peso em nossa escolha foi a facilidade para se efetuar o parser OBJETO JAVA -> XML, XML -> OBJETO JAVA. O suporte a validação de schema, através de .xsd, também foi de grande ajuda.

Qualquer coisa no início desse tópico deixei alguns comentários exemplificando como efetuar essas operações utilizando o JAXB.

Espero ter ajudado.

[]'s

M

Alguma alma caridosa teria um xml validado(com as erratas), de preferencia st ou cp da versão v2 2.1.3?

“2. Os campos não têm a obrigatoriedade de preenchimento podem ser excluídos
das guias? [agosto 2006]
R: Os campos que não têm a obrigatoriedade de preenchimento não podem ser
excluídos das guias.”
Fonte: ans_tiss_texto_completo

Isso quer dizer que todos os campos devem ser preenchidos no xml das guias?

Tks!

M

Respondendo a pergunta; Sim todos os campos devem constar no xml. Pra aqueles que assim como eu, estão estudando sobre o Tiss a dica é baixar o TissNet da versão atual e dar uma estudada na estrutura/código. Na net se procurar bem certamente encontrará alguns exemplos de xml validados da versão atual.

Desculpem a pergunta besta no post anterior.- :oops:–

Abs!

elissandromendes

Prezado Rafael Britto,

Estou implementando o cliente para o Tiss para uma operadora.

Em alguns post seu li que voce informou que bastava criar um servico padrão e alterar apenas a URL conforme a operadora.

Daí achei estranho que para nossa primeira operadora tive problemas.

Fiz o seguinte, a partir do wsdl do serviço TransmiteMensagem que obtive no site da ANS gerei o cliente usando Netbeans 6.1.

Usei o seguinte codigo para consumir, apenas para teste:

package testetiss;
import java.net.URL;
import javax.xml.namespace.QName;

/**
 *
 * @author elissandromendes
 */
public class Main {

    public static void main(String[] args) {
        
        try { 
           
           URL wsdl = new URL("http://infotiss.unimedcentro.com.br/servicetiss/Services/tissTransmiteMensagem.asmx?wsdl");
           QName serviceName = new QName("http://www.ans.gov.br/tiss/ws/tipos/tissTransmiteMensagem/v20103", "tissTransmiteMensagem");
           
           br.gov.ans.tiss.ws.tipos.tisstransmitemensagem.v20103.TissTransmiteMensagem service = new      br.gov.ans.tiss.ws.tipos.tisstransmitemensagem.v20103.TissTransmiteMensagem(wsdl, serviceName);

           br.gov.ans.tiss.ws.tipos.tisstransmitemensagem.v20103.TissTransmiteMensagemPortType port = service.getTissTransmiteMensagemPort();

           java.lang.String mensagem = "XXXXXXXXX";

           java.lang.String result = port.tissTransmiteMensagemOperation(mensagem);
           System.out.println("Result = "+result);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Bom, recebi a seguinte exception:

javax.xml.ws.WebServiceException: {http://www.ans.gov.br/tiss/ws/tipos/tissTransmiteMensagem/v20103}tissTransmiteMensagem is not a valid service. Valid services are: {http://suporte.infomed.inf.br/}tissTransmiteMensagem
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:192)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:159)
        at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:81)
        at javax.xml.ws.Service.<init>(Service.java:56)
        at br.gov.ans.tiss.ws.tipos.tisstransmitemensagem.v20103.TissTransmiteMensagem.<init>(TissTransmiteMensagem.java:42)
        at testetiss.Main.main(Main.java:31)


Parece que ao se consumir o serviço o descritor força que o namespace seja o que definiu ?

Estou fazendo algo de errado ?

Pergunto, como com apenas uma implentação de um cliente acesso várias operadoras ?

Agradeço qualquer ajuda.

E

Pessoal, dia 25/06/08 mandei um e-mail para a ANS ([email removido]) com várias dúvidas e se alguém puder me responder (na medida do possível também responderei à dúvidas que o pessoal postar) alguma coisa, eu agradeço. Eis o conteúdo do e-mail:

1 - Supondo que a operadora não utiilize WEBSERVICES mas que disponibilize em seu portal uma maneira para que o prestador possa solicitar (no caso, em um formulário WEB) “status de Protocolo” e/ou “Demonstrativos de retorno”, essa solicitação, em si, também terá que gerar um arquivo XML ??

2 - Em relação à “solicitação de Demonstrativos de Retorno” e aos próprios Demonstrativos (“Demonstrativo de Análise da Conta Médica” e “Demonstrativo de Pagamento”) tenho mais de uma dúvida:

2.1 - Pelo que entendi, o “retorno” para a uma solicitação deve compreender, no máximo, 30 demonstrativos (conforme arquivo “Alteracoes_2_01_03.pdf” que se encontra no site da ANS). Isto é correto ??

2.2 - Em um “Demonstrativo de Análise da Conta Médica”, só posso ter dados referentes a uma única conta, correto ?? Só que isso, na minha visão , tem um problema: A “solicitação de um Demonstrativo de Análise da Conta Médica” pode ser feita (conforme vi nas RNs, INs e nos arquivos “tissSimpleTypesV2_01_03.xsd” e “tissComplexTypesV2_01_03.xsd”) através de um “período” ou de um “número de protocolo”, sendo assim, qualquer retorno trará “muitas contas” (já que não posso me referenciar a uma conta/guia específica) e isso tem dois problemas:

2.2.1 - Um demonstrativo comporta dados de uma única conta, então O número de 30 demonstrativos de retorno será ultrapassado facilmente…

2.2.2 - Se vários demonstrativos foram retornados de uma única vez e o prestador deseja ver os dados de apenas uma conta, então, entendo que existem vários demonstrativos sendo retornados desnecessariamente, correto ? E ainda terei que disponibilizar uma forma para que o prestador saiba qual é a conta que de fato ele estava esperando ver…

2.3 - Ainda sobre o “demonstrativo de análise da conta médica” e insistindo na idéia de que o objetivo do mesmo é listar dados de uma “única conta”, qual a idéia/conceito qua a ANS faz dos campos de 10 a 15 e de 33 a 38 (os números se referem ao número de cada campo do layout do citado demonstrativo, como consta no arquivo “IN22_dides_anexos.pdf” do site da ANS) ?? A legenda (também encontrada no arquivo IN22_dides_anexos.pdf") que teoricamente descreve o conteúdo desses campos não ficou clara para mim e pelo que pesquisei, causa bastante dúvidas nas pessoas/empresas que necessitam implantar o padrão TISS…Seria possível informar alguma Operadora ou Prestadora que já trabalhe com esse demonstrativo de forma “sólida” ??

2.4 - Sobre o “demonstrativo de Pagamento” minha dúvida é se cada “crédito” ao prestador deve ou não gerar um demonstrativo. Por exemplo: Supondo que o prestador receba um “adiantamento”, isso obrigatoriamente deve gerar um demonstrativo por parte da Operadora ?? Se não, um único demonstrativo ao final do mês é suficiente ??

E

Pessoal, dia 25/06/08 mandei um e-mail para a ANS ([email removido]) com várias dúvidas e se alguém puder me responder (na medida do possível também responderei à dúvidas que o pessoal postar) alguma coisa, eu agradeço. Eis o conteúdo do e-mail:

1 - Supondo que a operadora não utiilize WEBSERVICES mas que disponibilize em seu portal uma maneira para que o prestador possa solicitar (no caso, em um formulário WEB) “status de Protocolo” e/ou “Demonstrativos de retorno”, essa solicitação, em si, também terá que gerar um arquivo XML ??

2 - Em relação à “solicitação de Demonstrativos de Retorno” e aos próprios Demonstrativos (“Demonstrativo de Análise da Conta Médica” e “Demonstrativo de Pagamento”) tenho mais de uma dúvida:

2.1 - Pelo que entendi, o “retorno” para a uma solicitação deve compreender, no máximo, 30 demonstrativos (conforme arquivo “Alteracoes_2_01_03.pdf” que se encontra no site da ANS). Isto é correto ??

2.2 - Em um “Demonstrativo de Análise da Conta Médica”, só posso ter dados referentes a uma única conta, correto ?? Só que isso, na minha visão , tem um problema: A “solicitação de um Demonstrativo de Análise da Conta Médica” pode ser feita (conforme vi nas RNs, INs e nos arquivos “tissSimpleTypesV2_01_03.xsd” e “tissComplexTypesV2_01_03.xsd”) através de um “período” ou de um “número de protocolo”, sendo assim, qualquer retorno trará “muitas contas” (já que não posso me referenciar a uma conta/guia específica) e isso tem dois problemas:

2.2.1 - Um demonstrativo comporta dados de uma única conta, então O número de 30 demonstrativos de retorno será ultrapassado facilmente…

2.2.2 - Se vários demonstrativos foram retornados de uma única vez e o prestador deseja ver os dados de apenas uma conta, então, entendo que existem vários demonstrativos sendo retornados desnecessariamente, correto ? E ainda terei que disponibilizar uma forma para que o prestador saiba qual é a conta que de fato ele estava esperando ver…

2.3 - Ainda sobre o “demonstrativo de análise da conta médica” e insistindo na idéia de que o objetivo do mesmo é listar dados de uma “única conta”, qual a idéia/conceito qua a ANS faz dos campos de 10 a 15 e de 33 a 38 (os números se referem ao número de cada campo do layout do citado demonstrativo, como consta no arquivo “IN22_dides_anexos.pdf” do site da ANS) ?? A legenda (também encontrada no arquivo IN22_dides_anexos.pdf") que teoricamente descreve o conteúdo desses campos não ficou clara para mim e pelo que pesquisei, causa bastante dúvidas nas pessoas/empresas que necessitam implantar o padrão TISS…Seria possível informar alguma Operadora ou Prestadora que já trabalhe com esse demonstrativo de forma “sólida” ??

2.4 - Sobre o “demonstrativo de Pagamento” minha dúvida é se cada “crédito” ao prestador deve ou não gerar um demonstrativo. Por exemplo: Supondo que o prestador receba um “adiantamento”, isso obrigatoriamente deve gerar um demonstrativo por parte da Operadora ?? Se não, um único demonstrativo ao final do mês é suficiente ??

R

Pessoal, boa tarde.

Iremos utilizar o Tissnet versão 4.2 para validação de mensagems XML enviadas pelo prestador. Montei um código de teste, para validar alguns arquivos XML na versão 2.01.03 da seguinte forma:

1 - Instancio uma variável para a mensagem (pacote br.gov.ans.padroes.tiss.schemas.v20103):

MensagemTiss mTiss = new MensagemTiss();

2 - Defino o arquivo XML:

mTiss.setArquivoXml("caminho_completo_arquivo");

3 - Validação do schema:

MensagemTISS retorno = mTiss.toObjetoEsquemaTISSV20103();

O objeto retornado consta sempre com os atributos cabecalho, operadoraParaPrestador, prestadorParaOperadora e epilogo nulos, situação não ocorrida se utilizamos um arquivo XML na versão 2.01.02 (não houve customização em nenhum classe do TissNet até o momento). No console, aparece sempre o erro abaixo, para qualquer uma das versões:

Error: Document is invalid: no grammar found. Error: Document root element "ans:mensagemTISS", must match DOCTYPE root "null".

Utilizo a versão 5 do Java, atualização 16. Baixei todos os schemas do site da ANS e os atualizei, para conferir se era algum problema com os mesmos, mas o erro citado persiste. Tentei também atualizar as bibliotecas da API JAXB contidas na aplicação, porém sem nenhuma mudança no problema.

Alguém já passou por situação semelhante, ou pode me dar uma orientação do que está causando tal problema? :roll:

Segue abaixo o exemplo de XML na versão 2.01.03, que estamos tentando validar.

<?xml version="1.0" encoding="ISO-8859-1" ?> <ans:mensagemTISS xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas"> <ans:cabecalho> <ans:identificacaoTransacao> <ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao> <ans:sequencialTransacao>166</ans:sequencialTransacao> <ans:dataRegistroTransacao>14/04/2008</ans:dataRegistroTransacao> <ans:horaRegistroTransacao>16:50</ans:horaRegistroTransacao> </ans:identificacaoTransacao> <ans:origem> <ans:codigoPrestadorNaOperadora> <ans:CNPJ>51846871000161</ans:CNPJ> </ans:codigoPrestadorNaOperadora> </ans:origem> <ans:destino> <ans:registroANS>346659</ans:registroANS> </ans:destino> <ans:versaoPadrao>2.01.03</ans:versaoPadrao> </ans:cabecalho> <ans:prestadorParaOperadora> <ans:loteGuias> <ans:numeroLote>166</ans:numeroLote> <ans:guias> <ans:guiaFaturamento> <ans:guiaSP_SADT> <ans:identificacaoGuiaSADTSP> <ans:registroANS>346659</ans:registroANS> <ans:dataEmissaoGuia>14/02/2008</ans:dataEmissaoGuia> <ans:numeroGuiaPrestador>54526453</ans:numeroGuiaPrestador> </ans:identificacaoGuiaSADTSP> <ans:numeroGuiaPrincipal>54526453</ans:numeroGuiaPrincipal> <ans:dadosAutorizacao> <ans:dataAutorizacao>14/02/2008</ans:dataAutorizacao> <ans:senhaAutorizacao>123456</ans:senhaAutorizacao> </ans:dadosAutorizacao> <ans:dadosBeneficiario> <ans:numeroCarteira>0100092105671008</ans:numeroCarteira> <ans:nomeBeneficiario>LUIZ VANZELLA</ans:nomeBeneficiario> <ans:nomePlano>TESTE</ans:nomePlano> <ans:validadeCarteira>31/12/2008</ans:validadeCarteira> <ans:numeroCNS>44552266</ans:numeroCNS> <ans:identificadorBeneficiario/> </ans:dadosBeneficiario> <ans:dadosSolicitante> <ans:contratado> <ans:identificacao> <!--You have a CHOICE of the next 3 items at this level --> <ans:codigoPrestadorNaOperadora>12345678</ans:codigoPrestadorNaOperadora> </ans:identificacao> <ans:nomeContratado>HOSPITAL DO OLHO RIO PRETO</ans:nomeContratado> <ans:enderecoContratado> <ans:tipoLogradouro>008</ans:tipoLogradouro> <ans:logradouro>JOSE MUNIA</ans:logradouro> <ans:numero>55</ans:numero> <ans:complemento/> <ans:codigoIBGEMunicipio>0354980</ans:codigoIBGEMunicipio> <ans:municipio>SAO JOSE DO RIO PRETO</ans:municipio> <ans:codigoUF>SP</ans:codigoUF> <ans:cep>15090500</ans:cep> </ans:enderecoContratado> <ans:numeroCNES>2097656</ans:numeroCNES> </ans:contratado> <ans:profissional> <ans:nomeProfissional>CLAUDIO DALLOUL</ans:nomeProfissional> <ans:conselhoProfissional> <ans:siglaConselho>CRM</ans:siglaConselho> <ans:numeroConselho>89770</ans:numeroConselho> <ans:ufConselho>SP</ans:ufConselho> </ans:conselhoProfissional> <ans:cbos>06147</ans:cbos> </ans:profissional> </ans:dadosSolicitante> <ans:prestadorExecutante> <ans:identificacao> <ans:CNPJ>51846871000161</ans:CNPJ> </ans:identificacao> <ans:nomeContratado>HOSPITAL DO OLHO RIO PRETO</ans:nomeContratado> <ans:enderecoContratado> <ans:tipoLogradouro>008</ans:tipoLogradouro> <ans:logradouro>JOSE MUNIA</ans:logradouro> <ans:numero>55</ans:numero> <ans:complemento/> <ans:codigoIBGEMunicipio>0354980</ans:codigoIBGEMunicipio> <ans:municipio>SAO JOSE DO RIO PRETO</ans:municipio> <ans:codigoUF>SP</ans:codigoUF> <ans:cep>15090500</ans:cep> </ans:enderecoContratado> <ans:numeroCNES>2097656</ans:numeroCNES> <ans:profissionalExecutanteCompl> <ans:nomeExecutante>CLAUDIO DALLOUL</ans:nomeExecutante> <ans:conselhoProfissional> <ans:siglaConselho>CRM</ans:siglaConselho> <ans:numeroConselho>89770</ans:numeroConselho> <ans:ufConselho>SP</ans:ufConselho> </ans:conselhoProfissional> <ans:codigoCBOS>06147</ans:codigoCBOS> </ans:profissionalExecutanteCompl> </ans:prestadorExecutante> <ans:indicacaoClinica></ans:indicacaoClinica> <ans:caraterAtendimento>U</ans:caraterAtendimento> <ans:dataHoraAtendimento>14/02/2008H16:30</ans:dataHoraAtendimento> <ans:diagnosticoAtendimento> <ans:CID> <ans:nomeTabela>CID-10</ans:nomeTabela> <ans:codigoDiagnostico>H33</ans:codigoDiagnostico> <ans:descricaoDiagnostico>DESCOLAMENTOS E DEFEITOS DA RETINA</ans:descricaoDiagnostico> </ans:CID> <ans:tipoDoenca>A</ans:tipoDoenca> <ans:indicadorAcidente>2</ans:indicadorAcidente> </ans:diagnosticoAtendimento> <ans:tipoSaida>5</ans:tipoSaida> <ans:tipoAtendimento>04</ans:tipoAtendimento> <ans:procedimentosRealizados> <ans:procedimentos> <ans:procedimento> <ans:codigo>50140043</ans:codigo> <ans:tipoTabela>00</ans:tipoTabela> <ans:descricao>RETINOPEXIA COM INTROFLEXAO ESCLERAL + VITRECTOMIA + ENDOFOT</ans:descricao> </ans:procedimento> <ans:data>14/02/2008</ans:data> <ans:horaInicio>16:30</ans:horaInicio> <ans:horaFim>16:30</ans:horaFim> <ans:quantidadeRealizada>1</ans:quantidadeRealizada> <ans:viaAcesso>U</ans:viaAcesso> <ans:tecnicaUtilizada>C</ans:tecnicaUtilizada> <ans:reducaoAcrescimo>0</ans:reducaoAcrescimo> <ans:valor>1140.80</ans:valor> <ans:valorTotal>1140.80</ans:valorTotal> </ans:procedimentos> </ans:procedimentosRealizados> <ans:outrasDespesas> <ans:despesa> <ans:identificadorDespesa> <ans:codigo>00097046</ans:codigo> <ans:tipoTabela>00</ans:tipoTabela> <ans:descricao>AGULHA DESC. HIP 25 X 7 TW INJEX</ans:descricao> </ans:identificadorDespesa> <ans:tipoDespesa>3</ans:tipoDespesa> <ans:dataRealizacao>14/02/2008</ans:dataRealizacao> <ans:horaInicial>16:30</ans:horaInicial> <ans:horaFinal>16:30</ans:horaFinal> <ans:reducaoAcrescimo>0</ans:reducaoAcrescimo> <ans:quantidade>3</ans:quantidade> <ans:valorUnitario>0.46</ans:valorUnitario> <ans:valorTotal>1.38</ans:valorTotal> </ans:despesa> </ans:outrasDespesas> </ans:guiaSP_SADT> </ans:guiaFaturamento> </ans:guias> </ans:loteGuias> </ans:prestadorParaOperadora> <ans:epilogo> <ans:hash>e643abafc6d32b8a355ad1dd95965827</ans:hash> </ans:epilogo> </ans:mensagemTISS>

obs: tentando efetuar a conversão para objeto “na mão”, com o código abaixo, o erro ocorrido é o mesmo.

JAXBContext jc = JAXBContext.newInstance( "br.gov.ans.padroes.tiss.schemas.v20103" ); MensagemTISS mensagem = null; Unmarshaller unmarshaller = jc.createUnmarshaller(); String arquivo = "caminho_para_arquivo"; File file = new File( arquivo ); mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream( file.getAbsolutePath()));

Obrigada a todos pela ajuda.

rbamartins

Olá, galera. Boa tarde.

Desculpe não ter respondido ainda a nenhuma dessas mensagens, mas estive ausente e estou vendo somento agora.

Vou tentar responder o mais rápido possível àquilo que souber responder com exatidão.

Dei uma lida rápida pelos últimos post, mas vou ler tudo com calma hoje a noite mais tranquilo em casa.

Sobre o Ryoko

Ryoko:

situação não ocorrida se utilizamos um arquivo XML na versão 2.01.02 (não houve customização em nenhum classe do TissNet até o momento).

Não entendi qdo vc diz q não houve customização de uma versão para outra. Pois, pelo que vi tivemos muitas mudanças em vários campos, teve até campo q não era obrigatório e passou a ser.
Desculpe se não entendi direito, mas se puder explicar melhor.

De qualquer forma, hoje a noite, vou ler tudo com calma para poder responder, se possível, a todos que postaram.

Esse tópico é muito importante pois estamos todos no mesmo barco. :shock:

Abraçao a todos e até logo mais.

R

Olá Rafael, tudo bem?

Quando mencionei customização, na realidade estava falando que o fonte do Tissnet não foi alterado/adaptado por nós, estamos utilizando exatamente conforme distribuído pela ANS (fiz alguns testes alterando jars, mas já retornei aos utilizados originalmente) :slight_smile:

Caso seja necessária mais qualquer informação que eu tenha esquecido, por gentileza me avisem.

Obrigada a todos.

[]'s

R

Uma coisa que estou reparando agora, na pasta lib do Tissnet existem vários JARs, alguns inclusive com pacotes repetidos (por exemplo o pacote javax.xml existe tanto no javaee.jar - que parece emglobar vários - quanto no jaxb-api.jar).

Tentei utilizar com as seguintes bibliotecas no classpath do projeto:
- bcprov-jdk15-131.jar
- javaee.jar
- swing-layout-1.0.3.jar

Quando obtive o resultado acima. Testei atualizar alguns JARS, e utilizar da seguinte forma:

- bcprov-jdk15-131.jar
- ejb-3_0-api.jar
- jaxb-api.jar
- jaxb-impl.jar
- jaxb-xjc.jar
- jaxws-api.jar
- jsr173_api.jar
- jsr181-api.jar
- jsr250-api.jar
- swing-layout-1.0.3.jar

E agora, ao tentar rodar com o código abaixo:

JAXBContext jc = JAXBContext.newInstance( "br.gov.ans.padroes.tiss.schemas.v20103" );  
			MensagemTISS mensagem = null; // limpando objeto mensagem para ser tabalhado com o unmarshaller  

			Unmarshaller unmarshaller = jc.createUnmarshaller();  
			File file = new File( caminho_v3 );  
			mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(  
			         file.getAbsolutePath()));

Eu recebo a seguinte exceção:

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.ans.gov.br/padroes/tiss/schemas", local:"mensagemTISS"). Expected elements are <{http://www.ans.gov.br/padroes.tiss.schemas.v20103}mensagemTISS>

Com quais bibliotecas o projeto deve ser compilado?

Obrigada.

rbamartins

Olá Tissianos :smiley::frowning:

Sei que a todos que entraram em contato comigo via GUJ, MSN ou E-MAIL e me perguntou sobre a obrigatoriedade de conter a informação ans em todas as tags dos xmls eu informei que não era obrigatório. E, realmente, não é. Pelo menos, não vi nenhuma normativa nova da ANS tornando-a obrigatória.

Para nossa infelicidade (eu e meu colega de trabalho que desenvolvemos a solução do TISS aqui) uma operadora está exigindo que contenha as tags do xml sejam dessa forma: ans:numeroLote</ans:numeroLote> e não mais assim . A mesma alega que estamos fora do padrão. O detalhe é que só ela alega isso e teve como dizer que era obrigatório.
O problema maior é que a operadora não quer receber o arquivo e consequentemente pagar, então ordens superiores nos pediram para mandar da forma que eles querem.

Ai é que entra minha revolta, pois joga o padrão para o espaço. Quem trabalha com o TISS sabe que isso vem acontecendo com frequência e que estamos tendo que “abrir as pernas” para as exigências da operadora, pois a ANS não faz nada quanto a isso.

O PADRÃO POR OPERADORA está evoluindo cada vez mais … rsrs… :shock:

Pronto… deixa eu voltar pra minha dúvida.

Gostaria de saber se alguém sabe como faço, através da API JAXB, para inserir nas tags o ans e deixá-las assim: ans:numeroLote</ans:numeroLote> ???

Abraços a todos e desculpem pela revolta.

rbamartins

Completando…

vejam isso http://downloads.caixa.gov.br/saude_caixa/roteiroxmlv8.pdf.

Tudo bem que parece pouco, mas o padrão da ANS diz que o arquivo deve conter no máximo 100 guias e ela toma a liberdade de exigir 99 guias. E o nome do arquivo xml, esse é um novo padrão ???

Eu só quero dizer isso: E O PADRÃO FICA AONDE?

No fórum da datasus tem muitas informações importantes http://forum.datasus.gov.br/viewtopic.php?p=58363#p58363.

Abraços a todos.

I

gostei da discursão e me interessei em aprender sobre o uso de schema de xml… tem como vc me passar o caminho das pedras para aprender isso… Já instalei a ferramenta JAXB que vc indicou…

Grato,

Ítam

M

Olá pessoal,

Estou com algumas dificuldades aqui… Se alguém souber como resolver por favor fique a vontade. :smiley:

Quando valido o xml utilizando o obj MensagemTiss ocorre o seguinte erro:

Error: Document is invalid: no grammar found. Error: Document root element "ans:mensagemTISS", must match DOCTYPE root "null". Warning: SchemaLocation: schemaLocation value = 'http://www.ans.gov.br/padroes/tiss/schemas' must have even number of URI's. Error: cvc-elt.1: Cannot find the declaration of element 'ans:mensagemTISS'. ++ Versao atual produziu erro: cvc-elt.1: Cannot find the declaration of element 'ans:mensagemTISS'. ++ Usando versao anterior dos esquemas ++ Versao anterior produziu erro: cvc-elt.1: Cannot find the declaration of element 'ans:mensagemTISS'. br.gov.ans.tiss.exceptions.TissSchemaException: Mensagem inválida: XML do arquivo não obedece ao esquema do TISS: cvc-elt.1: Cannot find the declaration of element 'ans:mensagemTISS'.

Logo suspeitei do seguinte trecho do XML:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <ans:mensagemTISS ns2:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:ns2="http://www.w3.org/2001/XMLSchema-instance" xmlns:ans="http://www.ans.gov.br/padroes.tiss.schemas.v20103">

No código faço da seguinte forma:

marshal.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://www.ans.gov.br/padroes/tiss/schemas");

(o xmlns:ans não deveria ser sobrescrito?)

Agradeço qualquer ajuda!
Obrigado!

ghzatomic

Seguinte … :slight_smile:

Cria uma classe assim … :

/**
 *
 * @author Caio Rodrigo Paulucci
 */
public class ANSPrefixMapper extends NamespacePrefixMapper {

    public static final String PREFIXO_ANS = "ans";

    @Override
    public String getPreferredPrefix(String arg0, String arg1, boolean arg2) {
        return PREFIXO_ANS;
    }
    
}

blz …

ai na hr de gerar o XML … coloca assim

Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ANSPrefixMapper());

e funfa ! huAshuHsuaH … q q coisa me avisa ai !! :smiley:

A

Seguinte, fiz exatamnte o que você postou. Criei a classe

public class ASNPrefixMapper extends NamespacePrefixMapper {

	public static final String PREFIXO_ANS = "ans";
	@Override
	public String getPreferredPrefix(String arg0, String arg1, boolean arg2) {
		// TODO Auto-generated method stub
		return PREFIXO_ANS;
	}

}

e

m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ASNPrefixMapper());

Mas ao fazer isso ocorre o seguinte erro:
name: com.sun.xml.bind.namespacePrefixMapper value: classes.ASNPrefixMapper@a4be02

Qual seria o problema?

ghzatomic

Cola o erro inteiro ai … q eh mais facil ! :slight_smile:

A

Segue o erro:

javax.xml.bind.PropertyException: name: com.sun.xml.bind.namespacePrefixMapper value: br.gov.ans.tiss.nucleo.ASNPrefixMapper@1a7f9dc
	at javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(Unknown Source)
	at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.setProperty(Unknown Source)
	at br.gov.ans.tiss.nucleo.ConvertXML.ExportaXML(ConvertXML.java:208)
	at br.gov.ans.tiss.nucleo.ConvertXML$3.actionPerformed(ConvertXML.java:184)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
ghzatomic

entao … me diz uma coisa … q versao eh o jaxb q vc ta usando e sua aplicacao eh web ou client server ?

A

Utilizo a versão que vem junto com o TissNet4.2, com o nome de bcprov-jdk15-131.jar.

Estou desenvolvendo uma pequena aplicação para ler um txt e exportar para XML no padrão do TISS. Utilizo o Eclipse 3.4 desenvolvendo na plataforma cliente servidor.

ghzatomic

Entao … é a mesma versao q eu estou usando … essa classe esta identica a q eu estou usando também … a unica diferenca eh q a minha app esta num glassfish e eh web … pode ser alguma coisa relacionada com issu …
mas a linha de comando q muda la o ANS … é essa mesmo … igual a q eu passei ai p vc !

da uma revisada … pode ser q alguma coisa de anormal esteja acontecendo ai … q q coisa me avisa q eu estou a disposição ! … t+

:slight_smile:

A

ghzatomic, Boa tarde.

O problema anterior vou deixar por último para resolver. Gostaria que me ajudasse num outro problema, se for possível.
Estou gerando a mensagem TISS. Mas para ela estar completa, preciso gerar o Hash dos dados. Pesquisei nas listas de discussão e vi alguns tópicos, mas nenhum dos que achei fala claramente como gerar esse código. Li que o cógido é gerado a partir dos dados, sem as tags.
mas como faço para gerar? Existe alguma classe do Tissnet que faça isso?

Desculpe se a pergunta é básica, mas não tem sido fácil depois de anos e anos em VB.NET trabalhar com java. rsrsrsrsrsrs

ghzatomic

Entao … vou passar o codigo como eu fiz ,…

(…)

ObjectFactory OBJ_FACTORY = new ObjectFactory();
        if (mensagemTiss.getCabecalho() == null) {
            mensagemTiss.setCabecalho(OBJ_FACTORY.createCabecalhoTransacao());
        }
        MensagemTISS.Epilogo epilogo = OBJ_FACTORY.createMensagemTISSEpilogo();
        epilogo.setHash("0");
        mensagemTiss.setEpilogo(epilogo);
        MensagemTiss mTiss = new MensagemTiss();
        try {
            mTiss.setDocumentoMensagem(mensagemTiss);
        } catch (Exception e) {
        }

        mensagemTiss.getEpilogo().setHash(mTiss.getHashCalculado());
        JAXBContext jaxbContext;

(…)

e por ai vai … heheheh nao sei c ta certo … mas resolveu meu problema :wink:

A

Velu cara, mais uma vez muito obrigado.
Já estou quase terminando. :smiley:

Só mais uma coisa,
gerei o arquivo XML e utilizei o site http://tools.decisionsoft.com/schemaValidate/ para realizar a validação. Selecionei o arquivo tissV2_01_03.xsd e executei o teste.
Retornou o seguinte erro:

The following errors were found:

TYPE LOC MESSAGE
Well Formed -1, -1 Premature end of file.

Tem noção de qual problema seria?

ghzatomic

a cara … eu desisti de usar issu ai :wink: … eu abro o tiss net ponto a ponto e valido por la … eh mais facil ! :smiley:

A

Marco, bom dia.
Comigo está acontecendo esse mesmo problema. Você conseguiu resolver?

ghzatomic

Entao … eu nao uso o validador do site … pq parece q da sempre o mesmo erro … eu uso o validador do client do tiss la …

akele jar q vem no projeto … to usando assim , tem gente q ja ta usando e ta funfando certim :smiley:

q q coisa da um toke !

era esse erro q vc tinho perguntado ?

vlw

A

foi mal não ter especificado o erro.
Seguindo sua dica, resolvi fazer o o teste com as próprias classes do Tissnet. Estou tentando validar o xml da seguinte forma:

//VALIDAÇÃO ARQUIVO GERADO
			MensagemTiss mTiss = new MensagemTiss(); 
			mTiss.setArquivoXml(txtDestino.getText()); 
			MensagemTISS retorno = mTiss.toObjetoEsquemaTISSV20103();

Aí da o seguinte erro:

Error: Document is invalid: no grammar found.
Error: Document root element "ans:mensagemTISS", must match DOCTYPE root "null".
Error: cvc-elt.1: Cannot find the declaration of element 'ans:mensagemTISS'.

Segue também o conteúdo do XML gerado:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<ans:mensagemTISS xmlns="http://www.ans.gov.br/padroes.tiss.schemas.v20103" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV2_01_03.xsd" xmlns:ans="http://www.ans.gov.br/padroes.tiss.schemas.v20103">
  <ans:cabecalho>
    <ans:identificacaoTransacao>
      <ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>
      <ans:sequencialTransacao>1</ans:sequencialTransacao>
      <ans:dataRegistroTransacao>11/09/2008</ans:dataRegistroTransacao>
      <ans:horaRegistroTransacao>13:47</ans:horaRegistroTransacao>
   </ans:identificacaoTransacao>
   <ans:origem>
     <ans:codigoPrestadorNaOperadora>
       <ans:CNPJ>13808803000119</ans:CNPJ>
     </ans:codigoPrestadorNaOperadora>
   </ans:origem>
   <ans:versaoPadrao>2.01.03</ans:versaoPadrao>
  </ans:cabecalho>
  <ans:prestadorParaOperadora>
     <ans:loteGuias>
         <ans:numeroLote>1</ans:numeroLote>
     </ans:loteGuias>
  </ans:prestadorParaOperadora>
  <ans:epilogo>
     <ans:hash>091b64b9309c2c56fb27ec4db4ae0a8d</ans:hash>
  </ans:epilogo>
</ans:mensagemTISS>

Alguns posts atrás, algumas pessoas tiveram esse problema, mas nãi tem nenum post informando se o prob foi resolvido nem como foi resolvido.
mais uma vez, obrigado pela ajuda.

A

boa noite a todos.

Estou gerando o meu XML com as classes do TISSNET 4.2 e essas classes geram o cabeçalho contendo o seguinte fragmento

xmlns="http://www.ans.gov.br/padroes.tiss.schemas.v20103

quando o correto seria

xmlns="http://www.ans.gov.br/padroes/tiss/schemas

Alguem sabe a causa desse problema?

obs: Cabeçalho gerado:
<ans:mensagemTISS xmlns=“http://www.ans.gov.br/padroes.tiss.schemas.v20103” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV2_01_03.xsd” xmlns:ans=“http://www.ans.gov.br/padroes.tiss.schemas.v20103”>

rbamartins

andrapt:
boa noite a todos.

Estou gerando o meu XML com as classes do TISSNET 4.2 e essas classes geram o cabeçalho contendo o seguinte fragmento

xmlns="http://www.ans.gov.br/padroes.tiss.schemas.v20103

Arley, tudo bom?

Dentro da sua pasta de schemas tem esta outra pasta separando os schemas pela versão??
Caso tenha e os .xsds estejam lá acho que não terá maiores problemas.
Quando você joga o arquivo no TISSNet ele valida o hash corretamente???

Abraços

orogerio

Olá Pessoal

Sou desenvolvedor e estou com uma dúvida em relação aos WebServices.

A minha dúvida é se eu tenho que desenvolver vários webservices, um para cada wsdl (tissLoteGuiasV2_01_03.wsdl, tissSolicitacaoProcedimentoV2_01_03.wsdl, tissSolicitacaoStatusProtocoloV2_01_03.wsdl …)

ou posso simplesmente desenvolver um único webservice - tissTransmiteMensagemV2_01_03.wsdl e receber qualquer tipo de informação via String. Parece que o TissNet só utiliza essa última opção.

Se alguém puder ajudar, ficaria grato.
abraço
Rogério

orogerio

rbamartins:
andrapt:
boa noite a todos.

Estou gerando o meu XML com as classes do TISSNET 4.2 e essas classes geram o cabeçalho contendo o seguinte fragmento

xmlns="http://www.ans.gov.br/padroes.tiss.schemas.v20103

Arley, tudo bom?

Dentro da sua pasta de schemas tem esta outra pasta separando os schemas pela versão??
Caso tenha e os .xsds estejam lá acho que não terá maiores problemas.
Quando você joga o arquivo no TISSNet ele valida o hash corretamente???

Abraços

Olá …
Na minha solução acontece a mesma coisa … utilizo o .jar do TissNet e ele gera o cabeçalho com pontinhos, idêntico ao do Arley.
Desse jeito, qdo coloco o .xml na aplicação do TissNet para testar … dá erro.

vc conseguiu resolver Arley? alguém? :?:

abraços
Rogério

rbamartins

orogerio:
Olá Pessoal

Sou desenvolvedor e estou com uma dúvida em relação aos WebServices.

A minha dúvida é se eu tenho que desenvolver vários webservices, um para cada wsdl (tissLoteGuiasV2_01_03.wsdl, tissSolicitacaoProcedimentoV2_01_03.wsdl, tissSolicitacaoStatusProtocoloV2_01_03.wsdl …)

ou posso simplesmente desenvolver um único webservice - tissTransmiteMensagemV2_01_03.wsdl e receber qualquer tipo de informação via String. Parece que o TissNet só utiliza essa última opção.

Se alguém puder ajudar, ficaria grato.
abraço
Rogério

cara… eu criei um para cada wsdl. Terei até q rever essa solução aqui na empresa.
Qq novidade te aviso.

abraços

A

Caro Rogério, eu não consegui identificar a causa do problema, então optei por solucionar o efeito.
Fiz um replace e substitúí o valor errado pelo certo, pode n ter sido a melhjor opção, mas foi a opção q deu certo no momento.

segur o trecho em que substituí o texto:

PrintWriter out = new PrintWriter(new FileWriter(txtDestino.getText()));
out.print(buffer.toString().replace("padroes.tiss.schemas.v20103", "padroes/tiss/schemas"));
out.close();
orogerio

Olá Arley, obrigado por responder

achei legal a sua idéia, mas como sou iniciante em Java, não estou conseguindo chegar naquele ponto de substituir.
segue meu código. Vc poderia me dizer qual foi a saída que vc deu na última linha do código? e qual o tipo da variável buffer q vc usa

JAXBContext jaxbContext = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas.v20103");
                Marshaller marshaller = jaxbContext.createMarshaller();                
                marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ANSPrefixMapper());
                marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.TRUE);
                marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, schemaPath);
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
                
                marshaller.marshal(mensagemTISSAux, "Oque vai aqui");

Agradeço a atenção
valeu
Rogério

andrapt:
Caro Rogério, eu não consegui identificar a causa do problema, então optei por solucionar o efeito. Fiz um replace e substitúí o valor errado pelo certo, pode n ter sido a melhjor opção, mas foi a opção q deu certo no momento. segur o trecho em que substituí o texto:
PrintWriter out = new PrintWriter(new FileWriter(txtDestino.getText()));
out.print(buffer.toString().replace("padroes.tiss.schemas.v20103", "padroes/tiss/schemas"));
out.close();
I

Alguem poderia fazer a graça e postar um codigo MD5 para criar o HASH… ou dizer o codigo necessário para informar o arquivo que deve ser criptografado?

gracias,

Itamar

C

Bom dia pessoal,

Estou na luta com o TISSNet x Glassfish,

Fiz o deploy do tissnet4.2 para o glassfish, até aqui tudo bem.

O que ocorre é que quando dou um view na wsdl já disponível como um webservice a pagina fica em branco, não carrega o wsdl.

Já copiei a pasta schema para o \bin do appserver e nada.

alguém idéia do q pode ser?

Obrigado,

C

nenhum post :frowning:

só pra constar: Problema resolvido.

rbamartins

Pessoal, estou com esse erro que postei nesse tópico http://www.guj.com.br/posts/list/115080.java .

Alguém sabe me dizer o motivo?

abraços

Marcio_Duran

rbamartins:
Pessoal, estou com esse erro que postei nesse tópico http://www.guj.com.br/posts/list/115080.java .

Alguém sabe me dizer o motivo?

abraços

:arrow: http://www.guj.com.br/posts/list/90/59950.java esse é o link do TISSNET, para download ???

rbamartins

Marcio Duran:
rbamartins:
Pessoal, estou com esse erro que postei nesse tópico http://www.guj.com.br/posts/list/115080.java .

Alguém sabe me dizer o motivo?

abraços

:arrow: http://www.guj.com.br/posts/list/90/59950.java esse é o link do TISSNET, para download ???

Amigo, voce mandou o link do próprio post.
O TISSNet 5.0 já se encontra disponível para download. E o link é http://www.ans.gov.br lá tem um link com o nome TISS

Abraços

Marcio_Duran

rbamartins:

Amigo, voce mandou o link do próprio post.
O TISSNet 5.0 já se encontra disponível para download. E o link é http://www.ans.gov.br lá tem um link com o nome TISS

Abraços

Gostei do assunto já estou executando o Jar do TISSNet e estou acompanhando vocês no assunto, no que puder ajudar vamos lá, aprender sempre …

abraçosssss

rbamartins

OLÁ A TODOS.

GOSTARIA DE SABER SE ALGUÉM ENCONTROU ALGUM ERRO NO CÓDIGO DO TISSNET 5.0 NO QUE SE REFERE A GERAÇÃO DO EPÍLOGO E VALIDAÇÃO DO HASH ??

ABRAÇOS.

R

carlos.et:
Bom dia pessoal,

Estou na luta com o TISSNet x Glassfish,

Fiz o deploy do tissnet4.2 para o glassfish, até aqui tudo bem.

O que ocorre é que quando dou um view na wsdl já disponível como um webservice a pagina fica em branco, não carrega o wsdl.

Já copiei a pasta schema para o \bin do appserver e nada.

alguém idéia do q pode ser?

Obrigado,

Buenas!!!

Cara tu conseguiu resolver este problema, estou com o mesmo se puder me ajudar.

Grato,

Rafael

betox130

Eai Man!!

Prerciso criar um WEbservice pra minha unimed Lins.
Mais não tenho ideia como e por onde começar!

se pudessem me dar uma força!!!

rbamartins

betox130:
Eai Man!!

Prerciso criar um WEbservice pra minha unimed Lins.
Mais não tenho ideia como e por onde começar!

se pudessem me dar uma força!!!

ei man, especifique mais a duvida q vc tem.
o q q vc ja fez?

betox130

olá rbamartins.

Você pode me informar se ja existe alguma unimed com o sistema de webservice implantado??

rbamartins

betox130:
olá rbamartins.

Você pode me informar se ja existe alguma unimed com o sistema de webservice implantado??

Acho que não, pelo menos não tive solicitação de nenhuma ainda para testarmos o teste via webservices.

rbamartins

Iai pessoal, alguma novidade que valha a pena ser divulgada?

viniciuspadua

quero o contrário!
consumir o webservices!

rbamartins

viniciuspadua:
quero o contrário!
consumir o webservices!

Cara não é trivial, mas também não é nenhum bicho de sete cabeças.

Qual o cenário que você tem hoje e de que você precisa?

Abraços

viniciuspadua

eu utilizei o wsimport para gerar as classes de acordo com o webservices.
entretanto não sei como utiliza-lo.

tava testando, segue código abaixo

ObjectFactory factory = new ObjectFactory();

		generated.ObjectFactory objectFactory = new generated.ObjectFactory();

		TissLoteGuiasV20201 loteGuiasV20103 = new TissLoteGuiasV20201();

		TissLoteGuiasV20201Soap soap = loteGuiasV20103.getTissLoteGuiasV20201Soap();

		WsLoteGuias wsLoteGuias = objectFactory.createWsLoteGuias();

		CabecalhoTransacao cabecalhoTransacao = factory.createCabecalhoTransacao();

		cabecalhoTransacao.setVersaoPadrao("2.02.01");
		
		IdentificacaoTransacao identificacao = factory.createCabecalhoTransacaoIdentificacaoTransacao();
		
		identificacao.setTipoTransacao(StTipoTransacao.PROTOCOLO_RECEBIMENTO);
		
		cabecalhoTransacao.setIdentificacaoTransacao(identificacao);

		wsLoteGuias.setCabecalho(cabecalhoTransacao);

		CtLoteGuias loteGuias = factory.createCtLoteGuias();

		loteGuias.setNumeroLote(new BigInteger("123"));

		Guias guias = factory.createCtLoteGuiasGuias();

		GuiaFaturamento guiaFaturamento = factory.createCtGuiasGuiaFaturamento();
		
		guias.setGuiaFaturamento(guiaFaturamento);

		loteGuias.setGuias(guias);

		wsLoteGuias.setLoteGuias(loteGuias);
wsLoteGuias.
		soap.tissLoteGuiasOperation(wsLoteGuias);

tentei várias coisas e nada!
não consigo enviar e nem receber nada!

viniciuspadua

sabe algum prestador que tenhao web services funcionando ?

D

rbamartins:
Iai pessoal, alguma novidade que valha a pena ser divulgada?

Rafael,
Você falou em um tópico anterior:
“Utilizar a própria estrutura do Tiss, usando sua lib e instanciando
um objeto do tipo MensagemTISS você consegue obter todos os campos necessários no XML.”

No caso, você citou sobre a utilização da lib do TissNet para leitura de um arquivo xml pronto.
É possível instanciar o objeto MensagemTISS, setar as informações por exemplo de uma guia SP/SADT,
e a partir daí gerar o arquivo xml para a Operadora?

Desde já, obrigado.

viniciuspadua

dsmdanbr onde encontrou o esse tópico q se referiu ?

D

Na página 1.

viniciuspadua

dsmdanbr, acho que consegui oque tava querendo!

veja abaixo!

public static void main(String[] args) throws JAXBException, FileNotFoundException {

		// Pacote onde encontra-se os schema das classes TISS
		JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas");

		MensagemTISS mensagem = null;

		Unmarshaller unmarshaller = jc.createUnmarshaller();

		// XML do arquivo
		String arquivo = "c:/1466_2f4f7f75c65edae68496f965962337a6.xml";

		File file = new File(arquivo);

		mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file
				.getAbsolutePath()));

		// Descomente caso necessite colocar o hash
		// mensagem.setEpilogo(new MensagemTISS.Epilogo());
		// mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

		// Mapeado
		System.out.println(mensagem.getCabecalho().getDestino().getRegistroANS());

	}
viniciuspadua

HASH:

O modo de calcular o hash é diferente quando se envia pelo arquivo XML de quando pelo webService ?

D
viniciuspadua:
dsmdanbr, acho que consegui oque tava querendo! veja abaixo!
public static void main(String[] args) throws JAXBException, FileNotFoundException {

		// Pacote onde encontra-se os schema das classes TISS
		JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas");

		MensagemTISS mensagem = null;

		Unmarshaller unmarshaller = jc.createUnmarshaller();

		// XML do arquivo
		String arquivo = "c:/1466_2f4f7f75c65edae68496f965962337a6.xml";

		File file = new File(arquivo);

		mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file
				.getAbsolutePath()));

		// Descomente caso necessite colocar o hash
		// mensagem.setEpilogo(new MensagemTISS.Epilogo());
		// mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

		// Mapeado
		System.out.println(mensagem.getCabecalho().getDestino().getRegistroANS());

	}

Velho, muito obrigado, vou testar aqui, qualquer dúvida já posto.

rbamartins
dsmdanbr:
viniciuspadua:
dsmdanbr, acho que consegui oque tava querendo! veja abaixo!
public static void main(String[] args) throws JAXBException, FileNotFoundException {

		// Pacote onde encontra-se os schema das classes TISS
		JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas");

		MensagemTISS mensagem = null;

		Unmarshaller unmarshaller = jc.createUnmarshaller();

		// XML do arquivo
		String arquivo = "c:/1466_2f4f7f75c65edae68496f965962337a6.xml";

		File file = new File(arquivo);

		mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file
				.getAbsolutePath()));

		// Descomente caso necessite colocar o hash
		// mensagem.setEpilogo(new MensagemTISS.Epilogo());
		// mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

		// Mapeado
		System.out.println(mensagem.getCabecalho().getDestino().getRegistroANS());

	}

Velho, muito obrigado, vou testar aqui, qualquer dúvida já posto.

dsmdanbr , desculpe nao ter respondido antes, fiquei sem internet em casa uns dias.

Então, é isso mesmo que o viniciuspadua te passou.
O melhor desse tópico é que todos podem ajudar.

E viniciuspadua , vc conseguiu o que queria com o webservices ?

Vou dar uma verificada no que você falou e ver o que eu fiz.
[Não estou mais na empresa onde trabalhava com o TISS, mas adoro sempre que posso poder fazer parte dele.]

Abraços

viniciuspadua

consegui ja!
so falta testar, mais estou esperando o setor de faturamento me liberar um lote!

qualquer duvida, posto!

abraços

rbamartins

viniciuspadua:
consegui ja!
o setor de faturamento me liberar um lote!

Eita que eu adorava essa vida…rsrs

viniciuspadua

Ja crio os xml e envio para as operadoras e tudo funciona blz.
Estou entrando agora no mundo dos web services.
Com web services estou encontrando problemas na geração do hash. Ele é calculado de modo diferente do arquivo xml ?

rbamartins

viniciuspadua:
Ja crio os xml e envio para as operadoras e tudo funciona blz.
Estou entrando agora no mundo dos web services.
Com web services estou encontrando problemas na geração do hash. Ele é calculado de modo diferente do arquivo xml ?

O calculo do hash é o mesmo.
Q tipo de problemba ta tendo?

viniciuspadua

hash inválido!
e o foda é que nas outra operadoras valida!
Utilizo o mesmo método para gerar o hash!

viniciuspadua

Com Upload via página operadora:
Passos:

  1. Crio o Xml
  2. Entro no site da operado e envio

Todas funcionam sem problema, inclusive o convênio com problema no webservices.

Com WebServices:
Passos que faço:

  1. Gerar o arquivo XML (mesmo método que gera o anterior)
  2. Código Abaixo: Para converter o xml em classes a ser enviada
JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas");

MensagemTISS mensagem = null;

Unmarshaller unmarshaller = jc.createUnmarshaller();

mensagemTISS = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(fileXML.getAbsolutePath()));
  1. Popular as informações, a ser enviada pelo web Services
WsLoteGuias loteGuias = factory.createWsLoteGuias();

loteGuias.setCabecalho(mensagemTISS.getCabecalho());
loteGuias.setLoteGuias(mensagemTISS.getPrestadorParaOperadora().getLoteGuias());

loteGuias.setHash(mensagemTISS.getEpilogo().getHash());
  1. Enviar via webServices
protocoloRecebimento = soap.tissLoteGuiasOperation(loteGuias);

Mais sempre ocorre um erro de hash! informa que o hash informado não é o do arquivo enviado.
Alguma idéia de como corrigir ?

Valeu!

D

Fala Vinícius,

Então, só pude testar agora o exemplo que vc respondeu no Fórum.
Tenho a seguinte dúvida:

- Quando vc carrega um objeto File através do caminho de "arquivo",
esse arquivo está em branco ou já segue com algum conteúdo padrão?

String arquivo = "c:/1466_2f4f7f75c65edae68496f965962337a6.xml";
File file = new File(arquivo);

- Vi a estrutura da classe MensagemTiss na documentação, no caso, como gostaria de adicionar a partir dela
Guias de SP/SADT, teria que setar "prestadorParaOperadora", dentro do objeto MensagemTISS.PrestadorParaOperadora
teria que setar "loteGuias", dentro do objeto CtLoteGuias teria que setar "guias", ..., até setar as guias campo por campo.
Alguém teria algum exemplo de um código setando várias guias?
Além de setar o Hash, o que mais eu devo ficar atento?

Obrigado!!!

viniciuspadua:
dsmdanbr, acho que consegui oque tava querendo! veja abaixo!
public static void main(String[] args) throws JAXBException, FileNotFoundException {

		// Pacote onde encontra-se os schema das classes TISS
		JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas");

		MensagemTISS mensagem = null;

		Unmarshaller unmarshaller = jc.createUnmarshaller();

		// XML do arquivo
		String arquivo = "c:/1466_2f4f7f75c65edae68496f965962337a6.xml";

		File file = new File(arquivo);

		mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file
				.getAbsolutePath()));

		// Descomente caso necessite colocar o hash
		// mensagem.setEpilogo(new MensagemTISS.Epilogo());
		// mensagem.getEpilogo().setHash(mensagemTiss.calcularHash());

		// Mapeado
		System.out.println(mensagem.getCabecalho().getDestino().getRegistroANS());

	}
viniciuspadua

ja passo o arquivo xml com todos os dados.
e o JAXB ja faz os get set na classe!

se conseguir enviar para algum web services e não der problema de hash me avise!

D

viniciuspadua:
ja passo o arquivo xml com todos os dados.
e o JAXB ja faz os get set na classe!

se conseguir enviar para algum web services e não der problema de hash me avise!

Vinicius e pessoal do fórum,

Consegui gerar o arquivo xml, e calcular o hash, desculpa ai pelas perguntas simples,
é que não deu tempo estudar bem o material passado pela ANS, tive que tentar fazer
natoralmente… hehehehehe. Mais a ajuda do fórum foi essencial.

Estou com dúvida agora como colocar o prefixo da ans no arquivo xml.

Olha como ficou o arquivo xml:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> ENVIO_LOTE_GUIAS 1 V2_02_01 124578 995739 1642028023161906 Arthur Alves Oliveira Unimed 40610681000886 40616682000186 Teste Nome Empresa Av. Juracy Magalhães 1200 293330 Vitória da Conquista BA 45.100-000 1770545 Juscilene Silva Leao CRM 12834 E CID-10 R43 Outros a77b013c5a940786e76be63b2bc8c1bc

Está sem o prefixo da ANS!!!

Desde já obrigado.

viniciuspadua

colocar o prefixo vai depender da sua codificação: para mim fiz assim:

import org.dom4j.Element;
import org.dom4j.Namespace;

...

private final Namespace ansNameSpace = new Namespace("ans","http://www.ans.gov.br/padroes/tiss/schemas");

...

Element epilogo = pai.addElement(new QName("epilogo", namespace));
Element hash = epilogo.addElement(new QName("hash", namespace));

com isso ao gerar o xml ja vai com o namespace!

D

viniciuspadua:
colocar o prefixo vai depender da sua codificação: para mim fiz assim:

import org.dom4j.Element;
import org.dom4j.Namespace;

...

private final Namespace ansNameSpace = new Namespace("ans","http://www.ans.gov.br/padroes/tiss/schemas");

...

Element epilogo = pai.addElement(new QName("epilogo", namespace));
Element hash = epilogo.addElement(new QName("hash", namespace));

com isso ao gerar o xml ja vai com o namespace!

Então, no caso isso seria caso tivesse gerado o xml item por item não é isso?
Porque eu instanciei um objeto MensagemTISS setei os campos e salvei ele em XML
através da JAXB.

Olha como ficou o código de teste:

ObjectFactory objFactory = new ObjectFactory();

MensagemTISS mensagem = new MensagemTISS();

mensagem.setCabecalho(new CabecalhoTransacao());

mensagem.getCabecalho().setVersaoPadrao(“2.02.01”);

mensagem.getCabecalho().setIdentificacaoTransacao(new CabecalhoTransacao.IdentificacaoTransacao());

mensagem.getCabecalho().getIdentificacaoTransacao().setTipoTransacao(StTipoTransacao.ENVIO_LOTE_GUIAS);

mensagem.getCabecalho().getIdentificacaoTransacao().setSequencialTransacao(new BigInteger(“1”));

mensagem.setPrestadorParaOperadora(new MensagemTISS.PrestadorParaOperadora());

mensagem.getPrestadorParaOperadora().setLoteGuias(ctLoteGuias);
//mensagem.setCabecalho(new CabecalhoTransacao());
    mensagem.setEpilogo(objFactory.createMensagemTISSEpilogo());
    mensagem.getEpilogo().setHash("0");

    MensagemTiss mTiss = new MensagemTiss();
    try {
        mTiss.setDocumentoMensagem(mensagem);
    } catch (Exception e) {
        e.printStackTrace();
    }
    mensagem.getEpilogo().setHash(mTiss.getHashCalculado());

    try {
        JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas.v20201");
        Marshaller m = jc.createMarshaller();
        m.setProperty(m.JAXB_ENCODING, "ISO-8859-1");
        m.setProperty(m.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        m.marshal(mensagem, new FileOutputStream("d:/a.xml"));

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File file = new File("d:/a.xml");
        mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file.getAbsolutePath()));

        String mensagemTxt = security.log.util.LogUtil.readFile(file).replace("http://www.ans.gov.br/padroes/tiss/schemas/v20201", "http://www.ans.gov.br/padroes/tiss/schemas");
        file.createNewFile();
        FileWriter output = new FileWriter(file);
        BufferedWriter bufOutput = new BufferedWriter(output);
        bufOutput.write(mensagemTxt);
        bufOutput.close();

        MensagemTiss mensagemTiss = new MensagemTiss(file.getAbsolutePath());
        System.out.println(mensagemTiss.getHashCalculado());

    } catch (JAXBException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

Entendeu? Não teria como eu setar o prefixo através da JAXB?

Obrigado.

D

dsmdanbr:
viniciuspadua:
colocar o prefixo vai depender da sua codificação: para mim fiz assim:

import org.dom4j.Element;
import org.dom4j.Namespace;

...

private final Namespace ansNameSpace = new Namespace("ans","http://www.ans.gov.br/padroes/tiss/schemas");

...

Element epilogo = pai.addElement(new QName("epilogo", namespace));
Element hash = epilogo.addElement(new QName("hash", namespace));

com isso ao gerar o xml ja vai com o namespace!

Então, no caso isso seria caso tivesse gerado o xml item por item não é isso?
Porque eu instanciei um objeto MensagemTISS setei os campos e salvei ele em XML
através da JAXB.

Olha como ficou o código de teste:

ObjectFactory objFactory = new ObjectFactory();

MensagemTISS mensagem = new MensagemTISS();

mensagem.setCabecalho(new CabecalhoTransacao());

mensagem.getCabecalho().setVersaoPadrao(“2.02.01”);

mensagem.getCabecalho().setIdentificacaoTransacao(new CabecalhoTransacao.IdentificacaoTransacao());

mensagem.getCabecalho().getIdentificacaoTransacao().setTipoTransacao(StTipoTransacao.ENVIO_LOTE_GUIAS);

mensagem.getCabecalho().getIdentificacaoTransacao().setSequencialTransacao(new BigInteger(“1”));

mensagem.setPrestadorParaOperadora(new MensagemTISS.PrestadorParaOperadora());

mensagem.getPrestadorParaOperadora().setLoteGuias(ctLoteGuias);
//mensagem.setCabecalho(new CabecalhoTransacao());
    mensagem.setEpilogo(objFactory.createMensagemTISSEpilogo());
    mensagem.getEpilogo().setHash("0");

    MensagemTiss mTiss = new MensagemTiss();
    try {
        mTiss.setDocumentoMensagem(mensagem);
    } catch (Exception e) {
        e.printStackTrace();
    }
    mensagem.getEpilogo().setHash(mTiss.getHashCalculado());

    try {
        JAXBContext jc = JAXBContext.newInstance("br.gov.ans.padroes.tiss.schemas.v20201");
        Marshaller m = jc.createMarshaller();
        m.setProperty(m.JAXB_ENCODING, "ISO-8859-1");
        m.setProperty(m.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        m.marshal(mensagem, new FileOutputStream("d:/a.xml"));

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File file = new File("d:/a.xml");
        mensagem = (MensagemTISS) unmarshaller.unmarshal(new FileInputStream(file.getAbsolutePath()));

        String mensagemTxt = security.log.util.LogUtil.readFile(file).replace("http://www.ans.gov.br/padroes/tiss/schemas/v20201", "http://www.ans.gov.br/padroes/tiss/schemas");
        file.createNewFile();
        FileWriter output = new FileWriter(file);
        BufferedWriter bufOutput = new BufferedWriter(output);
        bufOutput.write(mensagemTxt);
        bufOutput.close();

        MensagemTiss mensagemTiss = new MensagemTiss(file.getAbsolutePath());
        System.out.println(mensagemTiss.getHashCalculado());

    } catch (JAXBException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

Entendeu? Não teria como eu setar o prefixo através da JAXB?

Obrigado.

Consegui colocar o prefixo, tem até um exemplo na página 6.

import com.sun.xml.bind.marshaller.NamespacePrefixMapper;

public class ANSPrefixMapper extends NamespacePrefixMapper {

    public static final String PREFIXO_ANS = "ans";

    @Override
    public String getPreferredPrefix(String arg0, String arg1, boolean arg2) {
        return PREFIXO_ANS;
    }
}
Marshaller m = jc.createMarshaller();
            m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ANSPrefixMapper());

Referência: http://www.j2ee.me/webservices/docs/2.0/jaxb/vendorProperties.html

Obrigado.

D

Alguém sabe como criar um XMLGregorianCalendar que gere a data no formato 22/10/2009?

Estou tendo o seguinte problema:

mensagem.getCabecalho().getIdentificacaoTransacao().setDataRegistroTransacao(DatatypeFactory.newInstance().newXMLGregorianCalendarDate(2009, 11, 22, DatatypeConstants.FIELD_UNDEFINED));

Error: cvc-pattern-valid: Value ‘2009-10-22’ is not facet-valid with respect to pattern ‘[0-9]{2}/[0-9]{2}/[0-9]{4}’ for type ‘st_data’.

Porque a data está saindo no XML assim ‘2009-10-22’.

Parece que não tem como mudar esse padrão no XMLGregorianCalendar.
A saída padrão seria: 1976-12-22T00:00:00.000+01:00
Só tem como ocultar alguns campos.
http://blog.jonasbandi.net/2009/05/jaxb-quicktip-xmlgregoriancalendar.html

V

Bom dia, estou com problemas quando vou criar o objeto atraves do xml

Simplesmente demora muito e ocorre um erro de transmissão… fui debugando… e é exatamente nesta linha

jaxbContext = JAXBContext.newInstance(“br.gov.ans.padroes.tiss.schemas.v20102”);

O que pode ser?

Desde já agradeço

V

esse é todo o código

public br.gov.ans.padroes.tiss.schemas.v20102.MensagemTISS toObjetoEsquemaTISSV20102() {

if ( this.getDocumentoMensagem() == null )

return null;

JAXBContext jaxbContext;

br.gov.ans.padroes.tiss.schemas.v20102.MensagemTISS w_resp = null;

try {

 jaxbContext                 = JAXBContext.newInstance(“br.gov.ans.padroes.tiss.schemas.v20102”);

Unmarshaller unmarshaller   = jaxbContext.createUnmarshaller();

w_resp = (br.gov.ans.padroes.tiss.schemas.v20102.MensagemTISS) unmarshaller.unmarshal( this.documentoMensagem );

} catch (JAXBException ex) {

ex.printStackTrace();

return null;

}

return w_resp;

}
viniciuspadua

mostra a execption que ocorre!

V

Baixei a nova versão… 5.0

estou fazendo as mudanças necessarias… assim que fizer um teste se repetir o erro… comunico a voces

muito obrigado

V

Resolvido este problema baixando a nova versao…

agora estou com outro… preciso usar o endorsed… pra fazer um teste via socket… mas
to encontrando este erro

[color=red]
Exception in thread “TissNetServer” java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/D:/BACKUP_ARQUIVOS/TISS/TissNet5.0/lib/webservices-rt.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
[/color]

se puderem ajudar, agradeço!!

V

baixei uma nova API e nada…

baixei a jaxb 2.1… e nao funfa… o que será que é?

V

Já resolvi este problema editando a maquina virtual, la coloquei o endereço da pasta “endorce” com a nova api…

V

.

V

,

V

estava utilizando o netbeans 6.1 e ele agora simplesmente fica na tela de inicialização e fecha sozinho…

ja desinstalei e instalei e nada… ja fiz isso com o jdk tbem e nada…

instalei o netbeans 6.8… o programa abriu normalmente mas o TISS 5.0 não abre nele.

tem como o TISS 5.0 ABRIR NO NETBEANS 6.8?

Obrigado…

viniciuspadua

relate qual o problema novamente

V

ae vinicius… seria melhor voce me add no msn… por la eu te explico dpois volto aqui e relato o problema mais precisamente ja com a resolução dele…

blz?

V

deixei uma mensagem privada pra voce… com meu endereço de msn… add por favor

V

.

V

NOVO ERRO!! AO TENTAR CONECTAR O CLIENTE NO WEBSERVICE TISS 5.0

[color=red]DEMONSTRATIVO DE PAGAMENTO: validando mensagem

Exception in thread main java.lang.NoSuchFieldError: POLICY

at com.sun.xml.ws.policy.jaxws.PolicyWSDLParserExtension.definitionsElements(PolicyWSDLParserExtension.java:489)

at com.sun.xml.ws.wsdl.parser.DelegatingParserExtension.definitionsElements(DelegatingParserExtension.java:91)

at com.sun.xml.ws.wsdl.parser.FoolProofParserExtension.definitionsElements(FoolProofParserExtension.java:96)

at com.sun.xml.ws.wsdl.parser.WSDLParserExtensionFacade.definitionsElements(WSDLParserExtensionFacade.java:136)

at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(RuntimeWSDLParser.java:357)

at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:168)

at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:131)

at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:267)

at com.sun.xml.ws.client.WSServiceDelegate.(WSServiceDelegate.java:230)

at com.sun.xml.ws.client.WSServiceDelegate.(WSServiceDelegate.java:178)

at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:106)

at javax.xml.ws.Service.(Service.java:57)

at br.gov.ans.tiss.ws.clientes.tissSolicitacaoDemonstrativoRetornoV2_02_01.(tissSolicitacaoDemonstrativoRetornoV2_02_01.java:33)

at br.gov.go.ipasgo.saat.tiss.clientews.ClienteTissNet.DemonstrativoRetorno(ClienteTissNet.java:52)

at br.gov.go.ipasgo.saat.tiss.clientews.Main.main(Main.java:29)

Java Result: 1[/color]

debug:

CONSTRUÍDO COM SUCESSO (tempo total: 27 segundos)
V

.

S

Olá Pessoal,

Estou começando a peregrinação TISS junto com vocês e gostaria de tirar algumas dúvidas iniciais.

Gostaria que alguém fizesse aqui os passos que devemos pesquisar/implementar para configurar a seguinte situação:

No sistema que estou implementando, tenho os objetos das guias (consulta, SADT e internação) onde preciso gerar os XMLs dessas guias e salvar em algum lugar do disco. A princípio, esses arquivos serão enviados pelo próprio sistema da operadora, e que ainda não me preocuparei em que o sistema envie isso de forma automática. Já vi nas mensagens anteriores que utilizando o .jar do tissNet, consigo instanciar uma mensagemTISS e setar os valores das tags direto nesse objeto, o que vai facilitar bastante as coisas.

Então, quais configurações, implementações que preciso fazer para que eu tenha minhas guias em formato XML?

Tipo…
passo 1 - gerar o jar do tissNet e setar no classpath do teu projeto;
passo 2 - …

Sei que é uma coisa simples, mas eu estou completamente perdido por onde começar isso. Desde já agradeço a ajuda de todos.

saoj

Se quiser um tutorial fácil de WebService com SOAP dá uma olhada aqui: http://www.seducaotecnologica.com.br/tutorial-soa-passo-a-passo-1

rbamartins

Alguma OPERADORA disponível para testar o fluxo de troca de xml tiss via webservice?

Abraços

FightSurf_George_Mai

Amigos

Comecei esta semana a ler esta thread. Acompanhei direitinho e dei um bom seguimento ao meu projeto. Aqui somos uma operadora e a nossa necessidade é poder entrar no portal da empresa, nossa cliente, e enviar um XML padrão tiss com todos os procedimentos realizados pelos funcionários dela.

Baixei os xsd’s, os transformei em classes java. Baixei também o tissnet atual e coloquei o tissnet.jar no meu build path.

Tenho acesso a todas as classes tranquilamente. Estou instanciando os objetos e preenchendo as informações em todas as suas propriedades, conforme vejo aqui os exemplos. Minha intenção é inserir todas as informações nestes objetos e no final gerar um xml através do objeto MensagemTiss.

A dúvida é: Em qual classe poderei informar a quantidade de procedimentos realizados pelo beneficiário (funcionário) e o valor a ser cobrado?

Segue meu código de testes.

//Cabeçalho da guia
		CtCabecalhoGuia ctCabecalhoGuia = new CtCabecalhoGuia();
		XMLGregorianCalendar xmlGregorianCalendarCabecalhoGuia = DatatypeFactory.newInstance().newXMLGregorianCalendar("18/08/2010");  
		ctCabecalhoGuia.setDataEmissaoGuia(xmlGregorianCalendarCabecalhoGuia);
		
		//Beneficiario
		CtBeneficiario beneficiario = new CtBeneficiario();
		beneficiario.setNumeroCarteira("1");
		beneficiario.setNomeBeneficiario("George");
		beneficiario.setNomePlano("ENFERMARIA");
		
		//Pessoa / empresa que vai receber o valor cobrado na guia (pode ser o proprio hospital, 
		//uma clinica terceirizada ou o proprio medico que fez o atendimento).
		CtIdentificacaoPrestadorExecutante ctIdentificacaoPrestadorExecutante = new CtIdentificacaoPrestadorExecutante();
		ctIdentificacaoPrestadorExecutante.setCNPJ("09237009000195");
		ctIdentificacaoPrestadorExecutante.setCodigoPrestadorNaOperadora("12234");
		
		CtConselhoProfissional ctConselhoProfissional = new CtConselhoProfissional();
		ctConselhoProfissional.setNumeroConselho("123456");
		
		ctConselhoProfissional.setSiglaConselho( StConselhoProfissional.CRM);
		ctConselhoProfissional.setUfConselho( StUF.PB ); 
		
		CtIdentificacaoProfissional ctIdentificacaoProfissional = new CtIdentificacaoProfissional();
		ctIdentificacaoProfissional.setNomeProfissional("NOME DO MÉDICO");
		ctIdentificacaoProfissional.setConselhoProfissional(ctConselhoProfissional);
		
		//DADOS DO PROCEDIMENTO
		Procedimento procedimento = new Procedimento();
		procedimento.setCodigoTabela("2");
		procedimento.setCodigoProcedimento("123456");
		
		DadosAtendimento dadosAtendimento = new DadosAtendimento();
		
		XMLGregorianCalendar xmlGregorianCalendarDadosAtendimento = DatatypeFactory.newInstance().newXMLGregorianCalendar("18/08/2010");
		dadosAtendimento.setDataAtendimento(xmlGregorianCalendarDadosAtendimento);
		dadosAtendimento.setProcedimento(procedimento);
		dadosAtendimento.setTipoConsulta("1");
		dadosAtendimento.setTipoSaida("1");
FightSurf_George_Mai

Bom dia, amigos. Alguém poderia colar uma classe java completa, populando o objeto MensagemTiss? Seria de grande ajuda.

rbamartins

Muito legal ver o quanto esse post rendeu e o tamanho da comunidade java sempre unida.

bbmany

Olá pessoal

Obtenho o seguinte erro quando tento criar um org.w3c.dom.Document:

[Fatal Error] XML document structures must start and end within the same entity

Código onde a exceção SAXException é gerada:

<a class="mention" href="/u/override">@Override</a>

public Document carregaString(String pXmlString) throws IOException, ParserConfigurationException, SAXException, URISyntaxException {

this.ultimoDocumento    = null;

DocumentBuilder w_db    = this.getFabricaDom().newDocumentBuilder();

w_db.setErrorHandler( this );

ByteArrayInputStream w_ba = new ByteArrayInputStream( pXmlString.getBytes(Constantes.TISS_CHARSET) );

this.ultimoDocumento    = w_db.parse( w_ba );

this.ultimoDocumento.normalizeDocument();

return this.getUltimoDocumento();

}

Observação: Esse código é do Tiss. Ele funciona normalmente quando usado pela aplicação TissNet (desktop), mas quando gero um jar e tento importo ao meu projeto, o erro acontece.

Estou utilizando o JBoss 5.1.0, acredito ser um conflito de bibliotecas só não tenho nem idéia de qual tenho que adicionar e ou remover. Já tentei adicionar as libs que o Tiss utiliza mas o erro persiste.

Obrigada.

L

Alguem conseguiu implementar com sucesso o Webservice para Solicitacao de Status do Protocolo?

rbamartins

Lucas, explica seu problema p/ q eu possa tentar ajudar.

Abraços

L

Lucas, explica seu problema p/ q eu possa tentar ajudar.

Abraços

Uma alma santa!! Obrigado pela atenção.

Seguinte, consegui avançar uma boa parte da implementação. Só que estou apanhando feio na parte da Certificação Digital. Está meio confuso. Eu ja gerei as chaves privadas (jks) e pública(x509) através do Keytools, etc, mas de tanto ler tutorial por aí ficou meio confuso.

No caso eu sou o fornecedor do serviço. Eu tenho que pegar as chaves dos prestadores? Estou tentando implementar um cliente para teste e só enrosquei nessa parte.

Eu até li seu tutorial no seu site, acho que falta pouca coisa.

Se puder dar uma luz…

Obrigado!

L

Lucas, explica seu problema p/ q eu possa tentar ajudar.

Abraços

Uma alma santa!! Obrigado pela atenção.

Seguinte, consegui avançar uma boa parte da implementação. Só que estou apanhando feio na parte da Certificação Digital. Está meio confuso. Eu ja gerei as chaves privadas (jks) e pública(x509) através do Keytools, etc, mas de tanto ler tutorial por aí ficou meio confuso.

No caso eu sou o fornecedor do serviço. Eu tenho que pegar as chaves dos prestadores? Estou tentando implementar um cliente para teste e só enrosquei nessa parte.

Eu até li seu tutorial no seu site, acho que falta pouca coisa.

Se puder dar uma luz…

Obrigado!

J

Lucas, beleza?

Uma vez trabalhei com um cara que implementou certificação digital em java card. Cara se deu bem e abriu uma empresa. Rs

Segue o blog dele, tenta mandar um e-mail pra ele, que ele te ajuda cara

Abraço

L

Depois de muita briga consegue matar a parte de certificado digital, agora falta implementar os digestores e manipular o DOM.

Valeu!

R

Eae pessoal, tudo bem?!

seguinte, estou com um problema aqui…
espero que alguém possa me ajudar…

é um problema de comunicação com o webservice…
eu estou conseguindo transmitir os dados via webservice, mas no momento de receber a resposta, ela não esta vindo completa.
é como se viesse somente metade do arquivo, fica faltando um pedaço.

dessa forma não consigo fazer o marshal pro objeto e dar continuidade no fluxo…

será que ta faltando alguma configuração???

valew!!!

guinobut

Boar tarde,
Estou começando com o TISS agora…
Estou com problema e quem puder me ajudar, agradeço muito.
Já fiz meu WebService, meu problema é com o TISSNet (client)… eu executo ele e quando eu coloco um xml para ser enviado, da o seguinte erro:

TISS Schema: file:./schemas/tissV2_02_01.xsd
++ Versao atual produziu erro: schema_reference.4: Falha ao ler o documento do esquema ‘file:./schemas/tissV2_02_01.xsd’ porque

  1. nÒo foi possÝvel encontrar o documento;
  2. nÒo foi possÝvel ler o documento;
  3. o elemento-raiz do documentonÒo Ú xsd:schema.

o arquivo no qual estou “colocando” esta validado certinho pelo Altova.

Espero ajuda, vlw

R

Olá pessoal,

Eu postei isso lá no forum de Java Avançado, mas ainda sem resposta, estou postando aqui, quem sabe tem alguem que acompanha este tópico que sabe resolver, ou que já passou por isso.

Estou tentando extrair classes java de um modelo XSD, o modelo da ANS para o TISS 3.0.

Normalmente eu faria isso com um comando simples do JAXB, o xjc, mas esta dando erro, tentei fazer varias vezes de formas diferentes, até fiz um download do site da ANS, mas nada.

Eu tentei assim, vejam os erros:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc -p br.gov.ans.padroes.tiss.schemas tissV3_00_01.x  
sd  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
Failed to parse a schema.

ou assim:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc tissV3_00_01.xsd  br.gov.ans.padroes.tiss.schemas  
  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] schema_reference.4: Failed to read schema document 'file:/D:/Documents/R  
aimundo/TISS_3.0/padrao_tiss_comunicacao030001/br.gov.ans.padroes.tiss.sch  
emas', because 1) could not find the document; 2) the document could not be read  
; 3) the root element of the document is not <xsd:schema>.  
unknown location  
  
Failed to parse a schema.

ou até:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc -d D:\ -p br.gov.ans.padroes.tiss.schema tissV3_0  
0_01.xsd  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
Failed to parse a schema.  
  
D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>

alguma ideia pra resolver?

valew pela ajuda.

Jr_webmaster_100_jav

So de operadora e estou começando a implementar o webservice do tiss 3.00.01 e estou meio sem saber pra onde ir. alguma luz de como gerar as classes ?

rbamartins

Tem tempo que não pego nada do TISS para implementar, mas vou dar uma olhada pra ver se ainda consigo ajudar.

A

Estou com o mesmo erro!!
Conseguiu resolver??

c-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type definition' component.

rbcneto:
Olá pessoal,

Eu postei isso lá no forum de Java Avançado, mas ainda sem resposta, estou postando aqui, quem sabe tem alguem que acompanha este tópico que sabe resolver, ou que já passou por isso.

Estou tentando extrair classes java de um modelo XSD, o modelo da ANS para o TISS 3.0.

Normalmente eu faria isso com um comando simples do JAXB, o xjc, mas esta dando erro, tentei fazer varias vezes de formas diferentes, até fiz um download do site da ANS, mas nada.

Eu tentei assim, vejam os erros:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc -p br.gov.ans.padroes.tiss.schemas tissV3_00_01.x  
sd  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
Failed to parse a schema.

ou assim:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc tissV3_00_01.xsd  br.gov.ans.padroes.tiss.schemas  
  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] schema_reference.4: Failed to read schema document 'file:/D:/Documents/R  
aimundo/TISS_3.0/padrao_tiss_comunicacao030001/br.gov.ans.padroes.tiss.sch  
emas', because 1) could not find the document; 2) the document could not be read  
; 3) the root element of the document is not <xsd:schema>.  
unknown location  
  
Failed to parse a schema.

ou até:

D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>C:\"Program F  
iles"\Java\jdk1.7.0_09\bin\xjc -d D:\ -p br.gov.ans.padroes.tiss.schema tissV3_0  
0_01.xsd  
parsing a schema...  
[WARNING] schema_reference.4: Failed to read schema document 'xmldsig-core-schem  
a.xsd', because 1) could not find the document; 2) the document could not be rea  
d; 3) the root element of the document is not <xsd:schema>.  
  line 10 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
[ERROR] src-resolve: Cannot resolve the name 'ds:SignatureType' to a(n) 'type de  
finition' component.  
  line 13 of file:/D:/Documents/Raimundo/TISS_3.0/padrao_tiss_comunicacao0  
30001/tissAssinaturaDigital_v1.01.xsd  
  
Failed to parse a schema.  
  
D:\Documents\Raimundo\TISS_3.0\padrao_tiss_comunicacao030001>

alguma ideia pra resolver?

valew pela ajuda.

C

Pessoal, boa tarde.
Resolvi usar esse post pois ja existe um grupo de pessoas relacionadas com o TISS

Estou desenvolvendo uma solução para atender o padrão TISS 3.02.00.
Hoje já validei meu XML de Monitoramento informando Consultas e SADS e agora estou trabalhando no caso de uso Internação. Só que estou com uma duvida, quando não tenho procedimentos para informar nessa guia, como vocês montaram o xml sem procedimento?

pensei em informar assim:

<?xml version="1.0" encoding="ISO-8859-1"?> <mensagemEnvioANS xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissMonitoramentoV3_02_00.xsd" xmlns="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <cabecalho> <identificacaoTransacao> <tipoTransacao>MONITORAMENTO</tipoTransacao> <numeroLote>0001</numeroLote> <competenciaLote>201409</competenciaLote> <dataRegistroTransacao>2015-02-09</dataRegistroTransacao> <horaRegistroTransacao>15:16:27</horaRegistroTransacao> </identificacaoTransacao> <registroANS>00000</registroANS> <versaoPadrao>3.02.00</versaoPadrao> </cabecalho> <Mensagem> <operadoraParaANS> <guiaMonitoramento> <tipoRegistro>1</tipoRegistro> <indicadorEnvioPapel>S</indicadorEnvioPapel> <dadosContratadoExecutante> <CNES>00000</CNES> <identificadorExecutante>1</identificadorExecutante> <codigoCNPJ_CPF>0000000</codigoCNPJ_CPF> <municipioExecutante>5208707</municipioExecutante> </dadosContratadoExecutante> <dadosBeneficiario> <identBeneficiario> <dadosSemCartao> <sexo>3</sexo> <dataNascimento>1972-02-17</dataNascimento> <municipioResidencia>5201405</municipioResidencia> </dadosSemCartao> </identBeneficiario> <numeroRegistroPlano>0000000</numeroRegistroPlano> </dadosBeneficiario> <tipoEventoAtencao>3</tipoEventoAtencao> <origemEventoAtencao>1</origemEventoAtencao> <numeroGuia_prestador>449983</numeroGuia_prestador> <numeroGuia_operadora>00000</numeroGuia_operadora> <identificacaoReembolso>00000000000000000000</identificacaoReembolso> <dataSolicitacao>2014-08-28</dataSolicitacao> <dataAutorizacao>2014-08-28</dataAutorizacao> <dataRealizacao>2014-10-20</dataRealizacao> <dataInicialFaturamento>2014-10-29</dataInicialFaturamento> <dataFimPeriodo>2014-10-15</dataFimPeriodo> <dataProtocoloCobranca>2014-10-15</dataProtocoloCobranca> <dataPagamento>2014-11-20</dataPagamento> <dataProcessamentoGuia>2014-10-20</dataProcessamentoGuia> <indicacaoRecemNato>N</indicacaoRecemNato> <indicacaoAcidente>9</indicacaoAcidente> <caraterAtendimento>U</caraterAtendimento> <tipoInternacao>2</tipoInternacao> <regimeInternacao>1</regimeInternacao> <tipoFaturamento>2</tipoFaturamento> <motivoSaida>12</motivoSaida> <valoresGuia> <valorTotalInformado>321.48</valorTotalInformado> <valorProcessado>321.48</valorProcessado> <valorTotalPagoProcedimentos>0.00</valorTotalPagoProcedimentos> <valorTotalDiarias>0.00</valorTotalDiarias> <valorTotalTaxas>0.00</valorTotalTaxas> <valorTotalMateriais>321.48</valorTotalMateriais> <valorTotalOPME>0.00</valorTotalOPME> <valorTotalMedicamentos>0.00</valorTotalMedicamentos> <valorGlosaGuia>0.0000</valorGlosaGuia> <valorPagoGuia>321.48</valorPagoGuia> <valorPagoFornecedores>0.00</valorPagoFornecedores> <valorTotalTabelaPropria>0.00</valorTotalTabelaPropria> </valoresGuia> <procedimentos> <detalhePacote> <quantidade>0</quantidade> </detalhePacote> </procedimentos> </guiaMonitoramento> </operadoraParaANS> </Mensagem> <epilogo> <hash>47c1fb58cf1ba01fdb50c8248b219783</hash> </epilogo> </mensagemEnvioANS>

Obs:
quando retiro ela tenho a seguinte msg na hora de validar: ERROR: Element ‘{http://www.ans.gov.br/padroes/tiss/schemas}procedimentos’: Missing child element(s). Expected is ( {http://www.ans.gov.br/padroes/tiss/schemas}identProcedimento ).

. . . . <valoresGuia> <valorTotalInformado>321.48</valorTotalInformado> <valorProcessado>321.48</valorProcessado> <valorTotalPagoProcedimentos>0.00</valorTotalPagoProcedimentos> <valorTotalDiarias>0.00</valorTotalDiarias> <valorTotalTaxas>0.00</valorTotalTaxas> <valorTotalMateriais>321.48</valorTotalMateriais> <valorTotalOPME>0.00</valorTotalOPME> <valorTotalMedicamentos>0.00</valorTotalMedicamentos> <valorGlosaGuia>0.0000</valorGlosaGuia> <valorPagoGuia>321.48</valorPagoGuia> <valorPagoFornecedores>0.00</valorPagoFornecedores> <valorTotalTabelaPropria>0.00</valorTotalTabelaPropria> </valoresGuia> <procedimentos> </procedimentos> </guiaMonitoramento> </operadoraParaANS> . . .

Agora quando tiro tbm a tag tenho a seguinte mensagem:

cvc-complex-type.2.4.b: The content of element ‘guiaMonitoramento’ is not complete. One of ‘{“http://www.ans.gov.br/padroes/tiss/schemas”:declaracaoNascido, “http://www.ans.gov.br/padroes/tiss/schemas”:declaracaoObito, “http://www.ans.gov.br/padroes/tiss/schemas”:procedimentos}’ is expected.

C

Pessoal consegui resolver meu problema, a tag procedimentos é obrigatório mesmo, vou ter que informa-la de qualquer forma

cadevinicius:
Pessoal, boa tarde.
Resolvi usar esse post pois ja existe um grupo de pessoas relacionadas com o TISS

Estou desenvolvendo uma solução para atender o padrão TISS 3.02.00.
Hoje já validei meu XML de Monitoramento informando Consultas e SADS e agora estou trabalhando no caso de uso Internação. Só que estou com uma duvida, quando não tenho procedimentos para informar nessa guia, como vocês montaram o xml sem procedimento?

pensei em informar assim:

<?xml version="1.0" encoding="ISO-8859-1"?> <mensagemEnvioANS xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissMonitoramentoV3_02_00.xsd" xmlns="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <cabecalho> <identificacaoTransacao> <tipoTransacao>MONITORAMENTO</tipoTransacao> <numeroLote>0001</numeroLote> <competenciaLote>201409</competenciaLote> <dataRegistroTransacao>2015-02-09</dataRegistroTransacao> <horaRegistroTransacao>15:16:27</horaRegistroTransacao> </identificacaoTransacao> <registroANS>00000</registroANS> <versaoPadrao>3.02.00</versaoPadrao> </cabecalho> <Mensagem> <operadoraParaANS> <guiaMonitoramento> <tipoRegistro>1</tipoRegistro> <indicadorEnvioPapel>S</indicadorEnvioPapel> <dadosContratadoExecutante> <CNES>00000</CNES> <identificadorExecutante>1</identificadorExecutante> <codigoCNPJ_CPF>0000000</codigoCNPJ_CPF> <municipioExecutante>5208707</municipioExecutante> </dadosContratadoExecutante> <dadosBeneficiario> <identBeneficiario> <dadosSemCartao> <sexo>3</sexo> <dataNascimento>1972-02-17</dataNascimento> <municipioResidencia>5201405</municipioResidencia> </dadosSemCartao> </identBeneficiario> <numeroRegistroPlano>0000000</numeroRegistroPlano> </dadosBeneficiario> <tipoEventoAtencao>3</tipoEventoAtencao> <origemEventoAtencao>1</origemEventoAtencao> <numeroGuia_prestador>449983</numeroGuia_prestador> <numeroGuia_operadora>00000</numeroGuia_operadora> <identificacaoReembolso>00000000000000000000</identificacaoReembolso> <dataSolicitacao>2014-08-28</dataSolicitacao> <dataAutorizacao>2014-08-28</dataAutorizacao> <dataRealizacao>2014-10-20</dataRealizacao> <dataInicialFaturamento>2014-10-29</dataInicialFaturamento> <dataFimPeriodo>2014-10-15</dataFimPeriodo> <dataProtocoloCobranca>2014-10-15</dataProtocoloCobranca> <dataPagamento>2014-11-20</dataPagamento> <dataProcessamentoGuia>2014-10-20</dataProcessamentoGuia> <indicacaoRecemNato>N</indicacaoRecemNato> <indicacaoAcidente>9</indicacaoAcidente> <caraterAtendimento>U</caraterAtendimento> <tipoInternacao>2</tipoInternacao> <regimeInternacao>1</regimeInternacao> <tipoFaturamento>2</tipoFaturamento> <motivoSaida>12</motivoSaida> <valoresGuia> <valorTotalInformado>321.48</valorTotalInformado> <valorProcessado>321.48</valorProcessado> <valorTotalPagoProcedimentos>0.00</valorTotalPagoProcedimentos> <valorTotalDiarias>0.00</valorTotalDiarias> <valorTotalTaxas>0.00</valorTotalTaxas> <valorTotalMateriais>321.48</valorTotalMateriais> <valorTotalOPME>0.00</valorTotalOPME> <valorTotalMedicamentos>0.00</valorTotalMedicamentos> <valorGlosaGuia>0.0000</valorGlosaGuia> <valorPagoGuia>321.48</valorPagoGuia> <valorPagoFornecedores>0.00</valorPagoFornecedores> <valorTotalTabelaPropria>0.00</valorTotalTabelaPropria> </valoresGuia> <procedimentos> <detalhePacote> <quantidade>0</quantidade> </detalhePacote> </procedimentos> </guiaMonitoramento> </operadoraParaANS> </Mensagem> <epilogo> <hash>47c1fb58cf1ba01fdb50c8248b219783</hash> </epilogo> </mensagemEnvioANS>

Obs:
quando retiro ela tenho a seguinte msg na hora de validar: ERROR: Element ‘{http://www.ans.gov.br/padroes/tiss/schemas}procedimentos’: Missing child element(s). Expected is ( {http://www.ans.gov.br/padroes/tiss/schemas}identProcedimento ).

. . . . <valoresGuia> <valorTotalInformado>321.48</valorTotalInformado> <valorProcessado>321.48</valorProcessado> <valorTotalPagoProcedimentos>0.00</valorTotalPagoProcedimentos> <valorTotalDiarias>0.00</valorTotalDiarias> <valorTotalTaxas>0.00</valorTotalTaxas> <valorTotalMateriais>321.48</valorTotalMateriais> <valorTotalOPME>0.00</valorTotalOPME> <valorTotalMedicamentos>0.00</valorTotalMedicamentos> <valorGlosaGuia>0.0000</valorGlosaGuia> <valorPagoGuia>321.48</valorPagoGuia> <valorPagoFornecedores>0.00</valorPagoFornecedores> <valorTotalTabelaPropria>0.00</valorTotalTabelaPropria> </valoresGuia> <procedimentos> </procedimentos> </guiaMonitoramento> </operadoraParaANS> . . .

Agora quando tiro tbm a tag tenho a seguinte mensagem:

cvc-complex-type.2.4.b: The content of element ‘guiaMonitoramento’ is not complete. One of ‘{“http://www.ans.gov.br/padroes/tiss/schemas”:declaracaoNascido, “http://www.ans.gov.br/padroes/tiss/schemas”:declaracaoObito, “http://www.ans.gov.br/padroes/tiss/schemas”:procedimentos}’ is expected.

freakazoid

Olá cadevinicius,

Estou aqui do lado da Operadora, o que manda nesses casos é o que esta definido nos .xds.
http://www.ans.gov.br/padroes/tiss/schemas/

freakazoid

Algum de vocês teve problemas de serialização do XMLGregorinCalendarImpl ?

rbamartins

Acabei de encontrar esse tópico que criei a 11 anos atrás, deu até saudade.
Muito aprendizado e muita união da comunidade.

Fernando_Domingues

Boa tarde Rafael @rbamartins, tudo bom? Direto do túnel do tempo!
Sou novo no desenvolvimento SOAP. Preciso muito da sua ajuda! Estou desenvolvendo um WS TISS20201 com maven e springboot com jaxws. É para o lado da operadora, fiz o import dos xsds e wsdls.
Criei o seguinte endpoint:

@Endpoint
public class TissTransmiteMensagemV20201EndPoint {

@PayloadRoot(namespace="http://www.ans.gov.br/tiss/ws/tipos/tissTransmiteMensagem/v20201", localPart="mensagemTISSString")

@ResponsePayload

public MensagemTISS mensagemTISSResposta(@RequestPayload MensagemTISS req)  {
    MensagemTISS resposta = new MensagemTISS();
    resposta = req;

    return resposta;
}

}

deu erro

Fernando_Domingues

SOAP-ENV:Fault
SOAP-ENV:Server
<![CDATA[elemento inesperado

Fernando_Domingues

uri:“http://www.ans.gov.br/tiss/ws/tipos/tissTransmiteMensagem/v20201”, local:“mensagemTISSString”). Os elementos esperados são <{http://www.ans.gov.br/tiss/ws/tipos/tissVerificaElegibilidade/v20201}DestinatarioInvalido

Criado 18 de maio de 2007
Ultima resposta 23 de set. de 2020
Respostas 176
Participantes 42