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:
Campo | Descrição | Conteúdo |
---|---|---|
BA0_CARDOM | SubDomain | Informe o subdomain de acesso a Carol |
BA0_CARORG | OrgSubDomain | Informe o orgSubdomain de acesso a Carol |
BA0_CARURL | URL Carol | Informe a URL da API da Carol |
BA0_CARCID | Connector ID | Informe o connector ID de acesso a Carol |
BA0_CARSIS | Usuar. Sist. | Informe o usuário de sistema que realizará as transferência de Departamento na integração da Auditoria com a Carol |
BA0_DEPRET | Dep. Retorno | Informe 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âmetro | MV_SETORAT |
---|---|
Tipo | Caracter |
Conteúdo | Indique o departamento parametrizado para análise da Carol |
Descrição | Indique o codigo do setor que ira receber primeiro as guias que serao analisadas e/ou auditadas. |
Parâmetro | MV_PCARLOG |
---|---|
Tipo | Caracter |
Conteúdo | 0 ou 1 |
Descrição | Indica se ativa o log de informações no processo de integração Auditoria PLS x Carol |
Parâmetro | MV_PLCRCAR |
---|---|
Tipo | Caracter |
Conteúdo | Informe uma crítica da tabela BCT (BCT_PROPRI+BCT_CODGLO) |
Descrição | Motivo 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âmetros | Operadora - Indique a código da Operadora parametrizada |
Ambiente | Ambiente utilizado |
Empresa/Filial | Empresa/Filial utilizados |
Módulo | 33 (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:
Quando um evento for negado, o motivo TISS utilizado (B72_MOTIVO) será o definido no parâmetro MV_PLCRCAR.IMPORTANTE!
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
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARDOM |
X3_TIPO | Caracter |
X3_TAMANHO | 50 |
X3_DECIMAL | 0 |
X3_TITULO | SubDomain |
X3_DESCRI | Carol SubDomain |
X3_PICTURE | |
X3_F3 | |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARORG |
X3_TIPO | Caracter |
X3_TAMANHO | 50 |
X3_DECIMAL | 0 |
X3_TITULO | OrgSubDomain |
X3_DESCRI | Carol OrgSubDomain |
X3_PICTURE | |
X3_F3 | |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARURL |
X3_TIPO | Caracter |
X3_TAMANHO | 100 |
X3_DECIMAL | 0 |
X3_TITULO | URL Carol |
X3_DESCRI | URL Carol |
X3_PICTURE | |
X3_F3 | |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARCID |
X3_TIPO | Caracter |
X3_TAMANHO | 50 |
X3_DECIMAL | 0 |
X3_TITULO | Connector ID |
X3_DESCRI | Carol Connect ID |
X3_PICTURE | |
X3_F3 | |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARSIS |
X3_TIPO | Caracter |
X3_TAMANHO | 6 |
X3_DECIMAL | 0 |
X3_TITULO | Usuar. Sist. |
X3_DESCRI | Usuario Sistema |
X3_PICTURE | @! |
X3_F3 | BBCPLS |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_DEPRET |
X3_TIPO | Caracter |
X3_TAMANHO | 3 |
X3_DECIMAL | 0 |
X3_TITULO | Dep. Retorno |
X3_DESCRI | Departamento Retorno |
X3_PICTURE | @! |
X3_F3 | BL |
X3_BROWSE | Não |
X3_VISUAL | Alterar |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
Campo | Conteúdo |
---|---|
X3_ARQUIV | BA0 |
X3_CAMPO | BA0_CARTOK |
X3_TIPO | Caracter |
X3_TAMANHO | 80 |
X3_DECIMAL | 0 |
X3_TITULO | Token Acesso |
X3_DESCRI | Token Acesso |
X3_PICTURE | |
X3_F3 | |
X3_BROWSE | Não |
X3_VISUAL | Visual |
X3_CONTEXT | Real |
X3_FOLDER | 3 |
- Folders SXA
Campo | Conteúdo |
---|---|
XA_ALIAS | BA0 |
XA_ORDEM | 3 |
XA_DESCRIC | Integracao 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 |
---|---|
Fonte | PLAudCarol.PRW |
Parâmetros | paramixb[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 |
#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 Entrada | PCARAUD2 |
---|---|
Fonte | PLAudCarol.PRW |
Parâmetros | paramixb[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. |
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.
#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