Alguns anos atrás, a Tecnoage assumiu a T.I. de um novo cliente que estava migrando de um software EHR para um ERP hospitalar.
Esse cliente já tinha mais de 30 anos de história e vários dados dos pacientes tinham que ser migrados.
No contrato com o fornecedor do ERP, foi incluída a migração dos principais registros clínicos e do cadastro dos pacientes.
Após rodar o script de importação de dados na base de homologação do ERP, notamos que foram gerados vários cadastros duplicados de pacientes, então questionamos o fabricante e o mesmo fez alguns ajustes no script. Os ajustes diminuíram os cadastros duplicados, mas continuamos com bastantes, e não tivemos novas tratativas por parte do fabricante.
O próprio ERP possui uma função de acerto de duplicidade, entretanto o processo teria que ser feito manualmente.
Outros clientes que já trabalhamos tinham pessoas específicas para realizar esse processo, mas essa não era a realidade do nosso novo cliente.
A partir daí decidi criar um script de acerto de duplicidade para ser rodado após a importação na base de produção. Para isso precisei “debugar” a aplicação e descobrir o código que era rodado ao realizar o acerto de duplicidade no próprio ERP.
Nessa etapa fiz um trace no banco de dados e descobri a procedure que era chamada.
O próximo passo foi montar a query que busca os cadastros duplicados no banco de dados. Considerei como cadastro duplicado aqueles que tinham o mesmo nome (sem considerar acentos e sem diferenciar letras maiúsculas e minúsculas) e a mesma data de nascimento.
O script criado pode ser representado pelo seguinte pseudocódigo:
para cada registro_duplicado em query_registros_duplicados faça
acerta_duplicidade(registro_duplicado.cod_pessoa_origem, registro_duplicado.cod_pessoa_destino)
# procedure utilizada pelo ERP
insere_log_acerto_duplicidade
# registra em uma tabela de log o código origem e destino, a data e se houve algum erro fim para
Com a criação do script bastou criar a Job que seria executada fora do período de trabalho, para evitar sobrecarga no banco de dados.
No término da execução do script eu tinha a tabela de log para verificar quais acertos de duplicidade deram problema e por quê.
No início e durante a execução do script setamos os alertas para serem enviados para mim, a fim de saber quantos registros estavam pendentes e se tudo estava funcionando corretamente, mas esse é um assunto para outro dia!
Autor: João Filipe Cavichiolo Storrer