TL Catalog
  1. Listings
  2. Exposure
  3. LSIEX02
  • 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. Listings
  2. Exposure
  3. LSIEX02

LSIEX02

Listing of Study Treatment Batch Lot Number


Output

  • Preview
Code
# Program Name:              lsiex02.R

# Prep environment

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

# Define script level parameters

tblid <- "LSIEX02"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
key_cols <- c("COL0", "COL1")
disp_cols <- paste0("COL", 0:6)
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map

# Process data

adex <- pharmaverseadamjnj::adex %>%
  filter(!!rlang::sym(popfl) == "Y" & ADOSE > 0)

lsting <- adex %>%
  mutate(
    DAEXPDT = as.Date(DAEXPDTC, format = "%Y-%m-%d"),
    DAEXPYR = ifelse(
      stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 4 &
        substr(sub("T.*", "", DAEXPDTC), 1, 4) != "----",
      substr(sub("T.*", "", DAEXPDTC), 1, 4),
      NA
    ),
    DAEXPMO = toupper(month.abb[
      as.numeric(ifelse(
        stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 7 &
          substr(sub("T.*", "", DAEXPDTC), 6, 7) != "--",
        substr(sub("T.*", "", DAEXPDTC), 6, 7),
        NA
      ))
    ]),
    DAEXPDAY = ifelse(
      stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 10 &
        substr(sub("T.*", "", DAEXPDTC), 9, 10) != "--",
      substr(sub("T.*", "", DAEXPDTC), 9, 10),
      NA
    ),
  ) %>%
  unite(
    "DAEXPDTL",
    DAEXPDAY,
    DAEXPMO,
    DAEXPYR,
    sep = "",
    na.rm = TRUE,
    remove = FALSE
  ) %>%
  mutate(
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    # Optional Column: COL2/AVISIT
    COL2 = explicit_na(AVISIT, ""),
    # Optional Column: COL3/ASTDT
    COL3 = ifelse(!is.na(ASTDT), paste0(toupper(format(ASTDT, "%d%b%Y"))), ""),
    # Optional Column: COL4/ASTDTM
    COL4 = ifelse(!is.na(ASTDTM), substr(ASTDTM, 12, 16), ""),
    COL5 = explicit_na(EXLOT, ""),
    COL6 = explicit_na(DAEXPDTL, "")
  ) %>%
  arrange(
    COL0,
    COL1,
    !is.na(ASTDT),
    ASTDT,
    !is.na(ASTDTM),
    ASTDTM,
    AVISITN,
    COL2
  )

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  # Optional Column: COL2/AVISIT
  COL2 = "Visit",
  # Optional Column: COL3/ASTDT
  # Select appropriate column header label
  # COL3 = "Date Dispensed",
  COL3 = "Date Administered",
  # Optional Column: COL4/ASTDTM
  # Select appropriate column header label
  # COL4 = "Time Dispensed",
  COL4 = "Time Administered",
  COL5 = "Batch Lot Number",
  COL6 = "Batch Lot Expiration Date"
)

# Build listing

result <- rlistings::as_listing(
  df = lsting,
  key_cols = key_cols,
  disp_cols = disp_cols
)

# Add titles and footnotes

result <- set_titles(result, tab_titles)

# Output listing

tt_to_tlgrtf(string_map = string_map, tt = head(result, 100), file = fileid, orientation = "landscape")

LSIEX02: Listing of Study Treatment Batch Lot Number; Safety Analysis Set (Study jjcs - core)

Treatment Group

Subject ID

Visit

Date Administered

Time Administered

Batch Lot Number

Batch Lot Expiration Date

Xanomeline High Dose

01-701-1028

BASELINE

19JUL2013

03:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

02AUG2013

10:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 24

07JAN2014

11:00

XXX-YYY-ZZZ-002

15DEC2013

01-701-1034

BASELINE

01JUL2014

17:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

16JUL2014

10:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 24

18DEC2014

07:00

XXX-YYY-ZZZ-002

15DEC2013

01-701-1133

BASELINE

28OCT2012

08:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

13NOV2012

08:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 24

19APR2013

00:00

XXX-YYY-ZZZ-003

05FEB2014

01-701-1146

BASELINE

20MAY2013

17:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

04JUN2013

05:00

XXX-YYY-ZZZ-004

10SEP2013

01-701-1148

BASELINE

23AUG2013

01:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

06SEP2013

12:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 24

09FEB2014

10:00

XXX-YYY-ZZZ-005

20MAR2014

01-701-1180

BASELINE

12FEB2013

02:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

26FEB2013

04:00

XXX-YYY-ZZZ-004

10SEP2013

01-701-1239

BASELINE

11JAN2014

05:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

26JAN2014

05:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 24

28JUN2014

15:00

XXX-YYY-ZZZ-005

20MAR2014

01-701-1275

BASELINE

07FEB2014

00:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

23FEB2014

02:00

XXX-YYY-ZZZ-004

10SEP2013

01-701-1287

BASELINE

25JAN2014

22:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

12FEB2014

22:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 24

13JUL2014

18:00

XXX-YYY-ZZZ-004

10SEP2013

01-701-1302

BASELINE

29AUG2013

03:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

16SEP2013

20:00

XXX-YYY-ZZZ-004

10SEP2013

01-701-1383

BASELINE

04FEB2013

16:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

20FEB2013

01:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 24

31JUL2013

07:00

XXX-YYY-ZZZ-002

15DEC2013

01-701-1444

BASELINE

05JAN2013

09:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

19JAN2013

16:00

XXX-YYY-ZZZ-003

05FEB2014

01-703-1076

BASELINE

25OCT2013

16:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

07NOV2013

05:00

XXX-YYY-ZZZ-002

15DEC2013

01-703-1258

BASELINE

20JUL2012

05:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

02AUG2012

18:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 24

01JAN2013

17:00

XXX-YYY-ZZZ-003

05FEB2014

01-703-1295

BASELINE

21NOV2013

13:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

06DEC2013

05:00

XXX-YYY-ZZZ-003

05FEB2014

01-703-1335

BASELINE

17MAR2014

10:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

01APR2014

16:00

XXX-YYY-ZZZ-002

15DEC2013

01-703-1439

BASELINE

12MAR2014

11:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

27MAR2014

12:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 24

29AUG2014

17:00

XXX-YYY-ZZZ-003

05FEB2014

01-704-1008

BASELINE

13JAN2013

16:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

29JAN2013

00:00

XXX-YYY-ZZZ-005

20MAR2014

01-704-1017

BASELINE

06OCT2013

00:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 2

20OCT2013

17:00

XXX-YYY-ZZZ-003

05FEB2014

01-704-1065

BASELINE

24OCT2013

21:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

08NOV2013

01:00

XXX-YYY-ZZZ-002

15DEC2013

01-704-1074

BASELINE

22JAN2014

20:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

10FEB2014

09:00

XXX-YYY-ZZZ-005

20MAR2014

01-704-1093

BASELINE

15MAR2013

10:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

31MAR2013

07:00

XXX-YYY-ZZZ-003

05FEB2014

01-704-1241

BASELINE

25AUG2013

19:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

06SEP2013

08:00

XXX-YYY-ZZZ-003

05FEB2014

01-704-1266

BASELINE

13OCT2013

20:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

28OCT2013

11:00

XXX-YYY-ZZZ-002

15DEC2013

01-704-1332

BASELINE

09DEC2013

11:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

24DEC2013

06:00

XXX-YYY-ZZZ-002

15DEC2013

01-705-1280

BASELINE

17JAN2014

01:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

01FEB2014

22:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 24

12JUL2014

01:00

XXX-YYY-ZZZ-002

15DEC2013

01-705-1281

BASELINE

28NOV2013

00:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

16DEC2013

07:00

XXX-YYY-ZZZ-005

20MAR2014

01-705-1303

BASELINE

16DEC2013

12:00

XXX-YYY-ZZZ-005

20MAR2014

01-705-1310

BASELINE

02NOV2013

13:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

23NOV2013

23:00

XXX-YYY-ZZZ-002

15DEC2013

01-705-1377

BASELINE

04JAN2014

08:00

XXX-YYY-ZZZ-004

10SEP2013

01-706-1049

BASELINE

14MAY2013

01:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

29MAY2013

01:00

XXX-YYY-ZZZ-005

20MAR2014

01-708-1178

BASELINE

29DEC2013

16:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

19JAN2014

23:00

XXX-YYY-ZZZ-004

10SEP2013

01-708-1216

BASELINE

24OCT2012

08:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

09NOV2012

05:00

XXX-YYY-ZZZ-002

15DEC2013

01-708-1336

BASELINE

07DEC2012

03:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

22DEC2012

09:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 24

23MAY2013

18:00

XXX-YYY-ZZZ-003

05FEB2014

01-708-1347

BASELINE

20APR2013

07:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

05MAY2013

19:00

XXX-YYY-ZZZ-004

10SEP2013

01-708-1406

BASELINE

26DEC2013

15:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

10JAN2014

12:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 24

17JUN2014

11:00

XXX-YYY-ZZZ-003

05FEB2014

01-709-1029

BASELINE

25DEC2012

05:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

10JAN2013

04:00

XXX-YYY-ZZZ-002

15DEC2013

WEEK 24

13JUN2013

01:00

XXX-YYY-ZZZ-003

05FEB2014

01-709-1099

BASELINE

25OCT2013

03:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

13NOV2013

03:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 24

12APR2014

09:00

XXX-YYY-ZZZ-002

15DEC2013

01-709-1168

BASELINE

02AUG2013

13:00

XXX-YYY-ZZZ-003

05FEB2014

WEEK 2

18AUG2013

03:00

XXX-YYY-ZZZ-004

10SEP2013

01-709-1238

BASELINE

15MAY2013

05:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

30MAY2013

16:00

XXX-YYY-ZZZ-004

10SEP2013

01-709-1309

BASELINE

19JUN2013

13:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

02JUL2013

19:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 24

06DEC2013

16:00

XXX-YYY-ZZZ-004

10SEP2013

01-710-1006

BASELINE

10FEB2013

07:00

XXX-YYY-ZZZ-005

20MAR2014

WEEK 2

23FEB2013

02:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 24

28JUL2013

05:00

XXX-YYY-ZZZ-004

10SEP2013

01-710-1021

BASELINE

27SEP2013

21:00

XXX-YYY-ZZZ-004

10SEP2013

WEEK 2

12OCT2013

15:00

XXX-YYY-ZZZ-005

20MAR2014

[lsiex02.docx][/usr/lib/rstudio-server/bin/quarto/share/rmd/rmd.R] 12JAN2026, 16:07

Download RTF file

LSIEX01
LSIEX03
Source Code
---
title: LSIEX02
subtitle: Listing of Study Treatment Batch Lot Number
---

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

{{< 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:              lsiex02.R

# Prep environment

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

# Define script level parameters

tblid <- "LSIEX02"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
key_cols <- c("COL0", "COL1")
disp_cols <- paste0("COL", 0:6)
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map

# Process data

adex <- pharmaverseadamjnj::adex %>%
  filter(!!rlang::sym(popfl) == "Y" & ADOSE > 0)

lsting <- adex %>%
  mutate(
    DAEXPDT = as.Date(DAEXPDTC, format = "%Y-%m-%d"),
    DAEXPYR = ifelse(
      stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 4 &
        substr(sub("T.*", "", DAEXPDTC), 1, 4) != "----",
      substr(sub("T.*", "", DAEXPDTC), 1, 4),
      NA
    ),
    DAEXPMO = toupper(month.abb[
      as.numeric(ifelse(
        stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 7 &
          substr(sub("T.*", "", DAEXPDTC), 6, 7) != "--",
        substr(sub("T.*", "", DAEXPDTC), 6, 7),
        NA
      ))
    ]),
    DAEXPDAY = ifelse(
      stringr::str_length(sub("T.*", "", DAEXPDTC)) >= 10 &
        substr(sub("T.*", "", DAEXPDTC), 9, 10) != "--",
      substr(sub("T.*", "", DAEXPDTC), 9, 10),
      NA
    ),
  ) %>%
  unite(
    "DAEXPDTL",
    DAEXPDAY,
    DAEXPMO,
    DAEXPYR,
    sep = "",
    na.rm = TRUE,
    remove = FALSE
  ) %>%
  mutate(
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    # Optional Column: COL2/AVISIT
    COL2 = explicit_na(AVISIT, ""),
    # Optional Column: COL3/ASTDT
    COL3 = ifelse(!is.na(ASTDT), paste0(toupper(format(ASTDT, "%d%b%Y"))), ""),
    # Optional Column: COL4/ASTDTM
    COL4 = ifelse(!is.na(ASTDTM), substr(ASTDTM, 12, 16), ""),
    COL5 = explicit_na(EXLOT, ""),
    COL6 = explicit_na(DAEXPDTL, "")
  ) %>%
  arrange(
    COL0,
    COL1,
    !is.na(ASTDT),
    ASTDT,
    !is.na(ASTDTM),
    ASTDTM,
    AVISITN,
    COL2
  )

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  # Optional Column: COL2/AVISIT
  COL2 = "Visit",
  # Optional Column: COL3/ASTDT
  # Select appropriate column header label
  # COL3 = "Date Dispensed",
  COL3 = "Date Administered",
  # Optional Column: COL4/ASTDTM
  # Select appropriate column header label
  # COL4 = "Time Dispensed",
  COL4 = "Time Administered",
  COL5 = "Batch Lot Number",
  COL6 = "Batch Lot Expiration Date"
)

# Build listing

result <- rlistings::as_listing(
  df = lsting,
  key_cols = key_cols,
  disp_cols = disp_cols
)

# Add titles and footnotes

result <- set_titles(result, tab_titles)

# Output listing

tt_to_tlgrtf(string_map = string_map, tt = head(result, 100), file = fileid, orientation = "landscape")
```
```{r result1, echo=FALSE, message=FALSE, warning=FALSE, test = list(result_v1 = "result")}
tt_to_flextable_j(head(result,100), 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