cardinal
  • Home
  • Template Catalog
  • About
  • Resources
  • Help
    • Getting Started
    • Report a Bug
    • FAQ

FDA Table 07

Overview of Adverse Events, Safety Population, Pooled Analysis (or Trial X)

table
FDA
safety
adverse events
  • Table Preview
  • Setup
  • Build Table
  • Build ARD

Code
# Load libraries & data -------------------------------------
library(gtsummary)
library(dplyr)

adsl <- random.cdisc.data::cadsl
adae <- random.cdisc.data::cadae

# Use safety population only
adsl <- adsl |>
  filter(SAFFL == "Y")

data <- adae |>
  filter(SAFFL == "Y")
Code
# --- PART 1: Overview of serious AEs
# Assign a label to each SAE category
sae_vars <- list(
  "SAE" = "AESER",
  "Death" = "AESDTH",
  "Life-threatening" = "AESLIFE",
  "Initial or prolonged hospitalization" = "AESHOSP",
  "Disability or permanent damage" = "AESDISAB",
  "Congenital anomaly or birth defect" = "AESCONG",
  "Other" = "AESMIE"
)

# Summarize SAEs per category
tbl_sae <-
  lapply(
    seq_along(sae_vars),
    function(i) { # apply per category
      data <- data |>
        filter(.data[[sae_vars[[i]]]] == "Y") |>
        mutate(!!sae_vars[[i]] := names(sae_vars)[i]) # convert flag to a meaningful value
      tbl_hierarchical( # calculate rates
        data = data,
        variables = all_of(sae_vars[[i]]),
        by = TRT01A,
        id = USUBJID,
        denominator = adsl,
        label = sae_vars[[i]] ~ "Event"
      )
    }
  ) |>
  tbl_stack() |>
  modify_indent("label", rows = tbl_id1 != 1, indent = 4L)

# --- PART 2: Permanent discontinuation
disc_ae <- adae |>
  filter(AEACNOTH == "SUBJECT DISCONTINUED FROM STUDY") |>
  mutate(
    # convert label to a more meaningful value
    AEACNOTH = "AE leading to permanent discontinuation of treatment"
  )

tbl_disc_ae <- tbl_hierarchical( # calculate rates
  data = disc_ae,
  variables = AEACNOTH,
  by = TRT01A,
  id = USUBJID,
  denominator = adsl,
  label = AEACNOTH ~ "Event"
)

# -- PART 3: Dose modification
dose_mod_ae <- adae |>
  filter(AEACN %in% c("DRUG INTERRUPTED", "DOSE REDUCED", "DOSE RATE REDUCED", "DOSE INCREASED")) |>
  mutate(
    AEACN = case_when( # convert to meaningful labels
      AEACN == "DRUG INTERRUPTED" ~ "AE leading to interruption of study drug",
      AEACN == "DOSE REDUCED" ~ "AE leading to reduction of study drug",
      AEACN == "DOSE RATE REDUCED" ~ "AE leading to dose delay of study drug",
      AEACN == "DOSE INCREASED" ~ "Other",
      .default = "Other"
    )
  )

tbl_dose_mod_ae <- tbl_hierarchical( # calculate rates
  data = dose_mod_ae,
  denominator = adsl,
  id = "USUBJID",
  by = "TRT01A",
  variables = "AEACN",
  label = list(AEACN ~ "Event", ..ard_hierarchical_overall.. = "AE leading to action taken of treatment"),
  overall_row = TRUE
) |>
  modify_indent(columns = label, rows = variable == "AEACN", indent = 4L)


# -- PART 4: Any AE
tbl_any_ae <- tbl_hierarchical(
  data = adae |> mutate(AESEV = factor(.data$AESEV, ordered = TRUE)),
  variables = AESEV,
  by = TRT01A,
  id = USUBJID,
  denominator = adsl,
  label = list(AESEV ~ "Event", ..ard_hierarchical_overall.. = "Any AE"),
  overall_row = TRUE
) |>
  modify_indent(columns = label, rows = variable == "AESEV", indent = 4L)

# Put it all together
tbl <- list(tbl_sae, tbl_disc_ae, tbl_dose_mod_ae, tbl_any_ae) |>
  tbl_stack() |>
  modify_header(label = "**Adverse Event Category**")

tbl

Code
ard <- gather_ard(tbl)
ard
[[1]]
[[1]][[1]]
[[1]][[1]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X    AESER            SAE hierarch…         n          n   104      104    <fn>                   stat_1
11 TRT01A    A: Drug X    AESER            SAE hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X    AESER            SAE hierarch…         p          % 0.776       78    <fn>                   stat_1
13 TRT01A    B: Place…    AESER            SAE hierarch…         n          n   101      101    <fn>                   stat_2
14 TRT01A    B: Place…    AESER            SAE hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…    AESER            SAE hierarch…         p          % 0.754       75    <fn>                   stat_2
16 TRT01A    C: Combi…    AESER            SAE hierarch…         n          n    99       99    <fn>                   stat_3
17 TRT01A    C: Combi…    AESER            SAE hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…    AESER            SAE hierarch…         p          %  0.75       75    <fn>                   stat_3


[[1]][[2]]
[[1]][[2]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X   AESDTH          Death hierarch…         n          n    76       76    <fn>                   stat_1
11 TRT01A    A: Drug X   AESDTH          Death hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X   AESDTH          Death hierarch…         p          % 0.567       57    <fn>                   stat_1
13 TRT01A    B: Place…   AESDTH          Death hierarch…         n          n    70       70    <fn>                   stat_2
14 TRT01A    B: Place…   AESDTH          Death hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…   AESDTH          Death hierarch…         p          % 0.522       52    <fn>                   stat_2
16 TRT01A    C: Combi…   AESDTH          Death hierarch…         n          n    75       75    <fn>                   stat_3
17 TRT01A    C: Combi…   AESDTH          Death hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…   AESDTH          Death hierarch…         p          % 0.568       57    <fn>                   stat_3


[[1]][[3]]
[[1]][[3]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X  AESLIFE      Life-thr… hierarch…         n          n    37       37    <fn>                   stat_1
11 TRT01A    A: Drug X  AESLIFE      Life-thr… hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X  AESLIFE      Life-thr… hierarch…         p          % 0.276       28    <fn>                   stat_1
13 TRT01A    B: Place…  AESLIFE      Life-thr… hierarch…         n          n    36       36    <fn>                   stat_2
14 TRT01A    B: Place…  AESLIFE      Life-thr… hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…  AESLIFE      Life-thr… hierarch…         p          % 0.269       27    <fn>                   stat_2
16 TRT01A    C: Combi…  AESLIFE      Life-thr… hierarch…         n          n    49       49    <fn>                   stat_3
17 TRT01A    C: Combi…  AESLIFE      Life-thr… hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…  AESLIFE      Life-thr… hierarch…         p          % 0.371       37    <fn>                   stat_3


[[1]][[4]]
[[1]][[4]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X  AESHOSP      Initial … hierarch…         n          n    75       75    <fn>                   stat_1
11 TRT01A    A: Drug X  AESHOSP      Initial … hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X  AESHOSP      Initial … hierarch…         p          %  0.56       56    <fn>                   stat_1
13 TRT01A    B: Place…  AESHOSP      Initial … hierarch…         n          n    70       70    <fn>                   stat_2
14 TRT01A    B: Place…  AESHOSP      Initial … hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…  AESHOSP      Initial … hierarch…         p          % 0.522       52    <fn>                   stat_2
16 TRT01A    C: Combi…  AESHOSP      Initial … hierarch…         n          n    78       78    <fn>                   stat_3
17 TRT01A    C: Combi…  AESHOSP      Initial … hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…  AESHOSP      Initial … hierarch…         p          % 0.591       59    <fn>                   stat_3


[[1]][[5]]
[[1]][[5]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X AESDISAB      Disabili… hierarch…         n          n    66       66    <fn>                   stat_1
11 TRT01A    A: Drug X AESDISAB      Disabili… hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X AESDISAB      Disabili… hierarch…         p          % 0.493       49    <fn>                   stat_1
13 TRT01A    B: Place… AESDISAB      Disabili… hierarch…         n          n    62       62    <fn>                   stat_2
14 TRT01A    B: Place… AESDISAB      Disabili… hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place… AESDISAB      Disabili… hierarch…         p          % 0.463       46    <fn>                   stat_2
16 TRT01A    C: Combi… AESDISAB      Disabili… hierarch…         n          n    72       72    <fn>                   stat_3
17 TRT01A    C: Combi… AESDISAB      Disabili… hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi… AESDISAB      Disabili… hierarch…         p          % 0.545       55    <fn>                   stat_3


[[1]][[6]]
[[1]][[6]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X  AESCONG      Congenit… hierarch…         n          n    70       70    <fn>                   stat_1
11 TRT01A    A: Drug X  AESCONG      Congenit… hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X  AESCONG      Congenit… hierarch…         p          % 0.522       52    <fn>                   stat_1
13 TRT01A    B: Place…  AESCONG      Congenit… hierarch…         n          n    64       64    <fn>                   stat_2
14 TRT01A    B: Place…  AESCONG      Congenit… hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…  AESCONG      Congenit… hierarch…         p          % 0.478       48    <fn>                   stat_2
16 TRT01A    C: Combi…  AESCONG      Congenit… hierarch…         n          n    73       73    <fn>                   stat_3
17 TRT01A    C: Combi…  AESCONG      Congenit… hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…  AESCONG      Congenit… hierarch…         p          % 0.553       55    <fn>                   stat_3


[[1]][[7]]
[[1]][[7]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X   AESMIE          Other hierarch…         n          n    70       70    <fn>                   stat_1
11 TRT01A    A: Drug X   AESMIE          Other hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X   AESMIE          Other hierarch…         p          % 0.522       52    <fn>                   stat_1
13 TRT01A    B: Place…   AESMIE          Other hierarch…         n          n    84       84    <fn>                   stat_2
14 TRT01A    B: Place…   AESMIE          Other hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place…   AESMIE          Other hierarch…         p          % 0.627       63    <fn>                   stat_2
16 TRT01A    C: Combi…   AESMIE          Other hierarch…         n          n    83       83    <fn>                   stat_3
17 TRT01A    C: Combi…   AESMIE          Other hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi…   AESMIE          Other hierarch…         p          % 0.629       63    <fn>                   stat_3



[[2]]
[[2]]$tbl_hierarchical
{cards} data frame: 18 x 13
   group1 group1_level variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X AEACNOTH      AE leadi… hierarch…         n          n    75       75    <fn>                   stat_1
11 TRT01A    A: Drug X AEACNOTH      AE leadi… hierarch…         N          N   134      134    <fn>                   stat_1
12 TRT01A    A: Drug X AEACNOTH      AE leadi… hierarch…         p          %  0.56       56    <fn>                   stat_1
13 TRT01A    B: Place… AEACNOTH      AE leadi… hierarch…         n          n    73       73    <fn>                   stat_2
14 TRT01A    B: Place… AEACNOTH      AE leadi… hierarch…         N          N   134      134    <fn>                   stat_2
15 TRT01A    B: Place… AEACNOTH      AE leadi… hierarch…         p          % 0.545       54    <fn>                   stat_2
16 TRT01A    C: Combi… AEACNOTH      AE leadi… hierarch…         n          n    83       83    <fn>                   stat_3
17 TRT01A    C: Combi… AEACNOTH      AE leadi… hierarch…         N          N   132      132    <fn>                   stat_3
18 TRT01A    C: Combi… AEACNOTH      AE leadi… hierarch…         p          % 0.629       63    <fn>                   stat_3


[[3]]
[[3]]$tbl_hierarchical
{cards} data frame: 54 x 13
   group1 group1_level                     variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                                    TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                                    TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                                    TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                                    TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                                    TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                                    TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                                    TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                                    TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                                    TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X ..ard_hierarchical_overall..           TRUE hierarch…         n          n    71       71    <fn>                   stat_1
ℹ 44 more rows
ℹ Use `print(n = ...)` to see more rows


[[4]]
[[4]]$tbl_hierarchical
{cards} data frame: 45 x 13
   group1 group1_level                     variable variable_level   context stat_name stat_label  stat stat_fmt fmt_fun warning error gts_column
1    <NA>                                    TRT01A      A: Drug X  tabulate         n          n   134      134       0                   stat_1
2    <NA>                                    TRT01A      A: Drug X  tabulate         N          N   400      400       0                   stat_1
3    <NA>                                    TRT01A      A: Drug X  tabulate         p          % 0.335     33.5    <fn>                   stat_1
4    <NA>                                    TRT01A      B: Place…  tabulate         n          n   134      134       0                   stat_2
5    <NA>                                    TRT01A      B: Place…  tabulate         N          N   400      400       0                   stat_2
6    <NA>                                    TRT01A      B: Place…  tabulate         p          % 0.335     33.5    <fn>                   stat_2
7    <NA>                                    TRT01A      C: Combi…  tabulate         n          n   132      132       0                   stat_3
8    <NA>                                    TRT01A      C: Combi…  tabulate         N          N   400      400       0                   stat_3
9    <NA>                                    TRT01A      C: Combi…  tabulate         p          %  0.33     33.0    <fn>                   stat_3
10 TRT01A    A: Drug X ..ard_hierarchical_overall..           TRUE hierarch…         n          n   122      122    <fn>                   stat_1
ℹ 35 more rows
ℹ Use `print(n = ...)` to see more rows
Source Code
---
title: FDA Table 07
subtitle: Overview of Adverse Events, Safety Population, Pooled Analysis (or Trial X) 
categories: [table, FDA, safety, adverse events] 
---

::: panel-tabset
## Table Preview

```{r img, echo=FALSE, fig.align='center', out.width='60%'}
knitr::include_graphics("result.png")
```

## Setup

```{r setup, message=FALSE}
# Load libraries & data -------------------------------------
library(gtsummary)
library(dplyr)

adsl <- random.cdisc.data::cadsl
adae <- random.cdisc.data::cadae

# Use safety population only
adsl <- adsl |>
  filter(SAFFL == "Y")

data <- adae |>
  filter(SAFFL == "Y")
```



## Build Table

```{r tbl, results='hide'}
# --- PART 1: Overview of serious AEs
# Assign a label to each SAE category
sae_vars <- list(
  "SAE" = "AESER",
  "Death" = "AESDTH",
  "Life-threatening" = "AESLIFE",
  "Initial or prolonged hospitalization" = "AESHOSP",
  "Disability or permanent damage" = "AESDISAB",
  "Congenital anomaly or birth defect" = "AESCONG",
  "Other" = "AESMIE"
)

# Summarize SAEs per category
tbl_sae <-
  lapply(
    seq_along(sae_vars),
    function(i) { # apply per category
      data <- data |>
        filter(.data[[sae_vars[[i]]]] == "Y") |>
        mutate(!!sae_vars[[i]] := names(sae_vars)[i]) # convert flag to a meaningful value
      tbl_hierarchical( # calculate rates
        data = data,
        variables = all_of(sae_vars[[i]]),
        by = TRT01A,
        id = USUBJID,
        denominator = adsl,
        label = sae_vars[[i]] ~ "Event"
      )
    }
  ) |>
  tbl_stack() |>
  modify_indent("label", rows = tbl_id1 != 1, indent = 4L)

# --- PART 2: Permanent discontinuation
disc_ae <- adae |>
  filter(AEACNOTH == "SUBJECT DISCONTINUED FROM STUDY") |>
  mutate(
    # convert label to a more meaningful value
    AEACNOTH = "AE leading to permanent discontinuation of treatment"
  )

tbl_disc_ae <- tbl_hierarchical( # calculate rates
  data = disc_ae,
  variables = AEACNOTH,
  by = TRT01A,
  id = USUBJID,
  denominator = adsl,
  label = AEACNOTH ~ "Event"
)

# -- PART 3: Dose modification
dose_mod_ae <- adae |>
  filter(AEACN %in% c("DRUG INTERRUPTED", "DOSE REDUCED", "DOSE RATE REDUCED", "DOSE INCREASED")) |>
  mutate(
    AEACN = case_when( # convert to meaningful labels
      AEACN == "DRUG INTERRUPTED" ~ "AE leading to interruption of study drug",
      AEACN == "DOSE REDUCED" ~ "AE leading to reduction of study drug",
      AEACN == "DOSE RATE REDUCED" ~ "AE leading to dose delay of study drug",
      AEACN == "DOSE INCREASED" ~ "Other",
      .default = "Other"
    )
  )

tbl_dose_mod_ae <- tbl_hierarchical( # calculate rates
  data = dose_mod_ae,
  denominator = adsl,
  id = "USUBJID",
  by = "TRT01A",
  variables = "AEACN",
  label = list(AEACN ~ "Event", ..ard_hierarchical_overall.. = "AE leading to action taken of treatment"),
  overall_row = TRUE
) |>
  modify_indent(columns = label, rows = variable == "AEACN", indent = 4L)


# -- PART 4: Any AE
tbl_any_ae <- tbl_hierarchical(
  data = adae |> mutate(AESEV = factor(.data$AESEV, ordered = TRUE)),
  variables = AESEV,
  by = TRT01A,
  id = USUBJID,
  denominator = adsl,
  label = list(AESEV ~ "Event", ..ard_hierarchical_overall.. = "Any AE"),
  overall_row = TRUE
) |>
  modify_indent(columns = label, rows = variable == "AESEV", indent = 4L)

# Put it all together
tbl <- list(tbl_sae, tbl_disc_ae, tbl_dose_mod_ae, tbl_any_ae) |>
  tbl_stack() |>
  modify_header(label = "**Adverse Event Category**")

tbl
```

```{r eval=FALSE, include=FALSE}
# Run chunk locally to generate image file
gt::gtsave(as_gt(tbl), filename = "result.png")
```

```{r img, echo=FALSE, fig.align='center', out.width='60%'}
```

## Build ARD

```{r ard, message=FALSE, warning=FALSE, results='hide'}
ard <- gather_ard(tbl)
ard
```

```{r, echo=FALSE}
# Print full ARD
withr::local_options(width = 9999)
print(ard, columns = "all")
```
:::
 
  • This website as well as code examples are licensed under the Apache License, Version 2.0.
Cookie Preferences