Skip to contents

Model and source

  • Citation: Favie LMA, Huitema ADR, van den Broek MPH, Rademaker CMA, de Haan TR, van Straaten HLM, Simons SHP, Rijken M, Nuytemans DHGM, Egberts TCG, Groenendaal F; PharmaCool study group. Lidocaine as treatment for neonatal seizures: Evaluation of previously developed population pharmacokinetic models and dosing regimen. Br J Clin Pharmacol. 2020;86(1):75-84. doi:10.1111/bcp.14136.
  • Description: One-compartment population PK model for intravenous lidocaine with a sequential one-compartment model for its metabolite monoethylglycinexylidide (MEGX) in preterm and (near-)term neonates treated for seizures, with and without therapeutic hypothermia (Favie 2020). All lidocaine elimination feeds the MEGX compartment; because the fraction converted to MEGX was unknown, the MEGX clearance and volume are apparent values relative to that fraction. Allometric body-weight scaling (fixed exponents 0.75 on clearance and 1 on volume, reference 3.5 kg) on all four disposition parameters, a linear postmenstrual-age effect on both clearances (reference 280 days = 40 weeks), and a linear time-varying body-temperature effect on lidocaine clearance only (reference 36.5 degC).
  • Article: https://doi.org/10.1111/bcp.14136 (open access, PMC6983510)

Favie et al. pooled lidocaine and MEGX concentrations from four Dutch neonatal cohorts to re-evaluate the earlier lidocaine population PK models of the same group and the weight-banded dosing regimen derived from them (Table 1 of the paper). The final model (Table 4) is a one-compartment lidocaine model feeding a one-compartment MEGX model, with allometric body-weight scaling, a linear postmenstrual-age (PMA) effect on both clearances and a linear body-temperature effect on lidocaine clearance that captures therapeutic hypothermia (TH).

Population

159 neonates (Table 3): gestational age (GA) 37.0 +/- 4.84 weeks, birth weight 2.89 +/- 1.05 kg, 86 (54.1%) male. 50 (31.4%) were preterm (GA < 36 weeks); 49 (30.8%) (near-)term neonates received TH for hypoxic-ischaemic encephalopathy. All received lidocaine as second- or third-line anticonvulsant for seizures refractory to midazolam and/or phenobarbital. The data came from clinical care cohort 1 (n = 46), the SHIVER study (n = 21), the PharmaCool study (n = 22) and clinical care cohort 2 (n = 70) (Table 2); 444 samples, LC-MS/MS LLQ 0.2 mg/L for both analytes. PMA spanned 25 to 42.7 weeks (Discussion).

Source trace

Model element Value Source
Structure: 1-cmt lidocaine -> 1-cmt MEGX – Methods 2.4 (‘a 1-compartment model for lidocaine with a consecutive 1-compartment model for MEGX’)
MEGX parameters relative to formation fraction F – Methods 2.4; Table 4 footnote a; final-model equations Cl_MEGX/F_MEGX, V_MEGX/F_MEGX
lcl log(1.77) L/h Table 4, Lidocaine Cl
lvc log(9.32) L Table 4, Lidocaine V
lcl_megx log(1.51) L/h Table 4, MEGX Cl
lvc_megx log(15.8) L Table 4, MEGX V
e_wt_cl, e_wt_cl_megx fixed 0.75, reference 3.5 kg Methods 2.4; Table 4 equations and footnote c
e_wt_vc, e_wt_vc_megx fixed 1, reference 3.5 kg Methods 2.4; Table 4 equations
e_page_cl 0.0069 per day about PMA 280 days Table 4 ‘PMA on Cl, %/d’ = 0.690; equation (1 + 0.0069 * (PMA - 280))
e_page_cl_megx 0.0035 per day about PMA 280 days Table 4 ‘PMA on Cl, %/d’ MEGX = 0.350; equation (1 + 0.0035 * (PMA - 280))
e_bodytemp_cl 0.0726 per degC about 36.5 degC Table 4 ‘TEMP on Cl’ = 7.26 %/degC; equation (1 + 0.0726 * (TEMP - 36.5)); MEGX ‘NA’
BODYTEMP profile 33.5 degC during TH, rewarming 0.4 degC/h, 36.5 degC otherwise Table 4 footnote d
etalcl, etalvc 0.231, 0.0673 Table 4 IIV Lidocaine (RSD 48.1%, 25.9% = sqrt of variance)
etalcl_megx, etalvc_megx 0.237, 0.478 Table 4 IIV MEGX (RSD 48.7%, 69.1%)
addSd, addSd_megx fixed 0.1 mg/L Table 4 ‘Additional, mg/L 0.1 (fixed)’; Methods 2.4 ‘additive error was fixed on LLQ/2’
propSd, propSd_megx sqrt(0.0379), sqrt(0.0550) Table 4 ‘Proportional, variance (RSD)’ (19.5%, 23.5%)
MEGX/lidocaine molar-mass ratio 206.29 / 234.34 Not in the paper: chemistry constants (C12H18N2O, C14H22N2O); needed because the paper’s analysis ran in umol

Typical-value checks against the paper’s own numbers

The Results text quotes three numbers that follow deterministically from the final-model equations. The model reproduces each from its own cl output.

mod <- readModelDb("Favie_2020_lidocaine")

typ_cov <- data.frame(
  id = 1:3,
  label = c(
    "3.5 kg, PMA 40 wk, normothermia",
    "1 kg, PMA 25 wk, normothermia",
    "3.5 kg, PMA 40 wk, hypothermia 33.5 degC"
  ),
  WT = c(3.5, 1, 3.5),
  PAGE = c(40, 25, 40),
  BODYTEMP = c(36.5, 36.5, 33.5)
)
typ_ev <- typ_cov |>
  dplyr::mutate(time = 0, amt = NA_real_, evid = 0L, cmt = "central", dvid = 1L)

typ <- rxode2::rxSolve(
  mod,
  events = typ_ev,
  omega = NA,
  sigma = NA,
  keep = "label",
  useLinCmt = FALSE
) |>
  as.data.frame()
#> ℹ parameter labels from comments will be replaced by 'label()'

typ |>
  dplyr::select(label, cl, vc, cl_megx, vc_megx) |>
  dplyr::rename(
    "Neonate" = label,
    "CL (L/h)" = cl,
    "V (L)" = vc,
    "CL_MEGX/F (L/h)" = cl_megx,
    "V_MEGX/F (L)" = vc_megx
  ) |>
  knitr::kable(digits = 3)
Neonate CL (L/h) V (L) CL_MEGX/F (L/h) V_MEGX/F (L)
3.5 kg, PMA 40 wk, normothermia 1.770 9.320 1.510 15.800
1 kg, PMA 25 wk, normothermia 0.191 2.663 0.373 4.514
3.5 kg, PMA 40 wk, hypothermia 33.5 degC 1.384 9.320 1.510 15.800

# Results 3.2: 'Average lidocaine clearance for a neonate of 3.5 kg at PMA 40
# weeks was 1.77 L/h ... whereas average lidocaine clearance for a neonate of
# 1 kg at PMA 25 weeks was 0.191 L/h' and 'During TH, lidocaine clearance was
# reduced by 21.8%'. These are closed-form functions of the typical values, so
# the bounds only need to absorb the paper's 3-significant-figure rounding.
th_reduction <- 1 - typ$cl[3] / typ$cl[1]
stopifnot(
  abs(typ$cl[1] - 1.77) < 0.005,
  abs(typ$cl[2] - 0.191) < 0.0005,
  abs(100 * th_reduction - 21.8) < 0.05
)

Mass-balance check of the metabolite coupling

At steady state under a constant lidocaine infusion R (mg/h base), lidocaine is R / CL and MEGX is R * (MW_MEGX / MW_lidocaine) / (CL_MEGX / F). The solve below (typical neonate, 5 mg/h for 300 h, i.e. about 40 MEGX half-lives) must reproduce both closed forms; it checks the parent-to-metabolite flux and the molar-mass conversion in model().

ss_ev <- rxode2::et(amt = 5 * 300, rate = 5, cmt = "central") |>
  rxode2::et(time = c(4, 300)) |>
  as.data.frame() |>
  dplyr::mutate(
    cmt = ifelse(evid == 0, "central", cmt),
    dvid = ifelse(evid == 0, 1L, NA_integer_),
    WT = 3.5,
    PAGE = 40,
    BODYTEMP = 36.5
  )
ss <- rxode2::rxSolve(
  mod,
  events = ss_ev,
  omega = NA,
  sigma = NA,
  rtol = 1e-10,
  atol = 1e-12,
  useLinCmt = FALSE
) |>
  as.data.frame()

cl_t <- 1.77
vc_t <- 9.32
cc_4h_closed <- 5 / cl_t * (1 - exp(-cl_t / vc_t * 4))
cc_ss_closed <- 5 / cl_t
megx_ss_closed <- 5 * (206.29 / 234.34) / 1.51

mb <- data.frame(
  quantity = c("Lidocaine at 4 h", "Lidocaine at steady state", "MEGX at steady state"),
  simulated = c(ss$Cc[ss$time == 4], ss$Cc[ss$time == 300], ss$Cc_megx[ss$time == 300]),
  closed_form = c(cc_4h_closed, cc_ss_closed, megx_ss_closed)
) |>
  dplyr::mutate(rel_err = simulated / closed_form - 1)
knitr::kable(mb, digits = 6)
quantity simulated closed_form rel_err
Lidocaine at 4 h 1.503313 1.503313 0
Lidocaine at steady state 2.824859 2.824859 0
MEGX at steady state 2.914908 2.914908 0
# Same typical parameters on both sides, so the difference is solver error
# only; at rtol 1e-10 it rounds to 0 at six decimals, far inside the bound.
stopifnot(all(abs(mb$rel_err) < 1e-6))

Virtual cohort for the dosing-regimen evaluation

Section 2.5 / 3.3 of the paper simulated the Table 1 regimen in 1113 virtual neonates (the 159 study neonates replicated 7 times). The individual covariates are not published, so the cohort below is reconstructed from the Table 3 summary (see Assumptions): 200 normothermic neonates, of whom 45% are preterm (50 of the 110 normothermic study neonates were preterm; TH neonates were all term), and 200 (near-)term neonates on TH.

# Approximate median birth weight by gestational age (sexes pooled). Not from
# the paper -- used only to turn a GA draw into a plausible birth weight.
bw_ref <- data.frame(
  ga = c(24, 26, 28, 30, 32, 34, 36, 38, 40, 42),
  bw = c(0.65, 0.90, 1.15, 1.45, 1.80, 2.25, 2.75, 3.20, 3.50, 3.70)
)

make_cohort <- function(n, frac_preterm, arm, id_offset) {
  preterm <- stats::runif(n) < frac_preterm
  ga <- ifelse(preterm, stats::runif(n, 25, 36), stats::runif(n, 36, 42))
  bw_med <- stats::approx(bw_ref$ga, bw_ref$bw, xout = ga)$y
  data.frame(
    id = id_offset + seq_len(n),
    arm = arm,
    GA = ga,
    WT = bw_med * exp(stats::rnorm(n, 0, 0.12)),
    # Lidocaine assumed started at a postnatal age of 1 day.
    PAGE = ga + 1 / 7
  )
}

set.seed(2020)
n_arm <- 200
cohort <- dplyr::bind_rows(
  make_cohort(n_arm, 50 / 110, "Normothermia", 0L),
  make_cohort(n_arm, 0, "Hypothermia", n_arm)
)

cohort |>
  dplyr::summarise(
    n = dplyr::n(),
    GA_mean = mean(GA),
    GA_sd = stats::sd(GA),
    WT_mean = mean(WT),
    WT_sd = stats::sd(WT),
    preterm_pct = 100 * mean(GA < 36)
  ) |>
  knitr::kable(digits = 2)
n GA_mean GA_sd WT_mean WT_sd preterm_pct
400 37.13 4.06 2.97 0.88 21.75

The pooled virtual cohort has GA and birth-weight moments close to Table 3 (37.0 +/- 4.84 weeks; 2.89 +/- 1.05 kg), with a smaller preterm share because the TH arm is sized equal to the normothermia arm rather than at the study’s 31% TH share.

Dosing regimen (Table 1)

Table 1 prints the bolus as mg/kg over 10 min and the other phases as a “Dose” per “Duration”; the phases are rates in mg/kg/h (a 3.5 kg neonate at the normothermia maintenance-I dose of 3.5 mg/kg/h reaches 3.5 * 3.5 / 1.77 = 6.9 mg/L, which matches Figure 2, whereas 3.5 mg/kg spread over 12 h would give under 1 mg/L).

The paper states that “lidocaine hydrochloride doses were converted to lidocaine base” for the analysis, i.e. clinical doses are prescribed as the hydrochloride. The Table 1 doses are therefore simulated as mg/kg lidocaine hydrochloride and converted to base with the anhydrous-salt factor 234.34 / 270.80 = 0.865. The section below shows that this reading, and not the base reading, reproduces the paper’s exceedance percentages.

# Lidocaine base per mg lidocaine hydrochloride (anhydrous, C14H22N2O.HCl).
salt_base <- 234.34 / 270.80

regimen_rows <- function(subj) {
  if (subj$arm == "Normothermia") {
    load_rate <- if (subj$WT < 1.6) 5 else if (subj$WT <= 2.6) 6 else 7
    load_dur <- 4
  } else {
    load_rate <- if (subj$WT < 2.5) 6 else 7
    load_dur <- 3.5
  }
  start <- c(0, 1 / 6, 1 / 6 + load_dur, 1 / 6 + load_dur + 12)
  dur <- c(1 / 6, load_dur, 12, 12)
  rate_mgkg_h <- c(2 * 6, load_rate, load_rate / 2, load_rate / 4)
  data.frame(
    id = subj$id,
    time = start,
    amt = rate_mgkg_h * dur * subj$WT * salt_base,
    rate = rate_mgkg_h * subj$WT * salt_base,
    evid = 1L,
    cmt = "central",
    dvid = NA_integer_,
    phase = c("bolus", "loading", "maintenance I", "maintenance II")
  )
}

doses <- dplyr::bind_rows(lapply(split(cohort, cohort$id), regimen_rows))

obs <- cohort |>
  dplyr::select(id) |>
  tidyr::crossing(time = seq(0, 60, by = 0.25)) |>
  dplyr::mutate(amt = NA_real_, rate = NA_real_, evid = 0L, cmt = "central", dvid = 1L)

# Protocolised body temperature (Table 4 footnote d). TH runs from birth to a
# postnatal age of 72 h; lidocaine starts at 24 h, so TH ends at t = 48 h and
# rewarming at 0.4 degC/h reaches 36.5 degC at t = 55.5 h.
temp_th <- function(t) pmin(36.5, ifelse(t < 48, 33.5, 33.5 + 0.4 * (t - 48)))

events <- dplyr::bind_rows(doses, obs) |>
  dplyr::left_join(cohort, by = "id") |>
  dplyr::mutate(BODYTEMP = ifelse(arm == "Hypothermia", temp_th(time), 36.5)) |>
  dplyr::arrange(id, time, dplyr::desc(evid))

rxode2::rxSetSeed(2020)
sim <- rxode2::rxSolve(
  mod,
  events = events,
  keep = c("arm", "WT"),
  useLinCmt = FALSE
) |>
  as.data.frame()

Replicates Figure 2

fig2 <- sim |>
  tidyr::pivot_longer(c(Cc, Cc_megx), names_to = "analyte", values_to = "conc") |>
  dplyr::mutate(analyte = ifelse(analyte == "Cc", "Lidocaine", "MEGX")) |>
  dplyr::group_by(arm, analyte, time) |>
  dplyr::summarise(
    mean = mean(conc),
    lo = stats::quantile(conc, 0.025),
    hi = stats::quantile(conc, 0.975),
    .groups = "drop"
  ) |>
  dplyr::mutate(arm = factor(arm, levels = c("Normothermia", "Hypothermia")))

ggplot(fig2, aes(time, mean, colour = analyte, fill = analyte)) +
  geom_ribbon(aes(ymin = lo, ymax = hi), alpha = 0.2, colour = NA) +
  geom_line() +
  geom_hline(yintercept = 9, linetype = "dotted") +
  facet_wrap(~arm) +
  labs(
    x = "Time after start of lidocaine (h)",
    y = "Plasma concentration (mg/L)",
    colour = NULL,
    fill = NULL,
    title = "Replicates Figure 2 of Favie 2020",
    caption = "Mean and 95% prediction interval (IPRED); dotted line = 9 mg/L."
  ) +
  theme_bw()

Peak lidocaine concentrations (Results 3.3)

peaks <- sim |>
  dplyr::group_by(arm, id) |>
  dplyr::summarise(peak = max(Cc), megx_end = Cc_megx[time == 60], .groups = "drop")

peak_tab <- peaks |>
  dplyr::group_by(arm) |>
  dplyr::summarise(
    median_peak = stats::median(peak),
    pct_over_9 = 100 * mean(peak > 9),
    pct_over_11 = 100 * mean(peak > 11),
    .groups = "drop"
  ) |>
  dplyr::mutate(
    paper_pct_over_9 = ifelse(arm == "Normothermia", 20.0, 31.8),
    paper_pct_over_11 = ifelse(arm == "Normothermia", 4.7, 12.8)
  )

peak_tab |>
  dplyr::rename(
    "Arm" = arm,
    "Median peak (mg/L)" = median_peak,
    "Simulated % > 9 mg/L" = pct_over_9,
    "Paper % > 9 mg/L" = paper_pct_over_9,
    "Simulated % > 11 mg/L" = pct_over_11,
    "Paper % > 11 mg/L" = paper_pct_over_11
  ) |>
  knitr::kable(digits = 1)
Arm Median peak (mg/L) Simulated % > 9 mg/L Simulated % > 11 mg/L Paper % > 9 mg/L Paper % > 11 mg/L
Hypothermia 7.8 31 15.0 31.8 12.8
Normothermia 6.7 15 8.5 20.0 4.7

# Results 3.3: 'Both with and without TH, mean lidocaine peak plasma
# concentration was well below 9 mg/L'. Asserted on the cohort centre, which is
# robust to which subjects land in the tail.
stopifnot(all(peak_tab$median_peak < 9))
# TH reduces clearance, so exceedance is higher under TH in the paper; with 200
# per arm the binomial SE of each percentage is ~3 points and the paper's
# difference is ~12 points, so only the ordering is asserted.
stopifnot(
  peak_tab$pct_over_9[peak_tab$arm == "Hypothermia"] >
    peak_tab$pct_over_9[peak_tab$arm == "Normothermia"]
)

Salt-form reading of Table 1

The model is linear, so every individual concentration scales exactly with the dose. Rescaling the simulated peaks by 1 / salt_base gives the same cohort dosed as if the Table 1 numbers were mg lidocaine base.

salt_tab <- dplyr::bind_rows(
  peaks |> dplyr::mutate(reading = "Hydrochloride (anhydrous), simulated above"),
  peaks |> dplyr::mutate(reading = "Base", peak = peak / salt_base)
) |>
  dplyr::group_by(reading, arm) |>
  dplyr::summarise(
    pct_over_9 = 100 * mean(peak > 9),
    pct_over_11 = 100 * mean(peak > 11),
    .groups = "drop"
  ) |>
  dplyr::mutate(
    paper_pct_over_9 = ifelse(arm == "Normothermia", 20.0, 31.8),
    paper_pct_over_11 = ifelse(arm == "Normothermia", 4.7, 12.8),
    abs_diff = abs(pct_over_9 - paper_pct_over_9) + abs(pct_over_11 - paper_pct_over_11)
  )

salt_tab |>
  dplyr::rename(
    "Dose reading" = reading,
    "Arm" = arm,
    "Simulated % > 9" = pct_over_9,
    "Paper % > 9" = paper_pct_over_9,
    "Simulated % > 11" = pct_over_11,
    "Paper % > 11" = paper_pct_over_11,
    "Sum of absolute differences" = abs_diff
  ) |>
  knitr::kable(digits = 1)
Dose reading Arm Simulated % > 9 Simulated % > 11 Paper % > 9 Paper % > 11 Sum of absolute differences
Base Hypothermia 50.0 24.5 31.8 12.8 29.9
Base Normothermia 33.5 11.5 20.0 4.7 20.3
Hydrochloride (anhydrous), simulated above Hypothermia 31.0 15.0 31.8 12.8 3.0
Hydrochloride (anhydrous), simulated above Normothermia 15.0 8.5 20.0 4.7 8.8

# Summed over the four published percentages, the hydrochloride reading was
# ~12 points from the paper and the base reading ~50 points when this was
# written; each percentage has a binomial SE of ~3 points at 200 per arm, so the
# ordering holds with a wide margin on any cohort draw.
misfit <- salt_tab |>
  dplyr::group_by(reading) |>
  dplyr::summarise(total = sum(abs_diff), .groups = "drop")
stopifnot(
  misfit$total[misfit$reading == "Base"] >
    misfit$total[misfit$reading != "Base"] + 15
)

The remaining differences (the normothermia arm in particular) are within what the reconstructed cohort can explain: the paper’s simulation replicated the 159 study neonates, whose individual weights, gestational and postnatal ages are not published, so the tail percentages are compared descriptively only. The paper also reports that “no accumulation of MEGX occurred”; in the simulation MEGX peaks around the end of maintenance phase I (PKNCA median Tmax ~20 h, below) and then declines through maintenance phase II and the washout.

PKNCA validation

The paper reports no NCA parameters, so PKNCA is used to summarise the simulated regimen per arm over the 28 h infusion course (Cmax, Tmax, AUC0-28), for lidocaine and MEGX separately. Doses are summed per subject and placed at time zero for the dose object.

dose_nca <- doses |>
  dplyr::left_join(cohort |> dplyr::select(id, arm), by = "id") |>
  dplyr::group_by(id, arm) |>
  dplyr::summarise(amt = sum(amt), .groups = "drop") |>
  dplyr::mutate(time = 0)

conc_nca <- sim |>
  dplyr::filter(!is.na(Cc), time <= 28) |>
  dplyr::select(id, arm, time, Cc, Cc_megx)

intervals <- data.frame(
  start = 0,
  end = 28,
  cmax = TRUE,
  tmax = TRUE,
  auclast = TRUE
)

run_nca <- function(conc_col) {
  d <- conc_nca |> dplyr::rename(conc = dplyr::all_of(conc_col))
  res <- PKNCA::pk.nca(PKNCA::PKNCAdata(
    PKNCA::PKNCAconc(d, conc ~ time | arm + id),
    PKNCA::PKNCAdose(dose_nca, amt ~ time | arm + id),
    intervals = intervals
  ))
  summary(res)
}

nca_lido <- run_nca("Cc")
nca_megx <- run_nca("Cc_megx")
knitr::kable(nca_lido, caption = "Lidocaine, 0-28 h")
Lidocaine, 0-28 h
start end arm N auclast cmax tmax
0 28 Hypothermia 200 163 [39.7] 7.70 [33.1] 15.5 [3.50, 15.8]
0 28 Normothermia 200 141 [41.9] 6.92 [31.5] 4.25 [4.00, 16.2]
knitr::kable(nca_megx, caption = "MEGX, 0-28 h")
MEGX, 0-28 h
start end arm N auclast cmax tmax
0 28 Hypothermia 200 80.2 [52.7] 4.22 [48.6] 19.9 [6.25, 28.0]
0 28 Normothermia 200 76.8 [54.0] 3.98 [49.7] 19.8 [5.00, 28.0]

Assumptions and deviations

  • PMA units. The Table 4 equations use PMA in days about 280 days. The model takes the canonical PAGE in weeks (the neonatal convention used by other library models) and forms PAGE * 7 - 280 internally; the coefficient is unchanged. The linear PMA form reaches zero clearance at 19.3 weeks PMA and should not be used below the studied 25 weeks.
  • Body temperature is protocolised. Per Table 4 footnote d, BODYTEMP is 33.5 degC during TH with 0.4 degC/h rewarming and 36.5 degC otherwise, not a measured temperature. The timing of TH relative to lidocaine start in the simulation (TH from birth to 72 h, lidocaine from 24 h) is assumed.
  • Molar-mass conversion. The paper ran the analysis in umol, so the MEGX formation flux is molar. With doses in mg lidocaine base and concentrations in mg/L, the model multiplies the flux by 206.29 / 234.34 (MEGX / lidocaine molar masses). These constants are not printed in the paper.
  • Residual error. Additive (fixed 0.1 mg/L = LLQ/2) plus proportional error per analyte is encoded as nlmixr2’s add() + prop(); the paper does not say whether the two components were combined on the variance scale or summed on the SD scale.
  • No IIV covariances are reported, so the four etas are independent.
  • Table 1 units and salt form. The Table 1 phase doses are read as mg/kg/h (see Dosing regimen). The paper converted lidocaine hydrochloride doses to base for the analysis but does not state whether the Table 1 regimen doses are hydrochloride or base. The simulation treats them as anhydrous lidocaine hydrochloride (base fraction 0.865), the reading that reproduces the paper’s exceedance percentages; the base reading over-predicts all four of them (see “Salt-form reading of Table 1”). The monohydrate factor (0.811) was not tested separately; it would lower all concentrations by a further 6%.
  • Virtual cohort. The individual covariates of the paper’s 1113-subject simulation dataset are not published. GA was drawn uniformly within the preterm (25-36 weeks) and term (36-42 weeks) ranges, birth weight from an approximate GA-specific median birth-weight curve with 12% log-normal spread (not from the paper), and postnatal age at lidocaine start set to 1 day. The cohort size is capped at 200 per arm.
  • Figure 1 (observed concentrations against the earlier van den Broek 2013 model) is not replicated: it uses a different, previously published model and the observed data are not available.
  • Effectiveness and cardiac safety (Table 5, Section 3.4) are descriptive clinical outcomes, not modelled endpoints, and are not part of this model.