Validador TISS – Validador de arquivo XML no padrão TISS

http://fabianobento.com.br/validadortiss/

Software gratuito para validação e análise de arquivos no padrão TISS da ANS.

Você poderá validar gratuitamente seus arquivos XML no padrão TISS, sem a necessidade de instalar.

-Não é necessário instalar
-Padrão TISS
-Codificação TUSS
-Dados do Prestador
-Suporte a arquivos do monitoramento
-Informações das contas e valores
– Versão do arquivo
– Estrutura

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

Read More →

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

Alterar a senha admin

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

Preparação e Configuração do Ambiente para Instalação do Grafana no Linux CentOS 7/RedHat/Fedora/OpenSuse

Post 2

Instalando Grafana no Linux CentOS/RedHat/Fedora/OpenSuse

Post 3

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

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

mysqld_safe –skip-grant-tables –skip-networking &

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