De acordo com o artigo 6º da Constituição Federal de 1988, a saúde é reconhecida como um direito social. Além disso, o artigo 196 da mesma Constituição estabelece que a saúde é dever do Estado, devendo ser garantida por meio de políticas sociais e econômicas. No entanto, o Brasil enfrenta, há anos, problemas como a falta de leitos hospitalares.
Durante a pandemia de COVID-19, o Brasil vivenciou a maior crise sanitária e hospitalar da sua história, segundo a Fiocruz, evidenciando uma situação que persiste. No estado de Pernambuco, por exemplo, são necessários 52 leitos adicionais de UTI pediátrica e neonatal para atender às recomendações da OMS.
Diante da relevância desse tema, este projeto tem como objetivo analisar os dados sobre a quantidade de leitos disponíveis no Brasil, relacionando-os à população de cada estado e ao Índice de Desenvolvimento Humano Municipal (IDHM). Com esses recortes, espera-se responder a questões como: “Quais estados e regiões possuem mais leitos?”, “Quantos leitos por habitante há em cada estado?”, “Há uma relação direta entre o número de leitos e o IDHM de cada estado?” e “Qual é a situação em Pernambuco?”.
Para responder às perguntas propostas, foram necessários três conjuntos de dados. O primeiro, referente aos leitos disponíveis em 2024, está acessível no OpenDataSUS. O segundo, que contém o número de habitantes por estado, pode ser obtido na seção de downloads do Instituto Brasileiro de Geografia e Estatística (IBGE). O terceiro conjunto, relacionado ao Índice de Desenvolvimento Humano Municipal (IDHM), está disponível no site da Unidade de Desenvolvimento Humano.
Esses são os pacotes necessário para a execução deste projeto.
| Pacotes | Utilização |
|---|---|
| library(markdown) | Conversão de arquivo em R em diversos formatos |
| library(rmdformats) | Customização do template gerado pelo rmarkdown |
| library(knitr) | Geração de tabelas |
| library(dplyr) | Manipulação e agregação de dados |
| library(ggplot2) | Visualização de gráficos |
| library(readr) | Leitura de arquivos CSV |
| library(readxl) | Leitura de arquivos XLS |
| library(stringr) | Manipulação de strings |
| library(DT) | Criação de tabelas interativas e roláveis |
A base de dados extraída do OpenDataSUS está em um arquivo CSV. Para realizar a leitura, foi utilizada a seguinte função:
Essa base de dados contém 34 colunas e 495.551 linhas. Suas 6 primeiras linhas, com as 34 colunas podem ser vistas abaixo.
Ao examinar os nomes das colunas, percebeu-se que nem todas seriam relevantes para o desenvolvimento do trabalho, além de identificar a presença de duas colunas com valores ausentes (NA’s). Por esse motivo, as colunas desnecessárias foram renomeadas numericamente em ordem crescente, conforme o seguinte padrão:
colnames(base_leitos) <- c("1", "REGIAO", "UF", "MUNICIPIO", "2",
"3", "NOME_ESTABELECIMENTO", "4", "TIPO_GESTAO", "5", "6",
"7", "NATUREZA", "8", "9", "10", "11", "12", "13", "14",
"LEITOS_EXISTENTES", "LEITOS_SUS", "UTI_ADULTO_EXIST",
"UTI_ADULTO_SUS", "UTI_PEDIATRICO_EXIST", "UTI_PEDIATRICO_SUS",
"UTI_NEONATAL_EXIST", "UTI_NEONATAL_SUS", "UTI_QUEIMADO_EXIST",
"UTI_QUEIMADO_SUS", "UTI_CORONARIANA_EXIST", "UTI_CORONARIANA_SUS")Ficando desta forma:
Como apenas 18 colunas serão relevantes para o desenvolvimento do trabalho, foi criada uma nova base de dados, excluindo as colunas com valores ausentes (NA’s) e as colunas renomeadas com números.
dados_leitos <- base_leitos %>%
select(-which(is.na(colnames(base_leitos)) | grepl("^[0-9]+$", colnames(base_leitos))))Além disso, substituíu-se os “_” por espaço, na coluna NATUREZA.
A nossa base de dados, após as modificações, ficou da seguinte forma, conforme pode ser vista abaixo:
Após isso, um novo arquivo .csv foi gerado com as colunas restantes.
Os dados foram extraídos do site do IBGE e estão no formato XLS. Para realizar a leitura, considerando que os nomes das colunas deveriam ser extraídos da linha 2, foram utilizadas as seguintes funções:
A planilha contém 3 colunas e 36 linhas, conforme mostrado abaixo:
A coluna com valores ausentes (NA) foi removida, assim como as duas últimas linhas da base de dados. Além disso, os estados foram mapeados para gerar uma nova coluna “UF” contendo as siglas, facilitando a integração com a base de dados de leitos. Foi garantido também que a coluna de “População” estivesse no formato numérico, para assegurar a correta manipulação dos dados.
pop_limpo <- pop %>%
slice(-(1), -(2), -(n() - 1), -n()) %>%
select(where(~ !all(is.na(.))))
estado_sigla <- c(
'RO' = 'Rondônia', 'AC' = 'Acre', 'AM' = 'Amazonas', 'RR' = 'Roraima',
'PA' = 'Pará', 'AP' = 'Amapá', 'TO' = 'Tocantins', 'MA' = 'Maranhão',
'PI' = 'Piauí', 'CE' = 'Ceará', 'RN' = 'Rio Grande do Norte', 'PB' = 'Paraíba',
'PE' = 'Pernambuco', 'AL' = 'Alagoas', 'SE' = 'Sergipe', 'BA' = 'Bahia',
'MG' = 'Minas Gerais', 'ES' = 'Espírito Santo', 'RJ' = 'Rio de Janeiro',
'SP' = 'São Paulo', 'PR' = 'Paraná', 'SC' = 'Santa Catarina', 'RS' = 'Rio Grande do Sul',
'MS' = 'Mato Grosso do Sul', 'MT' = 'Mato Grosso', 'GO' = 'Goiás',
'DF' = 'Distrito Federal'
)
pop_limpo <- pop_limpo %>%
filter(!grepl("Região", `BRASIL E UNIDADES DA FEDERAÇÃO`)) %>%
rename(Estado = `BRASIL E UNIDADES DA FEDERAÇÃO`, Populacao = `POPULAÇÃO`)
pop_limpo <- pop_limpo %>%
mutate(UF = names(estado_sigla)[match(Estado, estado_sigla)]) %>%
select(UF, Populacao)A planilha foi ajustada, ficando conforme mostrado abaixo:
Após isso, um novo arquivo .csv foi gerado com as mudanças.
Esta última base de dados foi extraída da Unidade de Desenvolvimento Humano e está no formato XLSX. Para realizar a leitura, foi utilizada a seguinte função:
A base possui 26 colunas e 490 linhas, contendo dados sobre o IDHM de 2012 até 2021, que é a data da última coleta. Abaixo, pode ser vista uma prévia das primeiras doze linhas da tabela:
Como o estudo será focado apenas no IDHM de 2021 e apenas o principal índice IDHM é relevante para a pesquisa, os dados foram filtrados para incluir somente o ano de 2021. Além disso, foi feito um mapeamento dos estados para siglas, facilitando a integração com os outros conjuntos de dados. Por fim, foram mantidas apenas as colunas ANO, UF e IDHM.
siglas_estados <- data.frame(
UF = c("AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS",
"MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC",
"SP", "SE", "TO"),
NOME = c("Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Distrito Federal",
"Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul",
"Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí",
"Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondônia",
"Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins")
)
idh_data <- idh_data %>%
filter(ANO == 2021 & NOME %in% siglas_estados$NOME) %>%
select(ANO, NOME, IDHM) %>%
left_join(siglas_estados, by = "NOME") %>%
select(ANO, UF, IDHM)A tabela modificada ficou da seguinte forma:
Após isso, um novo arquivo .csv foi gerado com as mudanças.
Como mencionado na Introdução, o Brasil enfrenta desafios significativos relacionados à falta de leitos em vários estados. Para entender melhor essa situação e identificar quais estados e regiões possuem mais leitos, é crucial realizar uma análise detalhada da base de dados disponível.
Primeiramente, a análise se concentra na contagem total de leitos por estado e região. Isso envolve agregar a quantidade total de leitos disponíveis, somando todas as categorias pertinentes de leitos, conforme definido na base de dados. Esta abordagem nos permite visualizar os gráficos dos 10 estados com mais leitos, assim como os 5 estados com menos leitos.
library(dplyr)
library(ggplot2)
dados_leitos <- read.csv("dados_leitos.csv")
leitos_por_estado <- dados_leitos %>%
group_by(UF) %>%
summarise(total_leitos = sum(LEITOS_EXISTENTES, na.rm = TRUE)) %>%
arrange(desc(total_leitos)) %>%
head(10)
ggplot(leitos_por_estado, aes(x = reorder(UF, -total_leitos), y = total_leitos)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = total_leitos), vjust = -0.5) +
labs(title = "Os 10 Estados com mais leitos", x = "Estado", y = "Total de Leitos") +
theme_minimal() +
scale_y_continuous(labels = scales::number_format(accuracy = 1))top_5_menos <- dados_leitos %>%
group_by(UF) %>%
summarise(total_leitos = sum(LEITOS_EXISTENTES, na.rm = TRUE)) %>%
arrange(total_leitos) %>%
head(5)
ggplot(top_5_menos, aes(x = reorder(UF, total_leitos), y = total_leitos)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = total_leitos), vjust = -0.5) +
labs(title = "Os 5 Estados com menos leitos", x = "Estado", y = "Total de Leitos") +
theme_minimal() +
scale_y_continuous(labels = scales::number_format(accuracy = 1))É importante ressaltar que os leitos disponíveis em cada estado pertencem a três naturezas distintas: pública, privada e filantrópica. Os hospitais filantrópicos desempenham um papel crucial no sistema de saúde brasileiro. Em primeiro lugar, dado que a quantidade de hospitais públicos não é suficiente para atender toda a população, o estado estabelece parcerias com hospitais filantrópicos para garantir o atendimento pelo Sistema Único de Saúde (SUS). E por serem instituições de direito privado e sem fins lucrativos, esses hospitais também oferecem serviços para planos de saúde e atendimento particular.
Considerando a relevância dessa divisão e o papel fundamental de cada tipo de hospital, foi realizada uma análise detalhada dessa estrutura nos dez estados com o maior número de leitos no país.
dados_top_10 <- dados_leitos %>%
filter(UF %in% leitos_por_estado$UF)
leitos_por_estado_natureza_top10 <- dados_top_10 %>%
group_by(UF, NATUREZA) %>%
summarise(total_leitos = sum(LEITOS_EXISTENTES, na.rm = TRUE)) %>%
arrange(UF, desc(total_leitos))
cores_personalizadas <- c("HOSPITAL PÚBLICO" = "darkblue",
"HOSPITAL FILANTRÓPICO" = "blue","HOSPITAL PRIVADO" = "lightblue")
ggplot(leitos_por_estado_natureza_top10, aes(x = reorder(UF, -total_leitos),
y = total_leitos, fill = NATUREZA)) +
geom_bar(stat = "identity") +
labs(title = "Leitos por Natureza nos Estados do Top 10",
x = "Estado", y = "Total de Leitos") +
theme_minimal() +
scale_y_continuous(labels = scales::number_format(accuracy = 1)) +
scale_fill_manual(values = cores_personalizadas)Analisando os gráficos dos estados com mais e menos leitos, é possível observar que as regiões Sudeste e Nordeste dominam o TOP 10 dos estados com mais leitos. Em contraste, quatro dos cinco estados com menos leitos estão localizados na região Norte. Essa tendência é confirmada ao examinarmos o gráfico abaixo, que ilustra claramente a distribuição de leitos entre as diferentes regiões do Brasil.
leitos_por_regiao <- dados_leitos %>%
group_by(REGIAO) %>%
summarise(total_leitos = sum(LEITOS_EXISTENTES, na.rm = TRUE))
ggplot(leitos_por_regiao, aes(x = REGIAO, y = total_leitos, fill = REGIAO)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = total_leitos), vjust = -0.5) +
labs(title = "Quantidade de Leitos por Região", x = "Região", y = "Total de Leitos") +
theme_minimal()Agora, vamos aprofundar a análise para entender a quantidade de leitos por habitante em cada estado. Este novo enfoque permitirá avaliar não apenas a disponibilidade total de leitos, mas também como ela se relaciona com a população de cada estado.
Essas análises fornecerão uma visão mais precisa sobre a equidade na distribuição de leitos, ajudando a identificar quais estados têm uma melhor capacidade de atendimento em relação à sua população e quais precisam de mais recursos.
A tabela com estes dados pode ser vista abaixo:
leitos <- read.csv("dados_leitos.csv")
populacao <- read.csv("dados_pop.csv")
leitos_por_estado <- leitos %>%
group_by(UF) %>%
summarise(Total_Leitos = sum(LEITOS_EXISTENTES))
leitos_populacao <- leitos_por_estado %>%
inner_join(populacao, by = "UF")
leitos_populacao <- leitos_populacao %>%
mutate(Total_Leitos = as.numeric(Total_Leitos),
Populacao = as.numeric(Populacao),
Leitos_por_Habitante = Total_Leitos / Populacao)
tabela_leitos_pop <- head(leitos_populacao, 27)
datatable(tabela_leitos_pop, rownames = FALSE,
options = list(scrollX = TRUE, scrollY = "300px",
paging = FALSE, searching = FALSE))Ao analisar o gráfico dos 10 estados com mais leitos por habitante, observamos diferenças em relação ao gráfico da seção anterior, que mostrava o número total de leitos. Nesta nova análise, apenas os estados do Rio de Janeiro, Rio Grande do Sul, Paraná, Pernambuco e Goiás aparecem em ambas as listas, embora suas posições no ranking possam variar. Essas variações indicam que, ao considerar o número de leitos em relação à população, a distribuição de recursos de saúde pode ser diferente, revelando novas perspectivas sobre a capacidade de atendimento em cada estado.
leitos_pop_10 <- leitos_populacao %>%
group_by(UF) %>%
summarise(Leitos_por_Habitante) %>%
arrange(desc(Leitos_por_Habitante)) %>%
head(10)
ggplot(leitos_pop_10, aes(x = reorder(UF, -Leitos_por_Habitante),
y = Leitos_por_Habitante)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = scales::number(Leitos_por_Habitante,
accuracy = 0.0001)), vjust = -0.5) +
labs(title = "Os 10 Estados com mais leitos por habitantes",
x = "Estado", y = "Total de Leitos") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::number_format(accuracy = 0.001))Ao analisar os 5 estados com menos leitos por habitante, notamos que apenas Roraima e Tocantins não permanecem no ranking. Isso indica que os outros estados, que continuam na lista, enfrentam problemas ainda mais evidentes na relação entre a quantidade de leitos e a população.
top_5_menores <- leitos_populacao %>%
group_by(UF) %>%
summarise(Leitos_por_Habitante) %>%
arrange(Leitos_por_Habitante) %>%
head(5)
ggplot(top_5_menores, aes(x = reorder(UF, Leitos_por_Habitante),
y = Leitos_por_Habitante)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = scales::number(Leitos_por_Habitante,
accuracy = 0.0001)), vjust = -0.5) +
labs(title = "Os 5 Estados com menos leitos por habitantes",
x = "Estado", y = "Total de Leitos") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5)) +
scale_y_continuous(labels = scales::number_format(accuracy = 0.001))Através da análise, procuraremos entender se existe uma correlação entre o nível de desenvolvimento humano, especialmente no que tange à saúde, e a quantidade de leitos disponíveis em cada estado. A expectativa de vida, como parte do IDHM, pode fornecer insights sobre como o desenvolvimento social e econômico de uma região influencia a capacidade de atendimento de saúde.
Os 10 estados com melhor IDHM podem ser vistos abaixo:
library(dplyr)
library(ggplot2)
library(readr)
idh <- read.csv("idh_data.csv")
top_10_melhores <- idh %>%
arrange(desc(IDHM)) %>%
head(10)
ggplot(top_10_melhores, aes(x = reorder(UF, -IDHM), y = IDHM)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = round(IDHM, 3)), vjust = -0.5) +
labs(title = "Top 10 Melhores IDHM", x = "Estado", y = "IDHM") +
theme_minimal()Sabendo que o IDHM os parâmetros de Renda, Educação e Longevidade—sendo este último o mais relevante para nossa análise, pois uma expectativa de vida mais alta pode refletir um sistema de saúde mais eficaz e acessível—verificamos que os 10 estados com os melhores IDHM apresentam apenas metade dos estados presentes na lista dos 10 estados com mais leitos por habitante.
Por outro lado, ao comparar os 10 estados com mais leitos de forma geral com os 10 estados com os melhores IDHM, encontramos que apenas três estados aparecem exclusivamente no ranking de leitos gerais e não no dos melhores IDHM: Bahia, Pernambuco e Ceará. Todos esses estados estão localizados na região Nordeste.
E ao analisar os cinco estados com os menores IDHM em relação aos cinco estados com menos leitos por habitante e aos cinco estados com menos leitos no geral, observamos pouca correlação entre esses rankings. Apenas o estado do Amapá está presente em todas as três listas, destacando-se como um caso consistente de baixa classificação tanto em termos de desenvolvimento humano quanto na disponibilidade de leitos. Essa pouca relação entre os rankings sugere que, enquanto o desenvolvimento humano pode influenciar a capacidade de atendimento de saúde, outros fatores também desempenham um papel importante na disponibilidade de leitos.
top_5_menores <- idh %>%
arrange(IDHM) %>%
head(5)
ggplot(top_5_menores, aes(x = reorder(UF, IDHM), y = IDHM)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = round(IDHM, 3)), vjust = -0.5) + # Adicionar valores do IDHM nas barras
labs(title = "Top 5 Piores IDHM", x = "Estado", y = "IDHM") +
theme_minimal()Vamos agora analisar a situação do estado de Pernambuco. Nas análises realizadas, foi observado que o estado dispõe de um total de 178.529 leitos, dos quais 126.789 são destinados ao Sistema Único de Saúde (SUS). Além disso, temos uma tabela que detalha a quantidade de leitos disponíveis em cada cidade do estado.
library(dplyr)
library(readr)
leitos <- read_csv("dados_leitos.csv")
dados_pe <- leitos %>% filter(UF == "PE")
total_leitos_pe <- sum(dados_pe$LEITOS_EXISTENTES, na.rm = TRUE)
total_leitos_sus_pe <- sum(dados_pe$LEITOS_SUS, na.rm = TRUE)library(DT)
cidades_mais_leitos <- dados_pe %>%
group_by(MUNICIPIO) %>%
summarise(total_leitos = sum(LEITOS_EXISTENTES, na.rm = TRUE)) %>%
arrange(desc(total_leitos))
tabela_leitos_pe <- head(cidades_mais_leitos, 184)
datatable(tabela_leitos_pe, rownames = FALSE,
options = list(scrollX = TRUE, scrollY = "300px",
paging = FALSE, searching = FALSE))Embora Pernambuco esteja dividido em cinco mesorregiões, as cinco cidades com maior número de leitos de UTI estão concentradas em apenas três dessas regiões. Três delas estão localizadas na Região Metropolitana, uma no Agreste e outra no São Francisco Pernambucano. Isso revela uma concentração significativa de recursos de saúde em determinadas áreas do estado, enquanto outras regiões podem estar com uma menor capacidade de atendimento, refletindo desigualdades na distribuição de leitos de UTI em Pernambuco. Como mostra o gráfico a seguir:
cidades_mais_utis <- dados_pe %>%
group_by(MUNICIPIO) %>%
summarise(total_utis = sum(UTI_ADULTO_EXIST + UTI_PEDIATRICO_EXIST + UTI_NEONATAL_EXIST +
UTI_QUEIMADO_EXIST + UTI_CORONARIANA_EXIST, na.rm = TRUE)) %>%
arrange(desc(total_utis)) %>%
head(5)
ggplot(cidades_mais_utis, aes(x = reorder(MUNICIPIO, - total_utis), y = total_utis)) +
geom_bar(stat = "identity", fill = "darkblue") +
geom_text(aes(label = total_utis), vjust = -0.5) + # Adiciona os valores acima das barras
labs(title = "Top 10 Cidades com Mais UTIs",
x = "Cidade",
y = "Total de UTIs") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))O objetivo deste trabalho foi analisar a quantidade de leitos no Brasil, relacionando-os com o número de habitantes por estado e com o Índice de Desenvolvimento Humano Municipal (IDHM), buscando identificar disparidades e padrões.
Com base em todas as análises realizadas, podemos concluir que a distribuição de leitos no Brasil é marcada por significativas desigualdades regionais. Estados das regiões Sudeste e Nordeste concentram a maior parte dos leitos. Tanto em termos absolutos quanto em relação à população a região Norte, em especial, enfrenta grandes deficiências nesse aspecto. Quando ajustamos os números pela quantidade de habitantes, percebemos que alguns estados com muitos leitos no total não mantêm as mesmas posições, evidenciando a importância de considerar a população no planejamento da infraestrutura de saúde.
Além disso, ao comparar os dados de leitos com o Índice de Desenvolvimento Humano Municipal (IDHM), identificamos que não há uma correlação clara entre o desenvolvimento humano e a quantidade de leitos, com exceção de alguns casos isolados. Isso mostra que a capacidade de atendimento hospitalar não depende exclusivamente do desenvolvimento humano, mas também de políticas públicas e investimentos específicos em saúde.
No caso de Pernambuco, apesar de ser um estado com um número expressivo de leitos, notamos que esses recursos estão concentrados principalmente em algumas cidades, sobretudo na Região Metropolitana. Isso revela uma concentração de serviços de saúde que deixa outras áreas mais vulneráveis.
Portanto, as análises indicam a necessidade de uma distribuição mais equitativa dos recursos de saúde, especialmente em regiões que enfrentam desafios socioeconômicos e demográficos. Políticas de saúde pública mais robustas e investimentos direcionados são fundamentais para reduzir as desigualdades e melhorar o acesso aos serviços de saúde em todo o país.
Constituição Federal | CONSTITUIÇÃO DA REPÚBLICA FEDERATIVA DO BRASIL DE 1988 - https://www.jusbrasil.com.br/legislacao/1503907193/constituicao-federal-constituicao-da-republica-federativa-do-brasil-1988
Brasil passa pela maior crise sanitária e hospitalar da história, diz Fiocruz - https://g1.globo.com/jornal-nacional/noticia/2021/03/17/brasil-passa-pela-maior-crise-sanitaria-e-hospitalar-da-historia-diz-fiocruz.ghtml
Pernambuco precisa de mais 52 leitos de UTI pediátrica e neonatal para cumprir recomendação da OMS, diz especialista - https://g1.globo.com/pe/pernambuco/noticia/2024/05/17/pernambuco-precisa-de-mais-52-leitos-de-uti-pediatrica-e-neonatal-para-cumprir-recomendacao-da-oms-diz-especialista.ghtml
O que é um hospital filantrópico? - https://www.sinibref-inter.org.br/o-que-e-um-hospital-filantropico/
Lista de mesorregiões e microrregiões de Pernambuco - https://pt.wikipedia.org/wiki/Lista_de_mesorregi%C3%B5es_e_microrregi%C3%B5es_de_Pernambuco