Session
No shell read yet
Study list
The sessions started in this browser, newest first, with where each stands. Sessions are private to the browser that started them; open any other by its link.
Disagreeing cell
The trace names both sides. It does not say which one is wrong — a misread photo looks exactly like a wrong program.
How this works
Read it once. The last two parts keep you out of trouble.
| 1 | Bring the pages in, any way you like. The shell — or an old filled output — is required; the spec supplies the population and treatment variable, the old program supplies the house style. Each slot takes a phone photo, a chosen image, or screenshots pasted with Ctrl+V — choose Paste screenshots here on a slot and paste as many as you need. A shell can also be an RTF, DOCX, XLSX or text file; a spec can be Word, Excel or a text PDF; a program can be a .sas, .r, Word or text file. Files are read directly — no camera and no vision model. |
| 2 | Read. Photographs go through a vision model; files and pasted text go through a text model or, for a shell file, a deterministic parser. Which one read each page is recorded. Nothing is generated and nothing is trusted yet. |
| 3 | Check. The gate the whole thing rests on. The shell comes back as an editable table set the way the output will be set. Fix any misread term or digit. Every correction is recorded with its before and after. |
| 4 | Generate and run. R and SAS are written in the house style; the R is executed here. Upload the study's own ADaM first if the numbers are to mean anything. |
| 5 | Shell against output. The shell the model understood, next to the table the program produced, in the same layout. Cells that disagree with a photographed number are marked. |
| 6 | Sign and download. Programs, output, reconciliation, the photos with their hashes, every correction, and a hash-chained audit trail. |
Your data, or demo data
Without the study's own ADaM the R runs on synthetic demo data, so a photo from another study will always mismatch. ADSL (or ADPL) is also what the treatment columns are matched against.
What this will not pretend
| The SAS is never executed. No SAS licence runs on this server. The numbers come from the R; run the SAS yourself and compare. | |
| House macros are recorded, not called. Their definitions are not here; a program calling an undefined macro does not run. | |
| Rows it cannot derive are named. They still print the population count, so read the gap report, not only the table. | |
| The sign-off is an application record, not a qualified Part 11 signature unless your identity controls sit in front of this app. | |
| A disagreement with the photo means the program and the page differ. It does not say which is wrong. | |
| Your column headings are never rewritten. A heading you confirm at Check is what prints in the output, even when the filter behind it resolves to an arm your data words differently — that mapping is reported as a gap, not applied by renaming your column. Where a heading matches no treatment value at all, the column prints empty rather than borrowing another arm’s numbers. |
A document holding many tables
Upload it as the shell, or with Split document of many shells. Every table it holds runs in its own session, and all of them are listed on the screen you uploaded on under Tables from documents uploaded here — open, PDF, RTF, and All kits (PC). A spec, program or ADaM you add to this session is copied into every one of those tables; a table built before you added it says so and offers a re-run.
Everything you give is kept, exactly
Each file, photo and paste is stored as received — a paste keeps what your clipboard sent — and listed with its SHA-256 in inputs.json, which is in the download. Removing a photo takes it out of the reading but keeps it under photos/_removed/. Uploading the same file twice is recorded but not read twice.
PC Verification (SAS) — optional
On the output, PC Verification (SAS) downloads a kit your PC runs in SAS and compares cell for cell against the R. Its label starts as R-EXECUTED. NOT PC-TESTED. and changes only when the PC sends its report back; the Verdict page shows each check. It never holds your output back.
Adverse-event tables
A system organ class row and the preferred terms under it are counted from the same adverse-event records, so a body system can never show fewer subjects than a term inside it. If the numbers ever break that rule the run log says NESTVIOLATION and names the row and column. Every treatment column prints its (N=..) even if your shell did not.
Moving between phone and PC
Choose Continue on another device. Type the six-character code on the other device, or scan the QR. The session, photos, data and output are all on the server; nothing lives only in the phone.
Continue on another device
Open this session in Chrome on a PC, or send a PC session to a phone. The code is live for 30 minutes.
Health
What is true about this build right now, in the order it matters while testing. Every panel below either answers or says it could not — none of them shows green by default.
1 · Safety checks
The gate suite — the tests that must pass before this tool is believed.
2 · What this run decided for you
Choices the generated program made because your shell did not say. These are the ones to argue with.
3 · Is this build current
Whether the app you are clicking is the code in the repository.
4 · Model and providers
Which model reads your photographs, and what it falls back to.
Photograph the pages
The shell is required. A spec page and an old program change the result: population and treatment variable from the spec, house style from the program.
Many shells in one document
A binder — a CSR PDF, an RTF or a Word document holding many outputs. It is split into the shells it contains; you tick the ones you want and each one runs as its own session, so a shell that fails does not touch the others.
Tables from documents uploaded here
Every output split out of a multi-table document you uploaded in this session — open it, download it, or send it to the PC for SAS. Specs, programs and data you add to this session are copied into each of them; a table built before you added one is marked and can be re-run.
Read the photos
A vision model transcribes each page. Nothing is generated yet.
Check what it read
This is the gate. The shell is set below the way the output will be set. Fix any misread name or digit before generating.
Check the derivation
The second gate. The first one asked whether the model read the page correctly; this one asks whether it is counting the right thing. Every row shows the dataset and variable it will be counted from — change any of them and the program changes with it.
Generate and run
R is generated and executed here. SAS is generated as a mirror and never executed — there is no SAS licence on this server.
No ADaM to hand? Declare what it holds instead
Paste PROC CONTENTS output, a define extract, or lines like ADSL: USUBJID, AGE, SEX, SAFFL. No data leaves your machine. It is used for exactly what an uploaded dataset is used for: judging each derivation above, and putting a PLACEHOLDER in the program for every analysis variable your ADaM does not have — so you get a real program and a real gap list now, and swap in the numbers when the data exists.
Sponsor ADaM spec — read it back before anything is built
Upload the sponsor's spec as .xlsx, .csv, define.xml, .docx, .pdf, or a PROC CONTENTS listing (.txt/.lst). The tool shows every variable it read. Anything it could not read cleanly, and any variable this table needs that the spec lacks, blocks — it is never replaced by a plausible-looking name. Nothing is generated until you confirm.
Shell against output
Left: the shell as the model understood it. Right: the table the program produced. Same layout, so a wrong reading is visible before any number is.
Programs and files
The gap report knows what the tool could not derive. It cannot know what it derived confidently and got wrong. That is what this records, and what the next version learns from.
Ask about this table
Answers come from this table — its rows, their derivations, the code that ran — with the house skills and the PHUSE and PharmaSUG papers behind them. Every source used is listed.
Sign and download
The package carries the programs, the output, the reconciliation, the photos, and a hash-chained audit trail.
What you think of this run, in your words — what was right, what was wrong, what you had to fix by hand. It is stored with the session and is what the next version is improved from.
The programmer runs, a different person reviews, and the signer is neither. Names are typed, so this catches a slip, not an impostor. Sign-off without a review is still possible; the record then says no independent review stood behind it.