SINASC FTP Database

Sistema de Informações sobre Nascidos Vivos

[1]:
from pysus.ftp.databases.sinasc import SINASC
sinasc = SINASC().load() # Loads the files from DATASUS
[2]:
sinasc
[2]:
SINASC - Sistema de Informações sobre Nascidos Vivos
[3]:
sinasc.metadata
[3]:
{'long_name': 'Sistema de Informações sobre Nascidos Vivos',
 'source': 'http://sinasc.saude.gov.br/',
 'description': ''}

Listing codes & groups

[4]:
sinasc.groups
[4]:
{'DN': 'Declarações de Nascidos Vivos',
 'DNR': 'Dados dos Nascidos Vivos por UF de residência'}

Getting specific files

[5]:
sinasc.get_files("DN", uf="SP") # or multiple ["SP", ...]
[5]:
[DNSP1996.DBC,
 DNSP1997.DBC,
 DNSP1998.DBC,
 DNSP1999.DBC,
 DNSP2000.DBC,
 DNSP2001.DBC,
 DNSP2002.DBC,
 DNSP2003.DBC,
 DNSP2004.DBC,
 DNSP2005.dbc,
 DNSP2006.DBC,
 DNSP2007.dbc,
 DNSP2008.dbc,
 DNSP2009.dbc,
 DNSP2010.DBC,
 DNSP2011.DBC,
 DNSP2012.DBC,
 DNSP2013.dbc,
 DNSP2014.dbc,
 DNSP2015.dbc,
 DNSP2016.dbc,
 DNSP2017.dbc,
 DNSP2018.dbc,
 DNSP2019.dbc,
 DNSP2020.dbc,
 DNSP2021.dbc]
[6]:
files = sinasc.get_files("DN", uf="SP", year=[1999, 2000])
files
[6]:
[DNSP1999.DBC, DNSP2000.DBC]

Describing files inside DATASUS server

[7]:
from pprint import pprint
for file in files:
    pprint(sinasc.describe(file))
{'group': 'Declarações de Nascidos Vivos',
 'last_update': '2020-01-27 12:12PM',
 'name': 'DNSP1999.DBC',
 'size': '14.3 MB',
 'uf': 'São Paulo',
 'year': 1999}
{'group': 'Declarações de Nascidos Vivos',
 'last_update': '2020-01-27 12:12PM',
 'name': 'DNSP2000.DBC',
 'size': '14.3 MB',
 'uf': 'São Paulo',
 'year': 2000}

Downloading files

You can rather download multiple files or download them individually:

[8]:
sinasc.download(files) # Downloads to default directory or specify with `local_dir=`
DNSP2000.parquet: 100%|████████████| 523k/523k [00:15<00:00, 34.3kB/s]
[8]:
[/home/bida/pysus/DNSP1999.parquet, /home/bida/pysus/DNSP2000.parquet]

@Note: If the file has been downloaded already, it’s required to delete it in order to download the lastest updated file from DATASUS.

Reading files

PySUS uses Parquets as output, use the method to_dataframe() to read the file as pandas DataFrame

[9]:
parquet = sinasc.download(files)[0]
100%|████████████████████████████| 14.3M/14.3M [00:00<00:00, 6.32GB/s]
[10]:
parquet.to_dataframe()
[10]:
contador LOCNASC CODMUNNASC IDADEMAE ESTCIVMAE ESCMAE CODOCUPMAE QTDFILVIVO QTDFILMORT CODMUNRES ... GRAVIDEZ PARTO CONSULTAS DTNASC SEXO APGAR1 APGAR5 RACACOR PESO CODANOMAL
0 90001 1 3550308 21 9 2 03 00 3550308 ... 1 1 8 20021999 2 09 10 3300
1 90002 1 3550308 23 9 3 01 00 3550308 ... 1 1 8 19031999 2 09 10 2300
2 90003 1 3550308 19 9 2 01 00 3550308 ... 1 1 8 09031999 1 08 09 4 3600
3 90004 1 3550308 16 9 2 00 00 3550308 ... 1 1 8 15031999 2 09 10 1 2600
4 90005 1 3550308 33 9 2 00 00 3550308 ... 1 2 8 17031999 2 09 09 2700
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
714423 299996 1 3522604 18 9 3 01 00 3522604 ... 1 1 4 20051999 1 08 10 1 3400
714424 299997 1 3522604 37 2 2 01 00 3522604 ... 1 2 4 29051999 1 09 10 1 3800
714425 299998 1 3522604 21 9 4 00 00 3522604 ... 1 1 4 04061999 2 09 10 1 3500
714426 299999 1 3522604 34 2 4 00 00 3522604 ... 1 2 3 04061999 2 09 10 1 3800
714427 300000 1 3522604 37 9 2 05 00 3522604 ... 1 1 8 29051999 2 10 10 1 3100

714428 rows × 21 columns