SIH
Fluxo ETL: SIHSUS
A documentação a seguir apresenta o processo ETL (extract, transform, load) aplicado aos dados do Sistema de Informações Hospitalares do SUS (SIHSUS) do DATASUS para indexação na Plataforma de Ciência de Dados aplicada à Saúde (PCDaS). O processo ETL aplicado consiste basicamente em:
Extract:
- Acessar o servidor FTP do DATASUS e baixar os arquivos com extensão .dbc contendo os microdados do SIHSUS para cada estado, para cada ano e para cada mês disponível/desejado;
- Converter os arquivos baixados para a extensão .dbf;
- Ler e unir os arquivos em um único conjunto de dados para posterior tratamento.
Transform:
- Tratar o conjunto de dados adquirido de maneira a:
- Decodificar e enriquecer os dados de acordo com dicionário de dados do SIHSUS;
- Enriquecer os dados relacionados a município;
- Enriquecer os dados relacionados a UF;
- Enriquecer os dados relacionados a Classificação Estatística Internacional de Doenças e Problemas Relacionados com a Saúde (CID10);
- Enriquecer os dados relacionados a datas e idade;
- Enriquecer os dados relacionados a coordenadas.
Load:
- Indexar dados tratados do SIHSUS em banco de dados NoSQL Elasticsearch localizado em infraestrutura do PCDaS no Laboratório Nacional de Computação Científica (LNCC);
- Coletar log de indexação.
A implementação de todo o fluxo ETL descrito foi feita no ambiente da ferramenta Dataiku Data Science Studio (DSS). Este processo ETL é reexecutado para cada ano e para cada mês selecionado disponível no servidor FTP do DATASUS. Uma visão geral do fluxo ETL é apresentada no diagrama a seguir:
Detalhes de código/dados da implementação do fluxo ETL são apresentados a seguir.
Fase Extract:
FTP do DATASUS e baixando os arquivos com extensão .dbc contendo os dados do SIH para cada estado, para cada ano e para cada mês disponível/desejado;
1: Acessando o servidor
Código R:
Função para fazer download de arquivos .dbc do SIHSUS a partir do FTP do Datasus:
download.dbc <- function(ftp_path,
dest_files_path = getwd(),
estados = NULL, anos = NULL, meses = NULL){
require(RCurl)
require(tidyverse)
require(stringr)
anos <- str_pad(as.numeric(anos)-2000, 2, pad = "0")
meses <- str_pad(meses, 2, pad = "0")
url <- ftp_path
#userpwd <- "yourUser:yourPass"
#recupera o nome dos arquivos em ftp_path
filenames <- getURL(url, userpwd = NULL,
ftp.use.epsv = FALSE,dirlistonly = TRUE)
filenames <- unlist(strsplit(filenames,"\n"))
filenames <- data.frame(filename=filenames)
filenames <- data.frame(lapply(filenames, as.character), stringsAsFactors=FALSE)
#filtra os estados desejados se estes forem especificados
if(!is.null(estados)){
filenames <- filenames %>%
filter(str_detect(filename, paste(estados,sep="",collapse = '|')))
}
#filtra os anos e meses desejados se estes forem especificados
aamm <- as.vector(outer(anos, meses, paste, sep=""))
#filtra os anos e meses desejados se estes forem especificados
if(!is.null(aamm)){
filenames <- filenames %>%
filter(str_detect(filename, paste(aamm,sep="",collapse = '|')))
}
#faz download dos arquivos selecionados e salva os arquivos em dest_files_path
for (filename in filenames$filename) {
download.file(paste(url, filename, sep = ""), paste(dest_files_path, "/", filename, sep = ""))
}
#retorna um data.frame com os nomes e caminho dos arquivos
return(data.frame(file_name=filenames$filename,file_path=dest_files_path))
}
Código para fazer download de arquivos .dbc do SIHSUS a partir do FTP do Datasus:
#============[INTERAÇÂO DSS]============
library(dataiku)
library(dplyr)
#===========================================
#Caminho para função "download.dbc"
path.script = "https://github.com/bigdata-icict/ETL-Dataiku-DSS/raw/master/SIH/download.dbc.r"
#Caminho FTP Datasus
ftp_path = "ftp://ftp.datasus.gov.br/dissemin/publicos/SIHSUS/200801_/Dados/"
#============[EDITAR]============
#Local para salvamento dos arquivos .dbc
path.data = "path_dbc_files"
#================================
#============[OPCIONAL]============
#filtros de estado e/ou anos
estados = NULL #outro exemplo: c("RJ")
anos = 2018 #outro exemplo: 2000:2014
meses = 12 #outro exemplo: 1:12
#==================================
#Carrega função "download.dbc"
if(!exists("download.dbc", mode="function")) source(path.script)
# Computa retorno da receita: nome dos arquivos .dbc baixados
datasus_files_list <- download.dbc(ftp_path = ftp_path,
dest_files_path = path.data,
estados = estados,
anos = anos,
meses=meses)
#=============[INTERAÇÂO DSS]=============== -> Alternativa: salvar data.frame em arquivo .csv
# Retornando resultados para dataset do DSS
dkuWriteDataset(datasus_files_list,"datasus",schema = TRUE)
#===========================================
Retorno (exemplo):
2: Convertendo os arquivos baixados para a extensão .dbf e então lendo e unindo os arquivos em um único conjunto de dados no DSS para posterior tratamento.
Código R:
Função para converter, ler e unir os arquivos de dados do SIHSUS:
load.dbc <- function(files){
require(read.dbc)
df_from_DBC = data.frame()
for(f in files){
bind_rows( df_from_DBC, read.dbc(f) ) -> df_from_DBC
}
return(df_from_DBC)
}
Código para converter, ler e unir arquivos de dados do SIHSUS e escrever conjunto de dados resultantes no DSS:
#============[INTERAÇÂO DSS]============
library(dataiku)
library(dplyr)
#===========================================
#Instala o pacote "read.dbc"
#install.packages("read.dbc")
#Caminho para função "load.dbc"
path.script = "https://github.com/bigdata-icict/ETL-Dataiku-DSS/raw/master/load.dbc.r"
#Carrega função "load.dbc"
if(!exists("load.dbc", mode="function")) source(path.script)
#============[INTERAÇÂO DSS]============ -> Alternativa: leitura de data.frame a partir de arquivo .csv
#Acessa lista de arquivos baixados para posterior conversão e leitura
datasus_files_list <- dkuReadDataset("datasus")
#===========================================
#Concatena caminhos e nomes dos arquivos
datasus_files_list <- paste(datasus_files_list$file_path,datasus_files_list$file_name,sep="")
# Computa retorno da receita: dados do SIHSUS advindos de todos os arquivos .dbc baixados
df_from_DBC <- load.dbc(datasus_files_list)
#============[INTERAÇÂO DSS]============ -> Alternativa: salvar data.frame em arquivo .csv
# Retornando resultados para dataset do DSS
dkuWriteDataset(df_from_DBC, "DATA",schema = TRUE)
#===========================================
Retorno (exemplo):
Fase Transform:
A transformação/preparação dos dados foi feita utilizando-se funcionalidades (processors) disponíveis no ambiente da ferramenta Dataiku Data Science Studio (DSS). A receita ("recipe") utilizada está disponível para download/visualização através dos arquivos json:
prepare_DATA.json e prepare_DATA.shaker
Alguns detalhes do tratamento dos dados são apresentados a seguir, onde colunas com nomes em maiúsculo representam dados originais advindos do DATASUS e colunas com nomes em minúsculo representam dados resultantes de tratamento:
1: Decodificando e enriquecendo os dados:
Coluna | Códigos | Coluna resultante |
---|---|---|
UTI_MES_TO | {000:"Não", 001:"Sim", 999:"Sim"} | def_diarias_uti |
SEQ_AIH5 | {000:"Seqüencial zerado", 001:"Seq 1", 002:"Seq 2", 003:"Seq 3", 004:"Outros", 999:"Outros"} | def_seq_aih5 |
IDENT | {1:"Normal", 5:"Longa permanência"} | def_ident |
VINCPREV | {1:"Autônomo", 2:"Desempregado", 3:"Aposentado", 4:"Não segurado", 5:"Empregado", 6:"Empregador"} | def_vincprev |
NATUREZA | {00:"", 99:"", 10:"Público", 30:"Público", 31:"Público", 40:"Público", 41:"Público", 50:"Público", 20:"Privado", 22:"Privado", 60:"Privado", 61:"Privado", 63:"Privado", 80:"Privado", 70:"Universitário", 90:"Universitário", 91:"Universitário", 93:"Universitário", 94:"Universitário", 92:"Universitário"} | def_regime |
NUM_FILHOS | {0:"Sem filhos/Não inform", 1:"1 filho", 2:"2 filhos", 3:"3 filhos", 4:"4 a 5 filhos", 5:"4 a 5 filhos", 6:"6 a 9 filhos", 7:"6 a 9 filhos", 8:"6 a 9 filhos", 9:"6 a 9 filhos", 10:"10 filhos ou mais", 99:"10 filhos ou mais"} | def_num_filhos |
REGCT | {7101:"S/crédito na média complex ambulatorial (exc FAEC)", 7102:"S/crédito na média complex hospitalar (exc FAEC)", 7103:"S/crédito na alta complex ambulatorial (exc FAEC)", 7104:"S/crédito na alta complex hospitalar (exc FAEC)", 7105:"S/crédito nos procedimentos financ FAEC", 7106:"S/crédito total incluindo FAEC", 7107:"S/crédito nas ações esp odonto (CEO I II III)", 7108:"S/crédito incentivo Saúde do Trabalhador exc FAEC", 7109:"S/crédito total HU/MEC", 7110:"S/crédito total Minist Saúde", 7111:"S/crédito NASF exc FAEC", 0000:"Sem regra contratual"} | def_regct |
FAEC_TP | {010000:"Atenção Básica (PAB)", 020000:"Assistência Farmacêutica", 040000:"FAEC - Subtipo de financiamento ignorado", 040001:"Coleta de material", 040002:"Diagnóstico em laboratório clínico", 040003:"Coleta/exame anátomo-patológico colo uterino", 040004:"Diagnóstico em neurologia", 040005:"Diagnóstico em otorrinolaringologia/fonoaudiologia", 040006:"Diagnóstico em psicologia/psiquiatria", 040007:"Consultas médicas/outr profissionais nív superior", 040008:"Atenção domiciliar", 040009:"Atend/acomp reab fís, mental, visual, múlt defic", 040010:"Atendimento/acompanhamento psicossocial", 040011:"Atendimento/acompanhamento em saúde do idoso", 040012:"Atendimento/acompanhamento de queimados", 040013:"Atend/acomp diagn doenças endócr,metabólic e nutr", 040014:"Trat doenças sistema nervoso central e periférico", 040015:"Tratamento de doenças do aparelho da visão", 040016:"Tratamento em oncologia", 040017:"Nefrologia", 040018:"Tratamentos odontológicos", 040019:"Cirurgia do sistema nervoso central e periférico", 040020:"Cirurgias de ouvido, nariz e garganta", 040021:"Deformidade labio-palatal e crânio-facial", 040022:"Cirurgia do aparelho da visão", 040023:"Cirurgia do aparelho circulatório", 040024:"Cirurgia apar digest, órgãos anexos e pared abdom", 040025:"Cirurgia do aparelho geniturinário", 040026:"Tratamento de queimados", 040027:"Cirurgia reparadora para lipodistrofia", 040028:"Outras cirurgias plásticas/reparadoras", 040029:"Cirurgia orofacial, 040030:"Sequenciais", 040032:"Transplantes de órgãos, tecidos e células", 040033:"Medicamentos para transplante", 040035:"OPM em odontologia", 040036:"OPM em queimados", 040038:"OPM para transplantes", 040039:"Incentivos ao pré-natal e nascimento", 040040:"Incentivo ao registro cívil de nascimento", 040041:"Central Nacional Regulação Alta Complexidade CNRAC", 040042:"Reguladores ativ hormonal - inibidores prolactina", 040043:"Política Nacional de Cirurgias Eletivas", 040044:"Redesignação e acompanhamento", 040045:"Projeto Olhar Brasil", 040046:"Mamografia para rastreamento", 040047:"Projeto Olhar Brasil – consulta", 040048:"Projeto Olhar Brasil – óculos", 040049:"Implementar Cirg. CV Pediátrica", 040050:"Cirurgias eletivas - componente I", 040051:"Cirurgias eletivas - componente II", 040052:"Cirurgias eletivas - componente III", 040053:"Prótese mamária – exames", 040054:"Prótese mamária – cirurgia", 021012:"FAEC CNRAC (21012-cód ant à tab unif-vál p/2008-01)", 021014:"FAEC Eletiv(21014-cód ant à tab unif-vál p/2008-01)", 050000:"Incentivo – MAC", 060000:"Média e Alta Complexidade (MAC)", 070000:"Vigilância em Saúde"} | def_faec_tp |
DIAS_PERM | {0000:"0 dias", 0001:"1 dia", 0002:"2 dias", 0003:"3 dias", 0004:"4 dias", 0005:"5 dias", 0006:"6 dias", 0007:"7 dias", 0014:"8-14 dias", 0021:"15-21 dias", 0028:"22-28 dias", 9999:"29 dias e +"} | def_dias_perm |
UTI_MES_TO | {001:"Sim", 999:"Sim", 000:"Não"} | def_uti_mes_to |
CAR_INT | {1:"Eletivo", 2:"Urgência", 3:"Acidente no local trabalho ou a serv da empresa", 4:"Acidente no trajeto para o trabalho", 5:"Outros tipo de acidente de trânsito", 6:"Out tp lesões e envenen por agent quím físicos"} | def_car_int |
N_AIH | {1:"AIH Normal", 2:"APAC Normal", 3:"AIH CNRAC", 4:"APAC CNRAC", 5:"AIH Campanha de Cirurgias Eletivas", 6:""} | def_n_aih |
SEXO | {1:"Masculino", 2:"Feminino", 3:"Feminino", 0:"", 9:""} | def_sexo |
IDENT | {1:"Normal", 5:"Longa permanência", 0:"", 9:""} | def_ident |
MARCA_UTI | {00:"Não utilizou UTI", 74:"UTI adulto - tipo I", 75:"UTI adulto - tipo II", 76:"UTI adulto - tipo III", 77:"UTI infantil - tipo I", 78:"UTI infantil - tipo II", 79:"UTI infantil - tipo III", 80:"UTI neonatal - tipo I", 81:"UTI neonatal - tipo II", 82:"UTI neonatal - tipo III", 83:"UTI de queimados", 85:"UTI coronariana tipo II - UCO tipo II", 86:"UTI coronariana tipo III - UCO tipo III", 99:"UTI Doador", 01:"Utilizou mais de um tipo de UTI"} | def_marca_uti |
COBRANCA | {11:"Alta curado", 12:"Alta melhorado", 14:"Alta a pedido", 15:"Alta com previsão de retorno p/acomp do paciente", 16:"Alta por evasão", 18:"Alta por outros motivos", 19:"Alta de paciente agudo em psiquiatria", 21:"Permanência por características próprias da doença", 22:"Permanência por intercorrência", 23:"Permanência por impossibilidade sócio-familiar", 24:"Permanência proc doação órg, tec, cél-doador vivo", 25:"Permanência proc doação órg, tec, cél-doador morto", 26:"Permanência por mudança de procedimento", 27:"Permanência por reoperação", 28:"Permanência por outros motivos", 29:"Transferência para internação domiciliar", 32:"Transferência para internação domiciliar", 31:"Transferência para outro estabelecimento", 41:"Óbito com DO fornecida pelo médico assistente", 42:"Óbito com DO fornecida pelo IML", 43:"Óbito com DO fornecida pelo SVO", 51:"Encerramento administrativo", 61:"Alta da mãe/puérpera e do recém-nascido", 17:"Alta da mãe/puérpera e do recém-nascido", 62:"Alta da mãe/puérpera e permanência recém-nascido", 13:"Alta da mãe/puérpera e permanência recém-nascido", 63:"Alta da mãe/puérpera e óbito do recém-nascido", 64:"Alta da mãe/puérpera com óbito fetal", 65:"Óbito da gestante e do concepto", 66:"Óbito da mãe/puérpera e alta do recém-nascido", 67:"Óbito da mãe/puérpera e permanência recém-nascido"} | def_cobranca |
NAT_JUR | {1015:"Órgão Público do Poder Executivo Federal", 1023:"Órgão Público do Poder Exec Estadual ou Distr Fed", 1031:"Órgão Público do Poder Executivo Municipal", 1040:"Órgão Público do Poder Legislativo Federal", 1058:"Órgão Público do Poder Legisl Estadual ou Dist Fed", 1066:"Órgão Público do Poder Legislativo Municipal", 1074:"Órgão Público do Poder Judiciário Federal", 1082:"Órgão Público do Poder Judiciário Estadual", 1104:"Autarquia Federal", 1112:"Autarquia Estadual ou do Distrito Federal", 1120:"Autarquia Municipal", 1139:"Fundação Federal", 1147:"Fundação Estadual ou do Distrito Federal", 1155:"Fundação Municipal", 1163:"Órgão Público Autônomo Federal", 1171:"Órgão Público Autônomo Estadual ou Distr Federal", 1180:"Órgão Público Autônomo Estadual ou Distr Federal", 1198:"Comissão Polinacional", 1201:"Fundo Público", 1210:"Associação Pública", 2011:"Empresa Pública", 2038:"Sociedade de Economia Mista", 2046:"Sociedade Anônima Aberta", 2054:"Sociedade Anônima Fechada", 2062:"Sociedade Empresária Limitada", 2070:"Sociedade Empresária em Nome Coletivo", 2089:"Sociedade Empresária em Comandita Simples", 2097:"Sociedade Empresária em Comandita por Ações", 2127:"Sociedade em Conta de Participação", 2135:"Empresário (Individual)", 2143:"Cooperativa", 2151:"Consórcio de Sociedades", 2160:"Grupo de Sociedades", 2178:"Estabelecimento no Brasil de Sociedade Estrangeira", 2194:"Estab no Brasil Empr Binacional Argentina-Brasil", 2216:"Empresa Domiciliada no Exterior", 2224:"Clube/Fundo de Investimento", 2232:"Sociedade Simples Pura", 2240:"Sociedade Simples Limitada", 2259:"Sociedade Simples em Nome Coletivo", 2267:"Sociedade Simples em Comandita Simples", 2275:"Empresa Binacional", 2283:"Consórcio de Empregadores", 2291:"Consórcio Simples", 2305:"Empr Individ Responsab Limitada (Natur Empresária)", 2313:"Empr Individ Responsab Limitada (Natureza Simples)", 3034:"Serviço Notarial e Registral (Cartório)", 3069:"Fundação Privada", 3077:"Serviço Social Autônomo", 3085:"Condomínio Edilício", 3107:"Comissão de Conciliação Prévia", 3115:"Entidade de Mediação e Arbitragem", 3123:"Partido Político", 3131:"Entidade Sindical", 3204:"Estab no Brasil de Fundação ou Associação Estrang", 3212:"Fundação ou Associação Domiciliada no Exterior", 3220:"Organização Religiosa", 3239:"Comunidade Indígena", 3247:"Fundo Privado", 3999:"Associação Privada", 4014:"Empresa Individual Imobiliária", 4022:"Segurado Especial", 4081:"Contribuinte Individual", 4090:"Candidato a Cargo Político Eletivo", 4111:"Leiloeiro", 5010:"Organização Internacional", 5029:"Representação Diplomática Estrangeira", 5037:"Outras Instituições Extraterritoriais", 0000:""} | def_nat_jur |
GESTAO | {0:"Estadual", 2:"Estadual plena", 1:"Municipal planea assist", 3:"", 4:"", E:"Estadual plena", M:"Municipal plena assist", 5:"", 6:"", 7:"", 8:"", 9:""} | def_gestao |
IND_VDRL | {0:"Não", 1:"Sim"} | def_ind_vdrl |
COD_IDADE | {2:"Dias", 3:"Meses", 4:"Anos", 0:""} | def_cod_idade |
MORTE | {0:"Sem óbito", 1:"Com óbito"} | def_morte |
HOMONIMO | {0:"Não", 1:"Sim"} | def_homonimo |
INSTRU | {1:"Analfabeto", 2:"1º grau", 3:"2º grau", 4:"3º grau", 0:"", 9:""} | def_instru |
CONTRACEP1 | {01:"LAM", 02:"Ogino Kaus", 03:"Temperatura basal", 04:"Billings", 05:"Cinto térmico", 06:"DIU", 07:"Diafragma", 08:"Preservativo", 09:"Espermicida", 10:"Hormônio oral", 11:"Hormônio injetável", 12:"Coito interrompido", 00:"", 99:""} | def_contracep1 |
CONTRACEP2 | {01:"LAM", 02:"Ogino Kaus", 03:"Temperatura basal", 04:"Billings", 05:"Cinto térmico", 06:"DIU", 07:"Diafragma", 08:"Preservativo", 09:"Espermicida", 10:"Hormônio oral", 11:"Hormônio injetável", 12:"Coito interrompido", 00:"", 99:""} | def_contracep2 |
GESTRISCO | {0:"Não", 1:"Sim"} | def_gestrisco |
INFEHOSP | {0:"Não", 1:"Sim"} | def_infehosp |
COMPLEX | {01:"Atenção Básica", 02:"Média complexidade", 03:"Alta complexidade", 00:"", 99:""} | def_complex |
FINANC | {01:"Atenção Básica (PAB)", 02:"Assistência Farmacêutica", 04:"Fundo de Ações Estratégicas e Compensações FAEC", 05:"Incentivo – MAC", 06:"Média e Alta Complexidade (MAC)", 07:"Vigilância em Saúde", 00:"", 99:""} | def_financ |
RACA_COR | {01:"Branca", 02:"Preta", 03:"Parda", 04:"Amarela", 05:"Indígena", 99:"Sem Informação"} | def_raca_cor |
MARCA_UCI | {00:"Não utilizou UCI", 01:"Unidade de cuidados intermed neonatal convencional", 02:"Unidade de cuidados intermed neonatal canguru", 03:"Unidade intermediária neonatal"} | def_marca_uci |
TPDISEC1 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec1 |
TPDISEC2 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec2 |
TPDISEC3 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec3 |
TPDISEC4 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec4 |
TPDISEC5 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec5 |
TPDISEC6 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec6 |
TPDISEC7 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec7 |
TPDISEC8 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec8 |
TPDISEC9 | {1:"Pré-existente", 2:"Adquirido", 0:""} | def_tpdisec9 |
Enriquecimentos com base em tabelas auxiliares:
Os enriquecimentos dos dados do SIHSUS descritos a seguir foram baseados em dados disponíveis em planilhas auxiliares:
Enriquecendo os dados relacionados a região:
O enriquecimento dos dados do SIHSUS relacionados a região foram baseados nos dados disponíveis no seguinte arquivo (planilha "REGUF"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Fazer junção ("left join") com base na coluna 'MUNIC_MOV' na planilha 'REGUF' e extração da coluna 'value' | int_REGIAO |
MUNIC_RES | Fazer junção ("left join") com base na coluna 'MUNIC_RES' na planilha 'REGUF' e extração da coluna 'value' | res_REGIAO |
Enriquecendo os dados relacionadas ao tipo da AIH:
O enriquecimento dos dados do SIH relacionados ao tipo da AIH foram feitos deste modo.
Coluna base | Operação | Colunas resultantes |
---|---|---|
N_AIH | Fazer truncagem (“truncate”) de 1 caractere e junção (“left join”) com a seguinte sequência: {1:”AIH normal”, 2: “APAC Normal”, 3: “AIH CNRAC”, 4: “APAC CNRAC”, 5: “AIH Campanha de Cirurgias Eletivas”} | def_identific |
Enriquecendo os dados relacionadas a região metropolitana:
O enriquecimento dos dados do SIH relacionados a região metropolitana foram baseados nos dados disponíveis no seguinte arquivo (planilha "RMETRBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “RMETRBR” e extração da coluna “value” | def_reg_metr_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “RMETRBR” e extração da coluna “value” | def_reg_metr_res |
Enriquecendo os dados relacionados a CIR:
O enriquecimento dos dados do SIH relacionados a CIR foram baseados nos dados disponíveis no seguinte arquivo (planilha "CIRBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “CIRBR” e extração da coluna “value” | def_cir_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “CIRBR” e extração da coluna “value” | def_cir_res |
Enriquecendo os dados relacionados a aglomerados:
O enriquecimento dos dados do SIH relacionados a aglomerados foram baseados nos dados disponíveis no seguinte arquivo (planilha "AGLBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “AGLBR” e extração da coluna “value” | def_aglr_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “AGLBR” e extração da coluna “value” | def_aglr_res |
Enriquecendo os dados relacionados a mesorregião:
O enriquecimento dos dados do SIH relacionados a mesorregião foram baseados nos dados disponíveis no seguinte arquivo (planilha "MESOBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “MESOBR” e extração da coluna “value” | def_meso_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “MESOBR” e extração da coluna “value” | def_meso_res |
Enriquecendo os dados relacionados a microrregião:
O enriquecimento dos dados do SIH relacionados a microrregião foram baseados nos dados disponíveis no seguinte arquivo (planilha "MICROBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “MICROBR” e extração da coluna “value” | def_micro_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “MICROBR” e extração da coluna “value” | def_micro_res |
Enriquecendo os dados relacionados a região de saúde:
O enriquecimento dos dados do SIH relacionados a região de saúde foram baseados nos dados disponíveis no seguinte arquivo (planilha "RSAUDBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “RSAUDBR” e extração da coluna “value” | def_rsaud_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “RSAUDBR” e extração da coluna “value” | def_rsaud_res |
Enriquecendo os dados relacionados a centro de saúde:
O enriquecimento dos dados do SIH relacionados a centro de saúde foram baseados nos dados disponíveis no seguinte arquivo (planilha "CSAUDBR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_MOV | Junção (“left join”) com base na coluna “MUNIC_MOV” na planilha “CSAUDBR” e extração da coluna “value” | def_csaud_int |
MUNIC_RES | Junção (“left join”) com base na coluna “MUNIC_RES” na planilha “CSAUDBR” e extração da coluna “value” | def_csaud_res |
Enriquecendo os dados relacionados a esfera jurídica:
O enriquecimento dos dados do SIH relacionados a esfera jurídica foram baseados nos dados disponíveis no seguinte arquivo (planilha "ESFERAJUR"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
NAT_JUR | Junção (“left join”) com base na coluna “NAT_JUR” na planilha “ESFERAJUR” e extração da coluna “value” | def_esferajur |
Enriquecendo os dados relacionados a etnia:
O enriquecimento dos dados do SIH relacionados a etnia foram baseados nos dados disponíveis no seguinte arquivo (planilha "ETNIA"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
ETNIA | Junção (“left join”) com base na coluna “ETNIA” na planilha “ETNIA” e extração da coluna “value” | def_etnia |
def_etnia | Substituição dos valores “NÃO INFORMADO” por missing (NA) | def_etnia |
Enriquecendo os dados relacionados a nacionalidade:
O enriquecimento dos dados do SIH relacionados a nacionalidade foram baseados nos dados disponíveis no seguinte arquivo (planilha "NACION3D"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
NACIONAL | Junção (“left join”) com base na coluna “NACIONAL” na planilha “NACION3D” e extração da coluna “value” | def_nacionalidade |
Enriquecendo os dados relacionados a CBO:
O enriquecimento dos dados do SIH relacionados a CBO foram baseados nos dados disponíveis no seguinte arquivo (planilha "CBO"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
CBO | Junção (“left join”) com base na coluna “CBO” na planilha “CBO” e extração da coluna “value” | def_cbo |
Enriquecendo os dados relacionados a CNAE:
O enriquecimento dos dados do SIH relacionados a CNAE foram baseados nos dados disponíveis no seguinte arquivo (planilha "CNAE"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
CNAER | Junção (“left join”) com base na coluna “CNAER” na planilha “CNAE” e extração da coluna “value” | def_cnae |
Enriquecendo os dados relacionados a leitos:
O enriquecimento dos dados do SIH relacionados a leitos foram baseados nos dados disponíveis no seguinte arquivo (planilha "LEITOS"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
ESPEC | Junção (“left join”) com base na coluna “ESPEC” na planilha “LEITOS” e extração da coluna “value” | def_leitos |
Enriquecendo os dados relacionados a procedimento realizado:
O enriquecimento dos dados do SIH relacionados a procedimento realizado foram baseados nos dados disponíveis no seguinte arquivo (planilha "TB_SIGTAB"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
PROC_REA | Junção (“left join”) com base na coluna “PROC_REA” na planilha “TB_SIGTAB” e extração da coluna “value” | def_procedimento_realizado |
Enriquecendo os dados relacionados a procedimento solicitado:
O enriquecimento dos dados do SIH relacionados a procedimento solicitado foram baseados nos dados disponíveis no seguinte arquivo (planilha "TB_SIGTAB"):
Coluna base | Operação | Colunas resultantes |
---|---|---|
PROC_SOLIC | Junção (“left join”) com base na coluna “PROC_SOLIC” na planilha “TB_SIGTAB” e extração da coluna “value” | def_procedimento_solicitado |
2: Enriquecendo os dados relacionados a município (residência e internação):
O enriquecimento dos dados do SIHSUS relacionados a município foram baseados nos dados disponíveis no seguinte arquivo:
Coluna base | Operação | Colunas resultantes |
---|---|---|
MUNIC_RES | Truncar para um máximo de 6 caracteres | res_MUNCOD |
res_MUNCOD | Fazer junção ("left join") com base na coluna 'MUNCOD' em 'municipios' | ["res_MUNCOD", "res_MUNNOME", "res_MUNNOMEX", "res_AMAZONIA", "res_FRONTEIRA", "res_CAPITAL", "res_CODIGO_UF", "res_MSAUDCOD", "res_RSAUDCOD", "res_CSAUDCOD", "res_LATITUDE", "res_LONGITUDE", "res_ALTITUDE", "res_AREA", "res_codigo_adotado"] |
MUNIC_MOV | Truncar para um máximo de 6 caracteres | int_MUNCOD |
int_MUNCOD | Fazer junção ("left join") com base na coluna 'MUNCOD' em 'municipios' | ["int_MUNCOD", "int_MUNNOME", "int_MUNNOMEX", "int_AMAZONIA", "int_FRONTEIRA", "int_CAPITAL", "int_CODIGO_UF", "int_MSAUDCOD", "int_RSAUDCOD", "int_CSAUDCOD", "int_LATITUDE", "int_LONGITUDE", "int_ALTITUDE", "int_AREA", "int_codigo_adotado"] |
3: Enriquecendo os dados relacionados a UF (residência e internação):
O enriquecimento dos dados do SIHSUS relacionados a UF foram baseados nos dados disponíveis no seguinte arquivo:
Coluna base | Operação | Colunas resultantes |
---|---|---|
res_UFCOD | Fazer junção ("left join") com base na coluna 'CODIGO' em 'ufs' | ["res_SIGLA_UF", "res_CODIGO_UF", "res_NOME_UF"] |
int_UFCOD | Fazer junção ("left join") com base na coluna 'CODIGO' em 'ufs' | ["int_SIGLA_UF", "int_CODIGO_UF", "int_NOME_UF"] |
4: Enriquecendo os dados relacionados a CID 10:
O enriquecimento dos dados do SIHSUS relacionados a CID10 foram baseados nos dados disponíveis nos seguintes arquivos:
CID10 - Capítulos, CID10 - Grupos, CID10 - Categorias, CID10 - Subcategorias
Enriquecendo os dados relacionados ao diagnóstico principal:
O enriquecimento dos dados do SIHSUS relacionados a diagnóstico principal foi realizado conforme abaixo.
Coluna base | Operação | Colunas resultantes |
---|---|---|
DIAG_PRINC | Copia para nova variável | diag_princ |
diag_princ | Truncagem (truncate) de 3 caracteres | diag_princ |
diag_princ | Junção (left join) com base na coluna “diag_princ” na planilha “cid10_capitulos” e extração da coluna “value” | def_diag_princ_cap |
diag_princ | Junção (left join) com base na coluna “diag_princ” na planilha “cid10_grupos” e extração da coluna “value” | def_diag_princ_grupo |
diag_princ | Junção (left join) com base na coluna “diag_princ” na planilha “cid10_categorias” e extração da coluna “value” | def_diag_princ_cat |
diag_princ | Remoção (drop) da variável “diag_princ” | --- |
DIAG_PRINC | Junção (left join) com base na coluna “DIAG_PRINC” na planilha “cid10_subcategorias” e extração da coluna “value” | def_diag_princ_subcat |
Enriquecendo os dados relacionados ao primeiro diagnóstico secundário:
O enriquecimento dos dados do SIHSUS relacionados ao primeiro diagnóstico secundário foi realizado conforme abaixo.
Coluna base | Operação | Colunas resultantes |
---|---|---|
DIAGSEC1 | Copia para nova variável | diag_secun |
diag_secun | Truncagem (truncate) de 3 caracteres | diag_secun |
diag_secun | Junção (left join) com base na coluna “diag_secun” na planilha “cid10_capitulos” e extração da coluna “value” | def_secun1_princ_cap |
diag_secun | Junção (left join) com base na coluna “diag_secun” na planilha “cid10_grupos” e extração da coluna “value” | def_diag_secun1_grupo |
diag_secun | Junção (left join) com base na coluna “diag_secun” na planilha “cid10_categorias” e extração da coluna “value" | def_diag_secun1_cat |
diag_secun | Remoção (drop) da variável “diag_secun” | --- |
DIAGSEC1 | Junção (left join) com base na coluna “DIAGSEC1” na planilha “cid10_subcategorias” e extração da coluna “value” | def_diag_secun1_subcat |
5: Enriquecendo os dados relacionados a datas e idade:
Coluna base | Operação | Coluna resultante |
---|---|---|
DT_INTER | Criação de variável de data de internação com base no formato "yyyyMMdd" | dt_inter |
DT_SAIDA | Criação de variável de data de saída com base no formato "yyyyMMdd" | dt_saida |
dt_inter | Extração do ano da internação | ano_internacao |
dt_inter | Extração do dia da semana da internação | dia_semana_internacao |
dt_saida | Extração do ano da saída | ano_saida |
dt_saida | Extração do dia da semana da saída | dia_semana_saida |
IDADE | Criar variável de idade em anos, considerando a variável “COD_IDADE” (0 se idade em mêses ou dias (cod_idade < 4)) | def_idade_anos |
def_idade_anos | Criar variável de faixa etária utilizando o seguinte critério {'<1a': idade < 1; '1-4a': idade >= 1 e idade < 5; '5-14a': idade >= 5 e idade < 15; '15-49a': idade >= 15 and idade < 50; '50e+a':idade >= 50} | def_idade_bas |
def_idade_anos | Criar variável de faixa etária utilizando o seguinte critério {'<1a': idade < 1; '1-4a': idade >= 1 e idade < 5; '5-14a': idade >= 5 e idade < 15; '15-24a': idade >= 15 and idade < 25; '25-34a': idade >= 25 and idade < 35; '35-44a': idade >= 35 and idade < 45; '45-54a': idade >= 45 and idade < 55; '55-64a': idade >= 55 and idade < 65; '65e+a': idade >= 65} | def_idade_pub |
def_idade_anos | Criar variável de faixa etária utilizando o seguinte critério {'<1a': idade < 1; '1-4a': idade >= 1 e idade < 5; '5-9a': idade >= 5 e idade < 10; '10-14a': idade >= 10 and idade < 15; '15-19a': idade >= 15 and idade < 20; '20-24a': idade >= 20 and idade < 25; '25-29a': idade >= 25 and idade < 30; '30-34a': idade >= 30 and idade < 35; '35-39a': idade >= 35 and idade < 40; '40-44a': idade >= 40 and idade < 45; '45-49a': idade >= 45 and idade < 50; '50-54a': idade >= 50 and idade < 55; '55-59a': idade >= 55 and idade < 60; '60-64a': idade >= 60 and idade < 65; '65-69a': idade >= 65 and idade < 70; '70-74a': idade >= 70 and idade < 75; '75-79a': idade >= 75 and idade < 80; '80e+a': idade >= 80} | def_idade_18 |
6: Enriquecendo os dados relacionados a coordenadas (residência e internação):
Coluna base | Operação | Coluna resultante |
---|---|---|
res_LATITUDE e res_LONGITUDE | Concatenar coordenadas | res_coordenadas |
int_LATITUDE e int_LONGITUDE | Concatenar coordenadas | int_coordenadas |
Retorno da fase de tratamento (exemplo):
Fase Load:
Elasticsearch:
1: Indexando dados tratados do SIHSUS em banco de dados NoSQLUma vez finalizada a trasformação/preparação dos dados, estes são indexados em um servidor de banco de dados NoSQL Elasticsearch localizado em infraestrutura da PCDaS no LNCC.
Código Python:
Notebook Python
O código utilizado para indexação está disponível em formato Jupyter Notebook:Retorno - log de indexação (exemplo):
Dados e dicionário de variáveis - SIHSUS:
O download e a prévia do conjunto de dados resultante de todo o tratamento realizado e indexado no Elasticsearch estão disponíveis na PCDaS, assim como o dicionário de variáveis.
Dashboards Kibana:
Os dados SIHSUS indexados no Elasticsearch possibilitam o desenvovimento de dashboards Kibana para a visualização simples, rápida e dinâmica de grandes quantidades de dados. Os dashboards desenvolvidos estão disponíveis para visualização na PCDaS na seção de Análise Visual