Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto | Microsiga Protheus | Módulo | SIGAPLS |
Segmento Executor | Saúde | ||
Chamado2 | TUTGB8 | ||
País | (x) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||
Outros | <Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Objetivo
O DIOPS é o Documento de Informações Periódicas das Operadoras de Planos de Saúde, que devem ser enviados trimestralmente à ANS. As informações que compõem este documento são: quadros cadastrais, quadros financeiros, quadros gerenciais e informações gerais. O documento tem por objetivo fornecer condições para que a DIOPS (ANS) possa efetuar o controle, o monitoramento e o acompanhamento das operadoras.
Um novo padrão foi estabelecido pela ANS para recebimento dessas informações. O padrão definido segue os conceitos da Troca de Informação em Saúde Suplementar (TISS), cujos dados são enviados pelas operadoras para a ANS em arquivos XML.
A ANS verifica e valida o conteúdo desses arquivos através do seu site, no entanto, algumas ferramentas estão disponíveis para execução dessa tarefa antes do envio, como o DIOPS X-Press. Com esta ferramenta, não é necessário submeter o XML ao site da ANS, permitindo que erros sejam corrigidos antes do envio à ANS.
Além disso, a ferramenta permite a importação de arquivos com layouts pré-definidos ou digitação das informações manualmente em todos os quadros. Essa especificação contempla todas as informações necessárias para o desenvolvimento do relatório para preenchimento da Intercâmbio Eventual no DIOPS X-PressEventual.
Definição da Regra de Negócio
Intercâmbio Eventual corresponde à troca de atendimentos, aos beneficiários, realizados entre operadoras. A ANS, desde 2013, exige a identificação dos totais dos intercâmbios eventuais a receber e a pagar (Médico Hospitalar e Odontológica).
Deverá ser criado um arquivo em formato CSV de acordo com Layout abaixo:
Código Operadora/CNPJ;Tipo Cobertura;Saldo;Data Vencimento;Tipo
Exemplo:
000583;H;200,27;31/03/2013;AP
Onde:
- Código Operadora /CNPJ= Código da Operadora ou CNPJ
- Tipo Cobertura = Tipo de Cobertura (H Hospitalar ou O Odontológica)
- Saldo = Valor do Saldo
- Data Vencimento = Data de Vencimento Real
- Tipo = "AR" para a Receber, e "AP" para a Pagar
Os campos deverão ser separados por ";", os campos numéricos não deverão ter caracter separador de milhar e a parte decimal deverá ser separada por ",".
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
PLSDINTER | Inclusão | Miscelânea -> ANS -> Relatórios DIOPS -> Intercâmbio Eventual |
Premissa: para emissão do arquivo, as configurações contábeis devem estar configuradasTodas as informações devem estar contabilizadas, independentes se gerou título ou não.
- Criar novo fonte PLSDINTER cuja funcionalidade é gerar o arquivo CSV resultante desta especificação.
- Criar novo grupo de perguntas PLSDINTER contendo as seguintes opções:
- Data Referência
- Cód. Config. Livros
- Tipo: A Receber, A Pagar ou Ambos
- Realizar verificações no parâmetro do código do livro, utilizar a função CtbSetOf, para retornar os dados do Livro;
- Através das informações dos parâmetros e das contas contábeis, é possível buscar os dados seguindo realizando a seguinte busca:
Caso seja informado no parâmetro Contas a Receber ou Ambos:
- Deve-se realizar a busca inicial na tabela CT2 - Lançamentos Contábeis utilizando o campo CT2_CREDIT, para filtrar os registros de acordo com as contas (124119022 e 124129022) e realizar um relacionamento com a CV3 - Rastreamento Lançamento. Para fazer o relacionamento da tabela CT2 com a CV3, deve-se seguir a seguinte regra:
Relacionar a tabela CT2 com a CV3 pelo campo de relacionamento CV3_RECDES, que armazena o valor do RECNO da tabela CT2. Ou seja, rastreamos a CT2 na CV3 pelo RECNO da CT2 que fica armazenado no campo CV3_RECDES.
Caso encontre o RECNO da CT2 na CV3, verificar se a tabela de origem - CV3_TABORI - é igual a BM1 e recuperar a informação do campo CV3_RECORI, pois fica armazenado o RECNO da BM1 relacionada.
Posicionar na BM1, para recuperar as informações do título gerado na tabela SE1 - Contas a Receber. Para localizar o título, necessitamos das informações dos seguintes campos: BM1_PREFIX,BM1_NUMTIT,BM1_PARCEL,BM1_TIPTIT.- Lembre-se: podemos ter várias registros da BM1 relacionados a um único título, pois temos cobrança de mensalidade, de segunda via de carteira e outros lançamentos.
Antes de verificar na SE1, verificar se o número do título não está na tabela FI7 - Rastreamento CR, pelo número do título nos campos FI7_PRFORI+FI7_NUMORI+FI7_PARORI+FI7_TIPORI.
- Caso seja localizado o número do título nesta tabela, significa que o título original foi negociado e o original já foi baixado, sendo necessário então classificar a data de vencimento dos títulos pelos novos títulos gerados pela negociação.
- Como podemos parcelar um título em várias parcelas, verificar todas as ocorrências do título original na tabela FI7, por meio de um While, para encontrar os títulos filhos gerados.
- Logo, se encontrar o título na FI7, para localizar os novos títulos gerados dessa negociação na SE1, usar os valores dos campos FI7_PRFDES + FI7_NUMDES + FI7_PARDES + FI7_TIPDES para localizar os títulos.
Com a informação do título, localizar na SE1 o título e recuperar a informação do campo E1_VENCREA, campo que armazena o vencimento real do título, considerando dias úteis, feriados e outros.
- Ao localizar os títulos, os mesmos devem estar em aberto, ou seja, não foram baixados, deve considerar o retorno da função SALDOTIT, caso o retorno seja maior que zero. Considerar todos os registros que já foram contabilizados (E1_LA = "S").
- Para identificar o tipo de Cobertura ("H" ou "O"), através das Informações da tabela BM1 (BM1_CODINT+BM1_CODEMP+BM1_MATRIC+BM1_TIPUSU+BM1_TIPREG+BM1_DIGITO) localizar na tabela BA1 - Usuarios e verificar se os campos BA1_CODPLA e BA1_VERSAO estão preenchidos. Caso estejam preenchidos, localizar na tabela BI3 - Produtos de Saude (BA1_CODINT+BA1_CODPLA+BA1_VERSAO), caso o campo BI3->BI3_TPFORN == "1", a cobertura é "H", se o conteúdo for "0" a cobertura é "O".
- Caso os campos da tabela BA1 estejam em branco, buscar na tabela BA3 (BA1_CODINT+BA1_CODEMP+BA1_MATRIC+BA1_CONEMP+BA1_VERCON+BA1_SUBCON+BA1_VERSUB), fazer a mesma verificação na tabela BI3.
- Para identificar o código da operadora, através das informações da tabela BM1 localizar na tabela BT5 - Grupo de Empresa Contrato (BT5_CODINT+BT5_CODIGO+BT5_NUMCON+BT5_VERSAO), verificar o campo BT5_TIPOIN == "1" e utilizar o campo BT5_CODOPE.
- Deve-se realizar a busca inicial na tabela CT2 - Lançamentos Contábeis utilizando o campo CT2_CREDIT, para filtrar os registros de acordo com as contas (124119022 e 124129022) e realizar um relacionamento com a CV3 - Rastreamento Lançamento. Para fazer o relacionamento da tabela CT2 com a CV3, deve-se seguir a seguinte regra:
Caso seja informado no parâmetro Contas a Pagar ou Ambos:
- Deve-se realizar a busca inicial na tabela CT2 - Lançamentos Contábeis utilizando o campo CT2_DEBITO, para filtrar os registros de acordo com as contas (211119033 e 211129033) e realizar um relacionamento com a CV3 - Rastreamento Lançamento. Para fazer o relacionamento da tabela CT2 com a CV3, deve-se seguir a seguinte regra:
Relacionar a tabela CT2 com a CV3 pelo campo de relacionamento CV3_RECDES, que armazena o valor do RECNO da tabela CT2. Ou seja, rastreamos a CT2 na CV3 pelo RECNO da CT2 que fica armazenado no campo CV3_RECDES.
Caso encontre o RECNO da CT2 na CV3, verificar se a tabela de origem - CV3_TABORI - é igual a BD7 e recuperar a informação do campo CV3_RECORI, pois fica armazenado o RECNO da BD7 relacionada.
Posicionar na BD7, para recuperar as informações do título gerado na tabela SE2 - Contas a Pagar. Para localizar o título, necessitamos das informações dos seguintes campos: BD7_OPELOT+BD7_NUMLOTE.- Lembre-se: podemos ter várias registros da BD7 relacionados a um único título.
Verificar se o número do título não está na tabela FI8 - Rastreamento CP, pelo número do título nos campos FI8_FILIAL+FI8_PRFORI+FI8_NUMORI+FI8_PARORI+FI8_TIPORI.
- Caso seja localizado o número do título nesta tabela, significa que o título original foi negociado e o original já foi baixado, sendo necessário então classificar a data de vencimento dos títulos pelos novos títulos gerados pela negociação.
- Como podemos parcelar um título em várias parcelas, verificar todas as ocorrências do título original na tabela FI8, por meio de um While, para encontrar os títulos filhos gerados.
- Logo, se encontrar o título na FI8, para localizar os novos títulos gerados dessa negociação na SE2, usar os valores dos campos FI8_PRFDES + FI8_NUMDES + FI8_PARDES + FI8_TIPDES para localizar os títulos.
- Com a informação do título, localizar na SE2 o título e recuperar a informação do campo E2_VENCREA, campo que armazena o vencimento real do título, considerando dias úteis, feriados e outros. Na ausência do título, será usada a data cadastrada no calendário de pagamento. Para retornar a data correta, é necessário utilizar a função PLSXVLDCAL, passando como parâmetros: data de referência, código da operadora, exibe help (true ou false), código da tabela padrão (MV_PLSCDCO), código do procedimento (MV_PLSCDCO), executa em RPC (true ou false), código RDA, considera reembolso (true ou false) e se executa em job (true ou false).
- Ao localizar os títulos, os mesmos devem estar em aberto, ou seja, não foram baixados, deve considerar o retorno da função SALDOTIT, caso o retorno seja maior que zero. Considerar todos os registros que já foram contabilizados (E2_LA = "S").
- Caso não encontre o título, deve-se usar os campos BD7_DTDIG1 para vencimento e BD7_VLRAPR (caso seja maior que zero) ou BD7_VLRPAG para Saldo.
- Deve-se realizar a busca inicial na tabela CT2 - Lançamentos Contábeis utilizando o campo CT2_DEBITO, para filtrar os registros de acordo com as contas (211119033 e 211129033) e realizar um relacionamento com a CV3 - Rastreamento Lançamento. Para fazer o relacionamento da tabela CT2 com a CV3, deve-se seguir a seguinte regra:
- Código de configuração de livro (CTN) de acordo com o conteúdo do parâmetro;
- Visão gerencial (CTS) de acordo com o código de configuração do livro; Contas relacionadas (CT1) à Visão Gerencial. Deverá buscar o total das contas e demonstrar cada cobrança ou pagamento em aberto. A partir da data informada deverá localizar os lançamentos contábeis na CV3. Com base nos registros encontrados na tabela CV3, verificar o conteúdo do campo campo CV3_TABORI. Com base no conteúdo desse campo e a chave que está no campo CV3_KEY, localizar as guias. Com as informações da guia, verificar se possui títulos. Caso encontre o título, deve considerar somente se o mesmo estiver em aberto, ou seja, com o campo saldo maior que zero. Para saber se o título é a receber ou a pagar, através das informações do beneficiário, é necessário localizar o contrato. Com base nas informações do contrato, verificar se o campo BT5_TIPOIN está igual a "1", nesse caso a busca das informações no título, deve ser feita na tabela do contas a receber ("SE1") caso contrário a busca será na tabela do contas a pagar ("SE2"). O campo de valor a ser considerado é o BD5_VLRBPR.
- Para identificar o tipo de Cobertura ("H" ou "O"),
será necessário verificar o tipo da Guia. Caso tipo da Guia for Odontológica, gravar "O", para outros casos gravar "H". Ratear o valor total da operadora em Hospitalar e Odontológico.- através das Informações da tabela BD7 (BD7_CODOPE+BD7_CODLDP+BD7_CODPEG+BD7_NUMERO) localizar na tabela BD5 - (BD5_CODOPE+BD5_CODEMP+BD5_MATRIC+BD5_TIPREG+BD5_DIGITO) e ai buscar na tabela BA1 (BD5_CODOPE+BD5_CODEMP+BD5_MATRIC+BD5_TIPREG+BD5_DIGITO) e verificar se os campos BA1_CODPLA e BA1_VERSAO estão preenchidos. Caso estejam preenchidos, localizar na tabela BI3 - Produtos de Saude (BA1_CODINT+BA1_CODPLA+BA1_VERSAO), caso o campo BI3->BI3_TPFORN == "1", a cobertura é "H", se o conteúdo for "0" a cobertura é "O".
- Caso os campos da tabela BA1 estejam em branco, buscar na tabela BA3 (BA1_CODINT+BA1_CODEMP+BA1_MATRIC+BA1_CONEMP+BA1_VERCON+BA1_SUBCON+BA1_VERSUB), fazer a mesma verificação na tabela BI3.
- Para identificar o código da operadora, é necessário através do código da RDA (BD7_CODRDA), localizar seu cadastro na tabela BAU - (BAU_CODIGO), verificar o conteúdo do campo BAU_TIPPRE for
Verificar a Reciprocidade (Assumida ou Cedida) para gravar o código da operadora do intercâmbio:- igual ao conteúdo do parâmetro (MV_PLSTPIN), buscar no cadastro de
Operados - Operadoras ("BA0" - BA0_CODIDE+BA0_CODINT) com o código do campo BAU_CODOPE e gravar no arquivo o campo BA0_SUSEP.
Para casos de PDD, verificar se o título "pai" já foi baixado como "FT", e aí buscar os títulos "filhos" e realizar a mesma verificação de títulos em aberto.
Assumida: Com base nas informações da Guia (beneficiário), buscar no contrato se é intercâmbio (BT5_TIPOIN = "1"). Em caso afirmativo, considerar o código da operadora no campo BT5_CODANS (campo novo que armazena o código da operadora junto a ANS).
Cedida: Com base nas informações da Guia (beneficiário), buscar no contrato se não é intercâmbio (BT5_TIPOIN = "0"). Em caso afirmativo, considerar o código do prestador. Se a classe do prestador (BAU_TIPPRE) for - Criar função para gerar o arquivo CSV, com o layout já definido:
Exemplo de função para montagem do CSV:
cDirCsv := cGetFile("TOTVS","Selecione o diretorio",,"",.T.,GETF_OVERWRITEPROMPT + GETF_NETWORKDRIVE + GETF_LOCALHARD + GETF_RETDIRECTORY)
nFileCsv := FCreate(cDirCsv+"NOME_ARQUIVO.csv",0,,.F.)
If nFileCsv > 0
FWrite(nFileCSV,"Coluna 1;Coluna 2"+CRLF)
For nI := 1 TO Len(aFluxo)
FWrite(nFileCSV,aFluxo[nI,1]+";"+aFluxo[nI,2]+CRLF)
Next nI
FClose(nFileCSV)
Else
MsgInfo("Não foi possível criar o arquivo " + cDirCsv+cFileRPX,"TOTVS")
EndIf
Tabelas Utilizadas
- Utilizar a função (PLSGerCSV) para geração do arquivo CSV, passando os seguintes parâmetros:
- Nome do arquivo
- cabeçalho do arquivo
- array com os dados. Ex: {000583,H,200.27,31/03/2013,AP}
Tabelas Utilizadas
- SE1
- SE2
- BD7
- BAU
- BA0
- CT2
- BI3
- BA0
- FI7
- FI8
- CV3
- BM1
Dicionário de Dados
Arquivo ou Código do Script: BT5– Grupo de Empresa Contrato
Campo | BT5_CODOPE |
Tipo | Caracter |
Tamanho | 6 |
Valor Inicial |
|
Mandatório | Sim ( ) Não ( X ) |
Descrição | Codigo ANS - Reciprocidade Assumida |
Título | ANS Assumida |
Picture | 999999 |
Help de Campo | Codigo ANS para operadora de reciprocidade Assumida. |
Grupo de Perguntas
Nome: PLSDINTER
X1_ORDEM | 01 |
X1_PERGUNT | Data Inicialde Referência |
X1_TIPO | D |
X1_TAMANHO | 8 |
X1_GSC | G |
X1_VAR01 | MV_PAR01 |
X1_HELP | Data Inicial do intervalo para emissão do DIOPS de Intercâmbio Eventual |
X1_ORDEM | 02 | ||
X1_PERGUNT | Cód. Conf. Livros | ||
X1_TIPO | C | ||
X1_TAMANHO | 3 | ||
X1_GSC | G | ||
X1_VAR01 | MV_PAR03 | ||
X1_HELP | Código da configuração do livro que será considerado na busca de ativos vinculados para o DIOPS. | ||
X1_ | ORDEM03 | X1_PERGUNT | Tipo |
X1_TIPO | C | ||
X1_TAMANHO | 1 | ||
X1_GSC | C | ||
X1_VAR01 | MV_PAR04PAR02 | ||
X1_HELP | Informa o tipo de arquivo que será gerado: A Receber(1) ou A Pagar(2) ou Ambos(3) |
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|