O Departamento de Informática do SUS (DATASUS) disponibiliza os microdados do sistema de saúde pública do Brasil em um servidor FTP.
Porém, quem ainda utiliza FTP? 🧓
Os navegadores já deram cabo do suporte ao protocolo há algum tempo, principalmente por preocupações com segurança e pouquíssimo uso.
No entanto, ainda há empresas e instituições públicas que disponibilizam arquivos unicamente por esse protocolo da idade das pedras da tecnologia da informação. Uma dessas instituições é o DATASUS.
Se você acha que baixar arquivos de um servidor FTP se tornou confuso com o abandono do suporte a esse protocolo pelos navegadores, não sabe como é a organização dos arquivos de microdados do DATASUS.
Existem várias bases de dados no DATASUS. Os arquivos dessas bases são particionadas por data de referência e algumas também são particionadas por unidade da federação. Assim, muitas vezes é necessário fazer o download de dezenas, ou até milhares, de arquivos para se obter os dados necessários para um trabalho.
O pior é que cada base segue uma convenção de nomeação de arquivo diferente. Bem… Existem certos padrões nas convenções de nomeação de arquivo, mas nem todas as bases seguem um mesmo padrão, infelizmente 😞.
Baixar as bases do DATASUS pode ser é uma tarefa tediosa.
Por isso criei o datasus-fetcher, um pacote Python, e uma ferramenta de linha de comando, para baixar os arquivos de microdados do DATASUS sem muito esforço e deixá-los de forma organizada no seu sistema de arquivos.
O datasus-fetcher
O datasus-fetcher usa uma file naming convention para facilitar a busca dos dados necessários tanto por humanos quanto por outros sistemas automatizados (como scripts em Python e R). A file naming convention do datasus-fetcher é bem simples, consistindo de três partes:
- abreviação da base de dados (dataset)
- partição, se houver
- data da última modificação no servidor FTP do DATASUS
Essas três partes são separadas por sublinhado (_), também conhecido como underscore ou underline. Assim, o arquivo sih-rd_2020-sp_20210102.dbc
é um arquivo da base de dados SIH-RD, particionado por estado (SP) e data de referência 2020, e foi modificado pela última vez em 2 de janeiro de 2021.
Instalando o datasus-fetcher
O datasus-fetcher está no Python Package Index (PyPI) e pode ser instalado facilmente com o comando pip:
pip install datasus-fetcher
Ou também pode ser instalado pelo pipx, se você quiser ter o datasus-fetcher como um comando global no terminal:
pipx install datasus-fetcher
Ou ainda, se você quiser instalar o datasus-fetcher a partir do código-fonte, você pode clonar o repositório no GitHub e instalar o pacote com o comando pip:
git clone https://github.com/dankkom/datasus-fetcher.git
cd datasus-fetcher
pip install .
Listando as bases de dados
Para listar as bases de dados disponíveis no servidor FTP do DATASUS, use o comando list-datasets
, que tem a seguinte sintaxe:
usage: datasus-fetcher list-datasets [-h] [datasets ...]
positional arguments:
datasets Datasets to list
options:
-h, --help show this help message and exit
A saída desse comando é uma lista de abreviações das bases de dados disponíveis no servidor FTP do DATASUS, o número de arquivos disponíveis, o tamanho total dos arquivos e o período de referência dos arquivos.
-----------Dataset----------|---Nº files---|--Total size--|------Period range------
base-populacional-ibge-pop | 33 files | 150.4 MB | from 1980 to 2012
base-populacional-ibge-popt | 29 files | 2.3 MB | from 1992 to 2021
base-territorial-conversao | 28 files | 2.1 MB | from 1992 to 2021
base-territorial-mapas | 83 files | 124.4 MB | from 1991 to 2013
cih-cr | 868 files | 157.5 MB | from 2008-01 to 2011-04
ciha | 4052 files | 3146.2 MB | from 2011-01 to 2024-04
cnes-dc | 6102 files | 112.6 MB | from 2005-08 to 2024-05
cnes-ee | 3201 files | 4.3 MB | from 2007-03 to 2021-07
... | ... | ... | ...
sinasc-dnex | 9 files | 0.5 MB | from 2014 to 2022
siscolo-cc | 2858 files | 2380.9 MB | from 2006-01 to 2015-10
siscolo-hc | 2858 files | 38.9 MB | from 2006-01 to 2015-10
sismama-cm | 1675 files | 4.8 MB | from 2009-01 to 2015-07
sismama-hm | 1674 files | 5.7 MB | from 2009-01 to 2015-07
sisprenatal-pn | 944 files | 221.6 MB | from 2012-01 to 2014-12
Total size: 294.1 GB
Total files: 164810 files
Baixando os arquivos
O datasus-fetcher pode baixar três tipos de arquivos: dados, documentação e auxiliares.
Arquivos de dados
Os arquivos de dados são os arquivos de microdados propriamente ditos, no formato DBC. Para baixar os arquivos de dados, use o comando data
, que tem a seguinte sintaxe:
usage: datasus-fetcher data [-h]
[--start START] [--end END]
[--regions REGIONS [REGIONS ...]]
--data-dir DATA_DIR
[-t THREADS]
[datasets ...]
options:
-h, --help show this help message and exit
--data-dir DATA_DIR Directory to download to
-t THREADS, --threads THREADS
Number of concurrent fetchers
dataset:
datasets Datasets to download (eg.: sih-rd, cnes-dc, ...)
--start START Start period to download (eg.: 2001 OR 2001-01)
--end END End period to download (eg.: 2020 OR 2020-12)
--regions REGIONS [REGIONS ...]
Regions to download (eg.: br, ac, am, ce, ...)
Para baixar dados de uma base específica, use o seguinte comando:
datasus-fetcher data sim-do --data-dir ./data
Esse comando baixa todos os arquivos da base SIM-DO disponíveis no servidor FTP do DATASUS.
Para baixar dados de uma base E um período específico, use o seguinte comando:
datasus-fetcher data sinan-deng --start 2010 --end 2023 --data-dir ./data
Esse comando baixa todos os arquivos da base SINAN-DENG disponíveis no servidor FTP do DATASUS entre 2010 e 2023.
Para baixar dados de uma base E um período específico E de uma região específica, use o seguinte comando:
datasus-fetcher data sia-pa --start 2010 --end 2023 --regions sp rj --data-dir ./data
Esse comando baixa todos os arquivos da base SIA-PA disponíveis no servidor FTP do DATASUS entre 2010 e 2023 e que são referentes aos estados de São Paulo e Rio de Janeiro.
A opção --data-dir
é obrigatória e indica o diretório onde os arquivos serão salvos.
A opção --threads
é opcional e indica o número de threads que serão usadas para baixar os arquivos. O padrão é 2.
Arquivos de documentação e auxiliares
O comando docs
baixa a documentação dos arquivos de microdados. A sintaxe é a seguinte:
usage: datasus-fetcher docs [-h] [--data-dir DATA_DIR] [datasets ...]
positional arguments:
datasets Datasets documentation to download
options:
-h, --help show this help message and exit
--data-dir DATA_DIR Directory to download to
O comando aux
baixa as tabelas auxiliares. As tabelas auxiliares são tabelas que contêm informações adicionais sobre os dados de microdados, como tabelas de conversão de códigos, tabelas de referência, etc. A sintaxe é a seguinte:
usage: datasus-fetcher aux [-h] [--data-dir DATA_DIR] [datasets ...]
positional arguments:
datasets Datasets auxiliary tables to download
options:
-h, --help show this help message and exit
--data-dir DATA_DIR Directory to download to
Movendo arquivos antigos
Como dito anteriormente, o datasus-fetcher baixa cada nova versão de um arquivo com um nome diferente. Isso é o design da ferramenta, pois permite acumular um histórico de versões dos arquivos de dados. Por isso, quando realizamos o download de novos arquivos podemos ter várias versões antigas salvas no diretório de dados. Isso pode ser desejável para alguns. Mas para analistas e cientistas de dados, que só querem fazer suas análises e modelos com os dados mais recentes, isso é só um incômodo. Para esses usuários existe o comando archive
, que arquiva os dados defasados, movendo-os para outro diretório no sistema de arquivos.
O comando archive
tem a seguinte sintaxe:
usage: datasus-fetcher archive [-h] --data-dir DATA_DIR --archive-data-dir ARCHIVE_DATA_DIR
options:
-h, --help show this help message and exit
--data-dir DATA_DIR
--archive-data-dir ARCHIVE_DATA_DIR
Lendo os dados
Não é escopo deste texto a leitura dos arquivos DBC do DATASUS, mas vou dar uma dica: usem o pacote {read.dbc} do R. O pacote é muito bom e lê os arquivos DBC do DATASUS sem problemas.
O pacote {read.dbc} pode ser instalado a partir do CRAN:
install.packages("read.dbc")
E os arquivos DBC podem ser lidos com o comando read.dbc
:
library(read.dbc)
dados <- read.dbc("datasus/sinan-deng/2022/sinan-deng_2022-br_20230821.dbc")
tibble::as_tibble(head(dados))
A saída do comando acima é um tibble com as primeiras seis linhas do arquivo DBC lido:
# A tibble: 6 × 121
TP_NOT ID_AGRAVO DT_NOTIFIC SEM_NOT NU_ANO SG_UF_NOT ID_MUNICIP ID_REGIONA ID_UNIDADE DT_SIN_PRI
<fct> <fct> <date> <fct> <fct> <fct> <fct> <fct> <fct> <date>
1 2 A90 2022-01-12 202202 2022 12 120020 1941 6801099 2022-01-06
2 2 A90 2022-08-11 202232 2022 12 120020 1941 5336171 2022-08-03
3 2 A90 2022-03-25 202212 2022 12 120020 1941 2002116 2022-03-21
4 2 A90 2022-03-07 202210 2022 12 120020 1941 6801099 2022-03-04
5 2 A90 2022-01-18 202203 2022 12 120020 1941 6801099 2022-01-18
6 2 A90 2022-02-21 202208 2022 12 120020 1941 6801099 2022-02-19
# ℹ 111 more variables: SEM_PRI <fct>, ANO_NASC <fct>, NU_IDADE_N <int>, CS_SEXO <fct>,
# CS_GESTANT <fct>, CS_RACA <fct>, CS_ESCOL_N <fct>, SG_UF <fct>, ID_MN_RESI <fct>,
# ID_RG_RESI <fct>, ID_PAIS <fct>, DT_INVEST <date>, ID_OCUPA_N <fct>, FEBRE <fct>,
# MIALGIA <fct>, CEFALEIA <fct>, EXANTEMA <fct>, VOMITO <fct>, NAUSEA <fct>, DOR_COSTAS <fct>,
# CONJUNTVIT <fct>, ARTRITE <fct>, ARTRALGIA <fct>, PETEQUIA_N <fct>, LEUCOPENIA <fct>,
# LACO <fct>, DOR_RETRO <fct>, DIABETES <fct>, HEMATOLOG <fct>, HEPATOPAT <fct>, RENAL <fct>,
# HIPERTENSA <fct>, ACIDO_PEPT <fct>, AUTO_IMUNE <fct>, DT_CHIK_S1 <date>, DT_CHIK_S2 <date>, …
# ℹ Use `colnames()` to see all variable names
Conclusão
O datasus-fetcher é uma ferramenta simples e eficiente para baixar os arquivos de microdados do DATASUS. Com ele, é possível baixar os arquivos de dados, documentação e auxiliares de forma rápida e organizada. O datasus-fetcher é uma ferramenta de linha de comando, mas também pode ser usada como um pacote Python para automatizar o download dos arquivos de microdados do DATASUS.