tests/testthat/test-CheckVerbatimEndDate.R

getTestData <- function() {
  ingredient_drug_records <- tibble::tibble(
    drug_exposure_id = c("1", "2", "3", "4", "5"),
    person_id = c("1", "2", "3", "4", "5"),
    drug_concept_id = c("1", "4", "2", "2", "3"),
    drug = c("x", "iv", "xx", "xx", "xxx"),
    ingredient_concept_id = c("1", "1", "2", "2", "3"),
    ingredient = c("a", "a", "b", "b", "c"),
    drug_exposure_end_date = as.Date(c("2016-01-02", "2017-01-03", "2018-01-04", "2019-01-05", "2020-01-06")),
    verbatim_end_date = as.Date(c(NA, "2017-01-03", "2018-05-04", "2019-01-05", "2020-11-06"))
  )

  mockDrugExposure(ingredient_drug_records = ingredient_drug_records)
}

test_that("checkVerbatimEndDate overall", {
  testData <- getTestData()
  result <- checkVerbatimEndDate(testData, "ingredient_drug_records",
    byConcept = FALSE,
    sampleSize = 100
  ) %>%
    dplyr::collect() %>%
    dplyr::mutate(ingredient_concept_id = as.numeric(.data$ingredient_concept_id)) %>%
    dplyr::arrange(.data$ingredient_concept_id, dplyr::desc(.data$n_records))


  expect_equal(nrow(result), 3)
  expect_equal(result$n_records, c(2, 2, 1))
  expect_equal(result$n_not_missing_verbatim_end_date, c(1, 2, 1))
  expect_equal(result$n_verbatim_end_date_and_drug_exposure_end_date_differ, c(0, 1, 1))
  expect_equal(result$proportion_missing_verbatim_end_date, c(0.2, 0.0, 0.0))
  expect_equal(result$proportion_not_missing_verbatim_end_date, c(0.2, 0.4, 0.2))
  expect_equal(result$proportion_verbatim_end_date_equal_to_drug_exposure_end_date, c(0.2, 0.2, 0.0))
  expect_equal(result$proportion_verbatim_end_date_and_drug_exposure_end_date_differ, c(0.0, 0.2, 0.2))
  expect_equal(result$minimum_verbatim_end_date, as.Date(c("2017-01-03", "2018-05-04", "2020-11-06")))
  expect_equal(result$maximum_verbatim_end_date, as.Date(c("2017-01-03", "2019-01-05", "2020-11-06")))

  DBI::dbDisconnect(attr(testData, "dbcon"), shutdown = TRUE)
})

test_that("checkVerbatimEndDate byConcept", {
  testData <- getTestData()

  result <- checkVerbatimEndDate(testData, "ingredient_drug_records",
    byConcept = TRUE,
    sampleSize = 100
  ) %>%
    dplyr::collect() %>%
    dplyr::mutate(ingredient_concept_id = as.numeric(.data$ingredient_concept_id)) %>%
    dplyr::arrange(.data$ingredient_concept_id, dplyr::desc(.data$n_records))


  expect_equal(nrow(result), 4)
  expect_equal(result$n_records, c(1, 1, 2, 1))
  expect_equal(result$n_verbatim_end_date_and_drug_exposure_end_date_differ, c(0, 0, 1, 1))
  expect_equal(sum(result$n_records), sum(result$n_not_missing_verbatim_end_date) +
    sum(result$n_missing_verbatim_end_date))
  expect_equal(sum(result$n_records), sum(result$n_verbatim_end_date_and_drug_exposure_end_date_differ) +
    sum(result$n_verbatim_end_date_and_drug_exposure_end_date_differ) +
    sum(result$n_missing_verbatim_end_date))


  DBI::dbDisconnect(attr(testData, "dbcon"), shutdown = TRUE)
})

Try the DrugExposureDiagnostics package in your browser

Any scripts or data that you put into this service are public.

DrugExposureDiagnostics documentation built on Sept. 16, 2025, 9:11 a.m.