Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
library(admiraldev)
## ----warning=FALSE, message=FALSE---------------------------------------------
library(admiral)
library(admiralmetabolic)
library(pharmaversesdtm)
library(dplyr)
library(stringr)
## ----message=FALSE, warning=FALSE---------------------------------------------
lb_metabolic <- pharmaversesdtm::lb_metabolic
admiralmetabolic_adsl <- admiralmetabolic::admiralmetabolic_adsl
lb <- convert_blanks_to_na(lb_metabolic)
adsl <- convert_blanks_to_na(admiralmetabolic_adsl)
## -----------------------------------------------------------------------------
# Assign PARAMCD, PARAM, and PARAMN
param_lookup <- tibble::tribble(
~LBTESTCD, ~PARAMCD, ~PARAM, ~PARAMN,
"ALB", "ALB", "Albumin (g/L)", 1,
"ALP", "ALKPH", "Alkaline Phosphatase (U/L)", 2,
"AST", "AST", "Aspartate Aminotransferase (U/L)", 3,
"CHOL", "CHOLES", "Cholesterol (mmol/L)", 4,
"GGT", "GGT", "Gamma Glutamyl Transferase (U/L)", 5,
"GLUC", "GLUC", "Glucose (mmol/L)", 6,
"HBA1CHGB", "HBA1CHGB", "Hemoglobin A1C/Hemoglobin (mmol/mol)", 7,
"INSULIN", "INSULIN", "Insulin (mIU/L)", 8,
"TRIG", "TRIG", "Triglycerides (mg/dL)", 9
)
## -----------------------------------------------------------------------------
# Define required ADSL variables for derivations
adsl_vars <- exprs(TRTSDT, TRTEDT, TRT01A, TRT01P)
adlb <- lb %>%
# Remove non-fasted GLUC and INSULIN results
filter(!(LBTESTCD %in% c("GLUC", "INSULIN") & LBFAST != "Y")) %>%
# Join ADSL with LB (need TRTSDT for ADY derivation)
derive_vars_merged(
dataset_add = adsl,
new_vars = adsl_vars,
by_vars = get_admiral_option("subject_keys")
) %>%
# Calculate ADT, ADY
derive_vars_dt(
new_vars_prefix = "A",
dtc = LBDTC
) %>%
derive_vars_dy(reference_date = TRTSDT, source_vars = exprs(ADT))
adlb <- adlb %>%
# Add PARAMCD PARAM and PARAMN - from parameter lookup table
derive_vars_merged_lookup(
dataset_add = param_lookup,
new_vars = exprs(PARAMCD, PARAM, PARAMN),
by_vars = exprs(LBTESTCD)
) %>%
## Calculate PARCAT1 PARCAT2 AVAL AVALC ANRLO ANRHI
slice_derivation(
derivation = mutate,
args = params(
PARCAT1 = LBCAT,
),
# Handle specific parameters requiring conventional units (CV)
derivation_slice(
filter = LBTESTCD %in% c("TRIG", "INSULIN"),
args = params(
PARCAT2 = "CV",
AVAL = as.numeric(LBORRES),
AVALC = NA_character_,
ANRLO = as.numeric(LBORNRLO),
ANRHI = as.numeric(LBORNRHI)
)
),
# Handle other parameters using standard units (SI)
derivation_slice(
filter = TRUE,
args = params(
PARCAT2 = "SI",
AVAL = LBSTRESN,
# Only populate AVALC if character value is non-redundant with AVAL
AVALC = if_else(
is.na(AVAL) | as.character(AVAL) != LBSTRESC,
LBSTRESC,
NA_character_
),
ANRLO = LBSTNRLO,
ANRHI = LBSTNRHI
)
)
)
## ----echo=FALSE---------------------------------------------------------------
# Example display of derived data
dataset_vignette(
arrange(adlb, USUBJID, PARCAT1, ADY, PARAMN),
display_vars = exprs(!!!get_admiral_option("subject_keys"), ADT, ADY, PARAMCD, PARAM, PARAMN, PARCAT1, PARCAT2, AVAL, AVALC, ANRLO, ANRHI)
)
## -----------------------------------------------------------------------------
adlb <- adlb %>%
mutate(
AVISIT = case_when(
str_detect(VISIT, "SCREEN") ~ "Baseline",
!is.na(VISIT) ~ str_to_title(VISIT),
TRUE ~ NA_character_
),
AVISITN = case_when(
AVISIT == "Baseline" ~ 0,
str_detect(VISIT, "WEEK") ~ as.integer(str_extract(VISIT, "\\d+")),
TRUE ~ NA_integer_
)
)
## ----echo=FALSE---------------------------------------------------------------
# Example display of derived data
dataset_vignette(
arrange(adlb, USUBJID, PARCAT1, ADY, PARAMN),
display_vars = exprs(!!!get_admiral_option("subject_keys"), PARAMCD, PARAM, PARCAT1, AVAL, ADY, AVISIT, AVISITN)
)
## -----------------------------------------------------------------------------
# Load ADVS dataset (assuming it has been created by ad_advs.R)
admiralmetabolic_advs <- admiralmetabolic::admiralmetabolic_advs
advs <- convert_blanks_to_na(admiralmetabolic_advs)
# Merge BMI and WSTCIR from ADVS to ADLB based on subject and date
adlb <- adlb %>%
derive_vars_transposed(
advs,
by_vars = exprs(!!!get_admiral_option("subject_keys"), ADT),
key_var = PARAMCD,
value_var = AVAL,
filter = PARAMCD %in% c("BMI", "WSTCIR")
)
## ----echo=FALSE---------------------------------------------------------------
# Example display of derived data
dataset_vignette(
arrange(adlb, USUBJID, ADY, PARAMN),
display_vars = exprs(!!!get_admiral_option("subject_keys"), PARAMCD, PARAM, AVAL, ADT, ADY, AVISIT, AVISITN, BMI, WSTCIR)
)
## -----------------------------------------------------------------------------
# Derive HOMA-IR using derive_param_computed
adlb <- adlb %>%
derive_param_computed(
by_vars = exprs(!!!get_admiral_option("subject_keys"), AVISIT, AVISITN, ADT, ADY, !!!adsl_vars),
parameters = c("INSULIN", "GLUC"),
set_values_to = exprs(
AVAL = AVAL.INSULIN * AVAL.GLUC / 22.5,
PARAMCD = "HOMAIR",
PARAM = "Homeostasis Model Assessment - Insulin Resistance",
PARAMN = 10
)
)
## ----echo=FALSE---------------------------------------------------------------
# Example display of derived data
dataset_vignette(
filter(adlb, PARAMCD == "HOMAIR") %>%
arrange(USUBJID, ADY, PARAMN),
display_vars = exprs(!!!get_admiral_option("subject_keys"), PARAMCD, PARAM, AVAL, ADY, AVISIT, AVISITN)
)
## -----------------------------------------------------------------------------
# Derive FLI using derive_param_computed
adlb <- adlb %>%
derive_param_computed(
by_vars = exprs(!!!get_admiral_option("subject_keys"), AVISIT, AVISITN, ADT, ADY, BMI, WSTCIR, !!!adsl_vars),
parameters = c("TRIG", "GGT"),
set_values_to = exprs(
AVAL = {
lambda <- 0.953 * log(AVAL.TRIG) + 0.139 * BMI + 0.718 * log(AVAL.GGT) + 0.053 * WSTCIR - 15.745
(exp(lambda) / (1 + exp(lambda))) * 100
},
PARAMCD = "FLI",
PARAM = "Fatty Liver Index",
PARAMN = 11
)
)
adlb <- adlb %>%
arrange(!!!get_admiral_option("subject_keys"), ADT, PARAMN) # Arrange for consistency
## ----echo=FALSE---------------------------------------------------------------
# Example display of derived data
dataset_vignette(
filter(adlb, PARAMCD == "FLI") %>%
arrange(USUBJID, ADY, PARAMN),
display_vars = exprs(!!!get_admiral_option("subject_keys"), PARAMCD, PARAM, AVAL, ADY, AVISIT, AVISITN)
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.