From 758e33bce1fe90995ab5987f8be851f03523bc5a Mon Sep 17 00:00:00 2001 From: edward-burn <9583964+edward-burn@users.noreply.github.com> Date: Thu, 17 Oct 2024 21:36:20 +0100 Subject: [PATCH 1/2] a;;pw max age to be Inf fix #358 --- R/requireDemographics.R | 7 ++++--- tests/testthat/test-requireDemographics.R | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/R/requireDemographics.R b/R/requireDemographics.R index 77e227ba..4502ab14 100644 --- a/R/requireDemographics.R +++ b/R/requireDemographics.R @@ -610,10 +610,11 @@ reqDemographicsCohortSet <- function(set, .data$cohort_name )) } - combinations <- combinations |> - dplyr::mutate(min_age = as.integer(sub("_.*", "", .data$age_range)), max_age = as.integer(sub(".*_", "", .data$age_range))) |> - dplyr::mutate(age_range = stringr::str_replace(.data$age_range, "_999", "_Inf")) |> + dplyr::mutate(min_age = as.integer(sub("_.*", "", .data$age_range)), + max_age = sub(".*_", "", .data$age_range)) |> + dplyr::mutate(max_age = stringr::str_replace(.data$max_age, "Inf", "999")) |> + dplyr::mutate(max_age = as.integer(.data$max_age)) |> dplyr::select(!c("group_id")) # new cohort set diff --git a/tests/testthat/test-requireDemographics.R b/tests/testthat/test-requireDemographics.R index 53d303cc..a56cbdb1 100644 --- a/tests/testthat/test-requireDemographics.R +++ b/tests/testthat/test-requireDemographics.R @@ -521,3 +521,25 @@ test_that("requireInteractions", { ) PatientProfiles::mockDisconnect(cdm) }) + +test_that("Inf age", { + + testthat::skip_on_cran() + cdm_local <- omock::mockCdmReference() |> + omock::mockPerson(n = 3,seed = 1) |> + omock::mockObservationPeriod(seed = 1) |> + omock::mockCohort(numberCohorts = 3, seed = 4) + # to remove in new omock + cdm_local$person <- cdm_local$person |> + dplyr::mutate(dplyr::across(dplyr::ends_with("of_birth"), ~ as.numeric(.x))) + cdm <- cdm_local |> copyCdm() + + expect_no_error(cdm$cohort1 <- cdm$cohort |> + requireDemographics(ageRange = c(0, Inf), + name = "cohort1")) + expect_no_error(cdm$cohort2 <-cdm$cohort |> + requireDemographics(ageRange = list(c(0, 17), + c(18,Inf)), + name = "cohort2")) + +}) From 8a4200588621315624988e91c86615123bcb133e Mon Sep 17 00:00:00 2001 From: edward-burn <9583964+edward-burn@users.noreply.github.com> Date: Thu, 17 Oct 2024 22:25:26 +0100 Subject: [PATCH 2/2] inf age in trim --- R/trimDemographics.R | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/R/trimDemographics.R b/R/trimDemographics.R index bd60ebd4..16d06d00 100644 --- a/R/trimDemographics.R +++ b/R/trimDemographics.R @@ -42,10 +42,6 @@ trimDemographics <- function(cohort, ids <- settings(cohort)$cohort_definition_id # replace age Inf to avoid potential sql issues - for (j in seq_along(ageRange)) { - ageRange[[j]][is.infinite(ageRange[[j]])] <- as.integer(999) - } - # temp tables tablePrefix <- omopgenerics::tmpPrefix() tmpName <- omopgenerics::uniqueTableName(tablePrefix) @@ -91,6 +87,7 @@ trimDemographics <- function(cohort, minFutureObservation = minFutureObservation, requirementInteractions = TRUE ) + # insert settings cdm <- omopgenerics::insertTable( cdm = cdm, @@ -152,6 +149,11 @@ trimDemographics <- function(cohort, } if (!is.null(ageRange)) { cli::cli_inform(c("Trim age")) + + for (j in seq_along(ageRange)) { + ageRange[[j]][is.infinite(ageRange[[j]])] <- as.integer(999) + } + newCohort <- newCohort %>% dplyr::mutate(!!!datesAgeRange(ageRange)) %>% dplyr::mutate(