TSC TTP-244 CE
Impressão de Pulseira TSC TTP-244 CE
A impressora TSC TTP-244 CE, é compativel com as seguintes linguagens; TSPL-EZ (Emulação de EPL, ZPL e ZPLII), sendo que a TSPL-EZ é a linguagem oficial;
TSC TTP-244 CE
Impressão de Pulseira TSC TTP-244 CE
A impressora TSC TTP-244 CE, é compativel com as seguintes linguagens; TSPL-EZ (Emulação de EPL, ZPL e ZPLII), sendo que a TSPL-EZ é a linguagem oficial;
Hoje mostrar como criar um dashboard no Grafana, através de uma consulta SQL no banco de dados.
Antes de avançarmos é necessário configurar o DATASOURCE para a conexão com o banco.
Clique no ícone lateral e selecione a opção (Data Sources).
Clique no botão Add data source Informe um nome para o data source, selecione o tipo e os dados para a conexão.
É importante que defina um nome que identifique a base de dados, pois será utilizado posteriormente.
No exemplo, estou usando conexão com o Banco MySQL.
Ao salvar, observe que o Grafana fará um teste de conexão, e vai exibir uma mensagem indicando que foi conectado com sucesso. Se a mensagem for de erro revise os dados de conexão.
Será listado todos os data sources configurados.
Vamos ao Dashboard!
Escolha o tipo de dashboard que deseja incluir, estou usando (Table)
Agora clique na opção ao lado do título e em Edit.Informe o título do Dashboard e descrição
Primeiros passos após Instalação do Grafana (Configurações iniciais)
Após a instalação do Grafana, quando logamos é apresentado a seguinte tela, que mostra que ainda não foi configurado nenhum datasource, instalação de plugin, definido equipe ou criado algum dashboard.
Antes de prosseguir baixe os programas abaixo para auxiliar nas configurações.
Aplicativos úteis para manutenção do servidor Grafana em ambiente Linux
Putty.exe
WinSCP (aplicativo para transferência de arquivos entre Windows e Linux, além da possibilidade de editar arquivos do Linux a partir do Windows (caso não queira usar o editor *vi)
Comandos úteis:
sudo service grafana-server start
sudo service grafana-server stop
Porta de Acesso / Alterar Porta
A porta padrão de acesso ao Grafana é 3000 (http://localhost:3000), caso queira redirecionar a porta padrão no Linux execute o comando abaixo(permissão e redirecionamento), para a porta 80.
1 2 | sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000 |
Plugins
Alguns plugins são nativos do Grafana, ou seja, por padrão já é instalado.
Caso queira instalar novos Plugins, você pode feito de duas formas, o download do plugin no site oficial (https://grafana.com/plugins) e copiar para o diretório /var/lib/grafana/plugins ou via linha de comando (imagem abaixo)
Lembre que após a instalação do Plugin será necessário reiniciar o Grafana Server
1 | sudo service grafana-server stop |
1 | sudo service grafana-server start |
Ou
1 | sudo service grafana-server restart |
Alguns Plugins são instalados via Git, para instalar o git execute o comando no CentOS
1 | yum install -y git npm |
Lista de Alguns Plugins
– WorldPing
O worldPing é um plug-in para o Grafana que testa, armazena e alerta continuamente o desempenho global e a disponibilidade de seus aplicativos da Internet, para que você possa identificar problemas.
Comando para instalar: grafana-cli plugins install raintank-worldping-app
– Zabbix
Visualize suas métricas do Zabbix com o software de código aberto líder para análise de séries temporais.
Comando para instalar: grafana-cli plugins install alexanderzobnin-zabbix-app
– Clock
O painel de relógio pode mostrar a hora atual ou uma contagem regressiva e atualiza a cada segundo.
Comando para instalar: grafana-cli plugins install grafana-clock-panel
– ntopng
O plug-in de fonte de dados oficial do Grafana permite que você navegue rapidamente por dados dentro dos belos painéis do Grafana.
Comando para instalar: grafana-cli plugins install ntop-ntopng-datasource
Arquivo de Configuração:
No Linux Centos 7 o arquivo de configuração do Grafana fica localizado em: /etc/grafana/grafana.ini, mas atenção, este arquivo não deve ser editado.
Para incluir suas configurações, você deve criar um arquivo com o nome custom.ini no diretório /etc/grafana (conforme imagem abaixo), incluindo suas configurações personalizadas.
Todas as opções de configuração podem ser lidas no site oficial (http://docs.grafana.org/installation/configuration/)
Acesse no menu lateral as referencias do usuário, informe o nome, email e altera a senha de Admin.
Configurar data Source
Para incluir um novo datasource, selecione no menu lateral a opção e clique em Add Data Source
Como Exemplo incluindo um DataSource MySQL, observe que ao salvar será apresentado uma mensagem indicado que foi conectado com sucesso.
Configurar Plugin Zabbix
Post 1
http://blog.fabianobento.com.br/2018/05/preparacao-configuracao-ambiente-para-instalacao-grafana-linux-centos-7-redhat-fedora-opensuse/
Post 2
http://blog.fabianobento.com.br/2018/05/instalando-grafana-linux-centos-redhat-linux-fedora-opensuse/
Post 3
http://blog.fabianobento.com.br/2018/05/primeiros-passos-apos-instalacao-grafana/
Instalando Grafana no Linux CentOS/RedHat/Fedora/OpenSuse em 10 minutos
O Grafana é uma ferramenta que permite a criação de dashboards incríveis e permite a integração com outras ferramentas (Zabbix, MySQL, PostGree, entre outras)
Vou demonstrar como instalar o Grafana no Linux CentOS, e você pode aplicar os mesmos passos no RedHat ou Fedora.
É necessário ter conhecimentos básicos de rede e linux.
Estou usando uma máquina virtual com a seguinte configuração: 2 GB Ram, HD 50SSD, CentOS 7.4 x64
(Softwares para máquina virtual: Vmware, VirtualBox), ou contrate uma máquina nos sites; Linode.com, DigitalOcean, Atlantic.net)
Para preparar o ambiente e instalar o CentOS leia o post: http://blog.fabianobento.com.br/2018/05/preparacao-configuracao-ambiente-para-instalacao-grafana-linux-centos-7-redhat-fedora-opensuse/
http://blog.fabianobento.com.br/2018/05/preparacao-configuracao-ambiente-para-instalacao-grafana-linux-centos-7-redhat-fedora-opensuse/
Após a instalação do sistema operacional, execute o comando abaixo para atualizar (caso ainda não tenha feito)
1 | # yum update -y |
Instalando com base no RPM
A partir do arquivo diretamente no site
1 | sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.0-1.x86_64.rpm |
Ou baixe e instale manualmente
Instale o pacote wget para conseguir baixar via linha de comando
1 | yum install wget -y |
Acesse o diretório tmp para fazer download
1 | cd /tmp |
Comando para baixar o arquivo RPM
1 | wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.0-1.x86_64.rpm |
Execute o comando abaixo para instalar via RPM
1 2 | sudo yum install initscripts fontconfig sudo rpm -Uvh grafana-5.1.0-1.x86_64.rpm |
Resumo dos comandos acima:
1 2 3 4 | cd /tmp wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1.0-1.x86_64.rpm sudo yum install initscripts fontconfig sudo rpm -Uvh grafana-5.1.0-1.x86_64.rpm |
Pronto o Grafana foi instalado!
Execute os comandos abaixo para instalar bibliotecas de renderização para textos em imagens PNG
1 2 3 | yum install -y fontconfig yum install -y freetype* yum install -y urw-fonts |
Configure o Grafana para iniciar no boot
1 | sudo /sbin/chkconfig --add grafana-server |
Os logs gerados pelo Grafana ficam no diretório:
1 | /var/log/grafana |
Para iniciar o Grafana execute o comando:
1 | sudo service grafana-server start |
Agora você pode acessar pelo navegador usando o IP e a porta padrão 3000;
http://ip-computador:3000
Login: admin/admin
Caso não consiga acessar o Grafana pelo IP e porta libere no firewall usando o comando;
1 2 | firewall-cmd --permanent --add-port=3000/tcp firewall-cmd --reload |
Tela inicial após efetuar Login
Leia o próximo post dos primeiros passos após a Instalação do Grafana
http://blog.fabianobento.com.br/2018/05/primeiros-passos-apos-instalacao-grafana/
Parte do material foi retirado do site oficial: Grafana.com
Preparação e Configuração do Ambiente para Instalação do Grafana no Linux CentOS 7/RedHat/Fedora/OpenSuse
É necessário ter conhecimentos básicos de rede e Linux.
Vamos criar uma máquina virtual com a seguinte configuração: 2 Processadores, 2 cores, 2 GB Ram, HD 50SSD com uma área (3 GB Swap)
Programas necessários:
VirtualBox – https://www.virtualbox.org/wiki/Downloads (Para criar máquina virtual)
Putty – https://www.putty.org/
WinSCP – https://winscp.net/eng/download.php
Sistema Operacional: CentOS 7.4 x64 – https://www.centos.org/download/
Após fazer o download e instalação do Virtual Box vamos criar a VM.
Para usar versão 64 bits no Oracle Virtual Box, é necessário habilitar na Bios do computador a opção da arquitetura (Intel Virtual = Enable), ou ative via prompt de comando (bcdedit /set hypervisorlauchetype off)
Na opção do armazenamento você pode usar a opção Dinamicamente alocado para que seja dimensionado conforme o uso, eu prefiro alocar o Tamanho Fixo do disco.
Para o tamanho do disco você pode dimensionar apenas 20GB para a instalação do Grafana (comporta perfeitamente), como pretendo instalar outros serviços na mesma VM (Zabbix, banco PostGree, Oracle Express, irei dimensionar com 40GB/50GB)Como estou usando a opção para alocar tamanho fixo, leva alguns minutos.
Localize a ISO do CentOS 7 e inicie a VM
Idioma
Configure o nome do host e ative a interface de rede (Defina um IP Fixo), clique em configurar.
-Lembrando que o IP deverá estar na mesma faixa/sub rede do seu computador/ambiente, desta forma será possível acessar na rede através de outros computadores.
Nesta etapa você pode habilita a instalação do ambiente gráfico no Linux, clicando em seleção de software e ativando a opção GNOME.
Defina a senha para o usuário ROOT e crie um usuário, como Exemplo (admin)
Aguarde o término da instalação e reinicie o host.
Aceite os termos de uso. (modo Gráfico)
Após aceitar e reiniciar o host está pronto para o uso.
Caso não tenha muita experiência com Linux, e não tenha instalado a ambiente gráfico(GNOME), recomendo que instale, é bem simples.
Logue no host com o usuário: root e a senha que você definiu e digite os comandos abaixo:
1 | yum grouplist |
1 | sudo yum groups install "GNOME Desktop" |
1 | systemctl set-default graphical.target |
1 | systemctl start graphical.target |
Agora vamos atualizar o sistema. Abra o terminal ou logue com aplicativo Putty e digite:
1 | yum update -y |
Aqui termina os passos necessários para a configuração do ambiente. Abaixo são itens opcionais.
Instalação de recursos opcionais:
yum install -y net-tools
yum install -y httpd
yum install -y perl perl5
yum install -y zip unzip
yum install -y sshd
yum install -y wget
Leia o próximo post para fazer a instalação do Grafana: http://blog.fabianobento.com.br/2018/05/instalando-grafana-linux-centos-redhat-linux-fedora-opensuse/
http://blog.fabianobento.com.br/2018/05/instalando-grafana-linux-centos-redhat-linux-fedora-opensuse/
Parte 3 – Primeiros passos após a instalação
http://blog.fabianobento.com.br/2018/05/primeiros-passos-apos-instalacao-grafana/
Instalação do Banco de Dados MySQL
yum install -y wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum -y update
sudo yum install mysql-server
A senha temporária fica no arquivo mysqld.log para obter execute o comando:
grep “temporary password” /var/log/mysqld.log
Caso retorne que não exista, execute o comando abaixo e quando pedir a senha deixe em branco e pressione a tecla ENTER.
sudo mysql_secure_installation
sudo systemctl start mysqld
sudo systemctl status mysqld
Para resetar a senta root
systemctl stop mysqld
killall mysqld
mysqld_safe –skip-grant-tables –skip-networking &
mysql -u root
update mysql.user set password=PASSWORD(‘fabianobento’) where user=’root’;
exit
systemctl stop mysqld
systemctl start mysqld
mysql -u root -p
Comando para liberar o acesso remoto/externo ao banco MySQL(fora do host 127.0.0.1)
mysql -uroot -p[senha]
GRANT ALL ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘senha’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
Comando Parar liberar a porta para acesso ao banco MySQL
firewall-cmd –permanent –add-port=3106/tcp
firewall-cmd –reload
Para Instalar o phpMyAdmin no CentOS 7
yum -y install epel-release
yum -y update
yum -y install phpMyAdmin.noarch
Edite o arquivo /etc/httpd/conf.d/phpMyAdmin.conf
Require ip
Allow from
Require ip 127.0.0.1 192.168.0.0/24
Reinicie o Apache
systemctl restart httpd
http://ip-host/phpMyAdmin
Para instalar o Zabbix leia as instruções no site oficial:
https://www.zabbix.com/download?zabbix=3.4&os_distribution=centos&os_version=7&db=MySQL
Desativo o selinux: /etc/sysconfig/selinux
SELINUX=disable
PHP – Edite o arquivo /etc/php.ini
date.timezone = America/Sao_Paulo
1 2 3 | rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent |
mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@% identified by ‘fabianobento’;
mysql> quit;
1 | zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix |
1 2 | systemctl restart zabbix-server zabbix-agent httpd systemctl enable zabbix-server zabbix-agent httpd |
http://server_ip_or_name/zabbix
Login e Senha: Admin / zabbix
OBS: Caso tenha problemas para iniciar o serviço do zabbiz verifique o arquivo de LOG /var/log/zabbix
Se for algum erro de conexão com o banco edite o arquivo /etc/zabbix/zabbix_server.conf, e acrescente as linhas abaixo
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=senha-banco
Para liberar a porta para acesso
firewall-cmd –permanent –add-port=80/tcp
firewall-cmd –reload
Para desativar o firewall
systemctl stop firewalld
systemctl disable firewalld
Instalando Grafana no Windows
Baixe o Grafana no link https://grafana.com/grafana/download?platform=windows
Crie a pasta (Grafana) na Raiz no disco, como exemplo: (C:), descompacte e copie os arquivos para a pasta.
O arquivo de configuração padrão do Grafana é o (defaults.ini), mas não altere este arquivo, para customizar as configurações do Grafana você deve editar o arquivo (custom.ini).
C:\Grafana\conf\custom.ini
Após copiar para a pasta já é possível rodar o Grafana com as configurações padrões.
Localize o arquivo grafana-server.exe que fica dentro do diretório BIN (bin\grafana-server.exe), e execute.
Abra o navegador e digite http://localhost:3000/login
Usuário e Senha: admin / admin
Para intalar novos Plugins baixe no site do Grafana copie para o diretório (data\plugins), será necessário reiniciar o Grafana (fechar e abrir novamente o grafana-server.exe)
POST Atualizado 09/2020
Vou fazer um artigo no qual recebo várias perguntas: Como gerar arquivos XML no padrão TISS da ANS. Vou demonstrar usando PHP e API DOM nesta primeira parte e futuramente complementarei com dados a partir de banco de dados MySQL.
O padrão TISS é determinado pela ANS, você poderá consultar outras informações do padrão TISS no site da Agência Nacional de Saúde.
Para seguir, é necessário ter noções básicas da linguagem PHP.
Obs.: Não vou ensinar como desenvolver um sistema com a finalidade de faturamento, apenas o passo a passo da geração do XML no padrão TISS usando o PHP e a biblioteca DOM.
Basicamente o faturamento dos atendimentos/contas, consiste no atendimento do beneficiário pelo prestador(clínica, hospital, laboratório, banco de sangue, clínicas de imagem, entre outros), que é credenciado as operadoras de saúde (Bradesco Saúde, Unimed, Postal Saúde, Geap, Cassi, Capesp, Saúde Itaú, Sul América,…).
O envio do faturamento é feito por lotes(vários atendimentos no mesmo lote, geralmente até 100 atendimentos no mesmo lote) e pode ser via portal da Operadora por digitação das contas (quando a mesma oferece o recurso) ou a partir do envio de arquivos XML. E cada operadora permite e aceita o envio até uma data limite de cada mês(competência), por exemplo; a operadora XYZ aceita que o envio seja feito até o dia 20, e fará o pagamento até o dia 19 do mês subsequente(30 dias após o envio). Desta forma os prestadores precisam ficar atentos ao cumprimento de envio nas datas certas para receber no prazo, caso contrário o pagamento pela operadora é feito na próxima competência.
A geração do XML consiste em dados dos pilares: Operadora de Saúde <-> Prestador de Serviços <-> Beneficiários/Segurados, ou seja, precisamos das informações de credenciamento do prestador de saúde, dados do prestador e do segurado. Abaixo uma exemplificação dos dados;
Dados da operadora:
Registro ANS: 1111
Versão TISS: 03.03.03
Dados do Prestador:
Código de Credenciamento: 12345
CNPJ: 00.000.000/0000-0 (Fictício)
Dados de faturamento:
Número da remessa/fatura/Lote: 123
Dados do atendimento:
Data e Hora: 03/04/2018 22:15:00
Nome: Fulano de Tal
Carteira: 4444444444444444
Validade da carteira: 31/12/2030
Recém nascido: Não
Tipo de Atendimento: Ambulatorial
Caráter do atendimento: Eletivo
Guia/Senha: 1111/2222
Médico: Dr. Fabiano
CRM: 0000
CBOS:
Código da tabela: 22
Procedimento TUSS: 10101012
Descrição do Procedimento: Consulta em consultório
Valor unitário: 500,00
Valor Total: 500,00
<?php #Definindo as variáveis #Dados Operadora: $_XML['versao_tiss']='030303'; $_XML['registro_ans'] = '1111'; #Dados Prestador: $_XML['codigo_credenciamento'] = '12345'; $_XML['cnpj'] = '0000000000000'; $_XML['prestador'] = 'Hospital ABCD'; #Dados do atendimento e beneficiário $_XML['data_hora'] = '03/04/2018 22:15:00'; $_XML['rn'] = 'N'; #Não $_XML['tipo_atd'] = 'Ambulatorial'; $_XML['carater'] = 'E'; #Eletivo $_XML['guia'] = '1111'; $_XML['senha'] = '2222'; $_XML['medico'] = 'Dr. Fabiano'; $_XML['crm'] = '0000'; $_XML['cbos'] = ''; #Dados do beneficiário $_XML['nome'] = 'Fulano de Tal'; $_XML['dt_nascimento'] = '01/01/1980'; $_XML['carteira'] = '4444444444444444'; $_XML['validade'] = '31/12/2030'; #Dados da Fatura / Lote $_XML['fatura_remessa'] = '123'; #Dados do procedimento realizado $_XML['tabela'] = '22'; $_XML['procedimento_tuss'] = '10101012'; $_XML['descricao_proced'] = 'Consulta em consultório'; $_XML['valor_unitario'] = '500,00'; $_XML['qtde'] = '1'; $_XML['valor_total'] = '500,00'; $_XML['tipoTransacao'] = 'ENVIO_LOTE_GUIAS'; $_XML['sequencialTransacao'] = '6658'; $_XML['dataRegistroTransacao'] = '2018-01-18'; $_XML['horaRegistroTransacao'] = '10:00:00'; # Utilize a variável $_XML['hash_dados'] para concatenar os dados e calcular o HASH antes do terceiro bloco $_XML['hash_dados'] = ''; #A variável $_XML['hash'] está nula pois deve ser calculada com os dados dos elementos(tags) do XML $_XML['hash'] = 'calculo do HASH'; //$_XML[''] = ''; // para criar novas variáveis apenas siga o padrão
Após a declaração das variáveis, vamos iniciar a geração da estrutura no nosso arquivo.
#versao XML e codificação $xml = new DOMDocument("1.0", "ISO-8859-1"); //também poderia ser UTF-8 #remove os espacos em branco $xml->preserveWhiteSpace = false; #Realizar a quebra dos blocos do XML por linha $xml->formatOutput = true; //Criação dos elementos do Namespace ans:mensagemTISS $xml->createAttributeNS( 'http://www.w3.org/2000/09/xmldsig#', 'ds:attr' ); $xml->createAttributeNS( 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:attr' ); $xml->createAttributeNS( 'http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_03_01.xsd', 'schemaLocation:attr' ); $xml->createAttributeNS( 'http://www.ans.gov.br/padroes/tiss/schemas', 'ans:attr' ); // Nó / Bloco Principal // ans:mensagemTISS $mensagemTISS = $xml->createElement("ans:mensagemTISS"); $xml->appendChild($mensagemTISS); /* primeiro bloco */ // ans:mensagemTISS / ans:cabecalho $cabecalho = $xml->createElement("ans:cabecalho"); $mensagemTISS->appendChild($cabecalho); // ans:mensagemTISS / ans:cabecalho / ans:identificacaoTransacao $identificacaoTransacao = $xml->createElement("ans:identificacaoTransacao"); $cabecalho->appendChild($identificacaoTransacao); # ans:tipoTransacao $tipoTransacao = $xml->createElement("ans:tipoTransacao", $_XML['tipoTransacao']); $identificacaoTransacao->appendChild($tipoTransacao); #sequencialTransacao $sequencialTransacao = $xml->createElement("ans:sequencialTransacao", $_XML['sequencialTransacao']); $identificacaoTransacao->appendChild($sequencialTransacao); #dataRegistroTransacao $dataRegistroTransacao = $xml->createElement("ans:dataRegistroTransacao", $_XML['dataRegistroTransacao']); $identificacaoTransacao->appendChild($dataRegistroTransacao); #horaRegistroTransacao $horaRegistroTransacao = $xml->createElement("ans:horaRegistroTransacao", $_XML['horaRegistroTransacao']); $identificacaoTransacao->appendChild($horaRegistroTransacao); // ans:mensagemTISS / ans:cabecalho / ans:origem $origem = $xml->createElement("ans:origem"); $cabecalho->appendChild($origem); // ans:mensagemTISS / ans:cabecalho / ans:origem / identificacaoPrestador $identificacaoPrestador = $xml->createElement("ans:identificacaoPrestador", $_XML['cnpj']); $origem->appendChild($identificacaoPrestador); // ans:mensagemTISS / ans:cabecalho / ans:destino $destino = $xml->createElement("ans:destino"); $cabecalho->appendChild($destino); // ans:mensagemTISS / ans:cabecalho / ans:registroANS $registroANS = $xml->createElement("ans:registroANS", $_XML['registro_ans']); $destino->appendChild($registroANS); // ans:mensagemTISS / ans:cabecalho / ans:Padrao $Padrao = $xml->createElement("ans:Padrao", $_XML['padrao_tiss']); $cabecalho->appendChild($Padrao); /* segundo bloco */ // ans:mensagemTISS / ans:prestadorParaOperadora $prestadorParaOperadora = $xml->createElement("ans:prestadorParaOperadora"); $mensagemTISS->appendChild($prestadorParaOperadora); // ans:mensagemTISS / ans:prestadorParaOperadora / loteGuias $loteGuias = $xml->createElement("ans:loteGuias"); $prestadorParaOperadora->appendChild($loteGuias); // ans:mensagemTISS / ans:prestadorParaOperadora / loteGuias / numeroLote $numeroLote = $xml->createElement("ans:numeroLote", $_XML['lote_remessa']); $loteGuias->appendChild($numeroLote); // ans:mensagemTISS / ans:prestadorParaOperadora / loteGuias / guiasTISS $guiasTISS = $xml->createElement("ans:guiasTISS"); $loteGuias->appendChild($guiasTISS); // ans:mensagemTISS / ans:prestadorParaOperadora / loteGuias / guiaConsulta $guiaConsulta = $xml->createElement("ans:guiaConsulta"); $loteGuias->appendChild($guiaConsulta); // ans:mensagemTISS / ans:prestadorParaOperadora / loteGuias / cabecalhoConsulta $cabecalhoConsulta = $xml->createElement("ans:cabecalhoConsulta"); $guiaConsulta->appendChild($cabecalhoConsulta); $registroANS = $xml->createElement("ans:registroANS", '132'); //registroANS $cabecalhoConsulta->appendChild($registroANS); $registroANS = $xml->createElement("ans:numeroGuiaPrestador", '1111'); //numeroGuiaPrestador $cabecalhoConsulta->appendChild($registroANS); $numeroGuiaOperadora = $xml->createElement("ans:numeroGuiaOperadora", '2222'); //numeroGuiaOperadora $guiaConsulta->appendChild($numeroGuiaOperadora); $dadosBeneficiario = $xml->createElement("ans:dadosBeneficiario"); //dadosBeneficiario $guiaConsulta->appendChild($dadosBeneficiario); $numeroCarteira = $xml->createElement("ans:numeroCarteira", '1122334455'); //numeroCarteira $dadosBeneficiario->appendChild($numeroCarteira); $atendimentoRN = $xml->createElement("ans:atendimentoRN", 'N'); //atendimentoRN $dadosBeneficiario->appendChild($atendimentoRN); $nomeBeneficiario = $xml->createElement("ans:nomeBeneficiario", 'Fulano de Tal'); //nomeBeneficiario $dadosBeneficiario->appendChild($nomeBeneficiario); //contratadoExecutante $contratadoExecutante = $xml->createElement("ans:contratadoExecutante"); $guiaConsulta->appendChild($contratadoExecutante); $codigoPrestadorNaOperadora = $xml->createElement("ans:codigoPrestadorNaOperadora", '001'); //codigoPrestadorNaOperadora $contratadoExecutante->appendChild($codigoPrestadorNaOperadora); $nomeContratado = $xml->createElement("ans:nomeContratado", 'Hospital Teste'); //nomeContratado $contratadoExecutante->appendChild($nomeContratado); $CNES = $xml->createElement("ans:CNES", '9999'); //CNES $contratadoExecutante->appendChild($CNES); //profissionalExecutante $profissionalExecutante = $xml->createElement("ans:profissionalExecutante"); //profissionalExecutante $guiaConsulta->appendChild($profissionalExecutante); $nomeProfissional = $xml->createElement("ans:nomeProfissional", 'Médico Teste'); //nomeProfissional $profissionalExecutante->appendChild($nomeProfissional); $conselhoProfissional = $xml->createElement("ans:conselhoProfissional", '02'); //conselhoProfissional $profissionalExecutante->appendChild($conselhoProfissional); $numeroConselhoProfissional = $xml->createElement("ans:numeroConselhoProfissional", '1234'); //numeroConselhoProfissional $profissionalExecutante->appendChild($numeroConselhoProfissional); $UF = $xml->createElement("ans:UF", 'SP'); //UF $profissionalExecutante->appendChild($UF); $CBOS = $xml->createElement("ans:CBOS", '201115'); //CBOS $profissionalExecutante->appendChild($CBOS); //dadosAtendimento $dadosAtendimento = $xml->createElement("ans:dadosAtendimento"); //dadosAtendimento $guiaConsulta->appendChild($dadosAtendimento); $tipoAtendimento = $xml->createElement("ans:tipoAtendimento", '05'); //tipoAtendimento $dadosAtendimento->appendChild($tipoAtendimento); $indicacaoAcidente = $xml->createElement("ans:indicacaoAcidente", '9'); //indicacaoAcidente $dadosAtendimento->appendChild($indicacaoAcidente); // Calculo o Hash - Você poderia gerar os dados, usar um (replace do PHP) para substituir as tags, e pegar apenas os dados $_XML['hash_dados'] = '' $_XML['hash'] = md5($_XML['hash_dados']); /* terceiro bloco */ // ans:mensagemTISS / ans:epilogo $epilogo = $xml->createElement("ans:epilogo"); $mensagemTISS->appendChild($epilogo); // ans:mensagemTISS / ans:epilogo / ans:hash $hash = $xml->createElement("ans:hash", $_XML['hash']); $epilogo->appendChild($hash); # Comando para salvar/gerar o arquivo XML TISS # Geralmente o nome do arquivo é o HASH que foi calculado ou número do lote, pois são informações únicas. # você pode usar as variáveis: $_XML['fatura_remessa'] . $_XML['hash'] $xml->save("xml_tiss.xml"); # Imprime / Gera o xml em tela echo $xml->saveXML(); ?>
Com o comando acima você terá o seguinte retorno: xml_tiss.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <ans:mensagemTISS xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_03_01.xsd" xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas"> <ans:cabecalho> <ans:identificacaoTransacao> <ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao> <ans:sequencialTransacao>6658</ans:sequencialTransacao> <ans:dataRegistroTransacao>2018-01-18</ans:dataRegistroTransacao> <ans:horaRegistroTransacao>10:00:00</ans:horaRegistroTransacao> </ans:identificacaoTransacao> <ans:origem> <ans:identificacaoPrestador>0000000000000</ans:identificacaoPrestador> </ans:origem> <ans:destino> <ans:registroANS>111111</ans:registroANS> </ans:destino> <ans:Padrao>03.03.03</ans:Padrao> </ans:cabecalho> <ans:prestadorParaOperadora> <ans:loteGuias> <ans:numeroLote>123</ans:numeroLote> <ans:guiasTISS/> </ans:loteGuias> </ans:prestadorParaOperadora> <ans:epilogo> <ans:hash>calculo do HASH</ans:hash> </ans:epilogo> </ans:mensagemTISS>
Criando um Validador TISS usando PHP
Neste posto irei ensinar como criar um validador TISS de arquivos XML no padrão TISS da ANS, usando o PHP e banco de dados MySQL. Com o validador será possível validar os arquivos TISS e arquivos do monitoramento TISS.
Obs.: Vou escrever um passo a passo, mas é necessário ter noções básicas da linguagem PHP e banco MySQL.
Vou dividir o post nas seguintes etapas;
1ª Etapa -Criar o formulário HTML para envio do arquivo e seleção da versão
2ª Etapa – Verificar a estrutura do arquivo (que é a comparação com o arquivo XSD da ANS)
3ª Etapa – Validação dos dados do arquivo conforme a codificação da TUSS (Apenas para arquivos TISS)
4ª Etapa – Disponibilização dos arquivos para download e dica de instalação
E é claro, você poderá personalizar conforme a sua necessidade.
Antes de começarmos baixe os arquivos do padrão TISS no site da ANS, usando o link http://www.ans.gov.br/prestadores/tiss-troca-de-informacao-de-saude-suplementar, conforme os prints abaixo, ou clique aqui para baixar o último arquivo disponível (Componente de Comunicação 03.03.03)
Obs.: baixe todas as versões que queira utilizar no seu validador.
Usaremos também o arquivo bootstrap.min.css do Bootstrap (framework web CSS/JavaScript), baixe também neste link (https://getbootstrap.com) (deixarei no final todos os arquivos para download)
As pastas devem ser criadas no seu servidor httpd(Apache/IIS), dentro do diretório (www).
-validador-tiss (pasta principal)
–css
–xml (diretório para upload dos arquivos xml enviados)
–tiss (diretório com os arquivos baixados no site da ANS para validação TISS)
–tiss/03_03_03
–tiss/03_03_01
–tiss/03_02_02
–tiss/03_02_01
–tiss/03_02_00
Agora vamos criar nosso formulário para envio do arquivo e salvar com o nome index.php
Arquivo index.php
Observe que action do formulário aponta para (validar_arquivo.php), e temos um select para as versões dos XML.
<head>
<meta charset=”UTF-8″>
<title>Validador TISS</title>
<link rel=”stylesheet” href=”css/bootstrap.min.css“>
</head>
<body>
<div class=”container”>
<h1 >Validador TISS</h1>
<a class=”btn btn-lg ” href=”#seu-site” role=”button”>Validador de arquivos XML no padrão TISS</a>
<br>
<form id=”upload” name=”upload” enctype=”multipart/form-data” method=”post” action=”validar_arquivo.php“>
<div class=”form-group”>
<label for=”versao” class=”control-label”>Selecione a versão:</label>
<select name=”versao” class=”form-control”>
<option value=”tissV3_03_03.xsd” selected>TISS – 03.03.03</option>
<option value=”tissV3_03_02.xsd” >TISS – 03.03.02</option>
<option value=”tissV3_03_01.xsd” >TISS – 03.03.01</option>
<option value=”tissV3_03_00.xsd” >TISS – 03.03.00</option>
<option value=”tissV3_02_02.xsd” >TISS – 03.02.02</option>
<option value=”tissV3_02_01.xsd” >TISS – 03.02.01</option>
<option value=”tissV3_02_00.xsd” >TISS – 03.02.00</option>
<option value=”tissMonitoramentoV3_03_03“>Monitoramento TISS – 03.03.03</option>
<option value=”tissMonitoramentoV3_03_02“>Monitoramento TISS – 03.03.02</option>
<option value=”tissMonitoramentoV3_03_01“>Monitoramento TISS – 03.03.01</option>
<option value=”tissMonitoramentoV3_03_00“>Monitoramento TISS – 03.03.00</option>
<option value=”tissMonitoramentoV3_02_02“>Monitoramento TISS – 03.02.02</option>
<option value=”tissMonitoramentoV3_02_01“>Monitoramento TISS – 03.02.01</option>
<option value=”tissMonitoramentoV3_02_00“>Monitoramento TISS – 03.02.00</option>
</select>
</label>
</div>
<div class=”form-group”>
<label for=”arquivo_xml” class=”control-label”>Selecione o arquivo (XML) para validação</label>
<input id=”arquivo_xml” name=”arquivo_xml” type=”file” class=”form-control-file” placeholder=”Selecione o arquivo XML para validaçaõ…” />
</div>
<button type=”submit” class=”btn btn-primary”>Validar Arquivo</button>
</form>
</div>
</body>
A página ficará com o layout abaixo;
Agora copie todos os arquivos que baixou no site da ANS e coloque dentro da pasta (tiss), ficando da seguinte forma:
tiss/03_03_03
tiss/03_03_02
tiss/03_03_01
tiss/03_03_00
tiss/03_02_02
tiss/03_02_01
tiss/03_02_00
MySQL – SELECT COUNT() GROUP BY date (data_format)
Fazendo uma consulta com count em campo do tipo (date)
1 2 3 4 5 6 7 | SELECT COUNT(*) AS qt_acesso_dia ,DATE_FORMAT(a.DT_ACESSO,'%d/%m/%Y') AS dt_acesso FROM contador_acesso a GROUP BY DATE_FORMAT(a.DT_ACESSO,'%d/%m/%Y') ORDER BY 2 |
Resultado:
Fazendo uma consulta com count em campo do tipo (date)
1 |
Como resolver o Erro DataExchange.dll (Windows 10)
Olá, irei ensinar como resolver o erro DataExchange.dll que aparece no windows 10
Meu computador começou a apresentar este erro, de uma hora pra outra, e ficou quase 1 semana me atrapalhando(haha), até que algumas das funcionalidades do Windows pararam de funcionar, menu iniciar, minimizar as janelas, copiar atalhos, aumentar e diminuir o volume, abrir fotos, calculadora, notepad, mover arquivos arrastando e outros problemas relacionados. Pensei que teria que formatar meu computador, pois fiz alguns testes de correção com aplicativos de DLL e outros recursos (limpeza registro), e nada resolveu. Então comecei a pesquisar como funcionava o processo de reparação do Windows, eis que encontrei uma opção de solução no site da Microsoft e adaptei ao que precisava, substituir a DLL DataExchange.dll, causadora de problemas.
Obs.: Não consegui descobrir de fato a causa, mas suspeito que seja devido a atualização de algum drive(Vídeo/Áudio) e que também esteja relacionado ao direct-X, e aplicativo da AMD CCC.exe (AMD Catalyst) e ao framework da Microsoft visual c + + XXXX redistributable package x64, devido aos erros que ocorreram.
-Primeiramente eu removi o driver de vídeo e reinstalei, em seguida atualizei o programa (AMD Catalyst(CCC.exe)) para a versão mais recente, direto no site da AMD(http://support.amd.com/pt-br/download/auto-detect-tool)
Após a instalação pediu para reiniciar o computador, e quando liguei novamente o erro(CCC.exe / DataExchange.dll) já diminuiu, mas não totalmente.
Vamos agora a solução que apliquei e foi definitiva;
-Antes de começar você irá precisar de acesso a outro computador com a mesma versão do Windows, no meu caso foi a versão (Windows 10 64 bits), pois irá copiar a nova DLL para substituir a anterior com problema.
Se você tentar usar os comandos de copiar e colar não irá funcionar, pois o Windows precisa da DLL para funcionar.
Então basicamente iremos atribuir permissão ao arquivo.
1º Passo – Abra o Command para atribuir permissão ao arquivo, e execute o comando abaixo