Como obter e tratar Dados do Datasus

Dados do Datasus são frequentemente demandados e não são fáceis de encontrar. Nesse tópico explora-se algumas dicas importantes de onde esses dados podem ser conseguidos e como podem ser trabalhados. As dicas provêm principalmente do Paulo Henrique Barros e André Marques dos Santos.

Acesso aos dados

Documenta√ß√Ķes podem ser acessada pelos seguintes links:

Para baixar de outras bases basta entrar no link http://www2.datasus.gov.br/DATASUS/index.php?area=0901

E escolher a base que quer!!

Alguns dados abertos também estão disponíveis no portal OpenDataSUS:

https://opendatasus.saude.gov.br

Tratando os dados usando R

Os dados podem ser tratados usando o pacote read.dbc. Veja abaixo um exemplo de utilização em R:

library(read.dbc)

datasus<- read.dbc("DOINF02.DBC")

Agradecimentos à Daniela Petruzalek por criar este pacote em R.

Uma outra possibilidade é usar o pacote Microdatasus, desenvolvido pelo Rafael Saldanha.

Instalação:

install.packages("devtools")
devtools::install_github("rfsaldanha/microdatasus")

Exemplo de uso:

library(microdatasus)
dados <- datasus_fetch(year_start = 2013, year_end = 2014, uf = "RJ", information_system = "SIM-DO")
dados <- process_sim(dados)

Para mais informa√ß√Ķes, consulte o manual.

Tratando os dados usando Python

Além da library do R também é possível utilizar o pysus (inclusive ele usa uma parte da library read.dbc) no python, principalmente com o jupyter notebook https://pypi.org/project/PySUS/

from pysus.online_data.sinasc import download
df = download('SE', 2015)
df.head()

Outros exemplos: https://github.com/AlertaDengue/PySUS

Agradecimentos ao Flávio Codeço Coelho por criar este pacote em Python.

Convertendo os dados para CSV

Outra forma de trabalhar com os dados é convertê-los para CSV, para depois usar a sua ferramenta de preferência. Este conversor chamado dbc2csv pode ser usada para converter os arquivos .dbc para o formato .csv.

7 Curtidas

Caso as pessoas tenham interesse nós desenvolvemos um curso gratuito que ensina a utilizar o software TABWIN (disponibilizado pelo próprio datasus). http://www.atsaude.com.br/curso-tabwin-gratuito-ead/

Além da library do R também é possível utilizar o pysus (inclusive ele usa uma parte da library read.dbc) no python, principalmente com o jupyter notebook

alguns exemplos do pysus:
https://pysus.readthedocs.io/en/latest/Dengue.html
https://pysus.readthedocs.io/en/latest/Chikungunya.html

4 Curtidas

Desenvolvi a fun√ß√£o em R abaixo que permite programaticamente baixar os dados que se queira do Datasus bastando alterar os par√Ęmetros

hack_datasus <- function(sistema, modalidade, tipo_arquivo, ano, UF, mes){
  
  #Função gera dataframe a partir de ftp feita na página do datasus
  
  #sistema ex:'SIHSUS' Verificar os sistemas disponíveis em http://www2.datasus.gov.br/DATASUS/index.php?area=0901&item=1
  #modalidade  'dados'
  #tipo_arquivo ex: 'RD'#Varia conforme o sistema
  #ano ex: 17 Dois √ļltimos d√≠gitos do ano 
  #UF ex:'AL' Sigla de UF Brasileira
  #mes ex:'12' strings entre 01 e 12
  
  
  dest_file<- paste0(tipo_arquivo,UF,ano,mes,".dbc")
  str_download <- paste0("ftp://ftp.datasus.gov.br/dissemin/publicos/",sistema,"/","200801","_/",modalidade,"/",tipo_arquivo,UF,ano,mes,".dbc")
  download.file(str_download,destfile = dest_file, mode='wb')
  library(read.dbc)
  datasus<- read.dbc(dest_file)
  
  
}

sistema <- 'SIASUS' #Verificar os sistemas disponíveis em http://www2.datasus.gov.br/DATASUS/index.php?area=0901&item=1
modalidade <- 'dados'
tipo_arquivo<- 'ACF'#Varia conforme o sistema
ano <- 18 #Dois √ļltimos d√≠gitos do ano 
UF <- 'SP' #Siglas das UFs Brasileiras
mes<- '01' #strings entre 01 e 12


#Carrega em df_datasus os dados relativos à base de dados montada a partir dos parãmetros
df_datasus<- hack_datasus(sistema, modalidade, tipo_arquivo, ano, UF, mes)
4 Curtidas

Estive procurando uma alternativa em Python para ler os dados do Datasus, experimentei e descobri que o pacote dbfread funciona para os arquivos DBF (não compactados). Para os arquivos com extensão DBC (compactados), ainda não encontrei uma solução.

Abrindo arquivos DBF no Pandas

Usando a biblioteca dbfread é possível, segundo a sua documentação, abrir um arquivo DBF e jogá-lo em um DataFrame do Pandas.

Segue um exemplo com o arquivo CADMUN.dbf:

import dbfread, pandas as pd

dbf = dbfread.DBF('dados/CADMUN.dbf')

df = pd.DataFrame(iter(dbf))

In [9]: df.head()                                                               
Out[9]: 
   MUNCOD MUNCODDV SITUACAO MUNSINP  ... LATITUDE LONGITUDE ALTITUDE      AREA
0  000000  0000000    IGNOR   00000  ...    0.000     0.000      0.0     0.000
1  110000  1100000    IGNOR   26000  ...    0.000     0.000      0.0     0.000
2  110001  1100015    ATIVO   26016  ...  -11.929   -61.996    350.0  7066.702
3  110002  1100023    ATIVO   26004  ...   -9.913   -63.041    142.0  4426.558
4  110003  1100031    ATIVO   26020  ...  -13.492   -60.545    230.0  1314.355

[5 rows x 28 columns]

In [10]: len(df)                                                                
Out[10]: 5652

In [11]: df.columns                                                             
Out[11]: 
Index(['MUNCOD', 'MUNCODDV', 'SITUACAO', 'MUNSINP', 'MUNSIAFI', 'MUNNOME',
       'MUNNOMEX', 'OBSERV', 'MUNSINON', 'MUNSINONDV', 'AMAZONIA', 'FRONTEIRA',
       'CAPITAL', 'UFCOD', 'MESOCOD', 'MICROCOD', 'MSAUDCOD', 'RSAUDCOD',
       'CSAUDCOD', 'RMETRCOD', 'AGLCOD', 'ANOINST', 'ANOEXT', 'SUCESSOR',
       'LATITUDE', 'LONGITUDE', 'ALTITUDE', 'AREA'],
      dtype='object')

Infelizmente, o dbfread ainda não suporta arquivos DBC. Mas criei uma issue no repositório no Github para registrar a ideia.

3 Curtidas

Eu criei um script interativo para baixar bases completas do Datasus.
Os arquivos s√£o puxados direto do FTP.

3 Curtidas

Especificamente sobre os dados do sistema CNES, vale à pena conhecer a página de documentação do sistema. Segue link abaixo:

http://cnes.datasus.gov.br/pages/downloads/documentacao.jsp

4 Curtidas

O @turicas me indicou também esta ferramenta que converte dados do formato .dbc para .csv. Segundo ele, ele a tem usado para tratar os dados do DataSUS.

2 Curtidas

Esse artigo publicado no peri√≥dico ‚ÄúCadernos de Sa√ļde P√ļblica‚ÄĚ (vol. 35, n. 9, set, 2019) pode ser √ļtil:

‚ÄúMicrodatasus: pacote para download e pr√©-processamento de microdados do Departamento de Inform√°tica do SUS (DATASUS)‚ÄĚ

Os autores são da FioCruz e do Departamento de Estatística da Universidade Federal de Juiz de Fora.

2 Curtidas

Obrigado pela referência, @Bruno! Aqui está o link direto para o pacote R Microdatasus, feito por um dos autores do artigo:

1 Curtida

Parece que o DATASUS est√° desenvolvendo um Portal de Dados Abertos com os dados do SUS:

Em 19/05/2020 tinha 6 conjuntos de dados.

2 Curtidas

@Bruno, foi um achado esse novo portal! Obrigado! Já acrescentei a informação também na postagem original.

1 Curtida