Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: dsUpload
Title: Upload Functions for DataSHIELD Backends
Version: 4.4.4.9000
Version: 4.5.0
Authors@R:
c(person(given = "Sido",
family = "Haakma",
Expand Down
7 changes: 7 additions & 0 deletions R/enums.R
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ du.enum.dict.kind <- function() {
list(CORE = "core", OUTCOME = "outcome", BETA = "beta")
}

#' Source data types
#'
#' @noRd
du.enum.data.type <- function() {
list(LONG = "long", WIDE = "wide")
}

#' Projects that are containing dictionaries. Repositories containing these dictionaries should be:
#'
#' - ds-dictionaries
Expand Down
68 changes: 51 additions & 17 deletions R/reshape.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
#'
#' @param upload do you want automatically upload the files to your opal (default = true)
#' @param data_version version of the data you are going to upload into Opal
#' @param data_type default = WIDE, can be LONG as well
#' @param input_format possible formats are CSV,STATA,SPSS or SAS (default = CSV)
#' @param dict_version version of the dictionary
#' @param dict_kind kind of data to reshape (default = core)
#' @param input_path path for import file
#' @param run_mode default = NORMAL, can be TEST and NON_INTERACTIIVE

#'
#' @importFrom readxl read_xlsx
#'
#' @noRd
du.reshape <- function(upload = TRUE, project, data_version, input_format, dict_version, dict_kind, input_path, run_mode) {
du.reshape <- function(upload = TRUE, project, data_version, data_type, input_format, dict_version, dict_kind, input_path, run_mode) {
message("######################################################")
message(" Start converting and uploading data ")
message(paste0(" Start converting and uploading data ( ", data_type, "-format )"))
message("######################################################")
message("* Setup: load data and set output directory")
message("------------------------------------------------------")
Expand All @@ -28,24 +30,50 @@ du.reshape <- function(upload = TRUE, project, data_version, input_format, dict_
file_name_monthly <- paste0(file_prefix, "_", data_version, "_", "monthly_repeated_measures")
file_name_yearly <- paste0(file_prefix, "_", data_version, "_", "yearly_repeated_measures")

nonrep_data <- du.reshape.generate.non.repeated(
data, dict_kind
)
if(data_type == du.enum.data.type()$WIDE) {
nonrep_data <- du.reshape.wide.generate.non.repeated(
data, dict_kind
)
} else {
nonrep_data <- du.reshape.long.generate.non.repeated(
data, dict_kind
)
}
if (!is.null(nonrep_data)) write_csv(nonrep_data, paste0(getwd(), "/", file_name_nonrep, ".csv"), na = "")
yearlyrep_data <- du.reshape.generate.yearly.repeated(
data, dict_kind
)

if(data_type == du.enum.data.type()$WIDE) {
yearlyrep_data <- du.reshape.wide.generate.yearly.repeated(
data, dict_kind
)
} else {
#yearlyrep_data <- du.reshape.long.generate.yearly.repeated(
# data, dict_kind
#)
}
if (!is.null(yearlyrep_data)) write_csv(yearlyrep_data, paste0(getwd(), "/", file_name_yearly, ".csv"), na = "")
monthlyrep_data <- du.reshape.generate.monthly.repeated(
data, dict_kind
)

if(data_type == du.enum.data.type()$WIDE) {
monthlyrep_data <- du.reshape.wide.generate.monthly.repeated(
data, dict_kind
)
} else {
#monthlyrep_data <- du.reshape.long.generate.monthly.repeated(
# data, dict_kind
#)
}
if (!is.null(monthlyrep_data)) write_csv(monthlyrep_data, paste0(getwd(), "/", file_name_monthly, ".csv"), na = "")

if (dict_kind == du.enum.dict.kind()$OUTCOME) {
file_name_weekly <- paste0(file_prefix, "_", data_version, "_", "weekly_repeated_measures")
weeklyrep_data <- du.reshape.generate.weekly.repeated(
data, dict_kind
)
if(data_type == du.enum.data.type()$WIDE) {
weeklyrep_data <- du.reshape.wide.generate.weekly.repeated(
data, dict_kind
)
} else {
#weeklyrep_data <- du.reshape.long.generate.weekly.repeated(
# data, dict_kind
#)
}
if (!is.null(weeklyrep_data)) {
write_csv(weeklyrep_data, paste0(getwd(), "/", file_name_weekly, ".csv"), na = "")
weeklyrep_metadata <- du.retrieve.full.dict(du.enum.table.types()$WEEKLY, dict_kind)
Expand All @@ -63,9 +91,15 @@ du.reshape <- function(upload = TRUE, project, data_version, input_format, dict_

if (dict_kind == du.enum.dict.kind()$CORE & dict_version != "1_0") {
file_name_trimester <- paste0(file_prefix, "_", data_version, "_", "trimester_repeated_measures")
trimester_data <- du.reshape.generate.trimesterly.repeated(
data, dict_kind
)
if(data_type == du.enum.data.type()$WIDE) {
trimester_data <- du.reshape.wide.generate.trimesterly.repeated(
data, dict_kind
)
} else {
#trimester_data <- du.reshape.long.generate.trimesterly.repeated(
# data, dict_kind
#)
}
if (!is.null(trimester_data)) {
write_csv(trimester_data, paste0(getwd(), "/", file_name_trimester, ".csv"), na = "")
trimester_metadata <- du.retrieve.full.dict(du.enum.table.types()$TRIMESTER, dict_kind)
Expand Down
10 changes: 5 additions & 5 deletions R/reshape_helpers.R → R/reshape_long.R
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ du.check.nas <- function(stripped, raw) {
#' @importFrom readxl read_xlsx
#'
#' @noRd
du.reshape.generate.non.repeated <- function(data, dict_kind) {
du.reshape.long.generate.non.repeated <- function(data, dict_kind) {
message("* Generating: non-repeated measures")

# Retrieve dictionary
Expand Down Expand Up @@ -193,7 +193,7 @@ du.reshape.generate.non.repeated <- function(data, dict_kind) {
#' @importFrom tidyr gather
#'
#' @noRd
du.reshape.generate.yearly.repeated <- function(data, dict_kind) {
du.reshape.long.generate.yearly.repeated <- function(data, dict_kind) {
# workaround to avoid glpobal variable warnings, check:
# https://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when
orig_var <- value <- age_years <- . <- NULL
Expand Down Expand Up @@ -265,7 +265,7 @@ du.reshape.generate.yearly.repeated <- function(data, dict_kind) {
#' @importFrom tidyr gather
#'
#' @noRd
du.reshape.generate.monthly.repeated <- function(data, dict_kind) {
du.reshape.long.generate.monthly.repeated <- function(data, dict_kind) {
# workaround to avoid glpobal variable warnings, check:
# https://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when
orig_var <- value <- age_months <- . <- NULL
Expand Down Expand Up @@ -339,7 +339,7 @@ du.reshape.generate.monthly.repeated <- function(data, dict_kind) {
#' @importFrom tidyr gather
#'
#' @noRd
du.reshape.generate.weekly.repeated <- function(data, dict_kind) {
du.reshape.long.generate.weekly.repeated <- function(data, dict_kind) {
# workaround to avoid glpobal variable warnings, check:
# https://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when
orig_var <- value <- age_weeks <- . <- NULL # Gestational age in weeks
Expand Down Expand Up @@ -415,7 +415,7 @@ du.reshape.generate.weekly.repeated <- function(data, dict_kind) {
#' @importFrom tidyr gather
#'
#' @noRd
du.reshape.generate.trimesterly.repeated <- function(data, dict_kind) {
du.reshape.long.generate.trimesterly.repeated <- function(data, dict_kind) {
# workaround to avoid glpobal variable warnings, check:
# https://stackoverflow.com/questions/9439256/how-can-i-handle-r-cmd-check-no-visible-binding-for-global-variable-notes-when
orig_var <- value <- age_trimester <- . <- NULL
Expand Down
Loading