Nothing
testthat::test_that("Extract multiple ways and expect equivalence. Testing add_to_database and cprd_extract", {
###
### Attempt 1
### Open connection
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Add observation and drugissue to database manually
## Obs
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_observation_001.txt", package = "rcprd"),
filetype = "observation", nrows = -1, select = NULL, subset_patids = c(1,3,4,6), use_set = FALSE, db = aurum_extract, overwrite = TRUE)
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_observation_002.txt", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6), db = aurum_extract, append = TRUE)
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_observation_003.txt", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6), db = aurum_extract, append = TRUE)
## Drugissue
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_drugissue_001.txt", package = "rcprd"),
filetype = "drugissue", nrows = -1, select = NULL, subset_patids = c(1,3,4,6), use_set = FALSE, aurum_extract, overwrite = TRUE)
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_drugissue_002.txt", package = "rcprd"),
filetype = "drugissue", nrows = -1, select = NULL, subset_patids = c(1,3,4,6), use_set = FALSE, aurum_extract, append = TRUE)
add_to_database(filepath = system.file("aurum_data", "aurum_allpatid_set1_extract_drugissue_003.txt", package = "rcprd"),
filetype = "drugissue", nrows = -1, select = NULL, subset_patids = c(1,3,4,6), use_set = FALSE, aurum_extract, append = TRUE)
### Save output
obs1 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM observation')
drugissue1 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM drugissue')
testthat::expect_equal(RSQLite::dbListTables(aurum_extract), c("drugissue", "observation"))
### Disconnect
RSQLite::dbDisconnect(aurum_extract)
###
### Attempt 2
### Reconnect
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Extract data using cprd_Extract
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6), use_set = FALSE)
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "drugissue", subset_patids = c(1,3,4,6), use_set = FALSE)
### Save output
obs2 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM observation')
drugissue2 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM drugissue')
testthat::expect_equal(RSQLite::dbListTables(aurum_extract), c("drugissue", "observation"))
### Disconnect
RSQLite::dbDisconnect(aurum_extract)
###
### Attempt 3
### Reconnect
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Define pat
pat <- extract_txt_pat(system.file("aurum_data", "aurum_allpatid_set1_extract_patient_001.txt", package = "rcprd"), set = TRUE)
pat <- subset(pat, patid %in% c(1,3,4,6))
### Add observation files
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "observation", nrows = -1, select = NULL, subset_patids = pat, use_set = TRUE)
### Add drugissue files
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "drugissue", nrows = -1, select = NULL, subset_patids = pat, use_set = TRUE)
### Save output
obs3 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM observation')
drugissue3 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM drugissue')
testthat::expect_equal(RSQLite::dbListTables(aurum_extract), c("drugissue", "observation"))
### Disconnect
RSQLite::dbDisconnect(aurum_extract)
###
### Attempt 4 (manually define str_match and extract_txt_func)
### Reconnect
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Extract data using cprd_Extract
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6),
extract_txt_func = extract_txt_obs, str_match = "observation", use_set = FALSE)
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "drugissue", subset_patids = c(1,3,4,6),
extract_txt_func = extract_txt_drug, str_match = "drugissue", use_set = FALSE)
### Save output
obs4 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM observation')
drugissue4 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM drugissue')
testthat::expect_equal(RSQLite::dbListTables(aurum_extract), c("drugissue", "observation"))
### Disconnect
RSQLite::dbDisconnect(aurum_extract)
###
### Attempt 5 (manually define str_match and tablename)
### Reconnect
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Extract data using cprd_Extract
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6),
str_match = "observation", tablename = "scrambled", use_set = FALSE)
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "drugissue", subset_patids = c(1,3,4,6),
str_match = "drugissue", tablename = "eggs", use_set = FALSE)
### Save output
obs5 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM scrambled')
drugissue5 <- RSQLite::dbGetQuery(aurum_extract, 'SELECT * FROM eggs')
testthat::expect_equal(RSQLite::dbListTables(aurum_extract), c("drugissue", "eggs", "observation", "scrambled"))
### Disconnect
RSQLite::dbDisconnect(aurum_extract)
### Test for equivalence between extracts
testthat::expect_equal(obs1, obs2)
testthat::expect_equal(obs1, obs3)
testthat::expect_equal(obs1, obs4)
testthat::expect_equal(obs1, obs5)
testthat::expect_equal(drugissue1, drugissue2)
testthat::expect_equal(drugissue1, drugissue3)
testthat::expect_equal(drugissue1, drugissue4)
testthat::expect_equal(drugissue1, drugissue5)
###
### Attempt 6 (expect an error due to no filenames)
### Reconnect
aurum_extract <- connect_database(file.path(tempdir(), "temp.sqlite"))
### Extract data using cprd_Extract
testthat::expect_error(
cprd_extract(aurum_extract,
filepath = system.file("aurum_data", package = "rcprd"),
filetype = "observation", subset_patids = c(1,3,4,6),
str_match = "eggs", use_set = FALSE))
## clean up
RSQLite::dbDisconnect(aurum_extract)
unlink(file.path(tempdir(), "temp.sqlite"))
})
###
### Tests for db queries
###
testthat::test_that("Test low-level db query functions", {
### Currently empty as thinking lots of these will be covered by the extract variable functions
### Add here later if some functionaliy is missing
})
###
### Tests for creating patient file
###
testthat::test_that("Test creation of cohort", {
### Create a number of different ways
cohort1 <- extract_cohort(filepath = system.file("aurum_data", package = "rcprd"))
testthat::expect_equal(cohort1$patid, as.character(1:12))
testthat::expect_equal(nrow(cohort1), 12)
testthat::expect_equal(ncol(cohort1), 12)
### Create a number of different ways
cohort2 <- extract_cohort(filepath = system.file("aurum_data", package = "rcprd"),
set = TRUE)
testthat::expect_equal(cohort2$patid, as.character(1:12))
testthat::expect_true("set" %in% colnames(cohort2))
testthat::expect_equal(nrow(cohort2), 12)
testthat::expect_equal(ncol(cohort2), 13)
### Create a number of different ways
cohort3 <- extract_cohort(filepath = system.file("aurum_data", package = "rcprd"),
patids = as.character(c(1,2,3)),
set = TRUE)
testthat::expect_equal(cohort3$patid, as.character(1:3))
testthat::expect_true("set" %in% colnames(cohort3))
testthat::expect_equal(nrow(cohort3), 3)
testthat::expect_equal(ncol(cohort3), 13)
### Create a number of different ways
cohort4 <- extract_cohort(filepath = system.file("aurum_data", package = "rcprd"),
patids = as.character(c(1,2,3)),
select = c("patid", "yob"))
testthat::expect_equal(cohort4$patid, as.character(1:3))
testthat::expect_equal(nrow(cohort4), 3)
testthat::expect_equal(ncol(cohort4), 2)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.