library(dplyr) library(knitr) library(skimr) library(dataMaid) library(ggplot2) library(extrafont) library(lubridate) library(rlang) library(digest)
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE) options(knitr.table.format = "pipe", knitr.kable.NA = "")
is_india <- Sys.getenv('TIMCI_COUNTRY') == 'India' is_tanzania <- Sys.getenv('TIMCI_COUNTRY') == 'Tanzania' is_kenya <- Sys.getenv('TIMCI_COUNTRY') == 'Kenya' is_senegal <- Sys.getenv('TIMCI_COUNTRY') == 'Senegal' is_ls <- is_kenya | is_senegal is_rct <- is_tanzania | is_india
if (is_senegal) { notice_str <- "" screening_times_str <- "Heures de screening" } else { notice_str <- "" screening_times_str <- "Screening times" }
deidentification_on <- FALSE spa_pid <- Sys.getenv("TIMCI_SPA_PID") qpid <- Sys.getenv("TIMCI_QUAL_PID") cgidi3_fid <- Sys.getenv("TIMCI_QUAL_CGIDI3_FID") start_date <- params$start_date lock_date <- params$lock_date rctls_dir <- params$rctls_dir qualcg_dir <- params$qualcg_dir qualhcp_dir <- params$qualhcp_dir qualkii_dir <- params$qualkii_dir qualos_dir <- params$qualos_dir cost_dir <- params$cost_dir locked_db_dir <- params$locked_db_dir qc_dir <- params$qc_dir research_facilities <- params$research_facilities if (!is.null(params$facility_data)) { facility_data <- params$facility_data facility_data_audit <- params$facility_data_audit raw_drug_data <- params$raw_drug_data raw_day7fu_data <- params$raw_day7fu_data raw_hospit_data <- params$raw_hospit_data raw_day28fu_data <- params$raw_day28fu_data raw_withdrawal_data <- params$raw_withdrawal_data raw_problem_data <- params$raw_problem_data spa_cgei_data <- params$spa_cgei_data spa_fa_data <- params$spa_fa_data spa_hcpi_data <- params$spa_hcpi_data spa_sco_data <- params$spa_sco_data tf_data <- params$tf_data pm_data <- params$pm_data medical_cost_data <- params$medical_cost_data hospital_cost_data <- params$hospital_cost_data cgidi_invitation_data <- params$cgidi_invitation_data cgidi_encryption_data <- params$cgidi_encryption_data cgidi_interview_data <- params$cgidi_interview_data hcpidi_interview_data <- params$hcpidi_interview_data kii_interview_data <- params$kii_interview_data online_survey_data <- params$online_survey_data is_pilot <- params$is_pilot }
################### # Export settings # ################### # Day 0 drug quality check IDs ############################### qc_duplicate_drug <- "DQC_00_1DG_01" qc_manual_edits_drug <- "DQC_00_1DG_02" qc_amox_consistency_drug <- "DQC_00_1DG_03" qc_aclav_consistency_drug <- "DQC_00_1DG_04" qc_metro_consistency_drug <- "DQC_00_1DG_05" qc_ctx_consistency_drug <- "DQC_00_1DG_06" qc_cipro_consistency_drug <- "DQC_00_1DG_07" qc_genta_consistency_drug <- "DQC_00_1DG_08" qc_penig_consistency_drug <- "DQC_00_1DG_09" qc_ceftriaxone_consistency_drug <- "DQC_00_1DG_10" qc_cefixime_consistency_drug <- "DQC_00_1DG_11" qc_ampi_consistency_drug <- "DQC_00_1DG_12" qc_azi_consistency_drug <- "DQC_00_1DG_13" qc_benza_consistency_drug <- "DQC_00_1DG_14" qc_cefadroxil_consistency_drug <- "DQC_00_1DG_15" qc_doxycycline_consistency_drug <- "DQC_00_1DG_16" qc_erythromycin_consistency_drug <- "DQC_00_1DG_17" qc_flucloxacillin_consistency_drug <- "DQC_00_1DG_18" qc_mupirocin_consistency_drug <- "DQC_00_1DG_19" qc_tetracycline_consistency_drug <- "DQC_00_1DG_20" qc_isionazid_consistency_drug <- "DQC_00_1DG_21" qc_rifampicin_consistency_drug <- "DQC_00_1DG_22" qc_RH_consistency_drug <- "DQC_00_1DG_23" qc_RHZE_consistency_drug <- "DQC_00_1DG_24" qc_artesunate_consistency_drug <- "DQC_00_1DG_25" qc_arthemeter_consistency_drug <- "DQC_00_1DG_26" qc_AL_consistency_drug <- "DQC_00_1DG_27" qc_ASAQ_consistency_drug <- "DQC_00_1DG_28" qc_DHAPPQ_consistency_drug <- "DQC_00_1DG_29" qc_primaquine_consistency_drug <- "DQC_00_1DG_30" qc_quinine_consistency_drug <- "DQC_00_1DG_31" qc_noantibio_consistency_drug <- "DQC_00_1DG_32" # Repeat visit check IDs ######################### qc_pids_out_lock_range_repeat <- "DQC_00_3RV_01" qc_nonvalid_repeat <- "DQC_00_3RV_02" qc_nonconsistent_name_repeat <- "DQC_00_3RV_03" qc_visit_before_enrolment <- "DQC_00_3RV_04" # Day 7 quality check IDs ########################## qc_nontimely_submission_day7fu <- "DQC_07_01" qc_nontimely_completion_day7fu <- "DQC_07_02" qc_other_fids_day7fu <- "DQC_07_03" qc_pids_out_lock_range_day7fu <- "DQC_07_04" qc_nonvalid_day7fu <- "DQC_07_05" qc_nonconsistent_name_day7fu <- "DQC_07_06" qc_duplicated_day7fu <- "DQC_07_07" qc_call_before_enrolment_day7fu <- "DQC_07_08" qc_missing_hospit_date_day7fu <- "DQC_07_09" qc_hospit_before_enrolment_day7fu <- "DQC_07_10" qc_missing_death_date_day7fu <- "DQC_07_11" qc_death_before_enrolment_day7fu <- "DQC_07_12" qc_death_before_hospit_day7fu <- "DQC_07_13" # Day 28 quality check IDs ########################### qc_nontimely_submission_day28fu <- "DQC_28_01" qc_nontimely_completion_day28fu <- "DQC_28_02" qc_other_fids_day28fu <- "DQC_28_03" qc_pids_out_lock_range_day28fu <- "DQC_28_04" qc_nonvalid_day28fu <- "DQC_28_05" qc_nonconsistent_name_day28fu <- "DQC_28_06" qc_duplicated_day28fu <- "DQC_28_07" qc_missing_hospit_date_day28fu <- "DQC_28_08" qc_hospit_before_enrolment_day28fu <- "DQC_28_09" qc_missing_death_date_day28fu <- "DQC_28_10" qc_death_before_enrolment_day28fu <- "DQC_28_11" # Withdrawals quality check IDs ################################ qc_nonreconciled_withdrawals_id <- "DQC_WD_01" qc_withdrawal_before_enrolment <- "DQC_WD_02" # SPA quality check IDs ######################## qc_spa_sco_nonvalid_fids <- "DQC_SPO_01" qc_spa_sco_nonvalid_ids <- "DQC_SPO_02" qc_spa_sco_duplicates <- "DQC_SPO_03" qc_spa_sco_incomplete <- "DQC_SPO_04" qc_spa_sco_rx_nonvalid_ids <- "DQC_SPO_05" qc_spa_cgei_nonvalid_ids <- "DQC_SPC_01" qc_spa_hcpi_nonvalid_ids <- "DQC_SPH_01" qc_spa_hcpi_duplicates <- "DQC_SPH_02"
action_alert_no_modification <- "Alert to the study team. No modification of the database." if (is_india) { hospit_value <- 13 } else{ hospit_value <- 1 }
# Plot settings tsize <- 7 tfont <- "Cambria" if (is_senegal) { dbreak_duration <- "5 months" } else { dbreak_duration <- "4 months" } nfacetperrow <- 4 time_break_str <- "4 hours" time_format <- "%H:%M" y_min <- NA y_max <- NA
# Cryptographic settings crypto_algo <- "md5"
\newpage
| Abbreviation | Meaning | |--------------|------------------------------------------------------------| | .CSV | Comma-Separated Value | | DB | DataBase | | LS | Quasi-experimental Pre-Post Study | | ODK | Open Data Toolkit | | PII | Personnally Identifiable Information | | RCT | Randomised Controlled Trial | | SPA | Service Provision Assessment | | TIMCI | Tools for the Integrated Management of Childhood Illnesses |
: List of abbreviations
\newpage
This document describes the data review processes and outputs for the Tools for Integrated Management of Childhood Illness (TIMCI) project.
Data cleaning and coding activities include data de-identification, duplicate management and free text management.
Note that the data collection tools contain a list of in-built range and consistency checks to prevent errors during data manipulation.
Procedures for cleaning and coding quantitative data are developed by the lead data manager at Swiss TPH to ensure consistency across countries.
Data cleaning and coding activities are supervised by the in-country data manager in charge in each country, with possible country-specific additions.
Data quality checks will be run on a daily basis.
At critical junctures of the pragmatic cluster RCT, the research database will be reviewed and cleaned per established procedures, before being locked.
Consistency between the data cleaning procedures in each country will be regularly reviewed.
Each updated version is to be circulated to by the data management team to the research team in each TIMCI country.
\newpage
r if (is_rct) {'Pragmatic cluster Randomised Controlled Trial (RCT)'} else {'Quasi-experimental Pre-Post Study (LS)'}
day7fu_is_not_null <- !is.null(raw_day7fu_data) day7fu_is_not_empty <- timci::is_not_empty(raw_day7fu_data)
day7_out <- timci::format_day7_data(raw_day7fu_data, is_deidentified = FALSE) # Extract all Day 7 follow-up records raw_allday7fu_data <- day7_out[[3]] # Extract successful Day 7 follow-up records only raw_successday7fu_data <- day7_out[[1]]
hospitfu_is_not_null <- !is.null(raw_hospit_data) hospitfu_is_not_empty <- timci::is_not_empty(raw_hospit_data)
day28fu_is_not_null <- !is.null(raw_day28fu_data) day28fu_is_not_empty <- timci::is_not_empty(raw_day28fu_data)
disable <- FALSE
\newpage
end_date <- NULL facility_data_is_not_null <- !is.null(facility_data) facility_data_is_not_empty <- timci::is_not_empty(facility_data) tf_cond <- timci::is_not_empty(tf_data) pm_cond <- FALSE# timci::is_not_empty(pm_data)
spa_start_date <- NULL if (!is.null(spa_sco_data)) { main_spa_sco_data <- spa_sco_data[[1]] main_spa_fa_data <- spa_fa_data[[1]] if (nrow(main_spa_sco_data) > 0) { spa_start_date <- min(main_spa_sco_data$date) spa_week_nb <- ceiling(difftime(as.Date(spa_start_date), as.Date(start_date) - 1,units = "weeks")) if (is_senegal) { cat(paste0("* Début de la collecte SPA : **", spa_start_date, "**")) } else { cat(paste0("* SPA data collection start: **", spa_start_date, "**")) } } }
r spa_start_date
to r Sys.getenv("TIMCI_SPA_Q1_END_DATE")
r Sys.getenv("TIMCI_SPA_Q1_END_DATE")
to r Sys.getenv("TIMCI_SPA_Q2_END_DATE")
r Sys.getenv("TIMCI_SPA_Q2_END_DATE")
to r Sys.getenv("TIMCI_SPA_Q3_END_DATE")
timci::generate_calendar_heatmap2(main_spa_sco_data, date, legendtitle = "Calendar heatmap of SPA submissions")
timci::generate_calendar_heatmap2(tf_data[[1]], date, legendtitle = "Calendar heatmap of time-flow submissions")
\newpage
if (!is.null(pm_data)) { out <- knitr::knit_child('database_export_processmap_sub.Rmd', envir = environment(), quiet = TRUE) cat(out, sep = '\n') }
if (!is.null(tf_data)) { out <- knitr::knit_child('database_export_timeflow_sub.Rmd', envir = environment(), quiet = TRUE) cat(out, sep = '\n') }
\newpage
\newpage
\newpage
df_session <- devtools::session_info(include_base = TRUE)
df_session_platform <- df_session$platform %>% unlist(.) %>% as.data.frame(.) %>% tibble::rownames_to_column(.) colnames(df_session_platform) <- c("Setting", "Value") df_session_platform %>% knitr::kable()
df_session_packages <- df_session$packages[c("loadedversion", "date", "source")] colnames(df_session_packages) <- c("Loaded version", "Date", "Source") df_session_packages %>% knitr::kable()
locked_day0_data <- day0_data locked_allday7fu_data <- allday7fu_data
locked_allday28fu_data <- allday28fu_data # Save locked data to *.rda file to be reused in other rmarkdown documents if needed save(locked_day0_data, locked_allday7fu_data, locked_allday28fu_data, locked_hospit_data, locked_spa_sco_data, locked_spa_hcpi_data, spa_cgei_data, spa_fa_data, file = "timci_locked_data.rda")
# Save locked data to *.rda file to be reused in other rmarkdown documents if needed save(locked_day0_data, locked_allday7fu_data, locked_hospit_data, locked_spa_sco_data, locked_spa_hcpi_data, spa_cgei_data, spa_fa_data, file = "timci_locked_data.rda")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.