Objetivos

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:

Dados Utilizados

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()

Análise Exploratória

Variáveis em cada base de dados

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.

Tabela 1: 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

Diferença no número de óbitos

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.

Tabela 2: Número de óbitos por ano e fonte
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

Número de óbitos maternos por CID

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.

Tabela 3: Diferença no número de óbitos maternos por CID (OPENDATASUS - Secretaria de Saúde de São Paulo)
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

Análise de observações distintas entre as bases

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.