1 Parámetros del modelo

A continuación se cargan los parámetros del modelo:

#PARÁMETROS----------------------------------------------------------------------------------------------

## poblacion objetivo------------------------------------------------------------------------------------

porcentaje_seropositivos <- 0.75  

trasplantes_2025_incucai <- 370

trasplantes_2026_incucai <- 400

trasplantes_2027_incucai <- 420


## costos de tratamientos---------------------------------------------------------------------

descuento_pls <- 0.5699629524  # Descuento de PSL: 0.5699629524

# Paso siguiente: cálculo de costos de tratamiento
parametros_tratamiento <- list(
  duracion_tratamiento = 22.5,  # Duración del tratamiento en días
  peso_promedio = 70,  # kg
  duracion_letermovir = 14,
  
  ganciclovir = list(
    costo_por_vial = 36192.51*descuento_pls,  # Costo por vial de 500 mg
    dosis = 5,  # mg/kg cada 12 horas
    presentacion = 500  # mg
  ),
  
  valganciclovir = list(
    costo_por_presentacion = 2299588.55*descuento_pls,  # Costo por presentación de 60 comprimidos de 450 mg
    dosis = 900,  # mg cada 12 horas
    presentacion = 450  # mg
  ),
  
  foscarnet = list(
    costo_por_presentacion = 278887.27*descuento_pls,  # Costo por presentación de 12 g
    dosis = 90,  # mg/kg cada 12 horas
    presentacion = 12000  # mg
  ),
  
  letermovir = list(
    dosis = 480,  # mg cada 24 horas
    duracion = 100,  # Días de tratamiento con Letermovir
    costo_240mg_28 = 10158973.27*descuento_pls,  # Costo por presentación de 28 ampollas de 240 mg
    costo_480mg_28 = 3703542.92*descuento_pls,  # Costo por presentación de 28 ampollas de 480 mg
    costo_240mg_1 = 374010*descuento_pls,  # Costo por presentación de 1 ampolla de 240 mg
    costo_480mg_1 = 374010*descuento_pls,  # Costo por presentación de 1 ampolla de 480 mg
    presentacion_240mg_28 = 240, # presentación de 28 ampollas de 240 mg
    presentacion_480mg_28 = 480, # presentación de 28 ampollas de 480 mg
    presentacion_240mg_1 = 240,  # presentación de 1 ampolla de 240 mg
    presentacion_480mg_1 = 480,  # presentación de 1 ampolla de 480 mg
    unidades_240mg_28 = 28, # unidades de 28 ampollas de 240 mg
    unidades_480mg_28 = 28, # unidades de 28 ampollas de 480 mg
    unidades_240mg_1 = 1,  # unidades de 1 ampolla de 240 mg
    unidades_480mg_1 = 1   # unidades de 1 ampolla de 480 mg
  )
)

proporciones <- list(
  proporcion_ganciclovir = 0.415,
  proporcion_valganciclovir = 0.50,
  proporcion_foscarnet = 0.1
)

# Proporciones de utilización de los antivirales (rama sin Letermovir)
proporciones_sin_letermovir <- list(
  proporcion_ganciclovir = 0.415,
  proporcion_valganciclovir = 0.50,
  proporcion_foscarnet = 0.1
)



## costos de seguimiento-----------------------------------------------------------------------

# Objetos con información de seguimiento (todo en términos de costos semanales)

# ESTO CREO QUE NO LO USE
semanas_pcr_semanal <- 14
semanas_pcr_quincenal <- 12
semanas_visita_especialista <- 14
semanas_hemograma <- 14
semanas_bioquímica <- 14

#ACA TENGO QUE AGREGAR FRECUENCIA DIFERENCIADA PARA RAMA LETERMO RAMA SIN LETERMO
seguimiento_pcr_semanal <- list(
  frecuencia_semanal = 1,
  costo_unitario = 130000,  # Costo por PCR
  duracion          = 14  # Costo por PCR
)

seguimiento_pcr_quincenal <- list(
  frecuencia_semanal = 0.5,
  costo_unitario = 130000  # Costo por PCR
)

seguimiento_visita_especialista <- list(
  frecuencia_semanal = 1,
  costo_unitario = 20000  # Costo por visita al especialista
)

seguimiento_hemograma <- list(
  frecuencia_semanal = 1,
  costo_unitario = 4000  # Costo por hemograma completo
)

seguimiento_bioquimica <- list(
  frecuencia_semanal = 0,
  costo_unitario = 25000  # Costo por bioquímica
)



## costos eventos adversos------------------------------------------------------

# Incorporación de eventos adversos
eventos_adversos <- list(
  neutropenia = list(
    costo_unitario = 396630.01,
    probabilidad_solo_msc = 0.038,
    probabilidad_letermovir = 0.036
  ),
  infecciones_oportunistas = list(
    costo_unitario = 3987059.75,
    probabilidad_solo_msc = 0.646,
    probabilidad_letermovir = 0.724
  ),
  enfermedad_renal_aguda = list(
    costo_unitario = 852995.04,
    probabilidad_solo_msc = 0.13,
    probabilidad_letermovir = 0.097
  ),
  eich = list(
    costo_unitario = 6000000,
    probabilidad_solo_msc = 0.385,
    probabilidad_letermovir = 0.391
  ),
  rehospitalizaciones = list(
    costo_unitario = 3506516.10,
    probabilidad_solo_msc = 0.028,
    probabilidad_letermovir = 0.076
  ),
  enfermedad_cmv = list(
    costo_unitario = 6600860.54,
    probabilidad_solo_msc = 0.018,
    probabilidad_letermovir = 0.015
  )
)

## curvas-----------------------------------------------------------------------

# Incorporación de las curvas de sobrevida y de infección clínicamente significativa (ICS)
curvas_sobrevida <- data.frame(
  semana = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52),
  
  muertes_placebo = c(1,1,0.9838,0.9838,0.9722,0.9722,0.9665,0.9665,0.9644,0.9644,0.9555,0.9512,0.9512,0.9458,0.9458,0.9283,0.9198,0.9198,0.9,0.9,0.8944,0.8798,0.8798,0.8611,0.8611,0.8385,0.8255,0.8255,0.8124,0.802,0.802,0.794,0.794,0.7865,0.7753,0.7753,0.7698,0.7698,0.761,0.76,0.76,0.7557,0.7557,0.7532,0.7531,0.7531,0.7529,0.7529,0.7468,0.7443,0.7443,0.7442,0.7442),
  
  muertes_letermovir = c(1,1,0.994641867383425,0.994641867383425,0.994372279189849,0.994372279189849,0.984790561553868,0.984790561553868,0.980796470968477,0.980796470968477,0.977622543761072,0.966138728832199,0.966138728832199,0.960701634753246,0.960701634753246,0.954122955970329,0.945405157542472,0.945405157542472,0.937237178294485,0.937237178294485,0.93337611595547,0.917693941249273,0.917693941249273,0.903890315407629,0.903890315407629,0.898150704204062,0.89566418981472,0.89566418981472,0.891024216970891,0.872822037690295,0.872822037690295,0.860347141533334,0.860347141533334,0.853599528500008,0.847676644236485,0.847676644236485,0.842257760887841,0.842257760887841,0.829222863714347,0.817445423368886,0.817445423368886,0.816745821314118,0.816745821314118,0.816550220174229,0.80544987196694,0.80544987196694,0.798060803223767,0.798060803223767,0.794887014859588,0.790659406400661,0.790659406400661,0.790417986995783,0.790329383041617)
)


# Datos observados (como en mensajes anteriores):
curvas_sobrevida_sin_infeccion <- data.frame(
  semana = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24),
  ics_placebo = c(1,0.99972783358922,0.997850230212919,0.990501164782857,0.98128399809285,
                  0.919958703562664,0.822990244079353,0.753640638789154,0.722111980428813,
                  0.644415430554045,0.632316638257233,0.616084091925677,0.607682152830668,
                  0.59010529624391,0.588290477399389,0.578645051318319,0.573671103374074,
                  0.573805534399594,0.573805534399594,0.573805534399594,0.573671103374074,
                  0.573267810297514,0.565336379791826,0.562834129566803,0.554632309384785),
  ics_letermovir = c(1,0.998007108403148,0.993931726951959,0.985579693500486,0.9829392996992,
                     0.972227299653042,0.965235072957845,0.961302965461381,0.959353715591339,
                     0.952800203097233,0.947414560137332,0.939390708301599,0.939390708301599,
                     0.934282329331834,0.91966295530652,0.918251429538558,0.918318645051318,
                     0.918049783000278,0.902993508142023,0.87966972521428,0.864747881381545,
                     0.856211511261017,0.827812957119888,0.811849272839372,0.812118134890413)
)

## tipo de cambio---------------------------------------------------------------

#traigo el valor del dolar

tipo_de_cambio <- 959 #14/10/2024

## cuota de mercado-------------------------------------------------------------

# mundo letermovir

## cuotas letermo

cuota_letermo_2025 <- 0.35
cuota_letermo_2026 <- 0.65
cuota_letermo_2027 <- 1

cuota_sinletermo_2025 <- 1 - cuota_letermo_2025
cuota_sinletermo_2026 <- 1 - cuota_letermo_2026
cuota_sinletermo_2027 <- 1 - cuota_letermo_2027

## umbrales---------------------------------------------------------------------

umbral_alto <- 8197222  
umbral_medio <- 5464815  
umbral_bajo <- 2732407

2 Cálculo de la población objetivo

Se calcula la población objetivo para los años 2025, 2026 y 2027 a partir de los datos disponibles en SINTRA y prooyecciones aportadas por el INCUCAI.

#POBLACIÓN OBJETIVO--------------------------------------------

## Población blanco--------------------------------------------

poblacion_objetivo_2025 <- trasplantes_2025_incucai*porcentaje_seropositivos
poblacion_objetivo_2026 <- trasplantes_2026_incucai*porcentaje_seropositivos
poblacion_objetivo_2027 <- trasplantes_2027_incucai*porcentaje_seropositivos

3 Extrapolación de las curvas de sobrevida libre de ICS

## curvas------------------------------------------------------

# Preparamos datos sin el tiempo 0 (para el ajuste):
data_placebo <- curvas_sobrevida_sin_infeccion %>% filter(semana>0) %>% select(semana, ics_placebo)
data_leter <- curvas_sobrevida_sin_infeccion %>% filter(semana>0) %>% select(semana, ics_letermovir)

# FUNCIONES DE SUPERVIVENCIA PARA CADA DISTRIBUCIÓN
# Exponencial: S(t) = exp(-lambda * t)
exp_surv <- function(t, lambda) {
  exp(-lambda * t)
}

# Weibull: S(t) = exp(- (lambda * t)^rho)
weibull_surv <- function(t, lambda, rho) {
  exp(- (lambda * t)^rho)
}

# Gompertz: S(t) = exp(-(lambda/gamma)*(exp(gamma*t)-1))
gompertz_surv <- function(t, lambda, gamma) {
  exp(- (lambda/gamma) * (exp(gamma*t) - 1))
}

### AJUSTES - PLACEBO ###

# Exponencial (1 parámetro: lambda)
fit_exp_placebo <- nls(ics_placebo ~ exp_surv(semana, lambda),
                       data = data_placebo, start = list(lambda=0.01))

# Weibull (2 parámetros: lambda, rho)
fit_weibull_placebo <- nls(ics_placebo ~ weibull_surv(semana, lambda, rho),
                           data = data_placebo, start = list(lambda=0.01, rho=1))

# Gompertz (2 parámetros: lambda, gamma)
fit_gompertz_placebo <- nls(ics_placebo ~ gompertz_surv(semana, lambda, gamma),
                            data = data_placebo, start = list(lambda=0.01, gamma=0.001))

# Extraemos coeficientes
coefs_exp_placebo <- coef(fit_exp_placebo)
coefs_weibull_placebo <- coef(fit_weibull_placebo)
coefs_gompertz_placebo <- coef(fit_gompertz_placebo)

### AJUSTES - LETERMOVIR ###

fit_exp_leter <- nls(ics_letermovir ~ exp_surv(semana, lambda),
                     data = data_leter, start = list(lambda=0.01))

fit_weibull_leter <- nls(ics_letermovir ~ weibull_surv(semana, lambda, rho),
                         data = data_leter, start = list(lambda=0.01, rho=1))

fit_gompertz_leter <- nls(ics_letermovir ~ gompertz_surv(semana, lambda, gamma),
                          data = data_leter, start = list(lambda=0.01, gamma=0.001))

# Coeficientes letermovir
coefs_exp_leter <- coef(fit_exp_leter)
coefs_weibull_leter <- coef(fit_weibull_leter)
coefs_gompertz_leter <- coef(fit_gompertz_leter)

### GENERAMOS PREDICCIONES HASTA SEMANA 54 ###

semanas_extrap <- data.frame(semana=0:54)

# Placebo
semanas_extrap$exp_placebo <- exp_surv(semanas_extrap$semana, coefs_exp_placebo["lambda"])
semanas_extrap$weibull_placebo <- weibull_surv(semanas_extrap$semana,
                                               coefs_weibull_placebo["lambda"], 
                                               coefs_weibull_placebo["rho"])
semanas_extrap$gompertz_placebo <- gompertz_surv(semanas_extrap$semana,
                                                 coefs_gompertz_placebo["lambda"],
                                                 coefs_gompertz_placebo["gamma"])

# Letermovir
semanas_extrap$exp_leter <- exp_surv(semanas_extrap$semana, coefs_exp_leter["lambda"])
semanas_extrap$weibull_leter <- weibull_surv(semanas_extrap$semana,
                                             coefs_weibull_leter["lambda"], 
                                             coefs_weibull_leter["rho"])
semanas_extrap$gompertz_leter <- gompertz_surv(semanas_extrap$semana,
                                               coefs_gompertz_leter["lambda"],
                                               coefs_gompertz_leter["gamma"])

### PREPARACIÓN DE DATOS PARA GRAFICAR ###

datos_observados <- curvas_sobrevida_sin_infeccion %>%
  pivot_longer(cols = c("ics_placebo","ics_letermovir"),
               names_to = "grupo", values_to = "sobrevida") %>%
  mutate(grupo = case_when(
    grupo == "ics_placebo" ~ "Rama placebo (Observado)",
    grupo == "ics_letermovir" ~ "Rama letermovir (Observado)"
  ))

datos_pred <- semanas_extrap %>%
  pivot_longer(cols = -semana, names_to = "grupo", values_to = "sobrevida") %>%
  # Renombramos grupos para ser claros
  mutate(grupo = case_when(
    grupo == "exp_placebo" ~ "Rama placebo (Exponencial)",
    grupo == "weibull_placebo" ~ "Rama placebo (Weibull)",
    grupo == "gompertz_placebo" ~ "Rama placebo (Gompertz)",
    grupo == "exp_leter" ~ "Rama letermovir (Exponencial)",
    grupo == "weibull_leter" ~ "Rama letermovir (Weibull)",
    grupo == "gompertz_leter" ~ "Rama letermovir (Gompertz)",
    TRUE ~ grupo
  ))

# Colores asignados a cada combinación:
# Observados: Placebo = naranja, Letermovir = azul
# Ajustes: usaremos la misma gama, pero con diferentes tipos de línea

color_values <- c("Rama placebo (Observado)"="#6b6e6e",#gris oscuro,
                  "Rama letermovir (Observado)"="#6b6e6e",
                  "Rama placebo (Exponencial)"="#20c483",
                  "Rama placebo (Weibull)"="#0072B2",
                  "Rama placebo (Gompertz)"="#D55E00",
                  "Rama letermovir (Exponencial)"="#20c483",
                  "Rama letermovir (Weibull)"="#0072B2",
                  "Rama letermovir (Gompertz)"="#D55E00")

linetype_values <- c("Rama placebo (Observado)"=0,
                     "Rama letermovir (Observado)"=0,
                     "Rama placebo (Exponencial)"=3,
                     "Rama placebo (Weibull)"=3,
                     "Rama placebo (Gompertz)"=3,
                     "Rama letermovir (Exponencial)"=4,
                     "Rama letermovir (Weibull)"=4,
                     "Rama letermovir (Gompertz)"=4)

shape_values <- c("Rama placebo (Observado)"=16,
                  "Rama letermovir (Observado)"=16,
                  "Rama placebo (Exponencial)"=NA,
                  "Rama placebo (Weibull)"=NA,
                  "Rama placebo (Gompertz)"=NA,
                  "Rama letermovir (Exponencial)"=NA,
                  "Rama letermovir (Weibull)"=NA,
                  "Rama letermovir (Gompertz)"=NA)

### GRAFICAMOS ###
# Crear la columna `grupo_modelo` en ambos datasets
datos_observados$grupo_modelo <- datos_observados$grupo
datos_pred$grupo_modelo <- datos_pred$grupo

ggplot() +
  # Puntos observados
  geom_point(
    data = datos_observados,
    aes(x = semana, y = sobrevida, color = grupo_modelo, shape = grupo_modelo),
    size = 2
  ) +
  # Líneas ajustadas
  geom_line(
    data = datos_pred,
    aes(x = semana, y = sobrevida, color = grupo_modelo, linetype = grupo_modelo),
    size = 1
  ) +
  # Líneas de referencia
  geom_vline(xintercept = 24, linetype = "dotted", color = "gray50") +
  geom_vline(xintercept = 54, linetype = "dotted", color = "gray50") +
  labs(
    title = "Curvas de Sobrevida sin ICS: Observadas vs Extrapoladas",
    subtitle = "Profilaxis con Letermovir vs Placebo",
    x = "Semanas",
    y = "%",
    color = "Grupo/Modelo",
    shape = "Grupo/Modelo",
    linetype = "Grupo/Modelo"
  ) +
  theme_minimal(base_size = 14) +
  scale_color_manual(values = color_values) +
  scale_shape_manual(values = shape_values) +
  scale_linetype_manual(values = linetype_values) +
  # Eliminar leyendas redundantes
  guides(
    color = guide_legend(order = 1),
    shape = "none", # Elimina la leyenda de formas
    linetype = "none" # Elimina la leyenda de tipos de línea
  ) +
  coord_cartesian(xlim = c(0, 54), ylim = c(0, 1))

# consolidando las curvas extrapoladas y reales

curvas_sobrevida_sin_infeccion <- data.frame(
  semana = c(0:52),
  ics_placebo = c(curvas_sobrevida_sin_infeccion$ics_placebo,semanas_extrap$weibull_placebo[26:53]),
  ics_letermovir = c(curvas_sobrevida_sin_infeccion$ics_letermovir,semanas_extrap$weibull_leter[26:53])
)

# junto todas las curvas

curvas_consolidado <- left_join(curvas_sobrevida,curvas_sobrevida_sin_infeccion)

# Cálculo de la diferencia de pacientes entre semanas para cada variable del flujo de pacientes

curvas_consolidado <- curvas_consolidado %>%
  mutate(
    dif_pacientes_vivos_letermovir = abs(c(0, diff(muertes_letermovir))),
    dif_pacientes_libres_infeccion_letermovir = abs(c(0, diff(ics_letermovir))),
    dif_pacientes_vivos_placebo = abs(c(0, diff(muertes_placebo))),
    dif_pacientes_libres_infeccion_placebo = abs(c(0, diff(ics_placebo)))
  )

4 Costos

Se calculan los costos semanales de los tratamientos y del seguimiento de los pacientes para el año 2025 en ambas ramas.

# COSTOS---------------------------------------------------------------------------

## costos tratamientos -----------------------------------------------------------------------
costo_ganciclovir <- (parametros_tratamiento$ganciclovir$dosis * parametros_tratamiento$peso_promedio * 2 / parametros_tratamiento$ganciclovir$presentacion) *
  parametros_tratamiento$ganciclovir$costo_por_vial * parametros_tratamiento$duracion_tratamiento  # Dos dosis al día durante dos semanas

costo_valganciclovir <- (parametros_tratamiento$valganciclovir$dosis * 2 / parametros_tratamiento$valganciclovir$presentacion) *
  (parametros_tratamiento$valganciclovir$costo_por_presentacion / 60) * parametros_tratamiento$duracion_tratamiento  # Dos dosis al día durante dos semanas

costo_foscarnet <- (parametros_tratamiento$foscarnet$dosis * parametros_tratamiento$peso_promedio * 2 / parametros_tratamiento$foscarnet$presentacion) *
  parametros_tratamiento$foscarnet$costo_por_presentacion * parametros_tratamiento$duracion_tratamiento  # Dos dosis al día durante dos semanas

# Cálculo de costo para cada presentación de Letermovir por semana
costo_letermovir_240mg_28_semana <- (parametros_tratamiento$letermovir$dosis / parametros_tratamiento$letermovir$presentacion_240mg_28 ) * (parametros_tratamiento$letermovir$costo_240mg_28 / parametros_tratamiento$letermovir$unidades_240mg_28) * 7
costo_letermovir_480mg_28_semana <- (parametros_tratamiento$letermovir$dosis / parametros_tratamiento$letermovir$presentacion_480mg_28) * (parametros_tratamiento$letermovir$costo_480mg_28 / parametros_tratamiento$letermovir$unidades_480mg_28) * 7
costo_letermovir_240mg_1_semana <- (parametros_tratamiento$letermovir$dosis / parametros_tratamiento$letermovir$presentacion_240mg_1) * parametros_tratamiento$letermovir$costo_240mg_1 * 7
costo_letermovir_480mg_1_semana <- (parametros_tratamiento$letermovir$dosis / parametros_tratamiento$letermovir$presentacion_480mg_1) * parametros_tratamiento$letermovir$costo_480mg_1 * 7

## costos de segumiento----------------------------------------------------------------------

# Cálculo de costos por seguimiento

costo_pcr_total <- seguimiento_pcr_semanal$frecuencia_semanal * seguimiento_pcr_semanal$costo_unitario * semanas_pcr_semanal + seguimiento_pcr_quincenal$frecuencia_semanal * seguimiento_pcr_quincenal$costo_unitario * semanas_pcr_quincenal

costo_visita_especialista_total <- seguimiento_visita_especialista$frecuencia_semanal * seguimiento_visita_especialista$costo_unitario * semanas_visita_especialista

costo_hemograma_total  <- seguimiento_hemograma$frecuencia_semanal  * seguimiento_hemograma$costo_unitario  * semanas_hemograma

costo_bioquimica_total <- seguimiento_bioquimica$frecuencia_semanal * seguimiento_bioquimica$costo_unitario * semanas_bioquímica

4.1 Costos escenario sin letermovir

En el escenario sin letermovir, se calculan los costos semanales de los tratamientos y del seguimiento de los pacientes para el año 2025 suponiendo que no se utiliza letermovir en el total de la población objetivo.

# MUNDO SIN LETERMOVIR----------------------------------------------------------

#año 2025-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2025 <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2025[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2025
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2025 <- flujo_pacientes_costos_2025 %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2025 <- flujo_pacientes_costos_2025 %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2025 <- flujo_pacientes_costos_2025 %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario
costo_infecciones_oportunistas_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario
costo_enfermedad_renal_aguda_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario
costo_eich_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario
costo_rehospitalizacion_placebo_2025 <-  poblacion_objetivo_2025 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario
costo_enfermedad_cmv_placebo_2025 <-  poblacion_objetivo_2025 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario
costo_eventos_adversos_placebo_2025 <- costo_neutropenia_placebo_2025 + costo_infecciones_oportunistas_placebo_2025 + costo_enfermedad_renal_aguda_placebo_2025 + costo_eich_placebo_2025 + costo_rehospitalizacion_placebo_2025 + costo_enfermedad_cmv_placebo_2025
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2025 <- flujo_pacientes_costos_2025 %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2025 / (nrow(flujo_pacientes_costos_2025) - 1)
  )
#quito la primera fila
flujo_pacientes_costos_2025 <- flujo_pacientes_costos_2025[-1,]
#año 2026-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2026 <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2026[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2026
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2026 <- flujo_pacientes_costos_2026 %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2026 <- flujo_pacientes_costos_2026 %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2026 <- flujo_pacientes_costos_2026 %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario
costo_infecciones_oportunistas_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario
costo_enfermedad_renal_aguda_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario
costo_eich_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario
costo_rehospitalizacion_placebo_2026 <-  poblacion_objetivo_2026 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario
costo_enfermedad_cmv_placebo_2026 <-  poblacion_objetivo_2026 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario
costo_eventos_adversos_placebo_2026 <- costo_neutropenia_placebo_2026 + costo_infecciones_oportunistas_placebo_2026 + costo_enfermedad_renal_aguda_placebo_2026 + costo_eich_placebo_2026 + costo_rehospitalizacion_placebo_2026 + costo_enfermedad_cmv_placebo_2026
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2026 <- flujo_pacientes_costos_2026 %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2026 / (nrow(flujo_pacientes_costos_2026) - 1)
  )
#quito la primera fila
flujo_pacientes_costos_2026 <- flujo_pacientes_costos_2026[-1,]
#año 2027-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2027 <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2027[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2027 
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2027 <- flujo_pacientes_costos_2027 %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2027 <- flujo_pacientes_costos_2027 %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2027 <- flujo_pacientes_costos_2027 %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario
costo_infecciones_oportunistas_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario
costo_enfermedad_renal_aguda_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario
costo_eich_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario
costo_rehospitalizacion_placebo_2027 <-  poblacion_objetivo_2027 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario
costo_enfermedad_cmv_placebo_2027 <-  poblacion_objetivo_2027 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario
costo_eventos_adversos_placebo_2027 <- costo_neutropenia_placebo_2027 + costo_infecciones_oportunistas_placebo_2027 + costo_enfermedad_renal_aguda_placebo_2027 + costo_eich_placebo_2027 + costo_rehospitalizacion_placebo_2027 + costo_enfermedad_cmv_placebo_2027
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2027 <- flujo_pacientes_costos_2027 %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2027 / (nrow(flujo_pacientes_costos_2027) - 1)
  )
#quito la primera fila
flujo_pacientes_costos_2027 <- flujo_pacientes_costos_2027[-1,]

4.2 Costos escenario con letermovir

En en esceario con letermovir, se calculan los costos semanales de los tratamientos y del seguimiento de los pacientes para el año 2025 suponiendo que se utiliza letermovir en el total de la población objetivo asignandole una cuota de mercado del total de la población objetivo. Esta aumenta progresivamente a lo largo de los años.

# ESCENARIO CON LETERMOVIR----------------------------------------------------------

#año 2025-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2025_con <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2025_con[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2025 * cuota_letermo_2025
## costos rama con letermovir---------------------------------------------------
### tratamiento letermovir------------------------------------------------------
#armo el flujo de pacientes de letermovir
# Crear la columna flujo_pacientes_letermovir, con un 0 al inicio y valores durante el tratamiento
flujo_pacientes_costos_2025_con$flujo_pacientes_letermovir <- c(
  0, 
  flujo_pacientes_costos_2025_con$ics_letermovir[c(1:parametros_tratamiento$duracion_letermovir)], 
  rep(0, nrow(flujo_pacientes_costos_2025_con) - parametros_tratamiento$duracion_letermovir - 1)
)
# Calcular el costo del tratamiento con letermovir
costo_letermovir_2025 <- flujo_pacientes_costos_2025_con$flujo_pacientes_letermovir * costo_letermovir_240mg_28_semana
# Agregar el costo al DataFrame
flujo_pacientes_costos_2025_con$costo_trat_letermovir <- costo_letermovir_2025
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2025_con <- flujo_pacientes_costos_2025_con %>%
  mutate(
    costo_tratamiento_cmv_ics_letermovir = dif_pacientes_libres_infeccion_letermovir * (proporciones$proporcion_ganciclovir *costo_ganciclovir + proporciones$proporcion_valganciclovir *costo_valganciclovir + proporciones$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2025_con <- flujo_pacientes_costos_2025_con %>%
  mutate(
    costo_tratamientos_con_letermovir_flujo = costo_tratamiento_cmv_ics_letermovir+costo_trat_letermovir
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2025_con <- flujo_pacientes_costos_2025_con %>%
  mutate(
    costo_pcr_letermovir = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= seguimiento_pcr_semanal$duracion ~ (muertes_letermovir * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
          dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_semanal$costo_unitario) ,
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_letermovir*seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_quincenal$costo_unitario ) 
    ),
    costo_visita_especialista_letermovir = muertes_letermovir *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_letermovir           = muertes_letermovir *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_letermovir          = muertes_letermovir *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_letermovir   = costo_pcr_letermovir +
      costo_visita_especialista_letermovir +
      costo_hemograma_letermovir +
      costo_bioquimica_letermovir
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_letermovir_2025 <- poblacion_objetivo_2025 * eventos_adversos$neutropenia$probabilidad_letermovir * eventos_adversos$neutropenia$costo_unitario*cuota_letermo_2025
costo_infecciones_oportunistas_letermovir_2025 <- poblacion_objetivo_2025 * eventos_adversos$infecciones_oportunistas$probabilidad_letermovir * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_letermo_2025
costo_enfermedad_renal_aguda_letermovir_2025 <- poblacion_objetivo_2025 * eventos_adversos$enfermedad_renal_aguda$probabilidad_letermovir * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_letermo_2025
costo_eich_letermovir_2025 <- poblacion_objetivo_2025 * eventos_adversos$eich$probabilidad_letermovir * eventos_adversos$eich$costo_unitario*cuota_letermo_2025
costo_rehospitalizacion_letermovir_2025 <-  poblacion_objetivo_2025 * eventos_adversos$rehospitalizaciones$probabilidad_letermovir * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_letermo_2025
costo_enfermedad_cmv_letermovir_2025 <-  poblacion_objetivo_2025 * eventos_adversos$enfermedad_cmv$probabilidad_letermovir * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_letermo_2025
costo_eventos_adversos_letermovir_2025 <- costo_neutropenia_letermovir_2025 + costo_infecciones_oportunistas_letermovir_2025 + costo_enfermedad_renal_aguda_letermovir_2025 + costo_eich_letermovir_2025 + costo_rehospitalizacion_letermovir_2025 + costo_enfermedad_cmv_letermovir_2025
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2025_con <- flujo_pacientes_costos_2025_con %>%
  mutate(
    costo_neutropenia_letermovir_flujo = costo_neutropenia_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    costo_infecciones_oportunistas_letermovir_flujo = costo_infecciones_oportunistas_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    costo_enfermedad_renal_aguda_letermovir_flujo = costo_enfermedad_renal_aguda_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    costo_eich_letermovir_flujo = costo_eich_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    costo_rehospitalizacion_letermovir_flujo = costo_rehospitalizacion_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    costo_enfermedad_cmv_letermovir_flujo = costo_enfermedad_cmv_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_con_letermovir_flujo = costo_eventos_adversos_letermovir_2025 / (nrow(flujo_pacientes_costos_2025_con) - 1)
  )
## costos rama sin letermovir---------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2025_sin <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2025_sin[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2025 * cuota_sinletermo_2025
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario*cuota_sinletermo_2025
costo_infecciones_oportunistas_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_sinletermo_2025
costo_enfermedad_renal_aguda_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_sinletermo_2025
costo_eich_placebo_2025 <- poblacion_objetivo_2025 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario*cuota_sinletermo_2025
costo_rehospitalizacion_placebo_2025 <-  poblacion_objetivo_2025 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_sinletermo_2025
costo_enfermedad_cmv_placebo_2025 <-  poblacion_objetivo_2025 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_sinletermo_2025
costo_eventos_adversos_placebo_2025 <- costo_neutropenia_placebo_2025 + costo_infecciones_oportunistas_placebo_2025 + costo_enfermedad_renal_aguda_placebo_2025 + costo_eich_placebo_2025 + costo_rehospitalizacion_placebo_2025 + costo_enfermedad_cmv_placebo_2025
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2025 / (nrow(flujo_pacientes_costos_2025_sin) - 1)
  )
## Consolidación anual---------------------------------------------------
#agrego las columnas que le faltan a flujo_pacientes_costos_2025_sin
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin %>%
  mutate(
    flujo_pacientes_letermovir = rep(0),
    costo_trat_letermovir = rep(0),
  )
#ordeno de la misma manera que en flujo_pacientes_costos_2025_con
flujo_pacientes_costos_2025_sin <- flujo_pacientes_costos_2025_sin[,c(1:9,24,25,10:23)]
#sumo ambos data frames menos en la columna semana
# Suponiendo que ambos DF tienen la misma cantidad de filas
# y que la columna 'semana' está en el mismo orden en ambos.
flujo_pacientes_costos_2025_tot <- cbind(
  semana = flujo_pacientes_costos_2025_con$semana,
  # Sumamos todas las columnas excepto 'semana'
  flujo_pacientes_costos_2025_con %>% select(-semana) +
    flujo_pacientes_costos_2025_sin %>% select(-semana)
)
#le quito la primera fila
flujo_pacientes_costos_2025_tot <- flujo_pacientes_costos_2025_tot[-1,]

#año 2026-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2026_con <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2026_con[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2026 * cuota_letermo_2026
## costos rama con letermovir---------------------------------------------------
### tratamiento letermovir------------------------------------------------------
#armo el flujo de pacientes de letermovir
# Crear la columna flujo_pacientes_letermovir, con un 0 al inicio y valores durante el tratamiento
flujo_pacientes_costos_2026_con$flujo_pacientes_letermovir <- c(
  0, 
  flujo_pacientes_costos_2026_con$ics_letermovir[c(1:parametros_tratamiento$duracion_letermovir)], 
  rep(0, nrow(flujo_pacientes_costos_2026_con) - parametros_tratamiento$duracion_letermovir - 1)
)
# Calcular el costo del tratamiento con letermovir
costo_letermovir_2026 <- flujo_pacientes_costos_2026_con$flujo_pacientes_letermovir * costo_letermovir_240mg_28_semana
# Agregar el costo al DataFrame
flujo_pacientes_costos_2026_con$costo_trat_letermovir <- costo_letermovir_2026
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2026_con <- flujo_pacientes_costos_2026_con %>%
  mutate(
    costo_tratamiento_cmv_ics_letermovir = dif_pacientes_libres_infeccion_letermovir * (proporciones$proporcion_ganciclovir *costo_ganciclovir + proporciones$proporcion_valganciclovir *costo_valganciclovir + proporciones$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2026_con <- flujo_pacientes_costos_2026_con %>%
  mutate(
    costo_tratamientos_con_letermovir_flujo = costo_tratamiento_cmv_ics_letermovir+costo_trat_letermovir
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2026_con <- flujo_pacientes_costos_2026_con %>%
  mutate(
    costo_pcr_letermovir = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= seguimiento_pcr_semanal$duracion ~ (muertes_letermovir * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
          dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_semanal$costo_unitario) ,
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_letermovir*seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_quincenal$costo_unitario )
    ),
    costo_visita_especialista_letermovir = muertes_letermovir *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_letermovir           = muertes_letermovir *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_letermovir          = muertes_letermovir *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_letermovir   = costo_pcr_letermovir +
      costo_visita_especialista_letermovir +
      costo_hemograma_letermovir +
      costo_bioquimica_letermovir
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_letermovir_2026 <- poblacion_objetivo_2026 * eventos_adversos$neutropenia$probabilidad_letermovir * eventos_adversos$neutropenia$costo_unitario*cuota_letermo_2026
costo_infecciones_oportunistas_letermovir_2026 <- poblacion_objetivo_2026 * eventos_adversos$infecciones_oportunistas$probabilidad_letermovir * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_letermo_2026
costo_enfermedad_renal_aguda_letermovir_2026 <- poblacion_objetivo_2026 * eventos_adversos$enfermedad_renal_aguda$probabilidad_letermovir * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_letermo_2026
costo_eich_letermovir_2026 <- poblacion_objetivo_2026 * eventos_adversos$eich$probabilidad_letermovir * eventos_adversos$eich$costo_unitario*cuota_letermo_2026
costo_rehospitalizacion_letermovir_2026 <-  poblacion_objetivo_2026 * eventos_adversos$rehospitalizaciones$probabilidad_letermovir * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_letermo_2026
costo_enfermedad_cmv_letermovir_2026 <-  poblacion_objetivo_2026 * eventos_adversos$enfermedad_cmv$probabilidad_letermovir * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_letermo_2026
costo_eventos_adversos_letermovir_2026 <- costo_neutropenia_letermovir_2026 + costo_infecciones_oportunistas_letermovir_2026 + costo_enfermedad_renal_aguda_letermovir_2026 + costo_eich_letermovir_2026 + costo_rehospitalizacion_letermovir_2026 + costo_enfermedad_cmv_letermovir_2026
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2026_con <- flujo_pacientes_costos_2026_con %>%
  mutate(
    costo_neutropenia_letermovir_flujo = costo_neutropenia_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    costo_infecciones_oportunistas_letermovir_flujo = costo_infecciones_oportunistas_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    costo_enfermedad_renal_aguda_letermovir_flujo = costo_enfermedad_renal_aguda_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    costo_eich_letermovir_flujo = costo_eich_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    costo_rehospitalizacion_letermovir_flujo = costo_rehospitalizacion_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    costo_enfermedad_cmv_letermovir_flujo = costo_enfermedad_cmv_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1),
    
    # Finalmente, el costo total:
    costo_total_eventos_adversos_con_letermovir_flujo = costo_eventos_adversos_letermovir_2026 / (nrow(flujo_pacientes_costos_2026_con) - 1)
  )
## costos rama sin letermovir---------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2026_sin <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2026_sin[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2026 * cuota_sinletermo_2026
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario*cuota_sinletermo_2026
costo_infecciones_oportunistas_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_sinletermo_2026
costo_enfermedad_renal_aguda_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_sinletermo_2026
costo_eich_placebo_2026 <- poblacion_objetivo_2026 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario*cuota_sinletermo_2026
costo_rehospitalizacion_placebo_2026 <-  poblacion_objetivo_2026 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_sinletermo_2026
costo_enfermedad_cmv_placebo_2026 <-  poblacion_objetivo_2026 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_sinletermo_2026
costo_eventos_adversos_placebo_2026 <- costo_neutropenia_placebo_2026 + costo_infecciones_oportunistas_placebo_2026 + costo_enfermedad_renal_aguda_placebo_2026 + costo_eich_placebo_2026 + costo_rehospitalizacion_placebo_2026 + costo_enfermedad_cmv_placebo_2026
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2026 / (nrow(flujo_pacientes_costos_2026_sin) - 1)
  )
## Consolidación anual---------------------------------------------------
#agrego las columnas que le faltan a flujo_pacientes_costos_2026_sin
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin %>%
  mutate(
    flujo_pacientes_letermovir = rep(0),
    costo_trat_letermovir = rep(0),
  )
#ordeno de la misma manera que en flujo_pacientes_costos_2026_con
flujo_pacientes_costos_2026_sin <- flujo_pacientes_costos_2026_sin[,c(1:9,24,25,10:23)]
#sumo ambos data frames menos en la columna semana
# Suponiendo que ambos DF tienen la misma cantidad de filas
# y que la columna 'semana' está en el mismo orden en ambos.
flujo_pacientes_costos_2026_tot <- cbind(
  semana = flujo_pacientes_costos_2026_con$semana,
  # Sumamos todas las columnas excepto 'semana'
  flujo_pacientes_costos_2026_con %>% select(-semana) +
    flujo_pacientes_costos_2026_sin %>% select(-semana)
)
#le quito la primera fila
flujo_pacientes_costos_2026_tot <- flujo_pacientes_costos_2026_tot[-1,]

#año 2027-----------------------------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2027_con <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2027_con[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2027 * cuota_letermo_2027
## costos rama con letermovir---------------------------------------------------
### tratamiento letermovir------------------------------------------------------
#armo el flujo de pacientes de letermovir
# Crear la columna flujo_pacientes_letermovir, con un 0 al inicio y valores durante el tratamiento
flujo_pacientes_costos_2027_con$flujo_pacientes_letermovir <- c(
  0, 
  flujo_pacientes_costos_2027_con$ics_letermovir[c(1:parametros_tratamiento$duracion_letermovir)], 
  rep(0, nrow(flujo_pacientes_costos_2027_con) - parametros_tratamiento$duracion_letermovir - 1)
)
# Calcular el costo del tratamiento con letermovir
costo_letermovir_2027 <- flujo_pacientes_costos_2027_con$flujo_pacientes_letermovir * costo_letermovir_240mg_28_semana
# Agregar el costo al DataFrame
flujo_pacientes_costos_2027_con$costo_trat_letermovir <- costo_letermovir_2027
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2027_con <- flujo_pacientes_costos_2027_con %>%
  mutate(
    costo_tratamiento_cmv_ics_letermovir = dif_pacientes_libres_infeccion_letermovir * (proporciones$proporcion_ganciclovir *costo_ganciclovir + proporciones$proporcion_valganciclovir *costo_valganciclovir + proporciones$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2027_con <- flujo_pacientes_costos_2027_con %>%
  mutate(
    costo_tratamientos_con_letermovir_flujo = costo_tratamiento_cmv_ics_letermovir+costo_trat_letermovir
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2027_con <- flujo_pacientes_costos_2027_con %>%
  mutate(
    costo_pcr_letermovir = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= seguimiento_pcr_semanal$duracion ~ (muertes_letermovir * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
          dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_semanal$costo_unitario) ,
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_letermovir*seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_letermovir * seguimiento_pcr_quincenal$costo_unitario )
    ),
    costo_visita_especialista_letermovir = muertes_letermovir *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_letermovir           = muertes_letermovir *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_letermovir          = muertes_letermovir *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_letermovir   = costo_pcr_letermovir +
      costo_visita_especialista_letermovir +
      costo_hemograma_letermovir +
      costo_bioquimica_letermovir
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_letermovir_2027 <- poblacion_objetivo_2027 * eventos_adversos$neutropenia$probabilidad_letermovir * eventos_adversos$neutropenia$costo_unitario*cuota_letermo_2027
costo_infecciones_oportunistas_letermovir_2027 <- poblacion_objetivo_2027 * eventos_adversos$infecciones_oportunistas$probabilidad_letermovir * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_letermo_2027
costo_enfermedad_renal_aguda_letermovir_2027 <- poblacion_objetivo_2027 * eventos_adversos$enfermedad_renal_aguda$probabilidad_letermovir * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_letermo_2027
costo_eich_letermovir_2027 <- poblacion_objetivo_2027 * eventos_adversos$eich$probabilidad_letermovir * eventos_adversos$eich$costo_unitario*cuota_letermo_2027
costo_rehospitalizacion_letermovir_2027 <-  poblacion_objetivo_2027 * eventos_adversos$rehospitalizaciones$probabilidad_letermovir * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_letermo_2027
costo_enfermedad_cmv_letermovir_2027 <-  poblacion_objetivo_2027 * eventos_adversos$enfermedad_cmv$probabilidad_letermovir * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_letermo_2027
costo_eventos_adversos_letermovir_2027 <- costo_neutropenia_letermovir_2027 + costo_infecciones_oportunistas_letermovir_2027 + costo_enfermedad_renal_aguda_letermovir_2027 + costo_eich_letermovir_2027 + costo_rehospitalizacion_letermovir_2027 + costo_enfermedad_cmv_letermovir_2027
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2027_con <- flujo_pacientes_costos_2027_con %>%
  mutate(
    costo_neutropenia_letermovir_flujo = costo_neutropenia_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    costo_infecciones_oportunistas_letermovir_flujo = costo_infecciones_oportunistas_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    costo_enfermedad_renal_aguda_letermovir_flujo = costo_enfermedad_renal_aguda_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    costo_eich_letermovir_flujo = costo_eich_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    costo_rehospitalizacion_letermovir_flujo = costo_rehospitalizacion_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    costo_enfermedad_cmv_letermovir_flujo = costo_enfermedad_cmv_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1),
    
    # Finalmente, el costo total:
    costo_total_eventos_adversos_con_letermovir_flujo = costo_eventos_adversos_letermovir_2027 / (nrow(flujo_pacientes_costos_2027_con) - 1)
  )
## costos rama sin letermovir---------------------------------------------------
# Copiar el DataFrame original
flujo_pacientes_costos_2027_sin <- curvas_consolidado
# Multiplicar todas las columnas excepto la primera ("semana") por los dos valores
flujo_pacientes_costos_2027_sin[-1] <- curvas_consolidado[-1] * poblacion_objetivo_2027 * cuota_sinletermo_2027
### tratamiento antivirales-----------------------------------------------------
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin %>%
  mutate(
    costo_tratamiento_cmv_ics_placebo = dif_pacientes_libres_infeccion_placebo * (proporciones_sin_letermovir$proporcion_ganciclovir *costo_ganciclovir + proporciones_sin_letermovir$proporcion_valganciclovir *costo_valganciclovir + proporciones_sin_letermovir$proporcion_foscarnet *costo_foscarnet)
  )
# armo una variable con los costos de los tratamientos
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin %>%
  mutate(
    costo_tratamientos_sin_letermovir_flujo = costo_tratamiento_cmv_ics_placebo
  )
### seguimiento-----------------------------------------------------------------
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin %>%
  mutate(
    costo_pcr_placebo = case_when(
      # Semanas == 0: no hay costo
      semana == 0 ~ 0,
      # Semanas de 1 a 14 (seguimiento semanal):
      semana >= 1 & semana <= 14 ~ (muertes_placebo * seguimiento_pcr_semanal$costo_unitario * seguimiento_pcr_semanal$frecuencia_semanal +
        dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_semanal$costo_unitario),
      # Semanas posteriores a la 14 (seguimiento quincenal):
      TRUE ~ (muertes_placebo * seguimiento_pcr_quincenal$costo_unitario * seguimiento_pcr_quincenal$frecuencia_semanal +
                dif_pacientes_libres_infeccion_placebo * seguimiento_pcr_quincenal$costo_unitario) 
    ),
    costo_visita_especialista_placebo = muertes_placebo *
      seguimiento_visita_especialista$costo_unitario *
      seguimiento_visita_especialista$frecuencia_semanal,
    costo_hemograma_placebo           = muertes_placebo *
      seguimiento_hemograma$costo_unitario *
      seguimiento_hemograma$frecuencia_semanal,
    costo_bioquimica_placebo          = muertes_placebo *
      seguimiento_bioquimica$costo_unitario *
      seguimiento_bioquimica$frecuencia_semanal,
    costo_total_seguimiento_placebo   = costo_pcr_placebo +
      costo_visita_especialista_placebo +
      costo_hemograma_placebo +
      costo_bioquimica_placebo
  )
### eventos adversos------------------------------------------------------------
costo_neutropenia_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$neutropenia$probabilidad_solo_msc * eventos_adversos$neutropenia$costo_unitario*cuota_sinletermo_2027
costo_infecciones_oportunistas_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$infecciones_oportunistas$probabilidad_solo_msc * eventos_adversos$infecciones_oportunistas$costo_unitario*cuota_sinletermo_2027
costo_enfermedad_renal_aguda_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$enfermedad_renal_aguda$probabilidad_solo_msc * eventos_adversos$enfermedad_renal_aguda$costo_unitario*cuota_sinletermo_2027
costo_eich_placebo_2027 <- poblacion_objetivo_2027 * eventos_adversos$eich$probabilidad_solo_msc * eventos_adversos$eich$costo_unitario*cuota_sinletermo_2027
costo_rehospitalizacion_placebo_2027 <-  poblacion_objetivo_2027 * eventos_adversos$rehospitalizaciones$probabilidad_solo_msc * eventos_adversos$rehospitalizaciones$costo_unitario*cuota_sinletermo_2027
costo_enfermedad_cmv_placebo_2027 <-  poblacion_objetivo_2027 * eventos_adversos$enfermedad_cmv$probabilidad_solo_msc * eventos_adversos$enfermedad_cmv$costo_unitario*cuota_sinletermo_2027
costo_eventos_adversos_placebo_2027 <- costo_neutropenia_placebo_2027 + costo_infecciones_oportunistas_placebo_2027 + costo_enfermedad_renal_aguda_placebo_2027 + costo_eich_placebo_2027 + costo_rehospitalizacion_placebo_2027 + costo_enfermedad_cmv_placebo_2027
# armo la variable de eventos adversos en el flujo de pacientes
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin %>%
  mutate(
    costo_neutropenia_placebo_flujo = costo_neutropenia_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    costo_infecciones_oportunistas_placebo_flujo = costo_infecciones_oportunistas_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    costo_enfermedad_renal_aguda_placebo_flujo = costo_enfermedad_renal_aguda_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    costo_eich_placebo_flujo = costo_eich_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    costo_rehospitalizacion_placebo_flujo = costo_rehospitalizacion_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    costo_enfermedad_cmv_placebo_flujo = costo_enfermedad_cmv_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1),
    # Finalmente, el costo total:
    costo_total_eventos_adversos_sin_letermovir_flujo = costo_eventos_adversos_placebo_2027 / (nrow(flujo_pacientes_costos_2027_sin) - 1)
  )
## Consolidación anual---------------------------------------------------
#agrego las columnas que le faltan a flujo_pacientes_costos_2027_sin
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin %>%
  mutate(
    flujo_pacientes_letermovir = rep(0),
    costo_trat_letermovir = rep(0),
  )
#ordeno de la misma manera que en flujo_pacientes_costos_2027_con
flujo_pacientes_costos_2027_sin <- flujo_pacientes_costos_2027_sin[,c(1:9,24,25,10:23)]
#sumo ambos data frames menos en la columna semana
# Suponiendo que ambos DF tienen la misma cantidad de filas
# y que la columna 'semana' está en el mismo orden en ambos.
flujo_pacientes_costos_2027_tot <- cbind(
  semana = flujo_pacientes_costos_2027_con$semana,
  # Sumamos todas las columnas excepto 'semana'
  flujo_pacientes_costos_2027_con %>% select(-semana) +
    flujo_pacientes_costos_2027_sin %>% select(-semana)
)
#le quito la primera fila
flujo_pacientes_costos_2027_tot <- flujo_pacientes_costos_2027_tot[-1,]

5 Resultados y visualizaciones

A continuación, se presentan los resultados obtenidos del modelo y las visualizaciones correspondientes. En todos los casos los datos fueron expresados en USD, convertidos al tipo de cambio de la fecha de elaboración del documento.

# RESULTADOS--------------------------------------------------------------------
# sumo las columnas de cada flujo_pacientes_costos
# 2025 con letermovir
sum_costos_2025_mundo_con <- flujo_pacientes_costos_2025_tot %>%
  summarise_all(sum)
costos_2025_con <- sum_costos_2025_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2025_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2025_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2026 con letermovir
sum_costos_2026_mundo_con <- flujo_pacientes_costos_2026_tot %>%
  summarise_all(sum)
costos_2026_con <- sum_costos_2026_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2026_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2026_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2027 con letermovir
sum_costos_2027_mundo_con <- flujo_pacientes_costos_2027_tot %>%
  summarise_all(sum)
costos_2027_con <- sum_costos_2027_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2027_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2027_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2025 sin letermovir
sum_costos_2025_mundo_sin <- flujo_pacientes_costos_2025 %>%
  summarise_all(sum)
costos_2025_sin <- sum_costos_2025_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2025_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2025_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# 2026 sin letermovir
sum_costos_2026_mundo_sin <- flujo_pacientes_costos_2026 %>%
  summarise_all(sum)
costos_2026_sin <- sum_costos_2026_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2026_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2026_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# 2027 sin letermovir
sum_costos_2027_mundo_sin <- flujo_pacientes_costos_2027 %>%
  summarise_all(sum)
costos_2027_sin <- sum_costos_2027_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2027_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2027_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# Impacto presupuestario neto
#armo un data frame con costos mundo con y sin y impacto presupuestario neto por año
ipn <- data.frame(
  anio = c(2025, 2026, 2027),
  costo_mundo_con = c(costos_2025_con, costos_2026_con, costos_2027_con),
  costo_mundo_sin = c(costos_2025_sin, costos_2026_sin, costos_2027_sin),
  ipn = c(costos_2025_con - costos_2025_sin, costos_2026_con - costos_2026_sin, costos_2027_con - costos_2027_sin)
)


## Visualizaciones---------------------------------------------------------------

# Extraigo los totales por tipo de costo de cada año

result_2025_con <- flujo_pacientes_costos_2025_tot %>% select(semana,costo_trat_letermovir,costo_tratamiento_cmv_ics_letermovir, costo_total_seguimiento_letermovir, costo_total_eventos_adversos_con_letermovir_flujo)
result_2026_con <- flujo_pacientes_costos_2026_tot %>% select(semana,costo_trat_letermovir,costo_tratamiento_cmv_ics_letermovir, costo_total_seguimiento_letermovir, costo_total_eventos_adversos_con_letermovir_flujo)
result_2027_con <- flujo_pacientes_costos_2027_tot %>% select(semana,costo_trat_letermovir,costo_tratamiento_cmv_ics_letermovir, costo_total_seguimiento_letermovir, costo_total_eventos_adversos_con_letermovir_flujo)

result_2025_sin <- flujo_pacientes_costos_2025 %>% select(semana,costo_tratamiento_cmv_ics_placebo, costo_total_seguimiento_placebo, costo_total_eventos_adversos_sin_letermovir_flujo)
result_2026_sin <- flujo_pacientes_costos_2026 %>% select(semana,costo_tratamiento_cmv_ics_placebo, costo_total_seguimiento_placebo, costo_total_eventos_adversos_sin_letermovir_flujo)
result_2027_sin <- flujo_pacientes_costos_2027 %>% select(semana,costo_tratamiento_cmv_ics_placebo, costo_total_seguimiento_placebo, costo_total_eventos_adversos_sin_letermovir_flujo)

### gráfico costos totales por semana--------------------------------------------
#sumo todas las filas para encontrar el costo total por semana

result_2025_con_total <-  result_2025_con %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_con = sum(
      c_across(c(
        costo_trat_letermovir, 
        costo_tratamiento_cmv_ics_letermovir, 
        costo_total_seguimiento_letermovir, 
        costo_total_eventos_adversos_con_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()
result_2025_con_total <- result_2025_con_total %>% select(semana,costo_total_semana_con)

result_2026_con_total <-  result_2026_con %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_con = sum(
      c_across(c(
        costo_trat_letermovir, 
        costo_tratamiento_cmv_ics_letermovir, 
        costo_total_seguimiento_letermovir, 
        costo_total_eventos_adversos_con_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()
result_2026_con_total <- result_2026_con_total %>% select(semana,costo_total_semana_con)

result_2027_con_total <-  result_2027_con %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_con = sum(
      c_across(c(
        costo_trat_letermovir, 
        costo_tratamiento_cmv_ics_letermovir, 
        costo_total_seguimiento_letermovir, 
        costo_total_eventos_adversos_con_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()
result_2027_con_total <- result_2027_con_total %>% select(semana,costo_total_semana_con)

result_2025_sin_total <-  result_2025_sin %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_sin = sum(
      c_across(c(
        costo_tratamiento_cmv_ics_placebo, 
        costo_total_seguimiento_placebo, 
        costo_total_eventos_adversos_sin_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()
result_2025_sin_total <- result_2025_sin_total %>% select(semana,costo_total_semana_sin)

result_2026_sin_total <-  result_2026_sin %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_sin = sum(
      c_across(c(
        costo_tratamiento_cmv_ics_placebo, 
        costo_total_seguimiento_placebo, 
        costo_total_eventos_adversos_sin_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()
result_2026_sin_total <- result_2026_sin_total %>% select(semana,costo_total_semana_sin)

result_2027_sin_total <-  result_2027_sin %>%
  rowwise() %>% 
  mutate(
    costo_total_semana_sin = sum(
      c_across(c(
        costo_tratamiento_cmv_ics_placebo, 
        costo_total_seguimiento_placebo, 
        costo_total_eventos_adversos_sin_letermovir_flujo
      )),
      na.rm = TRUE
    )
  ) %>%
  ungroup()

result_2027_sin_total <- result_2027_sin_total %>% select(semana,costo_total_semana_sin)

#junto todo por año con join_left

result_2025_total <- left_join(result_2025_con_total,result_2025_sin_total, by = "semana")
result_2026_total <- left_join(result_2026_con_total,result_2026_sin_total, by = "semana")
result_2027_total <- left_join(result_2027_con_total,result_2027_sin_total, by = "semana")

#agrego su año a cada data frame

result_2025_total <- result_2025_total %>% mutate(anio = 2025)
result_2026_total <- result_2026_total %>% mutate(anio = 2026)
result_2027_total <- result_2027_total %>% mutate(anio = 2027)


#uso pivot_longer para pasar a formato largo

result_2025_total <- result_2025_total %>% pivot_longer(cols = -c(semana, anio), names_to = "tipo_costo", values_to = "costo")
result_2026_total <- result_2026_total %>% pivot_longer(cols = -c(semana, anio), names_to = "tipo_costo", values_to = "costo")
result_2027_total <- result_2027_total %>% pivot_longer(cols = -c(semana, anio), names_to = "tipo_costo", values_to = "costo")

#junto todo

result_total <- rbind(result_2025_total,result_2026_total,result_2027_total)

result_total$costo <- result_total$costo/tipo_de_cambio

#sumo todas las filas de cada data frame con y sin dejando la columna semana



#grafico de area superpuesto con el total de costos por semana de cada rama por semana facetado por anño

result_total <- result_total %>% mutate(anio = as.factor(anio))

graf_totales_sem <- ggplot(result_total, aes(x = semana, y = costo, fill = tipo_costo)) +
  # Quita el position_stack y usa position = "identity", 
  # más un alpha para que se transparenten
  geom_area(position = "identity", alpha = 0.7) +
  facet_wrap(~ anio) +
  labs(
    title = "Costos acumulados por tipo de costo",
    x = "Semana", 
    y = "Costo acumulado (USD)"
  ) +
  scale_y_continuous(labels = scales::comma) +
  scale_fill_brewer(
    name   = "Tipo de costo",
    labels = c(
      "costo_total"            = "Costo total",
      "costo_total_semana_con" = "Costo total con Letermovir",
      "costo_total_semana_sin" = "Costo total sin Letermovir"
    ),
    palette = "Set3"
  ) +
  theme_minimal()

### gráfico de diferencias de costos por semana---------------------------------
#armo un dataframe con las diferencias de costos entre una rama y la otra

dif_costos_2025 <- data.frame(
  semana = result_2025_con$semana,
  costo_tratamiento_cmv_ics = result_2025_con$costo_tratamiento_cmv_ics_letermovir - result_2025_sin$costo_tratamiento_cmv_ics_placebo,
  costo_total_seguimiento = result_2025_con$costo_total_seguimiento_letermovir - result_2025_sin$costo_total_seguimiento_placebo,
  costo_total_eventos_adversos = result_2025_con$costo_total_eventos_adversos_con_letermovir_flujo - result_2025_sin$costo_total_eventos_adversos_sin_letermovir_flujo
)

dif_costos_2026 <- data.frame(
  semana = result_2026_con$semana,
  costo_tratamiento_cmv_ics = result_2026_con$costo_tratamiento_cmv_ics_letermovir - result_2026_sin$costo_tratamiento_cmv_ics_placebo,
  costo_total_seguimiento = result_2026_con$costo_total_seguimiento_letermovir - result_2026_sin$costo_total_seguimiento_placebo,
  costo_total_eventos_adversos = result_2026_con$costo_total_eventos_adversos_con_letermovir_flujo - result_2026_sin$costo_total_eventos_adversos_sin_letermovir_flujo
)

dif_costos_2027 <- data.frame(
  semana = result_2027_con$semana,
  costo_tratamiento_cmv_ics = result_2027_con$costo_tratamiento_cmv_ics_letermovir - result_2027_sin$costo_tratamiento_cmv_ics_placebo,
  costo_total_seguimiento = result_2027_con$costo_total_seguimiento_letermovir - result_2027_sin$costo_total_seguimiento_placebo,
  costo_total_eventos_adversos = result_2027_con$costo_total_eventos_adversos_con_letermovir_flujo - result_2027_sin$costo_total_eventos_adversos_sin_letermovir_flujo
)

#paso a formato largo estos data frames

dif_costos_2025 <- dif_costos_2025 %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
dif_costos_2026 <- dif_costos_2026 %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
dif_costos_2027 <- dif_costos_2027 %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")

dif_costos_2025 <- dif_costos_2025 %>% mutate(anio = 2025)
dif_costos_2026 <- dif_costos_2026 %>% mutate(anio = 2026)
dif_costos_2027 <- dif_costos_2027 %>% mutate(anio = 2027)

dif_costos <- rbind(dif_costos_2025,dif_costos_2026,dif_costos_2027)

dif_costos$costo <- dif_costos$costo/tipo_de_cambio

#armo el grafico para las diferencias

dif_costos$tipo_costo <- factor(
  dif_costos$tipo_costo,
  levels = c(
    "costo_total_seguimiento",
    "costo_total_eventos_adversos",
    "costo_tratamiento_cmv_ics"
  )
)

graf_dif_sem_total <- ggplot(dif_costos, aes(x = semana, y = costo, fill = tipo_costo)) +
  geom_area(position = position_stack(reverse = TRUE)) +
  facet_wrap(~ anio) +
  labs(
    title = "Diferencia de costos acumulados por tipo de costo",
    x = "Semana", 
    y = "Diferencia de costos acumulados (USD)"
  ) +
  scale_y_continuous(labels = scales::comma) +
  scale_fill_brewer(
    name   = "Tipo de costo",
    labels = c(
      "costo_total_seguimiento"              = "Costo total seguimiento",
      "costo_total_eventos_adversos"   = "Costo total eventos adversos",
      "costo_tratamiento_cmv_ics"            = "Costo tratamiento CMV ICS"
    ),
    palette = "Set3"
  ) +
  theme_minimal()


### gráfico de area apilado-----------------------------------------------------

# creo grafico de area con ggplot para visualizar los costos totales por año de areas apliladas según el tipo de costo
#paso a formato largo con pivot longer
result_2025_con <- result_2025_con %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
result_2026_con <- result_2026_con %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
result_2027_con <- result_2027_con %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")

result_2025_sin <- result_2025_sin %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
result_2026_sin <- result_2026_sin %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")
result_2027_sin <- result_2027_sin %>% pivot_longer(cols = -semana, names_to = "tipo_costo", values_to = "costo")

result_2025_con <- result_2025_con %>% mutate(anio = 2025)
result_2026_con <- result_2026_con %>% mutate(anio = 2026)
result_2027_con <- result_2027_con %>% mutate(anio = 2027)

result_2025_sin <- result_2025_sin %>% mutate(anio = 2025)
result_2026_sin <- result_2026_sin %>% mutate(anio = 2026)
result_2027_sin <- result_2027_sin %>% mutate(anio = 2027)

result_con <- rbind(result_2025_con,result_2026_con,result_2027_con)
result_sin <- rbind(result_2025_sin,result_2026_sin,result_2027_sin)

result_con$costo <- result_con$costo/tipo_de_cambio
result_sin$costo <- result_sin$costo/tipo_de_cambio

#grafico de area con ggplot que que muestre los costos acumulados por tipo de costo (costo trat letermocir, costo cmv, costo seguimiento, costo eventos adversos) facetado por año

# 2) Define el factor en el orden “natural” (1 primero, 4 último):
result_con$tipo_costo <- factor(
  result_con$tipo_costo,
  levels = c(
    "costo_total_seguimiento_letermovir",
    "costo_total_eventos_adversos_con_letermovir_flujo",
    "costo_tratamiento_cmv_ics_letermovir",
    "costo_trat_letermovir"
    
  )
)

# 3) Ajusta el geom_area con “reverse=TRUE” si quieres que
#    el primer level aparezca abajo y el último arriba.
graf_area_apil_con <- ggplot(result_con, aes(x = semana, y = costo, fill = tipo_costo)) +
  geom_area(position = position_stack(reverse = TRUE)) +  # <-- ¡Ojo aquí!
  facet_wrap(~ anio) +
  labs(
    title = "Costos acumulados por tipo de costo con Letermovir",
    x = "Semana", 
    y = "Costo acumulado (USD)"
  ) +
  scale_y_continuous(labels = scales::comma) +
  scale_fill_brewer(
    name   = "Tipo de costo",
    labels = c(
      "costo_total_eventos_adversos_con_letermovir_flujo" = "Costo total eventos adversos",
      "costo_total_seguimiento_letermovir"                = "Costo total seguimiento",
      "costo_tratamiento_cmv_ics_letermovir"              = "Costo tratamiento CMV ICS",
      "costo_trat_letermovir"                             = "Costo tratamiento letermovir"
    ),
    palette = "Set3"
  ) +
  theme_minimal()

# sin letermovir

result_sin$tipo_costo <- factor(
  result_sin$tipo_costo,
  levels = c(
    "costo_total_seguimiento_placebo",
    "costo_total_eventos_adversos_sin_letermovir_flujo",
    "costo_tratamiento_cmv_ics_placebo"
  )
)

graf_area_apil_sin<- ggplot(result_sin, aes(x = semana, y = costo, fill = tipo_costo)) +
  geom_area(position = position_stack(reverse = TRUE)) +
  facet_wrap(~ anio) +
  labs(
    title = "Costos acumulados por tipo de costo sin Letermovir",
    x = "Semana", 
    y = "Costo acumulado (USD)"
  ) +
  scale_y_continuous(labels = scales::comma) +
  scale_fill_brewer(
    name   = "Tipo de costo",
    labels = c(
      "costo_total_seguimiento_placebo"              = "Costo total seguimiento",
      "costo_total_eventos_adversos_sin_letermovir_flujo"   = "Costo total eventos adversos",
      "costo_tratamiento_cmv_ics_placebo"            = "Costo tratamiento CMV ICS"
    ),
    palette = "Set3"
  ) +
  theme_minimal()


### gráfico de barras que muestre el impacto prespuestario neto por año---------

sum_costos_2025_mundo_con <- flujo_pacientes_costos_2025_tot %>%
  summarise_all(sum)
costos_2025_con <- sum_costos_2025_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2025_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2025_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2026 con letermovir
sum_costos_2026_mundo_con <- flujo_pacientes_costos_2026_tot %>%
  summarise_all(sum)
costos_2026_con <- sum_costos_2026_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2026_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2026_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2027 con letermovir
sum_costos_2027_mundo_con <- flujo_pacientes_costos_2027_tot %>%
  summarise_all(sum)
costos_2027_con <- sum_costos_2027_mundo_con$costo_tratamientos_con_letermovir_flujo + sum_costos_2027_mundo_con$costo_total_seguimiento_letermovir + sum_costos_2027_mundo_con$costo_total_eventos_adversos_con_letermovir_flujo
# 2025 sin letermovir
sum_costos_2025_mundo_sin <- flujo_pacientes_costos_2025 %>%
  summarise_all(sum)
costos_2025_sin <- sum_costos_2025_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2025_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2025_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# 2026 sin letermovir
sum_costos_2026_mundo_sin <- flujo_pacientes_costos_2026 %>%
  summarise_all(sum)
costos_2026_sin <- sum_costos_2026_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2026_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2026_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# 2027 sin letermovir
sum_costos_2027_mundo_sin <- flujo_pacientes_costos_2027 %>%
  summarise_all(sum)
costos_2027_sin <- sum_costos_2027_mundo_sin$costo_tratamientos_sin_letermovir_flujo + sum_costos_2027_mundo_sin$costo_total_seguimiento_placebo + sum_costos_2027_mundo_sin$costo_total_eventos_adversos_sin_letermovir_flujo
# Impacto presupuestario neto

#armo un data frame con costos mundo con y sin y impacto presupuestario neto por año
ipn <- data.frame(
  anio = c(2025, 2026, 2027),
  costo_mundo_con = c(costos_2025_con, costos_2026_con, costos_2027_con),
  costo_mundo_sin = c(costos_2025_sin, costos_2026_sin, costos_2027_sin),
  ipn = c(costos_2025_con - costos_2025_sin, costos_2026_con - costos_2026_sin, costos_2027_con - costos_2027_sin)
)

# Asegurarte de que la fila "Promedio" se agrega correctamente
ipn <- rbind(ipn, data.frame(
  anio = "Promedio",
  costo_mundo_con = 0,
  costo_mundo_sin = 0,
  ipn = mean(ipn$ipn, na.rm = TRUE)
))
ipn$ipn <- ipn$ipn/tipo_de_cambio
# Convertir 'anio' a factor con niveles deseados
ipn$anio <- factor(ipn$anio, levels = c("2025", "2026", "2027", "Promedio"))

# Crear el gráfico con los umbrales
graf_bar <- ggplot(ipn, aes(x = anio, y = ipn)) +
  geom_bar(stat = "identity", fill = "#002040") +
  # Agregar texto encima de cada barra
  geom_text(
    aes(label = scales::comma(ipn)),
    vjust = -0.3,
    color = "#002040",
    size = 3,
    alpha = 0.7 # Añadir transparencia a las etiquetas
  ) +
  # Líneas horizontales para los umbrales con transparencia
  geom_hline(yintercept = umbral_bajo, color = "red", linetype = "dotted", size = 1, alpha = 0.7) +
  geom_hline(yintercept = umbral_medio, color = "red", linetype = "solid", size = 1, alpha = 0.7) +
  geom_hline(yintercept = umbral_alto, color = "red", linetype = "dotted", size = 1, alpha = 0.7) +
  labs(
    title = "Impacto presupuestario neto",
    x = "", 
    y = "Impacto presupuestario neto (USD)"
  ) +
  scale_y_continuous(labels = scales::comma) +
  theme_minimal()

5.1 Costos acumulados por tipo de costo (escenarios sin y con letermovir)

5.2 Diferencia de costos acumulados por tipo de costo

5.3 Costos acumulados por tipo de escenario

5.4 Impacto presupuestario neto