The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

A priori dose selection

library(posologyr)

Introduction

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))

A priori dose selection

Patient record

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:

df_patientA <- data.frame(ID=1,TIME=0,
                                DV=0,
                                EVID=0,
                                AMT=0,
                                CLCREAT4H=50,TBW=62,PoverF=169)
df_patientA
#>   ID TIME DV EVID AMT CLCREAT4H TBW PoverF
#> 1  1    0  0    0   0        50  62    169

Optimal dose selection

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] 80
#> 
#> $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

Time required to reach the target Cmin

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

Plotting the selected dosage

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.

plot(simu_patA$model,Cc)

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.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.