\[ \cdot \]
\(\qquad\) Nosso objetivo é fazer uma análise descritiva da lei dos 60 dias para o câncer de mama a nível dos estados brasileiros. Para isso, iremos analisar para cada unidade federativa qual a porcentagem de pacientes que tiveram a lei dos 60 dias descumprida.
\(\qquad\) A Lei dos 60 dias é uma importante lei relacionada a oncologia, sendo uma referência ao tratamento do câncer pelo Sistema Único de Saúde (SUS). Ela estabelece que os pacientes com diagnóstico câncer tenham acesso ao tratamento no prazo máximo de 60 dias, contados a partir do diagnóstico confirmado, conforme a lei nº 12.732, de 22 de novembro de 2012. Essa lei tem como objetivo garantir o acesso dos pacientes oncológicos ao tratamento de forma mais ágil e eficiente, reduzindo as filas de espera e evitando que os pacientes tenham que aguardar por longos períodos para iniciar o tratamento.
\(\qquad\) Para isso, utilizaremos o Painel de Oncologia, que é um painel criado para monitoramento da lei dos 60 dias. Esse painel utiliza dados do sistema ambulatorial (SIASUS), do sistema hospitalar (SIHSUS) e do sistema de informações de Câncer (SISCAN). Os dados de câncer de mama estão disponíveis desde 2013.
\[ \cdots \]
Classificação Internacional de Doenças (CID): é um documento elaborado e atualizado pela Organização Mundial da Saúde (OMS). Esse documento fornece códigos para padronizar doenças e outros problemas relacionados a saúde. Isso permite uma sistematização importante para o controle de dados relativos às doenças.
Neoplasia maligna: embora todo câncer seja uma neoplasia, nem toda neoplasia é um tumor maligno. O tumor benigno é uma massa com crescimento celular organizado, diferente da neoplasia maligna, que é caracterizada pelo crescimento desordenado das células, o que pode levar à metástase para outros órgãos e tecidos.
\(\qquad\) C50 é o código do câncer de mama, inclui o tecido conjuntivo de mama, mas exclui tumores na pele da mama (que foram inseridos em subcategorias de neoplasias de pele C43.5, C44.5). Quando o CID aparece com 3 dígitos, se trata das subcategorias, como vemos na lista abaixo:
C50.0: Neoplasia maligna do mamilo e aréola.
C50.1: Neoplasia maligna da porção central da
mama.
C50.2: Neoplasia maligna do quadrante superior interno
da mama.
C50.3: Neoplasia maligna do quadrante inferior interno
da mama.
C50.4: Neoplasia maligna do quadrante superior externo
da mama.
C50.5: Neoplasia maligna do quadrante inferior externo
da mama.
C50.6: Neoplasia maligna da porção axilar da
mama.
C50.8: Neoplasia maligna da mama com lesão
invasiva.
C50.9: Neoplasia maligna da mama, não especificada.
\(\qquad\) Quando uma doença é reportada, é importante sempre especificar o máximo utilizando as subcategorias. Reportar C50 pode ser qualquer uma das categorias ou até mesmo mais de uma delas e portanto dificulta a rastreabilidade em análises epidemiológicas.
\[ \cdots \]
\(\qquad\) Os dados referentes ao diagnóstico de neoplasia maligna de mama (C50 - Neoplasia maligna da mama, já que o Tabnet não permite selecionar subcategorias) foram obtidos através do DataSUS-Tabnet para os anos de 2013 a 2022.
# carregar os pacotes
# library(tidyverse)
# library(kableExtra)
load_data <- function(file, year){
data <- readr::read_delim(file = file, delim = ";",
escape_double = FALSE, trim_ws = TRUE,
show_col_types = FALSE,
locale = readr::locale(encoding = "ISO-8859-1"))
data <- data |>
dplyr::mutate(
`UF do diagnóstico` = str_replace(`UF do diagnóstico`,
"^\\d+\\s+",
"")
) |>
dplyr::mutate(Ano = year) |>
dplyr::rename(
`Sem informação de tratamento (SIT)` = `Sem informação de tratamento`
) |>
dplyr::mutate("Região" = case_when(
`UF do diagnóstico` %in% c("Rondônia", "Acre",
"Amazonas", "Roraima",
"Pará", "Amapá", "Tocantins") ~ "Norte",
`UF do diagnóstico` %in% c("Maranhão", "Piauí", "Ceará",
"Rio Grande do Norte", "Paraíba",
"Pernambuco", "Alagoas",
"Sergipe", "Bahia") ~ "Nordeste",
`UF do diagnóstico` %in% c("Minas Gerais", "Espírito Santo",
"Rio de Janeiro", "São Paulo") ~ "Sudeste",
`UF do diagnóstico` %in% c("Paraná", "Santa Catarina",
"Rio Grande do Sul") ~ "Sul",
`UF do diagnóstico` %in% c("Mato Grosso do Sul", "Mato Grosso",
"Goiás", "Distrito Federal") ~ "Centro-Oeste"
))
return(data)
}
data_2013 <- load_data("2013.csv", 2013)
data_2014 <- load_data("2014.csv", 2014)
data_2015 <- load_data("2015.csv", 2015)
data_2016 <- load_data("2016.csv", 2016)
data_2017 <- load_data("2017.csv", 2017)
data_2018 <- load_data("2018.csv", 2018)
data_2019 <- load_data("2019.csv", 2019)
data_2020 <- load_data("2020.csv", 2020)
data_2021 <- load_data("2021.csv", 2021)
data_2022 <- load_data("2022.csv", 2022)
base::rm(load_data)
\[ \cdots \]
\(\qquad\) Empilhanda as bases de dados carregadas. Para o nosso objetivo, também é interessante criar duas novas colunas a partir dos dados. Essas colunas são: Total exceto “Sem informação de tratamento (SIT)” e o percentual de acesso ao tratamento posterior aos 60 dias.
# empilhando as bases
stacked_data <- dplyr::bind_rows(data_2013, data_2014,
data_2015, data_2016,
data_2017, data_2018,
data_2019, data_2020,
data_2021, data_2022)
base::rm(data_2013, data_2014, data_2015, data_2016, data_2017,
data_2018, data_2019, data_2020, data_2021, data_2022)
# criando duas colunas novas
stacked_data <- stacked_data |>
dplyr::mutate(
`Total (Exc_SIT)` = `Até 30 dias` + `31 - 60 dias` + `Mais de 60`
) |>
dplyr::mutate(
`Mais de 60 (% Exc_SIT)` = round((`Mais de 60` / `Total (Exc_SIT)`)*100, 2)
) |> # tratando resultado NaN
dplyr::mutate(
`Mais de 60 (% Exc_SIT)` = replace_na(`Mais de 60 (% Exc_SIT)`, 0.00))
Abaixo, vamos filtrar os dados para o período de 2019 e verificar os percentuais acima de 60 dias nos Estados.
# tabela para o ano de 2019
data_2019 <- stacked_data |>
dplyr::filter(Ano == 2019 &
`UF do diagnóstico` != "Total") |>
dplyr::arrange(desc(`Mais de 60 (% Exc_SIT)`))
kableExtra::kable(data_2019) |>
kableExtra::kable_styling(full_width = FALSE,
bootstrap_options = c("striped","hover","condensed","responsive"))
| UF do diagnóstico | Até 30 dias | 31 - 60 dias | Mais de 60 | Sem informação de tratamento (SIT) | Total | Ano | Região | Total (Exc_SIT) | Mais de 60 (% Exc_SIT) |
|---|---|---|---|---|---|---|---|---|---|
| Roraima | 10 | 2 | 27 | 8 | 47 | 2019 | Norte | 39 | 69.23 |
| Mato Grosso do Sul | 92 | 65 | 273 | 63 | 493 | 2019 | Centro-Oeste | 430 | 63.49 |
| Rio de Janeiro | 875 | 605 | 2482 | 608 | 4570 | 2019 | Sudeste | 3962 | 62.65 |
| Santa Catarina | 441 | 383 | 1240 | 368 | 2432 | 2019 | Sul | 2064 | 60.08 |
| Amapá | 6 | 12 | 27 | 1 | 46 | 2019 | Norte | 45 | 60.00 |
| Distrito Federal | 123 | 92 | 322 | 106 | 643 | 2019 | Centro-Oeste | 537 | 59.96 |
| Amazonas | 135 | 34 | 240 | 130 | 539 | 2019 | Norte | 409 | 58.68 |
| São Paulo | 2278 | 2038 | 5840 | 2589 | 12745 | 2019 | Sudeste | 10156 | 57.50 |
| Maranhão | 149 | 114 | 354 | 119 | 736 | 2019 | Nordeste | 617 | 57.37 |
| Paraíba | 256 | 136 | 521 | 58 | 971 | 2019 | Nordeste | 913 | 57.06 |
| Minas Gerais | 1226 | 937 | 2799 | 851 | 5813 | 2019 | Sudeste | 4962 | 56.41 |
| Bahia | 619 | 437 | 1313 | 594 | 2963 | 2019 | Nordeste | 2369 | 55.42 |
| Alagoas | 110 | 115 | 261 | 99 | 585 | 2019 | Nordeste | 486 | 53.70 |
| Tocantins | 41 | 41 | 91 | 16 | 189 | 2019 | Norte | 173 | 52.60 |
| Ceará | 434 | 507 | 1021 | 266 | 2228 | 2019 | Nordeste | 1962 | 52.04 |
| Rio Grande do Sul | 977 | 779 | 1876 | 769 | 4401 | 2019 | Sul | 3632 | 51.65 |
| Mato Grosso | 172 | 82 | 267 | 31 | 552 | 2019 | Centro-Oeste | 521 | 51.25 |
| Rio Grande do Norte | 209 | 209 | 438 | 490 | 1346 | 2019 | Nordeste | 856 | 51.17 |
| Pará | 179 | 178 | 367 | 110 | 834 | 2019 | Norte | 724 | 50.69 |
| Rondônia | 78 | 65 | 144 | 209 | 496 | 2019 | Norte | 287 | 50.17 |
| Goiás | 347 | 196 | 537 | 85 | 1165 | 2019 | Centro-Oeste | 1080 | 49.72 |
| Espírito Santo | 276 | 214 | 472 | 138 | 1100 | 2019 | Sudeste | 962 | 49.06 |
| Pernambuco | 612 | 409 | 935 | 1025 | 2981 | 2019 | Nordeste | 1956 | 47.80 |
| Sergipe | 122 | 98 | 201 | 21 | 442 | 2019 | Nordeste | 421 | 47.74 |
| Acre | 9 | 14 | 21 | 0 | 44 | 2019 | Norte | 44 | 47.73 |
| Piauí | 173 | 181 | 245 | 64 | 663 | 2019 | Nordeste | 599 | 40.90 |
| Paraná | 1131 | 672 | 1219 | 796 | 3818 | 2019 | Sul | 3022 | 40.34 |
base::rm(data_2019)
\(\qquad\) No ano de 2019, referente ao ano de diagnóstico, os três Estados que pior cumpriram a Lei dos 60 dias foram: Roraima, Mato Grosso do Sul e Rio de Janeiro. Os três que melhor cumpriram foram: Paraná, Piauí e Acre.
\[ \cdots \]
\(\qquad\) Abaixo, a tabela referente ao desempenho nacional.
stacked_data_tot <- stacked_data |>
dplyr::filter(`UF do diagnóstico` == "Total") |>
dplyr::select(c(Ano, `Mais de 60 (% Exc_SIT)`,
`Sem informação de tratamento (SIT)`))
kableExtra::kable(stacked_data_tot) |>
kableExtra::kable_styling(full_width = FALSE,
bootstrap_options = c("striped","hover","condensed","responsive"))
| Ano | Mais de 60 (% Exc_SIT) | Sem informação de tratamento (SIT) |
|---|---|---|
| 2013 | 50.93 | 2660 |
| 2014 | 54.56 | 2476 |
| 2015 | 54.23 | 2406 |
| 2016 | 54.28 | 2180 |
| 2017 | 55.30 | 2206 |
| 2018 | 53.81 | 4401 |
| 2019 | 54.44 | 9614 |
| 2020 | 50.95 | 9994 |
| 2021 | 50.91 | 12497 |
| 2022 | 21.11 | 26510 |
\[ \cdots \]
\(\qquad\) Abaixo, a tabela referente ao desempenho regional.
stacked_data_reg <- stacked_data |>
dplyr::filter(`UF do diagnóstico` != "Total") |>
dplyr::select(c(Ano, `Mais de 60 (% Exc_SIT)`,
`Sem informação de tratamento (SIT)`, Região)) |>
dplyr::group_by(Ano, Região) |>
dplyr::summarize(
SIT_soma = sum(`Sem informação de tratamento (SIT)`),
Desempenho_media = mean(`Mais de 60 (% Exc_SIT)`)
)
## `summarise()` has grouped output by 'Ano'. You can override using the `.groups`
## argument.
kableExtra::kable(stacked_data_reg) |>
kableExtra::kable_styling(full_width = FALSE,
bootstrap_options = c("striped","hover","condensed","responsive"))
| Ano | Região | SIT_soma | Desempenho_media |
|---|---|---|---|
| 2013 | Centro-Oeste | 144 | 45.12500 |
| 2013 | Nordeste | 668 | 45.29667 |
| 2013 | Norte | 88 | 59.96857 |
| 2013 | Sudeste | 1184 | 56.57750 |
| 2013 | Sul | 576 | 44.01000 |
| 2014 | Centro-Oeste | 150 | 51.91250 |
| 2014 | Nordeste | 884 | 51.86778 |
| 2014 | Norte | 73 | 66.03429 |
| 2014 | Sudeste | 774 | 60.48500 |
| 2014 | Sul | 595 | 47.33667 |
| 2015 | Centro-Oeste | 127 | 51.18000 |
| 2015 | Nordeste | 838 | 54.35556 |
| 2015 | Norte | 80 | 57.14286 |
| 2015 | Sudeste | 806 | 58.20750 |
| 2015 | Sul | 555 | 47.89667 |
| 2016 | Centro-Oeste | 151 | 51.40000 |
| 2016 | Nordeste | 577 | 49.11333 |
| 2016 | Norte | 116 | 63.25143 |
| 2016 | Sudeste | 809 | 58.28000 |
| 2016 | Sul | 527 | 47.75000 |
| 2017 | Centro-Oeste | 138 | 54.77500 |
| 2017 | Nordeste | 467 | 50.91222 |
| 2017 | Norte | 99 | 56.20857 |
| 2017 | Sudeste | 855 | 56.95750 |
| 2017 | Sul | 647 | 48.82667 |
| 2018 | Centro-Oeste | 246 | 51.79000 |
| 2018 | Nordeste | 1405 | 50.44444 |
| 2018 | Norte | 174 | 57.49429 |
| 2018 | Sudeste | 1620 | 54.70250 |
| 2018 | Sul | 956 | 47.28667 |
| 2019 | Centro-Oeste | 285 | 56.10500 |
| 2019 | Nordeste | 2736 | 51.46667 |
| 2019 | Norte | 474 | 55.58571 |
| 2019 | Sudeste | 4186 | 56.40500 |
| 2019 | Sul | 1933 | 50.69000 |
| 2020 | Centro-Oeste | 441 | 56.17500 |
| 2020 | Nordeste | 2635 | 49.99667 |
| 2020 | Norte | 457 | 54.34571 |
| 2020 | Sudeste | 4509 | 51.30500 |
| 2020 | Sul | 1952 | 45.78333 |
| 2021 | Centro-Oeste | 414 | 53.23500 |
| 2021 | Nordeste | 3929 | 49.31444 |
| 2021 | Norte | 308 | 54.14143 |
| 2021 | Sudeste | 5607 | 49.98750 |
| 2021 | Sul | 2239 | 45.28333 |
| 2022 | Centro-Oeste | 1159 | 22.00500 |
| 2022 | Nordeste | 7370 | 22.70111 |
| 2022 | Norte | 701 | 15.74286 |
| 2022 | Sudeste | 11662 | 22.98750 |
| 2022 | Sul | 5618 | 19.96667 |
\[ \cdots \]
\(\qquad\) Vamos pegar o melhor e o pior desempenho de uma UF durante o período analisado, selecionar um dataframe com apenas esses dois Estados, verificar o desempenho temporal de cada um deles e analisar se o bom/mau desempenho é constante ou foi algo específico.
uf_better <- stacked_data |>
dplyr::slice(which.max(stacked_data$`Mais de 60 (% Exc_SIT)`))
kableExtra::kable(uf_better) |>
kableExtra::kable_styling(full_width = FALSE,
bootstrap_options = c("striped","hover","condensed","responsive"))
| UF do diagnóstico | Até 30 dias | 31 - 60 dias | Mais de 60 | Sem informação de tratamento (SIT) | Total | Ano | Região | Total (Exc_SIT) | Mais de 60 (% Exc_SIT) |
|---|---|---|---|---|---|---|---|---|---|
| Sergipe | 1 | 0 | 19 | 420 | 440 | 2015 | Nordeste | 20 | 95 |
uf_worse <- stacked_data |>
dplyr::slice(which.min(stacked_data$`Mais de 60 (% Exc_SIT)`))
kableExtra::kable(uf_worse) |>
kableExtra::kable_styling(full_width = FALSE,
bootstrap_options = c("striped","hover","condensed","responsive"))
| UF do diagnóstico | Até 30 dias | 31 - 60 dias | Mais de 60 | Sem informação de tratamento (SIT) | Total | Ano | Região | Total (Exc_SIT) | Mais de 60 (% Exc_SIT) |
|---|---|---|---|---|---|---|---|---|---|
| Amazonas | 160 | 0 | 0 | 18 | 178 | 2022 | Norte | 160 | 0 |
\(\qquad\) Os Estados foram Sergipe e Amazonas, respectivamente.
sel_data <- stacked_data |>
dplyr::filter(`UF do diagnóstico` %in% c("Sergipe", "Amazonas"))
\[ \cdots \]
ggplot2::theme_set(theme_classic())
ggplot2::ggplot(data = stacked_data_tot,
aes(y = `Mais de 60 (% Exc_SIT)`,
x = Ano)) +
geom_path(size = 1.20, color = "#d62d20") +
labs(title = "CÂNCER DE MAMA - LEI DOS 60 DIAS",
subtitle = "Variação percentual do descumprimento da lei por ano",
caption = "Fontes: SIA, SIH e SISCAN",
x = "",
y = "Mais de 60 dias (%)") +
ylim(0,60) +
scale_x_continuous(limits = c(2013, 2022),
breaks = seq(2013, 2022, by = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
\(\qquad\) Aparentemente, analisando esse dado isoladamente, chama a atenção a melhora do desempenho nacional em 2022. Abaixo, vamos verificar também a evolução da marcação “Sem Informação de Tratamento”.
ggplot2::theme_set(theme_classic())
ggplot2::ggplot(data = stacked_data_tot,
aes(y = `Sem informação de tratamento (SIT)`,
x = Ano)) +
geom_path(size = 1.20, color = "#56B4E9") +
labs(title = "CÂNCER DE MAMA - LEI DOS 60 DIAS",
subtitle = "Variação do Total do status 'Sem informação de tratamento' por ano",
caption = "Fontes: SIA, SIH e SISCAN",
x = "",
y = "Status SIT") +
ylim(0,30000) +
scale_x_continuous(limits = c(2013, 2022),
breaks = seq(2013, 2022, by = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
\(\qquad\) Podemos perceber que há um aumento significativo dessa marcação. Portanto, é necessário um estudo mais aprofudado porque houve esse aumento e qual é o impacto na melhora do desempenho. Há uma hipótese desta melhorar ter sido verificada apenas pelo aumento das marcações “Sem Informação de Tratamento”.
\[ \cdots \]
\(\qquad\) Abaixo, vamos analisar a performance regional e a respectiva evolução das marcações “SIT”.
ggplot2::theme_set(theme_classic())
ggplot2::ggplot(data = stacked_data_reg,
aes(group = Região,
y = Desempenho_media,
x = Ano)) +
scale_color_manual(values = c("#008744",
"#d62d20",
"#E69F00",
"#56B4E9",
"#A020F0")) +
geom_path(size = .9, aes(color = Região)) +
labs(title = "CÂNCER DE MAMA - LEI DOS 60 DIAS POR REGIÃO",
subtitle = "Variação percentual do descumprimento da lei por ano",
caption = "Fontes: SIA, SIH e SISCAN",
x = "",
y = "Mais de 60 dias (%)",
col = "Região") +
ylim(0,100) +
scale_x_continuous(limits = c(2013, 2022),
breaks = seq(2013, 2022, by = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot2::theme_set(theme_classic())
ggplot2::ggplot(data = stacked_data_reg,
aes(group = Região,
y = SIT_soma,
x = Ano)) +
scale_color_manual(values = c("#008744",
"#d62d20",
"#E69F00",
"#56B4E9",
"#A020F0")) +
geom_path(size = .9, aes(color = Região)) +
labs(title = "CÂNCER DE MAMA - LEI DOS 60 DIAS POR REGIÃO",
subtitle = "Variação do Total do status 'Sem informação de tratamento' por ano",
caption = "Fontes: SIA, SIH e SISCAN",
x = "",
y = "Status SIT") +
ylim(0,15000) +
scale_x_continuous(limits = c(2013, 2022),
breaks = seq(2013, 2022, by = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
\[ \cdots \]
\(\qquad\) Abaixo, vamos analisar a performance dos Estados selecionados com melhor e pior desempenho.
ggplot2::theme_set(theme_classic())
ggplot2::ggplot(data = sel_data,
aes(group = `UF do diagnóstico`,
y = `Mais de 60 (% Exc_SIT)`,
x = Ano)) +
scale_color_manual(values = c("#008744",
"#E69F00")) +
geom_path(size = 1.20, aes(color = `UF do diagnóstico`)) +
labs(title = "CÂNCER DE MAMA - LEI DOS 60 DIAS",
subtitle = "Variação percentual do descumprimento da lei por ano",
caption = "Fontes: SIA, SIH e SISCAN",
x = "",
y = "Mais de 60 dias (%)",
col = "Estados") +
ylim(0,100) +
scale_x_continuous(limits = c(2013, 2022),
breaks = seq(2013, 2022, by = 1)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
\[ \cdots \]
\(\qquad\) O estudo descritivo fornece uma visão geral da Lei dos 60 dias para o câncer de mama e sua conformidade em nível nacional e regional. No entanto, observou-se que este indicador de desempenho pode ser afetado significativamente pelas marcações de “Sem Informação de Tratamento”. Portanto, um estudo futuro pode investigar as razões desse aumento na falta de informações registradas. Além disso, não foram encontradas grandes diferenças em nível regional.
Informações relevantes sobre a Lei dos 60 dias para casos de câncer de mama no site da FEMAMA.
Agora é lei: programa vai acompanhar e orientar pacientes de câncer de mama.
\[ \cdot \]