O SIM (Sistema de Informações sobre Mortalidade) é o sistema oficial de registro de óbitos no Brasil, gerenciado pelo DATASUS/Ministério da Saúde. Criado em 1975, o SIM é alimentado pelas Declarações de Óbito (DO), documento obrigatório para qualquer falecimento em território nacional.
O sistema registra informações detalhadas sobre cada óbito:
Causa da morte — codificada pela CID-10 (causa básica e causas contribuintes)
Local do óbito — município de ocorrência e de residência
Dados demográficos — idade, sexo, raça/cor, escolaridade, estado civil
Circunstância — óbito natural, acidente, homicídio, suicídio, causa indeterminada
Dados médicos — local de ocorrência (hospital, domicílio, via pública), se teve assistência médica
O SIM é a fonte primária para o cálculo de indicadores de mortalidade no Brasil, incluindo taxas de mortalidade geral, infantil, materna, por causas externas e por doenças específicas. É amplamente utilizado em epidemiologia, planejamento em saúde pública e produção de estatísticas vitais.
Importante: O SIM registra todos os óbitos ocorridos no Brasil, independentemente de o falecido ser ou não usuário do SUS. A cobertura é estimada em cerca de 95% dos óbitos no país, com sub-registro maior nas regiões Norte e Nordeste.
from pysus.online_data.SIM import downloadimport pandas as pd# Baixar dados de mortalidade de São Paulo, 2022dados = download(states=["SP"], years=[2022])# Converter para DataFramedf = dados.to_dataframe()print(f"Total de óbitos registrados: {len(df):,}")print(f"Colunas disponíveis: {list(df.columns)}")print(df.head())
from pysus.online_data.SIM import downloadimport pandas as pd# Baixar dados de mortalidade de Minas Gerais, 2022dados = download(states=["MG"], years=[2022])df = dados.to_dataframe()# Top 10 causas de morte (causa básica - CID-10)top_causas = ( df.groupby("CAUSABAS") .size() .reset_index(name="total_obitos") .sort_values("total_obitos", ascending=False) .head(10))print("Top 10 causas de morte em MG (2022):")print(top_causas)
from pysus.online_data.SIM import downloadimport pandas as pd# Baixar dados do Rio de Janeirodados = download(states=["RJ"], years=[2022])df = dados.to_dataframe()# Converter camposdf["IDADE"] = pd.to_numeric(df["IDADE"], errors="coerce")df["SEXO"] = df["SEXO"].map({"1": "Masculino", "2": "Feminino", "0": "Ignorado"})# Criar faixas etárias a partir do campo IDADE# O campo IDADE usa codificação especial: 4xx = anos, 3xx = meses, 2xx = diasdf["idade_anos"] = df["IDADE"].apply( lambda x: x - 400 if pd.notna(x) and x >= 400 else None)# Distribuição por sexoobitos_sexo = df["SEXO"].value_counts()print("Óbitos por sexo:")print(obitos_sexo)# Distribuição por faixa etáriabins = [0, 1, 5, 15, 30, 45, 60, 75, 120]labels = ["<1", "1-4", "5-14", "15-29", "30-44", "45-59", "60-74", "75+"]df["faixa_etaria"] = pd.cut(df["idade_anos"], bins=bins, labels=labels, right=False)obitos_idade = df["faixa_etaria"].value_counts().sort_index()print("\nÓbitos por faixa etária:")print(obitos_idade)
from pysus.online_data.SIM import downloadimport pandas as pd# Baixar dados de todo o Brasil (pode ser demorado)dados = download(states=["SP"], years=[2022])df = dados.to_dataframe()# Causas externas: CID-10 capítulo XX (V01-Y98)df["causa_externa"] = df["CAUSABAS"].str.match(r"^[VWX Y]")externas = df[df["causa_externa"] == True]print(f"Óbitos por causas externas: {len(externas):,}")# Subcategorias de causas externascategorias = { "Acidentes de transporte": r"^V", "Quedas": r"^W0[0-9]|^W1[0-9]", "Afogamento": r"^W6[5-9]|^W7[0-4]", "Agressões (homicídios)": r"^X8[5-9]|^X9|^Y0", "Lesões autoprovocadas (suicídio)": r"^X[67]",}for nome, padrao in categorias.items(): total = externas["CAUSABAS"].str.match(padrao).sum() print(f" {nome}: {total:,}")
Embora a cobertura nacional seja de ~95%, em municípios pequenos do Norte e Nordeste o sub-registro pode ser significativo, subestimando a mortalidade real.
Defasagem temporal
Os dados anuais são liberados com atraso de 1 a 2 anos. Dados preliminares podem sofrer revisões posteriores.
Formato DBC
Os arquivos originais estão em formato DBC proprietário, exigindo PySUS ou ferramentas específicas para conversão.
Qualidade da codificação CID-10
A causa básica do óbito depende da qualidade do preenchimento da Declaração de Óbito pelo médico. Códigos "garbage" (causas mal definidas) ainda representam uma parcela significativa, especialmente em óbitos fora de hospitais.
Causas mal definidas
Óbitos classificados no capítulo XVIII da CID-10 (sintomas e sinais — R00-R99) indicam causas mal definidas. A proporção varia de 3% nas capitais a 20%+ em áreas rurais.
Óbitos fetais
São armazenados em arquivo separado (DOFET), com campos diferentes dos óbitos não fetais.
Codificação de idade
O campo IDADE usa codificação especial (4xx=anos, 3xx=meses, etc.), exigindo tratamento antes de análises por faixa etária.
Sem geolocalização precisa
Os dados contêm apenas código de município, sem coordenadas ou endereço do local do óbito.
Instabilidade do servidor FTP
O servidor FTP do DATASUS pode apresentar lentidão, especialmente quando arquivos grandes são solicitados.
Protocolo FTP obsoleto em navegadores
Navegadores modernos (Chrome, Firefox) removeram o suporte ao protocolo FTP. Para acessar os arquivos, utilize clientes FTP (FileZilla, wget, curl) ou a biblioteca PySUS. Alternativamente, acesse a página de transferência de arquivos do DATASUS em https://datasus.saude.gov.br/transferencia-de-arquivos/.