test_that("summariseChecks works", { resultList <- list() # create input data ingredientConceptIds <- c("1125315", "1139042") ingredients <- c("acetaminophen", "acetylcysteine") resultList$conceptSummary <- data.frame(ingredient = ingredients, ingredient_concept_id = ingredientConceptIds, dose_form = c("injection", NA), n_records = c(123, 299), n_patients = c(123, 200)) resultList$drugRoutesOverall <- data.frame(route_type = c("Route1", "Route2", "Route3"), route_type_id = c(1, 2, 3), n_records = c(1, 2, 5)) resultList$drugTypesOverall <- data.frame(drug_type = c("Type1", "Type2", "Type3"), drug_type_id = c(1, 2, 3), n_records = c(1, 2, 0)) resultList$drugExposureDurationOverall <- data.frame(ingredient_concept_id = ingredientConceptIds, n_negative_days = c(10, 20), proportion_negative_days = c(0.1, 0.2), median_drug_exposure_days = c(5, 6), q05_drug_exposure_days = c(1, 2), q95_drug_exposure_days = c(15, 19)) resultList$drugDose <- data.frame(ingredient_concept_id = c(rep("1125315",12),rep("1139042",12)), ingredient = c(rep("Acetaminophen",12),rep("Acetylcysteine",12)), group_name = c(rep("ingredient_name",24)), strata_name = c(rep(c(rep("overall",6),rep("unit",6)),2)), strata_level = c(rep(c(rep("NA",6),rep("milligram",6)),2)), variable_name = c(rep(c("number_records",rep("daily_dose",5)),4)), estimate_name = c(rep(c("count","count_missing","percentage_missing", "q05","median","q95"),4)), estimate_type = c(rep(c("integer","integer","percentage", "numeric","numeric","numeric"),4)), estimate_value = c(10,5,50,2,6,10,8,2,0.25,1,2,4, 10,1,0.1,2,4,8,5,1,0.2,1,5,10)) resultList$drugQuantity <- data.frame(ingredient_concept_id = ingredientConceptIds, median_drug_exposure_quantity = c(10, 12), q05_drug_exposure_quantity = c(1, 2), q95_drug_exposure_quantity = c(15, 19)) result <- DrugExposureDiagnostics:::summariseChecks(resultList) expect_equal( names(result), c("ingredient", "ingredient_concept_id", "n_records", "n_patients", "proportion_of_records_by_drug_type", "proportion_of_records_by_route_type", "proportion_of_records_with_dose_form", "n_dose_and_missingness", "median_daily_dose_q05_q95", "median_quantity_q05_q95", "median_drug_exposure_days_q05_q95", "proportion_of_records_with_negative_drug_exposure_days")) expect_equal(result$ingredient, ingredients) expect_equal(result$ingredient_concept_id, ingredientConceptIds) expect_equal(result$n_records, c(123, 299)) expect_equal(unique(result$proportion_of_records_by_drug_type), c("Type1 (1, 33.3%);Type2 (2, 66.7%);Type3 (0, 0%)")) expect_equal(unique(result$proportion_of_records_by_route_type), c("Route1 (1, 12.5%);Route2 (2, 25%);Route3 (5, 62.5%)")) expect_equal(result$proportion_of_records_with_dose_form, c("123 (100%)", "0 (0%)")) expect_equal(result$median_daily_dose_q05_q95, c("6 (2-10) [milligram]", "4 (2-8) [milligram]")) expect_equal(result$median_quantity_q05_q95, c("10 (1-15)", "12 (2-19)")) expect_equal(result$median_drug_exposure_days_q05_q95, c("5 (1-15)", "6 (2-19)")) expect_equal(result$proportion_of_records_with_negative_drug_exposure_days, c("10 (10%)", "20 (20%)")) }) test_that("summariseChecks partial inputs: summary, quantity and dose", { resultList <- list() # create input data ingredientConceptIds <- c("1125315", "1139042") ingredients <- c("acetaminophen", "acetylcysteine") resultList$conceptSummary <- data.frame(ingredient = ingredients, ingredient_concept_id = ingredientConceptIds, dose_form = c("injection", NA), n_records = c(123, 299), n_patients = c(123, 200)) resultList$drugDose <- data.frame(ingredient_concept_id = c(rep("1125315",12),rep("1139042",12)), ingredient = c(rep("Acetaminophen",12),rep("Acetylcysteine",12)), group_name = c(rep("ingredient_name",24)), strata_name = c(rep(c(rep("overall",6),rep("unit",6)),2)), strata_level = c(rep(c(rep("NA",6),rep("milligram",6)),2)), variable_name = c(rep(c("number_records",rep("daily_dose",5)),4)), estimate_name = c(rep(c("count","count_missing","percentage_missing", "q05","median","q95"),4)), estimate_type = c(rep(c("integer","integer","percentage", "numeric","numeric","numeric"),4)), estimate_value = c(10,5,50,2,6,10,8,2,0.25,1,2,4, 10,1,0.1,2,4,8,5,1,0.2,1,5,10)) resultList$drugQuantity <- data.frame(ingredient_concept_id = ingredientConceptIds, median_drug_exposure_quantity = c(10, 12), q05_drug_exposure_quantity = c(1, 2), q95_drug_exposure_quantity = c(15, 19)) result <- DrugExposureDiagnostics:::summariseChecks(resultList) expect_equal( names(result), c("ingredient", "ingredient_concept_id", "n_records", "n_patients", "proportion_of_records_with_dose_form", "n_dose_and_missingness", "median_daily_dose_q05_q95", "median_quantity_q05_q95" )) expect_equal(result$ingredient, ingredients) expect_equal(result$ingredient_concept_id, ingredientConceptIds) expect_equal(result$n_records, c(123, 299)) expect_equal(result$proportion_of_records_with_dose_form, c("123 (100%)", "0 (0%)")) expect_equal(result$n_dose_and_missingness, c("10 (5, 50%)", "10 (1, 0.1%)")) expect_equal(result$median_daily_dose_q05_q95, c("6 (2-10) [milligram]", "4 (2-8) [milligram]")) expect_equal(result$median_quantity_q05_q95, c("10 (1-15)", "12 (2-19)")) }) test_that("summariseChecks partial inputs: summary and quantity", { resultList <- list() # create input data ingredientConceptIds <- c("1125315", "1139042") ingredients <- c("acetaminophen", "acetylcysteine") resultList$conceptSummary <- data.frame(ingredient = ingredients, ingredient_concept_id = ingredientConceptIds, dose_form = c("injection", NA), n_records = c(123, 299), n_patients = c(123, 200)) resultList$drugQuantity <- data.frame(ingredient_concept_id = ingredientConceptIds, median_drug_exposure_quantity = c(10, 12), q05_drug_exposure_quantity = c(1, 2), q95_drug_exposure_quantity = c(15, 19)) result <- DrugExposureDiagnostics:::summariseChecks(resultList) expect_equal( names(result), c("ingredient", "ingredient_concept_id", "n_records", "n_patients", "proportion_of_records_with_dose_form", "median_quantity_q05_q95" )) expect_equal(result$ingredient, ingredients) expect_equal(result$ingredient_concept_id, ingredientConceptIds) expect_equal(result$n_records, c(123, 299)) expect_equal(result$proportion_of_records_with_dose_form, c("123 (100%)", "0 (0%)")) }) test_that("summariseChecks empty/wrong inputs", { expect_error(summariseChecks(list())) expect_error(summariseChecks(NULL)) }) test_that("summariseChecks partial inputs with only empty ingredient: summary of missing and quantity and dose", { cdm <- mockDrugExposure() empty_ing <- executeChecks(cdm = cdm, ingredients = c(36854851), checks = c("missing", "quantity", "dose", "diagnosticsSummary")) expect_equal(nrow(empty_ing$diagnosticsSummary), 0) DBI::dbDisconnect(attr(cdm, "dbcon"), shutdown = TRUE) }) test_that("summariseChecks partial inputs with combination of not empty and empty ingredient: summary of missing and quantity and dose", { cdm <- mockDrugExposure() empty_ing <- executeChecks(cdm = cdm, ingredients = c(1125315, 36854851), checks = c("missing", "quantity", "dose", "diagnosticsSummary")) expect_equal(empty_ing$diagnosticsSummary$ingredient, "acetaminophen") expect_equal(nrow(empty_ing$diagnosticsSummary), 1) DBI::dbDisconnect(attr(cdm, "dbcon"), shutdown = TRUE) }) test_that("summariseChecks empty/wrong inputs", { expect_error(summariseChecks(list())) expect_error(summariseChecks(NULL)) })