Skip to content
Graphviz (DOT) templates

Phase I oncology — 3+3 dose escalation and MTD rules

The 3+3 dose-escalation decision rules for a first-in-human phase I oncology trial — the CTCAE v5.0 dose-limiting toxicity definition, the 0/3, 1/3 and ≥2/3 cohort decisions, expansion to six patients, de-escalation, the MTD definition (≤1 DLT in 6 evaluable patients) and the RP2D expansion cohort — the escalation schema every phase I protocol and DSMB charter must state.

Template previewGraphviz (DOT)
Rendering…

Make it your own.

digraph three_plus_three {
  rankdir=TB;
  graph [fontname="Helvetica", fontsize=11, nodesep=0.4, ranksep=0.45, bgcolor="transparent",
         label="Phase I oncology — 3+3 dose-escalation decision rules\lDLT window: cycle 1 (28 days). A patient who receives < 75% of the planned cycle-1 dose for a reason other than toxicity is not DLT-evaluable and is replaced.\lMTD is the highest dose level at which ≤ 1 of 6 DLT-evaluable patients experiences a DLT. Escalation is modified Fibonacci: +100%, +67%, +50%, +40%, +33%.\l",
         labelloc="t", labeljust="l"];
  node  [fontname="Helvetica", fontsize=9, shape=box, style="rounded,filled", fillcolor="#f8fafc", color="#64748b", margin="0.16,0.10"];
  edge  [fontname="Helvetica", fontsize=8, color="#475569"];

  subgraph cluster_dlt {
    label="Dose-limiting toxicity — CTCAE v5.0, cycle 1 only"; style="rounded,filled"; fillcolor="#fff1f2"; color="#fda4af"; fontsize=10; fontcolor="#be123c";
    dlt [label="Any of:\l  • Grade ≥ 3 non-haematological toxicity, except untreated nausea,\l    vomiting, diarrhoea or alopecia\l  • Grade 4 neutropenia lasting > 7 days\l  • Grade ≥ 3 febrile neutropenia\l  • Grade 4 thrombocytopenia, or grade 3 with clinically\l    significant bleeding or a platelet transfusion\l  • Grade ≥ 3 AST/ALT rise lasting > 7 days\l  • Any toxicity delaying the start of cycle 2 by > 14 days\l", fillcolor="#ffe4e6"];
  }

  enrol [label="Enrol a cohort of 3 DLT-evaluable patients\lat dose level i (level 1 = one tenth of the LD10 in mice)\l", fillcolor="#dbeafe", color="#2563eb"];
  obs   [label="Observe all 3 through the full 28-day DLT window\lbefore any further patient is dosed", fillcolor="#eff6ff"];
  d     [label="How many of the 3 had a DLT?", shape=diamond, style="filled", fillcolor="#fef3c7", color="#d97706", margin="0.10,0.05"];

  esc   [label="0 of 3 — escalate\lopen dose level i+1 with a new cohort of 3", fillcolor="#dcfce7", color="#16a34a"];
  exp   [label="1 of 3 — expand this level\lenrol 3 more at dose level i (6 in total)", fillcolor="#fef9c7"];
  stop3 [label="≥ 2 of 3 — dose exceeded\lstop escalation; this level is above the MTD", fillcolor="#fee2e2", color="#dc2626"];

  d6    [label="How many of the 6 had a DLT?", shape=diamond, style="filled", fillcolor="#fef3c7", color="#d97706", margin="0.10,0.05"];
  esc6  [label="1 of 6 — escalate\lopen dose level i+1 with a new cohort of 3", fillcolor="#dcfce7", color="#16a34a"];
  stop6 [label="≥ 2 of 6 — dose exceeded\lstop escalation; this level is above the MTD", fillcolor="#fee2e2", color="#dc2626"];

  back  [label="Was the previous dose level already treated with 6 patients?", shape=diamond, style="filled", fillcolor="#fef3c7", color="#d97706", margin="0.10,0.05"];
  fill  [label="No — enrol 3 more at dose level i−1\lso that 6 patients are evaluable there", fillcolor="#eff6ff"];
  mtd   [label="MTD DECLARED = dose level i−1\lthe highest level with ≤ 1 DLT in 6 evaluable patients\lRP2D is usually the MTD, adjusted for cumulative toxicity,\lPK exposure and target engagement across all cycles\l", fillcolor="#ede9fe", color="#6d28d9"];
  deesc [label="Dose level 1 exceeded\lde-escalate to level −1 (typically 50% of level 1);\lif level −1 is also exceeded, close the escalation\l", fillcolor="#fee2e2", color="#dc2626"];
  expand [label="Expansion cohort at the RP2D\ltypically 6–12 further patients to confirm tolerability\land collect a preliminary efficacy signal\l", fillcolor="#f3e8ff"];

  enrol -> obs;
  obs   -> d;
  d -> esc   [label="  0/3"];
  d -> exp   [label="  1/3"];
  d -> stop3 [label="  ≥ 2/3"];
  esc -> enrol [label="  next dose level, new cohort of 3", constraint=false];
  exp -> d6;
  d6 -> esc6  [label="  1/6"];
  d6 -> stop6 [label="  ≥ 2/6"];
  esc6 -> enrol [label="  next dose level, new cohort of 3", constraint=false];
  stop3 -> back;
  stop6 -> back;
  back -> fill [label="  no"];
  back -> mtd  [label="  yes"];
  back -> deesc [label="  the exceeded level was level 1"];
  fill -> mtd  [label="  ≤ 1 DLT in 6"];
  fill -> back [label="  ≥ 2 DLT in 6 — step down again", style=dashed];
  mtd -> expand;
  dlt -> d [style=dashed, color="#be123c", label="  scores each patient"];
}