First dose selection for a critical care patient treated with amikacin for suspected ventilator-associated pneumonia. Population pharmacokinetic (ppk) model form Burdet et al. 2015.
mod_amikacin_Burdet2015 <- list(
ppk_model = rxode2::rxode({
centr(0) = 0;
TVCl = THETA_Cl*(CLCREAT4H/82)^0.7;
TVVc = THETA_Vc*(TBW/78)^0.9*(PoverF/169)^0.4;
TVVp = THETA_Vp;
TVQ = THETA_Q;
Cl = TVCl*exp(ETA_Cl);
Vc = TVVc*exp(ETA_Vc);
Vp = TVVp*exp(ETA_Vp);
Q = TVQ *exp(ETA_Q);
ke = Cl/Vc;
k12 = Q/Vc;
k21 = Q/Vp;
Cc = centr/Vc;
d/dt(centr) = - ke*centr - k12*centr + k21*periph;
d/dt(periph) = + k12*centr - k21*periph;
d/dt(AUC) = Cc;
}),
error_model = function(f,sigma){
g <- sigma[1] + sigma[2]*f
return(g)
},
theta = c(THETA_Cl=4.3, THETA_Vc=15.9, THETA_Vp=21.4,THETA_Q=12.1),
omega = lotri::lotri({ETA_Cl + ETA_Vc + ETA_Vp + ETA_Q ~
c(0.1,
0.01 , 0.05 ,
0.01 , 0.02 , 0.2 ,
-0.06 , 0.004, 0.003, 0.08)}),
covariates = c("CLCREAT4H","TBW","PoverF"),
sigma = c(additive_a = 0.2, proportional_b = 0.1))
Before the first administration, no concentration information is available. The patient record contains only the information required to fill in the covariates of the model:
In the absence of measured concentrations, the optimal dose in mg to achieve a concentration of 80 mg/l one hour after the start of the 30-minute infusion is determined from the typical profile of the ppk model.
prior_dose <- poso_dose_conc(dat=df_patientA,
prior_model=mod_amikacin_Burdet2015,
time_c = 1, #30 min after a
duration = 0.5, #30 min infusion
target_conc = 80)
prior_dose
#> $dose
#> [1] 2087.669
#>
#> $type_of_estimate
#> [1] "point estimate"
#>
#> $conc_estimate
#> [1] 0
#>
#> $indiv_param
#> THETA_Cl THETA_Vc THETA_Vp THETA_Q ETA_Cl ETA_Vc ETA_Vp
#> 1 4.3 15.9 21.4 12.1 2.025724e-07 6.573817e-08 2.011353e-07
#> ETA_Q CLCREAT4H TBW PoverF
#> 1 -1.163665e-07 50 62 169
Following this dose, the time in hours required to reach a target Cmin concentration of 2.5 mg/l can be estimated.
poso_time_cmin(dat=df_patientA,
prior_model=mod_amikacin_Burdet2015,
dose = prior_dose$dose,
duration = 0.5, #30 min infusion
target_cmin = 2.5)
#> $time
#> [1] 37.5
#>
#> $type_of_estimate
#> [1] "point estimate"
#>
#> $cmin_estimate
#> [1] 2.49637
#>
#> $indiv_param
#> THETA_Cl THETA_Vc THETA_Vp THETA_Q ETA_Cl ETA_Vc ETA_Vp
#> 1 4.3 15.9 21.4 12.1 -9.803026e-07 3.556777e-07 -3.567767e-07
#> ETA_Q CLCREAT4H TBW PoverF
#> 1 9.847164e-07 50 62 169
The selected dose can be simulated and plotted. By setting
n_simul = 0
, the poso_simu_pop()
function
produces a compiled rxode2
model without inter-individual
variability, using typical population parameter values and individual
covariates from the patient record.
# generate a model using the individual covariates
simu_patA <- poso_simu_pop(dat=df_patientA,
prior_model=mod_amikacin_Burdet2015,
n_simul = 0)
Observations and a 30-minutes infusion of the optimal dose are added
to the rxode2
model by updating the rxode2
event table.
simu_patA$model$time <- seq(0,20,b=0.1)
#> Warning: can not update object
simu_patA$model$add.dosing(dose=prior_dose$dose,rate=prior_dose$dose/0.5)
Plotting the simulated scenario.
The resulting plot can be further augmented with
ggplot2
. For example, by adding an horizontal ribbon
showing the 60-80 mg/l target interval of 1 h peak concentration, and a
vertical dashed line marking 1 hour.
plot(simu_patA$model,Cc) +
ggplot2::ylab("Central concentration") +
ggplot2::geom_vline(xintercept=1, linetype="dashed") +
ggplot2::geom_ribbon(ggplot2::aes(ymin=60, ymax=80),
fill="seagreen",show.legend = FALSE, alpha=0.15)
For a typical patient (i.e. with a PK profile typical of the model population), the selected dose meets the peak concentration target.