Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


CONTEÚDO

  1. Visão Geral
  2. Detalhamento
  3. Nova tela de controle de DPS
  4. Novas tabelas
  5. Tabelas utilizadas


01. VISÃO GERAL 
Âncora
VIS
VIS

      A presente especificação visa detalhar as regras para importação dos arquivos SIMPRO® no módulo SIGAPLS, para efeitos de pagamento/cobrança dos prestadores.  A tabela SIMPRO®, segundo o site, é "um banco de dados de materiais e medicamentos, utilizado como referência de informações (preço, apresentação, registro Anvisa, código tuss, classificação, embalagem, e outros), destinada , direcionado a compras, faturamento, licitações, análise e auditoria de contas médico-hospitalares" (site: https://www.simproSIMPRO®.com.br/PortalPages/CentralClientes/DuvidasFrequentes.aspx, pesquisado em 30/08/2021).

      Por se tratar de tema técnico e inicial, a presente especificação pode passar por atualizações em seu conteúdo e durante o desenvolvimento, visto que passará por diferentes crivos de análise e testes diversos, de forma a enriquecer o material e entrega da funcionalidade.

Aviso
titleATENÇÃO

 Este documento é material de especificação de requisitos, trata-se de conteúdo extremamente técnico e não existe garantia de desenvolvimento do item, por se tratar apenas de especificação.


02. Detalhamento 
Âncora
ATUAL
ATUAL

     A rotina deverá usar a mesma engine criada para a configuração da Brasíndice, ou seja, a mesma tela de Configuração de Importação de Arquivos, com os devidos ajustes para as tabelas e características da SIMPRO

...

  1. Com o entendimento inicial sobre o detalhamento, notamos que será necessário criar uma rotina para a geração e controle de DPS no sistema, para controle dos itens gerados e as novas gerações futuras (já que pode ser algo parcial), tanto para histórico como para retificações futuras.
  2. Para tanto, inicialmente pensamos na criação de 3 tabelas, que irão armazenar, respectivamente, o cabeçalho, os detalhes das notas e uma tabela de histórico.
    1. Ao entrar na rotina, será exibida inicialmente a tela com o cabeçalho das DPS, sequenciados por um código único sequencial gerado pelo sistema (GetSX8NUM) e pela competência - todos os processamentos devem ser feitos pela competência escolhida. Aqui, podemos entender como o "Cabeçalho" - referente ao arquivo TXT, além de outras informações pertinentes ao sistema (TABELA BQ2).
      1. Nessa tela, poderemos visualizar o cabeçalho, com os dados pertinentes aos item de cabeçalho do arquivo txt, bem como outras informações do sistema;
      2. Ao clicar no botão Selecionar, o sistema irá exibir os detalhes de todas as NFS-e e NFTS encontradas para a competência selecionada.
      3. No botão Outras Ações, teremos a rotina para Gerar arquivo txt do registro selecionado, no layout da prefeitura - conforme Manual de Envio de Repasses – Planos de Saúde, além do botão Processar..., que irá chamar a rotina que irá realizar a query nas tabelas SF1 e SD1, para pesquisar e gravar os dados encontrados, que estão de acordo com o Manual da DPS - tópico 2 - e na competência desejada.
        1. Esse ParamBox irá trazer na tela o pergunte, onde o usuário deverá informar o período de competência (não deixar permitir informa incidência inválida, como 20/2020, além de não permitir incidência futura a data atual do sistema, ou seja, se estamos em março de 2021, não posso deixar informar 05/2021).
        2. Não será necessário nenhum outro parâmetro, visto que como a data será buscada pelo campo data de digitação (F1_DTDIGIT), tanto as NF com data de emissão anteriores ou atuais serão consideradas pela rotina.
        3. Ao clicar no botão OK do ParamBox, o sistema deverá verificar se já existe um cabeçalho aberto para a vigência escolhida. Se não existir, deve criar um cabeçalho (TABELA BQ2), e caso exista, deverá verificar as NFs-e e NFTS cadastradas no período informado, respeitando as regras discutidas no tópico 2, gravando os detalhes na nova TABELA BQ3
          1. Como é um processo que pode ser realizado diversas vezes no mês de incidência, a funcionalidade deverá verificar se já existem itens gravados e atualizar com os novos documentos que deram entrada no sistema, ou seja, ir complementando o lote com as novas informações.
          2. Quando o dado for novo, no detalhe deve ir como "I" - Inclusão (Situação do Documento), na TABELA BQ3;
          3. Se o dado já existir na tabela TABELA BQ3, mas o valor for diferente e já tenha sido gerado um arquivo TXT, deve ocorrer a alteração no campo de valor e o detalhe deve ir como "A" - Alteração (Situação do Documento).  Além disso, o cabeçalho deve ir como "R" - Retificação nesses casos;
          4. Se o dado já existir na tabela TABELA BQ3, mas a NF foi excluída e já tenha sido gerado um arquivo TXT, deve ocorrer a exclusão da NF e o detalhe deve ir como "E" - Exclusão (Situação do Documento).  Além disso, o cabeçalho deve ir como "R" - Retificação nesses casos;
          5. Atenção: 
            1. Uma nota pode ser Cancelada (no Documento de Entrada, o processo é Exclusão - https://centraldeatendimento.totvs.com/hc/pt-br/articles/360018751111-MP-NFE-Como-cancelar-uma-nota-fiscal-eletr%C3%B4nica-). Quando cancelada, será excluída da SF1. 
            2. Assim, caso seja feito o processo automático/manual de procura de dados, caso a nota não conste mais na SF1, mas esteja presente na nova TABELA BQ3, teremos que verificar se já foi gerado algum txt parcial desse registro selecionado, pois caso conste que já tenha sido gerado, nessa situação  e cancelamento de nota, teremos que mudar a situação do documento para Exclusão - "E", pois como o txt foi gerado, entende-se que já foi submetido no portal da prefeitura. Caso ainda conste que não tenha sido gerado o arquivo txt, podemos realizar a exclusão do registro direto na nova TABELA BQ3, pois não consta na prefeitura a existência dessa nota em algum arquivo de DPS.
              • Aqui, temos que verificar também se as notas NFTS continuam com a mesma espécie - F1_ESPECIE - pois uma nota pode ter sido digitada errada, onde será feito o estorno do documento e uma nova classificação (F1_ESPECIE), e caso já tenha sido enviada em DPS anterior, deve ser considerada exclusão. 
            3. Quando for uma retificação, ou seja, uma nota substituiu a outra, o cabeçalho referente ao campo Tipo de Arquivo deve ser alterado para "R" - Retificação, para ser aceito na prefeitura.  
              1. O controle do sistema será automático, quando ocorrer qualquer alteração e conste que já tenha sido gerado uma DPS, o sistema irá colocar como "R" - Retificação. Contudo, o campo deve ficar manual, pois nem sempre que um arquivo foi gerado txt, significa que foi enviado para a prefeitura.
              2. Com isso, além do controle no cabeçalho, será necessário o controle no item também, pois ele ficará como "E" - Exclusão e será necessário alterá-lo para "I" - Inclusão.
              3. Sempre que houver esse tipo de alteração, disparar gatilho para gravar na tabela de logs - Tabela BQ4 - o ocorrido, gravando data, hora, nome da máquina (getcomputername()), nome do usuário e outras informações.  
          6.   Além dessa verificação de novos registros incluídos nas tabelas SF1/SD1, terá que atualizar os dados do cabeçalho, com as informações atuais, como o campo de valor total e outros, que sejam necessários.
          7. Informações
            titleAtenção

            A query de pesquisa poderá ser feita em etapas, aos invés de uma query única, para facilitar a manutenção futura e prever melhorias necessárias no decorrer do tempo, como:

            1. Query para pesquisar novos dados, desconsiderando os que já estão gravados na Tabela BQ3;
            2. Query para verificar se os dados gravados na tabela BQ3 foram alterados na origem - SD1/SF1, para ser alterado como Alteração ou Exclusão.
        4. No final do processamento manual, deverá emitir um alerta, informando se houve novas inclusões e cancelamentos.
        5. O botão Gerar arquivo txt, quando pressionado, deverá abrir uma janela para que o usuário indique em qual local/pasta deseja salvar o arquivo txt.  Confirmando a geração do arquivo, um status na nova TABELA BQ2 deverá ser atualizado para Arquivo Gerado, para o controle nos casos onde um arquivo foi gerado e depois, uma das notas desse arquivo foi cancelada.
          1. Atenção: Se for realizado o controle parcial de envio de DPS, o botão Gerar arquivo txt deverá apresentar outras opções, como: Gerar Parcial (devendo observar o campo de controle do item, sugerido na relação de tabelas BQ3) ou Gerar Total, onde vai sair no XML todos os registros, independente de gerações anteriores. 
    2. Ao clicar no botão Selecionar, deverá trazer os detalhes de todas as notas fiscais encontrada para competência, de acordo com os filtros mencionados no tópico 2 do documento. Aqui, devemos entender como a parte de "Detalhes" - do arquivo txt, além de possuir outras informações de controle do sistema (TABELA BQ3)
      1. Assim, o vínculo entre a [Tabela 2] com a [Tabela 1] se dará pelo código sequencial e período de competência.
      2. Ao clicar no botão de Detalhes da tela de Detalhe da DPS, será exibido o formulário com todas as informações da Nota encontrada, apenas para conferência do usuário.
      3. IMPORTANTE: Em nenhuma das telas será permitido a alteração dos valores e das informações provenientes das Notas Fiscais e NFTS - das tabelas SF1 e SD1 - por se tratar de informação fiscal. Caso a nota possua erros, deverá ser corrigida diretamente no módulo de Documento de Entrada, sendo essa funcionalidade apenas uma ponte entre a leitura dos dados (conforme parametrização) e a geração do arquivo TXT, para envio à Prefeitura de São Paulo.
      4. O único campo que o usuário vai poder alterar é o campo de Situação do Documento, já que pode ter gerado uma DPS antes, não ter enviado para a prefeitura e no meio do período, canelar uma nota, que vai entrar como "Exclusão". nesse caso, o usuário pode alterar para "I" - Inclusão, pois mesmo tendo gerado o lote antes, não enviou para a prefeitura.
        • Sempre que houver esse tipo de alteração, disparar gatilho para gravar na tabela de logs - Tabela BQ4 - o ocorrido, gravando data, hora, nome da máquina (getcomputername()), nome do usuário e outras informações.  
  3. A rotina de verificação (query) e preenchimento dos dados nas novas TABELA BQ2TABELA BQ3 poderá ser executada via Schedule, ou seja, programada para rodar sozinha em determinados momentos.
    1. Quando schedulada, verificar se vamos considerar a incidência da data atual do sistema ou deixar passar como um parâmetro, quando estiver configurando o schedule.
    2. O Schedule irá apenas executar as atividades previstas acima, não sendo possível a geração do arquivo txt, que deverá ser gerado pelo usuário, após conferência nas telas e detalhado nos itens anteriores.
  4. A tabela de histórico (TABELA BQ4) deverá armazenar as ocorrências da rotina - podendo ter códigos de ocorrência para sua filtragem - como:
    1. Toda vez que o usuário solicitar a geração do txt (Gerar arquivo txt), armazenar essa solicitação no histórico;
    2. Quando a rotina for schedulada e terminar seu processamento. 
  5. Abaixo, mockup animado das telas:
    1. Image Removed

...

Demais campos necessários conforme evolução/necessidade da rotina.

Nota Técnica: Ao criar as tabelas, observe se as regras de relacionamento estão aplicadas corretamente, com campos determinados em cada tabela, tanto na relação em MVC quanto em campo de pesquisa F3 ou chaves. Crie os relacionamentos SX9 pertinentes no pacote de dicionário! 

A) Configurador de Importação – Tabela B6G (Configurações Brasíndice®)

Atualmente, devido a importação da tabela Brasíndice®, já temos tela de configuração de importação, para facilitar o processo de importar os arquivos.  Vamos utilizar o mesmo conceito e tabela, para realizar as mesmas configurações para a SIMPRO®, mas observando as seguintes diferenças:

  1. Criar fonte exclusivo para a browser e demais botões da tela de importação da SIMPRO®, com o nome PLSSIMPRO.PRW.
    1. Utilizar neste fonte o conceito de herança do MVC, onde devemos herdar as características do fonte PLSBRASIN1 e realizar os devidos ajustes. 
  2. Criar fonte exclusivo, com as funções de importação e gravação das tabelas da SIMPRO®, com o nome PLSSIMPROI.PRW. 
  3. Pelo manual e layout, o sistema VideoFarma® permite que todos os itens – independente se é um medicamento ou material, sejam, exportados em arquivo único, permitindo sua diferenciação por uma classificação própria, no campo CD_MERC, onde: 
    • (20) Material Hospitalar
    • (50) Medicamentos
    • (70) Perfumaria
    • (90) Reagentes
    • (30) Saneantes
  4. Contudo, como necessitamos saber em qual TDE o item será importado - para quando houver codificação TUSS ou não – será necessário a configuração individual para cada item a ser importador.  Ou seja, devemos ter um registro na B6G para cada tipo de material, medicamento, perfumaria, reagente ou saneante a ser importado.
    • Deixar claro no Documento de Referência que não deve ser gerado arquivo único, mas um individual para cada item a ser importado.  E se mesmo assim gerar um arquivo único, todos os itens serão importados para a tabela no qual ocorrer o match, sem diferenciar medicamento ou material pelo tipo de registro.
  5. Com relação os itens Perfumaria, Reagentes e Saneantes, esses itens deverão ser incluídos no combo do campo B6G_TIPPRO.
  6. O campo B6G_TIPARQ fica oculto na VIEW, ao visualizara tela de configuração. Assim:
    • O campo agora deverá ficar visível na VIEW e no browse de configuração;
    • Identificar de forma automática de qual menu foi a chamada, para colocar no campo B6G_TIPARQ o cadastro correspondente. Por exemplo, se a ação originou na tela da Brasíndice® (PLSBRASIN1), colocar no campo B6G_TIPARQ o valor 1=Brasíndice®. Se originou na SIMPRO® (PLSSIMPRO), colocar 2=SIMPRO®.
  7. Será necessário revisar o fonte de Configuração de Importação (PLSBRASIN2), pois temos regras específicas do Brasíndice®, que não consideram o campo B6G_TIPARQ para validar, como as funções AtuCmpVal (que deve considerar agora o campo B6G_TIPARQ para validar apenas Brasíndice®); a função ChkVlrDup (que possui query para evitar itens repetidos com o mesmo tipo de material e valor, onde deverá verificar o campo B6G_TIPARQ, não mais apenas 1=Brasíndice®).
  8. Validar na tela o que é pertinente a cada item:
    • Se estou cadastrando um item Brasíndice®, não posso usar as opções Reagentes / Saneantes / Perfumaria (B6G_TIPPRO), bem como a opção Preço Usuário (B6G_TIPO);
    • Se estou cadastrando SIMPRO®, não posso usar a opção Soluções.
    • Demais regras que existem para a Brasíndice®, como para Soluções e Materiais usar apenas Preço de Fábrica devem ser mantidas para Brasíndice®.
      • Solução: manipular o conteúdo do CBOX do campo B6G_TIPPRO, para exibir apenas as opções pertinentes para cada cadastro: Exemplo: cadastro no X3_CBOX as novas opções de Perfumaria / Saneantes / Reagentes, ficando 1=Materiais;2=Medicamentos;3=Soluções;4=Perfumaria;5=Saneantes;6=Reagentes;  
      • Na VIEW do PLSBRASIN2, manipular para exibir apenas as opções pertinentes para cada tipo de tabela, pelo atributo MVC_VIEW_COMBOBOX, onde podemos passar esse atributo, seguido de um array ou função. Nesse caso, passar uma função, que vai recuperar os valores do X3_CBOX do campo B6G_TIPPRO - GetSx3Cache("B6G_TIPPRO","X3_CBOX") e na função, tratar o retorno do campo de acordo com a tabela selecionada -  SIMPRO® ou Brasíndice®.
      • https://tdn.totvs.com/pages/releaseview.action?pageId=6815033 -> GetSx3Cache
  9. Com relação aos valores, a SIMPRO® permite exportar o Preço de Fábrica (PFB), o Preço Máximo ao Consumidor (PMC) e iremos incluir o Preço do Usuário (PUSU), no campo B6G_TIPO.
    • O controle do campo deve ser efetuado igual ao do campo B6G_TIPPRO, para exibir de forma correta somente para a SIMPRO® a opção Preço do Usuário.
    • Como na Brasíndice®, temos também a possibilidade de preço total ou fracionado, informado no campo B6G_TIPVAL, que será idêntico na SIMPRO®.
  10. Demais regras e campos serão mantidos de forma igual.
  11. Ao acionar a opção de Configurar pela tela da Brasíndice® – PLSBRASIN1 – as configurações que deverão ser exibidas no Browse deverão ser apenas Brasíndice®. Se acionei a opção Configurar via tela SIMPRO® – PLSSIMPRO, no browse devem ser exibidos apenas os itens da SIMPRO®, usando o campo B6G_TIPARQ para este fim.


B) Importação - Regras

  1. Vamos utilizar como padrão o arquivo TXT e o CSV, ambos separados por ponto e vírgula (;).  Essa informação deve estar de forma clara e concisa no documento de referência.
    1. Existe a opção de XML, mas para esse tipo de exportação, o cliente deve ter o módulo adicional.  Como nem todos possuem, será aceito para importação apenas os arquivos TXT e CSV, separados por ponto e vírgula.
      1. Ao realizar a leitura da primeira linha do arquivo, se o separador for diferente de ponto e vírgula, podemos recusar o arquivo e partir para o próximo arquivo, gravando essa inconsistência, para exibir ao usuário no final do processo.
  2. Além do nome do arquivo, que deverá ter nome igual as regras cadastradas no B6G - Configuração de Importação - deverá ser colocado também o código da mensagem SIMPRO® de atualização, seguido dos dois últimos dígitos do ano.  Exemplo: Se temos uma regra onde o nome definido foi SANEANTES+PFB, e o arquivo de mensagem (atualização) SIMPRO® foi 6, do ano de 2021, o nome do arquivo deverá ser algo como SANEANTES_PFB_621.TXT ou SANEANTESPFB_621.CSV.
  3. Ao clicar no botão Importar, deve ser exibido um ParamBox, onde o usuário deverá informar:
    1. Pasta onde os arquivos CSV/TXT estão localizados (OBRIGATÓRIO);
    2. Código Mensagem (atualização) SIMPRO® (igual ao do campo mensagens, existente no sistema VideoFarma®), seguido dos dois últimos dígitos do ano (OBRIGATÓRIO);
      1. Para cada atualização enviada, temos um código da VideoFarma® – como a edição na Brasíndice®.  Deverá ser colocado esse código, como: 33/2021, logo, deverá ser colocado 33 e os dois últimos dígitos do ano, ficando 3321.
    3. Data da mensagem da SIMPRO® (será informado como data inicial de vigência para os itens – BD4_VIGINI) e será subtraído um dia, quando for para fechar vigência (OBRIGATÓRIO);
    4. Campo para informar data de fim de vigência, para os itens que estiverem no status (L)Fora de Uso ou (D)Descontinuado (OBRIGATÓRIO);
    5. CheckBox para informar se nos itens com status (L)Fora de Uso ou (D)Descontinuado, se deseja usar a data fim de vigência da ANVISA ou a data do item acima, caso a data no arquivo esteja fora do padrão.
      1. Aqui, devemos ter atenção, pois não existe data de fim de vigência ou arquivo de exclusão, igual ocorre na Brasíndice®.  Assim, o usuário deve informar uma data de até quando deseja utilizar aquele item Descontinuado/Fora de Uso ou então, em conjunto com o checkbox, caso queira usar a data final de vigência da ANVISA, que consta no arquivo.
      2. Contudo, em alguns registros aparece apenas a informação “VIGENTE” ou outros e assim, vai usar a data inserida pelo usuário.
    6. Ao clicar em OK do ParamBox, o sistema deve varrer o diretório, localizando os arquivos TXT e CSV que tenham nomes similares as regras cadastradas na tela de configuração e que tenham código igual ao informado no Pergunte.
      1. Se localizar arquivo com nome igual a regra, mas a versão é diferente ou inexistente, o usuário deve ser indagado se deseja importar o arquivo, mas a versão utilizada será a que está no Pergunte, para fazer o relacionamento no campo BD4_CHVIMP.
      2. Só pode existir um arquivo para cada configuração!  Logo, se um arquivo já deu match com uma configuração, essa configuração não pode mais dar match com nenhum outro arquivo.
      3. Se encontrar arquivos, mas nenhum bate com as regras cadastradas, exibir uma caixa de desambiguação de arquivos, onde será exibido um browse com duas colunas, onde na primeira coluna, teremos os arquivos que não batem com nenhuma regra existente, e na segunda coluna, será exibido um combobox, com as regras que ainda não tiveram arquivos localizados, para o match manual.
        • Se todas as regras já tiverem um arquivo e mesmo assim, sobrou arquivos "órfãos", a janela de desambiguação não deve ser exibida, pois conforme item II acima, uma regra só pode ter um arquivo relacionado.
        • Registrar essa inconsistência, para exibir no final do processamento para o usuário.
        • Essas opções e janela existem na importação da Brasíndice®, no PLSBRSIN1.
  4. Criar rotina específica para leitura dos arquivos TXT e CVD da SIMPRO®.
    1. Não é possível usar a mesma rotina da Brasíndice®, pois possui particularidades próprias
    2. A rotina deve contar com parte visual, para exibir o andamento do progresso das operações.
    3. Utilizar a classe FWFileReader() para leitura dos arquivos, setando um buffer de no mínimo, 10KB, para melhorar a performance da importação.
    4. https://tdn.totvs.com/display/framework/FWFileReader -> FwFileReader
  5. Realizar o parse em cada linha, para desmembrar as colunas separadas com o ponto e vírgula, para trabalhar os dados e realizar as devidas inclusões/alterações e fechamento de vigências.
    1. Para quebrar a linha lida, coo foi usado o ponto e vírgula como separador, usar o StrTokArr2, para criar o array baseado na string lida.
  6. No final da importação, exibir um resumo dos arquivos importados, com problemas e registros não válidos, caso aconteça.


C) Importações – Tabelas

  1. Após as validações acima, necessitamos gravar ou atualizar as seguintes tabelas:
    1. BR8 - Tabela Padrão
    2. BA8 - Tabela Dinâmica de Eventos
    3. BD4 - Unidade de Saúde
    4. BTQ – Tabela de Terminologias
    5. B6F – Tabela de Histórico de Importações realizadas
    6. BF8 - Tabelas de Honorários.
      1. A BF8 só será criada se no campo B6G_CRITDE estiver como SIM. Caso contrário, não será gravada
  2. No arquivo SIMPRO® – temos o código próprio da SIMPRO® e para maioria dos itens, temos o código TUSS equivalente.
    1. Se não existir código TUSS no registro analisado, deve ser gravado ou atualizado na TDE própria (informado no cadastro de configuração – B6G);
    2. Se existir o código TUSS no registro, devemos verificar na TDE própria – informada no cadastro da configuração (B6G) – se temos o código SIMPRO® do item cadastrado e se está com a data de vigência finalizado. Se não estiver com data de finalização (BD4_VIGFIM), devemos finalizar a vigência, utilizando a data do ParamBox (Data da mensagem da SIMPRO®) menos 1 dia. Ou seja, se foi informado 10/10/2021, devemos subtrair um dia, colocando no campo BD4_VIGFIM o valor 09/09/20210. 
      1. Na sequência, verificar se já existe o código TUSS cadastrado, para inclusão ou alteração dos dados.
    3. Para cada registro gravado, no campo BD4_CHVIMP, deve ser colocado a chave de registro de relacionamento, com as informações “SIMPRO| + código da atualização + ”|” + Tipo do Procedimento + “|” + Tipo Valor”. Ou seja, é a concatenação dos campos “SIMPRO|” + código da atualização (mensagem) informada no ParamBox + “|“ + B6G_TIPPRO + “|” + B6G_TIPO. Simplificando, se foi informando no ParamBox o código da atualização 3321, e estamos importando um arquivo de Material (B6G_TIPPRO = 1) e o valor Preço de Fábrica (B6G_TIPO = 2), o campo BD4_CHVIMP vai receber o valor como: SIMPRO|3321  |1|2.  
    4. Se existir um BD4 para evento, e na chave de relacionamento (BD4_CHVIMP), o código da atualização for menor que o atual, essa vigência será finalizada com a data do ParamBox (Data da mensagem da SIMPRO®) menos um dia, para gravar a nova BD4 com a nova vigência, com os dados necessários.
      1. Só gravar se tiver alteração de valor.  Se os dados são iguais, mesmo em atualizações diferentes, não precisa executar o passo acima.
    5. Ao gravar os registros, criar ou atualizar os mesmos na Tabela de Terminologia BTQ, terminologia 64, conforme padrão TISS. Atualizar da seguinte maneira:
      1. BTQ_CODGRU - Se medicamento, gravar o valor "030". Para os demais, gravar "029".
      2. BTQ_DESGRU - Se medicamento, gravar o texto "MEDICAMENTO". Para os demais, gravar "MATERIAIS E OPME".
      3. BTQ_FENVIO - Gravar o texto "CONSOLIDADO".
        • Para conhecimento: Grupo 029 - MATERIAIS E OPME / Grupo 030 - MEDICAMENTOS
  3. No final da importação, gravar os dados pertinentes na tabela B6F - Importações Brasíndice, para efeitos históricos e consultar os registros importados. 


D) Exclusão das Importações

  1. O usuário pode deletar alguma importação realizada, bastando no browser do PLSSIMPRO posicionar no registro desejado e clicar no botão Excluir.  Contudo, temos algumas regras a serem seguidas:
    1. Ao solicitar a exclusão do registro posicionado, devemos garantir se é o último importado, pela sequência do campo BD4_CHVIMP, que armazena o código da mensagem (atualização) da SIMPRO.  Se tentar excluir qualquer um que não seja o último importado, o sistema deve proibir, de acordo com o tipo de produto e valor.
      1. Por exemplo, importei à atualização 3021 - Material - PFB e no outro mês, importei o 3121 - Material - PFB.
      2. Se tentar excluir o 3021 - Material - PFB, o sistema não deve deixar, pois existe atualização superior, que pode ter finalizado e criado novas BD4 com outros vigências.  No nosso exemplo, só podemos excluir o 3121 - Material - PFB, pois é a última importação.
    2. Caso possa excluir, conforme regra acima, devemos:
      1. Deletar os registros BD4 relacionados a essa importação, pelo campo de relacionamento BD4_CHVIMP.
      2. Após deletar o BD4 relacionado, devemos reabrir a vigência do último BD4 disponível para o item, seguindo a cronologia do campo BD4_CHVIMP.  
        • Se existir registro BD4 anterior, o campo BD4_VIFGIM deve ser limpo, para ser utilizado no sistema;
        • Se não existir nenhum BD4 anterior (imagine um item adicionado nessa versão excluída), a BA8 relacionada ao BD4 deve ser excluída, pois não pode existir um BA8 sem BD4;
        • Se a BA8 foi excluída, devemos atualizar na BR8 - relacionada ao registro da BA8 - o campo BR8_BENUTL como Não, já que o item não existe mais na BA8.
      3. Ou seja, como visto acima, a exclusão deve ser em "cascata", obedecendo aos critérios definidos.  Logo, se excluir uma BD4 e tiver outro registro BD4 para reabrir a vigência, apenas limpo a data final e o processo acabou por aí.  Se não, tenho que deletar os demais envolvidos, que é a BA8 e BR8, para manter a consistência dos registros.


E) Detalhes Técnicos 

  1. Utilizar MVC e herança, quando necessário;
  2. Utilizar para leitura de arquivos a classe FWFileReader();
  3. Utilizar para gravar arquivo de texto a classe FWFileWriter();
  4. Tratar as descrições e campos de textos, para evitar caracteres especiais e que possam atrapalhar a visualização no Portal ou arquivos de exportação (Monitoramento / PTUs / RPS e outros);
  5. Utilizar os índices disponíveis nas tabelas ou criar os necessários, para otimizar buscas e querys;
  6. Criar os fontes pensando nas automações necessárias, para evitar retrabalhos futuros;
  7. Como temos um layout de importação, pode-se criar um função, contendo o layout e posição dos campos, caso o desenvolvedor julgue necessário;
  8. Todas as ações de importação, arquivos e registros inválidos, devem ser registradas e exibidas no final do processamento, para conhecimento do usuário:
    1. Utilizar o FWDialogModal() com FwBrowse(), para exibir esses erros, ao invés de utilizar a função PLSCRIGEN.
  9. Verificar a possibilidade de realizar a gravação das tabelas usando classes MVC, levando em consideração o tempo de desenvolvimento vs ganho de performance obtido.
  10. Utilizar a importação da Brasíndice como modelo.  Fontes PLSBRASIN1 / PLSBRASIN2 / PLSBRASINI.  
    1. Documento de referência em Importação Brasíndice® - PLSBRASIN1.
  11. Padrão de arquivos para importação: TXT ou CSV.  Os demais devem ser ignorados.
  12. Separador padrão dos arquivos CSV e TXT: ponto e vírgula (;).  Nenhum outro deve ser aceito.
    1. Se basear em um dos itens, onde na primeira linha, podemos validar se o separador é ponto e vírgula e se não for, interromper a importação e partir para o próximo arquivo.

F) De/Para dos Layouts com o sistema 
Âncora
anc
anc

  • Layout TXT 

Expandir
titleLayout TXT - Clique para expandir
ARQUIVO NO FORMATO TXT 
SEQCampoFormatoTamanhoDecDescriçãoEQUIVALENTE IMPORTAÇÃO
1-Caractere15-Código do UsuárioNão Aplicável
2-Caractere15-Código de FraçãoNão Aplicável
3-Caractere100-Descrição do ProdutoBA8_DESCRI  /  BR8_DESCRI  /  BTQ_DESTER  /  BTQ_DSCDET
4-Caractere08-Data de Vigência (ddmmaaaa)Não Aplicável
5-Caractere01-Identificação:
(F) Preço Fábrica
(V) Preço Venda
(L) Fora de Linha
(A) Atualização Suspensa
(D) Descontinuado
Não Aplicável
6-Numérico8 + 2-Preço Fábrica EmbalagemSe PFB + Valor Total, utilizar esse campo - BD4_VALREF
7-Numérico8 + 2-Preço Venda EmbalagemSe PMC + Valor Total, utilizar esse campo - BD4_VALREF
8-Numérico8 + 2-Preço Usuário EmbalagemSe PUSU + Valor Total, utilizar esse campo - BD4_VALREF
9-Numérico8 + 3-Preço Fábrica FraçãoSe PFB + Valor Fracionado utilizar esse campo - BD4_VALREF
10-Numérico8 + 3-Preço Venda FraçãoSe PMC + Valor Fracionado utilizar esse campo - BD4_VALREF
11-Numérico8 + 3-Preço Usuário FraçãoSe PUSU + Valor Fracionado utilizar esse campo - BD4_VALREF
12-Caractere03-Tipo de EmbalagemNota 1 *
13-Caractere04-Tipo de FraçãoNota 1 *
14-Numérico5 + 2-Quantidade EmbalagemNota 1 *
15-Numérico5 + 2-Quantidade Fração  UsuárioNão Aplicável
16-Numérico3 + 2-% Lucratividade do UsuárioNão Aplicável
17-Caractere01-Tipo de Alteração: (I)Inclusão (P)Preços
(L)Fora de Linha (A)Alterações Gerais (S)Atualização Suspensa
(D)Descontinuado
Aqui, serve para informar se o campo teve alguma alteração. Como vamos progredir com cada edição, talvez não seja necessário o uso desse campo - ANALISAR
Podemos usar para indicar o fim de vigência (BD4_VIGFIM), quando o item estiver no status (D)Descontinuado ou (L)Fora de Linha, e usar o campo de Data Fim Vigência, do ParamBox de importação.
18-Caractere20-FabricanteBA8_NMFABR e:
* Se arquivo Medicamento: BTQ_LABORA
* Demais: BTQ_FABRIC
19-Caractere10-Cód.SIMPRO/TISSBA8_CODPRO  /  BD4_CODPRO  /  BR8_CODPSA  /  BTQ_CDTERM
* Somente se não existir o código TUSS no registro
20-Caractere02-Código do Mercado:
(20)Material Hospitalar (50)Medicamentos   (90)Reagentes   (30)Saneantes
Não Aplicável
21
Numérico3 + 2-% Percentual de DescontoNão Aplicável
22-Numérico3 + 2-% IPI do ProdutoNão Aplicável
23-Caractere18-Número do Registro ANVISA ou uma das seguintes informações:
ISENTO
NAO CONTROLADO
NOTIFICACAO
SI/NC
BA8_RGANVI
24-Caractere13-Data de Validade do Registro ANVISA ou uma das seguintes informações:
PENDENTE - SOB PROTOCOLO – EM BRANCO – VIGENTE
BD4_VIGFIM 
* Observar a ER, pois pode ser a data do arquivo (se data válida, não as informações escritas), se o checkbox estiver marcado ou a data informada no campo Data Fim Vigência no Parambox de Importação, quando o arquivo for (D)Descontinuado ou (L)Fora de Linha - Olhar a coluna SEQ, números 5 e 17.
25-Numérico13-Número do Código de BarraNão Aplicável
26-Caractere1-Tipo de Lista
‘+’ – Positiva            ‘-’ – Negativa            ‘ ’ – Neutra            ‘#’ – Não aplicável
Não Aplicável
27-Caractere1-Indica se o medicamento é de uso exclusivamente hospitalarNão Aplicável
28-Caractere1-Indica se o produto é fracionado
S – SIM                       N - NAO
Não Aplicável
29-Caractere8
Código TUSSBA8_CODPRO  /  BD4_CODPRO  /  BR8_CODPSA  /  BTQ_CDTERM 
30-Caractere2-Indica a classificação do produto
(  )SEM  CLASSIFICAÇÃO  (BD)  BEM  DURAVEL  (MC)  MATERIAL  DE  CONSUMO (ME)  MATERIAL  ESPECIAL    (OT)  ORTESE         (PT)  PROTESE         (ST)    SINTESE
( IT )   INSTRUMENTAL
BA8_DSCLAS
* Gravar no campo a descrição equivalente ao código, ou seja, se vazio - Sem Classificação; se PT - Prótese e etc
31-Caractere100-Referência do ProdutoBTQ_REFFAB
32-Caractere1-Indica se o produto é genérico
S – SIM                       N - NAO
Não Aplicável
33-Caractere1-Indica se o medicamento ou material é classificado como Diversos
S – SIM                       N - NAO
Não Aplicável

* NOTA 1*Nota 1 - Gravar nos campos BTQ_APRESE e BA8_DFORMA os valores apresentados na coluna SEQ, de 12 a 14, da seguinte forma:
"Tipo Embalagem: " + SEQ 12 " - Unidade: " + SEQ 13 + " - Qtd. Embalagem: " + SEQ 14.
Exemplo:
0000251307;0000251307;BOLSA COLO HARMONY DUO FECH.GRD./OPACA 13-50MM 2PCS;08122016;F;5310;000;000;0000;0000;0000;CX;UN;100;000;000;A;SANTE MEDICAL;0000251307;20;000;000;80475950003;VIGENTE;;#;N;N;78380030;MC;HDCL1350;N;N

Assim, pelo exemplo acima, devemos gravar nos campos BTQ_APRESE e BA8_DFORMA o texto:
Tipo Embalagem: CX - Unidade: UN - Qtd. Embalagem: 1.00


  • Layout CSV

Expandir
titleLayout CSV - Clique para expandir

ARQUIVO NO FORMATO CSV 

SEQCampoFormatoTamanhoDecDescriçãoEQUIVALENTE IMPORTAÇÃO
1-Caractere15-Código do UsuárioNão Aplicável
2-Caractere15-Código de FraçãoNão Aplicável
3-Caractere100-Descrição do ProdutoBA8_DESCRI  /  BR8_DESCRI  /  BTQ_DESTER  /  BTQ_DSCDET
4-Data--Data de Vigência(dd/mm/aaaa)Não Aplicável
5-Caractere01-Identificação:
(F) Preço Fábrica (V)Preço Venda
(L) Fora de Linha
(A) Atualização Suspensa
(D) Descontinuado
Não Aplicável
6-Numérico112Preço Fábrica EmbalagemSe PFB + Valor Total, utilizar esse campo - BD4_VALREF
7-Numérico112Preço Venda EmbalagemSe PMC + Valor Total, utilizar esse campo - BD4_VALREF
8-Numérico112Preço Usuário EmbalagemSe PUSU + Valor Total, utilizar esse campo - BD4_VALREF
9-Numérico123Preço Fábrica FraçãoSe PFB + Valor Fracionado utilizar esse campo - BD4_VALREF
10-Numérico123Preço Venda FraçãoSe PMC + Valor Fracionado utilizar esse campo - BD4_VALREF
11-Numérico123Preço Usuário FraçãoSe PUSU + Valor Fracionado utilizar esse campo - BD4_VALREF
12-Caractere03-Tipo de EmbalagemNota 1 *
13-Caractere04-Tipo de FraçãoNota 1 *
14-Numérico082Quantidade EmbalagemNota 1 *
15-Numérico082Quantidade Fração UsuárioNão Aplicável
16-Numérico062% Lucratividade do UsuárioNão Aplicável
17-Caractere01-Tipo de Alteração: (I)Inclusão (P)Preços
(L)Fora de Linha
(A)Alterações Gerais (S)Atualização Suspensa (D)DescontinuadoAqui, serve para informar se o campo teve alguma alteração. Como vamos progredir com cada edição, talvez não seja necessário o uso desse campo - ANALISAR
Podemos usar para indicar o fim de vigência (BD4_VIGFIM), quando o item estiver no status (D)Descontinuado ou (L)Fora de Linha, conforme ER e campo de Data Término do ParamBox de importação.
18-Caractere20-FabricanteBA8_NMFABR e:
* Se arquivo Medicamento: BTQ_LABORA
* Demais: BTQ_FABRIC
19-Caractere10-Cód.SIMPRO/TISSBA8_CODPRO  /  BD4_CODPRO  /  BR8_CODPSA  /  BTQ_CDTERM
* Somente se não existir o código TUSS no registro
20-Caractere02-Código do Mercado:
(20)Material      Hospitalar      (50)Medicamentos                 (90)Reagentes
(30)Saneantes
Não Aplicável
21-Numérico062% Percentual de DescontoNão Aplicável
22-Numérico042% IPI do ProdutoNão Aplicável
23-Caractere18-Número do Registro Anvisa ou uma das seguintes informações:
ISENTO
NAO CONTROLADO
NOTIFICACAO
SI/NC
BA8_RGANVI
24-Caractere13-Data de Validade do Registro Anvisa ou uma das seguintes informações:
PENDENTE - SOB PROTOCOLO – EM BRANCO – VIGENTE
BD4_VIGFIM 
* Observar a ER, pois pode ser a data do arquivo (se data válida, não as informações escritas), se o checkbox estiver marcado ou a data informada no campo Data Fim Vigência no Parambox de Importação, quando o arquivo for (D)Descontinuado ou (L)Fora de Linha - Olhar a coluna SEQ, números 5 e 17.
25-Numérico13-Número do Código de BarraNão Aplicável
26-Caractere1-Tipo de Lista
‘+’ – Positiva      ‘-’ – Negativa      ‘ ’ – Neutra      ‘#’ – Não aplicável
Não Aplicável
27-Caractere1-Indica se o medicamento é de uso exclusivamente hospitalarNão Aplicável
28-Caractere1-Indica se o produto é fracionado
S – SIM                       N - NAO
Não Aplicável
29-Caractere8
Código TUSSBA8_CODPRO  /  BD4_CODPRO  /  BR8_CODPSA  /  BTQ_CDTERM 
30-Caractere2
Indica a classificação do produto
(  )SEM CLASSIFICAÇÃO     (BD) BEM DURAVEL
(MC)    MATERIAL    DE    CONSUMO               (ME)    MATERIAL    ESPECIAL (OT)     ORTESE                      (PT)     PROTESE                      (ST)        SINTESE (IT)   INSTRUMENTAL
BA8_DSCLAS
* Gravar no campo a descrição equivalente ao código, ou seja, se vazio - Sem Classificação; se PT - Prótese e etc
31-Caractere100-Referência do ProdutoBTQ_REFFAB
32-Caractere1-Indica se o produto é genérico
S – SIM                       N - NAO
Não Aplicável
33-Caractere1-Indica se o medicamento ou material é classificado como Diversos
S – SIM                       N - NAO
Não Aplicável

* NOTA 1*Nota 1 - Gravar nos campos BTQ_APRESE e BA8_DFORMA os valores apresentados na coluna SEQ, de 12 a 14, da seguinte forma:
"Tipo Embalagem: " + SEQ 12 " - Unidade: " + SEQ 13 + " - Qtd. Embalagem: " + SEQ 14.
Exemplo:
0000018483;0000018483;COMPRESSA GAZE NIDIA 11FIOS 7,5X7,5CM EST.ETO 5UNID.;08072015;F;270;000;000;0000;0000;0000;PCT;UN;500;000;000;A;CREMER;0000018483;20;000;000;80245210083;VIGENTE;7891800194651;#;N;N;78340454;MC;194.654;N;N

Assim, pelo exemplo acima, devemos gravar nos campos BTQ_APRESE e BA8_DFORMA o texto:
Tipo Embalagem: PCT - Unidade: UN - Qtd. Embalagem: 5.00


  • Layout PDF para análise:

View file
namelayout.pdf
height250


03. Tela de Importação / Configuração SIMPRO® 
Âncora
NEW
NEW

Conforme indicado no item 2, tópico A, para a configuração da importação, vamos utilizar a tela existente - PLSBRASIN2 - com os devidos ajustes.  No tocante a tela de browser das importações realizadas da SIMPRO®, bem como o botão Importar de demais funcionalidades, utilizar o conceito de herança da tela PLSBRASIN1, realizando os devidos ajustes para as necessidades aqui apontadas. 


04. Tabelas  
Âncora
ALTER
ALTER

  • Não será necessário criar nenhuma tabela nova, apenas modificar as existentes, para se adequar ao processo da SIMPRO®.
  • As modificações necessárias já foram colocadas nos tópicos anteriores e podem surgir novas,  de acordo com o andamento do desenvolvimento.


...

Demais campos necessários conforme evolução/necessidade da rotina.

Nota Técnica: Ao criar as tabelas, observe se as regras de relacionamento estão aplicadas corretamente, com campos determinados em cada tabela, tanto na relação em MVC quanto em campo de pesquisa F3 ou chaves. Crie os relacionamentos SX9 pertinentes no pacote de dicionário! 

...

Lista de ocorrência da rotina, que será criada/desenvolvida no decorrer do desenvolvimento:

001 - Geração TXT da DPS XXXXXXXXXX

002 - Retificação na DPS XXXXXXXXXX

003 - Detalhamento excluído, devido a cancelamento de NF

etc...

...

Demais campos necessários conforme evolução/necessidade da rotina.

Nota Técnica: Ao criar as tabelas, observe se as regras de relacionamento estão aplicadas corretamente, com campos determinados em cada tabela, tanto na relação em MVC quanto em campo de pesquisa F3 ou chaves. Crie os relacionamentos SX9 pertinentes no pacote de dicionário! 

Manuais da Prefeitura de São Paulo:

  • Manual do layout do arquivo de repasse da DPS
    View file
    nameManual_DPS_Repasses.pdf
    height150
  • Manual sobre a DPS
    View file
    nameManual_DPS.pdf
    height150

05. TABELAS UTILIZADAS 
Âncora
TAB
TAB

  • BR8 - Tabela Padrão
  • BA8 - Tabela Dinâmica de Eventos
  • BD4 - Unidade de Saúde
  • BTQ – Tabela de Terminologias
  • B6F – Tabela de Histórico de Importações realizadas
  • BF8 - Tabelas de Honorários
  • SF1 - Cabeçalho das NF de Entrada
  • SD1 - Itens das NF de Entrada
  • SA2 - Fornecedores
  • BQ2 - Cabeçalho da DPS
  • BQ3 - Detalhes da DPS
  • BQ4 - Histórico e Logs DPS


HTML
<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>