Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

 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

 

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 configuradas. E o rastro da tabela CTL para gravar na CV3 cadastrado de acordo com os lançamentos padrões que serão utilizadosTodas as informações devem estar contabilizadas, independentes se gerou título ou não.

  1. Criar novo fonte PLSDINTER cuja funcionalidade é gerar o arquivo CSV resultante desta especificação.
  2. Criar novo grupo de perguntas PLSDINTER contendo as seguintes opções:
    1. Data ReferênciaCód. Config. Livros 
    2. Tipo: A Receber, A Pagar ou Ambos
  3. Realizar verificações no parâmetro do código do livro, utilizar a função CtbSetOf, para retornar os dados do Livro; 

  4. 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:

      1. 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 (124119022124129022) 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.
        1. 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.
      2. 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.

        1. 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.
        2. 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.
        3. 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.
      3. 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.

      4. 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").
      5. 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_CODPLABA1_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".
      6. 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.
      7. 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.

    Caso seja informado no parâmetro Contas a Pagar ou Ambos:

      1. 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 (211119033211129033) 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.
        1. Lembre-se: podemos ter várias registros da BD7 relacionados a um único título.
      2. 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.

        1. 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.
        2. 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.
        3. 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.
      3. 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).
      4. 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"). 
      5. 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
    1. Código de configuração de livro (CTN) de acordo com o conteúdo do parâmetro;
    2. Visão gerencial (CTS) de acordo com o código de configuração do livro;
    3. Contas relacionadas (CT1) à Visão Gerencial. A partir da data informada e o Alias ("BD5", "BD6" e "BD7"), deverá localizar os lançamentos contábeis na CV3. Realizar um relacionamento com a tabela "CT2", para filtrar somente os registros da tabela CV3 que tenham as contas configuradas na visão (CV3_RECDES). Com base nos registros encontrados na tabela CV3, será possível buscar as Guias (através dos conteúdos dos campos CV3_TABORI e CV3_KEY ou buscar pelo Recno - CV3_RECORI). Para localizar os títulos (Receber e/ou Pagar), primeiro é necessário verificar o contrato do beneficiário. 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"), respeitando o que foi informado na pergunta (Tipo: A Receber, A Pagar ou Ambos). Caso encontre o título, deve considerar somente se o mesmo estiver em aberto, ou seja, com o campo saldo maior que zero. Gravar na posição de saldo, o conteúdo do campo: BD7_VLRMAN.
    4. 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
      1. .
      2. Para identificar o tipo de Cobertura ("H" ou "O"),
    5. será necessário verificar na tabela padrão - BR8 - (para realizar a busca, utilizar os campos: BD7_CODPAD+BD7_CODPRO). Verificar o campo BR8_ODONTO
      1.  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_CODPLABA1_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",
    6. gravar "O", para outros casos gravar "H". Ratear o valor total da operadora em Hospitalar e Odontológico.
      1.  a cobertura é "H", se o conteúdo for "0" a cobertura é "O".
      2. 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.
      3. 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
    7. Verificar a Reciprocidade (Assumida ou Cedida) para gravar o código da operadora do intercâmbio:
      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
      1. igual ao conteúdo do parâmetro (MV_PLSTPIN), buscar no cadastro de
    8. Operados
      1. Operadoras ("BA0" - BA0_CODIDE+BA0_CODINT) com o código do campo BAU_CODOPE e gravar no arquivo o campo BA0_SUSEP.
    9.  
  5. 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

  • CTN 
  • CTS 
  • CT1 
  • CT2 
  • CVN 
  • SE1
  • SE2
  • CV3
    1. 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
    MV_PAR03HELP

    X1_ORDEM

    02

    X1_PERGUNT

    Cód. Conf. Livros 

    X1_TIPO

    C

    X1_TAMANHO

    3

    X1_GSC

    G

    X1_VAR01

    X1_

    Código da configuração do livro que será considerado na busca de ativos vinculados para o DIOPS.

    X1_ORDEM

    03

    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.