Clinical Data Lab / Evidence
Trust the trail,
not the badge.
Four distinct layers of QC. Actual executions and explicit gaps. No regulatory approval or validation claim.
What was checked
Run timestamp (UTC): . R reads unchanged inputs with haven; Python reads them with pandas. Each language independently calculates every case before comparing structured values. Shared input and analysis specifications are intentional; shared computed results are not used.
| Layer | Check | Status |
|---|---|---|
| analysis | baseline: Independent R / Python structured values (72 rows) | PASS |
| analysis | disposition: Independent R / Python structured values (90 rows) | PASS |
| analysis | longitudinal: Independent R / Python structured values (72 rows) | PASS |
| analysis | adverse-events: Independent R / Python structured values (2394 rows) | PASS |
| analysis | laboratory: Independent R / Python structured values (81 rows) | PASS |
| analysis | subgroups: Independent R / Python structured values (18 rows) | PASS |
| analysis | time-to-event: Independent R / Python structured values (363 rows) | PASS |
| analysis | fixtures: Both runtimes: mean=2, SD=1, n=3; tied event/censor KM S(2)=0.5, risk=3 | PASS |
| data | structure: Unique ADSL and ADTTE subjects; unique selected ADAS subject/visit; unique ALT End of Treatment subject; complete time/status; disposition reconciliation | PASS |
| package | package-tool: Existing package QC tool identity / permitted local entry point pending confirmation. No internal service contacted. | NOT-RUN |
| presentation | display: Browser acceptance recorded separately after build; see local REPORT.md. | NOT-RUN |
Download analysis evidence (JSON)
Package quality / risk
The existing R package QC tool has not been represented as successfully integrated. Its exact permitted local entry point has not been confirmed. Package-risk checks remain not run. The local import adapter requires an explicit tool identity, version, timestamp, package/version and individual checks; unsupported status values are rejected. A passing numeric comparison does not establish package quality or regulatory acceptance.
Presentation testing
Browser evidence belongs to a separate layer: responsive layouts, filtering, clipboard, actual downloads, keyboard use and network behavior. Local screenshots and logs live outside public assets. The analysis-run record above precedes these separate browser executions.
503 case assertions and 55 site navigation/search regression checks passed in Edge 153.0.4234.48; widths 390 / 768 / 1440 px. 262 downloaded rows were independently parsed and checked. Cold same-origin loading, blocked external requests, loaded-page offline filtering/export and error recovery passed.
Executed: 2026-09-21T18:24:40.984157+00:00. This is local Chromium evidence, not a complete WCAG or cross-browser certification.
Download reviewed presentation evidence (JSON)Data provenance
One public source, pinned and attributed
Source: CDISC SDTM/ADaM Pilot Project. Commit 667511d4b183871d74392ba691c935c38d431d39. Retrieved in this local run on 2026-09-21 UTC. CDISC supplies these as clinical test data. “Copilot” is not a separate verified dataset identity in this release.
The upstream Terms of Use govern the inputs; there is no blanket permissive software license for the data. They require attribution, prohibit misleading origin claims, prohibit distribution for a fee and contain restrictions on altering data. The raw XPT files are kept unchanged outside the website. Download links here contain newly calculated aggregate results, not repackaged participant datasets. This release shares attributed educational aggregate analyses; the upstream terms continue to govern the unchanged source data.
No employer datasets, private study results, or invented clinical endpoints are used. No additional synthetic dataset is mixed into these cases. The small known-answer numerical fixtures are separate artificial test vectors.
| File | SHA-256 |
|---|---|
| adsl.xpt | c5139f873a93ef6add77bc4297beb6460a398bbdd036874382a9f39dfc92091d |
| adae.xpt | b8678e70946473a753bb01d002917f478bf51b59bdd0dc19587b97128059b6a0 |
| adqsadas.xpt | ac3fa1217651810b0f15fe489fdda7d99eff10553ded025156ad7c1b89f84608 |
| adlbc.xpt | b9f6b5106965b5e2e3b33062a18710b58ceecc0c8cf1e54271849653037998ea |
| adtte.xpt | 68513fc4126744b6b2c7328eb70eb7b9683865d12c58b36539325f3c0c0ab93d |
| define.xml | 7e6d580e0839564f6f119c4ba7e15963d3cf7cd0c88e9f3d7da5ad396221b1cd |
| README.md | 11addb7d2bed754cc0440b546a097df864f184b37ecabf45a3e1516869896e5c |
Download provenance manifest · Source data dictionary (define.xml)
Coverage before chart choice
| Case | Verified coverage |
|---|---|
| Baseline characteristics | ADSL: USUBJID, TRT01A, SAFFL, SEX, RACE, AGE (years), WEIGHTBL (kg), BMIBL (kg/m^2). |
| Participant disposition | ADSL: USUBJID, TRT01A, SAFFL, SEX, DCDECOD, DISCONFL. COMP24FL is deliberately not used as study completion. |
| Longitudinal efficacy | ADQSADAS: PARAMCD = ACTOT, ANL01FL = Y, DTYPE blank; AVISIT, AVAL, BASE, CHG. ADSL supplies treatment and stratum. |
| Adverse events | ADAE: USUBJID, TRTEMFL, AEBODSYS (SOC), AEDECOD (PT). Denominator comes from ADSL, including subjects with no event. |
| Laboratory safety | ADLBC: PARAMCD = ALT (U/L), AVISIT = End of Treatment, BNRIND, ANRIND. L = low, N = normal, H = high; categories are those supplied by CDISC. |
| Exploratory subgroup effects | ADSL: TRT01P, ITTFL, AGE, SEX. ADQSADAS: ACTOT, AVISIT = Week 24, CHG, ANL01FL, DTYPE. |
| Time to dermatologic event | ADTTE: AVAL = ADT − STARTDT + 1 (days), CNSR = 0 event / 1 censored, PARAMCD = TTDE, EVNTDESC. This is not overall survival. |
Oncology response, waterfall and swimmer plots are not part of the CDISC Pilot cases: no suitable response endpoint was established. The separate Figure Library uses fictional teaching inputs for these templates. The supplied time-to-event endpoint is dermatologic safety, not overall survival. Participant profiles are deferred to keep this version focused on aggregate interpretation.
Reproducibility
The environment that actually ran
{
"python": {
"python": "3.13.13",
"packages": {
"numpy": "2.4.6",
"pandas": "3.0.3",
"scipy": "1.17.1"
},
"fixtures": "pass",
"seed": "not applicable: deterministic"
},
"r": {
"R": "4.6.0",
"packages": {
"haven": "2.5.5",
"jsonlite": "2.0.0",
"survival": "3.8.6",
"ggplot2": "4.0.3"
},
"fixtures": "pass",
"seed": "not applicable: deterministic"
}
}No new R, Python, npm or CDN dependency was installed. The local worktree reuses the existing frontend dependencies. R: haven (MIT), jsonlite (MIT), survival (LGPL ≥2), ggplot2 (MIT). Python: pandas / NumPy / SciPy (BSD family); plotting exports use the installed matplotlib. Versions are recorded, not claimed to be the newest available.
Official references: haven, ggplot2, survfit, SciPy Welch test. pharmaverse candidates admiral, rtables, tern, gtsummary and ggsurvfit were considered; this descriptive ADaM-input workflow does not need a new derivation or reporting dependency. They are not all installed here and no regulatory validation is implied.
Source ↔ result association
Executed source hashes and exact aggregate result hashes are recorded together. The page embeds source from the same files distributed for download.
| File | SHA-256 |
|---|---|
| analyze.py | 0293d208ce516b79f13ac3b932f47f83470399aef638f4615dd1854fb9c64f25 |
| analyze.R | 72a092e8a9faaf6ae0dd0fcadff8a7c9af27b5df115fe6bdb421372178c827f1 |
| fetch-data.py | 7d9b4f9948ad9aa87431b1f14e6b5de0e104b5d5e07e0010edfe2251f773efbf |
| verify.py | ab51ca787ecbc50833f1e552c34b23f5f4e0c05a6d8ff841d61545444355b918 |
| figures.py | db1fde82dcab5038ce4b4b70223855ad2824121ba32fc915e5f4db551f3e202d |
| figures.R | b58bc0cb9b10f6bb9afec46f40ce413f310dc1ae753d391e843a05731653b499 |
Architecture decision
Static delivery is enough for these questions.
| Option | Decision and tradeoffs |
|---|---|
| A · Precompute + browser interaction | Selected. R/Python compute locally; Astro serves aggregate JSON and a small first-party interaction module. No compute backend, account or upload endpoint. Every available sex stratum has separately computed estimates. Limited to explicitly prepared strata; does not promise arbitrary models or editing/running code. |
| B · webR / Pyodide / Shinylive | Not installed or benchmarked. Would add an execution runtime, package compatibility constraints, startup downloads and mobile memory pressure. Offline package availability and a full Shiny/teal application's static compatibility would need actual testing. Unnecessary for the current interaction scope. |
| C · R / Python service | Not created. Would require lifecycle, access control, dependency maintenance, concurrency limits and operating cost. Appropriate only if later requirements demand unsupported packages or compute-intensive user-defined analyses. Hosting would create additional data-handling responsibilities. |
R/Python execution takes place before publication. Core scripts, fonts and data are same-origin. Lab pages have a restrictive content security policy, no analytics integration and no outbound data submission. A static server is required to fetch JSON; opening HTML with file:// is not supported.