TL Catalog
  1. Tables
  2. Adverse Events
  3. TSFAE23B
  • Introduction

  • Index

  • Tables
    • Adverse Events
      • TSFAE01A
      • TSFAE01B
      • TSFAE02
      • TSFAE02A
      • TSFAE03
      • TSFAE03A
      • TSFAE04
      • TSFAE04A
      • TSFAE05
      • TSFAE05A
      • TSFAE06A
      • TSFAE06B
      • TSFAE07A
      • TSFAE07B
      • TSFAE08
      • TSFAE09
      • TSFAE10
      • TSFAE11
      • TSFAE12
      • TSFAE13
      • TSFAE14
      • TSFAE15
      • TSFAE16
      • TSFAE17A
      • TSFAE17B
      • TSFAE17C
      • TSFAE17D
      • TSFAE19A
      • TSFAE19B
      • TSFAE19C
      • TSFAE19D
      • TSFAE20A
      • TSFAE20B
      • TSFAE20C
      • TSFAE21A
      • TSFAE21B
      • TSFAE21C
      • TSFAE21D
      • TSFAE22A
      • TSFAE22B
      • TSFAE22C
      • TSFAE23A
      • TSFAE23B
      • TSFAE23C
      • TSFAE23D
      • TSFAE24A
      • TSFAE24B
      • TSFAE24C
      • TSFAE24D
      • TSFAE24F
      • TSFDTH01
    • Clinical Laboratory Evaluation
      • TSFLAB01
      • TSFLAB01A
      • TSFLAB02
      • TSFLAB02A
      • TSFLAB02B
      • TSFLAB03
      • TSFLAB03A
      • TSFLAB04A
      • TSFLAB04B
      • TSFLAB05
      • TSFLAB06
      • TSFLAB07
    • Demographic
      • TSIDEM01
      • TSIDEM02
      • TSIMH01
    • Disposition of Subjects
      • TSIDS01
      • TSIDS02
      • TSIDS02A
    • Electrocardiograms
      • TSFECG01
      • TSFECG01A
      • TSFECG02
      • TSFECG03
      • TSFECG04
      • TSFECG05
    • Exposure
      • TSIEX01
      • TSIEX02
      • TSIEX03
      • TSIEX04
      • TSIEX06
      • TSIEX07
      • TSIEX08
      • TSIEX09
      • TSIEX10
      • TSIEX11
    • Pharmacokinetics
      • TPK01A
      • TPK01B
      • TPK02
      • TPK03
    • Prior and Concomitant Therapies
      • TSICM01
      • TSICM02
      • TSICM03
      • TSICM04
      • TSICM05
      • TSICM06
      • TSICM07
      • TSICM08
    • Vital Signs and Physical Findings
      • TSFVIT01
      • TSFVIT01A
      • TSFVIT02
      • TSFVIT03
      • TSFVIT04
      • TSFVIT05
      • TSFVIT06
  • Listings
    • Adverse Events
      • LSFAE01
      • LSFAE02
      • LSFAE03
      • LSFAE04
      • LSFAE05
      • LSFAE06A
      • LSFAE06B
      • LSFDTH01
    • Clinical Laboratory Evaluation
      • LSFLAB01
    • Demographic
      • LSIDEM01
      • LSIDEM02
      • LSIMH01
    • Disposition of Subjects
      • LSIDS01
      • LSIDS02
      • LSIDS03
      • LSIDS04
      • LSIDS05
    • Electrocardiograms
      • LSFECG01
      • LSFECG02
    • Exposure
      • LSIEX01
      • LSIEX02
      • LSIEX03
    • Prior and Concomitant Therapies
      • LSICM01
    • Vital Signs and Physical Findings
      • LSFVIT01
      • LSFVIT02

  • Reproducibility

  • Changelog

On this page

  • Output
  • Edit this page
  • Report an issue
  1. Tables
  2. Adverse Events
  3. TSFAE23B

TSFAE23B

Subjects With Related Fatal Treatment-emergent Adverse Events by Preferred Term


Output

  • Preview
Code
# Program Name:              tsfae23b.R

# Prep environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(junco)

# Define script level parameters

tblid <- "TSFAE23b"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
aerelvar <- "AEREL"
combined_colspan_trt <- TRUE
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map


if (combined_colspan_trt == TRUE) {
  # If no combined treatment column(s) needed for your study then this next
  # section of code can be removed
  # Set up levels and label for the required combined columns
  add_combo <- add_combo_facet(
    "Combined",
    label = "Combined",
    levels = c(
      "Xanomeline High Dose",
      "Xanomeline Low Dose"
    )
  )

  # choose if any facets need to be removed - e.g remove the combined column
  # for placebo
  rm_combo_from_placebo <- cond_rm_facets(
    facets = "Combined",
    ancestor_pos = NA,
    value = " ",
    split = "colspan_trt"
  )

  mysplit <- make_split_fun(post = list(add_combo, rm_combo_from_placebo))
}

# Process data

adsl <- pharmaverseadamjnj::adsl %>%
  filter(!!rlang::sym(popfl) == "Y") %>%
  create_colspan_var(
    non_active_grp = c("Placebo"),
    non_active_grp_span_lbl = " ",
    active_grp_span_lbl = "Active Study Agent",
    colspan_var = "colspan_trt",
    trt_var = trtvar
  ) %>%
  select(
    STUDYID,
    USUBJID,
    !!rlang::sym(popfl),
    !!rlang::sym(trtvar),
    colspan_trt
  )

trt_map <- create_colspan_map(
  df = adsl,
  non_active_grp = c("Placebo"),
  non_active_grp_span_lbl = " ",
  active_grp_span_lbl = "Active Study Agent",
  colspan_var = "colspan_trt",
  trt_var = trtvar
)
ref_path <- c("colspan_trt", " ", trtvar, "Placebo")

adae0 <- pharmaverseadamjnj::adae %>%
  filter(
    !!rlang::sym(popfl) == "Y" &
      !!rlang::sym(aerelvar) == "RELATED" &
      TRTEMFL == "Y" &
      AEOUT == "FATAL"
  ) %>%
  left_join(
    subset(adsl, select = c("STUDYID", "USUBJID", "colspan_trt")),
    by = c("STUDYID", "USUBJID")
  ) %>%
  select(
    STUDYID,
    USUBJID,
    !!rlang::sym(trtvar),
    !!rlang::sym(popfl),
    !!rlang::sym(aerelvar),
    TRTEMFL,
    AEOUT,
    AEDECOD,
    colspan_trt
  )

if (nrow(adae0) == 0) {
  adae <- adae0 %>%
    select(STUDYID, USUBJID, TRTEMFL, AEDECOD) %>%
    right_join(adsl, by = c("STUDYID", "USUBJID"))
} else {
  adae <- adae0
}

# Define layout and build table

lyt <- basic_table(
  show_colcounts = TRUE,
  colcount_format = "N=xx",
  top_level_section_div = " "
) %>%
  split_cols_by("colspan_trt", split_fun = trim_levels_to_map(map = trt_map))

if (combined_colspan_trt == TRUE) {
  lyt <- lyt %>%
    split_cols_by(trtvar, split_fun = mysplit)
} else {
  lyt <- lyt %>%
    split_cols_by(trtvar)
}

lyt <- lyt %>%
  analyze(
    vars = "TRTEMFL",
    show_labels = "hidden",
    afun = a_freq_j,
    extra_args = list(
      label = "Subjects with >=1 related fatal AE",
      .stats = c("count_unique_fraction"),
      val = "Y"
    ),
    section_div = c(" ")
  )

if (nrow(adae0) > 0) {
  lyt <- lyt %>%
    count_occurrences(
      vars = "AEDECOD",
      .stats = c("count_fraction_fixed_dp"),
      .indent_mods = c(count_fraction = -1L),
      .formats = c("count_fraction_fixed_dp" = jjcsformat_count_fraction),
      nested = FALSE
    ) %>%
    append_topleft("Preferred Term, n (%)")
} else {
  lyt <- lyt %>%
    append_topleft("Preferred Term, n (%)")
}

result <- build_table(lyt, df = adae, alt_counts_df = adsl)

# Post-processing

if (nrow(adae0) > 0) {
  # Post-Processing step to sort by descending count in the Combined
  # Xanomeline High Dose column
  result <- sort_at_path(
    tt = result,
    path = c("root", "AEDECOD"),
    scorefun = jj_complex_scorefun(
      spanningheadercolvar = "colspan_trt",
      colpath = NULL
    )
  )
}

if (nrow(adae0) == 0) {
  # Post-Processing step to remove 'Subjects with' row
  result <- safe_prune_table(
    result,
    prune_func = remove_rows(
      removerowtext = "Subjects with >=1 related fatal AE"
    )
  )
}

# Retrieve titles and footnotes

result <- set_titles(result, tab_titles)

# Convert to tbl file and output table

tt_to_tlgrtf(string_map = string_map, tt = result, file = fileid)

TSFAE23b: Subjects With Related Fatal Treatment-emergent Adverse Events by Preferred Term; Safety Analysis Set (Study jjcs - core)

Active Study Agent

Xanomeline High Dose

Xanomeline Low Dose

Combined

Placebo

Preferred Term, n (%)

N=53

N=73

N=126

N=59

- No Data To Display -

Note: An AE is assessed by the investigator as related. Fatal AEs are based on AE outcome of Fatal. Subjects are counted only once for any given event, regardless of the number of times they actually experienced the event.

Note: Adverse events are coded using MedDRA version 26.0.

Download RTF file

TSFAE23A
TSFAE23C
Source Code
---
title: TSFAE23B
subtitle: Subjects With Related Fatal Treatment-emergent Adverse Events by Preferred Term
---

------------------------------------------------------------------------

{{< include ../../_utils/envir_hook.qmd >}}

```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
options(docx.add_datetime = FALSE, tidytlg.add_datetime = FALSE)
envsetup_config_name <- "default"

# Path to the combined config file
envsetup_file_path <- file.path("../..", "envsetup.yml")

Sys.setenv(ENVSETUP_ENVIRON = '')
library(envsetup)
loaded_config <- config::get(config = envsetup_config_name, file = envsetup_file_path)
envsetup::rprofile(loaded_config)


dpscomp <- compound
dpspdr <- paste(protocol,dbrelease,rpteff,sep="__")

aptcomp <- compound
aptpdr <- paste(protocol,dbrelease,rpteff,sep="__")

###### Study specific updates (formerly in envre)

dpscomp <- "standards"
dpspdr <- "jjcs__NULL__jjcs - core"

apt <- FALSE
library(junco)
default_str_map <- rbind(default_str_map, c("&ctcae", "5.0"))

```

## Output

:::: panel-tabset
## {{< fa regular file-lines sm fw >}} Preview

```{r variant1, results='hide', warning = FALSE, message = FALSE}

# Program Name:              tsfae23b.R

# Prep environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(junco)

# Define script level parameters

tblid <- "TSFAE23b"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
aerelvar <- "AEREL"
combined_colspan_trt <- TRUE
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map


if (combined_colspan_trt == TRUE) {
  # If no combined treatment column(s) needed for your study then this next
  # section of code can be removed
  # Set up levels and label for the required combined columns
  add_combo <- add_combo_facet(
    "Combined",
    label = "Combined",
    levels = c(
      "Xanomeline High Dose",
      "Xanomeline Low Dose"
    )
  )

  # choose if any facets need to be removed - e.g remove the combined column
  # for placebo
  rm_combo_from_placebo <- cond_rm_facets(
    facets = "Combined",
    ancestor_pos = NA,
    value = " ",
    split = "colspan_trt"
  )

  mysplit <- make_split_fun(post = list(add_combo, rm_combo_from_placebo))
}

# Process data

adsl <- pharmaverseadamjnj::adsl %>%
  filter(!!rlang::sym(popfl) == "Y") %>%
  create_colspan_var(
    non_active_grp = c("Placebo"),
    non_active_grp_span_lbl = " ",
    active_grp_span_lbl = "Active Study Agent",
    colspan_var = "colspan_trt",
    trt_var = trtvar
  ) %>%
  select(
    STUDYID,
    USUBJID,
    !!rlang::sym(popfl),
    !!rlang::sym(trtvar),
    colspan_trt
  )

trt_map <- create_colspan_map(
  df = adsl,
  non_active_grp = c("Placebo"),
  non_active_grp_span_lbl = " ",
  active_grp_span_lbl = "Active Study Agent",
  colspan_var = "colspan_trt",
  trt_var = trtvar
)
ref_path <- c("colspan_trt", " ", trtvar, "Placebo")

adae0 <- pharmaverseadamjnj::adae %>%
  filter(
    !!rlang::sym(popfl) == "Y" &
      !!rlang::sym(aerelvar) == "RELATED" &
      TRTEMFL == "Y" &
      AEOUT == "FATAL"
  ) %>%
  left_join(
    subset(adsl, select = c("STUDYID", "USUBJID", "colspan_trt")),
    by = c("STUDYID", "USUBJID")
  ) %>%
  select(
    STUDYID,
    USUBJID,
    !!rlang::sym(trtvar),
    !!rlang::sym(popfl),
    !!rlang::sym(aerelvar),
    TRTEMFL,
    AEOUT,
    AEDECOD,
    colspan_trt
  )

if (nrow(adae0) == 0) {
  adae <- adae0 %>%
    select(STUDYID, USUBJID, TRTEMFL, AEDECOD) %>%
    right_join(adsl, by = c("STUDYID", "USUBJID"))
} else {
  adae <- adae0
}

# Define layout and build table

lyt <- basic_table(
  show_colcounts = TRUE,
  colcount_format = "N=xx",
  top_level_section_div = " "
) %>%
  split_cols_by("colspan_trt", split_fun = trim_levels_to_map(map = trt_map))

if (combined_colspan_trt == TRUE) {
  lyt <- lyt %>%
    split_cols_by(trtvar, split_fun = mysplit)
} else {
  lyt <- lyt %>%
    split_cols_by(trtvar)
}

lyt <- lyt %>%
  analyze(
    vars = "TRTEMFL",
    show_labels = "hidden",
    afun = a_freq_j,
    extra_args = list(
      label = "Subjects with >=1 related fatal AE",
      .stats = c("count_unique_fraction"),
      val = "Y"
    ),
    section_div = c(" ")
  )

if (nrow(adae0) > 0) {
  lyt <- lyt %>%
    count_occurrences(
      vars = "AEDECOD",
      .stats = c("count_fraction_fixed_dp"),
      .indent_mods = c(count_fraction = -1L),
      .formats = c("count_fraction_fixed_dp" = jjcsformat_count_fraction),
      nested = FALSE
    ) %>%
    append_topleft("Preferred Term, n (%)")
} else {
  lyt <- lyt %>%
    append_topleft("Preferred Term, n (%)")
}

result <- build_table(lyt, df = adae, alt_counts_df = adsl)

# Post-processing

if (nrow(adae0) > 0) {
  # Post-Processing step to sort by descending count in the Combined
  # Xanomeline High Dose column
  result <- sort_at_path(
    tt = result,
    path = c("root", "AEDECOD"),
    scorefun = jj_complex_scorefun(
      spanningheadercolvar = "colspan_trt",
      colpath = NULL
    )
  )
}

if (nrow(adae0) == 0) {
  # Post-Processing step to remove 'Subjects with' row
  result <- safe_prune_table(
    result,
    prune_func = remove_rows(
      removerowtext = "Subjects with >=1 related fatal AE"
    )
  )
}

# Retrieve titles and footnotes

result <- set_titles(result, tab_titles)

# Convert to tbl file and output table

tt_to_tlgrtf(string_map = string_map, tt = result, file = fileid)
```
```{r result1, echo=FALSE, message=FALSE, warning=FALSE, test = list(result_v1 = "result")}
tt_to_flextable_j(result, tblid, string_map = string_map) 
```

[Download RTF file](`r paste0(tolower(tblid), '.rtf')`)
::::

Made with ❤️ by the J&J Team

  • Edit this page
  • Report an issue
Cookie Preferences