Apresentacao CBIS 2010

280 views
211 views

Published on

Apresentação realizada no CBIS 2010 em Porto de Galinhas em 19/out/10

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
280
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apresentacao CBIS 2010

  1. 1. Projeto de Identificação de Pacientes do Cartão SUS do estado de São Paulo Secretaria Estadual de Saúde de São Paulo - SESSP Laboratório de Sistemas Integráveis e Tecnológico - LSITEC Organização Pan-Americana da Saúde - OPAS Laboratório de Sistemas Integráveis – LSI EP/USP Emerson Moretto
  2. 2. O desafio <ul><li>Identificar e remover pacientes duplicados em uma base com ~30 milhões de pacientes </li></ul><ul><li>Estatísticas erradas </li></ul><ul><li>Consultas incertas </li></ul><ul><li>Registros homônimos ou são a mesma pessoa? </li></ul><ul><li>Informações não confiáveis </li></ul>Os problemas
  3. 3. Como resolver? <ul><li>No entanto... </li></ul><ul><li>Nenhum campo é 100% significativo </li></ul><ul><li>Comparação de nomes não é tão simples </li></ul><ul><ul><li>Erros de digitação </li></ul></ul><ul><ul><li>Erros de fonética </li></ul></ul><ul><li>Maior parte dos registros não possuem documentos preenchidos </li></ul>Comparando os registros entre si!
  4. 4. Comparar todos com todos? <ul><li>30 mi comparando todos com todos : </li></ul><ul><li>449 .999.985.000.000 comparações! </li></ul><ul><li>Computacionalmente falando*: </li></ul><ul><li>~ 2 anos </li></ul><ul><li>* considerando que cada comparação de pacientes leva 1 ms </li></ul>
  5. 5. A solução <ul><li>Criar conjuntos ! (divisão e conquista) </li></ul><ul><li>ou seja, </li></ul><ul><li>Agrupar os possíveis pacientes duplicados </li></ul><ul><li>e depois, </li></ul><ul><li>Comparar todos com todos , porém somente dentro do conjunto </li></ul>
  6. 6. Agrupamento Cintia F Souza = CTASZ Cintia Ferreira Sousa = CTASZ Cinthia F Souza = CTASZ Sintia Sousa = CTASZ Basta criarmos um Hash significativo para cada paciente usando fonética e considerações sobre erros de digitação Juliano Moraes = JLNMRE Giuliano Moraes = JLNMRE Giuliano Morais = JLNMRE CTASZ JLNRE Cintia Ferreira Sousa Mãe: Maria Sousa Primeiro nome fonético + último nome fonético + Primeiro nome da mãe fonético + último nome da mãe fonético Hash significativo = CTA SZ MR SZ Ex:
  7. 7. Comparando <ul><li>Com os grupos de candidatos formados... </li></ul><ul><li>Realizamos as comparações entre os candidatos do mesmo grupo apenas </li></ul>1 x 2 1 x 3 1 x 4 2 x 3 2 x 4 3 x 4 Progressão aritmética 1. Cintia F Souza = CTASZ 3. Cintia Ferreira Sousa = CTASZ 2. Cinthia F Souza = CTASZ 4. Sintia Sousa = CTASZ Grupo CTASZ
  8. 8. A comparação <ul><li>É feita uma comparação estatística que gera um percentual de similaridade entre 2 pacientes </li></ul><ul><li>Para os nomes , usamos algoritmos de distância de caracteres considerando fonemas e erros de digitação </li></ul><ul><ul><li>Algoritmo Levenshtein (bastante modificado) </li></ul></ul><ul><ul><li>Ex: Cinthya Fereira Souza x Cintia Ferreira Sousa ~= 92,3% </li></ul></ul><ul><li>Para as datas , algoritmos de consideração de erros de digitação baseados em erros comuns e na disposição do teclado </li></ul><ul><ul><li>Ex: 21 /09/1982 e 12 /09/1982 ~= 89% de similaridade </li></ul></ul>
  9. 9. A comparação <ul><li>nome Cinthya Fereira Souza x Cintia Ferreira Sousa </li></ul><ul><li>92,3% * peso (0.29) </li></ul><ul><li>nome da mãe Maria Souza x Maria Sousa </li></ul><ul><li>98,1% * peso (0.26) </li></ul><ul><li>nome do pai Paulo Oliveira Souza x Paulo Oliveira Souza </li></ul><ul><li>100% * peso (0.20) </li></ul><ul><li>data de nascimento 20/09/1982 x 21/09/1982 </li></ul><ul><li>86% * peso (0.25) </li></ul><ul><li>Percentual de similaridade: 93,76 % </li></ul>
  10. 10. A comparação <ul><li>if percentual de similaridade >= 68% </li></ul><ul><ul><li>Comparação é considerada candidata e vai para uma base de dados de comparação </li></ul></ul><ul><ul><li>O usuário analisa as comparações candidatas através de uma interface que acessa esta base </li></ul></ul>
  11. 11. Demonstração
  12. 12. Tela de listagem
  13. 13. Tela de comparação
  14. 14. Arquitetura Thread de comparação Thread de comparação Thread de comparação Distribuidor ETL Escalável sobre TCP/IP Comparação >= 68% Decisão do usuário Java 6 Base de dados Cartão SUS Oracle 10g Banco de dados em árvore desenvolvido pelo LSI Banco de comparações PostgreSQL 8.4 Interface do usuário Flex 3.4
  15. 15. Algumas informações técnicas <ul><li>Feito em Java 6 </li></ul><ul><li>Multi-thread assíncrono sobre TCP/IP </li></ul><ul><li>Interface do usuário em Adobe Flex 3.4 </li></ul><ul><li>Desenvolvido e executando em Linux (CentOS) </li></ul><ul><li>“ Magic numbers ” foram encontrados por análise estatística </li></ul><ul><li>Para processar os 30 milhões ~= 3 dias </li></ul><ul><li>Atualização diária de novos registros (~5.000 pacientes) leva 40s </li></ul><ul><li>Tempo médio de cada comparação: 0,12 ms </li></ul>
  16. 16. Obrigado! <ul><li>Emerson Moretto </li></ul><ul><li>[email_address] </li></ul>Financiamento Desenvolvimento

×