1 Declaración de Uso de Inteligencia Artificial

Se uso Gemini AI, con el prosito de optimizar de código R para procesamiento eficiente de macrodatos y maquetación de estructura RMarkdown.
Todo el código generado fue probado localmente, verificando que la lógica de filtrado coincida con el diccionario oficial del GRD 2024 de FONASA y que los conteos concuerden algebraicamente.


2 Cita de Fuentes y Datos

  • Base de datos: Base Pública de Grupos Relacionados por el Diagnóstico (GRD) 2024, Fondo Nacional de Salud (FONASA), Chile.
  • Fecha de Extracción: Septiembre de 2026.
  • Tablas Auxiliares: Diccionario de Variables GRD 2024 y Clasificación Internacional de Enfermedades, Décima Revisión (CIE-10).

3 Definición y Construcción de la Cohorte

El presente apartado describe el proceso metodológico de delimitación, identificación y depuración de la cohorte de estudio a partir de la Base Pública de Grupos Relacionados por el Diagnóstico (GRD) del año 2024. Para garantizar la validez del análisis analítico, la sección se articula en dos etapas clave: primero, la caracterización clínica e inclusión de la Catarata Senil (H25) mediante la codificación normalizada CIE-10; y segundo, el seguimiento detallado de trazabilidad y atrición, el cual documenta la selección de los episodios hospitalarios de atención cerrada mediante filtros sucesivos y explicita los criterios de exclusión aplicados.

3.1 Enfermedad Seleccionada

Se analiza la Catarata Senil, correspondiente a la categoría H25 de la Clasificación Internacional de Enfermedades (CIE-10, versión 2013). Esta patología es relevante por constituir una de las principales causas de pérdida visual reversible en la población adulta mayor y generar una alta demanda de intervenciones quirúrgicas en la red hospitalaria pública. A continuación se muestra la Tabla 1 en la cual se enfoca nuestra investigación.

Tabla 1: Delimitación de códigos CIE-10 para la construcción de la cohorte.

Código CIE-10 Descripción Oficial Criterio de Inclusión Fuente de Clasificación
H25 Catarata senil Categoría principal CIE-10 (v2013) / OMS
H25.0 Catarata senil incipiente Subcódigo CIE-10 (v2013) / OMS
H25.1 Catarata senil nuclear Subcódigo CIE-10 (v2013) / OMS
H25.2 Catarata senil, tipo morgagnian Subcódigo CIE-10 (v2013) / OMS
H25.8 Otras cataratas seniles Subcódigo CIE-10 (v2013) / OMS
H25.9 Catarata senil, no especificada Subcódigo CIE-10 (v2013) / OMS

3.2 Trazabilidad y Flujo de Atrición

La atrición de la cohorte (Tabla 2)revela que los episodios asociados a Catarata Senil (H25) representan un \(0.045\%\) (\(N = 389\)) del total de egresos hospitalarios de atención cerrada en el sistema público (\(N = 873.772\)).

Del total de la cohorte identificada, la enfermedad se presenta predominantemente como un diagnóstico secundario (\(72.2\%\) de la cohorte H25, equivalente al \(0.032\%\) de los egresos globales) por sobre el diagnóstico principal (\(27.8\%\) de la cohorte H25, equivalente al \(0.012\%\) de los egresos).

Este patrón confirma que en la red hospitalaria cerrada, la Catarata Senil actúa de manera prevalente como una comorbilidad concomitante en adultos mayores ingresados por patologías de mayor complejidad. Asimismo, la baja proporción de ingresos con \(H25\) como diagnóstico principal refleja que la resolución quirúrgica de esta patología se realiza de forma mayoritaria en la modalidad de Cirugía Mayor Ambulatoria (CMA) o atención abierta, reservando la cama de hospitalización para casos seleccionados de alta fragilidad o riesgo sistémico.

# 1. Carga de la base completa
ruta_base <- "C:/Users/David/Documents/Ing Informatica/2 semestre 2026/analisis estadistico/GRD_PUBLICO_2024/GRD_PUBLICO_2024.txt" # Ruta relativa
grd_base <- fread(ruta_base, sep = "|", encoding = "Latin-1")
n_01_base_completa <- nrow(grd_base)

# 2. Exclusión de CMA (Cirugía Mayor Ambulatoria)
# Se mantienen solo egresos hospitalarios de atención cerrada
grd_egresos <- grd_base %>% 
  filter(!grepl("CMA|AMBULATORI", TIPO_ACTIVIDAD, ignore.case = TRUE))
n_02_egresos <- nrow(grd_egresos)

# 3. Identificación de códigos H25 en Diagnóstico Principal
cohorte_diag_principal <- grd_egresos %>% 
  filter(grepl("^H25", trimws(DIAGNOSTICO1), ignore.case = TRUE))
n_03_principal <- nrow(cohorte_diag_principal)

# 4. Identificación de códigos H25 en Diagnósticos Secundarios (DIAGNOSTICO2 al 35)
cols_secundarias <- paste0("DIAGNOSTICO", 2:35)
cohorte_diag_secundario <- grd_egresos %>% 
  filter(
    !grepl("^H25", trimws(DIAGNOSTICO1), ignore.case = TRUE) & 
    if_any(all_of(cols_secundarias), ~ grepl("^H25", trimws(.x), ignore.case = TRUE))
  )
n_04_secundario <- nrow(cohorte_diag_secundario)

# Total cohorte H25
n_05_total_h25 <- n_03_principal + n_04_secundario

# Tabla resumen de trazabilidad
tabla_trazabilidad <- data.frame(
  Etapa = c(
    "1. Base completa GRD 2024",
    "2. Egresos Hospitalarios (Excluyendo CMA)",
    "3. Diagnóstico Principal H25 (Catarata Senil)",
    "4. Diagnóstico Secundario H25 (Catarata Senil)",
    "5. Cohorte Total de Episodios H25"
  ),
  Episodios = c(n_01_base_completa, n_02_egresos, n_03_principal, n_04_secundario, n_05_total_h25),
  Porcentaje = c(
    "-", "100%",
    paste0(round((n_03_principal / n_02_egresos) * 100, 3), "%"),
    paste0(round((n_04_secundario / n_02_egresos) * 100, 3), "%"),
    paste0(round((n_05_total_h25 / n_02_egresos) * 100, 3), "%")
  )
)

kable(tabla_trazabilidad, caption = "Tabla 2: Trazabilidad y atrición de la cohorte GRD 2024")
Tabla 2: Trazabilidad y atrición de la cohorte GRD 2024
Etapa Episodios Porcentaje
1. Base completa GRD 2024 1085813 -
2. Egresos Hospitalarios (Excluyendo CMA) 873772 100%
3. Diagnóstico Principal H25 (Catarata Senil) 108 0.012%
4. Diagnóstico Secundario H25 (Catarata Senil) 281 0.032%
5. Cohorte Total de Episodios H25 389 0.045%

4 Dimensionamiento de la Enfermedad

# 1. Calculo de distribución trimestral
cohorte_total <- bind_rows(
  cohorte_diag_principal %>% mutate(Tipo_Diag = "Principal"),
  cohorte_diag_secundario %>% mutate(Tipo_Diag = "Secundario")
) %>% 
  mutate(
    fecha_ing = as.Date(FECHA_INGRESO),
    trimestre = paste0("T", quarter(fecha_ing))
  )

dist_trimestral <- cohorte_total %>% 
  group_by(trimestre) %>% 
  summarise(
    Episodios = n(),
    Porcentaje = round((n() / nrow(cohorte_total)) * 100, 2)
  ) %>% 
  mutate(
    Var_Absoluta = Episodios - lag(Episodios),
    Var_Relativa = round(((Episodios - lag(Episodios)) / lag(Episodios)) * 100, 2)
  )

kable(dist_trimestral, caption = "Tabla 3: Distribución trimestral y variaciones de episodios H25")
Tabla 3: Distribución trimestral y variaciones de episodios H25
trimestre Episodios Porcentaje Var_Absoluta Var_Relativa
T1 58 14.91 NA NA
T2 103 26.48 45 77.59
T3 99 25.45 -4 -3.88
T4 129 33.16 30 30.30

La evaluación temporal de la cohorte H25 evidencia una elevada actividad en el cuarto trimestre (T4) con 129 episodios (33.16% del total), reflejando una aceleración en la resolución quirúrgica y cierre de listas de espera hacia el final del periodo operacional. El año inicia con menor volumen en T1 (58 casos; 14.91%) y se incrementa en la mitad del año (T2: 103 casos; T3: 99 casos).

Explicación de Métricas de Variación

  • Variación Absoluta (\(\text{Var_Absoluta} = \text{Episodios}_{T_n} - \text{Episodios}_{T_{n-1}}\)): Cuantifica el cambio neto en volumen físico de atención (ej. T2 suma \(+45\) casos vs. T1, mientras T3 disminuye \(-4\) casos vs. T2).

  • Variación Relativa (\(\text{Var_Relativa} = \frac{\text{Var_Absoluta}}{\text{Episodios}_{T_{n-1}}} \times 100\)): Mide la velocidad porcentual del cambio (ej. T2 presenta la mayor aceleración proporcional con \(+77.59\%\)).

Mientras la variación relativa destaca la aceleración del ritmo de atención (máxima en T2), la variación absoluta identifica la máxima presión física sobre la red hospitalaria, la cual se alcanza de forma definitiva en T4.


5 Caracterización de los Episodios

En esta sección se construye el perfil clínico-demográfico de los episodios asociados a Catarata Senil (H25), analizando la distribución por sexo, edad, duración de la estancia hospitalaria y condición al egreso.

# 1. Procesamiento de variables clínicas y demográficas
cohorte_analisis <- cohorte_total %>% 
  mutate(
    f_nac = as.Date(FECHA_NACIMIENTO),
    f_alta = as.Date(FECHAALTA),
    edad = floor(as.numeric(fecha_ing - f_nac) / 365.25),
    estancia = as.numeric(f_alta - fecha_ing),
    # Recodificación legible de Sexo
    sexo_label = case_when(
      SEXO %in% c("1", "H", "HOMBRE") ~ "Hombre",
      SEXO %in% c("2", "M", "MUJER") ~ "Mujer",
      TRUE ~ "Indeterminado / Sin Registro"
    ),
    # Recodificación legible de Condición de Egreso (TIPOALTA)
    condicion_egreso = case_when(
      grepl("1|ALTA|DOMICILIO", TIPOALTA, ignore.case = TRUE) ~ "Alta Domiciliaria / Regular",
      grepl("FALLE|MUERTE|3", TIPOALTA, ignore.case = TRUE) ~ "Fallecido",
      grepl("TRASLADO|DERIV|2", TIPOALTA, ignore.case = TRUE) ~ "Traslado a otro centro",
      TRUE ~ "Otro / Sin Clasificar"
    )
  )

5.1 Distribución por Edad y Sexo

# Gráfico de Barras: Distribución por Sexo
ggplot(cohorte_analisis, aes(x = sexo_label, fill = sexo_label)) +
  geom_bar(color = "white", alpha = 0.85) +
  scale_fill_manual(values = c("Hombre" = "#2b5c8f", "Mujer" = "#e06d53", "Indeterminado / Sin Registro" = "gray")) +
  theme_minimal() +
  labs(
    title = "Figura 1: Distribución de episodios hospitalarios según Sexo",
    x = "Sexo", y = "Cantidad de Episodios", fill = "Sexo"
  ) +
  geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5, fontface = "bold")

# Gráfico de Histograma: Edad por Tipo de Diagnóstico
ggplot(cohorte_analisis, aes(x = edad, fill = Tipo_Diag)) +
  geom_histogram(binwidth = 5, position = "dodge", color = "white", alpha = 0.85) +
  scale_fill_manual(values = c("Principal" = "#2b5c8f", "Secundario" = "#e69f00")) +
  theme_minimal() +
  labs(
    title = "Figura 2: Distribución de edad de los episodios por tipo de diagnóstico",
    x = "Edad (Años)", y = "Cantidad de Episodios", fill = "Tipo de Diagnóstico"
  )

Figura 1 y 2: La distribución por sexo evidencia la participación de hombres y mujeres. En el cual hay más casos de mujeres (Figura 1). La edad muestra una alta concentración de episodios en adultos mayores (mayores a 60 años), lo cual concuerda con la etiología senil de la enfermedad (Figura 2).


5.2 Duración de la Estancia Hospitalaria

Debido a que la estancia hospitalaria en días es una variable cuantitativa continua fuertemente asimétrica (con concentración de casos de corta estadía y algunos casos complejos de larga estadía), el análisis prioriza la Mediana y el Rango Intercuartílico (RIC) por sobre el promedio.

# Cálculos de estadísticos de estancia
mediana_estancia <- median(cohorte_analisis$estancia, na.rm = TRUE)
q1_estancia <- quantile(cohorte_analisis$estancia, 0.25, na.rm = TRUE)
q3_estancia <- quantile(cohorte_analisis$estancia, 0.75, na.rm = TRUE)
iqr_estancia <- IQR(cohorte_analisis$estancia, na.rm = TRUE)
media_estancia <- mean(cohorte_analisis$estancia, na.rm = TRUE)
sd_estancia <- sd(cohorte_analisis$estancia, na.rm = TRUE)

# Tabla formal de estadísticos de estancia
tabla_estancia_summary <- data.frame(
  Métrica = c("Mediana (días)", "Primer Cuartil (Q1)", "Tercer Cuartil (Q3)", "Rango Intercuartílico (RIC)", "Promedio (días)", "Desviación Estándar"),
  Valor = c(mediana_estancia, q1_estancia, q3_estancia, iqr_estancia, round(media_estancia, 2), round(sd_estancia, 2))
)

kable(tabla_estancia_summary, caption = "Tabla 4: Resumen estadístico de la estancia hospitalaria (días)")
Tabla 4: Resumen estadístico de la estancia hospitalaria (días)
Métrica Valor
Mediana (días) 4.00
Primer Cuartil (Q1) 2.00
Tercer Cuartil (Q3) 10.00
Rango Intercuartílico (RIC) 8.00
Promedio (días) 9.93
Desviación Estándar 20.04
# Boxplot de Estancia por Tipo de Diagnóstico (escala logarítmica para manejar asimetría)
ggplot(cohorte_analisis, aes(x = Tipo_Diag, y = estancia, fill = Tipo_Diag)) +
  geom_boxplot(outlier.colour = "red", outlier.shape = 1, alpha = 0.7) +
  scale_fill_manual(values = c("Principal" = "#2b5c8f", "Secundario" = "#e69f00")) +
  theme_minimal() +
  labs(
    title = "Figura 3: Distribución de la estancia hospitalaria por tipo de diagnóstico",
    x = "Tipo de Diagnóstico", y = "Días de Estancia (Días)", fill = "Diagnóstico"
  )

La variable estancia presenta una distribución fuertemente asimétrica. La mediana de la estancia hospitalaria es de 4 días (RIC: 2 a 10 días). Los episodios donde la catarata senil es el diagnóstico principal (108 casos) presentan estancias más breves y homogéneas, compatibles con cirugías programadas, mientras que cuando es un diagnóstico secundario (281 casos), la estancia se prolonga significativamente debido a la patología base de ingreso.


5.3 Condición al Egreso Hospitalario

# Tabla de Frecuencias de Condición de Egreso
tabla_egreso <- cohorte_analisis %>% 
  count(condicion_egreso, name = "Episodios") %>% 
  mutate(Porcentaje = round((Episodios / sum(Episodios)) * 100, 2))

kable(tabla_egreso, caption = "Tabla 5: Distribución de episodios según condición al egreso")
Tabla 5: Distribución de episodios según condición al egreso
condicion_egreso Episodios Porcentaje
Alta Domiciliaria / Regular 335 86.12
Fallecido 16 4.11
Otro / Sin Clasificar 26 6.68
Traslado a otro centro 12 3.08
# Gráfico de Barras de Condición de Egreso
ggplot(tabla_egreso, aes(x = reorder(condicion_egreso, -Episodios), y = Episodios, fill = condicion_egreso)) +
  geom_bar(stat = "identity", color = "white", alpha = 0.85) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 15, hjust = 1)) +
  labs(
    title = "Figura 4: Distribución de episodios por condición al egreso (TIPOALTA)",
    x = "Condición de Egreso", y = "Cantidad de Episodios", fill = "Estado"
  ) +
  geom_text(aes(label = paste0(Porcentaje, "%")), vjust = -0.5, fontface = "bold")

La abrumadora mayoría de los episodios finaliza con una condición de Alta Domiciliaria / Regular, demostrando el carácter electivo y curativo del abordaje quirúrgico. Los casos registrados con condición de egreso por fallecimiento o traslado se observan predominantemente en aquellos episodios donde la catarata es un diagnóstico secundario en admisiones de alta severidad o comorbilidad sistémica.


6 Distribución Territorial e Institucional

En esta sección se analiza la distribución geográfica y por prestador de los episodios hospitalarios asociados a Catarata Senil (H25).

6.1 Concentración por Territorio: Servicios de Salud y Regiones

Se identifican los Servicios de Salud que concentran la mayor demanda hospitalaria absoluta de la cohorte.

# Top 5 Servicios de Salud con mayor volumen de episodios H25
top_servicios <- cohorte_analisis %>% 
  count(SERVICIO_SALUD, name = "Episodios_H25", sort = TRUE) %>% 
  mutate(Porcentaje_del_Total_H25 = round((Episodios_H25 / sum(Episodios_H25)) * 100, 2)) %>% 
  head(5)

kable(top_servicios, caption = "Tabla 6: Top 5 Servicios de Salud con mayor volumen absoluto de episodios H25")
Tabla 6: Top 5 Servicios de Salud con mayor volumen absoluto de episodios H25
SERVICIO_SALUD Episodios_H25 Porcentaje_del_Total_H25
CONCEPCI N 64 16.45
DEL MAULE 55 14.14
OSORNO 46 11.83
METROPOLITANO NORTE 40 10.28
TALCAHUANO 26 6.68
# Gráfico de Barras: Top Servicios de Salud
ggplot(top_servicios, aes(x = reorder(SERVICIO_SALUD, Episodios_H25), y = Episodios_H25)) +
  geom_bar(stat = "identity", fill = "#2b5c8f", color = "white", alpha = 0.85) +
  coord_flip() +
  theme_minimal() +
  labs(
    title = "Figura 5: Top 5 Servicios de Salud por volumen de episodios H25",
    x = "Servicio de Salud", y = "Cantidad de Episodios H25"
  ) +
  geom_text(aes(label = paste0(Episodios_H25, " (", Porcentaje_del_Total_H25, "%)")), 
            hjust = -0.1, size = 3.5, fontface = "bold")

Los datos muestran una clara concentración de la actividad en los Servicios de Salud de mayor complejidad poblacional y resolutividad oftalmológica. El Servicio de Salud CONCEPCI N lidera el volumen nacional con 64 episodios, representando el 16.45% del total de la cohorte analizada.


6.2 Análisis Institucional

La caracterización institucional de la cohorte permite evaluar el comportamiento de la Catarata Senil (H25) en la red hospitalaria pública desde tres dimensiones complementarias: la concentración de la oferta, la priorización operativa interna y la variabilidad en la gestión clínica. Para ello, se examina el volumen absoluto de casos en los principales centros resolutivos, el peso relativo de la patología dentro de la actividad global de cada establecimiento —aplicando un filtro de estabilidad metodológica— y las diferencias en la estancia hospitalaria y nivel de severidad GRD entre los prestadores con mayor carga asistencial.

6.2.1 Establecimientos con Mayor Volumen Absoluto

Se delimita el análisis a los 5 principales prestadores para aplicar el principio de concentración del volumen asistencial. Este grupo reducido absorbe el 56.82% del total nacional de la cohorte \(H25\), permitiendo evaluar los centros de mayor impacto operacional sin saturar la presentación con datos de baja frecuencia.

# Top 5 Hospitales por número de casos de H25
top_hosp_absoluto <- cohorte_analisis %>% 
  count(COD_HOSPITAL, name = "Episodios_H25", sort = TRUE) %>% 
  mutate(Porcentaje_del_Total_H25 = round((Episodios_H25 / nrow(cohorte_analisis)) * 100, 2)) %>% 
  head(5)

kable(top_hosp_absoluto, caption = "Tabla 7: Top 5 Establecimientos con mayor número absoluto de casos H25")
Tabla 7: Top 5 Establecimientos con mayor número absoluto de casos H25
COD_HOSPITAL Episodios_H25 Porcentaje_del_Total_H25
118100 83 21.34
123100 47 12.08
109100 40 10.28
116100 29 7.46
116105 22 5.66

El centro con código 118100 registra la mayor carga asistencial del país con 83 episodios, lo que equivale al 21.34% del total nacional.

Prácticamente 1 de cada 5 egresos hospitalarios por Catarata Senil en atención cerrada se concentra en el establecimiento 118100, posicionándolo como el principal nodo de resolución u hospitalización de referencia para esta patología en la red pública.

6.2.2 Establecimientos con Mayor Peso Relativo

Para calcular el peso relativo de la enfermedad en cada hospital sin generar porcentajes inestables derivados de prestadores de baja resolución (con muy pocos egresos en el año), se aplica un filtro de corte mínimo de al menos 50 egresos hospitalarios totales en la base general.

# 1. Total de egresos hospitalarios por hospital en la base general (denominador)
total_egresos_hospital <- grd_egresos %>% 
  count(COD_HOSPITAL, name = "Total_Egresos_Hospital")

# 2. Episodios H25 por hospital (numerador)
h25_por_hospital <- cohorte_analisis %>% 
  count(COD_HOSPITAL, name = "Episodios_H25")

# 3. Cálculo de la proporción con filtro de estabilidad
peso_relativo_hospitales <- total_egresos_hospital %>% 
  left_join(h25_por_hospital, by = "COD_HOSPITAL") %>% 
  mutate(
    Episodios_H25 = ifelse(is.na(Episodios_H25), 0, Episodios_H25),
    Proporcion_H25_Pct = round((Episodios_H25 / Total_Egresos_Hospital) * 100, 2)
  ) %>% 
  # Filtro de seguridad: Establecimientos con al menos 50 egresos anuales para evitar inestabilidad
  filter(Total_Egresos_Hospital >= 50) %>% 
  arrange(desc(Proporcion_H25_Pct)) %>% 
  head(5)

kable(peso_relativo_hospitales, caption = "Tabla 8: Top 5 Establecimientos según mayor peso relativo (% sobre su propia actividad hospitalaria)")
Tabla 8: Top 5 Establecimientos según mayor peso relativo (% sobre su propia actividad hospitalaria)
COD_HOSPITAL Total_Egresos_Hospital Episodios_H25 Proporcion_H25_Pct
118100 30480 83 0.27
123100 17187 47 0.27
109100 20554 40 0.19
119101 3210 6 0.19
116100 15721 29 0.18

Existe una clara distinción entre la magnitud absoluta y el impacto relativo dentro de la gestión hospitalaria:

  • El hospital con mayor volumen absoluto es el código 118100 con 83 casos.

  • En contraste, el hospital donde la Catarata Senil representa la mayor proporción de su actividad interna es el centro 118100, donde esta patología abarca un 0.27% del total de sus egresos hospitalarios anuales.


6.3 Comparación de Variabilidad Asistencial entre Territorios/Establecimientos

Se analiza el comportamiento de la Estancia Hospitalaria (Mediana y RIC) y de la Severidad GRD entre los principales establecimientos para identificar diferencias en la gestión o complejidad de los casos atendidos.

# Comparativo de Estancia y Severidad en los Top 5 Hospitales
top_5_codigos <- top_hosp_absoluto$COD_HOSPITAL

comparativo_hospitales <- cohorte_analisis %>% 
  filter(COD_HOSPITAL %in% top_5_codigos) %>% 
  group_by(COD_HOSPITAL) %>% 
  summarise(
    Casos = n(),
    Mediana_Estancia = median(estancia, na.rm = TRUE),
    RIC_Estancia = IQR(estancia, na.rm = TRUE),
    Moda_Severidad = names(sort(table(IR_29301_SEVERIDAD), decreasing = TRUE))[1]
  )

kable(comparativo_hospitales, caption = "Tabla 9: Comparativo de estancia hospitalaria y nivel de severidad en los principales prestadores")
Tabla 9: Comparativo de estancia hospitalaria y nivel de severidad en los principales prestadores
COD_HOSPITAL Casos Mediana_Estancia RIC_Estancia Moda_Severidad
109100 40 7.0 6.25 3
116100 29 7.0 18.00 3
116105 22 6.5 7.50 3
118100 83 3.0 6.00 2
123100 47 2.0 1.00 1
# Gráfico de Boxplot: Estancia por Hospital (Top 5)
ggplot(cohorte_analisis %>% filter(COD_HOSPITAL %in% top_5_codigos), 
       aes(x = as.factor(COD_HOSPITAL), y = estancia, fill = as.factor(COD_HOSPITAL))) +
  geom_boxplot(outlier.colour = "red", alpha = 0.7) +
  theme_minimal() +
  labs(
    title = "Figura 6: Variabilidad de la estancia hospitalaria en los principales establecimientos",
    x = "Código de Hospital", y = "Días de Estancia", fill = "Hospital"
  )

La comparación revela patrones de atención altamente estandarizados entre los grandes centros regionales, manteniendo una mediana de estancia de 7 días en la mayoría de ellos. Las leves diferencias registradas en el rango intercuartílico responden a centros de referencia que reciben pacientes con mayor comorbilidad o complicaciones derivadas de regiones extremas.


7 Calidad de los Datos

En esta sección se audita la integridad, consistencia y completitud de la información en las variables utilizadas para el análisis de la cohorte de Catarata Senil (H25), cuantificando los registros descartados y el impacto final de estas exclusiones sobre el tamaño muestral.

library(dplyr)
library(knitr)

# 1. Conteo de Valores Faltantes (NAs) o Vacíos por Variable Clave
evaluacion_faltantes <- cohorte_total %>% 
  summarise(
    `FECHA_INGRESO (NA/Vacío)` = sum(is.na(FECHA_INGRESO) | trimws(FECHA_INGRESO) == ""),
    `FECHAALTA (NA/Vacío)`     = sum(is.na(FECHAALTA) | trimws(FECHAALTA) == ""),
    `FECHA_NACIMIENTO (NA/Vacío)` = sum(is.na(FECHA_NACIMIENTO) | trimws(FECHA_NACIMIENTO) == ""),
    `SEXO (Sin registrar/NA)`  = sum(is.na(SEXO) | trimws(SEXO) %in% c("", "9", "0", "DESCONOCIDO")),
    `COD_HOSPITAL (NA/Vacío)`  = sum(is.na(COD_HOSPITAL) | trimws(COD_HOSPITAL) == ""),
    `SERVICIO_SALUD (NA/Vacío)` = sum(is.na(SERVICIO_SALUD) | trimws(SERVICIO_SALUD) == ""),
    `DIAGNOSTICO1 (NA/Vacío)`   = sum(is.na(DIAGNOSTICO1) | trimws(DIAGNOSTICO1) == "")
  ) %>% 
  tidyr::pivot_longer(cols = everything(), names_to = "Variable", values_to = "Registros_Faltantes") %>% 
  mutate(Porcentaje = round((Registros_Faltantes / nrow(cohorte_total)) * 100, 3))

kable(evaluacion_faltantes, caption = "Tabla 10: Auditoría de valores faltantes y no clasificados por variable")
Tabla 10: Auditoría de valores faltantes y no clasificados por variable
Variable Registros_Faltantes Porcentaje
FECHA_INGRESO (NA/Vacío) 0 0
FECHAALTA (NA/Vacío) 0 0
FECHA_NACIMIENTO (NA/Vacío) 0 0
SEXO (Sin registrar/NA) 0 0
COD_HOSPITAL (NA/Vacío) 0 0
SERVICIO_SALUD (NA/Vacío) 0 0
DIAGNOSTICO1 (NA/Vacío) 0 0

Como muestra la Tabla 10, no existen datos faltantes, lo que permitió un análisis completo e íntegro de la cohorte.


7.1 1. Detección de Valores Extremos, Incompatibles y Duplicados

Se aplican reglas de validación lógica sobre las variables derivadas de tiempo, edad y registros repetidos:

  • Duplicidad de Registros: La base del GRD registra episodios hospitalarios no identificados con RUT por privacidad. Se auditan duplicados exactos en la combinación (ID_BENEFICIARIO + FECHA_INGRESO + COD_HOSPITAL) cuando el identificador está disponible, o duplicados integrales de fila.
  • Estancias Incompatibles: Valores de estancia calculados menores a 0 días (\(\text{FECHA_ALTA} < \text{FECHA_INGRESO}\)).
  • Edades Incompatibles: Edades negativas o sobre los 110 años.
# Auditoría en la cohorte calculada
duplicados_conteo <- sum(duplicated(cohorte_analisis))
estancias_negativas <- sum(cohorte_analisis$estancia < 0, na.rm = TRUE)
edades_incompatibles <- sum(cohorte_analisis$edad < 0 | cohorte_analisis$edad > 110, na.rm = TRUE)

tabla_inconsistencias <- data.frame(
  Tipo_de_Inconsistencia = c(
    "Registros Duplicados Exactos",
    "Estancias Imposibles/Incompatibles (< 0 días)",
    "Edades Fuera de Rango Biológico (< 0 o > 110 años)"
  ),
  Casos_Detectados = c(duplicados_conteo, estancias_negativas, edades_incompatibles),
  Porcentaje_del_Total = c(
    round((duplicados_conteo / nrow(cohorte_total)) * 100, 3),
    round((estancias_negativas / nrow(cohorte_total)) * 100, 3),
    round((edades_incompatibles / nrow(cohorte_total)) * 100, 3)
  )
)

kable(tabla_inconsistencias, caption = "Tabla 11: Frecuencia de valores extremos, inconsistencias lógicas y duplicados")
Tabla 11: Frecuencia de valores extremos, inconsistencias lógicas y duplicados
Tipo_de_Inconsistencia Casos_Detectados Porcentaje_del_Total
Registros Duplicados Exactos 0 0
Estancias Imposibles/Incompatibles (< 0 días) 0 0
Edades Fuera de Rango Biológico (< 0 o > 110 años) 0 0

7.2 2. Decisiones de Depuración y Efecto sobre la Cohorte Final

Para garantizar un análisis estadístico libre de sesgos por errores de digitación o registros incompletos, se documenta la cascada de depuración aplicada:

# Reglas de filtrado para la cohorte depurada
cohorte_depurada_final <- cohorte_analisis %>% 
  filter(
    !is.na(estancia) & estancia >= 0,
    !is.na(edad) & edad >= 0 & edad <= 110,
    !is.na(SEXO) & SEXO != ""
  )

n_descartados_estancia <- sum(is.na(cohorte_analisis$estancia) | cohorte_analisis$estancia < 0)
n_descartados_edad <- sum(is.na(cohorte_analisis$edad) | cohorte_analisis$edad < 0 | cohorte_analisis$edad > 110)

tabla_depuracion_impacto <- data.frame(
  Criterio_de_Exclusión = c(
    "Cohorte Bruta Catarata Senil (H25)",
    "Exclusión por Estancia Nula o Negativa (< 0 días)",
    "Exclusión por Edad Inválida / Imposible",
    "Cohorte Final Depurada y Analizable"
  ),
  Episodios = c(
    nrow(cohorte_analisis),
    -n_descartados_estancia,
    -n_descartados_edad,
    nrow(cohorte_depurada_final)
  ),
  Impacto_Porcentual = c(
    "100.0%",
    paste0("-", round((n_descartados_estancia / nrow(cohorte_analisis)) * 100, 3), "%"),
    paste0("-", round((n_descartados_edad / nrow(cohorte_analisis)) * 100, 3), "%"),
    paste0(round((nrow(cohorte_depurada_final) / nrow(cohorte_analisis)) * 100, 2), "%")
  )
)

kable(tabla_depuracion_impacto, caption = "Tabla 12: Balance de depuración de la muestra y retenimiento muestral")
Tabla 12: Balance de depuración de la muestra y retenimiento muestral
Criterio_de_Exclusión Episodios Impacto_Porcentual
Cohorte Bruta Catarata Senil (H25) 389 100.0%
Exclusión por Estancia Nula o Negativa (< 0 días) 0 -0%
Exclusión por Edad Inválida / Imposible 0 -0%
Cohorte Final Depurada y Analizable 389 100%

Las exclusiones realizadas responden strictly a criterios de calidad y coherencia biológico-asistencial. La pérdida total de datos tras la depuración representa un porcentaje marginal respecto a la cohorte bruta, lo que confirma una alta calidad de llenado en los registros del GRD 2024 para la patología H25, preservando la representatividad de la muestra para las conclusiones del informe.


8 Síntesis

En esta sección final se presenta el cierre consolidado del estudio, estructurado en tres componentes fundamentales: la síntesis cuantitativa de los cinco hallazgos principales derivados de la cohorte GRD 2024, el análisis de las tres limitaciones metodológicas del estudio y la propuesta de un análisis posterior avanzado ejecutable sobre esta misma base de datos.


8.1 Hallazgos Principales

  1. Concentración de la Demanda en Atención Abierta y Diagnóstico Principal
    • Valor estadístico: El 84.3% de los episodios hospitalarios analizados corresponden a Catarata Senil (H25) registrada como diagnóstico principal, mientras que el 15.7% restante ingresó por otra patología base y presentó la catarata como un diagnóstico secundario.
    • Verificación: Tabla 2 (Trazabilidad y atrición de la cohorte GRD 2024).
  2. Marcado Perfil Epidemiológico en Adultos Mayores con Mínimo Sesgo por Sexo
    • Valor estadístico: La mediana de edad de los episodios atendidos fue de 72 años (RIC: 66 a 78 años), con un 58.4% de los egresos pertenecientes al sexo femenino y un 41.6% al sexo masculino.
    • Verificación: Figura 1 (Distribución según Sexo) y Figura 2 (Distribución de edad por tipo de diagnóstico).
  3. Alta Eficiencia Operativa y Corta Estancia Hospitalaria
    • Valor estadístico: La mediana de estancia hospitalaria fue de 1 día (RIC: 1 a 2 días) para los casos con diagnóstico principal, en comparación con una mediana de 5 días (RIC: 2 a 9 días) cuando la catarata senil actuó como diagnóstico secundario.
    • Verificación: Tabla 4 (Resumen estadístico de la estancia hospitalaria) y Figura 3 (Distribución de la estancia por tipo de diagnóstico).
  4. Patrón de Egreso Favorable y Quirúrgicamente Curativo
    • Valor estadístico: El 98.2% de las altas hospitalarias concluyeron con la condición de Alta Domiciliaria / Regular, con un registro de mortalidad intrahospitalaria inferior al 0.1% (concentrado en casos con comorbilidades severas).
    • Verificación: Tabla 5 (Distribución de episodios según condición al egreso) y Figura 4 (Distribución de episodios por condición al egreso).
  5. Diferenciación entre Volumen Absoluto y Peso Relativo Institucional
    • Valor estadístico: El Servicio de Salud con mayor demanda concentró el 14.2% del volumen nacional de casos de la cohorte; no obstante, al ajustar por actividad total (mínimo 50 egresos), el establecimiento con mayor peso relativo asignó un 8.6% de sus camas/egresos anuales a esta patología.
    • Verificación: Tabla 6 (Top 5 Servicios de Salud), Tabla 7 (Top 5 Establecimientos por volumen absoluto) y Tabla 8 (Top 5 Establecimientos por peso relativo).

8.2 Limitaciones del Análisis

  • Ausencia de Identificador Único de Paciente (RUT Anónimo): La imposibilidad de rastrear a los individuos en el tiempo impide diferenciar si \(N\) registros representan a \(N\) personas distintas o a un mismo paciente reingresado para una cirugía bilateral del segundo ojo.
  • Sesgo de Selección por Subregistro de Atención Ambulatoria (CMA): Al excluir o no contar con el desglose estandarizado de la Cirugía Mayor Ambulatoria sin hospitalización en la base cerrada del GRD, se subestima el volumen total real de procedimientos quirúrgicos de cataratas realizados en el país.
  • Variabilidad en la Calidad del Llenado de Diagnósticos Secundarios: La codificación del CIE-10 en diagnósticos secundarios depende del criterio clínico del profesional que realiza el egreso, lo que genera heterogeneidad entre establecimientos al registrar patologías concomitantes no condicionantes de la estancia.

8.3 Propuesta de Análisis Posterior

  • Análisis de Conglomerados (Cluster Analysis) sobre Costos y Consumo de Recursos:
    Con los mismos datos del GRD 2024, se propone aplicar algoritmos de agrupamiento (K-means o Hierarchical Clustering) integrando las variables de peso relativo del GRD, Severidad (IR_29301_SEVERIDAD), Días de Estancia y Procedimientos Quirúrgicos Asociados. El objetivo será identificar perfiles de eficiencia hospitalaria para clasificar los centros de salud en tipologías de Alta Resolución Quirúrgica, Alta Comorbilidad Acompañante y Centros con Estancias Prolongadas Atípicas.