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

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!

[quote=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!

[/quote]

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

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!

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!

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();
        }
    }
}[/code]

Bom, recebi a seguinte exception:

[code]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)

[b]
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 ?
[/b]

Agradeço qualquer ajuda.

Pessoal, dia 25/06/08 mandei um e-mail para a ANS (tiss@capesesp.com.br) 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 ??

Pessoal, dia 25/06/08 mandei um e-mail para a ANS (tiss@capesesp.com.br) 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 ??

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.

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

[quote=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). [/quote]

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.

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

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:

[code]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()));[/code]

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.

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.

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.

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

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!

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:

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

[code]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;
}

}[/code]

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?

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

Segue o erro:

[code]

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)[/code]

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