Skip to content

Commit

Permalink
extract some more business logic into a helper function
Browse files Browse the repository at this point in the history
  • Loading branch information
LDSamson committed Feb 21, 2025
1 parent bd41599 commit d90e57c
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 39 deletions.
47 changes: 8 additions & 39 deletions R/mod_review_form_tbl.R
Original file line number Diff line number Diff line change
Expand Up @@ -64,46 +64,15 @@ mod_review_form_tbl_server <- function(
paste0("Warning: no data found in database for the form '", form, "'")
))
golem::cat_dev(form, "| Computing merged data\n")
df <- dplyr::left_join(
get_form_table(
form_data(),
form_review_data() |>
dplyr::select(-dplyr::all_of(c("edit_date_time", "event_date"))),
by = idx_cols
) |>
dplyr::mutate(
item_value = ifelse(
reviewed == "No",
paste0("<b>", htmltools::htmlEscape(item_value), "*</b>"),
htmltools::htmlEscape(item_value)
)
) |>
create_table(expected_columns = names(form_items)) |>
dplyr::mutate(o_reviewed = Map(\(x, y, z) append(x, list(
row_id = y,
disabled = z,
updated = session$userData$update_checkboxes[[form]])
),
o_reviewed,
dplyr::row_number(),
subject_id != active_subject()))
if (form != "Adverse events") {
return(df)
}
if (identical(title, "Serious Adverse Events")){
df |>
dplyr::filter(grepl("Yes", `Serious Adverse Event`)) |>
dplyr::select(dplyr::any_of(
c("o_reviewed", "subject_id","form_repeat", "Name", "AESI", "SAE Start date",
"SAE End date", "CTCAE severity", "Treatment related",
"Treatment action", "Other action", "SAE Category",
"SAE Awareness date", "SAE Date of death", "SAE Death reason")
)) |>
adjust_colnames("^SAE ")
} else {
df |>
dplyr::filter(!grepl("Yes", `Serious Adverse Event`)) |>
dplyr::select(-dplyr::starts_with("SAE"))
}
form_review_data(),
form = form,
form_items = form_items,
active_subject = active_subject(),
updated = session$userData$update_checkboxes[[form]],
is_SAE = identical(title, "Serious Adverse Events")
)
}) |>
bindEvent(form_data(), form_review_data(), active_subject())

Expand Down
64 changes: 64 additions & 0 deletions R/mod_review_form_tbl_fct_helpers.R
Original file line number Diff line number Diff line change
@@ -1,3 +1,67 @@

#' Get form table
#'
#' @param form_data
#' @param form_review_data
#' @param form
#' @param active_subject
#' @param updated
#' @param is_SAE
#' @param id_cols
#'
#' @keywords internal
get_form_table <- function(
form_data,
form_review_data,
form,
form_items,
active_subject,
updated,
is_SAE,
id_cols = idx_cols
){
stopifnot(is.data.frame(form_data), is.data.frame(form_review_data))
df <- dplyr::left_join(
form_data,
form_review_data |>
dplyr::select(-dplyr::all_of(c("edit_date_time", "event_date"))),
by = id_cols
) |>
dplyr::mutate(
item_value = ifelse(
reviewed == "No",
paste0("<b>", htmltools::htmlEscape(item_value), "*</b>"),
htmltools::htmlEscape(item_value)
)
) |>
create_table(expected_columns = names(form_items)) |>
dplyr::mutate(o_reviewed = Map(\(x, y, z) append(x, list(
row_id = y,
disabled = z,
updated = updated)
),
o_reviewed,
dplyr::row_number(),
subject_id != active_subject))
if (form != "Adverse events") {
return(df)
}
if (is_SAE){
with(df, df[grepl("Yes", `Serious Adverse Event`),]) |>
dplyr::select(dplyr::any_of(
c("o_reviewed", "subject_id","form_repeat", "Name", "AESI", "SAE Start date",
"SAE End date", "CTCAE severity", "Treatment related",
"Treatment action", "Other action", "SAE Category",
"SAE Awareness date", "SAE Date of death", "SAE Death reason")
)) |>
adjust_colnames("^SAE ")
} else {
with(df, df[!grepl("Yes", `Serious Adverse Event`),]) |>
dplyr::select(-dplyr::starts_with("SAE"))
}
}


#' Update Review Records
#'
#' Updates the review records data frame when a datatable checkbox is clicked.
Expand Down
36 changes: 36 additions & 0 deletions man/get_form_table.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d90e57c

Please sign in to comment.