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: | Rotina | Nome Técnico |
---|
Funções Genéricas de Gravação de Arquivos | PLSXMOV | Processamento do XML | PLSA973L | Gravação do XML | PLSA973 |
|
Função: | Programa Fonte | Função |
---|
PLSA973 | PlTrCBOIMP | PLSA973L | PlTrCBOSUB |
|
Retorno: | Nome | Tipo | Descrição | Obrigatório | cCodEsp | Caracter | Novo código de Especialidade que sera utilizado após as validações do Ponto de Entrada | Sim | 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:
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:
#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,cCodCbo)
aAdd(aRet,cCodEsp)
aAdd(aRet,lRet)
elseif cCboX == "225105"
cCodCbo := "225103"
cCodEsp := "035"
lRet := .F.
aAdd(aRet,cCodCbo)
aAdd(aRet,cCodEsp)
aAdd(aRet,lRet)
else
aAdd(aRet,cCboX)
aAdd(aRet,cEspX)
aAdd(aRet,lRet)
endif
//Bloco de validacao critica 791
Case cCodGlo == "791"
lRet := .F.
aAdd(aRet,cCboX)
aAdd(aRet,cEspX)
aAdd(aRet,lRet)
Otherwise
aAdd(aRet,cCboX)
aAdd(aRet,cEspX)
aAdd(aRet,lRet)
EndCase
//Bloco de validacao da importacao
else
cCodCbo := "999999"
cCodEsp := "999"
aAdd(aRet,cCodCbo)
aAdd(aRet,cCodEsp)
endif
return aRet