Quality / t-demographics
Display
Demographic and Baseline Characteristics — evidence
Age, sex, race and baseline characteristics by treatment arm over the safety analysis set.
64reviewed requirementsdisplays.md
21test recordsjs-unit · r-unit
0failing21 passing
14%requirement coverage9/64 evidenced
Requirements
| ID | Area | Requirement | Evidence type | Result |
|---|---|---|---|---|
| DSP-DEMO-001 | The age summary (n, mean, SD, median, min, max) by treatment arm equals the value computed directly from the vendored pilot ADSL on the intent-to-treat population; the display carries the report's Placebo, low dose, high dose, Total and p-value columns. | 1 passing | ||
| DSP-DEMO-002 | Sex, Race (Origin) and age-group counts and percentages by treatment arm and overall equal the values computed directly from ADSL, printed as the report prints them: integer percentages, a bare 0 for nobody, <1% for a share under half a percent. | 1 passing | ||
| DSP-DEMO-003 | Every p-value the display prints is the test the report's footnote names — one-way ANOVA across the three arms for a continuous block, Pearson's chi-square (no continuity correction) for a categorical one — recomputed independently and printed to four decimals, on the block's n row (or the first level of a sub-block) and nowhere else. | 1 passing | ||
| DSP-DEMO-004 | Race (Origin) is the report's classification recoded from the study's race and ethnicity — ethnicity first, then race — and reproduces 218 Caucasian, 23 African Descent, 12 Hispanic, 1 Other, with every Hispanic subject White by race so 218 + 12 = 230; the CDISC-coded race stays in the ARD for the narrative and is not rendered. | 1 passing | ||
| DSP-AEI-001 | The incidence display's any-event row and every organ-class and preferred-term row report, per arm, the subjects with at least one treatment-emergent event, the percentage of the safety population and the number of events in brackets, equal to a direct computation from the vendored ADAE and ADSL; the columns are the three arms and the two placebo comparisons. | no test | ||
| DSP-AEI-002 | Every p-value is Fisher's exact test of placebo against the active arm on subject incidence, printed to three decimals with an asterisk below 0.15 and >0.99 when it rounds to one, and blank where neither arm has a subject with the event. | no test | ||
| DSP-AEI-003 | Organ classes print alphabetically and preferred terms within a class by high-dose subjects descending then name, the order the reference prints; the serious-events table orders its terms by subjects summed across the arms, as its own program does. | no test | ||
| DSP-AEI-004 | The serious-events display counts through the incidence display's implementation (custom_from), carries no custom code of its own, and reports the three serious treatment-emergent events the data hold. | no test | ||
| DSP-FLOW-001 | The disposition figure counts the subjects screened (every subject in the study's SDTM DM), the screen failures (DM's arm label), the randomised (every subject in ADSL), the Week 24 completers (COMP24FL) and the study completers (the complement of DISCONFL), equal to a direct count of the vendored files — 306, 52, 254, 118 and 110 as the reference report's Figure 10-1 prints — draws them as a self-contained flow, and prints them in its table. | no test | ||
| DSP-SITE-001 | The subjects-by-site display counts, per site, per arm and overall, the intent-to-treat, efficacy and Week 24 completer subjects, equal to a direct count of the vendored ADSL, in twelve columns of arm by population with the TOTAL line last. | no test | ||
| DSP-SITE-002 | Every site is listed on its own line labelled with its pooled id and its own id; the seven small sites pool under 900 and follow the ten that stand alone, in the reference's order. | no test | ||
| DSP-INTXT-001 | The demographics display's in-text variant is the report's Table 11-1 — mean and range, percentages, race as White/Caucasian or other, no p-value column — rendered from the same ARD as the full table. | 1 passing | ||
| DSP-INTXT-002 | The incidence display's in-text variant is the report's Table 12-1: preferred terms reported by at least 5% of subjects in any arm, listed flat in title case without organ-class headings, an asterisk on an active-arm cell whose placebo comparison has p < 0.15. | 1 passing | ||
| DSP-INTXT-003 | The weight display's in-text variant is the report's Table 12-4: n and mean per arm for baseline weight and the change from baseline at Week 24 and at end of treatment, six columns from the weight table's own ARD. | 1 passing | ||
| DSP-DISP-001 | Randomised, treated, completed and discontinued counts reproduce EOSSTT by treatment arm, with percentages based on randomised subjects. | no test | ||
| DSP-DISP-002 | The derived discontinuation reasons partition the discontinued subjects exactly, in every column including Total, and the death count matches DTHFL. | no test | ||
| DSP-POP-001 | The ITT, Safety and Efficacy rows equal the counts of the study's own ITTFL, SAFFL and EFFFL in the CDISC pilot ADSL, by planned treatment group and overall, with percentages based on the group's randomised N. | no test | ||
| DSP-POP-002 | Complete Week 24 equals the study's COMP24FL; Complete Study is derived as the complement of the study's DISCONFL; and completing the study implies having completed Week 24. | no test | ||
| DSP-POP-003 | The display reads the packaging that states the flags it reports. EFFFL and COMP24FL are absent from the {pharmaverseadam} re-derivation of this study, so sources: phuse is forced by the analysis rather than chosen. | no test | ||
| DSP-POP-004 | Planned and actual treatment agree for all 254 subjects, which is what makes the planned-treatment grouping both displays declare — and footnote — report the same subjects an actual-treatment grouping would. | no test | ||
| DSP-EOS-001 | The three completion-status rows — completed Week 24, terminated early, status missing — partition every treatment group and the Total column exactly. | no test | ||
| DSP-EOS-002 | The nine reasons for early termination plus the missing-reason row partition the early terminations exactly, in every column including Total, so no subject falls through a reason the spec omitted. | no test | ||
| DSP-EOS-003 | A p-value appears on exactly the three rows the statistical analysis plan names — protocol completion, adverse event and lack of efficacy — and each equals a Fisher's exact test computed independently across the three treatment groups. No other row carries one. | no test | ||
| DSP-EOS-004 | Every percentage, the reason rows included, is based on the treatment group's randomised N rather than on the number of early terminations. | no test | ||
| DSP-REF-001 | Every cell t-populations and t-end-of-study publish equals the figure the CDISC pilot's own clinical study report printed for Tables 14-1.01 and 14-1.02 in 2006, from SAS programs sharing no code with this repository. The transcribed reference is at quality/data/reference-report-agreement.json; qc/reference-report-agreement.R compares it against both a from-scratch recomputation and the committed rendered HTML and exits non-zero on any disagreement, and --verify-transcription re-derives the transcription itself from the source document. | no test | ||
| DSP-REF-002 | Every cell t-demographics and t-exposure publish equals the figure the CDISC pilot's own clinical study report printed for Tables 14-2.01 and 14-4.01 — 58 report lines of four cells and a p-value, and 12 lines of six cells gathered from the rendered blocks the record names — as transcribed in quality/data/reference-report-agreement.json and re-derived from the pinned document by --verify-transcription. | no test | ||
| DSP-REF-003 | Every cell t-ae-incidence and t-sae-incidence publish equals the figure the CDISC pilot's own report printed for Tables 14-5.01 and 14-5.02 — 258 lines of three cells and two p-values, wrapped and truncated labels resolved to the data's terms — as transcribed in the agreement record and re-derived from the pinned document; the four p-values the 2006 program rounded a thousandth higher are recorded as known differences, printed as recomputed, and tracked. | no test | ||
| DSP-REF-004 | Every cell t-subjects-by-site publishes equals the figure the CDISC pilot's own report printed for Table 14-1.03 — eighteen lines of twelve counts — as transcribed in the agreement record and re-derived from the pinned document. | no test | ||
| DSP-EXP-001 | Duration-of-exposure statistics equal those computed directly from the ADEX TDURD parameter for each treatment arm. | no test | ||
| DSP-EXP-002 | Cumulative exposure categories are monotone non-increasing and each equals the number of subjects reaching that duration threshold. | no test | ||
| DSP-AE-001 | Any-AE and serious-AE subject counts and percentages equal the values computed directly from ADAE over the safety analysis set. | no test | ||
| DSP-AE-002 | Severity, seriousness and relatedness rows never exceed the any-AE row in any column — a subject counted in a subset must be counted in the whole. | no test | ||
| DSP-AE-003 | The event-count row supplied by custom.R counts ADAE records, not subjects, and exceeds the number of subjects reporting them. | no test | ||
| DSP-AE-004 | System organ class and preferred term subject counts equal the values computed directly from ADAE, with each subject counted once per term. | no test | ||
| DSP-AE-005 | The in-text variant of AET02 applies the 5% threshold declared in its spec: terms reaching 5% in any treatment group are shown, terms below it in every group are not, and the full display is unaffected. | no test | ||
| DSP-SAE-001 | The serious-AE listing has exactly one row per AESER == "Y" record, reports the recorded preferred terms and subjects, and is sorted as its spec declares. | no test | ||
| DSP-VS-001 | Every rendered cell of the vital signs summary -- three measures, three positions, three visits, three treatment groups -- equals the value the reference clinical study report printed for the same cell. | no test | ||
| DSP-VS-002 | Baseline and end of treatment each select at most one observed record per subject, parameter and position; end of treatment is that series' last planned visit after Week 0 up to and including Week 24, and never the Week 26 follow-up visit or a derived record. | no test | ||
| DSP-VSC-001 | Every rendered cell of the vital signs change display equals the value the reference report printed, and a subject with no observed Week 0 measurement contributes to no change row -- so a change row's n falls below the matching value row's n by exactly the number of subjects without a baseline. | no test | ||
| DSP-WT-001 | Every rendered cell of the weight display -- weight and weight change, at baseline, Week 24 and end of treatment -- equals the value the reference report printed. | no test | ||
| DSP-CM-001 | Subject counts by therapeutic class and coded medication equal those computed directly from ADCM, with each subject counted once per class and once per medication however many records they have, and the rendered percentage is that count over the treatment group's safety analysis set. | no test | ||
| DSP-CM-002 | No therapeutic class count exceeds the number of subjects taking any concomitant medication, and no medication count exceeds the class it is nested under -- a subject counted in a part is counted in the whole. | no test | ||
| DSP-CM-003 | The in-text variant of CMT01 applies the 5% threshold declared in its spec: medications reaching 5% in any treatment group are shown, medications below it in every group are not, and the full display is unaffected. | no test | ||
| DSP-VWC-001 | All four displays group by planned treatment over the safety analysis set, carry no pooled Total column, and head their columns with the safety analysis set sizes. On the pharmaverse re-derivation the library first read, planned and actual differed for twelve subjects, so the choice was consequential; on the study's own package (the default since v0.4.0, #60) the two agree for every subject, and both facts are asserted so the choice stays visible. | no test | ||
| DSP-VWC-002 | The committed three-route agreement record reports no disagreement, leaves no publishable statistic unchecked, and describes the iteration of each display that is committed now rather than an earlier one. | no test | ||
| DSP-EFF-001 | Every descriptive statistic in the six ANCOVA-style ADAS-Cog and NPI-X displays — n, mean, SD, median, minimum and maximum, at baseline, on treatment and for the change — equals the value computed directly from the vendored ADaM package, at the display's declared precision. | no test | ||
| DSP-EFF-002 | The ANCOVA statistics — dose-response p-value, pairwise differences of least-squares means, their standard errors, p-values and confidence intervals — reproduce the CDISCPILOT01 reference report exactly, for every display that reports them. | no test | ||
| DSP-EFF-003 | The Week-24 completers display reports the population size and the number of records summarised as separate statistics: its placebo column is headed N=60 while summarising 59 assessments, because one completer has no assessment inside the Week-24 window. | no test | ||
| DSP-EFF-004 | The over-time display's windowed and LOCF lanes select different record sets at Weeks 16 and 24 and identical ones at Week 8, every cell reproduces reference Table 14-3.10, and each visit's baseline row is the baseline of the subjects contributing to that visit rather than of the whole column. | no test | ||
| DSP-EFF-005 | The repeated-measures fit reproduces the reference report's own PROC MIXED output: the same 539 observations from 234 subjects, all six unstructured covariance parameters to six significant figures, and the REML criterion to eight. | no test | ||
| DSP-EFF-006 | The repeated-measures least-squares means are the visit-averaged treatment main effect, not the Week-24-conditioned estimate, and the two are far enough apart that a silent change of estimand would be caught. | no test | ||
| DSP-EFF-007 | The NPI-X endpoint is the per-subject mean over the Week 4 to Week 24 windows as the analysis plan defines it, and reproduces reference Table 14-3.12. The study's own NPTOTMN parameter does not: it omits exactly twelve subjects and adds none, and that difference stays measured. | no test | ||
| DSP-EFF-008 | A derived per-subject record refuses to carry a column that varies inside the subject, so a covariate can never depend silently on record order. | no test | ||
| DSP-EFF-009 | Every rendered cell of all nine displays matches the reference report, except the five cells of the repeated-measures display that the committed agreement record declares and explains. A sixth difference, or a different fifth, fails. | no test | ||
| DSP-CIBIC-001 | The n, mean, standard deviation, median and range printed at Weeks 8, 16 and 24 are the values the study's report printed for Tables 14-3.04, 14-3.06 and 14-3.02. | no test | ||
| DSP-CIBIC-002 | The analysis of covariance reproduces the report's dose-response p-value, pairwise p-values, differences of least-squares means, standard errors and confidence limits, with the model-level result printed once. | no test | ||
| DSP-CIBIC-003 | The column heading is the size of the efficacy analysis set and the n row is the number of subjects with a value at the visit; the two differ at Week 8 and the display does not conflate them. | no test | ||
| DSP-CIBIC-004 | The categorical analysis reports all seven CIBIC+ categories at all three visits, including those no subject fell into, and the counts partition the subjects assessed at that visit exactly. | no test | ||
| DSP-CIBIC-005 | The categorical p-value is the stratified Cochran-Mantel-Haenszel row-mean-scores statistic — the one of the three candidate statistics that reproduces the published values, and demonstrably not the general-association statistic. | no test | ||
| DSP-TTE-001 | The Kaplan-Meier display reproduces the event counts, percentages, censored counts, medians and confidence limits the report's narrative states; events and censored subjects sum to the number at risk; a median not reached is empty rather than a number. | no test | ||
| DSP-TTE-002 | The survival curve is drawn from the committed ARD and from nothing else: one series per treatment group, each non-increasing, ending at the ARD's final estimate, with the numbers-at-risk strip printing the ARD's counts. | no test | ||
| DSP-TTE-003 | The log-rank p-value is reported as <0.0001 rather than rounded to 0.0000, and the unrounded probability is retained in the ARD. | no test | ||
| DSP-ALL-001 | Every display in the library renders a table containing real numbers — no shells, no placeholder output. | 1 passing | ||
| DSP-ALL-002 | Every display declares a regulatory identifier, a source line naming the data cut-off, and at least one footnote. | 1 passing |
Test records
| Result | Suite | Test | Requirements | File |
|---|---|---|---|---|
| pass | js-unit | Gate: treatment consistency STD-GATE-001: a display whose arm counts differ from the study model fails the gate, and the error names the display, the arm and both numbers (#59) | STD-GATE-001 | tests/unit/study-model.test.js |
| pass | js-unit | Gate: treatment consistency STD-GATE-002: two displays reporting the same analysis set with different counts in one document is an error naming both, even when one of them matches the model (#59) | STD-GATE-002 | tests/unit/study-model.test.js |
| pass | js-unit | Gate: treatment consistency STD-GATE-003: a display with no population record is a named warning, never a silent pass; one with no arm grouping is warned and not counted as checked (#59) | STD-GATE-003 | tests/unit/study-model.test.js |
| pass | js-unit | Gate: treatment consistency STD-GATE-004: an analysis set the model does not declare is an error, not a skipped check (#59) | STD-GATE-004 | tests/unit/study-model.test.js |
| pass | js-unit | Gate: treatment consistency STD-GATE-005: the committed report assembles green on the gate, every placed display is gated by arm, and none of them read the alternate lane (#60) | STD-GATE-005 | tests/unit/study-model.test.js |
| pass | js-unit | Study model STD-MODEL-001: library/study.yaml loads with three arms in print order and every analysis set counted per arm (#59) | STD-MODEL-001 | tests/unit/study-model.test.js |
| pass | js-unit | Study model STD-MODEL-002: every assembly that declares treatment groups declares the model's arms, in the model's order (#59) | STD-MODEL-002 | tests/unit/study-model.test.js |
| pass | r-unit | DSP-ALL-001: every display renders a table that actually contains numbers (#1) | DSP-ALL-001 | test-displays.R |
| pass | r-unit | DSP-ALL-002: every display declares a regulatory identifier and a source line (#1) | DSP-ALL-002 | test-displays.R |
| pass | r-unit | DSP-DEMO-001: the age summary matches the pilot's ADSL computed directly, and the display is the intent-to-treat population with a Total column (#61) | DSP-DEMO-001 | test-displays.R |
| pass | r-unit | DSP-DEMO-002: sex, Race (Origin) and age-group counts and percentages match ADSL, printed the way the report prints them (#61) | DSP-DEMO-002 | test-displays.R |
| pass | r-unit | DSP-DEMO-003: every p-value on the display is the one-way ANOVA or Pearson chi-square the report's footnote names, recomputed independently (#61) | DSP-DEMO-003 | test-displays.R |
| pass | r-unit | DSP-DEMO-004: Race (Origin) is a stated recode of race and ethnicity, not a data conflict — 218 + 12 = 230 (#61) | DSP-DEMO-004 | test-displays.R |
| pass | r-unit | DSP-INTXT-001: the in-text demographics redraw is the report's Table 11-1 — mean and range, percentages, race as White/Caucasian or other — from the same ARD as the full table (#63) | DSP-INTXT-001 | test-displays.R |
| pass | r-unit | DSP-INTXT-002: the in-text incidence redraw is the report's Table 12-1 — terms at 5% or more in any arm, flat, in title case, an asterisk where the placebo comparison has p < 0.15 (#63) | DSP-INTXT-002 | test-displays.R |
| pass | r-unit | DSP-INTXT-003: the in-text weight redraw is the report's Table 12-4 — n and mean per arm for baseline and the changes at Week 24 and end of treatment — from the weight table's own ARD (#63) | DSP-INTXT-003 | test-displays.R |
| pass | r-unit | STD-MODEL-003: the treatment vocabulary and the analysis-set registry resolve from the study model, not from code (#59) | STD-MODEL-003 | test-study-model.R |
| pass | r-unit | STD-MODEL-004: every count the model declares is what the default lane's ADSL holds, per arm and per set (#59) | STD-MODEL-004 | test-study-model.R |
| pass | r-unit | STD-MODEL-005: every committed ARD carries a population record that agrees with the study model for its analysis set (#59) | STD-MODEL-005 | test-study-model.R |
| pass | r-unit | STD-SRC-001: the default registry serves every pilot dataset from the study's own package, and only the two datasets it lacks come from the alternate (#60) | STD-SRC-001 | test-study-model.R |
| pass | r-unit | STD-SRC-002: the pilot's ADVS prepares without derived-record or timepoint columns the alternate carries, and its series keys match (#60) | STD-SRC-002 | test-study-model.R |
Traceability
- ADaM datasets
- adsl
- ARD
- outputs/t-demographics/v007/ard.json
- ARD hash
- sha256:87af02747ecd7e74df308ac7fc521b68e22f7fad3fb86607e5e93d9d28cb82a5
- Display spec
- library/tfl/t-demographics/display.yaml
- Spec hash
- sha256:bc60600be035071da384b07199fb4b48cfc3f8b46e764e2db96d568a2bd34e20
- Iteration
- v007
Provenance
- Generated
- 2026-09-02T23:26:54.745Z
- Environment
- os Darwin 23.6.0 · node v24.14.0 · r 4.3.3
- CI run
- Not recorded for this evidence set