CONTEÚDO
- Visão Geral
- Detalhamento
- Nova tela de controle de DPS
- Novas tabelas
- Tabelas utilizadas
01. VISÃO GERAL 
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.SIMPRO®.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.
02. Detalhamento 
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:
- Criar fonte exclusivo para a importação da SIMPRO®®, com o nome PLSSIMPRO®.PRW.
- 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
- 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.
- Com relação os itens Perfumaria, Reagentes e Saneantes, esses itens deverão ser incluídos no combo do campo B6G_TIPPRO.
- 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®.
- 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®).
- 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 Fábrica devem ser mantidas para Brasíndice®.
- Solução 1: manipular o array 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 -> 1=Materiais;2=Medicamentos;3=Soluções;4=Perfumaria;5=Saneantes;6=Reagentes
- Após, no 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
- Com relação aos valores, o SIMPRO® permite exportações diversas de valores, mas como na Brasíndice®, iremos manter o Preço de Fábrica (PFB), o Preço Máximo ao Consumidor (PMC) e iremos incluir o PUSU (Preço do Usuário), 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®.
- Como na Brasíndice®, temos também a possibilidade de preço total ou fracionado, no campo B6G_TIPVAL, que será idêntico na SIMPRO®. Na parte xxx, iremos detalhar melhor os itens do layout.
- Demais regras e campos serão mantidos de forma igual.
- Lembrar que se acionei a opção Configurar da Tela 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 da SIMPRO® – PLSSIMPRO®, no browse devem ser exibidos apenas os itens da SIMPRO®, usando o campo B6G_TIPARQ para este fim
Importação - Regras
- 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.
- 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 apenas o modelo txt e csv, separados por ponto e vírgula.
- Além do nome do arquivo, que deverá ter nomes similares aos cadastrados na tela de configuração, deverá ser colocado também o código de atualização e os dois últimos dígitos do ano (2021 = 21). Exemplo: Se temos uma regra onde o nome definido foi SANEANTES+PFB, e o arquivo de atualização SIMPRO® foi 6/2021, o nome do arquivo deverá ser algo como SANEANTES_PFB_621.TXT ou SANEANTESPFB_621.CSV.
- Deverá ser exibido um parambox, onde o usuário deverá informar:
- Pasta onde os arquivos CSV/TXT estão localizados(OBRIGATÓRIO);
- Código Mensagem SIMPRO® (deverá ser igual ao do campo mensagens, existente no sistema VideoFarma) (OBRIGATÓRIO)
- Para cada atualização enviada, temos um código da VideoFarma – como a edição na Brasíndice®. Deverá ser colocado esse código aqui, como: 33/2021, logo, deverá ser colocado 33 e os dois últimos dígitos do ano.
- Data da mensagem da SIMPRO® (será informado como data inicial de vigência para os itens – BD4_VIGINI) e será subtraído -1 dia quando for para fechar vigência(OBRIGATÓRIO).
- Campo para informar data de fim de vigência, para os itens que estiverem no status Fora de Uso ou Descontinuado(OBRIGATÓRIO).
- CheckBox para informar se para os itens nos status Fora de Uso ou 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.
- 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, a saída encontrada foi ter o campo para o usuário 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.
- Contudo, em alguns registros aparece apenas a informação “VIGENTE” e assim, vai usar a data inserida pelo usuário.
- 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.
- Se localizar arquivo com nome igual a regra, mas a versão é diferente ou inexistente, o usuário deverá ser indagado se deseja importar o arquivo, mas a versão utilizada será a que está no Pergunte.
- 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 nenhuma.
- Se encontrar arquivos, mas nenhum bate com as regras cadastradas, exibir uma caixa de desambiguação de arquivos, onde será exibido os arquivos sem match com regras, e na outra coluna, exibir 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, não deverá ser exibida essa janela de escolha manual, pois conforme item B acima, uma regra só pode ter um arquivo relacionado.
- Logar essa inconsistência, para exibir no final do processamento para o usuário.
- Tais opções já existem na Brasíndice®.
- Criar rotina específica para leitura dos arquivos txt e csv da SIMPRO®, baseado no da Brasíndice®.
- Não é possível usar a mesma rotina da Brasíndice®, pois possui particularidades próprias
- A rotina deve contar com parte visual, para exibir o andamento do progresso das operações.
- Utilizar a classe FWFileReader() para leitura dos arquivos, setando um buffer de no mínimo, 10KB, para melhorar a performance da importação.
- https://tdn.totvs.com/display/framework/FWFileReader -> FwFileReader
- Utilizar o StrTokArr2 para criar o array baseado na string.
- Realizar o parser 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.
- No final da importação, exibir um resumo dos arquivos importados, com problemas e registros não válidos, caso aconteça
Importações – Tabelas
- Após as validações acima, necessitamos gravar ou atualizar as seguintes tabelas:
- 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.
- A BF8 só será criada se no campo B6G_CRITDE estiver como SIM. Caso contrário, não será gravada
- No arquivo SIMPRO® – similar ao Brasíndice® – temos o código da SIMPRO® e para maioria dos itens, temos o código TUSS equivalente.
- 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).
- 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, devemos finalizar a vigência, utilizando a data do pergunte Data mensagem – 1.
- Na sequência, verificar se já existe o código TUSS cadastrado, para inclusão ou alteração dos dados.
- 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 informada no parambox 621+ “|“ + B6G_TIPPRO + “|” + B6G_TIPO, ficando, por exemplo: “SIMPRO®|721 |1|2”.
- 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 atual -1, e gravar a nova BD4, com os dados necessários.
- Só gravar se tiver alteração de valor, se os ados são iguais, mesmo em edição diferente, não precisa executar o passo acima.
- Ao gravar os registros, criar ou atualizar os mesmos na tabela de terminologia BTQ, terminologia 64, conforme padrão TISS. Deve indicar na BTQ o código do Grupo (029 - MATERIAIS E OPME e 030 – MEDICAMENTOS).
- Medicamentos – 030
- Material – 029
- Perfumaria / Reagentes / Saneantes - 029
03. Nova tela de Controle de DPS 
04. Tabelas 
- Não será necessário criar nenhuma tabela nova, apenas modificar as existentes, para se adequar ao processo da SIMPRO®®.
05. TABELAS UTILIZADAS 
- 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
<!-- 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>
|