Trial biostatistics toolkit

Monitoring and interim review

TRIALMON: safety review on synthetic data

A worked Safety Review Committee example for a first-in-human dose-escalation study: the screening rules, a console that applies them, and the packet a committee would read before deciding on the next dose.

Runs (R 4.6.0); tests passSynthetic data

Not covered: DMC charters, group-sequential interim design, BOIN or CRM design.

Synthetic data only. Study CP-101 does not exist. TRIALMON flags positions for a medical monitor and a committee; it does not adjudicate DLTs or Hy's Law cases and makes no dose-escalation decision. It is not a validated system and produces no reported numbers.

The console as a Shinylive build

The TRIALMON console as it opens: the packet for participant CP101-014 (RED) in the sidebar, the Start here card with what each color means, seven value boxes (overall RED, study tier AMBER, 5 RED and 7 AMBER flags for 18 dosed participants) and the top of the ranked worklist.
The console as it opens, on synthetic data. If the app does not load, this screenshot and the read-only snapshot show the same screens.

The same R Shiny code is exported with Shinylive, which runs R compiled to WebAssembly (webR) in the browser. There is no server: the screens are computed in your browser from the synthetic data, and everything the app needs loads from this site.

Smoke-tested before each deploy Before each deploy, the site's publishing workflow opens the console in headless Chrome as a first-time visitor and deploys nothing unless it starts, fills its panels and tabs with the expected values, shows no error and follows the site's theme (run history ↗). The same check passed on a local build on 26 October 2026 (see What was executed below). It runs on the build machine, not on the live site; Safari and Firefox are not checked.

Before you open it: R starts inside your browser, so the console takes several seconds to appear. The first visit downloads about 65 MB, shared with the other two apps on this site; later visits reuse the browser cache. It works best in Chrome or Edge; Safari support may vary.

The pieces

SRC safety packet

Start hereQuarto, rendered

Cohort summary, DLT table, eDISH plot with the potential Hy's Law timing, QTcF categories, CTCAE lab shifts, AEs by SOC and preferred term, study-level indicators, and a dose-escalation section that lays out the data and the protocol's options for the committee, without recommending one.

MedDRA and CTCAE versions are document parameters (defaults v29.1 and v6.0).

How the screens work

Guide

Each rule with its source and a case from the data: why an upper-right eDISH point is not yet a Hy's Law case, why ALT 4.2x ULN with normal bilirubin still needs confirmation, how the CTCAE version changes a grade, and why the roll-up takes the worst level.

Snapshot

Read-only

The console's worklist, eDISH plot, dose-escalation tally, study tier and AE summary on one page, at the Cohort 4 data cut.

Shiny console and tests

R Shiny: runs in local RShinylive build: smoke-tested before each deploy

The console runs in local R; its Shinylive build is above. It needs only shiny, bslib and DT, keeps its data in the app folder and builds downloads in the browser. The run-and-build page lists every line, including the testthat and shiny::testServer() tests.

Definitions used

What was executed

DataSynthetic, ADaM-shaped CSVs written from one seed: 18 participants in four dosed cohorts, with planted cases for each rule.
Rules and consoleOne R file of rules drives the console, the guide, the snapshot and the packet. Tested with testthat and shiny::testServer() on R 4.6.0: 654 expectations in 69 tests pass, including each rule at its exact threshold and a second aminotransferase elevation that opens its own window.
PagesRendered with Quarto 1.10.19 on 25 October 2026; checked in headless Chrome in light and dark at desktop and phone widths.
In the browserThe site's publishing workflow exports the console with shinylive 0.5.0 (assets 0.10.12, webR 0.6.0). Before each deploy, the workflow's smoke test opens it in headless Chrome as a first-time visitor (run history ↗). On a local build on 26 October 2026, served under the site path, the console was ready about 7 seconds after the page opened, filled every listed panel with the expected values and every tab, followed the site's theme toggle both ways (R had the theme each time, and on the Liver tab both plots were drawn again), showed a focus outline on the tab strip from the keyboard and started again after a reload, with no page errors. Not checked in Safari, Firefox or on a phone's own browser.
Not doneNo validated system, no independent programming, no review by a medical monitor. The CTCAE v6.0 cut points follow admiral 1.5.0's metadata and were not re-checked against the NCI workbook. Drafted with AI assistance; the author's sign-off has not been given yet.

Related: the scheduled-monitoring jobs behind these checks are described, as SAS and R macros that have not been executed, in the monitoring and coverage wiki.