Exercise PK12 - Intravenous and oral dosing

2021-09-04

Background

To determine (oral) bioavailability, the drug is administered by both oral and intravenous route. The adminstration generally is done in crossover manner at different times separated by a washout period. But if the drug follows a time-dependant clearance (and if the washout period is long), then it may affect the results. To avoid this situation, the doses can be administered semi-simultaneously separated by a small time up to 1 hour.

In the current study, the test drug was administered orally followed a constant rate infusion (reference) for 15 mins at 60 mins .

  • Structural model - Two compartment model with first order absorption and elimination

  • Route of administration - Oral and IV given simultaneously

  • Dosage Regimen - 2.5 mg Oral and 0.5mg IV infusion of 15 mins

  • Number of Subjects - 1

PK12_Schematic illustration of two compartment

Learning Outcomes

This exercise will help to determine bioavailability of a compound administered semi-simultaneously by oral and intravenous route

Objectives

  • To build a two compartment model for semi-simultaneous oral and intravenous administration

  • To use final parameter estimates

  • To design semi-simultaneous dosage regimen

  • To simulate and plot a single subject with predefined time points.

Libraries

Call the "necessary" libraries to get started.

using Random
using Pumas
using PumasUtilities
using CairoMakie

Model

A two compartment model with oral absorption is build for a semi-simultaneous administration of oral dose followed by intravenous infusion.

pk_12           = @model begin
  @metadata begin
    desc        = "Two Compartment Model"
    timeu       = u"minute"
  end

  @param   begin
    "Absorption Rate Constant (min⁻¹)"
    tvka         RealDomain(lower=0)
    "Clearance (L/min/kg)"
    tvcl         RealDomain(lower=0)
    "Inter-compartmental distribution (L/kg)"
    tvq          RealDomain(lower=0)
    "Volume of Central Compartment (L/kg)"
    tvvc         RealDomain(lower=0)
    "Volume of Peripheral Compartment (L/kg)"
    tvvp         RealDomain(lower=0)
    "Lag time (min)"
    tvlag        RealDomain(lower=0)
    "Bioavailability"
    tvF          RealDomain(lower=0)
    Ω            PDiagDomain(7)
    "Proportional RUV"
    σ²_prop      RealDomain(lower=0)
  end

  @random begin
    η           ~ MvNormal(Ω)
  end

  @pre begin
    CL          = tvcl * exp(η[1])
    Q           = tvq * exp(η[2])
    Vc          = tvvc * exp(η[3])
    Vp          = tvvp * exp(η[4])
    Ka          = tvka * exp(η[5])
  end

  @dosecontrol begin
    lags        = (Depot = tvlag * exp(η[6]),)
    bioav       = (Depot = tvF * exp(η[7]),)
  end

  @dynamics Depots1Central1Periph1

  @derived begin
    cp          = @. 1000*(Central/Vc)
    """
    Observed Concentrations (ug/L)
    """
    dv          ~ @. Normal(cp, sqrt(cp^2*σ²_prop))
  end
end
PumasModel
  Parameters: tvka, tvcl, tvq, tvvc, tvvp, tvlag, tvF, Ω, σ²_prop
  Random effects: η
  Covariates: 
  Dynamical variables: Depot, Central, Peripheral
  Derived: cp, dv
  Observed: cp, dv

Parameters

  • $Ka$ - Absorption Rate Constant (min⁻¹)

  • $Cl$ - Clearance (L/min/kg)

  • $Q$ - Inter-compartmental distribution (L/kg)

  • $Vc$ - Volume of Central Compartment (L/kg)

  • $Vp$ - Volume of Peripheral Compartment (L/kg)

  • $lag$ - Lag time (min)

  • $F$ - Bioavailability

  • $σ$ - Residual Error

param  = (tvka    = 0.103,
          tvcl    = 0.015,
          tvq     = 0.021,
          tvvc    = 0.121,
          tvvp    = 0.276,
          tvlag   = 4.68,
          tvF     = 0.046,
          Ω       = Diagonal([0.0,0.0,0.0,0.0,0.0,0.0,0.0]),
          σ²_prop = 0.04)
(tvka = 0.103, tvcl = 0.015, tvq = 0.021, tvvc = 0.121, tvvp = 0.276, tvlag
 = 4.68, tvF = 0.046, Ω = [0.0 0.0 … 0.0 0.0; 0.0 0.0 … 0.0 0.0; … ; 0.0 0.
0 … 0.0 0.0; 0.0 0.0 … 0.0 0.0], σ²_prop = 0.04)

Dosage Regimen

Dosage Regimen = 2.5 mg/kg oraly followed by 15 min intravenous infusion of 0.5 mg/kg starting from 60 mins after oral dosing administered to a single subject (sub1)

ev_oral = DosageRegimen(2.5, time = 0, cmt = 1)
ev_inf  = DosageRegimen(0.5, time = 60, cmt = 2, duration = 15)
ev1     = DosageRegimen(ev_oral, ev_inf)
sub1    = Subject(id = 1, events = ev1, observations= (cp = nothing,))
Subject
  ID: 1
  Events: 3
  Observations: cp: (nothing)

Simulation

To simulate plasma concentrations with specific observation time points

Random.seed!(123)
sim_s1  = simobs(pk_12, sub1, param, obstimes = [6,10,15,20,30,45,60,63,66,75,80,90,107,119,134,150])

Visualization

sim_plot(pk_12, [sim_s1],
                   observations = :cp, 
                   linewidth = 4,
                   color = :maroon,
                   axis = (xlabel = "Time (min)",
                           ylabel="Concentration (ug/L)", 
                           yscale = log10, xticks = 0:20:160))