TL Catalog
  1. Listings
  2. Vital Signs and Physical Findings
  3. LSFVIT02
  • 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. Vital Signs and Physical Findings
  3. LSFVIT02

LSFVIT02

Listing of Vital Signs


Output

  • Preview
Code
# Program Name:              lsfvit02.R

# Prep environment

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

# Define script level parameters

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

# Process data

advs <- pharmaverseadamjnj::advs %>%
  filter(!!rlang::sym(popfl) == "Y" & PARAMCD != "VSALL")

advs_dig <- tidytlg:::make_precision_data(
  df = advs,
  decimal = 4,
  precisionby = "PARAMCD",
  precisionon = "AVAL"
) %>%
  rename(c(VALDIGMAX = "decimal"))

advs_list <- advs %>%
  inner_join(advs_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- advs_list %>%
  mutate(
    AGE = explicit_na(as.character(AGE), ""),
    SEX = explicit_na(SEX, ""),
    RACE_DECODE = explicit_na(RACE_DECODE, ""),
    ADT = ifelse(
      nchar(as.character(ADT)) == 10,
      toupper(format(ADT, "%d%b%Y")),
      ""
    ),
    ATM = ifelse(!is.na(ADTM), substr(as.character(ADTM), 12, 16), ""),
    ADYN = ifelse(!is.na(ADY), ADY, NA),
    ADY = ifelse(!is.na(ADY), ADY, "--"),
    VAL_RES = case_when(
      is.na(VALDIGMAX) & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 4, as_char = TRUE, na_char = NULL),
      !is.na(AVALC) ~ AVALC
    ),
    VAL_HL = case_when(
      !is.na(ANRIND) ~ substr(ANRIND, 1, 1),
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) ~ paste(VAL_RES, VAL_HL, sep = " "),
      !is.na(VAL_RES) & is.na(VAL_HL) ~ VAL_RES,
      .default = NA
    ),
    CRIT1L = ifelse(CRIT1FL == "Y", as.character(CRIT1), NA),
    CRIT2L = ifelse(CRIT2FL == "Y", as.character(CRIT2), NA),
    CRIT3L = ifelse(CRIT3FL == "Y", as.character(CRIT3), NA)
  ) %>%
  unite(
    "CRITL",
    CRIT1L,
    CRIT2L,
    CRIT3L,
    sep = ", ",
    na.rm = TRUE,
    remove = FALSE
  ) %>%
  mutate(
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    COL2 = paste(AGE, SEX, RACE_DECODE, sep = concat_sep),
    COL3 = explicit_na(PARAM, ""),
    # Optional Variable: ATM
    COL4 = case_when(
      ADT == "" ~ "",
      ADT != "" & ATM != "" & ADY != "" ~
        paste0(ADT, concat_sep, ATM, " (", ADY, ")"),
      ADT != "" & ATM == "" & ADY != "" ~
        paste0(ADT, concat_sep, "--:--", " (", ADY, ")"),
      ADT != "" & ATM != "" & ADY == "" ~
        paste0(ADT, concat_sep, ATM, " (-)"),
      ADT != "" & ATM == "" & ADY == "" ~
        paste0(ADT, concat_sep, "--:--", " (-)"),
    ),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = VAL,
    COL8 = case_when(
      is.na(CHG) ~ "",
      is.na(VALDIGMAX) & !is.na(AVAL) & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 4, as_char = TRUE, na_char = NULL)
    ),
    # Optional Column: COL9/CRITy/ATOXGR
    COL9 = explicit_na(CRITL, ""),
    # COL9 = explicit_na(ATOXGR, ""),
  ) %>%
  arrange(COL0, COL1, COL2, COL3, !is.na(ADYN), ADYN, ADTM)

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  COL2 = paste("Age (years)", "Sex", "Race", sep = concat_sep),
  COL3 = "Vital Sign (unit)",
  # Optional Variable: ATM
  COL4 = paste(
    "Assessment Date",
    "Time (Study Day~[super a])",
    sep = concat_sep
  ),
  COL5 = "Visit",
  # Optional Column: COL6/ATPT
  COL6 = "Time Point",
  COL7 = "Result",
  COL8 = "Change From Baseline",
  # Optional Column: COL9/CRITy/ATOXGR
  COL9 = "Criteria"
  # COL9 = "Grade"
)

# 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"
)

LSFVIT02: Listing of Vital Signs; Safety Analysis Set (Study jjcs - core)

Treatment Group

Subject ID

Age (years) / Sex / Race

Vital Sign (unit)

Assessment Date / Time (Study Daya)

Visit

Time Point

Result

Change From Baseline

Criteria

Xanomeline High Dose

01-701-1028

71 / M / Asian

DBP (STD-SUP) <-10

19JUL2013 / 06:00 (1)

Screening

BEFORE TREATMENT

N N

01AUG2013 / 06:00 (14)

Cycle 02

BEFORE TREATMENT

N N

01AUG2014 / 06:00 (14)

Cycle 10

BEFORE TREATMENT

N N

14AUG2013 / 06:00 (27)

Cycle 03

BEFORE TREATMENT

N N

14AUG2014 / 06:00 (27)

Cycle 11

BEFORE TREATMENT

N N

29AUG2013 / 06:00 (42)

Cycle 04

BEFORE TREATMENT

N N

29AUG2014 / 06:00 (42)

Cycle 12

BEFORE TREATMENT

N N

10SEP2013 / 06:00 (54)

Cycle 05

BEFORE TREATMENT

N H

10SEP2014 / 06:00 (54)

Cycle 13

BEFORE TREATMENT

N H

09OCT2013 / 06:00 (83)

Cycle 06

BEFORE TREATMENT

N N

09OCT2014 / 06:00 (83)

Cycle 15

BEFORE TREATMENT

N N

06NOV2013 / 06:00 (111)

Cycle 07

BEFORE TREATMENT

N N

06NOV2014 / 06:00 (111)

Cycle 17

BEFORE TREATMENT

N N

04DEC2013 / 06:00 (139)

Cycle 08

BEFORE TREATMENT

Y N

04DEC2014 / 06:00 (139)

Cycle 19

BEFORE TREATMENT

Y N

04DEC2015 / 06:00 (139)

Cycle 22

BEFORE TREATMENT

Y N

06JAN2014 / 06:00 (172)

Cycle 09

BEFORE TREATMENT

N N

06JAN2015 / 06:00 (172)

Cycle 21

BEFORE TREATMENT

N N

06JAN2016 / 06:00 (172)

Cycle 25

BEFORE TREATMENT

N N

14JAN2014 / 06:00 (180)

End Of Treatment

BEFORE TREATMENT

N N

14JAN2015 / 06:00 (180)

Cycle 23

BEFORE TREATMENT

N N

14JAN2016 / 06:00 (180)

Cycle 29

BEFORE TREATMENT

N N

Diastolic Blood Pressure (mmHg)

19JUL2013 / 06:00 (1)

Screening

BEFORE TREATMENT

78.6667 N

01AUG2013 / 06:00 (14)

Cycle 02

BEFORE TREATMENT

79.3333 N

0.6667

01AUG2014 / 06:00 (14)

Cycle 10

BEFORE TREATMENT

79.3333 N

0.6667

14AUG2013 / 06:00 (27)

Cycle 03

BEFORE TREATMENT

69.6667 N

-9.0000

14AUG2014 / 06:00 (27)

Cycle 11

BEFORE TREATMENT

69.6667 N

-9.0000

29AUG2013 / 06:00 (42)

Cycle 04

BEFORE TREATMENT

74.0000 N

-4.6667

29AUG2014 / 06:00 (42)

Cycle 12

BEFORE TREATMENT

74.0000 N

-4.6667

10SEP2013 / 06:00 (54)

Cycle 05

BEFORE TREATMENT

80.3333 H

1.6667

10SEP2014 / 06:00 (54)

Cycle 13

BEFORE TREATMENT

80.3333 H

1.6667

09OCT2013 / 06:00 (83)

Cycle 06

BEFORE TREATMENT

79.0000 N

0.3333

09OCT2014 / 06:00 (83)

Cycle 15

BEFORE TREATMENT

79.0000 N

0.3333

06NOV2013 / 06:00 (111)

Cycle 07

BEFORE TREATMENT

76.3333 N

-2.3333

06NOV2014 / 06:00 (111)

Cycle 17

BEFORE TREATMENT

76.3333 N

-2.3333

04DEC2013 / 06:00 (139)

Cycle 08

BEFORE TREATMENT

77.3333 N

-1.3333

04DEC2014 / 06:00 (139)

Cycle 19

BEFORE TREATMENT

77.3333 N

-1.3333

04DEC2015 / 06:00 (139)

Cycle 22

BEFORE TREATMENT

77.3333 N

-1.3333

06JAN2014 / 06:00 (172)

Cycle 09

BEFORE TREATMENT

74.0000 N

-4.6667

06JAN2015 / 06:00 (172)

Cycle 21

BEFORE TREATMENT

74.0000 N

-4.6667

06JAN2016 / 06:00 (172)

Cycle 25

BEFORE TREATMENT

74.0000 N

-4.6667

14JAN2014 / 06:00 (180)

End Of Treatment

BEFORE TREATMENT

75.3333 N

-3.3333

14JAN2015 / 06:00 (180)

Cycle 23

BEFORE TREATMENT

75.3333 N

-3.3333

14JAN2016 / 06:00 (180)

Cycle 29

BEFORE TREATMENT

75.3333 N

-3.3333

Diastolic Blood Pressure Orthostatic (mmHg)

19JUL2013 / 06:00 (1)

Screening

BEFORE TREATMENT

1 N

01AUG2013 / 06:00 (14)

Cycle 02

BEFORE TREATMENT

-10 N

-11

01AUG2014 / 06:00 (14)

Cycle 10

BEFORE TREATMENT

-10 N

-11

14AUG2013 / 06:00 (27)

Cycle 03

BEFORE TREATMENT

16 N

15

14AUG2014 / 06:00 (27)

Cycle 11

BEFORE TREATMENT

16 N

15

29AUG2013 / 06:00 (42)

Cycle 04

BEFORE TREATMENT

18 N

17

29AUG2014 / 06:00 (42)

Cycle 12

BEFORE TREATMENT

18 N

17

10SEP2013 / 06:00 (54)

Cycle 05

BEFORE TREATMENT

19 H

18

10SEP2014 / 06:00 (54)

Cycle 13

BEFORE TREATMENT

19 H

18

09OCT2013 / 06:00 (83)

Cycle 06

BEFORE TREATMENT

0 N

-1

09OCT2014 / 06:00 (83)

Cycle 15

BEFORE TREATMENT

0 N

-1

06NOV2013 / 06:00 (111)

Cycle 07

BEFORE TREATMENT

21 N

20

06NOV2014 / 06:00 (111)

Cycle 17

BEFORE TREATMENT

21 N

20

04DEC2013 / 06:00 (139)

Cycle 08

BEFORE TREATMENT

-14 N

-15

Orthostatic DBP <-10

04DEC2014 / 06:00 (139)

Cycle 19

BEFORE TREATMENT

-14 N

-15

Orthostatic DBP <-10

04DEC2015 / 06:00 (139)

Cycle 22

BEFORE TREATMENT

-14 N

-15

Orthostatic DBP <-10

06JAN2014 / 06:00 (172)

Cycle 09

BEFORE TREATMENT

25 N

24

06JAN2015 / 06:00 (172)

Cycle 21

BEFORE TREATMENT

25 N

24

06JAN2016 / 06:00 (172)

Cycle 25

BEFORE TREATMENT

25 N

24

14JAN2014 / 06:00 (180)

End Of Treatment

BEFORE TREATMENT

9 N

8

14JAN2015 / 06:00 (180)

Cycle 23

BEFORE TREATMENT

9 N

8

14JAN2016 / 06:00 (180)

Cycle 29

BEFORE TREATMENT

9 N

8

Orthostatic Hypotension

19JUL2013 / 06:00 (1)

Screening

BEFORE TREATMENT

Y H

01AUG2013 / 06:00 (14)

Cycle 02

BEFORE TREATMENT

N H

01AUG2014 / 06:00 (14)

Cycle 10

BEFORE TREATMENT

N H

14AUG2013 / 06:00 (27)

Cycle 03

BEFORE TREATMENT

N H

14AUG2014 / 06:00 (27)

Cycle 11

BEFORE TREATMENT

N H

29AUG2013 / 06:00 (42)

Cycle 04

BEFORE TREATMENT

N H

29AUG2014 / 06:00 (42)

Cycle 12

BEFORE TREATMENT

N H

10SEP2013 / 06:00 (54)

Cycle 05

BEFORE TREATMENT

N H

10SEP2014 / 06:00 (54)

Cycle 13

BEFORE TREATMENT

N H

09OCT2013 / 06:00 (83)

Cycle 06

BEFORE TREATMENT

N H

09OCT2014 / 06:00 (83)

Cycle 15

BEFORE TREATMENT

N H

06NOV2013 / 06:00 (111)

Cycle 07

BEFORE TREATMENT

N N

06NOV2014 / 06:00 (111)

Cycle 17

BEFORE TREATMENT

N N

04DEC2013 / 06:00 (139)

Cycle 08

BEFORE TREATMENT

Y N

04DEC2014 / 06:00 (139)

Cycle 19

BEFORE TREATMENT

Y N

04DEC2015 / 06:00 (139)

Cycle 22

BEFORE TREATMENT

Y N

06JAN2014 / 06:00 (172)

Cycle 09

BEFORE TREATMENT

N H

06JAN2015 / 06:00 (172)

Cycle 21

BEFORE TREATMENT

N H

06JAN2016 / 06:00 (172)

Cycle 25

BEFORE TREATMENT

N H

14JAN2014 / 06:00 (180)

End Of Treatment

BEFORE TREATMENT

N N

14JAN2015 / 06:00 (180)

Cycle 23

BEFORE TREATMENT

N N

14JAN2016 / 06:00 (180)

Cycle 29

BEFORE TREATMENT

N N

Pulse Rate (beats/min)

19JUL2013 / 06:00 (1)

Screening

BEFORE TREATMENT

63.3333 N

01AUG2013 / 06:00 (14)

Cycle 02

BEFORE TREATMENT

71.3333 N

8.0000

01AUG2014 / 06:00 (14)

Cycle 10

BEFORE TREATMENT

71.3333 N

8.0000

14AUG2013 / 06:00 (27)

Cycle 03

BEFORE TREATMENT

75.0000 N

11.6667

14AUG2014 / 06:00 (27)

Cycle 11

BEFORE TREATMENT

75.0000 N

11.6667

29AUG2013 / 06:00 (42)

Cycle 04

BEFORE TREATMENT

59.3333 L

-4.0000

29AUG2014 / 06:00 (42)

Cycle 12

BEFORE TREATMENT

59.3333 L

-4.0000

10SEP2013 / 06:00 (54)

Cycle 05

BEFORE TREATMENT

74.6667 N

11.3333

10SEP2014 / 06:00 (54)

Cycle 13

BEFORE TREATMENT

74.6667 N

11.3333

09OCT2013 / 06:00 (83)

Cycle 06

BEFORE TREATMENT

65.0000 N

1.6667

09OCT2014 / 06:00 (83)

Cycle 15

BEFORE TREATMENT

65.0000 N

1.6667

06NOV2013 / 06:00 (111)

Cycle 07

BEFORE TREATMENT

66.3333 N

3.0000

a Study day is relative to [the start of [study treatment]].

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

Download RTF file

LSFVIT01
Source Code
---
title: LSFVIT02
subtitle: Listing of Vital Signs
---

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

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

# Prep environment

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

# Define script level parameters

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

# Process data

advs <- pharmaverseadamjnj::advs %>%
  filter(!!rlang::sym(popfl) == "Y" & PARAMCD != "VSALL")

advs_dig <- tidytlg:::make_precision_data(
  df = advs,
  decimal = 4,
  precisionby = "PARAMCD",
  precisionon = "AVAL"
) %>%
  rename(c(VALDIGMAX = "decimal"))

advs_list <- advs %>%
  inner_join(advs_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- advs_list %>%
  mutate(
    AGE = explicit_na(as.character(AGE), ""),
    SEX = explicit_na(SEX, ""),
    RACE_DECODE = explicit_na(RACE_DECODE, ""),
    ADT = ifelse(
      nchar(as.character(ADT)) == 10,
      toupper(format(ADT, "%d%b%Y")),
      ""
    ),
    ATM = ifelse(!is.na(ADTM), substr(as.character(ADTM), 12, 16), ""),
    ADYN = ifelse(!is.na(ADY), ADY, NA),
    ADY = ifelse(!is.na(ADY), ADY, "--"),
    VAL_RES = case_when(
      is.na(VALDIGMAX) & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 4, as_char = TRUE, na_char = NULL),
      !is.na(AVALC) ~ AVALC
    ),
    VAL_HL = case_when(
      !is.na(ANRIND) ~ substr(ANRIND, 1, 1),
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) ~ paste(VAL_RES, VAL_HL, sep = " "),
      !is.na(VAL_RES) & is.na(VAL_HL) ~ VAL_RES,
      .default = NA
    ),
    CRIT1L = ifelse(CRIT1FL == "Y", as.character(CRIT1), NA),
    CRIT2L = ifelse(CRIT2FL == "Y", as.character(CRIT2), NA),
    CRIT3L = ifelse(CRIT3FL == "Y", as.character(CRIT3), NA)
  ) %>%
  unite(
    "CRITL",
    CRIT1L,
    CRIT2L,
    CRIT3L,
    sep = ", ",
    na.rm = TRUE,
    remove = FALSE
  ) %>%
  mutate(
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    COL2 = paste(AGE, SEX, RACE_DECODE, sep = concat_sep),
    COL3 = explicit_na(PARAM, ""),
    # Optional Variable: ATM
    COL4 = case_when(
      ADT == "" ~ "",
      ADT != "" & ATM != "" & ADY != "" ~
        paste0(ADT, concat_sep, ATM, " (", ADY, ")"),
      ADT != "" & ATM == "" & ADY != "" ~
        paste0(ADT, concat_sep, "--:--", " (", ADY, ")"),
      ADT != "" & ATM != "" & ADY == "" ~
        paste0(ADT, concat_sep, ATM, " (-)"),
      ADT != "" & ATM == "" & ADY == "" ~
        paste0(ADT, concat_sep, "--:--", " (-)"),
    ),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = VAL,
    COL8 = case_when(
      is.na(CHG) ~ "",
      is.na(VALDIGMAX) & !is.na(AVAL) & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 4, as_char = TRUE, na_char = NULL)
    ),
    # Optional Column: COL9/CRITy/ATOXGR
    COL9 = explicit_na(CRITL, ""),
    # COL9 = explicit_na(ATOXGR, ""),
  ) %>%
  arrange(COL0, COL1, COL2, COL3, !is.na(ADYN), ADYN, ADTM)

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  COL2 = paste("Age (years)", "Sex", "Race", sep = concat_sep),
  COL3 = "Vital Sign (unit)",
  # Optional Variable: ATM
  COL4 = paste(
    "Assessment Date",
    "Time (Study Day~[super a])",
    sep = concat_sep
  ),
  COL5 = "Visit",
  # Optional Column: COL6/ATPT
  COL6 = "Time Point",
  COL7 = "Result",
  COL8 = "Change From Baseline",
  # Optional Column: COL9/CRITy/ATOXGR
  COL9 = "Criteria"
  # COL9 = "Grade"
)

# 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