Árvore de páginas


01. DADOS GERAIS

Linha de Produto:Microsiga Protheus
Segmento:Saúde
Módulo:SIGAPLS
Função:

PLSA790V

Story:

DSAUBE-11033


02. SITUAÇÃO/REQUISITO

Necessidade de criar a integração Auditoria PLS x Carol.

03. SOLUÇÃO

Implementada melhoria com a criação da integração Auditoria PLS x Carol. Quando o Schedule de configuração estiver parametrizado, o PLS realiza a integração com a Carol e atualiza as guias que estão em estudo de acordo com o resultado da Auditoria realizada na Carol.

03. PASSOS INICIAIS

  • Passo 1 - Configurações Plano de Saúde (SIGAPLS)
  • Passo 2 - Configurador (SIGACFG)


  • Crie os campos e aba descritos na sessão 07-ALTERAÇÕES DICIONÁRIO DE DADOS.
  • Acesse Plano de Saúde/Operadora/Operadora de Saúde (PLSA010). Selecione a Operadora que será parametrizada e clique em Alterar
  • Acesse a Aba Integração Carol, preencha os campos:


Exemplo de Cadastro:

CampoDescrição Conteúdo
BA0_CARDOMSubDomainInforme o subdomain de acesso a Carol
BA0_CARORGOrgSubDomainInforme o orgSubdomain de acesso a Carol
BA0_CARURLURL CarolInforme a URL da API da Carol
BA0_CARCIDConnector IDInforme o connector ID de acesso a Carol
BA0_CARSISUsuar. Sist.Informe o usuário de sistema que realizará as transferência de Departamento na integração da Auditoria com a Carol
BA0_DEPRETDep. RetornoInforme o departamento que a guia será transferida quando a Carol retornar que uma guia deve ser auditada no SIGAPLS

 Obs: Para saber os dados de acesso de sua Operadora, por gentileza entrar em contato com a equipe responsável pela Carol.

  • Confirme a alteração.


TOKEN DE ACESSO

  • Para realizar a comunicação com a Carol, é necessário solicitar o Token de Acesso. Clique em Outras Ações/Acesso Carol.

Exemplo de preenchimento:

  • Informe o usuário e senha de acesso a Carol, clique em Salvar. O sistema comunica com a Carol solicitando o token de acesso da integração. O mesmo é gravado criptografado no campo Token Acesso (BA0_CARTOK).
  • Acesse o Configurador (SIGACFG), Ambiente/Cadastros/Parâmetros:
  • Crie/Configure os parâmetros abaixo:
ParâmetroMV_SETORAT
TipoCaracter
ConteúdoIndique o departamento parametrizado para análise da Carol
DescriçãoIndique o codigo do setor que ira receber primeiro as guias que serao analisadas e/ou auditadas.  



ParâmetroMV_PCARLOG
TipoCaracter
Conteúdo0 ou 1
DescriçãoIndica se ativa o log de informações no processo de integração Auditoria PLS x Carol



ParâmetroMV_PLCRCAR
TipoCaracter
ConteúdoInforme uma crítica da tabela BCT (BCT_PROPRI+BCT_CODGLO)
DescriçãoMotivo de crítica padrão para eventos negados na integração Auditoria PLS x Carol


  • Acesse Ambiente/Schedule/Schedule.
  • Na opção Agendamentos/Cadastro selecione a opção para incluir um novo Schedule.
  • Na opção Recorrência, o prazo que será executado a integração.
  • Realize o cadastro de acordo com a sua necessidade, indicando:
Rotina PLAUDCARSC()
ParâmetrosOperadora - Indique a código da Operadora parametrizada
AmbienteAmbiente utilizado
Empresa/FilialEmpresa/Filial utilizados 
Módulo33 (Plano de Saúde)



Exemplo de Cadastro:



05. FUNCIONAMENTO DA INTEGRAÇÃO

No Plano de Saúde (SIGAPLS), ao criar uma guia que deva ser analisada pela Auditoria, o registro de análise (B53) é encaminhado para o Departamento de Análise da Carol definido no parâmetro MV_SETORAT (as guias serão encaminhadas de todas as fontes: solicitações Remote e Portal do Prestador).

Guia de liberação encaminhada para a Auditoria com 2 eventos:


A guia é apresentada na Auditoria por Guia (PLSA790V). É gerado um registro de encaminhamento da guia para o setor indicado no parâmetro MV_SETORAT. Caso seja solicitada a análise por um usuário não cadastrado no Departamento encaminhado, a mensagem impeditiva abaixo é apresentada:


Esta guia está pendente da análise pela Carol. De acordo com o Schedule parametrizado no Passo 2 deste documento, o sistema vai solicitar para a Carol o status de todas as guias que estão pendentes de análise no departamento indicado no parâmetro MV_SETORAT. Ao receber uma resposta da Carol, o sistema pode tomar 3 ações:

  • Autorizar o Evento
  • Negar o Evento
  • Indicar que deve ser realizada a análise do auditor usuário do SIGAPLS.


Caso algum algum dos eventos da guia esteja pendente de resposta, a guia fica em estado de espera no departamento da Carol. Recebendo a resposta de todos os eventos pendentes na auditoria, o sistema vai tomar duas ações:

  • Se todos os eventos forem autorizados/negados, a guia e auditoria são atualizados.
  • Se pelo menos um dos eventos receber a resposta que precisa da análise do auditor usuário do SIGAPLS, a guia é transferida para o departamento indicado no campo Dep. Retorno (BA0_DEPRET). Este departamento deve estar parametrizado para o usuário auditor.


No exemplo da guia acima, ao realizar a comunicação, a Carol indicou que o evento 001 foi autorizado, e o 002 transferido para análise do auditor do SIGAPLS. Assim, a guia foi transferida para o departamento indicado no parâmetro


Registro de transferência:


Ao realizar análise da guia, é apresentado somente o evento pendente 002:


O evento 001 foi autorizado:



IMPORTANTE!

Quando um evento for negado, o motivo TISS utilizado (B72_MOTIVO) será o definido no parâmetro MV_PLCRCAR.


06. LOG DO PROCESSO


Caso o cliente deseje realizar um rastreamento de toda a comunicação, é possível ativando o parâmetro MV_PCARLOG no configurador (0=Desativa/1=Ativa). O arquivo será gerado no ProtheusData/logpls/ pasta com a data da execução do processo. O arquivo gerado é o plaudcarol.log

Exemplo de log gerado:


--------------------------------------------------
Iniciando Integração Auditoria PLS x Carol
--------------------------------------------------
[03/03/2020-14:27:31] *** Iniciando processo para comunicacao com a Carol ***
[03/03/2020-14:27:31] Realizando a comunicacao POST
[03/03/2020-14:27:31] URL: https://teste.carol.ai/api/v2/queries/named/getFormById?indexType=MASTER&pageSize=50&sortOrder=ASC&scrollable=true&fields=mdmGoldenFieldAndValues
[03/03/2020-14:27:31] JSON{"medicalformids":["000120191000051637","000120191000077268"]}
[03/03/2020-14:27:32] Comunicacao com a Carol realizada com sucesso.
[03/03/2020-14:27:32] Json resposta: {"count":10,"totalHits":10,"took":7,"scrollId":"DnF1ZXJ5VGhlbkZldGNoBQAAAAC-ZjpZFkJ5QTVzM1dXU2hDWFlOa21RLU82YXcAAAAAuygn4hZRUHFFWENzS1JBdVVISAJiopjDIoasjdoasAAALz0_r8WY3VNWkNtSTRSMEdLVDNSczJ4bkgzUQAAAAC7aIWgFkhGTFoycmxHVE9pakdnSVlabUZhX2cAAAAAvYZHoRZLMi1pdFlXcFN2Q2pnZ1lpcWVqVURR","hits":[{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307120","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637001","auditedbycarol":true,"rejectionprobability":0.9826334118843079,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000077268","quantityapproved":1,"procedurecode":"30101468","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000077268002","auditedbycarol":true,"rejectionprobability":1.6050724661909044E-4,"risk":"low","holdout":false,"modelvsreality":"low/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307031","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637004","auditedbycarol":true,"rejectionprobability":0.9827766418457031,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30312094","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637008","auditedbycarol":true,"rejectionprobability":0.9787543416023254,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307090","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637003","auditedbycarol":true,"rejectionprobability":0.9831671118736267,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307058","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637002","auditedbycarol":true,"rejectionprobability":0.9841327667236328,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307066","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637005","auditedbycarol":true,"rejectionprobability":0.9826933145523071,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30307082","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637006","auditedbycarol":true,"rejectionprobability":0.9787543416023254,"risk":"high","holdout":false,"modelvsreality":"high/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000077268","quantityapproved":1,"procedurecode":"30101077","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000077268001","auditedbycarol":true,"rejectionprobability":0.026684921234846115,"risk":"low","holdout":false,"modelvsreality":"low/approved"}},{"mdmGoldenFieldAndValues":{"lastupdatedate":"2020-02-11T19:04:21.000Z","quantityrequested":1,"empty_lastupdatedate":false,"medicalformid":"000120191000051637","quantityapproved":1,"procedurecode":"30306027","statusprocedurerequest":"pending_approved_operadora","requestid":"000120191000051637007","auditedbycarol":true,"rejectionprobability":0.9683769345283508,"risk":"medium","holdout":false,"modelvsreality":"medium/approved"}}],"aggs":{}}
[03/03/2020-14:27:32] *** Finalizando processo para comunicacao com a Carol ***
--------------------------------------------------
[03/03/2020-14:27:32] *** Iniciando processo de atualizacao de guias ***
[03/03/2020-14:27:38] 000120200300000014001 - Evento autorizado com sucesso.
[03/03/2020-14:27:38] 000120200300000014002 - Evento encaminhado para analise do auditor.
[03/03/2020-14:27:38] *** Finalizando processo de atualizacao de guias ***
--------------------------------------------------
[03/03/2020-14:27:38] *** Iniciando transferencias entre departamentos ***
[03/03/2020-14:27:39] 000120200300000014 - Guia transferida para o setor 001 com sucesso.
[03/03/2020-14:27:39] *** Finalizando transferencias entre departamentos ***


O primeiro bloco do log traz a comunicação realizada e o Jsons enviados e recebidos. O segundo e terceiro blocos trazem a atualização das guias e transferências entre departamentos respectivamente.


07. ALTERAÇÕES DICIONÁRIOS DE DADOS


  • Campos SX3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARDOM
X3_TIPOCaracter
X3_TAMANHO50
X3_DECIMAL0
X3_TITULOSubDomain
X3_DESCRICarol SubDomain
X3_PICTURE
X3_F3
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARORG
X3_TIPOCaracter
X3_TAMANHO50
X3_DECIMAL0
X3_TITULOOrgSubDomain
X3_DESCRICarol OrgSubDomain
X3_PICTURE
X3_F3
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARURL
X3_TIPOCaracter
X3_TAMANHO100
X3_DECIMAL0
X3_TITULOURL Carol
X3_DESCRIURL Carol
X3_PICTURE
X3_F3
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARCID
X3_TIPOCaracter
X3_TAMANHO50
X3_DECIMAL0
X3_TITULOConnector ID
X3_DESCRICarol Connect ID
X3_PICTURE
X3_F3
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARSIS
X3_TIPOCaracter
X3_TAMANHO6
X3_DECIMAL0
X3_TITULOUsuar. Sist.
X3_DESCRIUsuario Sistema
X3_PICTURE@!
X3_F3BBCPLS
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_DEPRET
X3_TIPOCaracter
X3_TAMANHO3
X3_DECIMAL0
X3_TITULODep. Retorno
X3_DESCRIDepartamento Retorno
X3_PICTURE@!
X3_F3BL
X3_BROWSENão
X3_VISUALAlterar
X3_CONTEXTReal
X3_FOLDER3
CampoConteúdo
X3_ARQUIVBA0
X3_CAMPOBA0_CARTOK
X3_TIPOCaracter
X3_TAMANHO80
X3_DECIMAL0
X3_TITULOToken Acesso
X3_DESCRIToken Acesso
X3_PICTURE
X3_F3
X3_BROWSENão
X3_VISUALVisual
X3_CONTEXTReal
X3_FOLDER

3


  • Folders SXA
CampoConteúdo
XA_ALIASBA0
XA_ORDEM3
XA_DESCRICIntegracao Carol


08. PONTOS DE ENTRADA


O Ponto de entrada PCARAUD1 permite manipular o retorno de um evento auditado pela Carol. O ponto pode receber 3 modelos de retorno:

  • Retornando o array aRet vazio, o sistema assume as condições já analisadas pela Carol/PLS.
  • Retornando .T. na primeira posição do Array, o sistema vai gravar o evento utilizando o modelo padrão e nas posições posteriores, é possível manipular os dados desejados.
  • Retornando .F. na primeira posição do Array, o sistema não vai gravar o evento utilizando o modelo padrão, sendo necessário realizar toda a gravação de dados no ponto de entrada.
Ponto de Entrada PCARAUD1
FontePLAudCarol.PRW
Parâmetrosparamixb[01] - cRequestID - Chave da Guia + Sequen
paramixb[02] - lFind - Se o evento foi encontrado pelo PLS
paramixb[03] - cAlias - Alias do cabeçalho da guia
paramixb[04] - cAliasIte - Alias do evento
paramixb[05] - cCodPad - Tabela Padrão
paramixb[06] - cCodPro - Código do Evento
paramixb[07] - cSeqPro - Sequen do Evento
paramixb[08] - cCodGlo - Código da glosa encontrada no evento
paramixb[09] - cParecer - Parecer da Guia 0=Autorizado / 1=Negado / 2=Encaminha para Auditor
paramixb[10] - nQtdSol - Quantidade solicitada
paramixb[11] - nQtdAut - Quantidade autorizada
paramixb[12] - cMotivo - Motivo da critica
paramixb[13] - cObsAna - Observação da análise
Retorno

Array de dados contendo:

aRet[01] - Boolean - Indica utiliza a gravação padrão do sistema
aRet[02] - lFind - Indica que o evento foi encontrado
aRet[03] - cCodPad - Tabela Padrão
aRet[04] - cCodPro - Código do Evento
aRet[05] - cSeqPro - Sequen do Evento
aRet[06] - cCodGlo - Código da glosa encontrada no evento
aRet[07] - cParecer - Parecer da Guia 0=Autorizado / 1=Negado / 2=Encaminha para Auditor
aRet[08] - nQtdSol - Quantidade solicitada
aRet[09] - nQtdAut - Quantidade autorizada
aRet[10] - cMotivo - Motivo da critica
aRet[11] - cObsAna - Observação da analise



Exemplo do Ponto de Entrada
#INCLUDE "PROTHEUS.CH"

User Function PCARAUD1()

Local cRequestID := paramixb[01] //Chave da Guia + Sequen
Local lFind := paramixb[02] //Se o evento foi encontrado pelo PLS
Local cAlias := paramixb[03] //Alias do cabecalho da guia
Local cAliasIte := paramixb[04] //Alias do evento
Local cCodPad := paramixb[05] //Tabela Padrao
Local cCodPro := paramixb[06] //Codigo do Evento
Local cSeqPro := paramixb[07] //Sequen
Local cCodGlo := paramixb[08] //Codigo da glosa encontrada no evento
Local cParecer := paramixb[09] //Parecer da Guia 0=Autorizado / 1=Negado / 2=Encaminha para Auditor
Local nQtdSol := paramixb[10] //Quantidade solicitada
Local nQtdAut := paramixb[11] //Quantidade autorizada
Local cMotivo := paramixb[12] //Motivo da critica
Local cObsAna := paramixb[13] //Observacao da analise
Local aRet := {}

/* ---------------------------
Array de Retorno

Posicao 01 - lGrvPadrao
Posicao 02 - lFind
Posicao 03 - cCodPad
Posicao 04 - cCodPro
Posicao 05 - cSeqPro
Posicao 06 - cCodGlo
Posicao 07 - cParecer
Posicao 08 - nQtdSol
Posicao 09 - nQtdAut
Posicao 10 - cMotivo
Posicao 11 - cObsAna
--------------------------- */

//Utiliza a gravacao padrao do PLS, alterar os dados desejados alterando as variaveis abaixo
Aadd(aRet,.T.)
Aadd(aRet,lFind)
Aadd(aRet,cCodPad)
Aadd(aRet,cCodPro)
Aadd(aRet,cSeqPro)
Aadd(aRet,cCodGlo)
Aadd(aRet,cParecer)
Aadd(aRet,nQtdSol)
Aadd(aRet,nQtdAut)
Aadd(aRet,cMotivo)
Aadd(aRet,cObsAna)

//Retornando aRet vazio, o PLS ignora o resultado do PE e realiza a gravacao padrao
aRet := {}

//Indica que vai realizar a gravacao manual do Registro (Importante: toda a gravacao referente ao evento informado deve ser realizado neste ponto)
Aadd(aRet,.F.)

Return aRet



O Ponto de entrada PCARAUD2 permite manipular a transferência de uma guia para um departamento quanto todos os eventos foram respondidos pela Carol. O ponto pode receber 3 modelos de retorno:

  • Retornando o array aRet vazio, o sistema assume as condições já analisadas pela Carol/PLS.
  • Retornando .T. na primeira posição do Array, o sistema realiza a transferência para o departamento definido na segunda posição do array.
  • Retornando .F. na primeira posição do Array, a guia não é transferida.
Ponto de EntradaPCARAUD2
FontePLAudCarol.PRW
Parâmetrosparamixb[1] - cGuia - Número da Guia
paramixb[2] - cAliCab - Alias do cabeçãlho
paramixb[3] - cAliEve - Alias dos eventos
paramixb[4] - lTransfere - Indica o sistema iria transferir a guia
paramixb[5] - cDepartRet - Departamento para qual o sistema realizaria a transferência
paramixb[6] - nQtdEncam - Quantidade de eventos indicados no JSON que devem ser transferidos
paramixb[7] - nQtdAudit - Quantidade de eventos pendentes em auditoria na guia
Retorno

Array de dados contendo:

aRet[01] - Boolean - Indica se o sistema deve transferir a guia.
aRet[02] - cDepartRet - Indica que o departamento que deve ser realizada a transferência.


Importante: este ponto será acionado somente se pelo menos um dos eventos da guia estiver indicado como Análise do Auditor do PLS no Json de resposta.



Exemplo do Ponto de Entrada
#INCLUDE "PROTHEUS.CH"

User Function PCARAUD2()

Local cGuia := paramixb[1] 
Local cAliCab := paramixb[2]
Local cAliEve := paramixb[3]
Local lTransfere := paramixb[4]
Local cDepartRet := paramixb[5]
Local nQtdEncam := paramixb[6]
Local nQtdAudit := paramixb[7]
Local aRet := {}

/* 
---------------------------
Array de Retorno

Posicao 1 - lTransfere
Posicao 2 - cDepartRet
---------------------------
*/

//Utiliza a gravacao padrao do PLS, e possivel indicar se a guia vai ser transferida e para qual departamento
Aadd(aRet,lTransfere)
Aadd(aRet,cDepartRet)

//Retornando aRet vazio, o PLS ignora o resultado do PE e realiza a gravacao padrao
aRet := {}

Return aRet