
Overview of Serious Adverse Events by Demographic Subgroup, Safety Population, Pooled Analysis (or Trial X)
FDA Table 50
FDA IG Shell
Programming Notes
Background and Instructions
Table 50: Overview of Serious Adverse Events by Demographic Subgroup and Table 51: Overview of Adverse Events by Demographic Subgroup in this section display placeholder values for the demographic characteristics for subgroup analysis of SAEs and AEs. These placeholder values will change to reflect the values found in the clinical trial data. When CDISC-controlled terminology is used in the clinical trial data, the demographic characteristics in this table will reflect the controlled terminology.
Customization
Provide any additional potentially relevant subgroups beyond the standard demographic ones that may shed light on which subjects are most susceptible to the safety event (e.g., baseline diseases [e.g., cardiovascular disease or diabetes, or by CKD stage], concomitant medication, anthropometric characteristics [e.g., BMI]). The clinical reviewer should discuss appropriate age groups for the subgroup analysis with the CDS.
Output
Code
# FDA TABLE 50 ---------------------------------------------------------------
# Self-contained template. Run top-to-bottom to build the objects below.
# Used by tests via run_template() and published in the catalog.
library(dplyr)
library(cards)
library(gtsummary)
adae <- pharmaverseadam::adae
adsl <- pharmaverseadam::adsl
# This specific dataset is reduced significantly after filtering.
# We'll take a few steps to ensure factor levels are present and
# match between the AE data and the denominators.
adsl <- adsl |>
filter(SAFFL == "Y") |>
mutate(TRT01A = as.factor(TRT01A))
adae <- adae |> mutate(
TRT01A = as.factor(TRT01A),
SEXGR = "Sex, n (%)",
SEXGR1 = as.factor(SEX),
AGEGR = "Age group, years, n(%)",
RACEGR = "Race, n(%)",
ETHNICGR = "Ethnicity, n(%)",
ETHNICGR1 = as.factor(RACE)
)
data <- adae |>
filter(
SAFFL == "Y",
TRTEMFL == "Y",
AESER == "Y"
)
data_any_sae <- adae |>
filter(AESER == "Y") |>
mutate(
AESER = "Any SAE, n(%)"
)
tbl_any_sae <- tbl_hierarchical(
data = data_any_sae,
denominator = adsl,
id = "USUBJID",
by = "TRT01A",
variables = "AESER",
statistic = ~"{n} ({p}%)",
label = AESER ~ "Characteristic"
)
tbl_sex <- tbl_hierarchical(
data = data,
denominator = data_any_sae |> slice_head(by = c(USUBJID)),
id = "USUBJID",
by = "TRT01A",
variables = c(SEXGR, SEXGR1),
include = SEXGR1,
statistic = ~"{n}/{N} ({p}%)"
)
tbl_agegr1 <- tbl_hierarchical(
data = data,
denominator = data_any_sae |> slice_head(by = c(USUBJID)),
id = "USUBJID",
by = "TRT01A",
variables = c(AGEGR, AGEGR1),
include = AGEGR1,
statistic = ~"{n}/{N} ({p}%)"
)
tbl_race <- tbl_hierarchical(
data = data,
denominator = data_any_sae |> slice_head(by = c(USUBJID)),
id = "USUBJID",
by = "TRT01A",
variables = c(RACEGR, RACEGR1),
include = RACEGR1,
statistic = ~"{n}/{N} ({p}%)"
)
tbl_ethnic <- tbl_hierarchical(
data = data,
denominator = data_any_sae |> slice_head(by = c(USUBJID)),
id = "USUBJID",
by = "TRT01A",
variables = c(ETHNICGR, ETHNICGR1),
include = ETHNICGR1,
statistic = ~"{n}/{N} ({p}%)"
)
tbl <- list(tbl_any_sae, tbl_sex, tbl_agegr1, tbl_race, tbl_ethnic) |>
tbl_stack() |>
modify_indent(
"label",
rows = !(variable %in% c("..ard_hierarchical_overall..", "AESER", "SEXGR", "AGEGR", "RACEGR", "ETHNICGR"))
) |>
remove_footnote_header(columns = everything()) |>
modify_post_fmt_fun(
fmt_fun = ~ ifelse(. == "0/0 (NA%)", "0 (0%)", .),
columns = all_stat_cols()
)
ard <- gtsummary::gather_ard(tbl)| Characteristic |
Placebo N = 86 |
Xanomeline High Dose N = 72 |
Xanomeline Low Dose N = 96 |
|---|---|---|---|
| Any SAE, n(%) | 0 (0%) | 1 (1.4%) | 2 (2.1%) |
| Sex, n (%) | |||
| F | 0 (0%) | 1/1 (100%) | 1/2 (50%) |
| M | 0 (0%) | 0/1 (0%) | 1/2 (50%) |
| Age group, years, n(%) | |||
| >64 | 0 (0%) | 1/1 (100%) | 2/2 (100%) |
| Race, n(%) | |||
| White | 0 (0%) | 1/1 (100%) | 2/2 (100%) |
| Ethnicity, n(%) | |||
| WHITE | 0 (0%) | 1/1 (100%) | 2/2 (100%) |
[[1]]
[[1]]$tbl_hierarchical
# An ARD data frame: 18 × 13
group1 group1_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
<chr> <list> <chr> <list> <chr> <chr> <chr> <list> <list> <list> <list> <list> <chr>
1 <NA> <NULL> TRT01A Placebo tabulate n n 86 86 0 <NULL> <NULL> stat_1
2 <NA> <NULL> TRT01A Placebo tabulate N N 254 254 0 <NULL> <NULL> stat_1
3 <NA> <NULL> TRT01A Placebo tabulate p % 0.339 33.9 <fn> <NULL> <NULL> stat_1
4 <NA> <NULL> TRT01A Xanomeline High Dose tabulate n n 72 72 0 <NULL> <NULL> stat_2
5 <NA> <NULL> TRT01A Xanomeline High Dose tabulate N N 254 254 0 <NULL> <NULL> stat_2
6 <NA> <NULL> TRT01A Xanomeline High Dose tabulate p % 0.283 28.3 <fn> <NULL> <NULL> stat_2
7 <NA> <NULL> TRT01A Xanomeline Low Dose tabulate n n 96 96 0 <NULL> <NULL> stat_3
8 <NA> <NULL> TRT01A Xanomeline Low Dose tabulate N N 254 254 0 <NULL> <NULL> stat_3
9 <NA> <NULL> TRT01A Xanomeline Low Dose tabulate p % 0.378 37.8 <fn> <NULL> <NULL> stat_3
10 TRT01A Placebo AESER Any SAE, n(%) hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
11 TRT01A Placebo AESER Any SAE, n(%) hierarchical N N 86 86 <fn> <NULL> <NULL> stat_1
12 TRT01A Placebo AESER Any SAE, n(%) hierarchical p % 0 0 <fn> <NULL> <NULL> stat_1
13 TRT01A Xanomeline High Dose AESER Any SAE, n(%) hierarchical n n 1 1 <fn> <NULL> <NULL> stat_2
14 TRT01A Xanomeline High Dose AESER Any SAE, n(%) hierarchical N N 72 72 <fn> <NULL> <NULL> stat_2
15 TRT01A Xanomeline High Dose AESER Any SAE, n(%) hierarchical p % 0.0139 1.4 <fn> <NULL> <NULL> stat_2
16 TRT01A Xanomeline Low Dose AESER Any SAE, n(%) hierarchical n n 2 2 <fn> <NULL> <NULL> stat_3
17 TRT01A Xanomeline Low Dose AESER Any SAE, n(%) hierarchical N N 96 96 <fn> <NULL> <NULL> stat_3
18 TRT01A Xanomeline Low Dose AESER Any SAE, n(%) hierarchical p % 0.0208 2.1 <fn> <NULL> <NULL> stat_3
[[2]]
[[2]]$tbl_hierarchical
# An ARD data frame: 27 × 15
group1 group1_level group2 group2_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
<chr> <list> <chr> <list> <chr> <list> <chr> <chr> <chr> <list> <list> <list> <list> <list> <chr>
1 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate n n 0 0 0 <NULL> <NULL> stat_1
2 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate N N 3 3 0 <NULL> <NULL> stat_1
3 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate p % 0 0.0 <fn> <NULL> <NULL> stat_1
4 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate n n 1 1 0 <NULL> <NULL> stat_2
5 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate N N 3 3 0 <NULL> <NULL> stat_2
6 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate p % 0.333 33.3 <fn> <NULL> <NULL> stat_2
7 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate n n 2 2 0 <NULL> <NULL> stat_3
8 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate N N 3 3 0 <NULL> <NULL> stat_3
9 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate p % 0.667 66.7 <fn> <NULL> <NULL> stat_3
10 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 F hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
11 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 F hierarchical N N 0 0 <fn> <NULL> <NULL> stat_1
12 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 F hierarchical p % NaN <NA> <fn> <NULL> <NULL> stat_1
13 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 F hierarchical n n 1 1 <fn> <NULL> <NULL> stat_2
14 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 F hierarchical N N 1 1 <fn> <NULL> <NULL> stat_2
15 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 F hierarchical p % 1 100 <fn> <NULL> <NULL> stat_2
16 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 F hierarchical n n 1 1 <fn> <NULL> <NULL> stat_3
17 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 F hierarchical N N 2 2 <fn> <NULL> <NULL> stat_3
18 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 F hierarchical p % 0.5 50 <fn> <NULL> <NULL> stat_3
19 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 M hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
20 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 M hierarchical N N 0 0 <fn> <NULL> <NULL> stat_1
21 TRT01A Placebo SEXGR Sex, n (%) SEXGR1 M hierarchical p % NaN <NA> <fn> <NULL> <NULL> stat_1
22 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 M hierarchical n n 0 0 <fn> <NULL> <NULL> stat_2
23 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 M hierarchical N N 1 1 <fn> <NULL> <NULL> stat_2
24 TRT01A Xanomeline High Dose SEXGR Sex, n (%) SEXGR1 M hierarchical p % 0 0 <fn> <NULL> <NULL> stat_2
25 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 M hierarchical n n 1 1 <fn> <NULL> <NULL> stat_3
26 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 M hierarchical N N 2 2 <fn> <NULL> <NULL> stat_3
27 TRT01A Xanomeline Low Dose SEXGR Sex, n (%) SEXGR1 M hierarchical p % 0.5 50 <fn> <NULL> <NULL> stat_3
[[3]]
[[3]]$tbl_hierarchical
# An ARD data frame: 18 × 15
group1 group1_level group2 group2_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
<chr> <list> <chr> <list> <chr> <list> <chr> <chr> <chr> <list> <list> <list> <list> <list> <chr>
1 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate n n 0 0 0 <NULL> <NULL> stat_1
2 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate N N 3 3 0 <NULL> <NULL> stat_1
3 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate p % 0 0.0 <fn> <NULL> <NULL> stat_1
4 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate n n 1 1 0 <NULL> <NULL> stat_2
5 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate N N 3 3 0 <NULL> <NULL> stat_2
6 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate p % 0.333 33.3 <fn> <NULL> <NULL> stat_2
7 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate n n 2 2 0 <NULL> <NULL> stat_3
8 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate N N 3 3 0 <NULL> <NULL> stat_3
9 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate p % 0.667 66.7 <fn> <NULL> <NULL> stat_3
10 TRT01A Placebo AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
11 TRT01A Placebo AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical N N 0 0 <fn> <NULL> <NULL> stat_1
12 TRT01A Placebo AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical p % NaN <NA> <fn> <NULL> <NULL> stat_1
13 TRT01A Xanomeline High Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical n n 1 1 <fn> <NULL> <NULL> stat_2
14 TRT01A Xanomeline High Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical N N 1 1 <fn> <NULL> <NULL> stat_2
15 TRT01A Xanomeline High Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical p % 1 100 <fn> <NULL> <NULL> stat_2
16 TRT01A Xanomeline Low Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical n n 2 2 <fn> <NULL> <NULL> stat_3
17 TRT01A Xanomeline Low Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical N N 2 2 <fn> <NULL> <NULL> stat_3
18 TRT01A Xanomeline Low Dose AGEGR Age group, years, n(%) AGEGR1 >64 hierarchical p % 1 100 <fn> <NULL> <NULL> stat_3
[[4]]
[[4]]$tbl_hierarchical
# An ARD data frame: 18 × 15
group1 group1_level group2 group2_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
<chr> <list> <chr> <list> <chr> <list> <chr> <chr> <chr> <list> <list> <list> <list> <list> <chr>
1 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate n n 0 0 0 <NULL> <NULL> stat_1
2 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate N N 3 3 0 <NULL> <NULL> stat_1
3 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate p % 0 0.0 <fn> <NULL> <NULL> stat_1
4 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate n n 1 1 0 <NULL> <NULL> stat_2
5 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate N N 3 3 0 <NULL> <NULL> stat_2
6 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate p % 0.333 33.3 <fn> <NULL> <NULL> stat_2
7 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate n n 2 2 0 <NULL> <NULL> stat_3
8 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate N N 3 3 0 <NULL> <NULL> stat_3
9 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate p % 0.667 66.7 <fn> <NULL> <NULL> stat_3
10 TRT01A Placebo RACEGR Race, n(%) RACEGR1 White hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
11 TRT01A Placebo RACEGR Race, n(%) RACEGR1 White hierarchical N N 0 0 <fn> <NULL> <NULL> stat_1
12 TRT01A Placebo RACEGR Race, n(%) RACEGR1 White hierarchical p % NaN <NA> <fn> <NULL> <NULL> stat_1
13 TRT01A Xanomeline High Dose RACEGR Race, n(%) RACEGR1 White hierarchical n n 1 1 <fn> <NULL> <NULL> stat_2
14 TRT01A Xanomeline High Dose RACEGR Race, n(%) RACEGR1 White hierarchical N N 1 1 <fn> <NULL> <NULL> stat_2
15 TRT01A Xanomeline High Dose RACEGR Race, n(%) RACEGR1 White hierarchical p % 1 100 <fn> <NULL> <NULL> stat_2
16 TRT01A Xanomeline Low Dose RACEGR Race, n(%) RACEGR1 White hierarchical n n 2 2 <fn> <NULL> <NULL> stat_3
17 TRT01A Xanomeline Low Dose RACEGR Race, n(%) RACEGR1 White hierarchical N N 2 2 <fn> <NULL> <NULL> stat_3
18 TRT01A Xanomeline Low Dose RACEGR Race, n(%) RACEGR1 White hierarchical p % 1 100 <fn> <NULL> <NULL> stat_3
[[5]]
[[5]]$tbl_hierarchical
# An ARD data frame: 18 × 15
group1 group1_level group2 group2_level variable variable_level context stat_name stat_label stat stat_fmt fmt_fun warning error gts_column
<chr> <list> <chr> <list> <chr> <list> <chr> <chr> <chr> <list> <list> <list> <list> <list> <chr>
1 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate n n 0 0 0 <NULL> <NULL> stat_1
2 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate N N 3 3 0 <NULL> <NULL> stat_1
3 <NA> <NULL> <NA> <NULL> TRT01A Placebo tabulate p % 0 0.0 <fn> <NULL> <NULL> stat_1
4 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate n n 1 1 0 <NULL> <NULL> stat_2
5 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate N N 3 3 0 <NULL> <NULL> stat_2
6 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline High Dose tabulate p % 0.333 33.3 <fn> <NULL> <NULL> stat_2
7 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate n n 2 2 0 <NULL> <NULL> stat_3
8 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate N N 3 3 0 <NULL> <NULL> stat_3
9 <NA> <NULL> <NA> <NULL> TRT01A Xanomeline Low Dose tabulate p % 0.667 66.7 <fn> <NULL> <NULL> stat_3
10 TRT01A Placebo ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical n n 0 0 <fn> <NULL> <NULL> stat_1
11 TRT01A Placebo ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical N N 0 0 <fn> <NULL> <NULL> stat_1
12 TRT01A Placebo ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical p % NaN <NA> <fn> <NULL> <NULL> stat_1
13 TRT01A Xanomeline High Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical n n 1 1 <fn> <NULL> <NULL> stat_2
14 TRT01A Xanomeline High Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical N N 1 1 <fn> <NULL> <NULL> stat_2
15 TRT01A Xanomeline High Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical p % 1 100 <fn> <NULL> <NULL> stat_2
16 TRT01A Xanomeline Low Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical n n 2 2 <fn> <NULL> <NULL> stat_3
17 TRT01A Xanomeline Low Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical N N 2 2 <fn> <NULL> <NULL> stat_3
18 TRT01A Xanomeline Low Dose ETHNICGR Ethnicity, n(%) ETHNICGR1 WHITE hierarchical p % 1 100 <fn> <NULL> <NULL> stat_3
