From a patient to a dose — and every equation in between.
A walkthrough of the real calculator, followed by a complete account of the
mathematics and the population models it uses, each tied to the paper it came from. Every screenshot is a
synthetic demo patient, never a real one. This is orientation, not clinical advice — the tool is decision
support, and every number it produces still wants a clinician's judgement.
Five words first
AUC24
The total drug exposure over a day — the area under the concentration-time curve. Vancomycin's
efficacy and its kidney toxicity both track exposure rather than any single concentration, which is
why the 2020 guideline made this the target and retired trough-only dosing.
Trough
The lowest concentration, just before the next dose. Still worth measuring — it is what an assay
actually returns — but it is no longer a target. Many different exposure profiles can produce
an identical trough.
Clearance (CL)
Volume of blood cleared of drug per hour. It sets the exposure: at steady state, AUC24 = daily dose ÷ CL.
Volume of distribution (V)
The apparent volume the drug spreads into. It sets how high the peak goes and how fast the level swings between doses.
Bayesian / MAP
A method that starts from what is typical for a population, then bends towards this patient as their
own measured levels arrive. With one level it moves partway; with more, further. It never ignores the
data, and never fully abandons the prior.
The walkthrough
01
Open the tool
Inputs on the left, answers on the right. Two modules across the top:
Trough-Based for deterministic dosing, and AUC Precision
for Bayesian fitting once you have levels. Saved profiles work in both — save from either
and loading fills both, so a patient is entered once. Nothing leaves the browser: there is
no server and no network call.
02
Describe the patient
Age, sex, height, weight and creatinine. Sex has no default — the tool will not calculate until it is
chosen, because it changes both the creatinine clearance and the ideal body weight. The tool derives
ideal and adjusted body weight and shows the creatinine clearance it will use, naming the weight
basis so you can see which one it chose.
The creatinine is used exactly as entered — it is never rounded up. If cystatin C
is available, entering it surfaces a creatinine/cystatin discordance check, which is the honest
answer to the low-muscle-mass problem that rounding was invented to paper over.
03
Read a starting dose
A starting regimen from population pharmacokinetics before any level exists. The answer leads —
the regimen, then its AUC24 — with the curve beside it and the working one step away
underneath. Choose the clearance and volume models on the left; the panel underneath them states
the provenance of whichever you pick. The tool marks the exposure as roughly ±30% at this stage —
that is what "no levels yet" means, and it says so rather than implying precision it does not have.
04
Enter the actual course
Enter what the patient actually received — every dose, its infusion duration, and the real
administration time — then the measured level and when it was drawn. Times matter more than people
expect: the fit is only as good as the timestamps. Rows that are started but incomplete are
reported rather than silently dropped.
05
Fit this patient
The fit. It opens on the patient's course — each dose a bar as wide as its infusion, the measured
level a dot — with the recommendation at its end: the regimen, its AUC24 and the range it
is likely to fall in, one word for how far to trust it, and the one next step. The curve beneath
shares the course's time axis. Below, a line each, is the evidence: why this dose, the regimen the
patient is on, how the models agree, how the fit meets the measurement, and the whole
dose-by-interval exposure matrix. This example's course holds a genuine q12h → q8h transition,
detected from the two most recent intervals rather than from whichever interval appeared most
often. If you know the intended order, set it in Current intended regimen; that steers
the projection and never alters the data the fit consumes.
06
Read the profile
Model and measurement are drawn in different colours. The solid purple line is this patient's fit;
the thin grey dashed line is what the population model predicted before their levels were known.
The gap between them is what the measurement bought you. The lavender band around the fit is the
80% range simulated for this model and number of levels. Measured levels are black dots with their
value, each with a small purple ring where the fit puts that moment — the distance between the two
is how far the fit misses the measurement; doses are short marks on
the time axis, with their amounts and intervals on the course strip above. Past "now" the fit
continues as a dashed prediction over a faintly shaded field. Point anywhere on the curve or the
strip to read the fitted concentration at that instant, the clock time, and how long it has been
since the last dose.
Every time is a date and a time
Doses and levels are entered as full timestamps everywhere in the tool — never a bare clock
reading. This is not tidiness; it is the difference between a correct answer and a confidently
wrong one.
Two-level sampling routinely spans midnight. A dose at 10:22 and a level at 10:38 the next
morning are 24.3 hours apart, but from clock readings alone that is
indistinguishable from 16 minutes. Earlier versions of this tool resolved the ambiguity by
assuming the same day and adding 24 hours only when the result went negative, which folds
every interval into the range 0–24 h.
That has two consequences, and the quieter one is the dangerous one. When the second level
wraps below the first, the solver refuses and says so. But when both levels
fall on a later day they shift by the same 24 hours, the log-linear slope between them is
unchanged, and the elimination rate still comes out right — while the back-extrapolation to
the peak, which uses the absolute time, is a full day early. Volume of distribution then comes
out several-fold wrong with nothing on screen to suggest it. A dose at 08:00 with levels at
12:00 and 18:00 the next day gave a Vd of 75 L where the truth was 13 L.
Each field now carries its own date, and the tool prints the elapsed interval back to you —
1d 0.3h (total 24.3h) after dose start — so you can confirm it
read the timestamps the way you meant them before you trust anything downstream. A level dated
before its dose is reported as an error rather than silently absorbed.
Haemodialysis sessions
For a patient on intermittent haemodialysis, choose Goti 2018 · HD and log each
session — past and planned — as a start date, a start time and a length in hours.
The sessions do not change the fit. Goti-HD carries dialysis as a yes/no covariate
(clearance ×0.7, central volume ×0.5) for the whole course, because the study had no session times.
What the sessions do is place every level against dialysis: during a session, soon after
one (while drug is still returning from the tissues — within three distribution half-lives of the fitted
model), pre-HD (within 12 hours before a session), or interdialytic. A level drawn during or
soon after a session is flagged: the averaged model cannot see that timing, and fits it as if clearance
were constant. A pre-HD level avoids the problem.
Levels are never adjusted. There is no "rebound factor" and no back-calculation to a pre-dialysis value —
both would put a number into the fit that nobody measured.
With a planned session entered, the result reads the fitted curve at its start — the predicted pre-HD
level — and says what it assumes: no further dose, or the planned dose rows you entered. It is compared
with a pre-dialysis range of 15–20 mg/L. Sessions appear as grey bands on the course strip, the curve
and the printed report.
Dosing on haemodialysis
For Goti 2018 · HD the answer is not a q-interval regimen — HD maintenance is given with each session.
Before the first level the result is the empiric table from the 2020 consensus guideline (Rybak et al.,
Rec 13): loading and maintenance doses for the patient's actual body weight, after or during dialysis,
for high- and low-permeability dialysers — both rows, because the dialyser is not assumed. Loading is
capped at 3,000 mg (Rec 11).
Beside an HD answer the Regimens grid stays closed, after the Haemodialysis section: its
q-interval cells are steady-state references, not an HD schedule. There is no weight-based guideline
regimen and no q-interval projection, and the model advice names Goti-HD, the only model here that
carries dialysis. To try a post-HD dose, enter it as a planned dose row; the answer reads it.
Once a level exists, the dose follows the next session and is sized at the start of the session after
it, on the fitted curve with every dose entered: of no dose and each 250 mg step, the one whose pre-HD
level lands closest to the middle of 15–20 mg/L (17.5; Rec 14), ties to the smaller dose; no dose if every
step reads above 20; otherwise the closest, flagged. Aiming at the middle rather than the bottom of the
band keeps a pre-HD level of 15 — about AUC 380 on VancoPK's published arithmetic — from becoming the
usual answer. A planned dose you have already entered is read and reported, never silently replaced. A
recurring schedule (Mon·Wed·Fri, Tue·Thu·Sat, or every N days) adds the sessions in one step. A dose
given during a session is flagged — 20–40% of it is removed by the dialyser — and the Trough module
refuses a patient on dialysis and sends them here.
When the schedule is unknown
In the ED, after a transfer, with AKI on HD or while nephrology decides, the next sessions are often
unknown. With fewer than two upcoming sessions logged the answer is a one-time dose:
after the one session still ahead if there is one, otherwise now, sized for a pre-HD level of about
17.5 mg/L at an assumed next session 24, 48 or 72 hours after the last session began —
start to start, as a thrice-weekly schedule runs; 48 by default, changed with one tap, and always named
as a clock time ("3 Oct 13:42, 48 h after session 1 began"). With no session logged it counts from the
dose. A table shows each dose against all three, so you can see what happens if dialysis comes sooner
or later; a session that would already be over is greyed out.
Give at sets when you can actually give the dose (a date and a 24-hour time; "1700"
is read as 17:00). It moves the dose, never the assumed next session — so a later dose has fewer hours
to cover and usually comes out smaller. If the assumed next session would start before a dose could be
infused and distributed, the dose is placed after that session instead.
Creatinine on dialysis. A SCr drawn after a session reads low — dialysis removes
creatinine too — and makes clearance look better than it is. When dated SCr readings span a logged
session, the fit uses that session's pre-dialysis reading (drawn within 12 h before it), if it is the
higher one, and says so; otherwise the post-dialysis value is flagged, not replaced. With only the single
SCr field, enter a pre-dialysis value.
A missed post-HD dose is flagged — "No dose entered after session N" — unless a dose
was given during that session or one is entered after it, given or planned.
A measured pre-HD level above 20 mg/L means no dose now and a recheck before the next
session — for the dose after the session that level came before, never a later one. With a schedule
logged, the dose is still sized from the fit and the same level is shown as a caution above it.
The model averages dialysis over time. If the next session is delayed or cancelled,
real levels will run higher than shown — the answer says so every time.
Cross-checked against VancoPK's published haemodialysis method (Fewel): within one 250 mg step in 70% of
162 fictional cases. Ours reads lower at short gaps, where VancoPK removes 35% at the session just past,
and higher at long ones, where the averaged clearance runs on with no session; VancoPK still doses at a
pre-HD level of 22–25 where this tool holds. Not clinically validated on local HD patients.
Patients on peritoneal dialysis
For IV vancomycin in a patient on peritoneal dialysis, use Trough-based · Peritoneal dialysis.
It doses by level, not by a population model. It says what to give, whether to give it today, and when to
draw the next level, from this patient's own levels and their cycler schedule.
Why no model. No population model has been validated for IV vancomycin in PD. The one adult
PD model (Hartinger 2023) covers CAPD with intraperitoneal dosing at a single centre. The 2022 ISPD
peritonitis guideline gives no IV vancomycin dose, and no guideline gives an AUC target for PD. So AUC
Precision refuses a patient ticked as on PD and links here.
The decline is measured, not assumed. Each level is read against the one before it (or
against the first dose, when no vancomycin came before it). The elimination rate is the one that carries
the earlier level, plus every dose in between, onto the measured level. The projection to your next draw
is the range those rates give, and the answer says how many intervals it rests on.
Flagged intervals. A level drawn within 24 h of a dose ending may still be falling
through distribution, and one drawn while the cycler runs reads low. Both are flagged; the second is also
a caution when your AM labs fall before the cycler ends. Two levels under 12 h apart are not used. A held
cycler night, and the time PD stopped, are marked on every interval they touch.
The answer. Choose a goal: 10–15 or 15–20 mg/L, or your own. There is no answer without
one. The redose shown is the 250 mg step whose expected level at your next draw lands closest to the middle
of the goal. Above the goal there is no dose: the next draw is the morning the level is projected to come
down to the goal's top. Before any level, the load is 20 mg/kg of actual body weight (an institutional
convention, not a guideline value), and the first level is the AM labs nearest 48 h after it, earlier with
residual urine output.
Your institution's numbers stay yours. A maximum single dose, a target peak and your
AM-labs time can be set under Your settings. They are kept in your browser only, and never part of
the app. With a target peak set, the redose-to-a-target-peak calculation, V × (peak − level now), is shown
beside the answer for comparison, never as the answer.
Published APD and CAPD half-lives (11.6 h on the cycler and 62.8 h off it, Manley 2001; 66–115 h in CAPD,
Lam 2020) are shown as context only and never size a dose. Not clinically validated against PD outcomes.
Reading the graph
The plot exists so you can estimate a concentration at a time point. Its axes are built for
that, and a few of its choices are deliberate enough to be worth stating.
The time axis is your interval, not a constant
Ticks are placed at half the dosing interval, so there are always seven of them and
every dose boundary falls on one — at Q6H they land on 0, 3, 6, 9, 12, 15 and
18 h; at Q48H on 0, 24, 48 and so on. You can therefore read the trough directly off a
gridline rather than interpolating toward it. Faint vertical rules mark where each dose is
given.
This replaced a fixed 8-hour tick that aligned with no dose boundary at Q6H, Q12H, Q18H, Q24H,
Q36H or Q48H, and drew nineteen overlapping labels at Q48H.
The concentration axis contains everything drawn on it
The vertical range is chosen to include the curve, the target band, and any measured
level — not just the curve. That matters for a low-dose regimen in a fast clearer: if the axis
followed the curve alone, a 10–20 mg/L band would be painted off the top of a plot whose peak
was 8 mg/L, and the band would read as "everything above 10 is on target." Gridlines are placed
on round values at a roughly constant density whatever the scale.
The same holds across time on AUC Precision: the time axis always reaches the last measured
level. On a long course where doses were held and a level was drawn days after the last dose,
that level used to fall past the end of the axis and vanish from the chart while the fit still
used it (fixed in v3.6.0).
The shaded band is your target, and it is a reference
The band is drawn from the trough range you entered, and labelled with those bounds —
it is not a fixed 10–20. It is shaded for orientation only: the 2020 guideline withdrew trough
as a target (Rec 3, A-II) and AUC24 governs. It stays on the chart
because a trough is still the value a level actually measures.
What each mark means
Mark
Meaning
Green dot, with its value
A measured level. The only real number on either chart; everything else is a model. It has its own colour, used for nothing else, and is drawn above the curves so nothing hides it.
Small purple ring on the curve, joined to the dot by a hairline
Where the fit puts that same moment (AUC Precision). The hairline is the residual: how far the fit misses the measurement.
Solid purple line
This patient's fitted curve (AUC Precision), or the regimen they are on now, fitted to their level (Trough-Based, beside the recommendation). Past “now” the fit turns to short dashes over a faintly shaded field: prediction, not record.
Lavender band around the fit, with fine edges
The 80% range simulated for this model and number of levels (AUC Precision).
Grey long-dashed line
What the population model predicted before the levels were known. Long dashes mean this and nothing else. The gap between it and the fit is what the measurement bought you. On Trough-Based it is drawn for the regimen shown once a level has been fitted; initial dosing has none, because there the curve already is the population prediction.
Terracotta line
The recommended regimen (Trough-Based), or a projection under doses not yet given (AUC Precision).
Filled and open dots on a curve
Predicted peak (end of infusion) and trough (end of interval), in the curve's own colour: the shape, not a second hue, tells them apart (Trough-Based).
Shaded band with its label
Your trough reference range, labelled with its bounds (Trough-Based).
On the course strip above the AUC Precision curve, each dose is a block as wide as its
infusion, with a solid mark at the charted start time; levels are green dots with their values.
When a new result arrives the curve traces in from left to right and each level lands as the
trace passes it. It does not replay on a redraw, it is off if your system asks for reduced
motion, and print always shows the finished chart.
Markers are drawn on the curve, not near it — the curve is sampled at the end of infusion and
at each interval boundary specifically so the peak dot sits on the line rather than above the
corner the polyline would otherwise cut. If a marker ever appears off the curve, that is a bug,
not rounding.
One chart that does not draw your level
In Random Level mode the level is fitted against the course it came from — a
first dose or a steady state — while the chart draws the recommended regimen at steady
state. That is a different course, so the level is not placed on it: a point there would sit
on a curve it was never drawn from. Read the fitted parameters, not the curve.
Choosing the interval — and why the tool will not do it for you
The tool computes exposure. It does not choose your dosing interval, and the reason is
arithmetic rather than modesty.
At steady state the area under the curve over 24 hours is simply the total daily dose divided
by clearance:
AUC24 = dose x (24/tau) / CL = total daily dose / CL
There is no interval term in it. 500 mg every 12 hours and 1000 mg every 24 hours
deliver exactly the same exposure, and so does 2000 mg every 48 hours. Any rule that
ranks regimens on how close their AUC24 sits to a target is therefore blind to the interval by
construction; whichever interval happens to reach a daily dose nearest the target wins, and
with doses rounded to 250 mg that is decided by rounding rather than by pharmacology. The
rounding is not even-handed either — one 250 mg step moves AUC24 six times less at Q48H than
at Q8H, so a long interval can always land closer.
Rather than hide that behind a tuned preference score, the tool shows the whole picture. The
exposure matrix lays out every dose against every interval, shades each cell
against the 400–600 mg·h/L band, strikes through anything that breaches a hard safety limit,
outlines the recommended cell, and lets you click any other one to see its full profile. The
AUC values repeat down the diagonals, which is the point: those regimens are exposure-
equivalent.
What does change with the interval is the shape — peak and trough. Those are yours to weigh
against renal trajectory, how long you expect the regimen to stand, infusion-related
tolerability and practicality on the ward. The tool gives you the numbers for each; the
judgement is not something it can derive from an AUC target.
The single recommendation is still shown, because a starting point is useful. Treat it as one
admissible cell among several rather than as a ranking the model has earned.
When you can give the first dose
The answer reads the regimen, its AUC24 and trough, the confidence and the next step, then the
First dose on one line. By default the first dose is when it is due (the last dose
entered, given or planned, plus the new interval), or now if that has passed. The line gives the clock
times after it ("then 12:00 daily") and the fitted level when it goes in. Choose change to set
the time you can actually give it; "1200" reads as 12:00. The dose does not change: at steady state
AUC24 is the daily dose over clearance, whatever the start. Until then an earlier first dose
raises exposure and a later one lowers it, so when the AUC24 over the first 24
hours falls outside 400–600 the answer says so beneath the line. The projection curve starts at
that time. The printed report carries the full detail, including where the time sits against the
schedule.
When the weight changes the clearance
Before the first level, an obese patient's clearance depends on which weight Cockcroft-Gault is given.
Tools differ: on the same Buelga model, two tools can disagree only because one estimates CrCl on a
different weight. So when total body weight is more than 120% of ideal, AUC Precision lists the
recommended regimen's AUC24 on ideal, adjusted and total body weight. Each row
shows the CrCl, the model's clearance and the exposure, and the adjusted-weight row, the one used, is
marked. SCr is used as measured; on Goti above 65 the note says when the model reads a higher SCr. When a
renal-function caution also applies (augmented clearance, or a low creatinine in an older patient), the
two are one note. The note goes once there is a level, or when you set CrCl manually. It never changes
the dose.
The mathematics
Everything below is implemented in the shipped file and covered by an automated suite that runs the real
engine — 101 unit and regression tests, 21 simulation checks, and 40 regimen-detection cases. Fifteen of
those run the actual chart renderers and assert on what they draw.
Body size and renal function
Ideal body weight. At or above 60 in (152.4 cm), Devine (1974):
IBW = 50 (male) or 45.5 (female) + 2.3 x (height_in − 60)
Below 60 in, Devine extrapolates downwards and understates IBW, so the GlobalRPH BMI method is used
instead — with the target BMI derived from the Devine anchor rather than chosen:
IBW = (50 ÷ 1.524²) x height_m² = 21.53 x height_m² (male)
IBW = (45.5 ÷ 1.524²) x height_m² = 19.59 x height_m² (female)
Deriving the target from the anchor is what makes the two methods meet: IBW is continuous and monotonic
across 152.4 cm. Substituting round numbers such as 21.5 / 22.0 — a different method entirely
(Tokunaga 1991) — breaks the join and makes a 152.3 cm woman weigh more than one at 152.5 cm.
Adjusted body weight — AdjBW = IBW + 0.4 x (TBW − IBW), used for creatinine clearance when total weight exceeds IBW by more than 20%. Where actual weight is below the selected basis, actual weight wins.
Creatinine clearance — Cockcroft-Gault, on the measured creatinine:
CrCl = ((140 − age) x weight) ÷ (72 x SCr) x 0.85 if female
No rounding of low creatinine. Rounding up in the elderly under-doses measurably: in 56 patients aged
≥65 with baseline SCr <1, rounded creatinine missed measured troughs by 8.84 mg/L against 4.54 mg/L
for the actual value, and 92.9% came out subtherapeutic (Drugs R&D 2017;17:463-70). The one exception
is internal to the Goti model, which was estimated on truncated creatinine and so must be fed
the same transformation — that never touches the creatinine clearance shown on screen.
One-compartment infusion, at steady state
With R0 = dose ÷ t_inf, ke = CL ÷ V, interval tau:
Dropping that second term is a real and easy mistake — it agrees with the correct form at the end of
the infusion, so it looks right, but it returns zero at t = 0, implying no drug present immediately
before a dose at steady state. It shipped here until September 2026 and was caught by external review.
Exposure
AUC_24 = (dose x 24 ÷ tau) ÷ CL
Exact at steady state and independent of the compartment model — which is why it, not the trough, is the
quantity the tool optimises against. A trapezoidal form (linear across the infusion, log-linear across
elimination) is also implemented; the two agree to within 0.31% worst case.
Fitting this patient
Two levels, no prior — Sawchuk-Zaske. The elimination rate comes straight from the slope between two post-infusion concentrations:
ke = ln(C1 ÷ C2) ÷ (t2 − t1)
Volume then comes from back-extrapolating to the peak — and here where in the course
the levels were drawn changes the answer. The single-dose form assumes nothing was
left over from a previous dose:
V = (R0 ÷ (ke·C_peak)) · (1 − e^(−ke·t_inf)) first dose
V = (R0 ÷ (ke·C_peak)) · (1 − e^(−ke·t_inf)) ÷ (1 − e^(−ke·tau)) steady state
Elimination is basis-independent — accumulation does not change a log-linear slope. Volume is
not. Treating steady-state levels as first-dose levels attributes the drug already in the
body to a smaller volume: for a patient with ke 0.0866 and V 52 L on 1000 mg q12h, V comes
back as 33.6 L (−35%) and AUC24 as 687 against a true 444 — a 55% over-read, which
would argue for reducing the dose of a patient already at target. The calculator
therefore asks which it is rather than assuming.
Bayesian MAP — minimise the Burton (1985) objective over the individual deviations eta:
The first sum is the price of departing from the population; the second is the price of disagreeing with
the measurements. Minimising their total is what "bend towards the patient, but only as far as the data
justifies" means arithmetically. Parameters are exponential — CL = CL_pop · e^(eta_CL) — so they
stay positive. The search is Nelder-Mead simplex, in two dimensions for one-compartment models and three
for two-compartment.
Two compartments
Concentrations follow a bi-exponential: a fast distribution phase then a slow terminal phase, with the
macro-constants alpha and beta obtained from the micro-constants k10, k12, k21. Steady state is reached
by superposition of repeated doses — and the number of cycles required is derived from the terminal
half-life rather than assumed:
A fixed 12 cycles is not steady state when clearance is low. At CrCl 10 a Goti patient has a terminal
half-life near 110 h, so twelve 12-hourly cycles covers about 1.3 half-lives and reads the trough
roughly 40% low — in exactly the renal-impairment patients where accumulation is the danger.
The population models
Four Bayesian priors and four deterministic model pairs. Every parameter below was checked against the
primary source; where a coded value disagreed with its paper, the paper won.
Bayesian priors
Model
Structure
Typical values
Between-subject
Residual
Source
Buelga 2005 Haematological malignancy, n=215
1-compartment
CL (L/h) = 1.08 x CLcr (L/h); V (L) = 0.98 x TBW
omega 28.16% (CL), 37.15% (V), exponential
sigma 3.52 mg/L, additive
Buelga DS et al. Antimicrob Agents Chemother 2005;49(12):4934-41 verified: verbatim
CL = 4.5 x (CrCl/120)^0.8 x 0.7^DIAL; Vc = 58.4 x (WT/70) x 0.5^DIAL; Vp = 38.4; Q = 6.5
BSV %CV 39.8 / 81.6 / 57.1 (CL / Vc / Vp)
22.7% proportional + 3.4 mg/L additive
Goti V et al. Ther Drug Monit 2018;40(2):212-21 (+ erratum 2019;41(4):549) verified: 16 of 16 parameters
Goti 2018 — HD The dialysis arm of the same model
2-compartment
As above with DIAL = 1: CL x 0.7 and Vc x 0.5
as Goti
as Goti
Goti V et al. Ther Drug Monit 2018;40(2):212-21 verified: as Goti
Hughes 2024 Class 3 obesity ONLY — BMI ≥ 40 (median 46.3, range 40–70.3)
2-compartment, FFM-scaled
CL = 5.09 x (CrCl_FFM/100)^0.887; Vc = 64.9 x (FFM/70); Vp = 66.4 x (FFM/70); Q = 6.36
BSV %CV 24.9 / 17.8 / 80.3
15.6% + 1.2 mg/L
Hughes M-SA et al. Ther Drug Monit 2024;46(5):575-83, Table 2 (nlmixr2) verified: Table 2 exact; one structural defect corrected
Deterministic models
Model
Clearance
Volume
Provenance
VancoPK
CL (mL/min) = 0.75 x CrCl + 4
Vd (L) = 0.29 x age + 0.33 x TBW + 11
Vd: Fewel N. J Clin Pharm Ther 2021;46:1426-32 (verified verbatim). CL: vancopk.com in-house regression, updated Nov 2023 — site documentation, not peer-reviewed.
Matzke 1984
CL (mL/min) = 0.689 x CrCl + 3.66
0.72 or 0.89 L/kg by CrCl band, or 0.875 L/kg pooled
Matzke GR et al. Antimicrob Agents Chemother 1984;25(4):433-7. The CL equation is verbatim (r = 0.8807). The Vd split on CrCl is NOT a published covariate — the paper states there was no significant relationship between Vd and CLcr — so a pooled option is offered.
Buelga 2005
CL (L/h) = 1.08 x CLcr (L/h)
0.98 L/kg TBW
Same model the AUC module uses as its Bayesian prior — the two modules agree exactly.
Bauer
per-kg clearance x weight
0.70 L/kg TBW
Bauer LA. Pharmacotherapy: A Pathophysiologic Approach, 11e, ch. e5. Textbook method; no standalone source paper.
Choosing between them
The tool recommends a model from the patient, but the choice is yours. Two constraints are
worth knowing because they are easy to get wrong:
Hughes is a class-3 model. It enrolled only patients with a BMI of at least
40 kg/m² and should not be used below that. There is no vancomycin population model
validated specifically for BMI 30–39.9; the tool routes that band to Goti — the largest
development dataset, with a weight covariate on central volume — and says plainly that
nothing is validated there. Obtain levels early and let the Bayesian fit carry the weight.
The Hughes creatinine clearance is deliberately lower, by roughly 20–25%.
Hughes fitted its clearance against a Cockcroft-Gault computed on fat-free mass, not
total or adjusted weight — the paper found that "using FFM as an input to the Cockcroft-Gault
equation improved the fit significantly compared with using TBW". It is a model input, not an
estimate of the patient's renal function, and feeding the model a conventional creatinine
clearance would over-predict clearance and over-dose.
Goti with a single trough is weaker than it looks. Three parameters from one
or two troughs is under-determined; a second trough adds little. With one level a
one-compartment model is often the more reliable choice.
How much a level is worth
Simulated against the verified Buelga prior, 2,000 patients per level count. These are measured, not
asserted, and are quoted at the ~80th percentile:
Levels
Median error
80th percentile
90th percentile
Within ±15%
0 — population only
18.3%
35.4%
45.9%
42%
1
10.3%
20.9%
28.3%
66%
2
8.8%
18.2%
25.4%
73%
3 or more
8.1%
17.1%
23.2%
76%
The first level buys the most. The tool previously claimed ~±15% at one level; only 66% of simulated
patients met that, so the disclosure was re-derived from simulation and now states the percentile it means.
The safety bounds, and where they come from
A dose recommendation is filtered before it is offered. The bounds are tiered by how much clinical
judgement each requires.
Tier
Bound
Value
Source
Hard reject dose-domain; cannot be wrong for a clinical reason
Single dose
≤ 2000 mg
conventional adult per-dose ceiling
Total daily dose
≤ 4500 mg
adult empiric maintenance ceiling
AUC24 absolute
≤ 700 mg·h/L
AKI risk rises above ~650 (Rybak 2020); Zasowski 2018
Acceptance band
AUC24
400–600 mg·h/L
Rybak 2020 Rec 1 (A-II), assuming MIC 1 mg/L
Flags attached to the answer, never used to hide it
Trough warning
≥ 15 mg/L
AKI risk begins to rise (Rybak 2020)
Trough high
≥ 20 mg/L
upper end of that band; trough ≥18.2 → 3–4× risk
Sub-inhibitory
trough < MIC
part of each interval below the MIC
Trough is deliberately not a filter. Because the dose is solved from the target exposure, every
candidate already sits near the target AUC — so a trough window would not be guarding exposure, it would
be silently choosing the dosing interval on rounding arithmetic. The 2020 guideline withdrew trough as a
target for the same underlying reason: many different profiles share one trough. When no candidate is
admissible the tool refuses and says which bound failed rather than quietly returning a
rejected regimen.
What it does not do
No paediatrics or neonates. Adult models only.
No CRRT, SLED or hybrid therapies. Intermittent haemodialysis is supported through the Goti dialysis covariate, which averages dialysis over the course; logged sessions label the levels but are not modelled as timed clearance. Continuous modalities are not modelled.
No continuous infusion. Intermittent dosing only.
No intraperitoneal dosing, and no AUC for peritoneal dialysis. The PD mode doses IV vancomycin by level; IP regimens are not sized here.
Two-compartment fitting from troughs alone is under-determined. Three parameters from one or two troughs carries wider uncertainty than the one-compartment path; a second trough adds little. This is measured and documented, not hidden.
It is advisory. Nothing here is a prescription, and no number replaces the judgement of the person signing for the dose.
The engine, its tests and the full audit record — including the defects found and what they cost — live
with the source. The calculator runs entirely in your browser; no patient data is transmitted anywhere.