TFL Gallery / t-ae-overview
AET01 · Table
Overview of Treatment-Emergent Adverse Events
Subject counts for any AE, related AEs, serious AEs, and AEs leading to discontinuation or death.
- Slug
- t-ae-overview
- Regulatory ID
- AET01
- Type
- Table
- E3 position
- §14.3.1
- Status
- evidenced
- Current iteration
- v002
- Datasets
- adae, adsl
- Evidence
- 7/7 passing
- Requirements
- DSP-AE-001 DSP-AE-002 DSP-AE-003 DSP-AE-004 DSP-AE-005 DSP-ALL-001 DSP-ALL-002 DSP-DEMO-001 DSP-DEMO-002 DSP-DISP-001 DSP-DISP-002 DSP-EXP-001 DSP-EXP-002 DSP-SAE-001
Generated by the same pipeline run that wrote the ARD and the HTML above, from the same rendered cells; the short hash is the manifest's record of the file.
| Overview of Treatment-Emergent Adverse Events | ||||
| Study CDISCPILOT01 — Safety Analysis Set | ||||
| Placebo (N=86) | Xanomeline Low Dose (N=96) | Xanomeline High Dose (N=72) | Total (N=254) | |
|---|---|---|---|---|
| Adverse events | ||||
| Number of events | ||||
| Subjects with ≥1 adverse event | ||||
| Subjects with a serious adverse event | ||||
| Subjects with a fatal adverse event | ||||
| Subjects with a related adverse event | ||||
| Subjects by severity, n (%) | ||||
| Mild | ||||
| Moderate | ||||
| Severe | ||||
| A treatment-emergent adverse event is an event with TRTEMFL = 'Y'. | ||||
| Percentages are based on the number of subjects in the safety analysis set for each treatment group. | ||||
| Subjects reporting more than one event are counted once in each row they qualify for; severity rows count subjects with at least one event of that severity and therefore do not sum to the number of subjects with any event. | ||||
| Source: adae, adsl (pharmaverseadam). Data cut-off: 2014-07-01. | ||||
| open.csr display t-ae-overview (post_text variant); generated from the committed ARD. | ||||
Rendered from outputs/t-ae-overview/v002/table.html.
| analysis | group1 | group1_level | group2 | group2_level | variable | variable_level | context | stat_name | stat_label | warning | error | stat |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| n_events | TRT01A | Placebo | — | — | AENUM | — | event_count | n | Number of events | — | — | 281 |
| n_events | TRT01A | Xanomeline Low Dose | — | — | AENUM | — | event_count | n | Number of events | — | — | 427 |
| n_events | TRT01A | Xanomeline High Dose | — | — | AENUM | — | event_count | n | Number of events | — | — | 414 |
| n_events | TRT01A | Total | — | — | AENUM | — | event_count | n | Number of events | — | — | 1122 |
| any_ae | TRT01A | Placebo | — | — | AEFL | Y | subject_count | n | n | — | — | 65 |
| any_ae | TRT01A | Placebo | — | — | AEFL | Y | subject_count | N | N | — | — | 86 |
| any_ae | TRT01A | Placebo | — | — | AEFL | Y | subject_count | p | % | — | — | 0.755813953488372 |
| any_ae | TRT01A | Xanomeline Low Dose | — | — | AEFL | Y | subject_count | n | n | — | — | 84 |
| any_ae | TRT01A | Xanomeline Low Dose | — | — | AEFL | Y | subject_count | N | N | — | — | 96 |
| any_ae | TRT01A | Xanomeline Low Dose | — | — | AEFL | Y | subject_count | p | % | — | — | 0.875 |
| any_ae | TRT01A | Xanomeline High Dose | — | — | AEFL | Y | subject_count | n | n | — | — | 68 |
| any_ae | TRT01A | Xanomeline High Dose | — | — | AEFL | Y | subject_count | N | N | — | — | 72 |
| any_ae | TRT01A | Xanomeline High Dose | — | — | AEFL | Y | subject_count | p | % | — | — | 0.944444444444444 |
| any_ae | TRT01A | Total | — | — | AEFL | Y | subject_count | n | n | — | — | 217 |
| any_ae | TRT01A | Total | — | — | AEFL | Y | subject_count | N | N | — | — | 254 |
| any_ae | TRT01A | Total | — | — | AEFL | Y | subject_count | p | % | — | — | 0.854330708661417 |
| serious_ae | TRT01A | Placebo | — | — | AESERFL | Y | subject_count | n | n | — | — | 0 |
| serious_ae | TRT01A | Placebo | — | — | AESERFL | Y | subject_count | N | N | — | — | 86 |
| serious_ae | TRT01A | Placebo | — | — | AESERFL | Y | subject_count | p | % | — | — | 0 |
| serious_ae | TRT01A | Xanomeline Low Dose | — | — | AESERFL | Y | subject_count | n | n | — | — | 2 |
| serious_ae | TRT01A | Xanomeline Low Dose | — | — | AESERFL | Y | subject_count | N | N | — | — | 96 |
| serious_ae | TRT01A | Xanomeline Low Dose | — | — | AESERFL | Y | subject_count | p | % | — | — | 0.0208333333333333 |
| serious_ae | TRT01A | Xanomeline High Dose | — | — | AESERFL | Y | subject_count | n | n | — | — | 1 |
| serious_ae | TRT01A | Xanomeline High Dose | — | — | AESERFL | Y | subject_count | N | N | — | — | 72 |
| serious_ae | TRT01A | Xanomeline High Dose | — | — | AESERFL | Y | subject_count | p | % | — | — | 0.0138888888888889 |
| serious_ae | TRT01A | Total | — | — | AESERFL | Y | subject_count | n | n | — | — | 3 |
| serious_ae | TRT01A | Total | — | — | AESERFL | Y | subject_count | N | N | — | — | 254 |
| serious_ae | TRT01A | Total | — | — | AESERFL | Y | subject_count | p | % | — | — | 0.0118110236220472 |
| fatal_ae | TRT01A | Placebo | — | — | AEFATFL | Y | subject_count | n | n | — | — | 2 |
| fatal_ae | TRT01A | Placebo | — | — | AEFATFL | Y | subject_count | N | N | — | — | 86 |
| fatal_ae | TRT01A | Placebo | — | — | AEFATFL | Y | subject_count | p | % | — | — | 0.0232558139534884 |
| fatal_ae | TRT01A | Xanomeline Low Dose | — | — | AEFATFL | Y | subject_count | n | n | — | — | 1 |
| fatal_ae | TRT01A | Xanomeline Low Dose | — | — | AEFATFL | Y | subject_count | N | N | — | — | 96 |
| fatal_ae | TRT01A | Xanomeline Low Dose | — | — | AEFATFL | Y | subject_count | p | % | — | — | 0.0104166666666667 |
| fatal_ae | TRT01A | Xanomeline High Dose | — | — | AEFATFL | Y | subject_count | n | n | — | — | 0 |
| fatal_ae | TRT01A | Xanomeline High Dose | — | — | AEFATFL | Y | subject_count | N | N | — | — | 72 |
| fatal_ae | TRT01A | Xanomeline High Dose | — | — | AEFATFL | Y | subject_count | p | % | — | — | 0 |
| fatal_ae | TRT01A | Total | — | — | AEFATFL | Y | subject_count | n | n | — | — | 3 |
| fatal_ae | TRT01A | Total | — | — | AEFATFL | Y | subject_count | N | N | — | — | 254 |
| fatal_ae | TRT01A | Total | — | — | AEFATFL | Y | subject_count | p | % | — | — | 0.0118110236220472 |
| related_ae | TRT01A | Placebo | — | — | AERELFL | Y | subject_count | n | n | — | — | 43 |
| related_ae | TRT01A | Placebo | — | — | AERELFL | Y | subject_count | N | N | — | — | 86 |
| related_ae | TRT01A | Placebo | — | — | AERELFL | Y | subject_count | p | % | — | — | 0.5 |
| related_ae | TRT01A | Xanomeline Low Dose | — | — | AERELFL | Y | subject_count | n | n | — | — | 77 |
| related_ae | TRT01A | Xanomeline Low Dose | — | — | AERELFL | Y | subject_count | N | N | — | — | 96 |
| related_ae | TRT01A | Xanomeline Low Dose | — | — | AERELFL | Y | subject_count | p | % | — | — | 0.802083333333333 |
| related_ae | TRT01A | Xanomeline High Dose | — | — | AERELFL | Y | subject_count | n | n | — | — | 64 |
| related_ae | TRT01A | Xanomeline High Dose | — | — | AERELFL | Y | subject_count | N | N | — | — | 72 |
| related_ae | TRT01A | Xanomeline High Dose | — | — | AERELFL | Y | subject_count | p | % | — | — | 0.888888888888889 |
| related_ae | TRT01A | Total | — | — | AERELFL | Y | subject_count | n | n | — | — | 184 |
| related_ae | TRT01A | Total | — | — | AERELFL | Y | subject_count | N | N | — | — | 254 |
| related_ae | TRT01A | Total | — | — | AERELFL | Y | subject_count | p | % | — | — | 0.724409448818898 |
| sev_mild | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | n | n | — | — | 58 |
| sev_mild | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | N | N | — | — | 86 |
| sev_mild | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.674418604651163 |
| sev_mild | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 64 |
| sev_mild | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 96 |
| sev_mild | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.666666666666667 |
| sev_mild | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 64 |
| sev_mild | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 72 |
| sev_mild | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.888888888888889 |
| sev_mild | TRT01A | Total | — | — | AESEVFL | Y | subject_count | n | n | — | — | 186 |
| sev_mild | TRT01A | Total | — | — | AESEVFL | Y | subject_count | N | N | — | — | 254 |
| sev_mild | TRT01A | Total | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.732283464566929 |
| sev_moderate | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | n | n | — | — | 25 |
| sev_moderate | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | N | N | — | — | 86 |
| sev_moderate | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.290697674418605 |
| sev_moderate | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 58 |
| sev_moderate | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 96 |
| sev_moderate | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.604166666666667 |
| sev_moderate | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 46 |
| sev_moderate | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 72 |
| sev_moderate | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.638888888888889 |
| sev_moderate | TRT01A | Total | — | — | AESEVFL | Y | subject_count | n | n | — | — | 129 |
| sev_moderate | TRT01A | Total | — | — | AESEVFL | Y | subject_count | N | N | — | — | 254 |
| sev_moderate | TRT01A | Total | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.507874015748031 |
| sev_severe | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | n | n | — | — | 5 |
| sev_severe | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | N | N | — | — | 86 |
| sev_severe | TRT01A | Placebo | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.0581395348837209 |
| sev_severe | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 16 |
| sev_severe | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 96 |
| sev_severe | TRT01A | Xanomeline Low Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.166666666666667 |
| sev_severe | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | n | n | — | — | 8 |
| sev_severe | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | N | N | — | — | 72 |
| sev_severe | TRT01A | Xanomeline High Dose | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.111111111111111 |
| sev_severe | TRT01A | Total | — | — | AESEVFL | Y | subject_count | n | n | — | — | 29 |
| sev_severe | TRT01A | Total | — | — | AESEVFL | Y | subject_count | N | N | — | — | 254 |
| sev_severe | TRT01A | Total | — | — | AESEVFL | Y | subject_count | p | % | — | — | 0.114173228346457 |
88 rows, one per computed statistic.
- Schema
- opencsr/ard/v1
- Generated
- 2026-07-27T03:23:34Z
- Spec hash
- sha256:6b0ba696f8cb4abffc3741982f36bb3bc4a47a68d84e0da1cb5cbf210c19a90a
- Display hash
- sha256:04520444415a62c1f632d67d37a67e33c3f2a9dd4c9b7006cae32eb21bcdf2bb
- ARD file
- outputs/t-ae-overview/v002/ard.json
- ARD hash
- sha256:96f9dbfd9a826be61b5edbdd269eede08c59dc8f9b5748b66fa5bfdb72ded7a3
Source datasets
| Dataset | Rows | Package | Hash |
|---|---|---|---|
| adsl | 254 | pharmaverseadam 1.1.0 | sha256:f9a1c3605cb277363fba0add4c4228df6a288685586575be159718696c582107 |
| adae | 1191 | pharmaverseadam 1.1.0 | sha256:7d4237afdbf934742091e6b7e0a756fcba6a0e79fc9f35b578f86574baf8f7d4 |
Environment
R 4.3.3 · Darwin 23.6.0 · cards 0.6.1 · cardx 0.2.5 · gtsummary 2.3.0 · gt 1.0.0 · dplyr 1.1.4 · pharmaverseadam 1.1.0 · jsonlite 2.0.0 · yaml 2.3.10 · digest 0.6.37
id: t-ae-overview
title: "Overview of Treatment-Emergent Adverse Events"
regulatory_id: AET01
type: table
dataset: adae
analysis_set: safety
denominator: adsl
group:
- TRT01A
total: true
analyses:
- name: n_events
method: subject_count
custom: ard_event_count
label: "Number of treatment-emergent adverse events"
filter: "TRTEMFL == 'Y'"
- name: any_ae
method: subject_count
label: "Subjects with at least one treatment-emergent adverse event"
variable: AEFL
filter: "TRTEMFL == 'Y'"
- name: serious_ae
method: subject_count
label: "Subjects with a serious adverse event"
variable: AESERFL
filter: "TRTEMFL == 'Y' & AESER == 'Y'"
- name: fatal_ae
method: subject_count
label: "Subjects with a fatal adverse event"
variable: AEFATFL
filter: "TRTEMFL == 'Y' & AEOUT == 'FATAL'"
- name: related_ae
method: subject_count
label: "Subjects with a related adverse event"
variable: AERELFL
filter: "TRTEMFL == 'Y' & AEREL %in% c('POSSIBLE', 'PROBABLE')"
- name: sev_mild
method: subject_count
label: "Maximum severity mild"
variable: AESEVFL
filter: "TRTEMFL == 'Y' & AESEV == 'MILD'"
- name: sev_moderate
method: subject_count
label: "Maximum severity moderate"
variable: AESEVFL
filter: "TRTEMFL == 'Y' & AESEV == 'MODERATE'"
- name: sev_severe
method: subject_count
label: "Maximum severity severe"
variable: AESEVFL
filter: "TRTEMFL == 'Y' & AESEV == 'SEVERE'"
id: t-ae-overview
title: "Overview of Treatment-Emergent Adverse Events"
study: CDISCPILOT01
population_label: "Safety Analysis Set"
cutoff: "2014-07-01"
source: "Source: adae, adsl (pharmaverseadam). Data cut-off: 2014-07-01."
footnotes:
- "A treatment-emergent adverse event is an event with TRTEMFL = 'Y'."
- "Percentages are based on the number of subjects in the safety analysis set for each treatment group."
- "Subjects reporting more than one event are counted once in each row they qualify for; severity rows count subjects with at least one event of that severity and therefore do not sum to the number of subjects with any event."
columns:
order: [Placebo, "Xanomeline Low Dose", "Xanomeline High Dose", Total]
format:
digits:
p: 1
rows:
- { label: "Adverse events", section: true }
- { analysis: n_events, variable: AENUM, pattern: "n", label: "Number of events", indent: 1 }
- { analysis: any_ae, label: "Subjects with ≥1 adverse event", pattern: n_pct, indent: 1 }
- { analysis: serious_ae, label: "Subjects with a serious adverse event", pattern: n_pct, indent: 1 }
- { analysis: fatal_ae, label: "Subjects with a fatal adverse event", pattern: n_pct, indent: 1 }
- { analysis: related_ae, label: "Subjects with a related adverse event", pattern: n_pct, indent: 1 }
- { label: "Subjects by severity, n (%)", section: true }
- { analysis: sev_mild, label: "Mild", pattern: n_pct, indent: 1 }
- { analysis: sev_moderate, label: "Moderate", pattern: n_pct, indent: 1 }
- { analysis: sev_severe, label: "Severe", pattern: n_pct, indent: 1 }
variants:
post_text: {}
in_text:
title: "Overview of Treatment-Emergent Adverse Events (Summary)"
# Display-specific statistics for t-ae-overview.
#
# The v0 method vocabulary (contract §2) counts *subjects*; an AE overview also
# has to report the number of *events*, which no built-in method provides. Rather
# than widen the vocabulary for one display, the analysis entry sets
# `custom: ard_event_count` and this function is dispatched instead.
#
# Contract: the function receives (data, spec, denominator) and returns a
# {cards}-shaped ARD. `spec` is the analysis entry, with `spec$group` holding the
# grouping variable actually in force — which is how the same function also
# produces the Total column (the engine re-runs it against a constant group).
#' Count adverse-event records per group
#'
#' @param data Analysis dataset, already restricted to the analysis set and to
#' the analysis entry's `filter`.
#' @param spec The analysis entry (a list), including `spec$group`.
#' @param denominator Subject-level denominator dataset (unused: an event count
#' has no denominator, and reporting a percentage of subjects against a count
#' of events would be wrong).
#' @return A data frame carrying the `{cards}` ARD columns.
ard_event_count <- function(data, spec, denominator) {
group <- spec$group
levels <- if (length(group)) {
lv <- levels(data[[group]])
if (is.null(lv)) sort(unique(as.character(data[[group]]))) else lv
} else {
NA_character_
}
counts <- vapply(levels, function(lv) {
if (is.na(lv)) nrow(data) else sum(as.character(data[[group]]) == lv, na.rm = TRUE)
}, numeric(1))
data.frame(
group1 = if (length(group)) group else NA_character_,
group1_level = as.character(levels),
variable = "AENUM",
variable_level = NA_character_,
context = "event_count",
stat_name = "n",
stat_label = "Number of events",
stat = unname(counts),
warning = NA_character_,
error = NA_character_,
stringsAsFactors = FALSE
)
}
v002current
Add submission-format RTF artifacts to every variant (obot.roadmap #129 A).
2026-07-27T03:23:34Z · @obotclaw
v001
Initial generation of AET01 from the statistical analysis plan shell.
2026-07-25T06:39:08Z · @jwildfire
Every iteration is kept: outputs/t-ae-overview/vNNN/ holds the spec snapshot, the ARD, the rendered output, and a manifest recording who regenerated it, why, and from which commit.