StatDataViewer Logo

For Clinical Programmers

Review SDTM & ADaM data without writing a line of code

StatDataViewer gives clinical SAS programmers instant access to every SDTM domain, supplemental dataset, and ADaM derivation — with the speed and precision of keyboard shortcuts. Free, offline, PHI-safe.

Windows 10/11 · macOS · Browser (WebAssembly)

StatDataViewer library filter applied across all SDTM domains for a single subject

Built around real clinical review workflows

🔎

Subject-level safety review

Right-click a USUBJID and press L. Every dataset in the library — AE, CM, MH, LB, VS — is instantly filtered to that subject. Flip through domains like pages in a patient narrative.

Old way: Write a WHERE clause in SAS, re-run for each domain.

→ Library filter docs
🔗

SUPPAE, SUPPEX, SUPPQS — joined in one click

Open AE and choose Join with Supplemental. StatDataViewer finds SUPPAE, pivots QNAM/QVAL using IDVAR/IDVARVAL, and adds the supplemental parameters as columns — no PROC TRANSPOSE, no code.

Old way: PROC SORT + PROC TRANSPOSE + PROC SQL merge, every single time.

→ SDTM tools docs
📊

Incidence counts in two keystrokes

Click AEDECOD, press N. You see distinct USUBJID counts per preferred term. Ctrl-click AEBODSYS too for a two-level crosstab. Replaces a full PROC FREQ call.

Old way: PROC FREQ with TABLES and BY statements.

→ Frequency docs
🔄

Delivery comparison without a SAS session

Compare the new ADSL delivery against the previous one: choose base and compare datasets, set ID variables, click Compare. Results show matched rows, unmatched rows, and every cell-level difference.

Old way: Write PROC COMPARE, check the log, run again.

→ Compare datasets docs
📈

Descriptive statistics for efficacy review

Right-click any numeric column → Descriptive Statistics. Set AVISIT as a BY variable to stratify by visit. N, mean, SD, min, max, median — no PROC MEANS required.

Old way: PROC MEANS with CLASS/BY statements.

→ Statistics docs
🗂️

Multi-study libraries side by side

Add SDTM, ADaM, and outputs as separate libraries with different colors. Name them SDTM, ADAM, OUT. The library filter and tab grouping keep you oriented across hundreds of datasets.

Old way: Multiple SAS explorer windows or repeated LIBNAME statements.

→ Libraries docs
🔒

PHI stays on your machine. Always.

StatDataViewer performs all processing locally. It makes no network requests with your data. There is no cloud sync, no telemetry, no analytics on your datasets. The macOS version runs inside the App Sandbox.

Suitable for clinical trial data under HIPAA, GCP, and 21 CFR Part 11 environments where data must not leave the controlled workstation.

Every format you work with

SAS dataset .sas7bdat

Full support including variable labels, formats, and lengths. Open directly — no SAS engine needed.

SAS transport .xpt

V5 and V8 transport format. The standard for CDISC regulatory submissions to FDA and EMA.

R data .rds / .rdata

For biostatistics teams working in R alongside SAS programmers.

SPSS .sav

With value labels shown — common in earlier-phase and academic trials.

Stata .dta

Stata 12–18. For global health and epidemiology datasets.

Excel .xlsx

CRF annotations, specs, edit check listings — without leaving StatDataViewer.

Learn five keys. Review data at full speed.

Every shortcut is a single letter matching the action name.

DDataset filter
LLibrary filter
FFrequency
NN USUBJIDs
GGo to variable
HHide column
CClear filter
ZUndo filter

→ Full shortcuts reference

Built by a clinical SAS programmer — for clinical SAS programmers

StatDataViewer started as a personal tool to handle the daily friction of reviewing SDTM and ADaM data: the repetitive WHERE clauses, the manual SUPP joins, the PROC FREQ calls, the PROC COMPARE boilerplate. It is now used by programmers across biotech, CRO, and pharmaceutical settings who need to move through data quickly and safely.

— Kenneth Yan, clinical SAS programmer & author of StatDataViewer

Start reviewing data faster — it's free