From d8b28181fc6406318f2c97b4b6105d67c058b8c9 Mon Sep 17 00:00:00 2001 From: Thomas OBADIA <thomas.obadia@pasteur.fr> Date: Mon, 2 Jun 2025 10:57:48 +0200 Subject: [PATCH] Refactor loading of R environment content (global variables and functions) so that all environment from 00_COMMON is always sourced and available in other projects. --- 00_COMMON/COMMON_00_R_environment.R | 42 ++++++---- 01_INVENTORY/INVENTORY_00_R_environment.R | 4 +- .../OBSERVATIONAL_00_R_environment.R | 2 +- .../INTERVENTIONAL_M0_00_R_environment.R | 83 ++++++++++++++++++- 4 files changed, 110 insertions(+), 21 deletions(-) diff --git a/00_COMMON/COMMON_00_R_environment.R b/00_COMMON/COMMON_00_R_environment.R index 4512b79..0b74807 100644 --- a/00_COMMON/COMMON_00_R_environment.R +++ b/00_COMMON/COMMON_00_R_environment.R @@ -24,6 +24,15 @@ require(ggthemes) +###################################################################### +### CUSTOM R ENVIRONMENT & FUNCTIONS +###################################################################### +source("./00_COMMON/COMMON_00_R_functions.R") + + + + + ###################################################################### ### RUN TEST CODE ###################################################################### @@ -48,7 +57,7 @@ PVSTATEM_STUDY_TITLE <- "PvSTATEM" ###################################################################### -### PARTICIPANT IDENTIFIER +### PARTICIPANT & SAMPLE IDENTIFIERS ###################################################################### ## Global variable storing country codes (named vector) # - E: Ethiopia @@ -71,21 +80,6 @@ PVSTATEM_TIMEPOINT <- c("Observational" = "OB", "Evaluation round 2" = "D", "Passive Case Detection" = "PCD") -## Global variable storing sample type codes (named vector) -PVSTATEM_SAMPLE_TYPE_CODE <- c("Case Report Form" = "CRF", - "Patient Information Sheet" = "PIS", - "Sampling Sheet" = "SAS", - "G6PD results" = "G6P", - "Heparin tube" = "HEP", - "EDTA" = "EDT", - "Dried Blood Spot" = "DBS", - "Bloodsmear" = "BLS", - "Rapid Diagnostic Test" = "RDT", - "Serum" = "SER", - "Red Blood Cell pellet" = "RBC", - "Cryo stabilat" = "CRY", - "Additional spare" = "SPA") - ## Global variable storing the possible values for aliquot number (vector) PVSTATEM_ALIQUOT_RANGE <- 1:3 @@ -95,17 +89,31 @@ PVSTATEM_LABELS_PER_ROW <- 7 PVSTATEM_LABELS_PER_COL <- 17 PVSTATEM_LABELS_PER_SHEET <- PVSTATEM_LABELS_PER_ROW * PVSTATEM_LABELS_PER_COL + + + + +###################################################################### +### RANDOMIZATION LIST +###################################################################### ## Global variables storing cluster randomization list +PVSTATEM_RANDOMIZATION_E <- NULL PVSTATEM_RANDOMIZATION_M <- read.table(file = "./00_COMMON/resources/randomisation.csv", header = TRUE, dec = ".", sep = ",") %>% select(-X) %>% rename(cluster = cluster.ID) %>% - mutate(cluster = gsub(pattern = "M", + mutate(country = "M", + cluster = gsub(pattern = "M", replacement = "", x = cluster)) %>% mutate(cluster = sprintf(cluster, fmt = "%02s")) %>% mutate(n_enroll_max = case_when(randomisation == 0 ~ 255, randomisation == 1 ~ ceiling(size * 1.10), .default = NA)) + + + +PVSTATEM_RANDOMIZATION <- PVSTATEM_RANDOMIZATION_E %>% + bind_rows(PVSTATEM_RANDOMIZATION_M) diff --git a/01_INVENTORY/INVENTORY_00_R_environment.R b/01_INVENTORY/INVENTORY_00_R_environment.R index e559d2d..d500368 100644 --- a/01_INVENTORY/INVENTORY_00_R_environment.R +++ b/01_INVENTORY/INVENTORY_00_R_environment.R @@ -28,9 +28,9 @@ require(ggmap) # More general set of methods ###################################################################### -### CUSTOM R FUNCTIONS +### CUSTOM R ENVIRONMENT & FUNCTIONS ###################################################################### -source("./00_COMMON/COMMON_00_R_functions.R") +source("./00_COMMON/COMMON_00_R_environment.R") source("./01_INVENTORY/INVENTORY_00_R_functions.R") diff --git a/02_OBSERVATIONAL/OBSERVATIONAL_00_R_environment.R b/02_OBSERVATIONAL/OBSERVATIONAL_00_R_environment.R index 96a07bb..222a8b2 100644 --- a/02_OBSERVATIONAL/OBSERVATIONAL_00_R_environment.R +++ b/02_OBSERVATIONAL/OBSERVATIONAL_00_R_environment.R @@ -30,7 +30,7 @@ require(tidyverse) # Data manipulation made easy ###################################################################### ### CUSTOM R FUNCTIONS ###################################################################### -source("./00_COMMON/COMMON_00_R_functions.R") +source("./00_COMMON/COMMON_00_R_environment.R") diff --git a/03_INTERVENTIONAL_M0/INTERVENTIONAL_M0_00_R_environment.R b/03_INTERVENTIONAL_M0/INTERVENTIONAL_M0_00_R_environment.R index c542eb5..6dea859 100644 --- a/03_INTERVENTIONAL_M0/INTERVENTIONAL_M0_00_R_environment.R +++ b/03_INTERVENTIONAL_M0/INTERVENTIONAL_M0_00_R_environment.R @@ -30,7 +30,7 @@ require(tidyverse) # Data manipulation made easy ###################################################################### ### CUSTOM R FUNCTIONS ###################################################################### -source("./00_COMMON/COMMON_00_R_functions.R") +source("./00_COMMON/COMMON_00_R_environment.R") source("./03_INTERVENTIONAL_M0/INTERVENTIONAL_M0_00_R_functions.R") @@ -109,3 +109,84 @@ CURATE_DATA_RECALCULATE_AGEY_MADAGASCAR <- FALSE + +###################################################################### +### REDCAP LABELLING +###################################################################### +## Depending on casting functions, results from redcapAPI::exportRecordsTyped() +## may be label-based or raw codes, whever a coding mechanism is involved. +## The following global variables will store both codes and labels to be used as +## a dictionary when checking if a coded data matches an expected category +# Global variable: labeling of country for Ethiopia +REDCAP_LABELS_RADIO_COUNTRY_E <- c("Ethiopia", + "Ethiopie", + "E") + +# Global variable: labeling of country for Madagascar +REDCAP_LABELS_RADIO_COUNTRY_E <- c("Madagascar", + "Madagasikara", + "M") + +# Global variable: labeling of 'Yes' categorical value +REDCAP_LABELS_RADIO_YES <- c(1, + "Yes", + "Oui", + "Eny") + +# Global variable: labeling of 'No' categorical value +REDCAP_LABELS_RADIO_NO <- c(0, + "No", + "Non", + "Tsia") + +# Global variable: labeling of 1/0/0 in Pf/pan RDTs +REDCAP_LABELS_RADIO_RDT_PF_PAN_100 <- c("RDT_M_100", + "100 (Negative)", + "100") + +# Global variable: labeling of 1/1/0 in Pf/pan RDTs +REDCAP_LABELS_RADIO_RDT_PF_PAN_110 <- c("RDT_M_110", + "110 (Non-falciparum)", + "110") + +# Global variable: labeling of 1/0/1 in Pf/pan RDTs +REDCAP_LABELS_RADIO_RDT_PF_PAN_101 <- c("RDT_M_101", + "101 (P. falciparum)", + "101") + +# Global variable: labeling of 1/1/1 in Pf/pan RDTs +REDCAP_LABELS_RADIO_RDT_PF_PAN_111 <- c("RDT_M_111", + "111 (P. falciparum or mixed)", + "111") + +# Global variable: labeling of 1/0/0 in Pf/Pv RDTs +REDCAP_LABELS_RADIO_RDT_PF_PV_100 <- c("RDT_E_100", + "100 (Negative)", + "100", + "Mihiba") + +# Global variable: labeling of 1/1/0 in Pf/Pv RDTs +REDCAP_LABELS_RADIO_RDT_PF_PV_110 <- c("RDT_E_110", + "110 (P. vivax)", + "110", + "P. vivax") + +# Global variable: labeling of 1/0/1 in Pf/Pv RDTs +REDCAP_LABELS_RADIO_RDT_PF_PV_101 <- c("RDT_E_101", + "101 (P. falciparum)", + "101", + "P. falciparum") + +# Global variable: labeling of 1/1/1 in Pf/Pv RDTs +REDCAP_LABELS_RADIO_RDT_PF_PV_111 <- c("RDT_E_111", + "111 (Mixed)", + "111", + "Mixed") + +# Global variable: labeling of 'Checked' checkboxes +REDCAP_LABELS_CHECKBOX_CHECKED <- c("Checked", + "1") + +# Global variable: labeling of 'Unchecked' checkboxes +REDCAP_LABELS_CHECKBOX_UNCHECKED <- c("Unchecked", + "0") -- GitLab