rfsaldanha / microdatasus

Download de dados do DataSUS e pré-processamento no R.
https://rfsaldanha.github.io/microdatasus/
Other
230 stars 57 forks source link

Diferença dados microdatasus vs Tabnet #41

Closed gocdata closed 3 years ago

gocdata commented 3 years ago

Fala pessoal, estou com uma dúvida relacionada a fonte de dados nessas duas bases. Quando pesquiso utilizando os mesmos critérios obtenho resultados diferentes.

No tabnet utilizando as características abaixo para Minas Gerais obtenho 759 internações aprovadas: AIH aprovadas segundo Município Lista Morb CID-10: Asma Período: Mar/2019

Já utilizando o pacote no R com os comandos abaixo obtenho 744 internações:

` datasus_aprovadas <- microdatasus::fetch_datasus(information_system = "SIH-RD", year_start = 2019,year_end = 2019, month_start = 03,month_end = 03, uf="MG") datasus_aprovadas <- microdatasus::process_sih(datasus_aprovadas)

datasus_aprovadas2 <- datasus_aprovadas %>% filter(grepl("J45",DIAG_PRINC) | grepl("J45",DIAG_SECUN) | grepl("J45",DIAGSEC1) | grepl("J45",DIAGSEC2) | grepl("J45",DIAGSEC3) | grepl("J45",DIAGSEC4) | grepl("J45",DIAGSEC5) | grepl("J45",DIAGSEC6) | grepl("J45",DIAGSEC7) | grepl("J45",DIAGSEC8) | grepl("J45",DIAGSEC9)) `

Sinto que devo estar cometendo algum erro mas não consigo identificar, ou essa diferença entre as duas bases já é esperada? At.te

microdatasus version 1.4.1

rfsaldanha commented 3 years ago

Olá! Já me deparei com isso antes. Tem uma característica que não está muito bem documentada nos dados do DataSUS que é a seguinte: quando baixamos um arquivo de determinada UF e ano, estamos nos referindo à UF de processamento dos dados e ao ano de processamento dos dados.

Se você estiver comparando por data de internação e UF de residência do paciente, por exemplo, alguns registros podem estar dispersos em arquivos de outros anos e, até mesmo de outras UFs.

Para trabalhar com MG em março de 2019, tente baixar todos os arquivos entre janeiro e junho de 2019 para MG (três meses antes e três meses depois do mês que te interessa), e veja o número de registros. Se não resolver, tente pegar todas as UFs também.

Depois fale aqui se deu certo!

fulvionedel commented 3 years ago

Olá @gocdata e @rfsaldanha

Considero o que o Raphael diz super importante pra melhor precisão da análise. É muito comum pensar que foram analisadas as internações ocorridas num determinado mês quando na realidade foram analisadas as internações faturadas naquele mês (a maioria, mas não todas, ocorridas no mesmo mês). Mas penso que não é essa a explicação pro problema que encontraste. Em princípio, o TABNET deveria ler os mesmos arquivos DBC (organizados por mês de faturamento e UF do hospital de internação) que o microdatasus lê no FTP do datasus

A tabulação no TABNET é feita pelo CID do diagnóstico principal da internação (DIAG_PRINC) apenas. Então acho que não se deve incluir os diagnósticos em outros campos (DIAG_SECUN, DIAGSEC*). Assim, acho que o númreo de internações por CID J45 deve ser

# 'datasus_aprovadas' criado com o código original
teste1 <- datasus_aprovadas %>% filter(grepl("J45",DIAG_PRINC))
nrow(teste1)
[1] 733

A diferença está em que o "J46" também é CID de asma na Lista Morb CID-10 (Norma Técnica da tabulação no TABNET: http://tabnet.datasus.gov.br/cgi/sih/Morb_geral_loc_res_2008.pdf). O código então deveria ser teste2 <- datasus_aprovadas %>% filter(grepl("J45",DIAG_PRINC) | grepl("J46",DIAG_PRINC)) O estranho é que ainda dá diferença. Em vez dos esperados 759, são > nrow(teste2) [1] 761 Esses dois casos a mais são do sexo feminino:

> teste2 %>% 
+   group_by(SEXO) %>% 
+   count()
# A tibble: 2 x 2
# Groups:   SEXO [2]
  SEXO      n
  <fct> <int>
1 1       374
2 3       387

A diferença não é grande, mas não deveria haver. @gocdata, sugiro que baixes o arquivo RDMG1903.bdc (ftp://ftp.datasus.gov.br/dissemin/publicos/SIHSUS/200801_/Dados/RDMG1903.dbc) e faças a tabulação no TabWin. Depois comenta aqui o resultado, por favor.

gocdata commented 3 years ago

Boa tarde a todos, muito obrigado pelas explicações @rfsaldanha e @fulvionedel . De fato eu havia me enganado em relação aos diagnósticos secundários e a não inclusão do J46. Acabei de gerar os cálculos atualizando o script e também retornou 761. Também segui a dica de testar no tabwin, lá eu baixei o arquivo .dbc e .def pelo ftp datasus e também retornou 761 resultados!

O mistério continua, será que tem a possibilidade de estar errado no DataNet? Ou ele faz alguma limpeza nos dados antes de retornar os valores?

gocdata commented 3 years ago

Acabei de fazer uma comparação mês a mês. Vejam que não é consistente, tem mês que o tabnet é maior por exemplo. Em ambos coloquei para agrupar por mês de processamento.

Ano/Mês processamento tabwin_freq tabnet_freq
..2019 8480 8477
..Janeiro/2019 543 542
..Fevereiro/2019 489 490
..Março/2019 761 759
..Abril/2019 811 813
..Maio/2019 880 878
..Junho/2019 853 852
..Julho/2019 828 828
..Agosto/2019 862 863
..Setembro/2019 804 803
..Outubro/2019 629 628
..Novembro/2019 503 503
..Dezembro/2019 517 518
Total 8480 8477
fulvionedel commented 2 years ago

Oi @gocdata, é de fato a mesma tabulação nos dois casos ou pode ser que uma seja sobre internações ocorridas e outra sobre AIHs pagas, viste as notas técnicas no Tabnet?

gocdata commented 2 years ago

Fala @fulvionedel , aparentemente é a mesma tabulação sim. Fiz pelo tabnet, tabwin e baixando as tabelas e fazendo pelo R, testei com diferentes informações também (colunas/variáveis). Permanece uma pequena diferença entre o tabnet e o tabwin e pacote no R. Não consegui identificar o porquê; a dica de pegar meses posteriores ao período que se quer analisar melhorou um pouco a discrepância, mas não resolveu o problema.

fulvionedel commented 2 years ago

Que coisa! O tabwin com os arquivos do FTP é consistente com o microdatasus (R) também nos outros meses?