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

LSFECG01

Listing of Subjects With Criteria ECG Values


Output

  • Preview
Code
# Program Name:              lsfecg01.R

# Prep environment

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

# Define script level parameters

tblid <- "LSFECG01"
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

adeg <- pharmaverseadamjnj::adeg %>%
  filter(!!rlang::sym(popfl) == "Y")

adeg_crit <- adeg %>%
  # Update CRITyFL variabes based on study requirements
  # filter(CRIT1FL == "Y" | CRIT2FL == "Y") %>%
  filter(CRIT2FL == "Y") %>%
  select(STUDYID, USUBJID, PARAMCD) %>%
  distinct()

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

adeg_list <- adeg_crit %>%
  inner_join(
    adeg,
    by = c(
      "STUDYID" = "STUDYID",
      "USUBJID" = "USUBJID",
      "PARAMCD" = "PARAMCD"
    )
  ) %>%
  inner_join(adeg_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adeg_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
    ),
    # !!!! remove EGCLSIG creation !!!!
    EGCLSIG = "Y",
    VAL_CS = case_when(
      EGCLSIG == "Y" ~ "CS",
      EGCLSIG == "N" ~ "NCS",
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & !is.na(VAL_HL) & is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & is.na(VAL_CS) ~ VAL_RES,
      .default = NA
    ),
    # CRIT = case_when(
    #   (is.na(CRIT1) | CRIT1FL == "N") & (is.na(CRIT2) | CRIT2FL == "N")
    #     ~ "",
    #   !is.na(CRIT1) & CRIT1FL == "Y" ~ CRIT1,
    #   !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    # ),
    CRIT = case_when(
      is.na(CRIT2) | CRIT2FL == "N" ~ "",
      !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    ),
    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 = paste(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Column: COL8/CHG
    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
    COL9 = explicit_na(CRIT, "")
  ) %>%
  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 = "ECG Parameter (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",
  # Optional Column: COL8/CHG
  COL8 = "Change from Baseline",
  # Optional Column: COL9/CRITy
  COL9 = "Criteria"
)

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

LSFECG01: Listing of Subjects With [Criteria] ECG Values; Safety Analysis Set (Study jjcs - core)

Treatment Group

Subject ID

Age (years) / Sex / Race

ECG Parameter (unit)

Assessment Date / Time (Study Daya)

Visit

Time Point

Result

Change from Baseline

Criteria

Xanomeline High Dose

01-701-1028

71 / M / Asian

ECG Mean Heart Rate (beats/min)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

38 N CS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

195 N CS

157

>100

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

285 N CS

247

>100

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

499 N CS

461

>100

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

343 N CS

305

>100

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

309 N CS

271

>100

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

458 N CS

420

>100

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

19 N CS

-19

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

194 N CS

156

>100

PR Interval, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

370 H CS

>200

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

363 H CS

-7

>200

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

98 H CS

-272

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

196 N CS

-174

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

333 H CS

-37

>200

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

149 H CS

-221

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

201 H CS

-169

>200

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

530 H CS

160

>200

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

596 H CS

226

>200

01-701-1034

77 / F / White

ECG Mean Heart Rate (beats/min)

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

257 N CS

>100

15JUL2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

176 N CS

-81

>100

29JUL2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

385 N CS

128

>100

11AUG2014 / 06:00 (42)

Month 6

BEFORE TREATMENT

140 N CS

-117

>100

26AUG2014 / 06:00 (57)

Month 9

BEFORE TREATMENT

23 N CS

-234

25SEP2014 / 06:00 (87)

Month 12

BEFORE TREATMENT

465 N CS

208

>100

21OCT2014 / 06:00 (113)

Month 15

BEFORE TREATMENT

129 N CS

-128

>100

18NOV2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

164 N CS

-93

>100

17DEC2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

587 N CS

330

>100

PR Interval, Aggregate (msec)

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

472 H CS

>200

15JUL2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

68 H CS

-404

29JUL2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

168 H CS

-304

11AUG2014 / 06:00 (42)

Month 6

BEFORE TREATMENT

254 H CS

-218

>200

26AUG2014 / 06:00 (57)

Month 9

BEFORE TREATMENT

513 H CS

41

>200

25SEP2014 / 06:00 (87)

Month 12

BEFORE TREATMENT

273 H CS

-199

>200

21OCT2014 / 06:00 (113)

Month 15

BEFORE TREATMENT

137 H CS

-335

18NOV2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

512 H CS

40

>200

17DEC2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

579 H CS

107

>200

01-701-1146

75 / F / Unknown

ECG Mean Heart Rate (beats/min)

20MAY2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

199 N CS

>100

03JUN2013 / 06:00 (15)

Month 1

BEFORE TREATMENT

236 N CS

37

>100

16JUN2013 / 06:00 (28)

Month 3

BEFORE TREATMENT

257 N CS

58

>100

30JUN2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

379 N CS

180

>100

PR Interval, Aggregate (msec)

20MAY2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

52 H CS

03JUN2013 / 06:00 (15)

Month 1

BEFORE TREATMENT

499 H CS

447

>200

16JUN2013 / 06:00 (28)

Month 3

BEFORE TREATMENT

126 H CS

74

30JUN2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

142 H CS

90

01-701-1148

57 / M / Not reported

ECG Mean Heart Rate (beats/min)

23AUG2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

420 N CS

>100

05SEP2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

443 N CS

23

>100

19SEP2013 / 06:00 (28)

Month 3

BEFORE TREATMENT

28 N CS

-392

03OCT2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

240 N CS

-180

>100

18OCT2013 / 06:00 (57)

Month 9

BEFORE TREATMENT

41 N CS

-379

17NOV2013 / 06:00 (87)

Month 12

BEFORE TREATMENT

43 N CS

-377

13DEC2013 / 06:00 (113)

Month 15

BEFORE TREATMENT

223 N CS

-197

>100

10JAN2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

7 N CS

-413

08FEB2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

550 N CS

130

>100

PR Interval, Aggregate (msec)

23AUG2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

484 H CS

>200

05SEP2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

217 H CS

-267

>200

19SEP2013 / 06:00 (28)

Month 3

BEFORE TREATMENT

321 H CS

-163

>200

03OCT2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

296 H CS

-188

>200

18OCT2013 / 06:00 (57)

Month 9

BEFORE TREATMENT

360 H CS

-124

>200

17NOV2013 / 06:00 (87)

Month 12

BEFORE TREATMENT

89 H CS

-395

13DEC2013 / 06:00 (113)

Month 15

BEFORE TREATMENT

188 H CS

-296

10JAN2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

569 H CS

85

>200

08FEB2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

440 H CS

-44

>200

01-701-1239

56 / M / White

ECG Mean Heart Rate (beats/min)

11JAN2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

379 N CS

>100

25JAN2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

407 N CS

28

>100

08FEB2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

134 N CS

-245

>100

19FEB2014 / 06:00 (40)

Month 6

BEFORE TREATMENT

194 N CS

-185

>100

06MAR2014 / 06:00 (55)

Month 9

BEFORE TREATMENT

206 N CS

-173

>100

02APR2014 / 06:00 (82)

Month 12

BEFORE TREATMENT

474 N CS

95

>100

02MAY2014 / 06:00 (112)

Month 15

BEFORE TREATMENT

279 N CS

-100

>100

28MAY2014 / 06:00 (138)

Month 18

BEFORE TREATMENT

598 N CS

219

>100

27JUN2014 / 06:00 (168)

Month 24

BEFORE TREATMENT

45 N CS

-334

PR Interval, Aggregate (msec)

11JAN2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

445 N CS

>200

25JAN2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

358 H CS

-87

>200

08FEB2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

430 H CS

-15

>200

19FEB2014 / 06:00 (40)

Month 6

BEFORE TREATMENT

582 H CS

137

>200

06MAR2014 / 06:00 (55)

Month 9

BEFORE TREATMENT

570 H CS

125

>200

02APR2014 / 06:00 (82)

Month 12

BEFORE TREATMENT

40 H CS

-405

02MAY2014 / 06:00 (112)

Month 15

BEFORE TREATMENT

343 H CS

-102

>200

28MAY2014 / 06:00 (138)

Month 18

BEFORE TREATMENT

142 H CS

-303

27JUN2014 / 06:00 (168)

Month 24

BEFORE TREATMENT

0 H CS

-445

01-701-1275

61 / M / White

ECG Mean Heart Rate (beats/min)

07FEB2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

286 N CS

>100

22FEB2014 / 06:00 (16)

Month 1

BEFORE TREATMENT

50 N CS

-236

07MAR2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

528 N CS

242

>100

22MAR2014 / 06:00 (44)

Month 6

BEFORE TREATMENT

456 N CS

170

>100

05APR2014 / 06:00 (58)

Month 9

BEFORE TREATMENT

433 N CS

147

>100

03MAY2014 / 06:00 (86)

Month 12

BEFORE TREATMENT

328 N CS

42

>100

14JUN2014 / 06:00 (128)

Month 15

BEFORE TREATMENT

317 N CS

31

>100

PR Interval, Aggregate (msec)

07FEB2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

357 H CS

>200

22FEB2014 / 06:00 (16)

Month 1

BEFORE TREATMENT

538 H CS

181

>200

07MAR2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

13 H CS

-344

22MAR2014 / 06:00 (44)

Month 6

BEFORE TREATMENT

587 H CS

230

>200

05APR2014 / 06:00 (58)

Month 9

BEFORE TREATMENT

503 H CS

146

>200

03MAY2014 / 06:00 (86)

Month 12

BEFORE TREATMENT

256 H CS

-101

>200

14JUN2014 / 06:00 (128)

Month 15

BEFORE TREATMENT

591 H CS

234

>200

01-701-1287

56 / F / Multiple

ECG Mean Heart Rate (beats/min)

25JAN2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

171 N CS

>100

11FEB2014 / 06:00 (18)

Month 1

BEFORE TREATMENT

321 N CS

150

>100

20FEB2014 / 06:00 (27)

Month 3

BEFORE TREATMENT

164 N CS

-7

>100

06MAR2014 / 06:00 (41)

Month 6

BEFORE TREATMENT

274 N CS

103

>100

21MAR2014 / 06:00 (56)

Month 9

BEFORE TREATMENT

76 N CS

-95

17APR2014 / 06:00 (83)

Month 12

BEFORE TREATMENT

102 N CS

-69

>100

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

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

Download RTF file

LSIDS05
LSFECG02
Source Code
---
title: LSFECG01
subtitle: Listing of Subjects With Criteria ECG Values
---

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

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

# Prep environment

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

# Define script level parameters

tblid <- "LSFECG01"
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

adeg <- pharmaverseadamjnj::adeg %>%
  filter(!!rlang::sym(popfl) == "Y")

adeg_crit <- adeg %>%
  # Update CRITyFL variabes based on study requirements
  # filter(CRIT1FL == "Y" | CRIT2FL == "Y") %>%
  filter(CRIT2FL == "Y") %>%
  select(STUDYID, USUBJID, PARAMCD) %>%
  distinct()

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

adeg_list <- adeg_crit %>%
  inner_join(
    adeg,
    by = c(
      "STUDYID" = "STUDYID",
      "USUBJID" = "USUBJID",
      "PARAMCD" = "PARAMCD"
    )
  ) %>%
  inner_join(adeg_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adeg_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
    ),
    # !!!! remove EGCLSIG creation !!!!
    EGCLSIG = "Y",
    VAL_CS = case_when(
      EGCLSIG == "Y" ~ "CS",
      EGCLSIG == "N" ~ "NCS",
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & !is.na(VAL_HL) & is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & is.na(VAL_CS) ~ VAL_RES,
      .default = NA
    ),
    # CRIT = case_when(
    #   (is.na(CRIT1) | CRIT1FL == "N") & (is.na(CRIT2) | CRIT2FL == "N")
    #     ~ "",
    #   !is.na(CRIT1) & CRIT1FL == "Y" ~ CRIT1,
    #   !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    # ),
    CRIT = case_when(
      is.na(CRIT2) | CRIT2FL == "N" ~ "",
      !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    ),
    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 = paste(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Column: COL8/CHG
    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
    COL9 = explicit_na(CRIT, "")
  ) %>%
  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 = "ECG Parameter (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",
  # Optional Column: COL8/CHG
  COL8 = "Change from Baseline",
  # Optional Column: COL9/CRITy
  COL9 = "Criteria"
)

# 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