Page tree

Ponto de entrada PLSAUT02 - Cobertura de Procedimentos

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Saúde

Módulo:

Plano de Saúde

Rotina:

Rotina(s) envolvida(s)

Nome Técnico

Atendimento (Liberação/SADT/Odonto)

PLSA090

Autorização de Internação

PLSA092
Anexos ClinicosPLSA09A
Digitação de Contas MedicasPLSA498
Portal do PrestadorPLSWEB

Ponto de Entrada:

PLSAUT02

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

Todas

Sistema(s) Operacional(is):

Todos

Descrição

Ponto de entrada utilizado para criar validações de cobertura de procedimentos adicionais na checagem de regras de elegibilidade do Beneficiário, além de também possibilitar as validações já realizadas pelo sistema até o momento da execução do ponto de entrada.

Importante: O Evento de chamada do ponto de entrada pode entrar em recursividade caso a cobertura do beneficiário tenha sido negada devido a regra de carência (criticas "002 - Procedimento em carência para este usuário." e "005 - Procedimento em carência para este usuário (PREEXISTENCIA)."). Como existe a possibilidade do usuário ter sofrido transferências ao longo do tempo de contrato, o sistema utiliza o passo recursivo para avaliar se a carência foi cumprida em matriculas antigas do usuário. Portanto, nesse caso, o parâmetro referente a matrícula pode ser diferente da informada no cabeçalho da guia.

O retorno da função deve respeitar a seguinte estrutura:

aRet := {lOK, aCriticas,cNivAut,cNivCri}

Onde:

PosiçãoConteúdoDescrição
[1]lOkAutorizada ou não (.T. ou .F.)
[2]

 

 

Estado lOkConteúdo
TruecNivel
FalseaCriticas

Essa posição é definida de acordo com o conteúdo da primeira posição (lOk)

cNivelaCriticas

Tipo de autorização

0 - Dispensa Autorização
1 - Automática
2 - Guia Operadora
3 - Auditoria
4 - Guia Empresa
5 - Guia Empresa/Operadora
6 - Avaliação Contratual

Matriz com a seguinte estrutura

[1] Código da Critica - Caracter
[2] Descrição da Critica - Caracter
[3] Informação da critica - Caracter
[4] Nível - Caracter
[5] Tipo - Caracter
[6] Cod.TpProced - Caracter
[7] Código do Procedimento - Caracter

[3]cAliCamAlias do caminho da critica
[4]cChaveAuxChave do caminho da critica

Importante: O retorno deve respeitar a mesma estrutura do primeiro parâmetro de entrada, a incorreta devolução do retorno pelo ponto de entrada pode ocasionar em inconsistências na base de dados e erros na execução do programa.

Ponto de Entrada 

Eventos:

Checagem de cobertura para autorização de procedimentos

Programa Fonte:

PLSXAUT.PRW

Função:

PLSAUTP - Autorização de Procedimentos

Parâmetros de entrada:
NomeTipoDescrição
aRetcaracterRetorno padrão da função até o momento da execução do Ponto de Entrada
dDatadataData de execução do procedimento
cHoracaracterHora de execução do procedimento
cCdTbPdcaracterCódigo da tabela
cCodProcaracterCódigo do procedimento
nQtdnumericoQuantidade Executada
cCidcaracterCID do atendimento
cLOCALExeccaracterLocal de execução ("1" - Autorização/"2" - Processamento de Conta) 
cOpeSolcaracterOperadora do solicitante
cCodPRFSolcaracterCódigo do profissional Solicitante
cCodIntcaracterCódigo da Operadora
cCodRdacaracterCódigo do Prestador
cCodLoccaracterCódigo do local de Atendimento no Prestador
cLocalcaracterLocal de Atendimento
cCodEspcaracterCódigo da especialidade
cOpeUsrcaracterOperadora do Beneficiário
cMatrUsrcaracterMatricula do Beneficiário
cPadIntcaracterApartamento ou enfermaria, conforme tabela de cadastro e atributo do produto
aDadUsrarrayDados do Beneficiario
aDadRdaarrayDados do Prestador
cTpLocExeccaracterLocal de validação da critica ("1/4" - Remote Protheus/ "2" - WEB/ "3" - POS/ "5" - XML)
cAteRNAcaracterIndica se é atendimento de recém-nascido ("0" - Não/ "1" - Sim)

Retorno:

Nome

Tipo

Descrição

Obrigatório

 aRet

array

Retorno com as informações do nível de autorização/critica do procedimento.
Maiores detalhes da estrutura do array, disponível na descrição do artigo. 

Sim

Exemplo de implementação:
#include 'protheus.ch'

user function PLSAUT02()
	//Parametros do ponto de entrada
	local aRet			:= ParamIXB[01]	//Criticas ja avaliadas
	local dData			:= ParamIXB[02]	//Data de execução do procedimento
	local cHora			:= ParamIXB[03]	//Hora de execução do procedimento
	local cCdTbPd		:= ParamIXB[04]	//Codigo da tabela
	local cCodPro		:= ParamIXB[05]	//Codigo do procedimento
	local nQtd			:= ParamIXB[06]	//Quantidade Executada
	local cCid			:= ParamIXB[07]	//CID do atendimento
	local cLOCALExec	:= ParamIXB[08]	//Local de execução ("1" - Autorizacao/"2" - Processamento de Conta)	
	local cOpeSol		:= ParamIXB[09]	//Operadora do solicitante
	local cCodPRFSol	:= ParamIXB[10]	//Codigo do profissional Solicitante
	local cCodInt		:= ParamIXB[11]	//Codigo da Operadora
	local cCodRda		:= ParamIXB[12]	//Codigo do Prestador
	local cCodLoc		:= ParamIXB[13]	//Codigo do local de Atendimento no Prestador
	local cLocal		:= ParamIXB[14]	//Local de Atendimento
	local cCodEsp		:= ParamIXB[15]	//Codigo da especialidade
	local cOpeUsr		:= ParamIXB[16]	//Operadora do Beneficiario
	local cMatrUsr		:= ParamIXB[17]	//Matricula do Beneficiario
	local cPadInt		:= ParamIXB[18]	//Apto ou enfermaria, conforme tabela de cadastro e atributo do produto
	local aDadUsr		:= ParamIXB[19]	//Dados do Beneficiario
	local aDadRda		:= ParamIXB[20]	//Dados do Prestador
	local cTpLocExec	:= ParamIXB[21]	//Local de validação da critica ("1/4" Remote Protheus  "2" WEB  "3" POS "5" XML)
	local cAteRNA		:= ParamIXB[22]	//Indica se eh atendimento de recém-nascido
	
	local lSuaRegra 	:= .T.			//Variavel para controle da regra especifica
	local aCriticas  	:= {}			//Array com o complemento da critica especifica
	local cNivel		:= ""			//Nivel da critica
	local cCodCriEsp 	:= "799"        //Codigo de sua critica especifica... 
	local cDesCriEsp 	:= "TESTE"  	//Descricao de sua critica especifica...

	//A funcao PLSPOSGLO retorna se ela esta ativa ou nao de acordo com o local de execucao
	//e tambem cria a critica de acordo com o que foi informado nos parametros 2 e 3
	//caso a mesma nao exista na tabela BCT 
	If  PLSPOSGLO(PLSINTPAD(),cCodCriEsp,cDesCriEsp,cLOCALExec)

		//Define qual o nivel de autorizacao/critica da regra 
		cNivel := "ZAA"

		//TODO - Implementar codigo para controlar a variavel que define se a critica sera ou nao submetida
		/*Tratar variavel 'lSuaRegra' aqui
		Exemplo:
		lSuaRegra := MsgYesNo("AUTORIZAR OU NAO?")*/

		// Vou criticar/autorizar de acordo com a regra tratada acima
		if !lSuaRegra 
			//Aqui devo fazer a montagem do aRet de acordo com a descricao do artigo
			aAdd(aCriticas,{cCodCriEsp,cDesCriEsp,'',BCT->BCT_NIVEL,BCT->BCT_TIPO,cCdTbPd,cCodPro})
			aRet := {.F.,aCriticas,cNivel,'',.F.}
		else
			aRet := {.T.,'',cNivel,''}
		endif  

	endif

return(aRet)