O que é glosa?
De acordo com o documento Orientações técnicas sobre aplicação de glosas em auditoria no SUS1, trata-se da “rejeição total ou parcial de recursos financeiros do SUS, utilizados pelos estados, pelo Distrito Federal e pelos municípios de forma irregular ou cobrados indevidamente por prestadores de serviço, causando danos aos cofres públicos” (p. 10). O material ainda indica os motivos mais comuns para gerar glosa em atendimentos hospitalares no âmbito do SUS:
- Ausência de boletim cirúrgico para comprovar a realização da cirurgia.
- Cobrança de parto com assistência sem a presença do pediatra.
- Cobrança da primeira consulta do pediatra na AIH quando a unidade não possuir esse profissional em seu corpo clínico.
- Atos profissionais realizados simultaneamente no mesmo hospital ou em hospitais diferentes pelo mesmo profissional.
- Procedimento diferente do tratamento realizado.
- Emissão de AIH para tratamento realizado em regime ambulatorial.
- Emissão indevida de mais de uma AIH para o mesmo paciente.
Resumidamente, o hospital primeiro realiza o atendimento e registra isso na AIH (Autorização de Internação Hospitalar), depois envia essas informações para o Ministério da Saúde para receber pelo serviços realizados segundo uma tabela de valores do SUS. Auditores avaliam essas informações e, caso identifiquem algum dos motivos de rejeição pré-definidos, glosam a AIH e o hospital ou não recebe nada pelo atendimento ou recebe apenas parte do atendimento.
Logo, para a gestão de uma unidade hospitalar é extretamente importante:
- Identificar glosa nos atendimentos realizados.
- Indicador 1: Percentual de Glosa de AIH:
- Quantidade de AIH’s glosadas dividida pelo total de internações * 100
- Indicador 2: Proporção do Valor Glosado:
- Valor glosado dividido pelo valor pago * 100
- Indicador 1: Percentual de Glosa de AIH:
- Identificar os principais motivos de glosa das AIH’s.
A glosa nos dados do SIH
O SIH (Sistema de Informações Hospitalares) do DATASUS disponibiliza os dados em diferentes bases:
Arquivo | Conteúdo |
---|---|
ER | AIH’s rejeitada com código de erro |
RD | AIH’s reduzida ou paga |
RJ | AIH’s rejeitadas |
SP | Serviços profissionais |
AIH’s rejeitadas são AIH’s glosadas e como elas retornam para o prestador para corrigir os erros, duas coisas podem acontecer que dificulta o cálculo dos indicadores mencionados anteriormente:
- A mesma AIH pode ser reapresentada em meses subsequentes ao da realização do atendimento.
- A mesma AIH pode ser reapresentada com valores diferentes da primeira AIH apresentada.
Vamos ver essa situação com os dados? Utilizo aqui o pacote
microdatasus
2 que facilita muito o acesso aos dados
individuais das AIH’s. Se você não tiver instalado o pacote, utilize o
comando remotes::install_github("rfsaldanha/microdatasus")
.
Com a sintaxe abaixo faremos o download de AIH’s glosadas em Mato Grosso
em novembro e dezembro de 2021.
library(tidyverse, warn.conflicts = FALSE)
<- microdatasus::fetch_datasus(information_system = "SIH-RJ",
RJ year_start = 2021, year_end = 2021,
month_start = 11, month_end = 12, uf = "MT",
vars = c("N_AIH", "ESPEC", "IDENT", "MUNIC_RES", "NASC", "SEXO",
"UTI_MES_TO", "MARCA_UTI", "DIAR_ACOM", "PROC_REA",
"VAL_TOT", "DT_INTER", "DT_SAIDA", "DIAG_PRINC", "GESTAO",
"COD_IDADE", "IDADE", "DIAS_PERM", "MORTE", "NACIONAL",
"CAR_INT", "CNES", "COMPLEX", "FINANC", "REMESSA"))
Esta é a quantidade de AIH’s e o seu valor total presente no dataset:
%>% summarise(Total_AIH = nrow(RJ),
RJ Valor_AIH = sum(VAL_TOT))
## Total_AIH Valor_AIH
## 1 4251 19839093
Porém, ao executarmos uma tabela de frequência perceberemos que existem AIH’s duplicadas, elas são as reapresentações mencionadas anteriormente. Ou seja, do total de AIH’s rejeitadas nestes dois meses 624 (4251-3627) são reapresentações, cerca de 15%.
::Desc(RJ$N_AIH, plotit = FALSE) DescTools
## ------------------------------------------------------------------------------
## RJ$N_AIH (factor)
##
## length n NAs unique levels dupes
## 4'251 4'251 0 3'627 3'627 y
## 100.0% 0.0%
##
## level freq perc cumfreq cumperc
## 1 5121100782501 2 0.0% 2 0.0%
## 2 5121100914787 2 0.0% 4 0.1%
## 3 5121100919385 2 0.0% 6 0.1%
## 4 5121100920485 2 0.0% 8 0.2%
## 5 5121100920529 2 0.0% 10 0.2%
## 6 5121100920771 2 0.0% 12 0.3%
## 7 5121101057732 2 0.0% 14 0.3%
## 8 5121101058062 2 0.0% 16 0.4%
## 9 5121101059130 2 0.0% 18 0.4%
## 10 5121101059151 2 0.0% 20 0.5%
## 11 5121101378844 2 0.0% 22 0.5%
## 12 5121101379009 2 0.0% 24 0.6%
## ... etc.
## [list output truncated]
Ao utilizar estes dados como estão você terá cometido viés de aferição dos indicadores 1 e 2 ao superestimar a quantidade de AIH’s glosadas e o valor total da glosa. Uma grande parte das análises realizadas por secretarias de saúde e unidades hospitalares contém este viés, ou não perceberam o erro por desconhecimento da lógica de armazenamento dos dados do SIH ou perceberam e não conseguiram desenvolver numa solução.
Removendo as duplicidades descobrimos um valor indevido excedente de R$ 3.504.149 (18% maior), ao comparar com os valores anteriores:
<- RJ %>% distinct(N_AIH, .keep_all = TRUE)
RJ2
%>% summarise(Total_AIH = nrow(RJ2),
RJ2 Valor_AIH = sum(VAL_TOT))
## Total_AIH Valor_AIH
## 1 3627 16334944
Entretanto, resolvemos apenas o primeiro problema (o do número de AIH’s rejeitadas), mas não do segundo problema (valor rejeitado reapresentado e pago total ou parcial). Isso exige uma solução um pouco mais complexa que envolve teoria de conjunto de dados.
Neste momento precisaremos também da base das AIH’s aprovadas ou pagas
(RD). Assim, utilizando a variável
N_AIH
como chave
primária teremos como identificar:
A. AIH’s pagas que em nenhum momento foram rejeitadas. B. AIH’s rejeitadas que em algum momento foram pagas. C. AIH’s rejeitadas que em nenhum momento foram pagas.
Uma possível solução
library(dplyr)
<- microdatasus::fetch_datasus(information_system = "SIH-RD",
RD year_start = 2021, year_end = 2021,
month_start = 6, month_end = 12, uf = "MT",
vars = c("N_AIH", "ESPEC", "IDENT", "MUNIC_RES", "NASC", "SEXO",
"UTI_MES_TO", "MARCA_UTI", "DIAR_ACOM", "PROC_REA",
"VAL_TOT", "DT_INTER", "DT_SAIDA", "DIAG_PRINC", "GESTAO",
"COD_IDADE", "IDADE", "DIAS_PERM", "MORTE", "NACIONAL",
"CAR_INT", "CNES", "COMPLEX", "FINANC", "REMESSA"))
<- microdatasus::fetch_datasus(information_system = "SIH-RJ",
RJ year_start = 2021, year_end = 2021,
month_start = 6, month_end = 12, uf = "MT",
vars = c("N_AIH", "ESPEC", "IDENT", "MUNIC_RES", "NASC", "SEXO",
"UTI_MES_TO", "MARCA_UTI", "DIAR_ACOM", "PROC_REA",
"VAL_TOT", "DT_INTER", "DT_SAIDA", "DIAG_PRINC", "GESTAO",
"COD_IDADE", "IDADE", "DIAS_PERM", "MORTE", "NACIONAL",
"CAR_INT", "CNES", "COMPLEX", "FINANC", "REMESSA"))
<- RJ %>% distinct(N_AIH, .keep_all = TRUE)
RJ
<- anti_join(RJ, RD, by = "N_AIH", suffix = c("",".r"))
a $VAL_TOT <- as.numeric(a$VAL_TOT)
a$VAL_DIFF <- a$VAL_TOT
a$SITUACAO_AIH <- "AIH rejeitada"
a$VAL_PAGO <- 0
a
<- inner_join(RD, RJ, by = "N_AIH", suffix = c("",".r"))
b
<- b %>% select(N_AIH, ESPEC, IDENT, MUNIC_RES, NASC, SEXO,
b
UTI_MES_TO, MARCA_UTI, DIAR_ACOM, PROC_REA,
VAL_TOT, DT_INTER, DT_SAIDA, DIAG_PRINC,
GESTAO, COD_IDADE, IDADE, DIAS_PERM, MORTE,
NACIONAL, CAR_INT, CNES, COMPLEX, FINANC, REMESSA, VAL_TOT.r)
$VAL_TOT <- as.numeric(b$VAL_TOT)
b$VAL_TOT.r <- as.numeric(b$VAL_TOT.r)
b
<- b %>% mutate(VAL_DIFF = VAL_TOT.r - VAL_TOT)
b $VAL_DIFF[b$VAL_DIFF < 0] <- 0
b$VAL_TOT.r <- NULL
b$SITUACAO_AIH <- "AIH aprovada"
b$VAL_PAGO <- b$VAL_TOT
b
<- dplyr::anti_join(RD, RJ, by = "N_AIH", suffix = c("",".r"))
c $VAL_TOT <- as.numeric(c$VAL_TOT)
c$VAL_DIFF <- 0
c$SITUACAO_AIH <- "AIH aprovada"
c$VAL_PAGO <- c$VAL_TOT
c
<- rbind(a, b, c)
SIH rm(a, b, c, RJ, RD)
<- SIH %>% filter(CNES == "2604434" | CNES == "2795655" | CNES == "2534460" |
SIH == "2392410" | CNES == "2471345" | CNES == "6085423" |
CNES == "6853781" | CNES == "2604396" | CNES == "9841903" |
CNES == "2395037" | CNES == "6123503" | CNES == "2699842")
CNES
$HOSPITAL[SIH$CNES == "2604434"] <- "Hospital Regional de Rondonópolis"
SIH$HOSPITAL[SIH$CNES == "2795655"] <- "Hospital Regional de Sorriso"
SIH$HOSPITAL[SIH$CNES == "2534460"] <- "Hospital Regional de Cáceres"
SIH$HOSPITAL[SIH$CNES == "2392410"] <- "Hospital Regional de Colider"
SIH$HOSPITAL[SIH$CNES == "2471345"] <- "Hospital Regional de Alta Floresta"
SIH$HOSPITAL[SIH$CNES == "6085423"] <- "Hospital Regional de Sinop"
SIH$HOSPITAL[SIH$CNES == "6853781"] <- "Hospital Metropolitano"
SIH$HOSPITAL[SIH$CNES == "2604396"] <- "Hospital Adauto Botelho"
SIH$HOSPITAL[SIH$CNES == "9841903"] <- "Hospital Estadual Santa Casa"
SIH$HOSPITAL[SIH$CNES == "2395037"] <- "Hospital São Luiz"
SIH$HOSPITAL[SIH$CNES == "6123503"] <- "Hospital Regional de Água Boa"
SIH$HOSPITAL[SIH$CNES == "2699842"] <- "Hospital Regional de Peixoto de Azevedo"
SIH
<- microdatasus::process_sih(SIH, municipality_data = FALSE)
SIH
$DT_INTER <- lubridate::ymd(SIH$DT_INTER)
SIH$DT_SAIDA <- lubridate::ymd(SIH$DT_SAIDA)
SIH
$MES_INT <- lubridate::month(SIH$DT_INTER, label = FALSE, abbr = FALSE)
SIH$ANO_INT <- lubridate::year(SIH$DT_INTER)
SIH$ANO_INT <- as.factor(SIH$ANO_INT)
SIH
$MES_SAIDA <- lubridate::month(SIH$DT_SAIDA, label = FALSE, abbr = FALSE)
SIH$ANO_SAIDA <- lubridate::year(SIH$DT_SAIDA)
SIH$ANO_SAIDA <- as.factor(SIH$ANO_SAIDA)
SIH
$VAL_DIFF <- as.numeric(SIH$VAL_DIFF)
SIH$VAL_PAGO <- as.numeric(SIH$VAL_PAGO)
SIH$VAL_TOT <- as.numeric(SIH$VAL_TOT)
SIH$DIAS_PERM <- as.numeric(SIH$DIAS_PERM) SIH
Indicadores de gestão hospitalar
Indicador 1: Percentual de Glosa de AIH: Um total de 13% das AIH’s produzidas foram glosadas no período avaliado.
::Desc(SIH$SITUACAO_AIH, plotit = FALSE) DescTools
## ------------------------------------------------------------------------------
## SIH$SITUACAO_AIH (character - dichotomous)
##
## length n NAs unique
## 30'806 30'806 0 2
## 100.0% 0.0%
##
## freq perc lci.95 uci.95'
## AIH aprovada 26'722 86.7% 86.4% 87.1%
## AIH rejeitada 4'084 13.3% 12.9% 13.6%
##
## ' 95%-CI (Wilson)
Indicador 2: Proporção do Valor Glosado: O valor glosado representou 40% do valor total pago pelas AIH’s aprovadas.
%>% summarise(Pago = sum(VAL_PAGO),
SIH Rejeitado = sum(VAL_DIFF),
"Proporção de Glosa (%)" = round((Rejeitado / Pago)*100,2))
## Pago Rejeitado Proporção de Glosa (%)
## 1 64554539 26472816 41.01
Ministério da Saúde. Série A. Normas e Manuais Técnicos. Orientações técnicas sobre aplicação de glosas em auditoria no SUS. 1º edição, Brasília/DF, 2005. https://bvsms.saude.gov.br/bvs/publicacoes/aplicacao_glosas_auditoria.pdf↩︎
Saldanha RF, Bastos RR, Barcellos C. Microdatasus: pacote para download e pré-processamento de microdados do Departamento de Informática do SUS (DATASUS). Cad. Saúde Pública 2019;35(9) https://www.scielo.br/j/csp/a/gdJXqcrW5PPDHX8rwPDYL7F/?format=pdf&lang=pt↩︎