
Tutorial 1: Importación de Datos del DATASUS
Equipo climasus4r
17/10/2026
Source:vignettes/01-importacao.Rmd
01-importacao.RmdObjetivo
Al final de este tutorial usted será capaz de importar
microdatos de los Sistemas de Información en Salud del DATASUS
con una única función — sus_data_import() — y de controlar
sus principales recursos: la elección del sistema (SIM,
SIH, SINAN, SINASC, CNES, SIA) y sus subsistemas, el recorte
espacial (por UF, por región predefinida o por municipio), la
diferencia entre sistemas anuales y mensuales, la
elección del backend de procesamiento y — fundamental
para trabajos reproducibles y de gran volumen — la caché
inteligente y el procesamiento paralelo.
La importación es la primera etapa del pipeline de
climasus4r. Todo lo que viene después (estandarización,
filtrado, creación de variables, agregación, unión espacial, vínculo
socioeconómico, integración climática y modelado) parte de la base bruta
construida aquí.
Contexto científico
La investigación en clima y salud en Brasil se apoya en los Sistemas de Información en Salud (SIS) mantenidos por el Ministerio de Salud y puestos a disposición por el DATASUS. Cada sistema registra un tipo de evento, con cobertura nacional y granularidad municipal:
- SIM — Sistema de Información sobre Mortalidad (declaraciones de defunción);
- SIH — Sistema de Información Hospitalaria (hospitalizaciones/AIH);
- SINAN — Sistema de Información de Agravios de Notificación (enfermedades de notificación obligatoria, como dengue, zika y chikungunya);
- SINASC — Sistema de Información sobre Nacidos Vivos;
- CNES — Registro Nacional de Establecimientos de Salud;
- SIA — Sistema de Información Ambulatoria.
El acceso programático a esos archivos .dbc está mediado
por el paquete microdatasus (Saldanha, Bastos &
Barcellos, 2019). climasus4r encapsula ese acceso en
sus_data_import(), añadiendo caché (para
no volver a descargar los mismos datos en cada ejecución),
paralelismo (para acelerar descargas de muchas UF/años)
y mensajes multilingües. Importar de forma reproducible — registrando
sistema, año y recorte espacial — es lo que hace que un estudio sea
auditable y replicable.
Caso guía. A lo largo de toda la serie de tutoriales investigamos la temperatura y los desenlaces de salud en personas mayores (60+) en la Región Metropolitana de São Paulo, 2014–2019. En este primer tutorial armamos la base bruta multisistema: defunciones (SIM-DO), hospitalizaciones (SIH-RD) y, como caso secundario de clima × arbovirosis, dengue (SINAN-DENGUE). Los objetos importados aquí se guardan y servirán de entrada para el Tutorial 2 (Encoding y Estandarización).
Datos utilizados
| Sistema | system = |
Periodicidad | Papel en el caso |
|---|---|---|---|
| SIM-DO (defunciones) | "SIM-DO" |
Anual | Desenlace principal (mortalidad) |
| SIH-RD (hospitalizaciones) | "SIH-RD" |
Mensual (exige month) |
Morbilidad hospitalaria |
| SINAN-DENGUE | "SINAN-DENGUE" |
Anual | Caso secundario (clima × dengue) |
Recorte espacial: estado de São Paulo
(uf = "SP"), 2014–2019. Todos los datos son
públicos y reales, obtenidos del DATASUS mediante
microdatasus.
Pipeline completo
Los bloques a continuación reproducen lo que ejecuta el script
scripts/tutorial_01_importacao.R. Comience cargando el
paquete:
library(climasus4r)Importar un sistema anual (SIM-DO)
El SIM es anual: el argumento month se
ignora. Pedimos los seis años de una vez y dejamos activados la caché y
el paralelismo.
obitos <- sus_data_import(
uf = "SP",
year = 2014:2019,
system = "SIM-DO",
backend = "arrow", # "arrow" (lazy, padrão) ou "tibble" (em memória)
use_cache = TRUE, # reaproveita downloads anteriores
parallel = TRUE, # baixa anos em paralelo
workers = 4,
lang = "pt"
)Visualizar datos
dplyr::glimpse(obitos)Importar un sistema mensual (SIH-RD)
El SIH es mensual: el argumento month
es obligatorio. Aquí pedimos solo los meses de invierno
(junio a agosto), cuando la mortalidad respiratoria en personas mayores
tiende a ser más alta.
internacoes <- sus_data_import(
uf = "SP",
year = 2014:2019,
month = 6:8, # obrigatório para SIH, CNES e SIA
system = "SIH-RD",
use_cache = TRUE,
parallel = TRUE,
workers = 4,
lang = "pt"
)Visualizar datos
dplyr::glimpse(internacoes)Importar notificaciones (SINAN-DENGUE)
dengue <- sus_data_import(
uf = "SP",
year = 2014:2019,
system = "SINAN-DENGUE",
use_cache = TRUE,
lang = "pt"
)Visualizar datos
dplyr::glimpse(dengue)Recorte espacial: por región o por municipio
En lugar de listar UF, puede usar un grupo
predefinido en region (macrorregiones, biomas o
cuencas) — útil para estudios regionales:
# Toda a macrorregião Sudeste (ES, MG, RJ, SP) de uma vez:
obitos_sudeste <- sus_data_import(
region = "sudeste",
year = 2019,
system = "SIM-DO",
lang = "pt"
)Visualizar datos
dplyr::glimpse(obitos_sudeste)O bien restringir a un municipio por código IBGE (o
nombre en city). El filtro se resuelve al código IBGE
antes de la descarga:
# Apenas o município de São Paulo (código IBGE 3550308):
obitos_muni_sp <- sus_data_import(
uf = "SP",
year = 2014:2019,
system = "SIM-DO",
municipality_code = "3550308",
lang = "pt"
)Visualizar datos
dplyr::glimpse(obitos_muni_sp)(Opcional) Releer datos ya exportados
Después de exportar la base (con sus_data_export()),
puede releerla en sesiones futuras sin volver a descargarla, con
sus_data_read() — que detecta el formato
automáticamente:
obitos <- sus_data_read("output/sim_sp_2014_2019.parquet")Al final de esta etapa tenemos obitos,
internacoes y dengue — la base bruta
multisistema que alimentará los próximos tutoriales.
Características de las funciones
sus_data_import()
La única puerta de entrada de la etapa de importación. Encapsula
microdatasus::fetch_datasus (Saldanha, Bastos &
Barcellos, 2019) con caché y paralelismo.
| Argumento | ¿Esencial? | Descripción |
|---|---|---|
uf / region
|
sí (uno de ellos) | UF(s) ("SP", c("SP","RJ"),
"all") o grupo predefinido
("sudeste", "amazonia_legal", …) |
year |
sí | Año(s) con 4 dígitos (ej.: 2014:2019) |
system |
sí | Sistema/subsistema (ver tabla de sistemas abajo) |
month |
solo mensuales | Mes(es) 1–12; obligatorio para SIH, CNES y SIA; se ignora en SIM, SINAN y SINASC |
backend |
opcional |
"arrow" (lazy, por defecto, muy rápido) o
"tibble" (en memoria) |
city / municipality_code
|
opcional | Restringe a municipios (nombre o código IBGE de 6/7 dígitos) |
use_cache |
recomendado |
TRUE reutiliza descargas; cache_dir define
la carpeta |
force_redownload |
opcional |
TRUE ignora la caché y vuelve a descargar todo |
parallel / workers
|
opcional | Paraleliza combinaciones UF/año; respeta el
future::plan() del usuario |
lang / verbose
|
opcional | Idioma ("pt", "en", "es") y
nivel de mensajes |
Retorno: un
tibble/data.frame (u objeto Arrow, si
backend = "arrow") con las variables originales del
sistema, más source_system y
download_timestamp, fechas como objetos Date y
texto en UTF-8.
Caché inteligente. Las llamadas se identifican
mediante una clave SHA-256 de los parámetros (UF, año,
mes, sistema). Los resultados quedan en cache_dir
(~/.climasus4r_cache/data por defecto) como RDS comprimido
y se reutilizan automáticamente. La caché expira en ~30 días para
sistemas dinámicos (CNES, SIA, SIH) y ~365 días para
los estáticos (SIM, SINAN, SINASC).
sus_data_read()
Relee archivos ya exportados, sin volver a la fuente. Autodetecta el formato.
| Argumento | Descripción |
|---|---|
path |
Ruta de un archivo, vector de archivos, o una carpeta |
format |
NULL (autodetecta) o "parquet",
"csv", "dbc", "rds",
"shapefile", … |
parallel / workers
|
Lectura paralela de muchos archivos |
read_metadata |
Recupera metadatos asociados como atributos |
Retorno: la tabla leída (u objeto sf,
para datos espaciales); las lecturas en lote se combinan con
dplyr::bind_rows().
Sistemas y subsistemas soportados
| Sistema | Descricao | Exemplos_system | Periodicidade |
|---|---|---|---|
| SIM | Mortalidade (declaracoes de obito) | SIM-DO, SIM-DOFET, SIM-DOINF, SIM-DOMAT, SIM-DOEXT | Anual (month ignorado) |
| SIH | Internacoes hospitalares (AIH) | SIH-RD, SIH-RJ, SIH-SP, SIH-ER | Mensal (exige month) |
| SINASC | Nascidos vivos | SINASC | Anual (month ignorado) |
| SINAN | Agravos de notificacao (doencas notificaveis) | SINAN-DENGUE, SINAN-ZIKA, SINAN-CHIKUNGUNYA, SINAN-MALARIA, … | Anual (month ignorado) |
| CNES | Estabelecimentos de saude | CNES-LT, CNES-ST, CNES-EQ, CNES-PF, … | Mensal (exige month) |
| SIA | Atendimentos ambulatoriais | SIA-PA, SIA-AB, SIA-AD, … | Mensal (exige month) |
Atajos de region (descargan varias UF de una vez):
| Grupo | Tipo | UFs |
|---|---|---|
| sudeste | Macrorregiao IBGE | ES, MG, RJ, SP |
| sul | Macrorregiao IBGE | PR, RS, SC |
| nordeste | Macrorregiao IBGE | AL, BA, CE, MA, PB, PE, PI, RN, SE |
| norte | Macrorregiao IBGE | AC, AP, AM, PA, RO, RR, TO |
| centro_oeste | Macrorregiao IBGE | DF, GO, MT, MS |
| amazonia_legal | Bioma/fronteira ecologica | AC, AP, AM, PA, RO, RR, MT, MA, TO |
| mata_atlantica | Bioma | AL, BA, CE, ES, GO, MA, MG, MS, PB, PE, PI, PR, RJ, RN, RS, SC, SE, SP |
| cerrado | Bioma | BA, DF, GO, MA, MG, MS, MT, PA, PI, PR, RO, SP, TO |
| bacia_sao_francisco | Bacia hidrografica | AL, BA, DF, GO, MG, PE, SE |
| semi_arido | Recorte climatico | AL, BA, CE, MA, PB, PE, PI, RN, SE, MG |
Estructura típica del SIM-DO justo después de la importación (causa
básica en CAUSABAS, edad codificada en IDADE,
municipio de residencia en CODMUNRES):
| DTOBITO | DTNASC | SEXO | IDADE | RACACOR | CAUSABAS | CODMUNRES | CODMUNOCOR |
|---|---|---|---|---|---|---|---|
| 08072017 | 17071962 | 2 | 454 | 1 | C383 | 352230 | 352230 |
| 13062017 | 02091986 | 2 | 430 | 4 | C099 | 353870 | 353870 |
| 05072017 | 14051971 | 2 | 446 | 4 | C710 | 351170 | 353870 |
| 23062017 | 24081940 | 1 | 476 | 4 | R960 | 351030 | 351030 |
| 07062017 | 21041928 | 1 | 489 | 1 | R960 | 351030 | 351030 |
| 13052017 | 04091945 | 1 | 471 | 1 | I119 | 351030 | 351030 |
| 28052017 | 02031949 | 2 | 468 | 4 | I110 | 351030 | 351030 |
| 24062017 | 03101950 | 2 | 466 | 1 | I120 | 351030 | 351030 |
| 13032017 | 28051917 | 2 | 499 | 1 | I500 | 351040 | 351040 |
| 13032017 | 01031953 | 2 | 464 | 1 | C538 | 351040 | 351040 |
Rendimiento: caché y paralelismo
Dos recursos de sus_data_import() hacen que la
importación sea reproducible y rápida. La ganancia
relativa (speedup) es la razón entre el tiempo sin el recurso y
el tiempo con él:
Valores de speedup superiores a 1 indican aceleración. Las figuras a continuación presentan mediciones reales hechas por el script de generación.

Figura 1. Benchmark de caché. La primera llamada descarga los datos de la red; la segunda lee de la caché local, típicamente órdenes de magnitud más rápida — sin ningún cambio en el código de análisis.

Figura 2. Benchmark de paralelismo. Importar los
seis años con workers = 4 es más rápido que en serie
(workers = 1). La ganancia depende del número de núcleos
disponibles; sus_data_import() avisa si
workers excede los núcleos de la máquina.
Resultados ilustrados

Figura 3. Número de registros importados por sistema para São Paulo, 2014–2019 (el SIH-RD se restringió al invierno, junio–agosto, para mantener el ejemplo liviano). El orden de magnitud muy diferente entre sistemas ayuda a dimensionar memoria y tiempo de descarga.

Figura 4. Serie mensual de defunciones (todas las causas) del SIM-DO en São Paulo, 2014–2019. La estacionalidad de invierno ya es visible en la base bruta y será el punto de partida para los recortes (personas mayores, causas respiratorias) de los próximos tutoriales.
Referencias
- Saldanha, R. de F., Bastos, R. R., & Barcellos, C. (2019). Microdatasus: pacote para download e pré-processamento de microdados do Departamento de Informática do SUS (DATASUS). Cadernos de Saúde Pública, 35(9), e00032419.
- Ministério da Saúde (Brasil). DATASUS — Departamento de Informática do SUS. Disponible en: http://datasus.saude.gov.br.