SIH FTP Database

Sistema de Informações Hospitalares

[1]:
from pysus.ftp.databases.sih import SIH
sih = SIH().load() # Loads the files from DATASUS
[2]:
sih
[2]:
SIH - Sistema de Informações Hospitalares
[3]:
sih.metadata
[3]:
{'long_name': 'Sistema de Informações Hospitalares',
 'source': ('https://datasus.saude.gov.br/acesso-a-informacao/morbidade-hospitalar-do-sus-sih-sus/',
  'https://datasus.saude.gov.br/acesso-a-informacao/producao-hospitalar-sih-sus/'),
 'description': 'A finalidade do AIH (Sistema SIHSUS) é a de transcrever todos os atendimentos que provenientes de internações hospitalares que foram financiadas pelo SUS, e após o processamento, gerarem relatórios para os gestores que lhes possibilitem fazer os pagamentos dos estabelecimentos de saúde. Além disso, o nível Federal recebe mensalmente uma base de dados de todas as internações autorizadas (aprovadas ou não para pagamento) para que possam ser repassados às Secretarias de Saúde os valores de Produção de Média e Alta complexidade além dos valores de CNRAC, FAEC e de Hospitais Universitários – em suas variadas formas de contrato de gestão.'}
[4]:
sih.groups
[4]:
{'RD': 'AIH Reduzida',
 'RJ': 'AIH Rejeitada',
 'ER': 'AIH Rejeitada com erro',
 'SP': 'Serviços Profissionais',
 'CH': 'Cadastro Hospitalar',
 'CM': ''}

Getting specific files

[5]:
print(str(len(sih.get_files(["RD", "RJ"]))) + " files")
15649 files
[6]:
sih.get_files("RD", uf="SP", year=2000)
[6]:
[RDSP0001.dbc,
 RDSP0002.dbc,
 RDSP0003.dbc,
 RDSP0004.dbc,
 RDSP0005.dbc,
 RDSP0006.dbc,
 RDSP0007.dbc,
 RDSP0008.dbc,
 RDSP0009.dbc,
 RDSP0010.dbc,
 RDSP0011.dbc,
 RDSP0012.dbc]
[7]:
files = sih.get_files("RD", uf="SP", year=2000, month=[1,2,3])
files
[7]:
[RDSP0001.dbc, RDSP0002.dbc, RDSP0003.dbc]

Describing files inside DATASUS server

[8]:
sih.describe(files[0])
[8]:
{'name': 'RDSP0001.dbc',
 'group': 'AIH Reduzida',
 'uf': 'São Paulo',
 'month': 'Janeiro',
 'year': 2000,
 'size': '10.1 MB',
 'last_update': '2013-10-31 01:14PM'}

Downloading files

You can rather download multiple files or download them individually:

[9]:
sih.download(files) # Specify a directory with `local_dir=`
RDSP0003.parquet: 100%|████████████| 340k/340k [00:12<00:00, 28.0kB/s]
[9]:
[/home/bida/pysus/RDSP0001.parquet,
 /home/bida/pysus/RDSP0002.parquet,
 /home/bida/pysus/RDSP0003.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

[11]:
parquet = sih.download(files)[0]
100%|████████████████████████████| 8.46M/8.46M [00:00<00:00, 4.04GB/s]
[12]:
parquet.to_dataframe()
[12]:
UF_ZI ANO_CMPT MES_CMPT ESPEC CGC_HOSP N_AIH IDENT CEP MUNIC_RES NASC ... CAR_INT TOT_PT_SP CPF_AUT HOMONIMO NUM_FILHOS INSTRU CID_NOTIF CONTRACEP1 CONTRACEP2 GESTRISCO
0 35 2000 01 02 46523171000287 2179380830 1 06040090 353440 19631229 ... 05 719 0 0 00 00 0
1 35 2000 01 02 46523171000287 2179380841 1 06110000 353440 19620609 ... 05 176 0 0 00 00 0
2 35 2000 01 02 46523171000287 2179380852 1 06184080 353440 19781207 ... 05 36 0 0 00 00 0
3 35 2000 01 02 46523171000287 2179380863 1 06010020 353440 19710106 ... 05 176 0 0 00 00 0
4 35 2000 01 02 46523171000287 2179380874 1 06112010 353440 19710717 ... 05 158 0 0 00 00 0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
193819 35 2000 01 02 46523171000287 2179380786 1 06036090 353440 19740804 ... 05 737 0 0 00 00 0
193820 35 2000 01 02 46523171000287 2179380797 1 06240120 353440 19670403 ... 05 737 0 0 00 00 0
193821 35 2000 01 02 46523171000287 2179380808 1 06140080 353440 19741001 ... 05 737 0 0 00 00 0
193822 35 2000 01 02 46523171000287 2179380819 1 06240090 353440 19721028 ... 05 719 0 0 00 00 0
193823 35 2000 01 02 46523171000287 2179380820 1 06260030 353440 19721122 ... 05 737 0 0 00 00 0

193824 rows × 60 columns