Appendix C — ADaM Reviewer’s Guide

This appendix describes the analysis datasets behind this report, in the spirit of a CDISC ADaM Reviewer’s Guide (ADRG): each dataset’s structure, its key derived variables, and the population flags used to select analysis subsets. It is a narrative companion to the metadata excerpt in Appendix B, not a substitute for it.

C.1 Dataset overview

Analysis datasets used in this report
Dataset Structure Key derived variables
ADSL One record per subject TRT01P/TRT01A, SAFFL, ITTFL, PPROTFL, COMPFL, DCSREAS, AGEGR1
ADAE One record per subject per adverse event TRTEMFL (subset to TRUE), RELFL, DERMFL
ADCM One record per subject per medication CMCLAS, CMDECOD (sentence case for display)
ADEG One record per subject per ECG parameter per visit BNRIND, ANRIND (reference-range indicators)
ADEX One record per subject AVAL (total exposure days), derived from EX
ADLB One record per subject per lab test per visit BNRIND, ANRIND, ANRHI (upper limit of reference range)
ADMH One record per subject per medical history finding MHBODSYS, MHDECOD (sentence case for display)
ADTTE One record per subject per time-to-event parameter AVAL, CNSR, derived with admiral::derive_param_tte()
ADVS One record per subject per vital-signs test per visit BNRIND, ANRIND (reference-range indicators)

All nine datasets derive from the CDISC pilot study (CDISCPILOT01) shipped in pharmaverseadam, restricted in R/00-adam.R to the three randomised treatment arms. Two additions come from outside pharmaverseadam: ADTTE is not shipped and is derived from ADSL and ADAE, and the reason for discontinuation is taken from the SDTM disposition domain in pharmaversesdtm, because the pilot ADSL does not carry one.

R/00-adam.R also writes data/counts.rds, holding the number of subjects screened, randomised, treated and completing, and the number excluded from ADTTE. Those counts describe subjects the analysis datasets exclude, so they cannot live in an analysis dataset; keeping them in the same snapshot is what lets the subject flow figure agree with the tables.

C.2 ADSL: Subject-level analysis dataset

ADSL carries one record per randomised subject and the population flags that select analysis subsets throughout this report:

  • SAFFL: safety population, subjects who received at least one dose of study drug.
  • ITTFL: intention-to-treat population; every randomised subject is "Y", since all were randomised and dosed. Intention-to-treat analyses count subjects under TRT01P regardless of what they actually received.
  • PPROTFL: per-protocol population, approximated as safety-population completers. The pilot ships no protocol deviation dataset; the only deviation information available is discontinuation for protocol violation, and those subjects are already excluded as non-completers.
  • COMPFL: completers, derived from EOSSTT == "COMPLETED".
  • DCSREAS: reason for discontinuation, merged from the SDTM disposition domain and set to missing for subjects who completed, so that the reason rows of the disposition table sum to the discontinuation count.

TRT01P and TRT01A (planned and actual treatment for period 01) drive the by-treatment columns of this report, and they do not agree for every subject: 12 subjects randomised to the high dose received the low dose. Population, disposition, baseline and efficacy outputs are therefore reported by TRT01P, and safety outputs by TRT01A, so the group sizes differ between the two families of tables by design.

C.3 ADAE: Adverse events analysis dataset

ADAE is restricted to treatment-emergent events (TRTEMFL == "Y") reported by safety-population subjects. Two flags derived in R/00-adam.R are used beyond the standard ADaM variables:

  • RELFL: related to study drug, derived from AEREL %in% c("PROBABLE", "POSSIBLE", "RELATED").
  • DERMFL: dermatologic event, derived from AEBODSYS == "SKIN AND SUBCUTANEOUS TISSUE DISORDERS"; this flag identifies the events contributing to the primary endpoint.

C.4 ADCM and ADMH: Concomitant medications and medical history

ADCM carries one record per medication per safety-population subject, summarised by ATC level 1 drug class (CMCLAS) and preferred term (CMDECOD). Medications the pilot study left uncoded are reported under a single Uncoded class rather than dropped.

ADMH carries one record per medical history finding. The primary diagnosis of Alzheimer’s disease is recorded once for every subject with no coded body system; it is the indication rather than a medical history finding, so R/00-adam.R excludes it. Medical history is a baseline characteristic, so it is summarised on the randomised population by planned treatment.

C.5 ADEX: Exposure analysis dataset

ADEX carries one record per subject with total exposure duration (AVAL, parameter TDURD), restricted to the safety population. Table 14.3.5 draws directly from this dataset without further derivation.

C.6 ADLB, ADVS and ADEG: Laboratory, vital-signs and ECG analysis datasets

These three share the same structure: one record per subject per test per visit, restricted to the safety population, with a baseline reference-range indicator (BNRIND) carried onto every post-baseline record alongside that record’s own indicator (ANRIND). That shared structure is what lets R/tlf.R’s tlf_shift() compute the shift-from-baseline tables (Table 14.3.4.1 to Table 14.3.4.4, Table 14.3.7 and Table 14.3.8) identically for all three domains, keyed only by PARAM.

ADEG differs in two ways. Its analysis records are averages of replicate readings, so they carry DTYPE == "AVERAGE" rather than a missing DTYPE, and only the rederived QTcF, QTcB, QTlc, QT, RR and heart-rate parameters carry reference-range indicators; the ECG interpretation parameter does not.

ADLB additionally carries ANRHI, the upper limit of the reference range for each record, which is what makes the liver-injury criteria in Table 14.3.4.5 expressible as multiples of that limit.

C.7 ADTTE: Time-to-event analysis dataset

ADTTE is derived, not sourced, since pharmaverseadam does not ship a time-to-event dataset for this study. R/00-adam.R builds it with admiral::derive_param_tte() from two sources:

  • An event source, the first dermatologic treatment-emergent adverse event per subject (ASTDT, one row per subject via slice_min()).
  • A censoring source, the subject’s last date known to be alive (LSTALVDT), for subjects without a qualifying event.

AVAL is the resulting time to event in days, and CNSR distinguishes events (0) from censoring (1). Records without a positive AVAL are dropped, and the number of subjects that removes is recorded in data/counts.rds so the analysis population can be reconciled with the safety population. TRT01P, TRT01A, SAFFL, PPROTFL, AGE, AGEGR1 and SEX are merged back from ADSL so that the primary and supportive analyses in the primary and secondary endpoints chapter need no further joins.