Uso e integridad de información. Este documento es una demostración académica basada exclusivamente en datos sintéticos. Ni las cifras ni los episodios describen una IPS real. Los umbrales utilizados son supuestos de gestión que deben validarse clínicamente; no constituyen normas obligatorias. Las asociaciones y los escenarios no demuestran causalidad.

1 1. Mensaje a la alta dirección: decisiones antes que promedios

1.1 1.1. Decisión solicitada

Autorizar un piloto operativo de seis semanas, condicionado a verificar primero los datos institucionales, para adaptar la capacidad de atención a los períodos de mayor demanda de urgencias. La decisión no consiste en ampliar permanentemente la planta ni modificar los criterios clínicos de priorización: consiste en medir los cuellos de botella y ensayar una reorganización reversible de turnos y flujo, con supervisión de seguridad del paciente.

1.2 1.2. Resumen ejecutivo de evidencia

En el experimento reproducible de 90 días, la atención se observa en cuatro franjas diarias. El análisis permite contrastar la variación de la demanda, la ocupación simulada, los tiempos medios de espera y la proporción de personas que abandonan antes de completar la atención. El análisis recomienda no administrar el servicio únicamente con promedios trimestrales: se requieren métricas desagregadas por franja, seguimiento de episodios críticos y un esquema de evaluación antes de escalar inversiones.

# ÚNICA FUENTE DE DATOS PARA AMBOS DOCUMENTOS.
# Simulación demostrativa (NO registros hospitalarios reales).
set.seed(20261023)
# Una observación equivale a una franja de seis horas de un día.
fechas <- seq(as.Date("2026-01-01"),as.Date("2026-03-31"),by="day")
franjas <- c("00:00-05:59","06:00-11:59","12:00-17:59","18:00-23:59")
datos <- tidyr::expand_grid(fecha=fechas,franja=factor(franjas,levels=franjas)) %>%
  mutate(t=as.integer(fecha-min(fecha))+1,
         id_franja=as.integer(franja),
         fin_semana=lubridate::wday(fecha,week_start=1)>=6,
         choque=fecha>=as.Date("2026-02-15") & fecha<=as.Date("2026-02-21"),
         demanda_esperada=pmax(4,23+c(-11,5,13,7)[id_franja]+4*fin_semana+
             10*choque+2*sin(t/8)+0.07*t),
         llegadas=rpois(n(),lambda=demanda_esperada),
         ocupacion_pct=round(pmax(57,pmin(108,72+0.32*llegadas+4*choque+
             3*(id_franja==3)+rnorm(n(),0,5))),1),
         espera_min=round(pmax(8,12+1.12*llegadas+
             1.5*pmax(ocupacion_pct-90,0)+rnorm(n(),0,8)),1),
         abandono=rbinom(n(),size=llegadas,
             prob=plogis(-4.5+0.023*espera_min)),
         hospitalizaciones=rbinom(n(),size=llegadas,prob=0.23),
         atencion_60_pct=round(100*plogis(3.6-0.046*espera_min),1),
         mes=format(fecha,"%Y-%m")) %>%
  select(fecha,mes,franja,fin_semana,choque,llegadas,ocupacion_pct,
         espera_min,abandono,hospitalizaciones,atencion_60_pct)
stopifnot(nrow(datos)==length(fechas)*4, !anyNA(datos),
          all(datos$llegadas>=0),all(datos$abandono<=datos$llegadas),
          all(datos$hospitalizaciones<=datos$llegadas))

Magnitud del escenario: 11.400 llegadas en 360 franjas; 53,0 minutos de espera media ponderada; 84,7 % de ocupación media ponderada; 3,95 % de abandono acumulado; 17,8 % de franjas con ocupación superior a 90 %.

Interpretación para decisión. Una media favorable puede coexistir con momentos críticos de saturación. La gestión debe concentrarse en la variabilidad temporal y en la capacidad de respuesta, no en la cifra promedio aislada. Los resultados muestran características del simulador, no evidencia observada en instituciones colombianas.

Decisión gerencial Evidencia necesaria Condición de aprobación
Mejorar captura de datos Definiciones y trazabilidad de sellos de tiempo Validación por Calidad y Sistemas
Reasignar capacidad por franja Persistencia del pico en datos reales Piloto temporal sin comprometer seguridad
Escalar recursos o infraestructura Beneficio medido y presupuesto incremental Evaluación y análisis costo-efectividad local
LA TESIS CENTRAL

La congestión se concentra en momentos críticos, pero las decisiones suelen tomarse sobre promedios.

El propósito no es producir más gráficos: es identificar cuándo actuar, qué intervención probar y cómo medir si realmente funcionó.

2 2. Contexto, mandato gerencial y método A³

2.1 2.1. Problema de gestión y población objetivo

La congestión de urgencias se presenta cuando la demanda y la duración del flujo asistencial presionan los recursos disponibles. La organización debe resolver simultáneamente oportunidad, seguridad, experiencia y productividad. La audiencia del informe es: Gerencia General, Dirección Médica, Coordinación de Urgencias, Oficina de Calidad, Talento Humano, Planeación y comité institucional de desempeño.

Pregunta decisoria: ¿en qué períodos se concentra la presión sobre urgencias y qué mejora de proceso conviene probar primero, con criterios explícitos para mantenerla o suspenderla?

2.2 2.2. Modelo A³: Atención – Análisis – Acción

Fase Pregunta de dirección Producto verificable
Atención ¿Cuál es el problema que requiere decisión? Alcance, audiencia, riesgos y criterios
Análisis ¿Dónde, cuándo y con qué intensidad ocurre? Métricas, visualizaciones, pruebas de robustez
Acción ¿Qué podemos cambiar y cómo sabremos si funcionó? Piloto, responsables, seguimiento y evaluación

2.3 2.3. Ficha técnica de la medición

El ejercicio es un análisis descriptivo y asociativo de una serie sintética longitudinal de 90 días (enero-marzo de 2026). La unidad de análisis es el agregado de seis horas, no el paciente. Se generan llegadas, ocupación, espera, abandonos y hospitalizaciones con una semilla fija. Se introduce deliberadamente un episodio de presión entre el 15 y el 21 de febrero para comprobar si los métodos detectan un evento atípico. Las conclusiones no pueden extrapolarse a datos asistenciales reales.

Definiciones operativas:

  • Demanda: número de llegadas en cada franja de seis horas.
  • Ocupación: porcentaje simulado de uso de capacidad; puede superar el 100 %.
  • Espera: media sintética en minutos por franja; no es el tiempo hasta triage de una persona específica.
  • Abandono: conteo simulado de personas que abandonan; la tasa utiliza el total de llegadas como denominador.
  • Riesgo de congestión: para priorización de esta práctica, porcentaje de franjas con ocupación superior al umbral configurable del 90 %.

Estrategia de validación: revisar unidades, duplicados fecha-franja, datos faltantes y coherencia entre conteos y tasas. En un ejercicio institucional posterior se requerirían estratificación por triage y complejidad, datos de dotación y egresos, y control de calidad de marcas temporales.

Auditoría mínima del conjunto de datos sintéticos
Chequeo Resultado
Registros generados 360
Duplicados fecha-franja 0
Datos faltantes 0
Abandonos mayores que llegadas 0
Días con cuatro franjas 90

3 3. Exploración analítica de datos: construir evidencia confiable

3.1 3.1. Carga, estructura y trazabilidad

El ejemplo de referencia comienza por una exploración de datos (EDA). Aquí conservamos esa lógica, pero la aplicamos a cuatro franjas por día durante 90 días. El dataset se genera de manera reproducible en la sección anterior; por tanto, no requiere archivos de Excel externos. Primero se audita su tamaño, tipos, rangos y consistencia, antes de formular juicios sobre desempeño.

audit <- data.frame(
  Indicador=c("Observaciones", "Variables", "Duplicados fecha-franja", "Celdas faltantes", "Registros con espera negativa", "Abandonos superiores a llegadas"),
  Valor=c(nrow(datos),ncol(datos),sum(duplicated(datos[c("fecha","franja")])),sum(is.na(datos)),sum(datos$espera_min<0),sum(datos$abandono>datos$llegadas))
)
knitr::kable(audit,caption="Calidad y trazabilidad de la información sintética")
Calidad y trazabilidad de la información sintética
Indicador Valor
Observaciones 360
Variables 11
Duplicados fecha-franja 0
Celdas faltantes 0
Registros con espera negativa 0
Abandonos superiores a llegadas 0

Interpretación. La auditoría establece si los resultados posteriores están respaldados por datos completos y coherentes. Decisión: para su aplicación real, Calidad y Sistemas deben aprobar un diccionario de variables y un procedimiento de conciliación entre triage, admisiones y egresos.

3.2 3.2. Análisis univariado: no confundir promedio con experiencia extrema

estadisticos <- data.frame(
  Variable=c("Llegadas por franja","Espera por franja (min)","Ocupación (%)"),
  Media=c(mean(datos$llegadas),mean(datos$espera_min),mean(datos$ocupacion_pct)),
  Mediana=c(median(datos$llegadas),median(datos$espera_min),median(datos$ocupacion_pct)),
  P90=c(unname(quantile(datos$llegadas,.90)),unname(quantile(datos$espera_min,.90)),unname(quantile(datos$ocupacion_pct,.90))),
  Maximo=c(max(datos$llegadas),max(datos$espera_min),max(datos$ocupacion_pct))
)
knitr::kable(transform(estadisticos, Media=round(Media,1), Mediana=round(Mediana,1), P90=round(P90,1), Maximo=round(Maximo,1)),caption="Medidas de tendencia central y cola de la distribución")
Medidas de tendencia central y cola de la distribución
Variable Media Mediana P90 Maximo
Llegadas por franja 31.7 33.0 44.0 59.0
Espera por franja (min) 48.6 48.7 67.5 100.5
Ocupación (%) 83.1 82.6 92.6 103.0
ggplot(datos,aes(x=franja,y=espera_min,fill=franja)) +
 geom_boxplot(alpha=.85,outlier.color=rojo,show.legend=FALSE) +
 scale_fill_brewer(palette="Set2") +
 labs(title="Los promedios ocultan jornadas con demoras extremas",subtitle="Distribución de la espera por franja: mediana, dispersión y episodios atípicos",x="Franja horaria",y="Espera (minutos)") + tema

Evidencia: la distancia entre la mediana, el percentil 90 y el máximo caracteriza la exposición a episodios extremos. Relevancia: los usuarios no viven un promedio trimestral, sino una espera concreta. Acción: hacer seguimiento a mediana y percentil 90 junto al promedio; estudiar por separado observaciones atípicas mediante revisión operativa, no eliminarlas sin justificación.

3.3 3.3. Detección robusta de episodios atípicos

q <- quantile(datos$espera_min,c(.25,.75)); li <- q[1]-1.5*IQR(datos$espera_min); ls <- q[2]+1.5*IQR(datos$espera_min)
atipicos <- datos %>% filter(espera_min<li | espera_min>ls)
knitr::kable(data.frame(Metodo="Rango intercuartílico (1,5 × IQR)",Umbral_superior=round(ls,1),Eventos_detectados=nrow(atipicos)),caption="Tamizaje de valores extremos")
Tamizaje de valores extremos
Metodo Umbral_superior Eventos_detectados
75% Rango intercuartílico (1,5 × IQR) 90.8 2

Los atípicos no se excluyen del análisis: podrían reflejar congestión relevante. En instituciones reales debe diferenciarse entre error de captura y evento clínicamente significativo.

4 4. Probabilidad y estadística aplicada a urgencias

4.1 4.1. Justificación probabilística: llegadas como conteos

El material de referencia introduce distribuciones de Poisson, binomial y normal. En este caso, la distribución de Poisson es una herramienta didáctica para conteos de llegadas por franja; la binomial ilustra abandonos entre personas que llegan. Ningún modelo constituye por sí mismo validación empírica de estas distribuciones en un hospital real.

lambda <- mean(datos$llegadas)
k <- 0:max(datos$llegadas)
prob <- dpois(k,lambda)
ggplot(data.frame(llegadas=k,probabilidad=prob),aes(llegadas,probabilidad)) +
 geom_col(fill=verde,width=.85) +
 labs(title="Distribución de Poisson: escenario de referencia para llegadas",subtitle=paste0("Parámetro estimado con media global sintética: λ = ",round(lambda,1)),x="Llegadas por franja",y="Probabilidad teórica") + tema

La llegada de pacientes presenta diferencias por franja, por lo que una Poisson homogénea es deliberadamente simplificada. Un modelo que ignore estas diferencias puede subestimar la variación y los picos.

4.2 4.2. Probabilidades empíricas relevantes para decisiones

probabilidades <- data.frame(
 Indicador=c("Probabilidad de ocupación > 90 %","Probabilidad de espera > 60 min","Probabilidad conjunta de ambas alertas"),
 Probabilidad=c(mean(datos$ocupacion_pct>90),mean(datos$espera_min>60),mean(datos$ocupacion_pct>90 & datos$espera_min>60))
)
probabilidades$Porcentaje <- round(100*probabilidades$Probabilidad,1)
knitr::kable(probabilidades[c("Indicador","Porcentaje")],caption="Frecuencia relativa en el escenario sintético")
Frecuencia relativa en el escenario sintético
Indicador Porcentaje
Probabilidad de ocupación > 90 % 17.8
Probabilidad de espera > 60 min 23.3
Probabilidad conjunta de ambas alertas 11.9

Implicación gerencial: la probabilidad empírica de alerta mide frecuencia, no severidad del daño. Una institución deberá priorizar alertas según riesgos clínicos, capacidad de respuesta y consecuencias de fallar.

5 5. Inferencia estadística y validez de las conclusiones

5.1 5.1. Intervalo de confianza ilustrativo mediante remuestreo

Como las observaciones por franja pueden estar asociadas dentro de cada día, se remuestrean días completos para preservar la dependencia intradía. El intervalo describe la incertidumbre de remuestreo dentro de este simulador, no la de una población hospitalaria colombiana.

set.seed(params$semilla + 2)
ids <- split(seq_len(nrow(datos)),datos$fecha)
B <- 600
boot <- replicate(B,{
 elegidos <- sample(seq_along(ids),length(ids),replace=TRUE)
 ind <- unlist(ids[elegidos],use.names=FALSE)
 weighted.mean(datos$espera_min[ind],datos$llegadas[ind])
})
ic <- unname(quantile(boot,c(.025,.975)))
knitr::kable(data.frame(Estimacion=round(espera_global,2),LI_95=round(ic[1],2),LS_95=round(ic[2],2)),caption="Intervalo percentil bootstrap, remuestreo por día")
Intervalo percentil bootstrap, remuestreo por día
Estimacion LI_95 LS_95
52.99 51.57 54.58

5.2 5.2. Contraste de medias entre franjas y magnitud del efecto

ajuste_aov <- aov(espera_min ~ franja,data=datos)
tabla_aov <- as.data.frame(summary(ajuste_aov)[[1]])
knitr::kable(data.frame(Fuente=rownames(tabla_aov),round(tabla_aov,4)),caption="ANOVA exploratorio entre franjas")
ANOVA exploratorio entre franjas
Fuente Df Sum.Sq Mean.Sq F.value Pr..F.
franja franja 3 37027.16 12342.3869 95.5669 0
Residuals Residuals 356 45977.11 129.1492 NA NA

La prueba ANOVA permite ilustrar diferencias entre grupos; sin embargo, los supuestos de independencia y homocedasticidad pueden ser cuestionables para franjas de un mismo día. Por ello no debe tratarse el valor p como prueba suficiente de una prioridad gerencial, ni como inferencia sobre IPS reales. Para evaluación formal deben considerarse modelos con dependencia temporal y análisis de resultados ajustados por triage.

6 6. Modelo analítico: explicar, evaluar y no sobreprometer

6.1 6.1. Pregunta y especificación

¿Hasta qué punto las llegadas, la ocupación y la franja ayudan a predecir la espera de una franja posterior? Se utiliza regresión lineal como línea base, entendiendo que, en el simulador, algunas variables están vinculadas por diseño.

6.2 6.2. División temporal de entrenamiento y prueba

En vez de dividir aleatoriamente, se entrenará con los primeros días y se reservarán los últimos para evaluar el modelo, reduciendo la filtración temporal.

corte <- sort(unique(datos$fecha))[63]
train <- datos %>% filter(fecha<=corte)
test <- datos %>% filter(fecha>corte)
modelo_predictivo <- lm(espera_min ~ llegadas + ocupacion_pct + franja + fin_semana,data=train)
test$prediccion <- predict(modelo_predictivo,newdata=test)
mae <- mean(abs(test$espera_min-test$prediccion))
rmse <- sqrt(mean((test$espera_min-test$prediccion)^2))
knitr::kable(data.frame(Metrica=c("Días entrenamiento","Días prueba","MAE (min)","RMSE (min)"),Valor=c(length(unique(train$fecha)),length(unique(test$fecha)),round(mae,2),round(rmse,2))),caption="Evaluación temporal fuera de muestra")
Evaluación temporal fuera de muestra
Metrica Valor
Días entrenamiento 63.00
Días prueba 27.00
MAE (min) 7.43
RMSE (min) 9.20
ggplot(test,aes(x=espera_min,y=prediccion,color=franja)) +
 geom_point(alpha=.7,size=2) +
 geom_abline(slope=1,intercept=0,linetype="dashed",color=rojo) +
 scale_color_brewer(palette="Dark2") +
 labs(title="Qué tan cerca están las predicciones de las esperas observadas",subtitle="La diagonal marca predicción perfecta; datos simulados de la ventana de prueba",x="Espera simulada (min)",y="Espera pronosticada (min)") + tema

Interpretación: MAE y RMSE expresan el error en minutos. La diferencia entre ellos informa el peso de errores grandes. Este ejercicio sirve para mostrar evaluación fuera de muestra, no para justificar implementación clínica ni afirmar capacidad predictiva externa. Antes de operar en producción se requerirían datos reales, validación temporal repetida, variables de triage y pruebas de seguridad.

7 7. Desempeño operativo: dónde se concentra la presión

7.1 7.1. Demanda y variabilidad por franjas

p_franjas <- ggplot(franja_resumen,aes(x=franja,y=llegadas,fill=franja)) +
 geom_col(width=.7,show.legend=FALSE) +
 geom_text(aes(label=scales::comma(llegadas,big.mark=".",decimal.mark=",")),
           vjust=-.4,size=3.7) +
 scale_fill_brewer(palette="YlGnBu") +
 scale_y_continuous(expand=expansion(mult=c(0,.12))) +
 labs(title="Volumen acumulado de llegadas por franja",subtitle="Trimestre simulado · conteos sin ajuste por horas (franjas iguales)",
 x="Franja de seis horas",y="Llegadas simuladas",caption="Fuente: simulación reproducible") + tema
p_franjas

¿Qué evidencia? Las llegadas no se distribuyen uniformemente entre franjas. La de mayor volumen es 12:00-17:59, con 3.649 llegadas simuladas. ¿Por qué importa? Un esquema de recursos idéntico en todos los turnos podría no responder a esta asimetría. ¿Qué decisión sugiere? Revisar la correspondencia entre dotación efectiva, llegadas, tiempos de atención y complejidad durante cada franja, antes de asignar personal adicional.

7.2 7.2. Tendencia diaria y detección de eventos críticos

critico <- diario[which.max(diario$espera),]
p_tendencia <- ggplot(diario,aes(fecha,espera)) +
 geom_line(color=azul,linewidth=.65) +
 geom_hline(yintercept=params$umbral_espera,linetype="dashed",color=rojo) +
 annotate("rect",xmin=as.Date("2026-02-15"),xmax=as.Date("2026-02-21"),
          ymin=-Inf,ymax=Inf,fill=rojo,alpha=.07) +
 geom_point(data=critico,color=rojo,size=3) +
 ggrepel::geom_text_repel(data=critico,aes(label=paste0("Pico: ",round(espera)," min")),
                size=3.6,seed=12,max.overlaps=Inf) +
 labs(title="Tiempo medio de espera: evolución y episodios de presión",
 subtitle="Banda sombreada: evento extraordinario incluido intencionalmente en la simulación",
 x="Fecha",y="Espera media ponderada (min)",caption="Línea discontinua: umbral exploratorio, no estándar clínico") + tema
p_tendencia

¿Qué evidencia? El máximo de la espera media diaria se observó el 21/02/2026, con 75,6 minutos. La visualización permite identificar episodios y no solamente el valor promedio. ¿Por qué importa? La persistencia de picos puede incrementar la presión de servicio y exige distinguir aumentos estacionales, faltantes operativos o congestión en egresos. ¿Qué decisión sugiere? Desencadenar revisión operacional de turnos y procesos cada vez que se observe una desviación repetida, no a partir de una única observación.

7.3 7.3. Coexistencia de ocupación y demora

p_relacion <- ggplot(datos,aes(x=ocupacion_pct,y=espera_min,color=franja)) +
 geom_point(alpha=.55,size=1.7) +
 geom_smooth(method="lm",se=FALSE,linewidth=.7) +
 scale_color_brewer(palette="Set2") +
 labs(title="Ocupación y espera por franja: patrón de asociación",
 subtitle="Los puntos representan franjas, no pacientes; la asociación no demuestra causalidad",
 x="Ocupación simulada (%)",y="Espera simulada (min)",color="Franja") + tema
p_relacion

¿Qué evidencia? La nube de puntos permite evaluar la covariación entre presión y demora. ¿Por qué importa? La ocupación podría ser un indicador de alerta temprana, pero también refleja diferencias de demanda y del mecanismo utilizado para simular las variables. ¿Qué decisión sugiere? En datos reales, construir una alerta operativa complementada con volumen, mezcla de triage, dotación y capacidad de egresos; no usar la regresión presentada como base para asignar responsabilidades.

7.4 7.4. Comparación ejecutiva de desempeño

Perfil operativo sintético por franja
Franja Llegadas Espera media (min) Ocupación media (%) Abandono (%)
00:00-05:59 1545 34.3 78.2 2.27
06:00-11:59 2958 51.5 83.1 3.48
12:00-17:59 3649 61.9 89.2 5.02
18:00-23:59 3248 53.3 84.2 3.97

Esta tabla ofrece al comité un punto de partida para identificar prioridades, pero debe complementarse con intervalos de incertidumbre, severidad clínica y costo marginal de las acciones. Una tasa elevada no equivale automáticamente a un resultado atribuible a la dotación de personal.

8 8. Análisis para decidir, no solo para describir

8.1 8.1. Asociación estadística y advertencias

modelo <- lm(espera_min ~ llegadas + ocupacion_pct + franja + fin_semana,
             data=datos)
coef <- summary(modelo)$coefficients
r2 <- summary(modelo)$r.squared
knitr::kable(data.frame(Variable=rownames(coef),Estimacion=round(coef[,1],3),
 Error_Estandar=round(coef[,2],3),Valor_p=signif(coef[,4],3)),row.names=FALSE,
 caption="Modelo lineal explicativo exploratorio")
Modelo lineal explicativo exploratorio
Variable Estimacion Error_Estandar Valor_p
(Intercept) -7.173 6.105 0.24100
llegadas 1.074 0.077 0.00000
ocupacion_pct 0.276 0.084 0.00105
franja06:00-11:59 -0.293 1.661 0.86000
franja12:00-17:59 -0.383 2.060 0.85300
franja18:00-23:59 -2.305 1.821 0.20600
fin_semanaTRUE -1.553 1.010 0.12500

El modelo tiene un \(R^2\) observado de 0,705 dentro de los datos sintéticos. No tiene interpretación causal ni validez predictiva externa: los tiempos fueron generados, en parte, a partir de las llegadas y la ocupación, de modo que parte de la asociación fue incorporada al propio diseño de simulación. Su contribución didáctica es demostrar cómo contrastar variables simultáneamente e interpretar magnitudes y limitaciones.

8.2 8.2. Prueba de sensibilidad de los umbrales

sensibilidad <- data.frame(Umbral=c(85,90,95,100)) %>%
 mutate(`Franjas que superan umbral (%)`=vapply(Umbral,
        function(u) round(100*mean(datos$ocupacion_pct>u),1),numeric(1)))
knitr::kable(sensibilidad,caption="Variación del porcentaje de alertas según el umbral")
Variación del porcentaje de alertas según el umbral
Umbral Franjas que superan umbral (%)
85 39.4
90 17.8
95 5.0
100 0.6

Lectura para gerencia: el volumen de alertas depende de la definición del umbral. Un límite demasiado bajo puede generar fatiga de alarmas; uno demasiado alto puede impedir una reacción oportuna. La institución debe aprobar umbrales en conjunto con equipos clínicos y operativos, con base en evidencia y capacidad de respuesta.

8.3 8.3. Escenario de mejora ilustrativo

escenarios <- data.frame(
 Escenario=c("Situación base sintética","Reducción hipotética del 10 %",
 "Reducción hipotética del 15 %","Reducción hipotética del 20 %"),
 `Espera media esperada (min)`=round(espera_global*c(1,.90,.85,.80),1),
 check.names=FALSE)
knitr::kable(escenarios,caption="Escenarios aritméticos: no son pronósticos ni estimaciones de impacto")
Escenarios aritméticos: no son pronósticos ni estimaciones de impacto
Escenario Espera media esperada (min)
Situación base sintética 53.0
Reducción hipotética del 10 % 47.7
Reducción hipotética del 15 % 45.0
Reducción hipotética del 20 % 42.4

Qué permite decidir: el escenario ilustra posibles metas de gestión y abre la conversación sobre costo, viabilidad y efecto operacional. Qué no permite afirmar: no prueba que una redistribución de turnos produzca una reducción de 10 %, 15 % o 20 %; esos porcentajes se introducen como supuestos exógenos. La aprobación de una expansión requiere evidencia real del piloto y presupuesto detallado.

9 9. Exploración interactiva para los comités

El gráfico siguiente permite que el comité contraste visualmente la curva temporal mediante tooltips, zoom y paneo. Se conserva como instrumento de exploración, no como sustituto del análisis escrito. Para detectar tendencias debe revisarse con cautela la agregación por día, pues reduce la variabilidad de las franjas.

plotly::ggplotly(p_tendencia,tooltip=c("x","y"))

¿Qué evidencia? Cuándo aparecen picos y cuánto duran. ¿Por qué importa? Hace auditable la selección de episodios que merecen explicación. ¿Qué decisión sugiere? Solicitar un análisis de causas que integre admisiones, salidas, demanda y personal disponible para cada episodio detectado.

10 10. Ruta de acción y gobernanza

10.1 10.1. Recomendación 1: piloto de gestión por franjas

Acción: implementar durante seis semanas un ajuste acotado y reversible de distribución de personal, tiempos de clasificación y flujo operativo en la franja de mayor presión que confirmen los datos reales. Antes de intervenir, establecer dos semanas de línea base, verificar cobertura clínica y definir controles de seguridad del paciente.

Responsable: Dirección Médica y Coordinación de Urgencias, con Talento Humano y Calidad.

Indicadores de seguimiento: espera media y percentiles observados, abandono, eventos de seguridad, volumen por triage, pacientes en espera y horas efectivas de dotación. Regla de decisión: mantener o escalar solo si hay una mejora sostenida sin deteriorar indicadores de seguridad ni trasladar congestión a otra franja.

10.2 10.2. Recomendación 2: institucionalizar analítica operativa y alertas

Acción: disponer un conjunto único de definiciones y tablero de seguimiento operativo con revisión semanal, trazabilidad y alertas validadas. Implementar capacitación para captura de datos, documentación del diccionario y verificación de inconsistencias entre fuentes.

Responsable: Planeación, Sistemas de Información y Calidad; valida el Comité de Gestión y Desempeño.

Indicadores: completitud y oportunidad de carga, consistencia de marcas temporales, porcentaje de alertas atendidas, cierre de acciones y evolución de los indicadores asistenciales.

10.3 10.3. Cronograma de decisiones

Horizonte Entregable Responsable Criterio de éxito
Semanas 1-2 Auditoría de datos y línea base Sistemas + Calidad Métricas trazables y validadas
Semanas 3-4 Diseño y despliegue controlado del piloto Urgencias + Talento Humano Cobertura clínica y protocolo aprobados
Semanas 5-8 Seguimiento semanal y ajustes Coordinación de Urgencias No deterioro de seguridad; tendencias documentadas
Semanas 9-10 Evaluación del piloto y costos Planeación + Calidad Informe antes-después, limitaciones y costos
Semana 11 Decisión de continuar, corregir o detener Gerencia Acta con decisión sustentada

10.4 10.4. Matriz de riesgos

Riesgo Consecuencia Mitigación propuesta
Datos incompletos o definiciones inconsistentes Falsas alarmas y decisiones equivocadas Validación previa y auditoría de fuentes
Redistribuir personal sin análisis de complejidad Riesgo asistencial Aprobar cambios con Dirección Médica y Calidad
Confundir correlación con causalidad Inversión basada en inferencias incorrectas Piloto y evaluación controlada cuando sea viable
Desplazar congestión a otra franja Mejora aparente, no sistémica Medir todas las franjas y el recorrido del paciente
Sostener una intervención sin presupuesto Riesgo financiero y operativo Estimar costo marginal y beneficios verificados

11 11. Conclusión y decisión propuesta

La principal contribución gerencial del informe no es una cifra aislada, sino una secuencia de decisión trazable: comprender la presión por franja; verificar si los picos son persistentes; explorar sus asociaciones y posibles explicaciones; probar acciones de bajo riesgo; medir sus resultados y decidir posteriormente sobre recursos permanentes.

Se solicita al comité: (i) aprobar la validación de datos y diseño del piloto; (ii) designar responsables y establecer reporte semanal; (iii) exigir que cualquier expansión posterior esté soportada en resultados reales, controles de seguridad y estimación financiera. El ejercicio cumple una función ilustrativa de metodología reproducible y no sustituye el diagnóstico de una institución concreta.

12 12. Anexo técnico de reproducibilidad y limitaciones

Reproducción: abrir este .Rmd en RStudio, instalar los paquetes y utilizar Knit para obtener HTML. El documento fija set.seed(params$semilla); los umbrales son configurables en params del YAML. Para reproducir el anexo de flexdashboard, abrir el archivo complementario incluido en el paquete y compilarlo también. Ambos documentos utilizan datos_compartidos.R para garantizar cifras idénticas.

Limitaciones relevantes: las variables son sintéticas, no se dispone de datos individuales ni de acuidad del triage, no hay dimensión económica real, no se identifican efectos causales, el evento excepcional fue definido artificialmente y los umbrales son meramente ilustrativos. Por tanto, las prioridades simuladas no justifican por sí mismas decisiones clínicas, contractuales o presupuestales reales.

Paquetes y funciones clave: ggplot2 usa geometrías geom_col(), geom_line() y geom_point(); estilos theme_minimal() y paletas scale_fill_brewer(); el pico se destaca con annotate() y ggrepel::geom_text_repel(). plotly::ggplotly() habilita exploración. Los agregados se construyen en dplyr con promedios ponderados calculados antes de sumar el denominador, para evitar el error de longitud detectado previamente.

Referencias metodológicas para ampliación: documentación oficial de ggplot2 (https://ggplot2.tidyverse.org/), plotly para ggplot2 (https://plotly.com/ggplot2/) y flexdashboard (https://rstudio.github.io/flexdashboard/).

## **R y entorno de ejecución:** R version 4.6.1 (2026-06-24 ucrt).  **Semilla:** 20261023.  **Fecha de compilación:** 2026-10-24.