Nothing
#
# Unit test for testing coalescing behavior in:
#
# - `harcode_no_ct()` # nolint
# - `harcode_ct()` # nolint
# - `assign_no_ct()` # nolint
# - `assign_ct()` # nolint
#
# Issue 110: https://github.com/pharmaverse/sdtm.oak/issues/110
#
cm_raw <- tibble::tibble(
PATNUM = c(rep(375L, 2L), 376L, rep(377L, 4L), rep(378L, 4L), rep(379L, 3L)),
`IT.CMTRT` = c(
"BABY ASPIRIN", "CORTISPORIN", "ASPIRIN", "DIPHENHYDRAMINE HCL",
"PARCETEMOL", "VOMIKIND", NA, "AMITRYPTYLINE", "BENADRYL",
"DIPHENHYDRAMINE HYDROCHLORIDE", "TETRACYCLINE", "BENADRYL", "SOMINEX",
"ZQUILL"
),
`IT.CMTRTOTH` = c("Other Treatment - ", rep(NA, 5L), "Other Treatment - Baby Aspirin", rep(NA, 7L)),
`IT.CMINDC` = c(
NA, "NAUSEA", "ANEMIA", "NAUSEA", "PYREXIA", "VOMITINGS", NA,
"COLD", "FEVER", NA, "FEVER", "COLD", "COLD", "PAIN"
),
`IT.CMINDCOTH` = c(
"Other Indication - Vomitting", "Other Indication Fever", rep(NA, 7L),
"Other Indication - Diarrhoea", rep(NA, 4L)
),
`IT.CMDSTXT` = c("10", "50", NA, "50", NA, "One", NA, "12", "100", "Two", "10", "12", "3", "5"),
`IT.CMDSTXTO` = c("Other Dose - 100", NA, "Other Dose - 300", NA, "Other Dose - 500", "Other Dose - 600", rep(NA, 8L)), # nolint line_length_linter
`IT.CMDOSU` = c("mg", "Gram", NA, "mg", "mg", "Tablet", NA, "g", "mg", NA, "mg", "IU", "mL", "%"),
`IT.DOSUO` = c(rep(NA, 8L), "Other Dose Unit", "cap", rep(NA, 4L))
)
cm_raw <- sdtm.oak:::generate_oak_id_vars(cm_raw, pat_var = "PATNUM", raw_src = "cm_raw")
study_ct <- tibble::tribble(
~codelist_code, ~term_code, ~term_value, ~collected_value, ~term_preferred_term, ~term_synonyms,
"C71620", "C25613", "%", "%", "Percentage", "Percentage",
"C71620", "C28253", "mg", "mg", "Milligram", "Milligram",
"C71620", "C28254", "mL", "mL", "Milliliter", "cm3; Milliliter",
"C71620", "C48155", "g", "g", "Gram", "Gram",
"C71620", "C48480", "CAPSULE", "Capsule", "Capsule Dosing Unit", "cap; Capsule Dosing Unit",
"C71620", "C48542", "TABLET", "Tablet", "Tablet Dosing Unit", "tab; Tablet Dosing Unit",
"C71620", "C48579", "IU", "IU", "International Unit", "IE; International Unit"
)
cm_actual <-
# Derive topic variable
# Map CMTRT using assign_no_ct, raw_var=IT.CMTRT,tgt_var=CMTRT
assign_no_ct(
raw_dat = cm_raw,
raw_var = "IT.CMTRT",
tgt_var = "CMTRT"
) |>
# example for assign_no_ct
# Map CMTRT using assign_no_ct, raw_var=IT.CMTRTOTH,tgt_var=CMTRT
assign_no_ct(
raw_dat = cm_raw,
raw_var = "IT.CMTRTOTH",
tgt_var = "CMTRT"
) |>
# Map CMCAT = "General Concomitant Medications" using hardcode_no_ct
hardcode_no_ct(
tgt_val = "General Concomitant Medications",
raw_dat = cm_raw,
raw_var = "IT.CMTRT",
tgt_var = "CMCAT"
) |>
# Map CMCAT = "Other General Concomitant Medications" using hardcode_no_ct
# example for hardcode_no_ct
hardcode_no_ct(
tgt_val = "Other General Concomitant Medications",
raw_dat = cm_raw,
raw_var = "IT.CMTRTOTH",
tgt_var = "CMCAT"
) |>
# Map CMOCCUR = "Y" using hardcode_ct when raw_var = IT.CMTRT
hardcode_ct(
tgt_var = "CMOCCUR",
raw_dat = cm_raw,
raw_var = "IT.CMTRT",
tgt_val = "Y",
ct_spec = study_ct,
ct_clst = "C71620"
) |>
# Map CMPRESP = "Y" using hardcode_ct when raw_var = IT.CMTRTOTH
# example for hardcode_ct
hardcode_ct(
tgt_var = "CMPRESP",
raw_dat = cm_raw,
raw_var = "IT.CMTRTOTH",
tgt_val = "Y",
ct_spec = study_ct,
ct_clst = "C71620"
) |>
# Map CMINDC using assign_no_ct, raw_var=IT.CMINDC,tgt_var=CMINDC
assign_no_ct(
raw_dat = cm_raw,
raw_var = "IT.CMINDC",
tgt_var = "CMINDC",
id_vars = oak_id_vars()
) |>
# example for assign_no_ct
# Map CMINDC using assign_no_ct, raw_var=IT.CMINDCOTH,tgt_var=CMINDC
assign_no_ct(
raw_dat = cm_raw,
raw_var = "IT.CMINDCOTH",
tgt_var = "CMINDC",
id_vars = oak_id_vars()
) |>
# Map CMDOSTXT using condition_add and assign_no_ct, raw_var=IT.CMDSTXT,tgt_var=CMDOS
# If IT.CMDSTXT is numeric, map it to CMDOS
assign_no_ct(
raw_dat = condition_add(cm_raw, grepl("^-?\\d*(\\.\\d+)?(e[+-]?\\d+)?$", IT.CMDSTXT)),
raw_var = "IT.CMDSTXT",
tgt_var = "CMDOS",
id_vars = oak_id_vars()
) |>
# Map qualifier CMDOSTXT using condition_add & assign_no_ct, raw_var=IT.CMDSTXT,tgt_var=CMDOSTXT
# If IT.CMDSTXT is character, map it to CMDOSTXT
assign_no_ct(
raw_dat = condition_add(cm_raw, grepl("[^0-9eE.-]", IT.CMDSTXT)),
raw_var = "IT.CMDSTXT",
tgt_var = "CMDOSTXT",
id_vars = oak_id_vars()
) |>
# Map qualifier CMDOSTXT using condition_add & assign_no_ct, raw_var=IT.CMDSTXT,tgt_var=CMDOSTXT
# If IT.CMDSTXT is character, map it to CMDOSTXT
assign_no_ct(
raw_dat = condition_add(cm_raw, !is.na(IT.CMDSTXTO)),
raw_var = "IT.CMDSTXTO",
tgt_var = "CMDOSTXT",
id_vars = oak_id_vars()
) |>
assign_ct(
raw_dat = cm_raw,
raw_var = "IT.DOSUO",
tgt_var = "CMDOSU",
ct_spec = study_ct,
ct_clst = "C71620",
id_vars = oak_id_vars()
) |>
# Map CMDOSU and apply CT using assign_ct, raw_var=IT.CMDOSU,tgt_var=CMDOSU
assign_ct(
raw_dat = cm_raw,
raw_var = "IT.CMDOSU",
tgt_var = "CMDOSU",
ct_spec = study_ct,
ct_clst = "C71620",
id_vars = oak_id_vars()
)
cm_expected <-
tibble::tribble(
~oak_id, ~raw_source, ~patient_number, ~CMTRT, ~CMCAT, ~CMOCCUR, ~CMPRESP, ~CMINDC, ~CMDOS, ~CMDOSTXT, ~CMDOSU, # nolint: line_length_linter
1L, "cm_raw", 375L, "BABY ASPIRIN", "General Concomitant Medications", "Y", "Y", "Other Indication - Vomitting", "10", "Other Dose - 100", "mg", # nolint: line_length_linter
2L, "cm_raw", 375L, "CORTISPORIN", "General Concomitant Medications", "Y", NA, "NAUSEA", "50", NA, "g", # nolint: line_length_linter
3L, "cm_raw", 376L, "ASPIRIN", "General Concomitant Medications", "Y", NA, "ANEMIA", NA, "Other Dose - 300", NA, # nolint: line_length_linter
4L, "cm_raw", 377L, "DIPHENHYDRAMINE HCL", "General Concomitant Medications", "Y", NA, "NAUSEA", "50", NA, "mg", # nolint: line_length_linter
5L, "cm_raw", 377L, "PARCETEMOL", "General Concomitant Medications", "Y", NA, "PYREXIA", NA, "Other Dose - 500", "mg", # nolint: line_length_linter
6L, "cm_raw", 377L, "VOMIKIND", "General Concomitant Medications", "Y", NA, "VOMITINGS", NA, "One", "TABLET", # nolint: line_length_linter
7L, "cm_raw", 377L, "Other Treatment - Baby Aspirin", "Other General Concomitant Medications", NA, "Y", NA, NA, NA, NA, # nolint: line_length_linter
8L, "cm_raw", 378L, "AMITRYPTYLINE", "General Concomitant Medications", "Y", NA, "COLD", "12", NA, "g", # nolint: line_length_linter
9L, "cm_raw", 378L, "BENADRYL", "General Concomitant Medications", "Y", NA, "FEVER", "100", NA, "OTHER DOSE UNIT", # nolint: line_length_linter
10L, "cm_raw", 378L, "DIPHENHYDRAMINE HYDROCHLORIDE", "General Concomitant Medications", "Y", NA, "Other Indication - Diarrhoea", NA, "Two", "CAPSULE", # nolint: line_length_linter
11L, "cm_raw", 378L, "TETRACYCLINE", "General Concomitant Medications", "Y", NA, "FEVER", "10", NA, "mg", # nolint: line_length_linter
12L, "cm_raw", 379L, "BENADRYL", "General Concomitant Medications", "Y", NA, "COLD", "12", NA, "IU", # nolint: line_length_linter
13L, "cm_raw", 379L, "SOMINEX", "General Concomitant Medications", "Y", NA, "COLD", "3", NA, "mL", # nolint: line_length_linter
14L, "cm_raw", 379L, "ZQUILL", "General Concomitant Medications", "Y", NA, "PAIN", "5", NA, "%" # nolint: line_length_linter
)
test_that("coalesce behavior works", {
expect_identical(cm_actual, cm_expected)
})
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.