Safety Graphics Suite · Requirements & Feasibility

Five improvement ideas, scoped into actionable requirements

A working assessment of the safety-graphics to-do list — three renderer initiatives, one emerging program area, and one research track — each broken into concrete requirements with a high-level read on feasibility, what it builds on, and where the risk sits.

Prepared for Jeremy Wildfire Source colleague to-do list (5 items) Date 17 Jul 2026 Status Draft for review

Read this first — source coverage

All four referenced documents have now been read into this assessment: the composite-plot paper (Tesfaldet et al., Drug Safety 2024;47:699–710 — Paul "Skip" Hayashi a co-author), the ISG Renal Safety Explorer Manual v1.0, the CSRC Example QT Tool Display v2 mockup, and the QT Safety Explorer Draft Clinical Workflow (28 Apr 2025). Initiatives 01–03 are grounded in source and marked Source reviewed; 04 (Benefit-Risk) and 05 (recurrent AE) remain scoped from domain knowledge, as no source was provided. Feasibility here is a triage read, not a committed estimate.

Portfolio at a glance

Initiative Domain Feasibility Horizon Key dependency Recommended next step
01  Hep Explorer — composite plot Hepatic (DILI) High Near-term FDA reference code exists; needs baseline-abnormal demo cohort Port the composite-eDISH algorithm into the canvas renderer
02  Renal Explorer — finish & integrate Renal (KDIGO) Moderate Near / mid-term Shiny→suite port; import/mapping cross-cutting; cystatin C / urine gaps Land on-the-fly calc + dual-scale scatter first; scope the guided workflow separately
03  QT Explorer — build Cardiac (QTc) Moderate Near / mid-term QTcI individualized correction; multi-interval breadth; Shiny→suite port Map the mockup's views onto delta-delta / results-over-time / outlier-explorer; build QTcI
04  Benefit-Risk tools Cross-endpoint Exploratory Gated ASA taskforce scope (Waterhouse, via Mengchun) Hold for spec; pre-build the forest-plot primitive
05  Recurrent AE analysis Adverse events Exploratory Research + quick wins Statistician for formal models; MedDRA grouping Ship the descriptive quick wins now; scope modeling with stats
High — strong existing foundation, deterministic path, incremental build on shipped code.
Moderate — clearly buildable, but new construction and/or notable unknowns (data, spec, units).
Exploratory — blocked on external spec or specialist input; quick wins may exist ahead of the full effort.

Detailed assessment

INITIATIVE 01 Flagship renderer High feasibility
Hepatic safety · DILI

Hep Explorer — composite plot for patients with baseline liver abnormality

Extend the shipped hep-explorer (eDISH) with the FDA composite plot method for detecting DILI in patients who already have abnormal liver tests at baseline — the population where the standard ×ULN-normalized eDISH view is least reliable. The method anchors an eDISH-style view to each subject's own baseline (×BLN) alongside the population norm (×ULN).

What the method actually is

Not a single overlaid panel — a three-step construction. Step 1: a pretreatment eDISH classifies each subject by baseline ALT/BILI in ×ULN into the four quadrants (Normal & NN, Temple's Corollary, Cholestasis, Hy's Law), each given a colored symbol. Step 2: a peak on-treatment eDISH (×ULN) where subjects keep their baseline color, so quadrant-to-quadrant migration is visible. Step 3: a four-panel shift plot (one panel per on-treatment quadrant) re-plotting peak ALT and BILI as multiples of the subject's own baseline (×BLN), with 1× / 3× / 5×BLN reference lines. A color-coded migration table tallies moves of concern vs. potential benefit by arm.

Proposed requirements

  • HEP-C1Pretreatment eDISH classification. Classify each subject by baseline ALT/BILI (×ULN; ALT 3×, BILI 2× cut-lines) into the four quadrants and assign the paper's colored symbols, carried through every panel.
  • HEP-C2On-treatment migration view. Peak on-treatment eDISH (×ULN) with subjects retaining their baseline-quadrant color, surfacing migration from baseline to on-treatment.
  • HEP-C3×BLN composite shift panels. Four panels (by on-treatment quadrant) plotting peak ALT & BILI in multiples of the subject's own baseline, with 1×/3×/5×BLN reference lines showing magnitude and direction of change.
  • HEP-C4Migration table + concern coding. Pretreatment × on-treatment quadrant matrix with counts, color-coded red/yellow/green/gray for DILI concern, plus a by-arm summary of concerning vs. beneficial migrations.

Feasibility

High — algorithm fully specified, FDA reference code available

Builds on

The shipped hep-explorer module (safety.viz v1.2.0) — canvas eDISH, quadrant/threshold plugin, tooltip & drill-down. The algorithm is fully specified in the paper and FDA released reference code (github.com/FDA/Composite-eDISH-Plot, public domain) — nothing to reverse-engineer.

Data needs

Baseline + peak ALT/BILI in ×ULN — standard ADaM (BASE, ABLFL). A demo cohort with abnormal baselines (e.g. chronic hepatitis / chronic liver disease) to show the mode off.

Key unknowns / risk

Mostly a UI question — the composite is a multi-panel display plus a color-coded table, more than today's single eDISH panel. Paper's own noted limit: it doesn't incorporate ALP (cholestatic injury).

Effort

Moderate — larger than an axis toggle (four ×BLN panels + migration table), but materially de-risked by the reference implementation. Fits the evidence + gallery pipeline.

Source reviewedTesfaldet et al., Drug Safety 2024;47:699–710 — read in full. The scope above (3-step composite: baseline eDISH → migration eDISH → four-panel ×BLN shift, plus the migration table) reflects the paper's Section 2.2 and Figs 2–6. FDA reference code: github.com/FDA/Composite-eDISH-Plot (DOI 10.5281/zenodo.10892050, public domain).
INITIATIVE 02 Flagship renderer Moderate feasibility
Renal safety · KDIGO

Renal Explorer — finish it, and bring it into the suite

Complete the Renal Safety Explorer: give it a way to import data, the ability to map data that isn't already in ADaM, integrate it into the safety-graphics suite instead of running standalone, and compute derived values — eGFR, albumin/creatinine, BUN/creatinine — on the fly rather than requiring them precalculated.

Roadmap tie-in & what the manual specifies

A migration assessment already exists — hub #35 (verdict: GO, phased). The v1.0 manual fills in the detail: the existing tool is an R Shiny / safetyGraphics app whose core display is a scatter of each subject's maximal creatinine change, staged on two scales — KDIGO (relative) and Delta-Creatinine (absolute) — with a stage-proportion table. Click-through opens a patient profile (SCr/cystatin C change with stage lines, eGFR trend, electrolyte fold-change, BP, urine ACR). It also embeds a full Steps 1a–5d AKI evaluation workflow. The asks decompose into five sub-requirements — two renderer-local, two cross-cutting platform capabilities, and the guided workflow.

Proposed requirements

  • REN-1Suite integration. Port the Shiny/safetyGraphics tool into safety.viz as a first-class renderer (the hub #35 migration): the dual-scale KDIGO + Delta-Creatinine max-change scatter, stage table, and click-through patient profile.
  • REN-2On-the-fly derived values. Compute at render time eGFRcr and eGFRcr-cys (CKD-EPI 2021 race-free, exact Delgado 2022 equations in the manual), urine albumin:creatinine (mg/g, KDIGO A1/A2/A3 bands), and BUN:Cr (prerenal >20:1) — with unit normalization (µmol/L ↔ mg/dL, ÷88.4) and the manual's non-steady-state accuracy caveat carried into the UI.
  • REN-3Data import. A straightforward way to load a dataset — currently absent. Best treated as a shared suite capability, not renal-only (see cross-cutting note).
  • REN-4Non-ADaM mapping. An interactive mapping layer from arbitrary source columns to the domains/units the renderer expects — again a shared capability every renderer would use.
  • REN-5Guided evaluation workflow. The manual's literature-backed AKI workflow (staging → cystatin C concordance → injury period → BUN:Cr, hypotension, urinalysis, sediment score, FENa/FEUr). A distinct, higher-effort feature; several steps use data outside the core dataset.

Feasibility

Moderate — display & calc fully specified; import/mapping/workflow enlarge scope

Builds on

The hub #35 assessment + the existing canvas scatter/staging-zone and patient-profile patterns. The manual fully specifies the display, hover fields, staging thresholds, and the exact eGFR equations — little is left to interpretation.

Data needs

Creatinine + age/sex (eGFRcr); cystatin C (eGFRcr-cys — often absent); urine albumin & creatinine (ACR — often absent); BUN, electrolytes, BP. Manual confirms cystatin C and urine measures are typically not collected — matches the hub #35 gap.

Key unknowns / risk

Import (REN-3) + mapping (REN-4) are architectural, not renal-specific. eGFR accuracy caveat (non-steady-state creatinine). The guided workflow (REN-5) is a large add. Unit trap: absolute mg/dL thresholds vs. µmol/L source.

Effort

REN-1/REN-2 moderate, near-term; REN-3/REN-4 larger, better funded as a shared platform investment; REN-5 substantial (guided workflow + interpretation content).

Quick wins

  • Ship the on-the-fly eGFR / ACR / BUN:Cr calculators (REN-2) — the exact equations are in the manual; deterministic, and it removes the "must precalculate" friction immediately.
  • Land the dual-scale KDIGO + Delta-Creatinine max-change scatter as a suite renderer (REN-1) — hub #35 says the core scatter is demoable with today's data.
Source reviewedISG Renal Safety Explorer User's Manual & Workflow v1.0 (ASA Biopharm Safety WG) — read in full. It specifies the dual-scale scatter, click-through patient-profile plots, hover fields, KDIGO + Delta-Creatinine staging thresholds, the exact CKD-EPI 2021 eGFR equations, and the Steps 1a–5d AKI workflow. The existing tool is an R Shiny / safetyGraphics app, consistent with the hub #35 migration. Only screenshots of the finished tool are still to come.
INITIATIVE 03 Flagship renderer Moderate feasibility
Cardiac safety · QT/QTc · ICH E14

QT Explorer — build the tool from the CSRC-reviewed mockup

Build the QT Safety Explorer. A display mockup has been reviewed with the Cardiac Safety Research Consortium (Display v2) and a draft ICH-E14 clinical workflow drafted with them (28 Apr 2025). Like the renal tool, it exists today as an R Shiny / safetyGraphics app (v0.1); the suite version hasn't been started, but the spec is unusually complete.

What the mockup + workflow specify

Two display types, named explicitly in the workflow. Central tendency — mean/median QTcX over time by arm, with a Tmax marker and the ICH-E14 metric (largest upper bound of the two-sided 90% CI for the mean difference), read against a ~10 ms threshold. Outlier / categorical analysis — a scatter of QTc change-from-baseline vs. baseline QTc per timepoint, carrying both absolute cut-lines (450/480/500 ms, as diagonals) and change-from-baseline lines (30/60 ms, horizontal), colored by arm with moxifloxacin as positive control — plus count/% tables by arm. It spans intervals (QTc, HR, PR, QRS, JT), in Δ and double-delta (ΔΔ) form, with per-subject drill-down (ΔQTc/PR/QRS + K, Mg, TSH over time) and a QT-RR hysteresis plot.

Proposed requirements

  • QT-1Central-tendency display. Mean/median QTcX (Δ / ΔΔ) over time by arm, Tmax marker, and the ICH-E14 largest-upper-90%-CI-of-mean-difference metric against a ~10 ms reference.
  • QT-2Outlier scatter. QTc change-from-baseline vs. baseline QTc per timepoint, with absolute 450/480/500 ms diagonals and 30/60 ms change lines, colored by arm (moxifloxacin positive control).
  • QT-3Categorical tables. Counts/% exceeding the QTc thresholds by arm, plus PR (>220 ms / >25%) and QRS (>120 ms / >25%).
  • QT-4Correction + Δ toggles. QTcF, QTcB, and QTcI (individualized from per-subject QT-RR slopes; the "sum-of-squared-slopes" diagnostic), and Δ vs. ΔΔ (baseline- and placebo-adjusted).
  • QT-5Subject drill-down + hysteresis. Per-subject profiles (ΔQTc/PR/QRS + K, Mg, TSH over time) and a QT-RR hysteresis plot.
  • QT-6Guided ICH-E14 workflow. The Steps 1a–3d logic: central tendency ≥10 ms → HR/PR/QRS confounders → between-arm comparison → categorical outliers → hysteresis.

Feasibility

Moderate — best-specified greenfield; high reuse, but broad + QTcI modeling

Builds on

Strong reuse of shipped primitives: delta-delta (the ΔΔ concept is literally this renderer), results-over-time (central tendency), outlier-explorer + the scatter-with-zones grammar (outlier scatter), and patient-profile (drill-down). The CSRC mockup + workflow fix the display.

Data needs

ECG intervals (QT, RR/HR, PR, QRS) — ADaM ADEG; plus electrolytes (K, Mg), TSH, vitals for drill-down. Demo aligns with the xanomeline CDISC pilot + a moxifloxacin positive-control arm — confirm ECG/QT coverage in the demo package.

Key unknowns / risk

QTcI individualized correction is real modeling (per-subject QT-RR regression + correction-method selection). Breadth is the other load — 5–6 linked views, multi-interval, plus the guided workflow. Scope assumes generally-healthy adults (excludes congenital/structural long-QT).

Effort

Moderate–large as a full module, but front-loaded reuse makes QT-1/2/3 achievable early; QTcI (QT-4) and the workflow (QT-6) are the tail.

Source reviewedCSRC Example QT Tool Display v2 (6-slide mockup, incl. the change-vs-baseline outlier scatter with 450/480/500 diagonals) and the QT Safety Explorer Draft Clinical Workflow, 28 Apr 2025 (v0.1, ISG × CSRC) — both read in full. Note: the mockup does not feature concentration–QTc (C-QTc); an earlier draft of this assessment speculated it, now corrected. The existing tool is an R Shiny / safetyGraphics app, same lineage as the renal explorer.
INITIATIVE 04 New program area Exploratory · gated
Benefit-risk · cross-endpoint

Benefit-Risk tools — Forest Plot & Value Tree

The ASA working group merged the ISG taskforce with the Benefit-Risk Assessment Tools Suite taskforce — both build open-source tools for a common platform. Scope so far appears to be a Forest Plot and a Value Tree; Mengchun is confirming progress with Brian Waterhouse. Details are pending.

Proposed requirements (provisional)

  • BR-1Forest plot primitive. Point estimates with confidence intervals across endpoints / subgroups — a standard, broadly reusable chart (subgroup safety, meta-analysis, benefit-risk summaries).
  • BR-2Value tree. A hierarchical benefit-risk value tree (MCDA-style: weighted benefit and risk criteria). Less common; needs a defined data model for the criteria hierarchy.
  • BR-0Alignment first. Confirm the merged taskforce's tool list, data model, and platform target before firming BR-1/BR-2 — the requirement can't be fixed until the scope lands.

Feasibility

Exploratory — buildable, but blocked on external scope

Builds on

The forest plot is a well-understood viz with clear precedent; it would slot into the suite as a general primitive. The value tree is a newer structure for this stack.

Key unknowns / risk

Everything downstream of scope: which tools, whose data model, which platform. Building ahead of the taskforce decision risks rework.

Dependency

External — the merged ASA taskforce (Waterhouse, via Mengchun). "Stay tuned" is the current state; requirements stay provisional until then.

Effort

Forest plot: modest. Value tree: moderate (new data model + layout). Sequencing waits on BR-0.

Low-risk pre-investment

  • Build the forest-plot primitive (BR-1) now — it's independently useful across the suite (subgroup safety, KRI summaries) and de-risks the BR work whatever the taskforce decides.
INITIATIVE 05 Research track · wish list Exploratory
Adverse events · recurrent-event analysis

Recurrent AE analysis — beyond first occurrence

Today every AE frequency rate counts only the first occurrence of an event per patient. The wish-list tool would detect when a patient experiences the same (or a similar) AE repeatedly over time — and surface when the interval between events is shortening or severity is increasing. As noted, the statistics here are genuinely non-trivial and will need specialist support.

Proposed requirements

  • RAE-1Recurrence descriptives. Events-per-subject counts and distribution; a recurrence flag for subjects with ≥2 occurrences of the same preferred term.
  • RAE-2Mean Cumulative Function. MCF / Nelson-Aalen recurrent-event curves by arm — the standard non-parametric summary of event burden over time.
  • RAE-3Inter-event & severity trajectory. Gap-time between recurrences and severity across successive occurrences per subject — surfaces shortening intervals / escalation.
  • RAE-4Formal modeling (with stats). Recurrent-event models — Andersen-Gill, PWP gap-time, frailty/random-effect — and trend tests for interval shortening and severity increase.
  • RAE-5"Similar" event grouping. Define same-or-similar via the MedDRA hierarchy (PT → HLT/HLGT, or SMQ) rather than exact-PT only.

Feasibility

Exploratory overall — but the descriptive layer is High

Builds on

The existing ae-timelines renderer already draws per-subject event timelines — a natural home for gap-time and recurrence display (RAE-3). MCF is well-supported in R.

Data needs

ADaM ADAE with onset/end dates and severity (ASTDT/AENDT, AESEV/ASEV) — all standard, all available. RAE-5 needs the MedDRA hierarchy.

Key unknowns / risk

The formal modeling (RAE-4) is where "not as straightforward as I thought" lives — within-subject correlation, competing risks, and defining the estimand need a statistician before implementation.

Effort

RAE-1/2/3 small–moderate and shippable now; RAE-4 is a research collaboration, not a sprint.

Quick wins — highlighted per request

  • Events-per-subject counts + recurrence flag (RAE-1) — pure descriptive, immediately answers "who has repeats."
  • MCF curve by arm (RAE-2) — the standard, interpretable recurrent-event summary; no strong modeling assumptions.
  • Gap-time on ae-timelines (RAE-3) — extend a renderer we already ship rather than building new; makes shortening intervals visible.

Cross-cutting observations

Import + mapping is a suite capability, not a renal feature

The renal asks for data import (REN-3) and non-ADaM mapping (REN-4) are the same gap every renderer has — safety.viz currently expects pre-mapped input. And both the renal and QT explorers arrive as safetyGraphics R Shiny apps that bring their own data model, so the same import/mapping problem recurs with each port. Building it once, shared (a suite-level import + interactive mapping layer) serves the whole suite and the open.gismo platform — far better than a per-tool loader.

Three of five reuse the same scatter-with-zones spine

Hep composite, renal KDIGO, and the QT outlier scatter are all the same visual grammar: a scatter with reference thresholds/zones plus a patient drill-down. The QT mockup confirms it — its outlier view carries absolute and change-from-baseline cut-lines on one scatter, exactly the eDISH/KDIGO pattern. The suite's quadrant/threshold plugin, delta-delta renderer, and patient-profile pattern already carry it — which is why these read as achievable rather than novel.

Two items need people, not just code

Benefit-Risk (BR-0) is gated on the ASA taskforce scope, and recurrent-AE modeling (RAE-4) needs a statistician. Both have low-risk work that can start ahead of those conversations — the forest-plot primitive and the recurrent-AE descriptives respectively — so neither has to stall entirely.

Recommended sequencing

  1. All four sources are now reviewed — Initiatives 01–03 are source-grounded, so the gating question shifts from "get the docs" to build order. The hep composite plot, with FDA reference code in hand, is the natural first build.
  2. Ship the deterministic quick wins. On-the-fly renal calculators (REN-2, equations in hand), the hep composite mode (HEP-C1–C4, with the FDA reference code as a starting point), and the recurrent-AE descriptives (RAE-1/2/3). All build on shipped code.
  3. Promote import + mapping to a shared requirement. Scope REN-3/REN-4 as a suite/platform capability rather than renal-only, so every renderer benefits.
  4. Turn the QT mockup into a renderer requirement. Convert Display v2 + the clinical workflow into a scoped module (QT-1–4 for v1, QT-5 as fast-follow).
  5. Park BR and recurrent-AE modeling on their dependencies. Pre-build the forest-plot primitive (BR-1); open the stats conversation for RAE-4 — neither blocks the rest.