Atualmente, os dados utilizados para as análises e painéis do Observatório Obstétrico Brasileiro (OOBr) são proveninetes do Ministério da Saúde, disponibilizados por meio no portal OPENDATASUS. As secretarias de saúde de cada estado registram as notificações de óbito nas respectivas unidades federativas e posteriormente enviam ao Ministério da Saúde, a fim de incluir esses óbitos nos registros oficiais. No entanto, após esse envio, é feita uma fase de correção dos dados pelas secretarias de saúde estaduais, correções essas que não são passadas so Ministério de Saúde e, então, não constam nos registros oficiais. Dessa forma, o presente relatório visa fazer um comparativo dos óbitos maternos registrados pelo Ministério da Saúde no estado de São Paulo e aqueles disponibilizados pela Secretaria de Saúde do Estado de São Paulo, a fim de analisar a magnitude dessa diferença. Alguns dos objetivos específicos são:
Os dados utilizados foram referentes aos anos de 2012 a 2025, obtidos do Painel de Óbitos de Gestantes e Puérperas - extraídos do OPENDATASUS - e pela Secretaria de Saúde do Estado de São Paulo. Foram filtrados apenas os município de residência pertencia ao estado de São Paulo considerados no Painel de Óbitos de Gestantes e Puérperas. Apenas os óbitos maternos foram utilizados, sendo óbito materno considerado como aquele que se enquadra em algum dos casos:
A filtragem e tratamento dos dados foi feita da seguinte forma:
dom_2012_2015_sp <- read_excel("data/DOM2012a2015Filtrado.xlsx")
dom_2016_2019_sp <- read_excel("data/DOM2016a2019Filtrado.xlsx")
dom_2020_2022_sp <- read_excel("data/DOM2020a2022Filtrado.xlsx")
dom_2023_2024_sp <- read_excel("data/DOM2023a2025Filtrado.xlsx")
merged_dados_secretaria_sp <- full_join(dom_2012_2015_sp, dom_2016_2019_sp) |>
full_join(dom_2020_2022_sp) |>
full_join(dom_2023_2024_sp)
dados_secretaria_sp <- merged_dados_secretaria_sp |>
clean_names() |>
mutate(
causabas = ifelse(causabas %in% c("O935", "O937"), "O95", causabas),
obitograv = ifelse(is.na(obitograv), "9", obitograv),
obitopuerp = ifelse(is.na(obitopuerp) | obitopuerp %in% c("0", "4", "8"), "9", obitopuerp),
ano = as.numeric(substr(dtobito, nchar(dtobito) - 3, nchar(dtobito))),
idade = as.numeric(
ifelse(
idade == "999" | is.na(idade),
99,
ifelse(
as.numeric(idade) >= 400 & as.numeric(idade) <= 499,
substr(idade, 2, 3),
0
)
)
),
racacor = case_when(
racacor == "1" ~ "Branca",
racacor == "2" ~ "Preta",
racacor == "3" ~ "Amarela",
racacor == "4" ~ "Parda",
racacor == "5" ~ "Indígena",
is.na(racacor) | racacor == "9" ~ "Ignorado"
),
tipo_de_morte_materna = if_else(
condition = (causabas >= "B200" & causabas <= "B249") |
(causabas >= "O100" & causabas <= "O109") |
((causabas >= "O240" & causabas != "O244") & causabas <= "O259") |
(causabas == "O94") |
(causabas >= "O980" & causabas <= "O999"),
true = "Indireta",
false = if_else(causabas == "O95", true = "Não especificada", false = "Direta")
),
periodo_do_obito = case_when(
obitograv == "1" & obitopuerp != "1" & obitopuerp != "2" ~ "Durante a gravidez, parto ou aborto",
obitograv != "1" & obitopuerp == "1" ~ "Durante o puerpério, até 42 dias",
obitograv != "1" & obitopuerp == "2" ~ "Durante o puerpério, de 43 dias a menos de 1 ano",
(obitograv == "2" & obitopuerp == "3") | (obitograv == "2" & obitopuerp == "9") | (obitograv == "9" & obitopuerp == "3") ~ "Não na gravidez ou no puerpério",
obitograv == "9" & obitopuerp == "9" ~ "Não informado ou ignorado",
(obitograv == "1" & obitopuerp == "1") | (obitograv == "1" & obitopuerp == "2") ~ "Período inconsistente"
)
) |>
mutate(
investigacao_cmm = if_else(
fonteinv == "1",
true = "Sim",
false = if_else(fonteinv == "9", true = "Sem informação", false = "Não", missing = "Sem informação"),
missing = "Sem informação"
)
) |>
filter(
sexo == "F",
((causabas >= "O000" & causabas <= "O959") |
(causabas >= "O980" & causabas <= "O999") |
(causabas == "A34" & obitopuerp != "2") |
((causabas >= "B200" & causabas <= "B249") & (obitograv == "1" | obitopuerp == "1")) |
(causabas == "D392" & (obitograv == "1" | obitopuerp == "1")) |
(causabas == "E230" & (obitograv == "1" | obitopuerp == "1")) |
((causabas >= "F530" & causabas <= "F539") & (obitopuerp != "2")) |
(causabas == "M830" & obitopuerp != "2"))
) |>
mutate(
obitos = 1,
.keep = "unused",
Fonte = "Secretaria de Saúde de São Paulo"
) |>
select(
Fonte, codigo = codmunres, ano, causabas,
tipo_de_morte_materna, periodo_do_obito, investigacao_cmm, racacor, idade, obitos
) |>
group_by(across(!obitos)) |>
summarise(obitos = sum(obitos)) |>
ungroup()
As bases disponibilizadas pelo OPENDATASUS apresentam 94 variáveis, enquanto aquelas enviadas pela secretaria de saúde de São Paulo apresentam 71 variáveis. A tabela 1 indica as variáveis presentes apenas no OPENDATASUS.
| Variável | Descrição |
|---|---|
| ORIGEM | Sem descrição |
| ESTABDESCR | Sem descrição |
| CB_PRE | Sem descrição |
| NUMEROLOTE | Número do lote |
| STCODIFICA | Status de instalação |
| CODIFICADO | Sem descrição |
| VERSAOSIST | Versão do sistema |
| VERSAOSBC | versão do setor de causa básica |
| DTRECORIGA | Campo Criado no Tratamento para Data do recebimento original |
| NUDIASOBIN | Sem descrição |
| NUDIASINF | Sem descrição |
| DTCADINF | Quando preenchido indica se a investigação foi realizada |
| MORTEPARTO | Momento do óbito em relação ao parto após investigação |
| DTCONCASO | Data de conclusão do caso |
| FONTESINF | Sem descrição |
| ALTCAUSA | Indica se houve correção ou alteração da causa do óbito após investigação |
| CODMUNCART | Sem descrição |
| NUMREGCART | Sem descrição |
| DTREGCART | Sem descrição |
| EXPDIFDATA | Sem descrição |
| CODCART | Sem descrição |
| CRM | Sem descrição |
Foi feita a análise do número de óbitos maternos por ano, a fim de detectar possíveis divergências entre as duas bases de dados. É possível observar o resultado na tabela 2 e de forma gráfica na figura 1.
| Ano | Número de óbitos maternos OPENDATASUS | Número de óbitos maternos Secretaria de Saúde de São Paulo |
|---|---|---|
| 2012 | 227 | 229 |
| 2013 | 240 | 239 |
| 2014 | 263 | 262 |
| 2015 | 311 | 194 |
| 2016 | 308 | 296 |
| 2017 | 348 | 347 |
| 2018 | 303 | 288 |
| 2019 | 283 | 103 |
| 2020 | 332 | 313 |
| 2021 | 457 | 485 |
| 2022 | 207 | 148 |
| 2023 | 212 | 229 |
| 2024 | 184 | 203 |
| 2025 | NA | 102 |
| Total | 3675 | 3438 |
Faz-se relevante analisar se as diferenças no número de óbitos maternos apresentados pelas duas bases ocorre em determinada CID específica. Dessa forma, na tabela 4 é possível observar as 10 CIDs que apresentaram maior diferença no número de óbitos maternos, com a planilha completa por ano disponível no link.
| Ano | Número de óbitos maternos OPENDATASUS | Número de óbitos maternos Secretaria de Saúde de São Paulo | Diferença |
|---|---|---|---|
| O998 | 243 | 207 | 36 |
| O994 | 326 | 292 | 34 |
| O95 | 115 | 91 | 24 |
| O721 | 119 | 101 | 18 |
| O759 | 30 | 14 | 16 |
| O995 | 183 | 170 | 13 |
| O882 | 92 | 80 | 12 |
| O141 | 115 | 104 | 11 |
| O149 | 55 | 44 | 11 |
| O159 | 78 | 68 | 10 |
Por fim, é relevante verificar quais são os casos de óbitos maternos que não estãos disponíveis em uma das bases. Essa análise foi feita considerando como um único caso de óbito materno aquele que apresenta os mesmos valores para as variáveis de código do município de residência, ano, cid, tipo de morte materna, período do óbito, investigação de causa da morte materna, raça/cor e idade.
Assim, os 436 óbitos maternos não incluídos no OPENDATASUS estão em planilha disponível aqui, e aquelas 773 não presentes na Secretaria de Saúde de São Paulo aqui. Nas figuras 3, 4 e 5 é feita uma breve análise de algumas características dos óbitos maternos que não constam na Secretaria de Saúde de São Paulo, enquanto nas figuras 6, 7 e 8 daqueles que não estão no OPENDATASUS.