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/

Preparação e Configuração do Ambiente para Instalação do Grafana no 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

Aguarde o término do download

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

Primeiros passos após Instalação do 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

Informe o disco de instalação

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.

Clique em Iniciar Instalação

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/

Instalando Grafana no Linux CentOS/RedHat/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)

 

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);	

// 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>

 

Download do Arquivo: gerador_xml_tiss

 

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)

Iniciando o projeto crie a estrutura de pastas abaixo.

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

1ª Etapa

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

 

Read More →

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)

Como substituir manualmente um arquivo de sistema corrompido por uma cópia conhecida em bom estado

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

Read More →

1 passo é baixar o programa

https://www.r-project.org/
https://vps.fmvz.usp.br/CRAN/bin/windows/base/

Segue os links para download conforme o sistema operacional.

Após acessar o site e clicar em Download, selecione um servidor para download, em seguida, clique em base

Na sequencia faça o download.

A instalação é bem simples, Avançar, Aceitar os termos, Selecionar o diretório, Componentes e concluir.

Read More →

Obtendo endereço IP usando a consulta do MySQL

Para obter o IP através de uma consulta do MySQL, basta rodar o comando abaixo.

SELECT host
FROM information_schema.processlist
WHERE ID = connection_id( )
LIMIT 0 , 10

Executando a partir do PHP My Admin, provavelmente irá obter o resultado 
como "Localhost", pois está executando diretamente no servidor.


Resultado a partir do meu computador, conectando remotamente no server.

Zebra GC420 – Resolver problema problema impressão sem Ribbon

Um problema comum em impressoras Zebra (quando não imprime corretamente, e Led fica piscando, ou para de imprimir), ocorre geralmente quando você está usando Ribbon e passa a usar a impressão térmica direta na etiqueta.

Para corrigir o problema você precisa alterar o tipo de impressão, em propriedades da impressora/Advance Setup, conforme a imagem abaixo, aplicar e confirmar a alteração clicando em Ok.

Em seguida, clique na aba Tools(Ferramentas), selecione a opção (Load factory defaults), e clique em (send),  para enviar comando de reset (default da impressora).

Pronto, após estes 2 passos você poderá imprimir normalmente, caso o erro ainda persista faça o procedimento acima outra vez, mas desligando/ligando a impressora antes de imprimir.