Apresentacao CBIS 2010

17
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

Transcript of Apresentacao CBIS 2010

Page 1: Apresentacao CBIS 2010

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

Page 2: Apresentacao CBIS 2010

Contexto

Estatísticas erradas Consultas incertas Registros homônimos ou são a mesma pessoa? Informações não confiáveis!

Os problemas

Banco de dados com pacientes replicados• Paciente cria um novo Cartão SUS a cada atendimento...• Mais de uma fonte de dados• Erros de digitação

Page 3: Apresentacao CBIS 2010

O desafio

Identificar e remover pacientes duplicados em uma base com

~30 milhões de pacientes

Page 4: Apresentacao CBIS 2010

Como resolver?

Mas...

Nenhum campo é 100% significativo

Comparação de nomes não é tão simples

Erros de digitação

Erros de fonética

Maior parte dos registros não possuem documentos

preenchidos

Comparando os registros entre si!

Page 5: Apresentacao CBIS 2010

Comparar todos com todos?

30 mi comparando todos com todos:

449.999.985.000.000 comparações!

Computacionalmente falando*:

~ 2 anos* considerando que cada comparação de pacientes leva 1 ms

Page 6: Apresentacao CBIS 2010

A solução

Criar conjuntos! (divisão e conquista)

ou seja,

Agrupar os possíveis pacientes duplicados

e depois,

Comparar todos com todos, porém somente

dentro do conjunto

Page 7: Apresentacao CBIS 2010

Agrupamento

Cintia F Souza = CTASZ

Cintia Ferreira Sousa = CTASZCinthia F Souza = CTASZ

Sintia Sousa = CTASZ

Basta criarmos um Hash significativo para cada pacienteusando fonética e considerações sobre erros de digitação

Juliano Moraes = JLNMREGiuliano Moraes = JLNMREGiuliano Morais = JLNMRE

CTASZJLNMRE

Cintia Ferreira SousaMã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 = CTASZMRSZ

Ex:

Page 8: Apresentacao CBIS 2010

Comparando

Com os grupos de candidatos formados...

Realizamos as comparações entre os candidatos do mesmo grupo apenas

1 x 21 x 31 x 42 x 32 x 43 x 4

1. Cintia F Souza = CTASZ

3. Cintia Ferreira Sousa = CTASZ

2. Cinthia F Souza = CTASZ

4. Sintia Sousa = CTASZ

Grupo CTASZ

Progressãoaritmética

Page 9: Apresentacao CBIS 2010

A comparação

É feita uma comparação estatística que gera um percentual de similaridade entre 2 pacientes

Para os nomes, usamos algoritmos de distância de caracteres considerando fonemas e erros de digitação Algoritmo Levenshtein (bastante modificado) Ex: Cinthya F Souza x Cintia Ferreira Sousa ~= 92,3%

Para as datas, algoritmos de consideração de erros de digitação baseados em erros comuns e na disposição do teclado Ex: 21/09/1982 e 12/09/1982 ~= 89% de similaridade

Page 10: Apresentacao CBIS 2010

A comparação

nome Cinthya Fereira Souza x Cintia Ferreira Sousa

92,3% * peso (0.29)

nome da mãe Maria Souza x Maria Sousa

98,1% * peso (0.26)

nome do pai Paulo Oliveira Souza x Paulo Oliveira Souza

100% * peso (0.20)

data de nascimento 20/09/1982 x 21/09/1982

86% * peso (0.25)

Percentual de similaridade: 93,76 %

Page 11: Apresentacao CBIS 2010

A comparação

if percentual de similaridade >= 68% {

Comparação é considerada candidata e vai para uma base de dados de comparação

O usuário analisa as comparações candidatas através de uma interface que acessa esta base

}

Page 12: Apresentacao CBIS 2010

Demonstração

Page 13: Apresentacao CBIS 2010

Tela de listagem

Page 14: Apresentacao CBIS 2010

Tela de comparação

Page 15: Apresentacao CBIS 2010

ArquiteturaBase de dados

Cartão SUSOracle 10g

Banco de dadosem árvore

desenvolvido pelo LSI

Thread de comparação Thread de

comparação

Thread de comparação

Distribuidor

ETL

Escalável sobreTCP/IP

Banco de comparaçõesPostgreSQL 8.4

Comparação>= 68%Interface do

usuárioFlex 3.4

Decisão dousuário

Page 16: Apresentacao CBIS 2010

Algumas informações técnicas

Feito em Java 6 Multi-thread assíncrono sobre TCP/IP Interface do usuário em Adobe Flex 3.4 Desenvolvido e executando em Linux (CentOS) “Magic numbers” foram encontrados por análise

estatística Para processar os 30 milhões ~= 3 dias Atualização diária de novos registros

(~5.000 pacientes) leva 40s Tempo médio de cada comparação: 0,12 ms

Page 17: Apresentacao CBIS 2010

Obrigado!

Emerson Moretto

[email protected]

Desenvolvimento