Árvore de páginas

Ponto de entrada PLTISESP

Linha de Produto:

Microsiga Protheus

Segmento:

Saúde

Módulo:

Plano de Saúde

Rotina:

Rotina

Nome Técnico

Gerenciador de Arquivos XML

PLSA974


Parâmetro(s):

NomeTipoDescrição
cTpTranCaracterTipo de ação em execução ("1" - Submissão, "2" - importação)
cTipProCaracterTipo de profissional em validação ("S" - Solicitante, "E" - Executante)
cNomProfCaracterNome do profissional de Saúde
cCboXCaracterCBOS enviado no arquivo
cEspXCaracterEspecialidade retornada após realizar o De/Para
cCodGloCaracterCodigo da glosa em validação (Caso a variável cTpTran for igual a "2", o conteúdo dessa será sempre em branco)

Ponto de Entrada:

PLTISESP

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Descrição

Realizada implementação do Ponto de Entrada PLTISESP em submissão/importação de arquivos XML TISS superiores ou iguais à versão 3.


Ponto de Entrada

Descrição:

Utilizado na rotina de submissão de arquivos XML para que seja possível realizar o De/Para para associar mais de um CBO-s para uma especialidade.

Localização:

Atualizações\Proc de Contas\Gerenciador XML TISS

Eventos:

Submissão e Importação de Arquivos XML TISS

Programa Fonte:

RotinaNome Técnico
Funções Genéricas de Gravação de ArquivosPLSXMOV
Processamento do XMLPLSA973L
Gravação do XMLPLSA973

Função:

Programa FonteFunção
PLSA973PlTrCBOIMP
PLSA973LPlTrCBOSUB

Retorno:

Nome

Tipo

Descrição

Obrigatório

cCodEsp

CaracterNovo código de Especialidade que sera utilizado após as validações do Ponto de EntradaSim

cCodCbo

Caracter

Novo código do CBOS que sera utilizado após as validações do Ponto de Entrada

Sim

lRet

Lógico

Retorno de validação da crítica de Submissão do XML.

Somente se o conteúdo da variável cTpTran for igual a "1"

Implementação

Na submissão, o ponto de entrada serve tanto para manipular o tratamento padrão das criticas referente ao CBOS dos Profissionais (maiores informações nesse artigo ), quanto na criação de novas críticas. Para isso o usuário deve configurar um novo registro na rotina Motivos Críticas (Atualizações\Cadastro Contas\Motivos de Críticas (PLSA505)) inserindo um item filho na tabela BVN (Validacao das Criticas TISS) com as seguintes informações:

BCT - Cabeçalho 
Critica criado como auxilio na implementação desse ponto de entrada: 

 

BVN_TISVER - Versão TISS
Versão do arquivo que a crítica deve ser submetida
 

BVN_CAMTAG - Caminho Tag
Caminho da TAG da critica a ser avaliada. O caminho é importante apenas quando é necessário diferenciar TAGS exclusivas de determinado tipo de arquivo. Ex.:
SADT: \GUIASP-SADT\PROCEDIMENTOSEXECUTADOS\PROCEDIMENTOEXECUTADO\EQUIPESADT
GRI: \GUIARESUMOINTERNACAO\PROCEDIMENTOSEXECUTADOS\PROCEDIMENTOEXECUTADO\IDENTEQUIPE 
 

BVN_TAG - Tag XML
Tag a ser validada
 

BVN_TPVLD - Tipo Validação
Existem 4 tipos de validação: 
1=Busca Registro;2=Valida Terminologia;3=Expressão;4=Existencia da TAG 
Essa implementação entra somente no mérito do tipo 3 pois a validação será realizada através de uma expressão 

 

BVN_DADEXP - Dado/Express
Aqui pode ser cadastrada tanto uma expressão criada pelo usuário (User Function) quanto a função PlTrCBOSUB que é utilizada no padrão de tratamento do CBOS.
A função cadastrada nesse campo será executada no momento que a TAG estiver em validação. Para utilizar a função padrão basta informar o parâmetro cCodGlo que se refere ao código da glosa customizada que está sendo validada e os demais parâmetros utilizados na função conforme exemplo abaixo:

Exemplo:
PlTrCBOSUB('791',_CCBOEXE,_CCBOSOL,_CCODESP,_CESPEXE,_CESPSOL,ADADUSR,ADADRDA,CCODPAD,CCODPRO) 

BVN_TAGMSG - Tag Mensagem (Opcional)

Valor da TAG a ser informado no LOG caso o arquivo não seja acatado. O padrão é que o sistema exiba o valor da TAG informada no campo BVN_TAG. No exemplo abaixo me interessa saber o valor da TAG CODIGOPROCEDIMENTO no momento da validação.


 

BVN_MSGAUX - Msg. Aux. (Opcional)
Mensagem auxiliar a ser informada no LOG caso o arquivo não seja acatado. 
IMPORTANTE: Informar somente expressões nesse campo, caso seja uma mensagem de texto, utilizar aspas para iniciar e terminar o texto conforme exemplo abaixo 


 

A partir da parametrização acima podemos desenvolver o ponto de entrada, lembrando que caso as criticas padrão sejam alteradas, a lógica no bloco da importação deve seguir o mesmo princípio da submissão, haja visto que validando uma informação e gravando outra pode ocasionar inconsistência na base de dados. Segue exemplo de desenvolvimento do ponto de entrada que contempla tanto o tratamento para a critica customizada na submissão, quanto a alteração da validação das criticas do padrão e gravação da importação:

Exemplo:
#include 'Protheus.ch'
user function PLTISESP()
	local cTpTran 	:= ParamIXB[1] 	//"1" - Submissao, "2" - Importacao
	local cTipPro 	:= ParamIXB[2] 	//"S" - Solicitante, "E" - Executante
	local cNomProf 	:= ParamIXB[3] 	//Nome do profissional de Saude
	local cCboX 	:= ParamIXB[4] 	//CBOS enviado no arquivo
	local cEspX 	:= ParamIXB[5] 	//Especialidade retornada apos realizar o De/Para
	local cCodGlo 	:= ParamIXB[6] 	//Codigo da glosa em validacao
	local cCodEsp 	:= ""			 //Codigo da especialidade tratada
	local cCodCbo 	:= ""			 //Codigo do CBOS tratado
	local lRet 		:= .T. 			//Retorno da validacao
	local aRet 		:= {} 			//Retorno da funcao
	//Bloco da submissao
	if cTpTran == "1"
		Do Case
		//Bloco de validacao critica X25
		Case cCodGlo == "X25"
			if cCboX == "225103"
				cCodCbo := "225105"
				cCodEsp	:= "036"
				lRet		:= .F.
				aAdd(aRet,cCodEsp)				
				aAdd(aRet,cCodCbo)
				aAdd(aRet,lRet)
			elseif cCboX == "225105"
				cCodCbo := "225103"
				cCodEsp	:= "035"
				lRet		:= .F.
				aAdd(aRet,cCodEsp)
				aAdd(aRet,cCodCbo)
				aAdd(aRet,lRet)
			else
				aAdd(aRet,cEspX)
				aAdd(aRet,cCboX)
				aAdd(aRet,lRet)
			endif

		//Bloco de validacao critica 791
		Case cCodGlo == "791"
			lRet		:= .F.
			aAdd(aRet,cEspX)
			aAdd(aRet,cCboX)
			aAdd(aRet,lRet)
		Otherwise
			aAdd(aRet,cEspX)
			aAdd(aRet,cCboX)
			aAdd(aRet,lRet)
		EndCase
//Bloco de validacao da importacao
	else
		cCodCbo := "999999"
		cCodEsp	:= "999"
		aAdd(aRet,cCodEsp)
		aAdd(aRet,cCodCbo)
		
	endif
return aRet