Pesquisar este blog

sexta-feira, 16 de dezembro de 2011

Radar TISS 2011

Com o objetivo de acompanhar a implantação e o desenvolvimento do padrão TISS, a ANS implantou o RADAR, uma importante ferramenta que demonstra a evolução do padrão nos últimos anos assim como suas dificuldades.
Em sua última versão, será feito o levantamento do período de outubro de 2011. O prazo para entrega seria até dia 20 de dezembro, porém, a ANS prorrogou para até 23 de dezembro/2011Link ANS

A finalidade desse post é tentar esclarecer algumas dúvidas que surgem no desenvolvimento da pesquisa, mais precisamente na montagem do XML. A seguir é demonstrado alguns dos formatos utilizados e a forma como devem ser declarados.

Formatos
SimpleTypeTipoExemplo
st_datadate2011-12-16
st_horatime19:20:00
st_dataHoradatetime2011-12-16T19:20:00
st_decimal10-2decimal 10.21599.23 (ponto decimal)
st_ANSstringANS
st_competenciastring2011/11
dm_versaostring20203
dm_tipoTransacaostringENVIO_PESQUISA_RADAR
dm_simNaostringS ou N
st_logicobooleantrue ou false 1 ou 0


Hash

O  cálculo do valor hash nos Arquivos Xml da  campanha Radar TISS 2011, deve  fazer uso do algoritmo MD5 (Mais informações: RFC-1321) utilizando como input (entrada) apenas o conteúdo dos campos (sem as TAGS), na ordem da ocorrência dos mesmos, do arquivo XML a ser enviado, desde o primeiro caracter à esquerda até o último caracter à direita,  sem qualquer inserção,  supressão,  modificação  ou  ajuste,  respeitando  maiúsculas  e  minúsculas,  pontuação, acentuação e caracteres especiais, mesmo  invisíveis, que eventualmente existam  (tabs, CR, LF, seqüências de escape, etc...).
O valor  fica  localizado no epílogo do arquivo e o encoding a  ser utilizado será sempre o ISO-8859-1. 

É importante ressaltar que as Tags sem conteúdo não devem ser consideradas no cálculo do valor hash.
Além disso, conteúdos de Tags que possuam apenas caracteres como  tabulação, espaço,  retorno  de  linha,  etc. Também  não  devem  ser  considerados  no  cálculo  do  valor  hash.
Na  hipótese  de  o  valor  hash  gerado  para  o  arquivo  ser  diferente  do  calculado  pelo aplicativo Radar TISS XML, o arquivo será rejeitado.

Finalizando

Para demonstrar como o padrão TISS está evoluindo, é só acompanhar os relatórios das últimas campanhas. Apesar de algumas dificuldades, esse é o caminho, só nos resta saber quando teremos de fato as facilidades do padrão.


Este post será atualizado sempre que surgir alguma novidade ou sugestão.


sexta-feira, 7 de outubro de 2011

Já foi sorteado na MEGA-SENA?

Bateu a curiosidade em saber se a combinação que sempre faço no jogo da Mega-Sena já foi sorteada alguma vez. Então desenvolví essa ferramenta em PHP para saber se algum dia eu teria sido um acertador da Sena, Quina ou mesmo da Quadra.
Na minha simulação pelo menos posso ficar tranquilo pois em nenhuma vez minha costumeira combinação foi sorteada, ou seja, não quero nem imaginar a situação de ter esquecido de jogar e ter a combinação sorteada. Em todo caso, vale a máxima: "Se tiver que ser, será"
A base de dados é originada no arquivo disponibilizado pela CEF e atualizado a cada concurso.
Alguns ajustes ainda estão sendo feitos, então, se tiver alguma sugestão, crítica é só comentar.

quarta-feira, 21 de setembro de 2011

Envio de SMS em PHP

O envio de SMS sem dúvida já é bem popular em diversos negócios: consultórios médicos, lojas, telemarketing, cobrança, etc.... Devido ao seu amplo e objetivo alcance, esse serviço tem sido implementado em muitos softwares.
Existem várias empresas que fornecem o serviço de envio de mensagens por SMS. Cada qual com seu plano de serviços adequado a todo tipo de empresa.
Com APIs próprias, cada uma disponibiliza seus recursos aos desenvolvedores facilitando assim a implementação nas mais diversas ferramentas.
Devido as particularidades de cada empresa, o exemplo abaixo foi desenvolvido levando em consideração que quase todas têm a mesma forma de processo.


<?php

$usuario = "usuario";
$pwd      = "senha";
$to         = "1191364455";
$msg     = "teste de envio de SMS";

$url = "http://empresa_envio_sms.com.br/envio?user=" .$usuario ."&password=" .$pwd ."&to=" .$to ."&mensagem=" .$msg;

$retorno = file_get_contents( $url );

echo $retorno;

?>


sábado, 25 de junho de 2011

Fritada com vegetais

Problemas e mais problemas? Então o jeito é cozinhar.

Mais uma receita para desestressar e ter um almoço saudável e econômico.

Materiais necessários

  • Assadeira antiaderente
  • Liquidificador

Ingredientes
  • 6 ovos
  • 1 caldo de galinha
  • Sal
  • 1 xícara(chá) de queijo ralado
  • 3 latas de legumes enlados: seleta, milho, ervilha, brócolis, o que tiver na cozinha
  • 2 colheres(sopa) de cheiro-verde picado
  • 2 colheres(sopa) de manteiga
  • Farinha de trigo

Modo de fazer

  • Bater os ovos junto com o caldo de galinha, sal, cheiro-verde e o queijo ralado no liquidificador
  • Untar uma assadeira antiaderente com manteiga e farinha de trigo
  • Escorrer os legumes e coloque-os no fundo da assadeira untada
  • Adicionar os ovos batidos
  • Levar a assadeira ao forno por 20m
Uma dica: Se achar que precisa de uma "incrementada", então, é só acrescentar pedaços de frango cozido e desfiado ou uma carne moída já cozinhada para assar.

    domingo, 27 de março de 2011

    Passando valores de uma janela a outra via Javascript

    Recentemente no trabalho me deparei com uma necessidade simples que a tempos não utilizava. Como passar valores de uma janela a outra usando Javascript?
    Depois de quebrar a cabeça para lembrar e também pesquisando, resolví postar essa dica para memorizar e também ajudar a todos.


    Este recurso é bastante utilizado quando se deseja pesquisar um determinado item em uma tabela e passar o código para um <input> do <form> que está em outra janela.


    formprincipal.html
    <html>
    <head>
    
    <script>
    function abrirPesquisa()
    {
       window.open("pesquisa.html"); // Abrira a janela de pesquisa
    }   
    </script>
    
    </head>
    <body>
    <form>
    Digite um codigo: 
    
    Descrição: <label name="descrproduto" id="descrproduto">
    <p align="center"><a href="javascript:abrirPesquisa()";>Pesquisar</a></p>
    
    </form>
    
    </body>
    </html>
    


    pesquisa.html
    <html>
    <head>
    <script>
    function levarcodigo( codigo,descricao )
    {
       /** O "segredo" está aqui nessas duas linhas, onde é passado o codigo para o <input>
       *    e a descricao para o <label>
       */
       top.opener.document.getElementById("campo1").value = codigo;
       top.opener.document.getElementById("descrproduto").innerHTML = descricao;
       window.close();
    }
    </script>
    </head>
    <body>
    <a href="javascript:levarcodigo(1010,'Cafeteira');">1010-Cafeteira</a>
    <a href="javascript:levarcodigo(1020,'Jogo de panelas');">1020-Jogo de panelas</a>
    <a href="javascript:levarcodigo(1030,'Jogo de taças');">1030-Jogo de taças</a>
    <a href="javascript:levarcodigo(1040,'Churrasqueira');">1040-Churrasqueira</a>
    </body>
    </html>
    

    Um exemplo bem simples, porém funcional. Importante ressaltar que para funcionar é necessário que as duas páginas(.html) estejam no mesmo domínio.

    "Vida longa e próspera ao Javascript".

    quarta-feira, 9 de março de 2011

    Gráfico de linha usando API Google e PHP

    Há um tempo atrás, fiz um post sobre o mesmo tema, só com a diferença do anterior ter sido com a utilização do Delphi e o gráfico ser o de pizza.
    Agora, utilizando a mesma API Chart do Google, disponibilizo um exemplo para montar um gráfico de linha.





    <html>
    <body>
    <center

    Gráfico de linha usando API Google Chart com PHP

    <center> <?php { if( isset($_POST['btnOk']) ) { $m1 = $_POST['m1']; $m2 = $_POST['m2']; $m3 = $_POST['m3']; $m4 = $_POST['m4']; $m5 = $_POST['m5']; $m6 = $_POST['m6']; $m7 = $_POST['m7']; $m8 = $_POST['m8']; $m9 = $_POST['m9']; $m10 = $_POST['m10']; $m11 = $_POST['m11']; $m12 = $_POST['m12']; $maiorValor = $m1; if( $maiorValor < $m2 ) { $maiorValor = $m2; } if( $maiorValor < $m3 ) { $maiorValor = $m3; } if( $maiorValor < $m4 ) { $maiorValor = $m4; } if( $maiorValor < $m5 ) { $maiorValor = $m5; } if( $maiorValor < $m6 ) { $maiorValor = $m6; } if( $maiorValor < $m7 ) { $maiorValor = $m7; } if( $maiorValor < $m8 ) { $maiorValor = $m8; } if( $maiorValor < $m9 ) { $maiorValor = $m9; } if( $maiorValor < $m10 ) { $maiorValor = $m10; } if( $maiorValor < $m11 ) { $maiorValor = $m11; } if( $maiorValor < $m12 ) { $maiorValor = $m12; } $chds = "0,$maiorValor"; $chd = "t:$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11,$m12"; $grafico = ''; echo "
    "; echo $grafico; echo "
    "; } else { ?>
    janeiro
    fevereiro
    março
    abril
    maio
    junho
    julho
    agosto
    setembro
    outubro
    novembro
    dezembro
    <?php } ?< </body> </html>

    Mais informações e exemplos, é só acessar Google Chart Tools.

    segunda-feira, 7 de março de 2011

    JD-GUI Java Decompiler

    Um utilitário bastante útil em Java é o Java Decompiler(JD-GUI). Uma aplicação que mostra códigos java diretamente dos arquivos .class embutidos ou não em um .jar.
    Recentemente fiz uso dessa ferramenta para descobrir um erro num código antigo empacotado num .jar e que na empresa não tinha mais o fonte.

    Sua utilização é bem simples e intuitiva, o que me ajudou muito a atualizar o projeto e assim acabar com a dependência do pacote.



    Para descompilar um .war, primeiramente deverá descompactar o arquivo utilizando jar xvf arquivo.war

    Basta acessar o site http://java.decompiler.free.fr/?q=jdgui para fazer o download.

    terça-feira, 1 de março de 2011

    Visualizar Hash do XML/TISS usando TissNet

    Até hoje ainda existem dificuldades no entendimento do padrão TISS, é absolutamente normal, pois ainda estamos(prestadores, operadoras, ANS, desenvolvedores) em fase de aperfeiçoamento, porém, dúvidas antigas ainda persistem. É o caso do cálculo do hash de um arquivo XML.

    Para tentar facilitar o trabalho de muitos "sofredores" assim como eu, implementei uma pequena mudança no aplicativo TissNet em sua versão 5.0.
    Esta ferramenta desenvolvida em Java por Francisco Piragibe tem sido útil à comunidade de desenvolvedores por facilitar o entendimento do padrão TISS. É disponibilizada gratuitamente no site da ANS.

    A ideia é bem simples, consiste em mudar a exceção tissHashException() para tissSchemaException() do método setArquivoXML() da classe MensagemTiss para poder visualizar o hash. Em sua versão atual, tal recurso não existe o que complica a vida de quem está começando a trabalhar com a TISS. O resultado deverá ser como na figura abaixo:


    public void setArquivoXml (String arquivoXml)
        throws  IOException,
                ParserConfigurationException,
                TissHashException,
                TissSchemaException,
                TissNodoException,
                URISyntaxException
        {
            String oldArquivoXml    = this.arquivoXml;
            this.arquivoXml         = arquivoXml;
            AgenteDomTiss o_ad      = null;
            try {
                o_ad                    = AgenteDomTiss.getInstance();
                this.documentoMensagem  = o_ad.carregaArquivo( this.arquivoXml );
                if ( ! this.isHashOk() )
                    //throw new TissHashException(); <-- Trocar TissHashException por TissSchemaException
                    throw new TissSchemaException( "Hash inválido! - \n Hash calculado => " + this.getHashCalculado() );
                propertySupport.firePropertyChange ("arquivoXml", oldArquivoXml, arquivoXml);
            }
    

    Dessa forma, fica mais fácil verificar se o arquivo XML foi bem montado. Claro que existem outras formas que dão o mesmo resultado, então aproveito a oportunidade para os que implementaram algum novo recurso nessa ferramenta que disponibilizassem e assim todos possam enfim avançar no desenvolvimento do padrão TISS.

    terça-feira, 25 de janeiro de 2011

    II Implanta TISS - TUSS onde estamos e onde queremos chegar

    Enfim, um grande evento se aproxima. Assim como foi na primeira edição, agora o II Implanta TISS tem a expectativa de ser ainda melhor. 
    Organizado pelo CET TISS(grupo que faço parte) juntamente com o HL7 Brazil e SBIS(Sociedade Brasileira de Informática em Saúde) conta com o envolvimento de profissionais da área técnica que juntando esforços criaram uma programação de grande interesse para todos.

    O principal objetivo desse evento é a discussão do impacto na implantação da TUSS, Agenda de trabalho da ANS para 2011 e a troca de informações entre os atores da saúde envolvidos.

    Com participação de vários representantes do setor de saúde suplementar discutindo os temas de maior relevância na atualidade, o evento será com certeza mais um marco para o padrão TISS.

    Com certeza estarei lá.

    As inscrições podem ser feitas pelo endereço www.hl7brasil.org.br/inscricao.htm

    E mais informações: hl7@hl7brasil.org.br