safety.viz release review 2026-10-08

What v1.10.0 adds, annotated

The demo app gains an RBQM tab. It scores a study’s sites with gsm’s own site metrics, worked out by R in your browser and drawn with gsm.viz’s own charts, on the study the other tabs are already drawing. The tab is Experimental. The histogram loses two deprecated settings, and no other chart changes.

3 of 8 metrics on the study the app opens with, at 17 sites 8 of 8 on raw files in gsm’s format, at 150 sites starting R: about 55.2 MB, once safety.viz v1.10.0, captured at 8ecd7ff

What to look at

  1. Open the demo app and click the RBQM tab. Nothing else is chosen or loaded. The tab says it will run on the loaded study’s two files, and that they support 3 of 8 metrics.
  2. Press Start R. The tab says what R is doing while it starts, then draws a site overview of 17 sites, with a scatter plot and a bar chart for the metric you choose.
  3. Choose a metric that did not run. In place of its charts it says which file it needs.
  4. On the Data tab choose the RBQM study, then go back to the RBQM tab. R is already running, so all eight metrics draw in a few seconds, at 150 sites.

Where it stands

  • safety.viz v1.10.0 is released (the release). This page was its review page, and the owner approved it (the release candidate).
  • Every picture was taken on 2026-10-09 from the dev site at the commit above, the one the release was made from, with real R running in the browser. After the release the same script was run against the released site, and every check held there too.
  • A script beside this page holds 23 things the page says to the live page that shows them, and all 23 held (the numbers it read).
  • The data is public or synthetic: the app’s pilot study is the public CDISC pilot study, and the RBQM study is synthetic, copied from the demo-301 study, which is built from the sample study that ships with gsm.core.
01 · the RBQM tab, on the loaded study

The RBQM tab, on the study you already loaded

The tab reads the loaded study’s subject-level and adverse events files, the same two the safety charts read, through the column mapping on the Data tab. There is no second study to load. On the pilot study those two files support three of gsm’s eight site metrics: adverse event rate, serious adverse event rate and study discontinuation rate.

The demo app on the pilot study with the RBQM tab open. A Start R button sits beside a sentence saying R will run gsm’s workflows on the loaded study’s adsl.csv and adae.csv and download about 55 MB once. Beneath it, a closed line reads: The loaded study supports 3 of 8 metrics.

Before the press. The tab says what it will run on, what starting R downloads and from where, and that the files stay in the browser. Nothing has been asked of R’s addresses yet.

The list under the summary line, opened. It says adsl.csv, the Subject-level file, gives Raw_SITE, Raw_STUDCOMP, Raw_STUDY and Raw_SUBJ, and adae.csv, the Adverse events file, gives Raw_AE. Under What they support, three metrics are marked as supported and five say which file they need.

Opened, the line lists what each file of the study gives gsm and which metrics that supports. It is worked out from the files’ columns before R starts, and R says the same when it runs.

The RBQM tab while R starts. The button is disabled and the sentence reads: Starting R: installing its packages, about 40 MB from repo.r-wasm.org and about 2 MB from this page. This is the longest step.

While R starts, the tab says which step it is on and counts the seconds.

The RBQM tab after R has run. A sentence says R ran 3 of 8 metrics on the loaded study’s adsl.csv and adae.csv. The site overview table has 17 rows, with columns for enrolled participants, red flags, amber flags and the three metrics. Beneath it, a row of eight metric buttons, three marked ran, and the adverse event rate’s scatter plot and bar chart.

After the press: “R ran 3 of 8 metrics on the loaded study’s adsl.csv and adae.csv in 3.3 seconds, 28 seconds after Start R was pressed.” The overview has a row for each of the 17 sites, and site 705 leads it with a red flag for adverse events. Each tick and arrow is the flag R returned for that site and metric; the red and amber counts are gsm.viz’s count of them.

What you should see

  • The RBQM tab reads “not run”, then “3 of 8”.
  • 17 sites in the overview, with columns AE, SAE and SDSC.
  • The first row is site 705: 16 enrolled, 1 red flag.
  • A scatter plot and a bar chart under the metric buttons.
  • The line of versions ends: “The metric workflows are gsm.kri 1.7.0’s and the charts gsm.viz 2.4.1’s.”

Try it

Open the RBQM tab
  1. Read the sentence beside Start R, then press it.
  2. Wait a minute or two the first time. The sentence says what R is doing.
  3. Click a cell in the SDSC column: the charts beneath switch to study discontinuation.
  4. Hover a cell to read its score, rate, numerator and denominator.

A metric that could not run says why

Five metrics need records the pilot study does not have: protocol deviations, lab toxicity grades, treatment completion and screening. Each stays in the row of metrics, marked “did not run”, and says which file it needs.

The study discontinuation rate chosen: its scatter plot of discontinuations against enrolled participants, and its bar chart of each site’s score.

Study discontinuation rate, the third metric the pilot study supports.

The screen failure rate chosen. In place of charts a sentence reads: Screen Failure Rate needs Raw_ENROLL.csv, which is not loaded.

“Screen Failure Rate needs Raw_ENROLL.csv, which is not loaded.” The sentence is R’s own.

It follows the mapping on the Data tab

R is handed only the columns the metrics need, under the app’s standard names, read through your mapping. So a study with its own column names works once its site, end-of-study day and end-of-study status are mapped. Clear a row of the mapping and R runs the study again at once, and names the column.

The RBQM tab after the site column’s row of the mapping was cleared. It reads R ran 0 of 8 metrics, and the adverse event rate says it needs the column SITEID, which no column of adsl.csv is mapped to.

With the site’s row cleared: “Adverse Event Rate needs the column SITEID, which no column of adsl.csv is mapped to.” The file may hold the column under another name, so the tab says it is not mapped, not that it is missing.

On a phone

The RBQM tab at phone width after R has run: the sentence, and the site overview table fitted to the screen.

The overview at 390 pixels wide. Nothing scrolls sideways.

The metric buttons and the adverse event rate’s scatter plot at phone width.

The metric buttons and a chart, stacked.

02 · all eight metrics

All eight metrics, on gsm’s raw files

A study that has gsm’s raw files runs every metric. The demo app carries one as a fourth demo study, and the tab takes your own files too. A raw file that is loaded is used as it is; the study’s own files fill in only for a table that is not loaded.

The RBQM tab on the RBQM study: R ran 8 of 8 metrics on the 9 loaded files. The site overview has eight metric columns and its first rows are sites named with their investigators.

The RBQM study: nine raw files in gsm’s format, for a synthetic study of 150 sites and 765 enrolled participants. “R ran 8 of 8 metrics on the 9 loaded files in 5 seconds, 30 seconds after Start R was pressed.” Here a site is labelled with its investigator’s name, because these files have one.

The RBQM tab after three files were chosen from disk. The list says Raw_SUBJ.csv is Raw_SUBJ, by its name; Raw_AE.csv is Raw_AE, by its name; and site_notes.csv is not recognised. The summary says 3 files loaded, 2 placed in a gsm raw domain, supporting 2 of 8 metrics.

Three files chosen from disk: “3 files loaded, 2 placed in a gsm raw domain. They support 2 of 8 metrics.” A file the tab does not recognise is named and stays out of R.

What you should see

  • On the RBQM study: “8 of 8”, and 150 sites.
  • Eight metric columns: AE, SAE, PD, IPD, LB, SDSC, TDSC, SF.
  • R is not started again: a study loaded after R is up runs at once.
  • For your own files: each placed in a raw domain by its name or its columns.

Try it

Open the Data tab
  1. Choose “RBQM study” from the study menu.
  2. Click the RBQM tab and press Start R, if R is not running yet.
  3. To try files of your own, open the line under the sentence and drop gsm raw files there, as CSV. Their column names must be gsm’s.
03 · what R does

What R does, and what stays in the browser

R computes every rate, score and flag the tab shows. The app’s JavaScript decides when R is asked, hands R’s tables to gsm.viz and writes the sentences. It computes no rate, score or flag. gsm.viz, gsm’s own chart code, counts each site’s red and amber flags for the overview’s two count columns and orders the rows by them.

Whose code runs

WhatFromHow it gets here
R itselfwebR, R 4.6.0Downloaded from webr.r-wasm.org when you press Start R
The functions that work out each metricgsm.core 1.3.1Built for R in the browser from its release tag, served beside the app
The mapping and reporting workflows, and the engine that runs themgsm.mapping 1.1.6, gsm.reporting 1.1.7, workr 1.1.0Built from their release tags, served beside the app
The eight metric workflowsgsm.kri 1.7.0Its workflow files and one R file are copied from its release tag. The package itself is not installed
The chartsgsm.viz 2.4.1Its built bundle, copied from its release tag
R’s other packagesThe public index for R in the browserDownloaded from repo.r-wasm.org

How the loaded study becomes gsm’s tables

Five small workflows, in the same format as gsm’s own and run by the same engine in R, make gsm’s raw tables from the app’s standard columns. These are choices, and each can change:

What it downloads, and what leaves

What R tells you when a study is not clean

These came from the release review, which ran R on studies the tests had not tried. The first three were fixed before this page was put in front of the owner.

How the numbers are checked

04 · the rest of the release

The rest of the release

Each chart links to its guide and its evidence

Under every chart in the demo app, a footnote links the chart’s clinical guide, where it has one, and its test evidence. The links open in a new tab, so a study you loaded stays loaded.

The hepatic explorer in the demo app. Beneath the chart a footnote reads: Hepatic Safety Explorer: Clinical guide · Test evidence.

“Hepatic Safety Explorer: Clinical guide · Test evidence” Six charts have a clinical guide; every chart has test evidence.

The histogram’s two p-value settings are removed

The v1.9.1 release notes said v1.10.0 would remove test_normality and compare_distributions, and it does. Each put a p-value on the chart that safety.viz worked out in JavaScript with a shortcut. The histogram now draws no p-value; a test belongs in R. Three older charts still make a statistical call in JavaScript, which is not new in this release and waits for a ruling (the interval in the adverse events explorer, the threshold mark in the QT explorer and the band on the time-to-event chart).

The safety histogram of alanine aminotransferase with a panel for each treatment group beneath it. No p-value or note about a test appears on the main chart or on any panel.

The histogram given both removed settings. It draws as it would without them: no p-value on the main chart or on a panel.

What changes for you

  • Take both settings out of your histogram settings. Nothing in safety.viz replaces them.
  • A chart still given one draws as before, without the p-value.
  • The console says so once for each: “safety.viz histogram: `test_normality` was removed in v1.10.0 and is ignored. The histogram draws no p-value: run the test in R.”
  • A chart that never set them is unchanged.

Checked on the live page

  1. The script gave the histogram on the dev site both settings, grouped by treatment group.
  2. It drew 5 panels and no p-value.
  3. The console said each setting was removed, once.
before you approve

What is not in this release

  • The query, data entry and data change metrics, and the three newer site metrics.
  • Country-level metrics, the time series chart and the report.
  • Mapping the column names of raw files that differ from gsm’s.
  • R in the single file: it loads nothing, so its RBQM tab says it needs R.
  • Investigator names on the pilot study’s sites: the study has none.

Where to look further