Getting started with teal.goshawk

Introduction

teal.goshawk is a package implementing a number of teal modules helpful for exploring clinical trials data, specifically targeted at data following the ADaM standards. teal.goshawk modules can be used with data other than ADaM standard clinical data but some features of the package will likely not be applicable.

The concepts presented here require knowledge about the core features of teal, specifically on how to launch a teal application and how to pass data into it. Therefore, it is highly recommended to refer to the README file and the introductory vignette of the teal package.

Main features

The package provides ready-to-use teal modules you can embed in your teal application. The modules generate highly customizable plots and outputs often used in exploratory data analysis, e.g.:

See package functions / modules.

A simple application

A teal.goshawk module needs to be embedded inside a shiny / teal application to interact with it.

There is no need to load teal as teal.goshawk already depends on it. nestcolor is an optional package that can be loaded in to apply the standardized NEST color palette to all module plots.

A simple application including the box plot module could look like this:

library(teal.goshawk)
library(nestcolor)

data <- teal_data()
data <- within(data, {
  ADSL <- goshawk::rADSL %>% 
    mutate(TRTORD = case_when(
      TRT01P == "A: Drug X" ~ 1,
      TRT01P == "C: Combination" ~ 2,
      TRT01P == "B: Placebo" ~ 3,
      TRUE ~ as.numeric(NA)
    )
    )
  
  ADLB <- goshawk::rADLB %>% 
    mutate(AVISITCD = AVISIT,
           TRTORD = case_when(
             TRT01P == "A: Drug X" ~ 1,
             TRT01P == "C: Combination" ~ 2,
             TRT01P == "B: Placebo" ~ 3,
             TRUE ~ as.numeric(NA)
           )
    )
})

datanames <- c("ADSL", "ADLB")
datanames(data)<- datanames
join_keys(data) <- default_cdisc_join_keys[datanames]

app <- teal::init(
  data = data,
  modules = list(
    tm_g_gh_boxplot(
      label = "Longitudinal Analysis",
      dataname = "ADLB",
      param_var = "PARAMCD",
      param = teal.transform::choices_selected(
        choices = c("ALT", "CRP", "IGA"),
        selected = c("ALT")
      ),
      trt_group = teal.transform::choices_selected(
        choices = c("TRT01P", "TRT01A"),
        selected = c("TRT01P")
      ),
      facet_var = teal.transform::choices_selected(
        choices = c("TRT01P", "TRT01A"),
        selected = c("TRT01P")
      ),
      rotate_xlab = TRUE
    )
  )
)

if (interactive()) shiny::shinyApp(app$ui, app$server)

Refer to the Get Started section of the teal.modules.clinical package that provides additional detail on teal concepts as applied in another simple app example.

Please see additional information under Articles for data expectations, requirements and pre/post-processing rationale