Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove default decorator and update docs #1348

Merged
merged 7 commits into from
Feb 21, 2025
Merged

Conversation

vedhav
Copy link
Contributor

@vedhav vedhav commented Feb 20, 2025

Have the same standards as tmg for the decorators

Here's the app to test decorators for all 36 modules
# Load packages
pkgload::load_all()

# Decorators ------------------------------------------------------------------
insert_rrow_decorator <- function(default_caption = "I am a good new row", .var_to_replace = "table") {
  teal_transform_module(
    label = "New rtables row",
    ui = function(id) shiny::textInput(shiny::NS(id, "new_row"), "New row", value = default_caption),
    server = make_teal_transform_server(
      substitute(
        {
          .var_to_replace <- rtables::insert_rrow(.var_to_replace, rtables::rrow(new_row))
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
add_title_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
  teal_transform_module(
    label = "Title",
    ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Add title?", TRUE),
    server = make_teal_transform_server(
      substitute(
        {
          if (flag) {
            .var_to_replace <-
              .var_to_replace + ggplot2::ggtitle("Title added by decorator")
          }
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
caption_decorator <- function(default_caption = "I am a good decorator", .var_to_replace = "plot") {
  teal_transform_module(
    label = "Caption",
    ui = function(id) shiny::textInput(shiny::NS(id, "footnote"), "Footnote", value = default_caption),
    server = make_teal_transform_server(
      substitute(
        {
          .var_to_replace <- .var_to_replace + ggplot2::labs(caption = footnote)
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
change_theme_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
  teal_transform_module(
    label = "Theme",
    ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Apply dark theme?", TRUE),
    server = make_teal_transform_server(
      substitute(
        {
          if (flag) .var_to_replace <- .var_to_replace + ggplot2::theme_dark()
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
add_cowplot_title_decorator <- function(default_check = TRUE, .var_to_replace = "plot") {
  teal_transform_module(
    label = "Cowplot title",
    ui = function(id) shiny::checkboxInput(NS(id, "flag"), "Add title?", TRUE),
    server = make_teal_transform_server(
      substitute(
        {
          if (flag) {
            .var_to_replace <-
              .var_to_replace +
              ggplot2::ggtitle("Title added by decorator") +
              cowplot::theme_cowplot()
          }
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
rlisting_footer <- function(default_footer = "I am a good footer", .var_to_replace = "table_listing") {
  teal_transform_module(
    label = "New row",
    ui = function(id) shiny::textInput(shiny::NS(id, "footer"), "footer", value = default_footer),
    server = make_teal_transform_server(
      substitute(
        {
          rlistings::main_footer(.var_to_replace) <- footer
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}
head_decorator <- function(default_value = 6, .var_to_replace = "object") {
  teal_transform_module(
    label = "Head",
    ui = function(id) shiny::numericInput(shiny::NS(id, "n"), "N rows", value = default_value),
    server = make_teal_transform_server(
      substitute(
        {
          .var_to_replace <- utils::head(.var_to_replace, n = n)
        },
        env = list(.var_to_replace = as.name(.var_to_replace))
      )
    )
  )
}

# End of decorators -----------------------------------------------------------

library(dplyr)

# arm_ref_comp <- list(ARMCD = list(ref = "ARM B", comp = c("ARM A", "ARM C")))

arm_ref_comp <- list(
  ACTARMCD = list(ref = "ARM B", comp = c("ARM A", "ARM C")),
  ARM = list(ref = "B: Placebo", comp = c("A: Drug X", "C: Combination"))
)

data <- within(teal_data(), {
  ADSL <- tmc_ex_adsl |>
    mutate(ITTFL = factor("Y") |> with_label("Intent-To-Treat Population Flag")) |>
    mutate(DTHFL = case_when(!is.na(DTHDT) ~ "Y", TRUE ~ "") |> with_label("Subject Death Flag"))

  ADAE <- tmc_ex_adae |>
    filter(!((AETOXGR == 1) & (AESEV == "MILD") & (ARM == "A: Drug X")))

  ADAE$ASTDY <- structure(
    as.double(ADAE$ASTDY, unit = attr(ADAE$ASTDY, "units", exact = TRUE)),
    label = attr(ADAE$ASTDY, "label", exact = TRUE)
  )

  .lbls_adae <- col_labels(tmc_ex_adae)
  ADAE <- tmc_ex_adae %>%
    mutate_if(is.character, as.factor) #' be certain of having factors
  col_labels(ADAE) <- .lbls_adae

  ADTTE <- tmc_ex_adtte

  ADLB <- tmc_ex_adlb |>
    mutate(AVISIT == forcats::fct_reorder(AVISIT, AVISITN, min)) |>
    mutate(
      ONTRTFL = case_when(
        AVISIT %in% c("SCREENING", "BASELINE") ~ "",
        TRUE ~ "Y"
      ) |> with_label("On Treatment Record Flag")
    )

  ADVS <- tmc_ex_advs

  ADRS <- tmc_ex_adrs |>
    mutate(
      AVALC = d_onco_rsp_label(AVALC) |>
        with_label("Character Result/Finding")
    ) |>
    filter(PARAMCD != "OVRINV" | AVISIT == "FOLLOW UP") |>
    filter(PARAMCD %in% c("BESRSPI", "INVET"))

  ADAETTE <- tmc_ex_adaette %>%
    filter(PARAMCD %in% c("AETTE1", "AETTE2", "AETTE3")) %>%
    mutate(is_event = CNSR == 0) %>%
    mutate(n_events = as.integer(is_event))

  .add_event_flags <- function(dat) {
    dat <- dat %>%
      mutate(
        TMPFL_SER = AESER == "Y",
        TMPFL_REL = AEREL == "Y",
        TMPFL_GR5 = AETOXGR == "5",
        TMP_SMQ01 = !is.na(SMQ01NAM),
        TMP_SMQ02 = !is.na(SMQ02NAM),
        TMP_CQ01 = !is.na(CQ01NAM)
      )
    column_labels <- list(
      TMPFL_SER = "Serious AE",
      TMPFL_REL = "Related AE",
      TMPFL_GR5 = "Grade 5 AE",
      TMP_SMQ01 = aesi_label(dat[["SMQ01NAM"]], dat[["SMQ01SC"]]),
      TMP_SMQ02 = aesi_label("Y.9.9.9.9/Z.9.9.9.9 AESI"),
      TMP_CQ01 = aesi_label(dat[["CQ01NAM"]])
    )
    col_labels(dat)[names(column_labels)] <- as.character(column_labels)
    dat
  }

  ADEX <- tmc_ex_adex

  set.seed(1, kind = "Mersenne-Twister")
  .labels <- col_labels(ADEX, fill = FALSE)
  ADEX <- ADEX %>%
    distinct(USUBJID, .keep_all = TRUE) %>%
    mutate(
      PARAMCD = "TDURD",
      PARAM = "Overall duration (days)",
      AVAL = sample(x = seq(1, 200), size = n(), replace = TRUE),
      AVALU = "Days"
    ) %>%
    bind_rows(ADEX)
  col_labels(ADEX) <- .labels

  ADCM <- tmc_ex_adcm

  ADMH <- tmc_ex_admh

  ADCM$CMASTDTM <- ADCM$ASTDTM
  ADCM$CMAENDTM <- ADCM$AENDTM

  ADEG <- tmc_ex_adeg

  # smq
  .names_baskets <- grep("^(SMQ|CQ).*NAM$", names(ADAE), value = TRUE)
  .names_scopes <- grep("^SMQ.*SC$", names(ADAE), value = TRUE)

  .cs_baskets <- choices_selected(
    choices = variable_choices(ADAE, subset = .names_baskets),
    selected = .names_baskets
  )

  .cs_scopes <- choices_selected(
    choices = variable_choices(ADAE, subset = .names_scopes),
    selected = .names_scopes,
    fixed = TRUE
  )

  # summary
  ADSL$EOSDY[1] <- NA_integer_
  ADQS <- tmc_ex_adqs %>%
    filter(ABLFL != "Y" & ABLFL2 != "Y") %>%
    mutate(
      AVISIT = as.factor(AVISIT),
      AVISITN = rank(AVISITN) %>%
        as.factor() %>%
        as.numeric() %>%
        as.factor(),
      AVALBIN = AVAL < 50 # Just as an example to get a binary endpoint.
    ) %>%
    droplevels()
})
join_keys(data) <- default_cdisc_join_keys[names(data)]
adcm_keys <- c("STUDYID", "USUBJID", "ASTDTM", "CMSEQ", "ATC1", "ATC2", "ATC3", "ATC4")
join_keys(data)["ADCM", "ADCM"] <- adcm_keys

# Use in choices selected -----------------------------------------------------

ADSL <- data[["ADSL"]]
ADQS <- data[["ADQS"]]
ADAE <- data[["ADAE"]]
ADTTE <- data[["ADTTE"]]
ADLB <- data[["ADLB"]]
ADAE <- data[["ADAE"]]
ADVS <- data[["ADVS"]]
ADRS <- data[["ADRS"]]
ADAETTE <- data[["ADAETTE"]]
ADEX <- data[["ADEX"]]
ADCM <- data[["ADCM"]]
ADMH <- data[["ADMH"]]
ADEG <- data[["ADEG"]]

# Init ------------------------------------------------------------------------

init(
  data = data,
  modules = modules(
    tm_a_mmrm(
      label = "tm_a_mmrm",
      dataname = "ADQS",
      aval_var = choices_selected(c("AVAL", "CHG"), "AVAL"),
      id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        choices = value_choices(data[["ADQS"]], "PARAMCD", "PARAM"),
        selected = "FKSI-FWB"
      ),
      cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL),
      decorators = list(
        lsmeans_table = insert_rrow_decorator("New row for lsmeans_table", .var_to_replace = "lsmeans_table"),
        lsmeans_plot = add_title_decorator("New title for lsmeans_plot", .var_to_replace = "lsmeans_plot"),
        covariance_table = insert_rrow_decorator("New row for covariance_table", .var_to_replace = "covariance_table"),
        fixed_effects_table = insert_rrow_decorator("New row for fixed_effects_table", .var_to_replace = "fixed_effects_table"),
        diagnostic_table = insert_rrow_decorator("New row for diagnostic_table", .var_to_replace = "diagnostic_table"),
        diagnostic_plot = add_title_decorator("New title for diagnostic_plot", .var_to_replace = "diagnostic_plot")
      )
    )
  )
) |> runApp()

init(
  data = data,
  modules = modules(
    tm_a_gee(
      label = "tm_a_gee",
      dataname = "ADQS",
      aval_var = choices_selected("AVALBIN", fixed = TRUE),
      id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
      paramcd = choices_selected(
        choices = value_choices(data[["ADQS"]], "PARAMCD", "PARAM"),
        selected = "FKSI-FWB"
      ),
      cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_a_mmrm(
      label = "tm_a_mmrm",
      dataname = "ADQS",
      aval_var = choices_selected(c("AVAL", "CHG"), "AVAL"),
      id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        choices = value_choices(data[["ADQS"]], "PARAMCD", "PARAM"),
        selected = "FKSI-FWB"
      ),
      cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL),
      decorators = list(
        lsmeans_table = insert_rrow_decorator("New row for lsmeans_table", .var_to_replace = "lsmeans_table"),
        lsmeans_plot = add_title_decorator(.var_to_replace = "lsmeans_plot"),
        covariance_table = insert_rrow_decorator("New row for covariance_table", .var_to_replace = "covariance_table"),
        fixed_effects_table = insert_rrow_decorator("New row for fixed_effects_table", .var_to_replace = "fixed_effects_table"),
        diagnostic_table = insert_rrow_decorator("New row for diagnostic_table", .var_to_replace = "diagnostic_table"),
        diagnostic_plot = add_title_decorator(.var_to_replace = "diagnostic_plot")
      )
    ),
    tm_g_barchart_simple(
      label = "tm_g_barchart_simple",
      x = data_extract_spec(
        dataname = "ADSL",
        select = select_spec(
          choices = variable_choices(
            ADSL,
            c(
              "ARM", "ACTARM", "SEX",
              "RACE", "ITTFL", "SAFFL", "STRATA2"
            )
          ),
          selected = "ACTARM",
          multiple = FALSE
        )
      ),
      fill = list(
        data_extract_spec(
          dataname = "ADSL",
          select = select_spec(
            choices = variable_choices(
              ADSL,
              c(
                "ARM", "ACTARM", "SEX",
                "RACE", "ITTFL", "SAFFL", "STRATA2"
              )
            ),
            selected = "SEX",
            multiple = FALSE
          )
        ),
        data_extract_spec(
          dataname = "ADAE",
          select = select_spec(
            choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
            selected = NULL,
            multiple = FALSE
          )
        )
      ),
      x_facet = list(
        data_extract_spec(
          dataname = "ADAE",
          select = select_spec(
            choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
            selected = "AETOXGR",
            multiple = FALSE
          )
        ),
        data_extract_spec(
          dataname = "ADSL",
          select = select_spec(
            choices = variable_choices(
              ADSL,
              c(
                "ARM", "ACTARM", "SEX",
                "RACE", "ITTFL", "SAFFL", "STRATA2"
              )
            ),
            selected = NULL,
            multiple = FALSE
          )
        )
      ),
      y_facet = list(
        data_extract_spec(
          dataname = "ADAE",
          select = select_spec(
            choices = variable_choices(ADAE, c("AETOXGR", "AESEV", "AESER")),
            selected = "AESEV",
            multiple = FALSE
          )
        ),
        data_extract_spec(
          dataname = "ADSL",
          select = select_spec(
            choices = variable_choices(
              ADSL,
              c(
                "ARM", "ACTARM", "SEX",
                "RACE", "ITTFL", "SAFFL", "STRATA2"
              )
            ),
            selected = NULL,
            multiple = FALSE
          )
        )
      ),
      decorators = list(plot = caption_decorator("The best", "plot"))
    ),
    tm_g_ci(
      label = "tm_g_ci",
      x_var = data_extract_spec(
        dataname = "ADSL",
        select = select_spec(
          choices = c("ARMCD", "BMRKR2"),
          selected = c("ARMCD"),
          multiple = FALSE,
          fixed = FALSE
        )
      ),
      y_var = data_extract_spec(
        dataname = "ADLB",
        filter = list(
          filter_spec(
            vars = "PARAMCD",
            choices = levels(ADLB$PARAMCD),
            selected = levels(ADLB$PARAMCD)[1],
            multiple = FALSE,
            label = "Select lab:"
          ),
          filter_spec(
            vars = "AVISIT",
            choices = levels(ADLB$AVISIT),
            selected = levels(ADLB$AVISIT)[1],
            multiple = FALSE,
            label = "Select visit:"
          )
        ),
        select = select_spec(
          label = "Analyzed Value",
          choices = c("AVAL", "CHG"),
          selected = "AVAL",
          multiple = FALSE,
          fixed = FALSE
        )
      ),
      color = data_extract_spec(
        dataname = "ADSL",
        select = select_spec(
          label = "Color by variable",
          choices = c("SEX", "STRATA1", "STRATA2"),
          selected = c("STRATA1"),
          multiple = FALSE,
          fixed = FALSE
        )
      ),
      decorators = list(plot = caption_decorator(.var_to_replace = "plot"))
    ),
    tm_g_forest_rsp(
      label = "tm_g_forest_rsp",
      dataname = "ADRS",
      arm_var = choices_selected(
        variable_choices(ADSL, c("ARM", "ARMCD")),
        "ARMCD"
      ),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        value_choices(ADRS, "PARAMCD", "PARAM"),
        "INVET"
      ),
      subgroup_var = choices_selected(
        variable_choices(ADSL, names(ADSL)),
        c("BMRKR2", "SEX")
      ),
      strata_var = choices_selected(
        variable_choices(ADSL, c("STRATA1", "STRATA2")),
        "STRATA2"
      ),
      plot_height = c(600L, 200L, 2000L),
      default_responses = list(
        BESRSPI = list(
          rsp = c("Stable Disease (SD)", "Not Evaluable (NE)"),
          levels = c(
            "Complete Response (CR)", "Partial Response (PR)", "Stable Disease (SD)",
            "Progressive Disease (PD)", "Not Evaluable (NE)"
          )
        ),
        INVET = list(
          rsp = c("Complete Response (CR)", "Partial Response (PR)"),
          levels = c(
            "Complete Response (CR)", "Not Evaluable (NE)", "Partial Response (PR)",
            "Progressive Disease (PD)", "Stable Disease (SD)"
          )
        ),
        OVRINV = list(
          rsp = c("Progressive Disease (PD)", "Stable Disease (SD)"),
          levels = c("Progressive Disease (PD)", "Stable Disease (SD)", "Not Evaluable (NE)")
        )
      ),
      decorators = list(plot = caption_decorator())
    ),
    tm_g_forest_tte(
      label = "tm_g_forest_tte",
      dataname = "ADTTE",
      arm_var = choices_selected(
        variable_choices(ADSL, c("ARM", "ARMCD")),
        "ARMCD"
      ),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        value_choices(ADTTE, "PARAMCD", "PARAM"),
        "OS"
      ),
      subgroup_var = choices_selected(
        variable_choices(ADSL, names(ADSL)),
        c("BMRKR2", "SEX")
      ),
      strata_var = choices_selected(
        variable_choices(ADSL, c("STRATA1", "STRATA2")),
        "STRATA2"
      ),
      decorators = list(plot = caption_decorator())
    ),
    tm_g_ipp(
      label = "tm_g_ipp",
      dataname = "ADLB",
      arm_var = choices_selected(
        value_choices(ADLB, "ARMCD"),
        "ARM A"
      ),
      paramcd = choices_selected(
        value_choices(ADLB, "PARAMCD"),
        "ALT"
      ),
      aval_var = choices_selected(
        variable_choices(ADLB, c("AVAL", "CHG")),
        "AVAL"
      ),
      avalu_var = choices_selected(
        variable_choices(ADLB, c("AVALU")),
        "AVALU",
        fixed = TRUE
      ),
      id_var = choices_selected(
        variable_choices(ADLB, c("USUBJID")),
        "USUBJID",
        fixed = TRUE
      ),
      visit_var = choices_selected(
        variable_choices(ADLB, c("AVISIT")),
        "AVISIT"
      ),
      baseline_var = choices_selected(
        variable_choices(ADLB, c("BASE")),
        "BASE",
        fixed = TRUE
      ),
      add_baseline_hline = FALSE,
      separate_by_obs = FALSE,
      decorators = list(plot = caption_decorator(.var_to_replace = "plot"))
    ),
    tm_g_km(
      label = "tm_g_km",
      dataname = "ADTTE",
      arm_var = choices_selected(
        variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")),
        "ARM"
      ),
      paramcd = choices_selected(
        value_choices(ADTTE, "PARAMCD", "PARAM"),
        "OS"
      ),
      arm_ref_comp = arm_ref_comp,
      strata_var = choices_selected(
        variable_choices(ADSL, c("SEX", "BMRKR2")),
        "SEX"
      ),
      facet_var = choices_selected(
        variable_choices(ADSL, c("SEX", "BMRKR2")),
        NULL
      ),
      decorators = list(plot = add_cowplot_title_decorator(TRUE, "plot"))
    ),
    tm_g_lineplot(
      label = "tm_g_lineplot",
      dataname = "ADLB",
      strata = choices_selected(
        variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")),
        "ARM"
      ),
      y = choices_selected(
        variable_choices(ADLB, c("AVAL", "BASE", "CHG", "PCHG")),
        "AVAL"
      ),
      param = choices_selected(
        value_choices(ADLB, "PARAMCD", "PARAM"),
        "ALT"
      ),
      decorators = list(plot = add_cowplot_title_decorator("plot"))
    ),
    tm_g_pp_adverse_events(
      label = "tm_g_pp_adverse_events",
      dataname = "ADAE",
      parentname = "ADSL",
      patient_col = "USUBJID",
      plot_height = c(600L, 200L, 2000L),
      aeterm = choices_selected(
        choices = variable_choices(ADAE, "AETERM"),
        selected = "AETERM"
      ),
      tox_grade = choices_selected(
        choices = variable_choices(ADAE, "AETOXGR"),
        selected = "AETOXGR"
      ),
      causality = choices_selected(
        choices = variable_choices(ADAE, "AEREL"),
        selected = "AEREL"
      ),
      outcome = choices_selected(
        choices = variable_choices(ADAE, "AEOUT"),
        selected = "AEOUT"
      ),
      action = choices_selected(
        choices = variable_choices(ADAE, "AEACN"),
        selected = "AEACN"
      ),
      time = choices_selected(
        choices = variable_choices(ADAE, "ASTDY"),
        selected = "ASTDY"
      ),
      decod = NULL,
      decorators = list(
        plot = caption_decorator("I am a good caption", "plot"),
        table = rlisting_footer(.var_to_replace = "table")
      )
    ),
    tm_g_pp_patient_timeline(
      label = "tm_g_pp_patient_timeline",
      dataname_adae = "ADAE",
      dataname_adcm = "ADCM",
      parentname = "ADSL",
      patient_col = "USUBJID",
      plot_height = c(600L, 200L, 2000L),
      cmdecod = choices_selected(
        choices = variable_choices(data[["ADCM"]], "CMDECOD"),
        selected = "CMDECOD",
      ),
      aeterm = choices_selected(
        choices = variable_choices(data[["ADAE"]], "AETERM"),
        selected = c("AETERM")
      ),
      aetime_start = choices_selected(
        choices = variable_choices(data[["ADAE"]], "ASTDTM"),
        selected = c("ASTDTM")
      ),
      aetime_end = choices_selected(
        choices = variable_choices(data[["ADAE"]], "AENDTM"),
        selected = c("AENDTM")
      ),
      dstime_start = choices_selected(
        choices = variable_choices(data[["ADCM"]], "CMASTDTM"),
        selected = c("CMASTDTM")
      ),
      dstime_end = choices_selected(
        choices = variable_choices(data[["ADCM"]], "CMAENDTM"),
        selected = c("CMAENDTM")
      ),
      aerelday_start = choices_selected(
        choices = variable_choices(data[["ADAE"]], "ASTDY"),
        selected = c("ASTDY")
      ),
      aerelday_end = choices_selected(
        choices = variable_choices(data[["ADAE"]], "AENDY"),
        selected = c("AENDY")
      ),
      dsrelday_start = choices_selected(
        choices = variable_choices(data[["ADCM"]], "ASTDY"),
        selected = c("ASTDY")
      ),
      dsrelday_end = choices_selected(
        choices = variable_choices(data[["ADCM"]], "AENDY"),
        selected = c("AENDY")
      ),
      decorators = list(plot = caption_decorator())
    ),
    tm_g_pp_therapy(
      label = "tm_g_pp_therapy",
      dataname = "ADCM",
      parentname = "ADSL",
      patient_col = "USUBJID",
      plot_height = c(600L, 200L, 2000L),
      atirel = choices_selected(
        choices = variable_choices(ADCM, "ATIREL"),
        selected = c("ATIREL")
      ),
      cmdecod = choices_selected(
        choices = variable_choices(ADCM, "CMDECOD"),
        selected = "CMDECOD"
      ),
      cmindc = choices_selected(
        choices = variable_choices(ADCM, "CMINDC"),
        selected = "CMINDC"
      ),
      cmdose = choices_selected(
        choices = variable_choices(ADCM, "CMDOSE"),
        selected = "CMDOSE"
      ),
      cmtrt = choices_selected(
        choices = variable_choices(ADCM, "CMTRT"),
        selected = "CMTRT"
      ),
      cmdosu = choices_selected(
        choices = variable_choices(ADCM, "CMDOSU"),
        selected = c("CMDOSU")
      ),
      cmroute = choices_selected(
        choices = variable_choices(ADCM, "CMROUTE"),
        selected = "CMROUTE"
      ),
      cmdosfrq = choices_selected(
        choices = variable_choices(ADCM, "CMDOSFRQ"),
        selected = "CMDOSFRQ"
      ),
      cmstdy = choices_selected(
        choices = variable_choices(ADCM, "ASTDY"),
        selected = "ASTDY"
      ),
      cmendy = choices_selected(
        choices = variable_choices(ADCM, "AENDY"),
        selected = "AENDY"
      ),
      decorators = list(plot = caption_decorator("Marcin", "plot"), table = head_decorator(2, "table"))
    ),
    tm_g_pp_vitals(
      label = "tm_g_pp_vitals",
      dataname = "ADVS",
      parentname = "ADSL",
      patient_col = "USUBJID",
      plot_height = c(600L, 200L, 2000L),
      paramcd = choices_selected(
        choices = variable_choices(ADVS, "PARAMCD"),
        selected = "PARAMCD"
      ),
      xaxis = choices_selected(
        choices = variable_choices(ADVS, "ADY"),
        selected = "ADY"
      ),
      aval_var = choices_selected(
        choices = variable_choices(ADVS, "AVAL"),
        selected = "AVAL"
      ),
      decorators = list(plot = add_title_decorator("plot"))
    ),
    tm_t_abnormality(
      label = "tm_t_abnormality",
      dataname = "ADLB",
      arm_var = choices_selected(
        choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      add_total = FALSE,
      by_vars = choices_selected(
        choices = variable_choices(ADLB, subset = c("LBCAT", "PARAM", "AVISIT")),
        selected = c("LBCAT", "PARAM"),
        keep_order = TRUE
      ),
      baseline_var = choices_selected(
        variable_choices(ADLB, subset = "BNRIND"),
        selected = "BNRIND", fixed = TRUE
      ),
      grade = choices_selected(
        choices = variable_choices(ADLB, subset = "ANRIND"),
        selected = "ANRIND",
        fixed = TRUE
      ),
      abnormal = list(low = "LOW", high = "HIGH"),
      exclude_base_abn = FALSE,
      decorators = list(table = insert_rrow_decorator("I am a good new row"))
    ),
    tm_t_abnormality_by_worst_grade(
      label = "tm_t_abnormality_by_worst_grade",
      dataname = "ADLB",
      arm_var = choices_selected(
        choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      paramcd = choices_selected(
        choices = value_choices(ADLB, "PARAMCD", "PARAM"),
        selected = c("ALT", "CRP", "IGA")
      ),
      add_total = FALSE,
      decorators = list(table = insert_rrow_decorator("I am a good new row"))
    ),
    tm_t_ancova(
      label = "tm_t_ancova",
      dataname = "ADQS",
      avisit = choices_selected(
        choices = value_choices(ADQS, "AVISIT"),
        selected = "WEEK 1 DAY 8"
      ),
      arm_var = choices_selected(
        choices = variable_choices(ADSL, c("ARM", "ACTARMCD", "ARMCD")),
        selected = "ARMCD"
      ),
      arm_ref_comp = arm_ref_comp,
      aval_var = choices_selected(
        choices = variable_choices(ADQS, c("CHG", "AVAL")),
        selected = "CHG"
      ),
      cov_var = choices_selected(
        choices = variable_choices(ADQS, c("BASE", "STRATA1", "SEX")),
        selected = "STRATA1"
      ),
      paramcd = choices_selected(
        choices = value_choices(ADQS, "PARAMCD", "PARAM"),
        selected = "FKSI-FWB"
      ),
      interact_var = choices_selected(
        choices = variable_choices(ADQS, c("BASE", "STRATA1", "SEX")),
        selected = "STRATA1"
      ),
      decorators = list(table = insert_rrow_decorator("I am a good new row"))
    ),
    tm_t_binary_outcome(
      label = "tm_t_binary_outcome",
      dataname = "ADRS",
      paramcd = choices_selected(
        choices = value_choices(ADRS, "PARAMCD", "PARAM"),
        selected = "BESRSPI"
      ),
      arm_var = choices_selected(
        choices = variable_choices(ADRS, c("ARM", "ARMCD", "ACTARMCD")),
        selected = "ARM"
      ),
      arm_ref_comp = arm_ref_comp,
      strata_var = choices_selected(
        choices = variable_choices(ADRS, c("SEX", "BMRKR2", "RACE")),
        selected = "RACE"
      ),
      default_responses = list(
        BESRSPI = list(
          rsp = c("Complete Response (CR)", "Partial Response (PR)"),
          levels = c(
            "Complete Response (CR)", "Partial Response (PR)",
            "Stable Disease (SD)", "Progressive Disease (PD)"
          )
        ),
        INVET = list(
          rsp = c("Stable Disease (SD)", "Not Evaluable (NE)"),
          levels = c(
            "Complete Response (CR)", "Not Evaluable (NE)", "Partial Response (PR)",
            "Progressive Disease (PD)", "Stable Disease (SD)"
          )
        ),
        OVRINV = list(
          rsp = c("Progressive Disease (PD)", "Stable Disease (SD)"),
          levels = c("Progressive Disease (PD)", "Stable Disease (SD)", "Not Evaluable (NE)")
        )
      ),
      decorators = list(table = insert_rrow_decorator("I am a new row"))
    ),
    tm_t_coxreg(
      label = "tm_t_coxreg",
      dataname = "ADTTE",
      arm_var = choices_selected(c("ARM", "ARMCD", "ACTARMCD"), "ARM"),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        value_choices(ADTTE, "PARAMCD", "PARAM"), "OS"
      ),
      strata_var = choices_selected(
        c("COUNTRY", "STRATA1", "STRATA2"), "STRATA1"
      ),
      cov_var = choices_selected(
        c("AGE", "BMRKR1", "BMRKR2", "REGION1"), "AGE"
      ),
      multivariate = TRUE,
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_events(
      label = "tm_t_events",
      dataname = "ADAE",
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      llt = choices_selected(
        choices = variable_choices(ADAE, c("AETERM", "AEDECOD")),
        selected = c("AEDECOD")
      ),
      hlt = choices_selected(
        choices = variable_choices(ADAE, c("AEBODSYS", "AESOC")),
        selected = "AEBODSYS"
      ),
      add_total = TRUE,
      event_type = "adverse event",
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_events_by_grade(
      label = "tm_t_events_by_grade",
      dataname = "ADAE",
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      llt = choices_selected(
        choices = variable_choices(ADAE, c("AETERM", "AEDECOD")),
        selected = c("AEDECOD")
      ),
      hlt = choices_selected(
        choices = variable_choices(ADAE, c("AEBODSYS", "AESOC")),
        selected = "AEBODSYS"
      ),
      grade = choices_selected(
        choices = variable_choices(ADAE, c("AETOXGR", "AESEV")),
        selected = "AETOXGR"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_events_patyear(
      label = "tm_t_events_patyear",
      dataname = "ADAETTE",
      arm_var = choices_selected(
        choices = variable_choices(ADSL, c("ARM", "ARMCD")),
        selected = "ARMCD"
      ),
      add_total = TRUE,
      events_var = choices_selected(
        choices = variable_choices(ADAETTE, "n_events"),
        selected = "n_events",
        fixed = TRUE
      ),
      paramcd = choices_selected(
        choices = value_choices(ADAETTE, "PARAMCD", "PARAM"),
        selected = "AETTE1"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_events_summary(
      label = "tm_t_events_summary",
      dataname = "ADAE",
      arm_var = choices_selected(
        choices = variable_choices("ADSL", c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      flag_var_anl = choices_selected(
        choices = variable_choices("ADAE", data[[".ae_anl_vars"]]),
        selected = data[[".ae_anl_vars"]][1],
        keep_order = TRUE,
        fixed = FALSE
      ),
      flag_var_aesi = choices_selected(
        choices = variable_choices("ADAE", data[[".aesi_vars"]]),
        selected = data[[".aesi_vars"]][1],
        keep_order = TRUE,
        fixed = FALSE
      ),
      add_total = TRUE,
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_exposure(
      label = "tm_t_exposure",
      dataname = "ADEX",
      paramcd = choices_selected(
        choices = value_choices(data[["ADEX"]], "PARAMCD", "PARAM"),
        selected = "TDURD"
      ),
      col_by_var = choices_selected(
        choices = variable_choices(data[["ADEX"]], subset = c("SEX", "ARM")),
        selected = "SEX"
      ),
      row_by_var = choices_selected(
        choices = variable_choices(data[["ADEX"]], subset = c("RACE", "REGION1", "STRATA1", "SEX")),
        selected = "RACE"
      ),
      parcat = choices_selected(
        choices = value_choices(data[["ADEX"]], "PARCAT2"),
        selected = "Drug A"
      ),
      add_total = FALSE,
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_logistic(
      label = "tm_t_logistic",
      dataname = "ADRS",
      arm_var = choices_selected(
        choices = variable_choices(ADRS, c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        choices = value_choices(ADRS, "PARAMCD", "PARAM"),
        selected = "BESRSPI"
      ),
      cov_var = choices_selected(
        choices = c("SEX", "AGE", "BMRKR1", "BMRKR2"),
        selected = "SEX"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_mult_events(
      label = "tm_t_mult_events",
      dataname = "ADCM",
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      seq_var = choices_selected("CMSEQ", selected = "CMSEQ", fixed = TRUE),
      hlt = choices_selected(
        choices = variable_choices(ADCM, c("ATC1", "ATC2", "ATC3", "ATC4")),
        selected = c("ATC1", "ATC2", "ATC3", "ATC4")
      ),
      llt = choices_selected(choices = variable_choices(ADCM, c("CMDECOD")), selected = c("CMDECOD")),
      add_total = TRUE,
      event_type = "treatment",
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_pp_basic_info(
      label = "tm_t_pp_basic_info",
      dataname = "ADSL",
      patient_col = "USUBJID",
      vars = choices_selected(choices = variable_choices(ADSL), selected = c("ARM", "AGE", "SEX", "COUNTRY", "RACE", "EOSSTT")),
      decorators = list(
        table = rlisting_footer(.var_to_replace = "table")
      )
    ),
    tm_t_pp_laboratory(
      label = "tm_t_pp_laboratory",
      dataname = "ADLB",
      patient_col = "USUBJID",
      paramcd = choices_selected(
        choices = variable_choices(ADLB, "PARAMCD"),
        selected = "PARAMCD"
      ),
      param = choices_selected(
        choices = variable_choices(ADLB, "PARAM"),
        selected = "PARAM"
      ),
      timepoints = choices_selected(
        choices = variable_choices(ADLB, "ADY"),
        selected = "ADY"
      ),
      anrind = choices_selected(
        choices = variable_choices(ADLB, "ANRIND"),
        selected = "ANRIND"
      ),
      aval_var = choices_selected(
        choices = variable_choices(ADLB, "AVAL"),
        selected = "AVAL"
      ),
      avalu_var = choices_selected(
        choices = variable_choices(ADLB, "AVALU"),
        selected = "AVALU"
      ),
      decorators = list(table = rlisting_footer(.var_to_replace = "table"))
    ),
    tm_t_pp_medical_history(
      label = "tm_t_pp_medical_history",
      dataname = "ADMH",
      parentname = "ADSL",
      patient_col = "USUBJID",
      mhterm = choices_selected(
        choices = variable_choices(ADMH, c("MHTERM")),
        selected = "MHTERM"
      ),
      mhbodsys = choices_selected(
        choices = variable_choices(ADMH, "MHBODSYS"),
        selected = "MHBODSYS"
      ),
      mhdistat = choices_selected(
        choices = variable_choices(ADMH, "MHDISTAT"),
        selected = "MHDISTAT"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_pp_prior_medication(
      label = "tm_t_pp_prior_medication",
      dataname = "ADCM",
      parentname = "ADSL",
      patient_col = "USUBJID",
      atirel = choices_selected(
        choices = variable_choices(ADCM, "ATIREL"),
        selected = "ATIREL"
      ),
      cmdecod = choices_selected(
        choices = variable_choices(ADCM, "CMDECOD"),
        selected = "CMDECOD"
      ),
      cmindc = choices_selected(
        choices = variable_choices(ADCM, "CMINDC"),
        selected = "CMINDC"
      ),
      cmstdy = choices_selected(
        choices = variable_choices(ADCM, "ASTDY"),
        selected = "ASTDY"
      ),
      decorators = list(
        table = rlisting_footer(.var_to_replace = "table")
      )
    ),
    tm_t_shift_by_arm(
      label = "tm_t_shift_by_arm",
      dataname = "ADEG",
      arm_var = choices_selected(
        variable_choices(ADSL, subset = c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      paramcd = choices_selected(
        value_choices(ADEG, "PARAMCD"),
        selected = "HR"
      ),
      visit_var = choices_selected(
        value_choices(ADEG, "AVISIT"),
        selected = "POST-BASELINE MINIMUM"
      ),
      aval_var = choices_selected(
        variable_choices(ADEG, subset = "ANRIND"),
        selected = "ANRIND",
        fixed = TRUE
      ),
      baseline_var = choices_selected(
        variable_choices(ADEG, subset = "BNRIND"),
        selected = "BNRIND",
        fixed = TRUE
      ),
      useNA = "ifany",
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_shift_by_arm_by_worst(
      label = "tm_t_shift_by_arm_by_worst",
      dataname = "ADEG",
      arm_var = choices_selected(
        variable_choices(ADSL, subset = c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      paramcd = choices_selected(
        value_choices(ADEG, "PARAMCD"),
        selected = "ECGINTP"
      ),
      worst_flag_var = choices_selected(
        variable_choices(ADEG, c("WORS02FL", "WORS01FL")),
        selected = "WORS02FL"
      ),
      worst_flag = choices_selected(
        value_choices(ADEG, "WORS02FL"),
        selected = "Y",
        fixed = TRUE
      ),
      aval_var = choices_selected(
        variable_choices(ADEG, c("AVALC", "ANRIND")),
        selected = "AVALC"
      ),
      baseline_var = choices_selected(
        variable_choices(ADEG, c("BASEC", "BNRIND")),
        selected = "BASEC"
      ),
      useNA = "ifany",
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_shift_by_grade(
      label = "tm_t_shift_by_grade",
      dataname = "ADLB",
      arm_var = choices_selected(
        choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      paramcd = choices_selected(
        choices = value_choices(ADLB, "PARAMCD", "PARAM"),
        selected = "ALT"
      ),
      worst_flag_var = choices_selected(
        choices = variable_choices(ADLB, subset = c("WGRLOVFL", "WGRLOFL", "WGRHIVFL", "WGRHIFL")),
        selected = c("WGRLOVFL")
      ),
      worst_flag_indicator = choices_selected(
        value_choices(ADLB, "WGRLOVFL"),
        selected = "Y", fixed = TRUE
      ),
      anl_toxgrade_var = choices_selected(
        choices = variable_choices(ADLB, subset = c("ATOXGR")),
        selected = c("ATOXGR"),
        fixed = TRUE
      ),
      base_toxgrade_var = choices_selected(
        choices = variable_choices(ADLB, subset = c("BTOXGR")),
        selected = c("BTOXGR"),
        fixed = TRUE
      ),
      add_total = FALSE,
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_smq(
      label = "tm_t_smq",
      dataname = "ADAE",
      arm_var = choices_selected(
        choices = variable_choices(data[["ADSL"]], subset = c("ARM", "SEX")),
        selected = "ARM"
      ),
      add_total = FALSE,
      baskets = data[[".cs_baskets"]],
      scopes = data[[".cs_scopes"]],
      llt = choices_selected(
        choices = variable_choices(data[["ADAE"]], subset = c("AEDECOD")),
        selected = "AEDECOD"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_summary(
      label = "tm_t_summary",
      dataname = "ADSL",
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      add_total = TRUE,
      summarize_vars = choices_selected(
        c("SEX", "RACE", "BMRKR2", "EOSDY", "DCSREAS", "AGE"),
        c("SEX", "RACE")
      ),
      useNA = "ifany",
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_summary_by(
      label = "tm_t_summary_by",
      dataname = "ADLB",
      arm_var = choices_selected(
        choices = variable_choices(ADSL, c("ARM", "ARMCD")),
        selected = "ARM"
      ),
      add_total = TRUE,
      by_vars = choices_selected(
        choices = variable_choices(ADLB, c("PARAM", "AVISIT")),
        selected = c("AVISIT")
      ),
      summarize_vars = choices_selected(
        choices = variable_choices(ADLB, c("AVAL", "CHG")),
        selected = c("AVAL")
      ),
      useNA = "ifany",
      paramcd = choices_selected(
        choices = value_choices(ADLB, "PARAMCD", "PARAM"),
        selected = "ALT"
      ),
      decorators = list(table = insert_rrow_decorator())
    ),
    tm_t_tte(
      label = "tm_t_tte",
      dataname = "ADTTE",
      arm_var = choices_selected(variable_choices(ADSL, c("ARM", "ARMCD", "ACTARMCD")), "ARM"),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(value_choices(ADTTE, "PARAMCD", "PARAM"), "OS"),
      strata_var = choices_selected(variable_choices(ADSL, c("SEX", "BMRKR2")), "SEX"),
      time_points = choices_selected(c(182, 243), 182),
      event_desc_var = choices_selected(variable_choices(ADTTE, "EVNTDESC"), "EVNTDESC", fixed = TRUE),
      decorators = list(table = insert_rrow_decorator())
    )
  )
) |> shiny::runApp()

@vedhav vedhav added the core label Feb 20, 2025
Signed-off-by: Vedha Viyash <[email protected]>
@vedhav
Copy link
Contributor Author

vedhav commented Feb 21, 2025

Here is the status of decorators QC:

  • ✅ tm_a_gee - table (ElementaryTable)
  • ✅ tm_a_mmrm - lsmeans_plot (ggplot2), diagnostic_plot (TableTree), lsmeans_table (TableTree), covariance_table (TableTree), fixed_effects_table (TableTree), diagnostic_table (TableTree)
  • ✅ tm_g_barchart_simple - plot (ggplot2)
  • ✅ tm_g_ci - plot (ggplot2)
  • ❌ tm_g_forest_rsp - plot (ggplot2) [plot decorator does not seem to work]
  • ❌ tm_g_forest_tte - plot (ggplot2) [plot decorator does not seem to work]
  • ✅ tm_g_ipp - plot (ggplot2)
  • ✅ tm_g_km - plot (ggplot2)
  • ✅ tm_g_lineplot - plot (ggplot2)
  • ❌ tm_g_pp_adverse_events - plot (ggplot2), table (listing_df) [change to DT]
  • ✅ tm_g_pp_patient_timeline - plot (ggplot2)
  • ❌ tm_g_pp_therapy - plot (ggplot2), table (listing_df) [change to DT]
  • ✅ tm_g_pp_vitals - plot (ggplot2)
  • ✅ tm_t_abnormality - table (ElementaryTable)
  • ✅ tm_t_abnormality_by_worst_grade - table (ElementaryTable)
  • ✅ tm_t_ancova - table (ElementaryTable)
  • ✅ tm_t_binary_outcome - table (TableTree)
  • ✅ tm_t_coxreg - table (TableTree)
  • ✅ tm_t_events - table (TableTree)
  • ✅ tm_t_events_by_grade - table (TableTree)
  • ✅ tm_t_events_patyear - table (TableTree)
  • ✅ tm_t_events_summary - table (ableTree)
  • ✅ tm_t_exposure - table (TableTree)
  • ✅ tm_t_logistic - table (ElementaryTable)
  • ✅ tm_t_mult_events - table (TableTree)
  • ❌ tm_t_pp_basic_info - table (listing_df) [change to DT]
  • ❌ tm_t_pp_laboratory - table (listing_df) [change to DT]
  • ✅ tm_t_pp_medical_history - table (TableTree)
  • ❌ tm_t_pp_prior_medication - table (listing_df) [change to DT]
  • ✅ tm_t_shift_by_arm - table (TableTree)
  • ✅ tm_t_shift_by_arm_by_worst - table (TableTree)
  • ✅ tm_t_shift_by_grade - table (TableTree)
  • ✅ tm_t_smq - table (TableTree)
  • ✅ tm_t_summary - table (TableTree)
  • ✅ tm_t_summary_by - table (TableTree)
  • ✅ tm_t_tte - table (TableTree)

@vedhav vedhav marked this pull request as ready for review February 21, 2025 05:44
@vedhav
Copy link
Contributor Author

vedhav commented Feb 21, 2025

I wanted to verify the class of the output objects and here's the inspection of all the output object class:
Note this was fixed in commit 8917513

Module Output Class Doc Class Documented properly
tm_a_gee table ElementaryTable ElementaryTable
tm_a_mmrm lsmeans_table TableTree TableTree
tm_a_mmrm lsmeans_plot ggplot ggplot2
tm_a_mmrm covariance_table ElementaryTable TableTree
tm_a_mmrm fixed_effects_table ElementaryTable TableTree
tm_a_mmrm diagnostic_table ElementaryTable TableTree
tm_a_mmrm diagnostic_plot ggplot TableTree
tm_g_barchart_simple plot ggplot ggplot2
tm_g_ci plot ggplot ggplot2
tm_g_forest_rsp plot ggplot ggplot2
tm_g_forest_tte plot ggplot ggplot2
tm_g_ipp plot ggplot ggplot2
tm_g_km plot ggplot ggplot2
tm_g_lineplot plot ggplot ggplot2
tm_g_pp_adverse_events table listing_df listing_df
tm_g_pp_adverse_events plot ggplot ggplot2
tm_g_pp_patient_timeline plot ggplot ggplot2
tm_g_pp_therapy plot ggplot ggplot2
tm_g_pp_vitals plot ggplot ggplot2
tm_t_abnormality table TableTree ElementaryTable
tm_t_abnormality_by_worst_grade table TableTree ElementaryTable
tm_t_ancova table TableTree ElementaryTable
tm_t_binary_outcome table TableTree TableTree
tm_t_coxreg table TableTree TableTree
tm_t_events table TableTree TableTree
tm_t_events_by_grade table TableTree TableTree
tm_t_events_patyear table ElementaryTable TableTree
tm_t_events_summary table TableTree TableTree
tm_t_exposure table ElementaryTable TableTree
tm_t_logistic table TableTree ElementaryTable
tm_t_mult_events table TableTree TableTree
tm_t_pp_basic_info table listing_df listing_df
tm_t_pp_laboratory table listing_df listing_df
tm_t_pp_medical_history table TableTree TableTree
tm_t_pp_prior_medication table listing_df listing_df
tm_t_shift_by_arm table TableTree TableTree
tm_t_shift_by_arm_by_worst table TableTree TableTree
tm_t_shift_by_grade table TableTree TableTree
tm_t_smq table TableTree TableTree
tm_t_summary table TableTree TableTree
tm_t_summary_by table TableTree TableTree
tm_t_tte table TableTree TableTree

Copy link
Contributor

github-actions bot commented Feb 21, 2025

Unit Tests Summary

    1 files     70 suites   1h 12m 36s ⏱️
  726 tests   614 ✅ 112 💤 0 ❌
1 986 runs  1 759 ✅ 227 💤 0 ❌

Results for commit c525a64.

♻️ This comment has been updated with latest results.

Copy link
Contributor

github-actions bot commented Feb 21, 2025

Unit Test Performance Difference

Test suite performance difference
Test Suite $Status$ Time on main $±Time$ $±Tests$ $±Skipped$ $±Failures$ $±Errors$
examples 💚 $5.74$ $-4.04$ $-1$ $+112$ $0$ $0$
shinytest2-tm_a_gee 💔 $133.04$ $+2.00$ $0$ $0$ $0$ $0$
shinytest2-tm_g_barchart_simple 💚 $234.84$ $-1.60$ $0$ $0$ $0$ $0$
shinytest2-tm_g_ci 💚 $108.65$ $-3.30$ $0$ $0$ $0$ $0$
shinytest2-tm_g_forest_rsp 💚 $186.98$ $-4.92$ $0$ $0$ $0$ $0$
shinytest2-tm_g_forest_tte 💚 $67.32$ $-2.51$ $0$ $0$ $0$ $0$
shinytest2-tm_g_ipp 💚 $116.57$ $-4.57$ $0$ $0$ $0$ $0$
shinytest2-tm_g_km 💚 $287.26$ $-6.72$ $0$ $0$ $0$ $0$
shinytest2-tm_g_lineplot 💚 $92.83$ $-2.50$ $0$ $0$ $0$ $0$
shinytest2-tm_g_pp_patient_timeline 💔 $249.71$ $+5.18$ $0$ $0$ $0$ $0$
shinytest2-tm_g_pp_therapy 💔 $200.37$ $+6.71$ $0$ $0$ $0$ $0$
shinytest2-tm_g_pp_vitals 💔 $89.43$ $+2.59$ $0$ $0$ $0$ $0$
shinytest2-tm_t_ancova 💔 $99.02$ $+2.67$ $0$ $0$ $0$ $0$
shinytest2-tm_t_events_by_grade 💔 $93.08$ $+1.58$ $0$ $0$ $0$ $0$
shinytest2-tm_t_events_patyear 💔 $52.84$ $+1.04$ $0$ $0$ $0$ $0$
shinytest2-tm_t_events_summary 💔 $69.33$ $+2.16$ $0$ $0$ $0$ $0$
shinytest2-tm_t_exposure 💔 $81.39$ $+1.96$ $0$ $0$ $0$ $0$
shinytest2-tm_t_logistic 💔 $61.69$ $+1.58$ $0$ $0$ $0$ $0$
shinytest2-tm_t_mult_events 💔 $59.85$ $+1.78$ $0$ $0$ $0$ $0$
shinytest2-tm_t_shift_by_arm 💚 $61.97$ $-1.28$ $0$ $0$ $0$ $0$
shinytest2-tm_t_shift_by_grade 💚 $82.96$ $-1.16$ $0$ $0$ $0$ $0$
shinytest2-tm_t_summary 💚 $42.63$ $-1.29$ $0$ $0$ $0$ $0$
shinytest2-tm_t_tte 💔 $69.47$ $+1.07$ $0$ $0$ $0$ $0$
Additional test case details
Test Suite $Status$ Time on main $±Time$ Test Case
examples 💀 $0.01$ $-0.01$ example_normalize_decorators.Rd

Results for commit ded09df

♻️ This comment has been updated with latest results.

@m7pr
Copy link
Contributor

m7pr commented Feb 21, 2025

Hey, reviewed the big app and confirm the status the Vedha reported.

However, there is one more that does not work

  • tm_g_pp_patient_timeline
image

Copy link
Contributor

@m7pr m7pr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left 1 suggestion, and 1 question and found 1 more module that doesn't work.
@vedhav this is excellent job.
Would you be able to create separate issues to fix each of the modules?

@vedhav vedhav enabled auto-merge (squash) February 21, 2025 09:37
@vedhav vedhav merged commit 1a1bb10 into main Feb 21, 2025
28 checks passed
@vedhav vedhav deleted the decorator-vignettes@main branch February 21, 2025 10:49
@github-actions github-actions bot locked and limited conversation to collaborators Feb 21, 2025
@vedhav
Copy link
Contributor Author

vedhav commented Feb 21, 2025

Raised a PR #1350 to fix the modules that need to decorate DT objects

@vedhav
Copy link
Contributor Author

vedhav commented Feb 21, 2025

Raised a PR #1351 to fix the forest plot modules. Those were the last failing modules. After this all module decorators will work as expected.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants