TL Catalog
  1. Listings
  2. Clinical Laboratory Evaluation
  3. LSFLAB01
  • 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. Clinical Laboratory Evaluation
  3. LSFLAB01

LSFLAB01

Listing of Subjects With Criteria Laboratory Values


Output

  • Preview
Code
# Program Name:              lsflab01.R

# Prep environment

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

# Define script level parameters

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

# Process data

adlb <- pharmaverseadamjnj::adlb %>%
  filter(!!rlang::sym(popfl) == "Y" & is.na(DTYPE))


adlb <- adlb[1:1000, ] # make it manageable

adlb_crit <- adlb %>%
  # Update filter criteria as needed for your study
  # MCRIT1ML/MCRI2ML or ATOXGRN will be used
  filter(
    ((!is.na(MCRIT1ML) & as.numeric(substr(MCRIT1ML, 7, 8)) >= 2) |
      (!is.na(MCRIT2ML) & as.numeric(substr(MCRIT2ML, 7, 8)) >= 2))
  ) %>%
  # filter(ATOXGRN >= 3) %>%
  select(STUDYID, USUBJID, PARAMCD) %>%
  distinct()

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

adlb_list <- adlb_crit %>%
  inner_join(
    adlb,
    by = c(
      "STUDYID" = "STUDYID",
      "USUBJID" = "USUBJID",
      "PARAMCD" = "PARAMCD"
    )
  ) %>%
  inner_join(adlb_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adlb_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_CS = case_when(
      LBCLSIG == "Y" ~ "CS",
      LBCLSIG == "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
    ),
    ANRIND = substr(ANRIND, 1, 1),
    MCRIT1ML = ifelse(
      MCRIT1ML != "Level 0",
      paste0(
        "L",
        substr(MCRIT1ML, 7, 8),
        substr(
          MCRIT1ML,
          9,
          nchar(as.character(MCRIT1ML))
        )
      ),
      NA
    ),
    MCRIT2ML = ifelse(
      MCRIT2ML != "Level 0",
      paste0(
        "L",
        substr(MCRIT2ML, 7, 8),
        substr(
          MCRIT2ML,
          9,
          nchar(as.character(MCRIT2ML))
        )
      ),
      NA
    ),
    CRIT = case_when(
      is.na(MCRIT1ML) & is.na(MCRIT2ML) ~ "",
      !is.na(MCRIT1ML) ~ MCRIT1ML,
      !is.na(MCRIT2ML) ~ MCRIT2ML,
    ),
    # CRIT = ifelse(!is.na(ATOXGR), as.character(ATOXGR), ""),
    REFRL = case_when(
      is.na(LBSTNRLO) ~ as.character(ANRLO),
      !is.na(LBSTNRLQ) & !is.na(LBSTNRLO) ~ paste0(
        LBSTNRLQ,
        as.character(LBSTNRLO)
      ),
      is.na(LBSTNRLQ) & !is.na(LBSTNRLO) ~ as.character(LBSTNRLO),
      .default = "NA"
    ),
    REFRH = case_when(
      is.na(LBSTNRHI) ~ as.character(ANRHI),
      !is.na(LBSTNRHQ) & !is.na(LBSTNRHI) ~ paste0(
        LBSTNRHQ,
        as.character(LBSTNRHI)
      ),
      is.na(LBSTNRHQ) & !is.na(LBSTNRHI) ~ as.character(LBSTNRHI),
      .default = "NA"
    ),
    REFR = case_when(
      !is.na(REFRL) & !is.na(REFRH) ~ paste(REFRL, REFRH, sep = " - "),
      !is.na(REFRL) & is.na(REFRH) ~ paste(REFRL, " ", sep = "- "),
      is.na(REFRL) & !is.na(REFRH) ~ paste(" ", REFRH, sep = "- ")
    ),
    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 = paste0(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Variable: COL8/MCRIT1ML/MCRIT2ML/ATOXGR
    COL8 = explicit_na(CRIT, ""),
    COL9 = 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: COL10/ANRLO/ANRHI
    COL10 = explicit_na(REFR, ""),
  ) %>%
  arrange(COL0, COL1, COL2, COL3, COL4, !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 = "Laboratory Test (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 Variable: COL8/MCRIT1ML/MCRIT2ML/ATOXGR
  COL8 = "FDA Threshold Level",
  # COL9 = "Toxicity Grade",
  COL9 = "Change From Baseline",
  # Optional Column: COL10/ANRLO/ANRHI
  COL10 = "Reference Range"
)

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

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

Treatment Group

Subject ID

Age (years) / Sex / Race

Laboratory Test (unit)

Assessment Date / Time (Study Daya)

Visit

Time Point

Result

FDA Threshold Level

Change From Baseline

Reference Range

Xanomeline High Dose

01-701-1028

71 / Male / White

Alanine Aminotransferase (U/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

30 N NCS

L2 (>6.0 mmol/L)

4

6 - 35

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

22 N NCS

L1 (>1.694 mmol/L)

-4

<6 - 35

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

24 N NCS

L1 (<132 mmol/L)

-2

6 - 35

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

24 N NCS

L1 (>1.694 mmol/L)

-2

<6 - 35

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

29 N NCS

L3 (>15.0 10^9/L)

3

6 - 35

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

33 N NCS

L2 (<1.996 mmol/L)

7

<6 - 35

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

26 N NCS

L1 (125-135 g/L)

<6 - 35

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

29 N NCS

L2 (>3.387 mmol/L)

3

6 - 35

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

26 N NCS

L2 (<1.996 mmol/L)

0

<6 - <35

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

32 N CS

L1 (>5.172 mmol/L)

6

6 - <35

Albumin (g/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

42 N NCS

L1 (<132 mmol/L)

-2

35 - <46

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

40 N CS

L2 (>6.206 mmol/L)

-4

35 - <46

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

42 N NCS

L2 (>6.206 mmol/L)

-2

35 - <46

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

37 N NCS

L2 (<1.996 mmol/L)

-7

<35 - <46

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

44 N NCS

L2 (<1.996 mmol/L)

0

35 - 46

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

39 N CS

-5

35 - <46

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

44 N NCS

L2 (>3.387 mmol/L)

<35 - <46

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

41 N NCS

L1 (>1.694 mmol/L)

-3

<35 - <46

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

45 N CS

L1 (>1.5x ULN Enzyme U/L)

1

35 - 46

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

40 N NCS

L1 (>5.172 mmol/L)

-4

35 - <46

Alkaline Phosphatase (U/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

46 N NCS

L1 (>5.172 mmol/L)

2

<35 - 115

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

43 N CS

L2 (>6.206 mmol/L)

-1

<35 - <115

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

47 N CS

L1 (125-135 g/L)

3

35 - <115

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

36 N CS

L2 (>6.206 mmol/L)

-8

35 - <115

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

41 N NCS

L1 (125-135 g/L)

-3

35 - 115

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

40 N NCS

L2 (>3.387 mmol/L)

-4

<35 - 115

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

44 N NCS

L2 (>3.387 mmol/L)

<35 - <115

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

38 N NCS

L1 (>2.620 mmol/L)

-6

35 - 115

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

40 N NCS

L2 (<1.996 mmol/L)

-4

<35 - <115

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

40 N CS

L2 (>6.206 mmol/L)

-4

35 - 115

Anisocytes

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

1 NCS

L2 (>6.206 mmol/L)

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

1 NCS

L1 (>5.172 mmol/L)

Aspartate Aminotransferase (U/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

23 N NCS

L2 (>3.387 mmol/L)

-1

<11 - 36

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

21 N NCS

L1 (<132 mmol/L)

-3

<11 - <36

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

23 N NCS

L1 (>2.620 mmol/L)

-1

<11 - 36

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

18 N NCS

L1 (>5.172 mmol/L)

-6

<11 - <36

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

28 N NCS

L1 (<132 mmol/L)

4

<11 - <36

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

28 N NCS

L1 (>5.172 mmol/L)

4

11 - 36

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

24 N NCS

L1 (>1.5x ULN Enzyme U/L)

11 - 36

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

24 N NCS

L1 (>10.8 10^9/L)

0

<11 - <36

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

24 N NCS

L1 (<132 mmol/L)

0

<11 - <36

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

26 N NCS

L1 (>1.5x ULN Enzyme U/L)

2

11 - <36

Basophils Abs (10^9/L)

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

0.06 N CS

L1 (>10.8 10^9/L)

-1.46

<0 - 0.2

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

0.04 N NCS

L1 (>1.694 mmol/L)

-1.48

<0 - <0.2

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

0.05 N CS

L3 (>6.5 mmol/L)

-1.47

<0 - 0.2

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

0.07 N NCS

L2 (>6.0 mmol/L)

-1.45

0 - <0.2

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

0.04 N NCS

L2 (>3.387 mmol/L)

-1.48

0 - 0.2

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

0.04 N NCS

L2 (>13.0 10^9/L)

-1.48

0 - 0.2

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

0.06 N NCS

-1.46

<0 - <0.2

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

0.04 N NCS

L2 (>3.387 mmol/L)

-1.48

0 - <0.2

Basophils/Leukocytes (FRACTION)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

0.40 H CS

L2 (>13.0 10^9/L)

0.10

<0 - 0.02

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

0.30 H NCS

L2 (<1.996 mmol/L)

0 - 0.02

Bilirubin (umol/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

11.97 N CS

L2 (>13.0 10^9/L)

-6.84

<3 - <21

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

13.68 N NCS

L1 (<132 mmol/L)

-5.13

<3 - 21

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

15.39 N NCS

L1 (>1.5x ULN Enzyme U/L)

-3.42

3 - <21

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

11.97 N NCS

L1 (>1.694 mmol/L)

-6.84

3 - 21

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

13.68 N NCS

L2 (fasting ≥6.99 mmol/L or random ≥11.10 mmol/L)

-5.13

<3 - 21

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

13.68 N NCS

L2 (>3.387 mmol/L)

-5.13

3 - 21

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

18.81 N NCS

L2 (>6.206 mmol/L)

<3 - 21

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

13.68 N CS

L1 (125-135 g/L)

-5.13

3 - <21

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

13.68 N CS

L2 (>6.206 mmol/L)

-5.13

3 - <21

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

11.97 N NCS

L2 (>3.387 mmol/L)

-6.84

3 - <21

Calcium (mmol/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

2.2205 N NCS

L1 (>5.172 mmol/L)

-0.0749

2.1 - 2.57

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

2.1207 N NCS

L2 (>2.745 mmol/L)

-0.1747

<2.1 - 2.57

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

2.0958 L NCS

L1 (>5.172 mmol/L)

-0.1996

2.1 - 2.57

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

1.9960 L NCS

L2 (>6.206 mmol/L)

-0.2994

<2.1 - 2.57

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

2.2205 N NCS

L1 (>1.694 mmol/L)

-0.0749

<2.1 - 2.57

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

2.1457 N CS

-0.1497

2.1 - <2.57

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

2.2954 N CS

L1 (<132 mmol/L)

2.1 - <2.57

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

2.1706 N NCS

L2 (<1.996 mmol/L)

-0.1248

2.1 - <2.57

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

2.2205 N CS

L2 (<1.996 mmol/L)

-0.0749

<2.1 - 2.57

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

2.1956 N NCS

L2 (>2.745 mmol/L)

-0.0998

<2.1 - 2.57

Chloride (mmol/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

103 N NCS

L2 (>6.206 mmol/L)

0

<94 - 112

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

105 N NCS

L2 (>6.0 mmol/L)

2

<94 - 112

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

107 N NCS

L2 (>6.0 mmol/L)

4

<94 - 112

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

108 N CS

L1 (>5.172 mmol/L)

5

<94 - <112

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

105 N NCS

L1 (>5.172 mmol/L)

2

94 - <112

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

105 N NCS

L1 (125-135 g/L)

2

<94 - 112

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

103 N NCS

L2 (>6.206 mmol/L)

94 - <112

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

111 N NCS

L1 (<132 mmol/L)

8

<94 - <112

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

103 N NCS

L1 (>5.172 mmol/L)

0

94 - <112

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

107 N NCS

L2 (>6.206 mmol/L)

4

94 - 112

Cholesterol (mmol/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

4.7065 N NCS

L2 (>6.206 mmol/L)

-0.1034

<3.85 - <7.4

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

4.3962 N CS

L1 (>1.5x ULN Enzyme U/L)

-0.4138

3.85 - 7.4

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

4.2410 N NCS

L2 (>3.387 mmol/L)

-0.5689

<3.85 - <7.4

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

3.9307 N NCS

L1 (125-135 g/L)

-0.8792

<3.85 - <7.4

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

5.0686 N CS

L2 (>6.0 mmol/L)

0.2586

3.85 - 7.4

10SEP2013 / 00:00 (54)

Cycle 05

BEFORE TREATMENT

4.4221 N NCS

L2 (>13.0 10^9/L)

-0.3879

3.85 - 7.4

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

4.8100 N NCS

L1 (>1.694 mmol/L)

3.85 - 7.4

14AUG2013 / 00:00 (27)

Cycle 03

BEFORE TREATMENT

4.3703 N CS

L2 (>3.387 mmol/L)

-0.4396

3.85 - 7.4

14JAN2014 / 00:00 (180)

End Of Treatment

BEFORE TREATMENT

4.6807 N NCS

L3 (>15.0 10^9/L)

-0.1293

3.85 - 7.4

29AUG2013 / 00:00 (42)

Cycle 04

BEFORE TREATMENT

4.2669 N NCS

L2 (<1.996 mmol/L)

-0.5431

<3.85 - 7.4

Color

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

L2 (>13.0 10^9/L)

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

L1 (<132 mmol/L)

09OCT2013 / 00:00 (83)

Cycle 07

BEFORE TREATMENT

L1 (>1.5x ULN Enzyme U/L)

11JUL2013 / 00:00 (-8)

Baseline

BEFORE TREATMENT

L2 (fasting ≥6.99 mmol/L or random ≥11.10 mmol/L)

Creatinine (umol/L)

01AUG2013 / 00:00 (14)

Cycle 02

BEFORE TREATMENT

132.60 N NCS

L1 (>1.694 mmol/L)

8.84

71 - <141

04DEC2013 / 00:00 (139)

Cycle 11

BEFORE TREATMENT

123.76 N NCS

L1 (>5.172 mmol/L)

0.00

71 - <141

06JAN2014 / 00:00 (172)

Cycle 13

BEFORE TREATMENT

132.60 N NCS

L1 (<132 mmol/L)

8.84

71 - <141

06NOV2013 / 00:00 (111)

Cycle 09

BEFORE TREATMENT

114.92 N CS

L2 (>6.206 mmol/L)

-8.84

71 - 141

Key: [CS=clinically significant]

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

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

Download RTF file

LSFDTH01
LSIDEM01
Source Code
---
title: LSFLAB01
subtitle: Listing of Subjects With Criteria Laboratory 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:              lsflab01.R

# Prep environment

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

# Define script level parameters

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

# Process data

adlb <- pharmaverseadamjnj::adlb %>%
  filter(!!rlang::sym(popfl) == "Y" & is.na(DTYPE))


adlb <- adlb[1:1000, ] # make it manageable

adlb_crit <- adlb %>%
  # Update filter criteria as needed for your study
  # MCRIT1ML/MCRI2ML or ATOXGRN will be used
  filter(
    ((!is.na(MCRIT1ML) & as.numeric(substr(MCRIT1ML, 7, 8)) >= 2) |
      (!is.na(MCRIT2ML) & as.numeric(substr(MCRIT2ML, 7, 8)) >= 2))
  ) %>%
  # filter(ATOXGRN >= 3) %>%
  select(STUDYID, USUBJID, PARAMCD) %>%
  distinct()

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

adlb_list <- adlb_crit %>%
  inner_join(
    adlb,
    by = c(
      "STUDYID" = "STUDYID",
      "USUBJID" = "USUBJID",
      "PARAMCD" = "PARAMCD"
    )
  ) %>%
  inner_join(adlb_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adlb_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_CS = case_when(
      LBCLSIG == "Y" ~ "CS",
      LBCLSIG == "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
    ),
    ANRIND = substr(ANRIND, 1, 1),
    MCRIT1ML = ifelse(
      MCRIT1ML != "Level 0",
      paste0(
        "L",
        substr(MCRIT1ML, 7, 8),
        substr(
          MCRIT1ML,
          9,
          nchar(as.character(MCRIT1ML))
        )
      ),
      NA
    ),
    MCRIT2ML = ifelse(
      MCRIT2ML != "Level 0",
      paste0(
        "L",
        substr(MCRIT2ML, 7, 8),
        substr(
          MCRIT2ML,
          9,
          nchar(as.character(MCRIT2ML))
        )
      ),
      NA
    ),
    CRIT = case_when(
      is.na(MCRIT1ML) & is.na(MCRIT2ML) ~ "",
      !is.na(MCRIT1ML) ~ MCRIT1ML,
      !is.na(MCRIT2ML) ~ MCRIT2ML,
    ),
    # CRIT = ifelse(!is.na(ATOXGR), as.character(ATOXGR), ""),
    REFRL = case_when(
      is.na(LBSTNRLO) ~ as.character(ANRLO),
      !is.na(LBSTNRLQ) & !is.na(LBSTNRLO) ~ paste0(
        LBSTNRLQ,
        as.character(LBSTNRLO)
      ),
      is.na(LBSTNRLQ) & !is.na(LBSTNRLO) ~ as.character(LBSTNRLO),
      .default = "NA"
    ),
    REFRH = case_when(
      is.na(LBSTNRHI) ~ as.character(ANRHI),
      !is.na(LBSTNRHQ) & !is.na(LBSTNRHI) ~ paste0(
        LBSTNRHQ,
        as.character(LBSTNRHI)
      ),
      is.na(LBSTNRHQ) & !is.na(LBSTNRHI) ~ as.character(LBSTNRHI),
      .default = "NA"
    ),
    REFR = case_when(
      !is.na(REFRL) & !is.na(REFRH) ~ paste(REFRL, REFRH, sep = " - "),
      !is.na(REFRL) & is.na(REFRH) ~ paste(REFRL, " ", sep = "- "),
      is.na(REFRL) & !is.na(REFRH) ~ paste(" ", REFRH, sep = "- ")
    ),
    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 = paste0(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Variable: COL8/MCRIT1ML/MCRIT2ML/ATOXGR
    COL8 = explicit_na(CRIT, ""),
    COL9 = 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: COL10/ANRLO/ANRHI
    COL10 = explicit_na(REFR, ""),
  ) %>%
  arrange(COL0, COL1, COL2, COL3, COL4, !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 = "Laboratory Test (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 Variable: COL8/MCRIT1ML/MCRIT2ML/ATOXGR
  COL8 = "FDA Threshold Level",
  # COL9 = "Toxicity Grade",
  COL9 = "Change From Baseline",
  # Optional Column: COL10/ANRLO/ANRHI
  COL10 = "Reference Range"
)

# 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