diff --git a/DESCRIPTION b/DESCRIPTION index 726222c..b30618d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: ablanor Title: AblaNor- Rapporteket -Version: 1.3.1 +Version: 1.3.2 Authors@R: c( person(given = "Kristina", family = "Skaare", diff --git a/NAMESPACE b/NAMESPACE index 82c7331..7bf8b6c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -13,11 +13,8 @@ export(getBasereg) export(getBaseregData) export(getBaseregPros) export(getBaseregProsData) -export(getBaseregProsFollowup0) export(getBaseregProsFollowup0Data) -export(getBaseregProsFollowup1) export(getBaseregProsFollowup1Data) -export(getBaseregProsFollowup5) export(getBaseregProsFollowup5Data) export(getBaseregProsHendelseData) export(getDataDump) diff --git a/NEWS.md b/NEWS.md index ae2fb85..963fae6 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# ablanor 1.3.2 +Fjerne egne getData for sammenstilte skjemaer i utforsker. All +databehandling skjer nå i getPrep funksjonene. Lagt til flere variabler fra +basis og prosedyreskjemaet. Enklere å legge til/fjerne variabler. + + # ablanor 1.3.1 Sammenstille prosedyreskjema med Eproms ved basis, 1 år og 5 år, samt hendelser. svarprosent. diff --git a/R/getData.R b/R/getData.R index cd4edb8..c24f835 100644 --- a/R/getData.R +++ b/R/getData.R @@ -38,7 +38,6 @@ #' getMce #' getRand12 #' getFollowupBasis -#' getFollowupOneYr #' getFollowupFiveYr #' getGkv #' getProms @@ -47,8 +46,6 @@ #' getFriendlycentre #' getMcepatientdata #' getBaseregPros -#' getBaseregProsFollowup1 -#' getBaseregProsFollowup0 #' getLatestEntry #' getNameReshId #' getHospitalName @@ -793,575 +790,6 @@ getBaseregPros <- function(registryName, -#' @rdname getDataAblanor -#' @export -getBaseregProsFollowup1 <- function(registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, ...){ - - # PROS + BASEREG sammen - # proms, - # Mce (type = 9), patientid - # patientlist - # followup - if (is.null(fromDate)) { - fromDate <- as.Date("1900-01-01") - } - if (is.null(toDate)) { - toDate <- ablanor::getLatestEntry(registryName) - } - condition <- paste0(" WHERE pros.DATO_PROS >= '", fromDate, - "' AND pros.DATO_PROS <= '", toDate, "'", - " AND pros.DATO_PROS IS NOT NULL") - - - condition_followup <- "" - - if (userRole != "SC") { - condition_followup <- paste0(" AND mce.CENTREID = '", reshId, "'") - condition <- paste0(condition, " AND pros.CENTREID = '", reshId, "'") - } - - - - # BASEREG + PROSEDYRE + PASIENTID + PASIENTINFO - # (kun dersom prosedyredato finnes) - query_basePros <- paste0( - "SELECT pros.MCEID, - pros.CENTREID, - pros.FORLOPSTYPE, - pros.DATO_PROS, - - mce.PATIENT_ID, - mce.MCETYPE, - mce.HAS_FOLLOWUP, - - patientlist.ID, - patientlist.BIRTH_DATE, - patientlist.GENDER, - patientlist.DECEASED, - patientlist.DECEASED_DATE, - patientlist.SSN_TYPE, - patientlist.SSNSUBTYPE - - FROM pros - - LEFT JOIN mce ON - pros.MCEID = mce.MCEID AND - pros.CENTREID = mce.CENTREID - LEFT JOIN patientlist ON - mce.PATIENT_ID = patientlist.ID AND - mce.CENTREID = patientlist.CENTREID" - , - condition, - " AND pros.FORLOPSTYPE IS NOT NULL ") - - - - query_followup <- paste0( - " SELECT mce.MCEID, - mce.CENTREID, - mce.MCETYPE, - mce.PATIENT_ID, - mce.PARENTMCEID, - mce.TSCREATED, - - followup.DATO_FOLLOWUP, - followup.COMPLETE, - followup.INCOMPLETE_REASON, - followup.Q1, - followup.Q2, - followup.Q3, - followup.Q4, - followup.Q5, - followup.Q5_BURN_FREEZE, - followup.Q5_PACEMAKER, - followup.Q5_ELECTROCONVERSION, - followup.Q5_OTHER, - followup.Q5_OTHER_SPECIFY, - followup.Q6, - followup.Q6_REGULAR_EKG, - followup.Q6_24_HOUR_EKG, - followup.Q6_PACEMAKER, - followup.Q6_PULSE_WATCH, - followup.Q6_OTHER, - followup.Q6_OTHER_SPECIFY, - followup.Q7, - followup.Q7_STROKE, - followup.Q7_BLOCK, - followup.Q7_OPERATION, - followup.Q7_PACEMAKER, - followup.Q7_OTHER, - followup.Q7_OTHER_SPECIFY, - followup.STATUS - FROM mce - LEFT JOIN followup ON - mce.MCEID = followup.MCEID - WHERE mce.MCETYPE = 9 ", - condition_followup) - - query_proms <- "SELECT MCEID, - REGISTRATION_TYPE, - TSSENDT, - EXPIRY_DATE, - REMINDER_DATE, - STATUS, - FORM_ORDER_STATUS_ERROR_CODE - FROM proms - WHERE REGISTRATION_TYPE = 'Followup' " - - - - query_rand12 <- "SELECT MCEID, - FOLLOWUP_PARENT_TYPE, - DATO_RAND12, - RAND_1, - RAND_2A, - RAND_2B, - RAND_3A, - RAND_3B, - RAND_4A, - RAND_4B, - RAND_5, - RAND_6A, - RAND_6B, - RAND_6C, - RAND_7 - FROM rand12 - WHERE COMPLETE = 1 - AND (FOLLOWUP_PARENT_TYPE = 9)" - - - if (singleRow) { - msg <- "Query single row data for 1-year followup" - query_followup <- paste0(query_followup, "\nLIMIT\n 1;") - query_basePros <- paste0(query_basePros, "\nLIMIT\n 1;") - query_proms <- paste0(query_proms, "\nLIMIT\n 1;") - query_rand12 <- paste0(query_rand12, "\nLIMIT\n 1;") - } else { - msg <- "Query data for 1-year followup" - query_followup <- paste0(query_followup, ";") - query_basePros <- paste0(query_basePros, ";") - query_proms <- paste0(query_proms, ";") - query_rand12 <- paste0(query_rand12, ";") - } - - if ("session" %in% names(list(...))) { - # nocov start - rapbase::repLogger(session = list(...)[["session"]], msg = msg) - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - # nocov end - } else { - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - } - - - list(d_baseregPat = d_baseregPat, - d_followup = d_followup, - d_proms = d_proms, - d_rand12 = d_rand12) - -} - - - - - - -#' @rdname getDataAblanor -#' @export -getBaseregProsFollowup0 <- function(registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, ...){ - - # PROS + BASEREG sammen - # proms, - # Mce (type = 7), patientid - # patientlist - # followup - if (is.null(fromDate)) { - fromDate <- as.Date("1900-01-01") - } - if (is.null(toDate)) { - toDate <- ablanor::getLatestEntry(registryName) - } - condition <- paste0(" WHERE pros.DATO_PROS >= '", fromDate, - "' AND pros.DATO_PROS <= '", toDate, "'", - " AND pros.DATO_PROS IS NOT NULL") - - - condition_followup <- "" - - if (userRole != "SC") { - condition_followup <- paste0(" AND mce.CENTREID = '", reshId, "'") - condition <- paste0(condition, " AND pros.CENTREID = '", reshId, "'") - } - - - - # BASEREG + PROSEDYRE + PASIENTID + PASIENTINFO - # (kun dersom prosedyredato finnes) - query_basePros <- paste0( - "SELECT pros.MCEID, - pros.CENTREID, - pros.FORLOPSTYPE, - pros.DATO_PROS, - pros.PROS_VARIGHET, - pros.RTG_TID, - pros.ABLA_VARIGHET, - - mce.PATIENT_ID, - mce.MCETYPE, - mce.HAS_BASISFOLLOWUP, - - patientlist.ID, - patientlist.BIRTH_DATE, - patientlist.GENDER, - patientlist.DECEASED, - patientlist.DECEASED_DATE, - patientlist.SSN_TYPE, - patientlist.SSNSUBTYPE - - FROM pros - LEFT JOIN mce ON - pros.MCEID = mce.MCEID AND - pros.CENTREID = mce.CENTREID - LEFT JOIN patientlist ON - mce.PATIENT_ID = patientlist.ID AND - mce.CENTREID = patientlist.CENTREID" - , - condition, - " AND pros.FORLOPSTYPE IS NOT NULL ") - - - - query_followup <- paste0( - " SELECT mce.MCEID, - mce.CENTREID, - mce.MCETYPE, - mce.PATIENT_ID, - mce.PARENTMCEID, - mce.TSCREATED, - - basisfollowup.DATO_FOLLOWUP, - basisfollowup.COMPLETE, - basisfollowup.INCOMPLETE_REASON, - basisfollowup.Q1, - basisfollowup.Q2, - basisfollowup.Q3, - basisfollowup.Q4, - basisfollowup.Q5, - basisfollowup.Q5_BURN_FREEZE, - basisfollowup.Q5_PACEMAKER, - basisfollowup.Q5_ELECTROCONVERSION, - basisfollowup.Q5_OTHER, - basisfollowup.Q5_OTHER_SPECIFY, - basisfollowup.Q6, - basisfollowup.Q6_REGULAR_EKG, - basisfollowup.Q6_24_HOUR_EKG, - basisfollowup.Q6_PACEMAKER, - basisfollowup.Q6_PULSE_WATCH, - basisfollowup.Q6_OTHER, - basisfollowup.Q6_OTHER_SPECIFY, - basisfollowup.STATUS - FROM mce - LEFT JOIN basisfollowup ON - mce.MCEID = basisfollowup.MCEID - WHERE mce.MCETYPE = 7 ", - condition_followup) - - query_proms <- "SELECT MCEID, - REGISTRATION_TYPE, - TSSENDT, - EXPIRY_DATE, - REMINDER_DATE, - STATUS, - FORM_ORDER_STATUS_ERROR_CODE - FROM proms - WHERE REGISTRATION_TYPE = 'Basisfollowup' " - - query_gkv <- "SELECT MCEID, - DATO_GKV, - GKV_1, - GKV_2, - GKV_3, - GKV_4, - GKV_5, - GKV_6, - GKV_7, - GKV_8, - GKV_9, - GKV_10, - GKV_11, - GKV_12 - FROM gkv - WHERE COMPLETE = 1 AND FORM_COMPLETED_VIA_PROMS = 1" - - - query_rand12 <- "SELECT MCEID, - FOLLOWUP_PARENT_TYPE, - DATO_RAND12, - RAND_1, - RAND_2A, - RAND_2B, - RAND_3A, - RAND_3B, - RAND_4A, - RAND_4B, - RAND_5, - RAND_6A, - RAND_6B, - RAND_6C, - RAND_7 - FROM rand12 - WHERE COMPLETE = 1 - AND (FOLLOWUP_PARENT_TYPE = 1 - OR FOLLOWUP_PARENT_TYPE = 2 - OR FOLLOWUP_PARENT_TYPE = 3 - OR FOLLOWUP_PARENT_TYPE = 4 - OR FOLLOWUP_PARENT_TYPE = 7)" - - - if (singleRow) { - msg <- "Query single row data for basis followup" - query_followup <- paste0(query_followup, "\nLIMIT\n 1;") - query_basePros <- paste0(query_basePros, "\nLIMIT\n 1;") - query_proms <- paste0(query_proms, "\nLIMIT\n 1;") - query_gkv <- paste0(query_gkv, "\nLIMIT\n 1;") - query_rand12 <- paste0(query_rand12, "\nLIMIT\n 1;") - - } else { - msg <- "Query data for basis followup" - query_followup <- paste0(query_followup, ";") - query_basePros <- paste0(query_basePros, ";") - query_proms <- paste0(query_proms, ";") - query_gkv <- paste0(query_gkv, ";") - query_rand12 <- paste0(query_rand12, ";") - } - - if ("session" %in% names(list(...))) { - # nocov start - rapbase::repLogger(session = list(...)[["session"]], msg = msg) - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_gkv <- rapbase::loadRegData(registryName , query_gkv) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - # nocov end - } else { - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_gkv <- rapbase::loadRegData(registryName , query_gkv) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - } - - - list(d_baseregPat = d_baseregPat, - d_followup = d_followup, - d_proms = d_proms, - d_gkv = d_gkv, - d_rand12 = d_rand12) - -} - - - - -#' @rdname getDataAblanor -#' @export -getBaseregProsFollowup5 <- function(registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, ...){ - - # PROS + BASEREG sammen - # proms, - # Mce (type = 10), patientid - # patientlist - # followup - if (is.null(fromDate)) { - fromDate <- as.Date("1900-01-01") - } - if (is.null(toDate)) { - toDate <- ablanor::getLatestEntry(registryName) - } - condition <- paste0(" WHERE pros.DATO_PROS >= '", fromDate, - "' AND pros.DATO_PROS <= '", toDate, "'", - " AND pros.DATO_PROS IS NOT NULL") - - - condition_followup <- "" - - if (userRole != "SC") { - condition_followup <- paste0(" AND mce.CENTREID = '", reshId, "'") - condition <- paste0(condition, " AND pros.CENTREID = '", reshId, "'") - } - - - - # BASEREG + PROSEDYRE + PASIENTID + PASIENTINFO - # (kun dersom prosedyredato finnes) - query_basePros <- paste0( - "SELECT pros.MCEID, - pros.CENTREID, - pros.FORLOPSTYPE, - pros.DATO_PROS, - - mce.PATIENT_ID, - mce.MCETYPE, - mce.HAS_FOLLOWUP, - - patientlist.ID, - patientlist.BIRTH_DATE, - patientlist.GENDER, - patientlist.DECEASED, - patientlist.DECEASED_DATE, - patientlist.SSN_TYPE, - patientlist.SSNSUBTYPE - - FROM pros - LEFT JOIN mce ON - pros.MCEID = mce.MCEID AND - pros.CENTREID = mce.CENTREID - LEFT JOIN patientlist ON - mce.PATIENT_ID = patientlist.ID AND - mce.CENTREID = patientlist.CENTREID" - , - condition, - " AND pros.FORLOPSTYPE IS NOT NULL ") - - - - query_followup <- paste0( - " SELECT mce.MCEID, - mce.CENTREID, - mce.MCETYPE, - mce.PATIENT_ID, - mce.PARENTMCEID, - mce.TSCREATED, - - fiveyearfollowup.DATO_FOLLOWUP, - fiveyearfollowup.COMPLETE, - fiveyearfollowup.INCOMPLETE_REASON, - fiveyearfollowup.Q1, - fiveyearfollowup.Q2, - fiveyearfollowup.Q3, - fiveyearfollowup.Q4, - fiveyearfollowup.Q5, - fiveyearfollowup.Q5_BURN_FREEZE, - fiveyearfollowup.Q5_PACEMAKER, - fiveyearfollowup.Q5_ELECTROCONVERSION, - fiveyearfollowup.Q5_OTHER, - fiveyearfollowup.Q5_OTHER_SPECIFY, - fiveyearfollowup.Q6, - fiveyearfollowup.Q6_REGULAR_EKG, - fiveyearfollowup.Q6_24_HOUR_EKG, - fiveyearfollowup.Q6_PACEMAKER, - fiveyearfollowup.Q6_PULSE_WATCH, - fiveyearfollowup.Q6_OTHER, - fiveyearfollowup.Q6_OTHER_SPECIFY, - fiveyearfollowup.Q7, - fiveyearfollowup.Q7_STROKE, - fiveyearfollowup.Q7_BLOCK, - fiveyearfollowup.Q7_OPERATION, - fiveyearfollowup.Q7_PACEMAKER, - fiveyearfollowup.Q7_OTHER, - fiveyearfollowup.Q7_OTHER_SPECIFY, - fiveyearfollowup.STATUS - FROM mce - LEFT JOIN fiveyearfollowup ON - mce.MCEID = fiveyearfollowup.MCEID - WHERE mce.MCETYPE = 10 ", - condition_followup) - - query_proms <- "SELECT MCEID, - REGISTRATION_TYPE, - TSSENDT, - EXPIRY_DATE, - REMINDER_DATE, - STATUS, - FORM_ORDER_STATUS_ERROR_CODE - FROM proms - WHERE REGISTRATION_TYPE = 'Fiveyearfollowup' " - - query_rand12 <- "SELECT MCEID, - FOLLOWUP_PARENT_TYPE, - DATO_RAND12, - RAND_1, - RAND_2A, - RAND_2B, - RAND_3A, - RAND_3B, - RAND_4A, - RAND_4B, - RAND_5, - RAND_6A, - RAND_6B, - RAND_6C, - RAND_7 - FROM rand12 - WHERE COMPLETE = 1 - AND (FOLLOWUP_PARENT_TYPE = 10)" - - - - - if (singleRow) { - msg <- "Query single row data for 5-year followup" - query_followup <- paste0(query_followup, "\nLIMIT\n 1;") - query_basePros <- paste0(query_basePros, "\nLIMIT\n 1;") - query_proms <- paste0(query_proms, "\nLIMIT\n 1;") - query_rand12 <- paste0(query_rand12, "\nLIMIT\n 1;") - } else { - msg <- "Query data for 5-year followup" - query_followup <- paste0(query_followup, ";") - query_basePros <- paste0(query_basePros, ";") - query_proms <- paste0(query_proms, ";") - query_rand12 <- paste0(query_rand12, ";") - } - - if ("session" %in% names(list(...))) { - # nocov start - rapbase::repLogger(session = list(...)[["session"]], msg = msg) - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup5 <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - # nocov end - } else { - d_baseregPat <- rapbase::loadRegData(registryName, query_basePros) - d_followup5 <- rapbase::loadRegData(registryName , query_followup) - d_proms <- rapbase::loadRegData(registryName , query_proms) - d_rand12 <- rapbase::loadRegData(registryName , query_rand12) - } - - - list(d_baseregPat = d_baseregPat, - d_followup = d_followup5, - d_proms = d_proms, - d_rand12 = d_rand12) - -} - - - - - #' @rdname getDataAblanor #' @export diff --git a/R/getPrepData.R b/R/getPrepData.R index 2e6eba4..640fa9a 100644 --- a/R/getPrepData.R +++ b/R/getPrepData.R @@ -206,7 +206,7 @@ getFollowupBasisData <- function(registryName, # Samme navn som i kodeboken d_followupBasis %<>% - dplyr::rename_with(.data = ., + dplyr::rename_with(.data = ., ~ paste0("FOLLOWUPBASIS_", .x), .cols =c("DATO_FOLLOWUP":"STATUS")) names(d_followupBasis) <- tolower(names(d_followupBasis)) @@ -282,9 +282,9 @@ getFollowupOneYrData <- function(registryName, #' @rdname getPrepDataAblanor #' @export getFollowupFiveYrData <- function(registryName, - singleRow = FALSE, - reshId = NULL, - userRole, ...) { + singleRow = FALSE, + reshId = NULL, + userRole, ...) { . <- "" @@ -398,7 +398,7 @@ getPromsData <- function(registryName, dplyr::mutate( aar_tssendt = as.ordered(lubridate::year(tssendt)), maaned_nr_tssendt = as.ordered(sprintf(fmt = "%02d", - lubridate::month(tssendt))), + lubridate::month(tssendt))), maaned_tssendt = ifelse( test = is.na(aar_tssendt) | is.na(maaned_nr_tssendt), yes = NA, @@ -561,11 +561,11 @@ getBaseregProsData <- function(registryName, #' @rdname getPrepDataAblanor #' @export getBaseregProsHendelseData <- function(registryName, - singleRow = FALSE, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, ...){ + singleRow = FALSE, + reshId = NULL, + userRole, + fromDate = NULL, + toDate = NULL, ...){ d_hendelse <- getHendelse(registryName = registryName, singleRow = singleRow, @@ -575,26 +575,26 @@ getBaseregProsHendelseData <- function(registryName, toDate = toDate)$d_hendelse d_mce <- getMce(registryName = registryName, - singleRow = singleRow, - reshId = reshId, - userRole = userRole, - fromDate = fromDate, - toDate = toDate)$d_mce + singleRow = singleRow, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_mce d_pros <- getPros(registryName = registryName, - singleRow = singleRow, - reshId = reshId, - userRole = userRole, - fromDate = fromDate, - toDate = toDate)$d_pros - - - d_basereg <- getBasereg(registryName = registryName, singleRow = singleRow, reshId = reshId, userRole = userRole, fromDate = fromDate, - toDate = toDate)$d_basereg + toDate = toDate)$d_pros + + + d_basereg <- getBasereg(registryName = registryName, + singleRow = singleRow, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_basereg @@ -652,149 +652,297 @@ getBaseregProsHendelseData <- function(registryName, } #' @rdname getPrepDataAblanor #' @export -getBaseregProsFollowup1Data <- function(registryName, +getBaseregProsFollowup0Data <- function(registryName, singleRow = FALSE, reshId = NULL, userRole, fromDate = NULL, toDate = NULL, ...){ - . <- "" + d_basereg <- ablanor::getBasereg(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_basereg + + d_pros <- ablanor::getPros(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_pros + + d_followupBasis <- ablanor::getFollowupBasis(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_followupBasis + + d_proms <- ablanor::getProms(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_proms - # NB: i SQL må singleRow være FALSE, Ellers fungerer ikke kobling - # av tabeller og utledete variabler. - d <- ablanor::getBaseregProsFollowup1(registryName = registryName, - singleRow = FALSE, - reshId = reshId, - userRole = userRole, - fromDate = fromDate, - toDate = toDate) - d_baseregPat <- d$d_baseregPat - d_followup <- d$d_followup - d_proms <- d$d_proms - d_rand12 <- d$d_rand12 + d_rand12 <- ablanor::getRand12(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_rand12 + d_mce <- ablanor::getMce(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce + d_mcePatientdata <- ablanor::getMcepatientdata( + registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce_patient_data + + + d_patientlist <- ablanor::getPatientlist(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_patientlist + + d_gkv <- ablanor::getGkv(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_gkv + + names(d_followupBasis) <- tolower(names(d_followupBasis)) + names(d_proms) <- tolower(names(d_proms)) + names(d_rand12) <- tolower(names(d_rand12)) + names(d_basereg) <- tolower(names(d_basereg)) + names(d_pros) <- tolower(names(d_pros)) + names(d_mcePatientdata) <- tolower(names(d_mcePatientdata)) + names(d_patientlist) <- tolower(names(d_patientlist)) + names(d_mce) <- tolower(names(d_mce)) + names(d_gkv) <- tolower(names(d_gkv)) - d_followup %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID", - "MCEID" = "PARENTMCEID") %>% - dplyr::rename_with(.data = ., - ~ paste0("FOLLOWUP1_", .x), - .cols =c("TSCREATED":"STATUS")) %>% - dplyr::mutate(eprom_opprettet_1aar = "ja") %>% - dplyr::select(-MCETYPE) + + # 2. PROCESS FOLLOWUP DATA---- + + # A) PROMS - KUN BASISFOLLOWUP d_proms %<>% - dplyr::rename("PROMS_STATUS" = "STATUS", - "MCEID_FOLLOWUP" = "MCEID", - "PROMS_TSSENDT" = "TSSENDT", - "PROMS_EXPIRY_DATE" = "EXPIRY_DATE") %>% - dplyr::mutate(eprom_sendt_1aar = "ja") + dplyr::filter(registration_type == "Basisfollowup") %>% + dplyr::rename("proms_status" = "status", + "mceid_followupbasis" = "mceid", + "proms_tssendt" = "tssendt", + "proms_expiry_date" = "expiry_date") %>% + dplyr::mutate(eprom_sendt_basis = "ja") %>% + dplyr::select(mceid_followupbasis, + proms_tssendt, + proms_status, + proms_expiry_date, + eprom_sendt_basis) + + # B) RAND 12 - KUN BASIS-FOLLOWUP, MANUELL OG ELEKTRONISKE + # RAND12 skjema fra før eprom ved basis, ble samlet inn og plottet manuelt, + # på utskrivelses-skjema (mceid til prosedyren) + d_rand12_manual <- d_rand12 %>% + dplyr::filter(followup_parent_type %in% 1:4, complete == 1) %>% + dplyr::mutate(besvart_rand12 = "manuelt") + + # RAND12 skjema etter før eprom ved basis, + # henger på elekronisk oppfølging (mceid til followup) + d_rand12_eprom <- d_rand12 %>% + dplyr::filter(followup_parent_type %in% 7, complete == 1) %>% + dplyr::mutate(besvart_rand12 = "elektronisk") %>% + dplyr::rename("mceid_followupbasis" = "mceid") %>% + dplyr::left_join(., + d_mce %>% dplyr::transmute(mceid_followupbasis = mceid, + mceid = parentmceid,), + by = "mceid_followupbasis") %>% + dplyr::relocate(mceid, .before = followup_parent_type) - d_rand12 %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID") + # Slå sammen rand12 fra manuell plotting og fra eprom ved basis + # Merk, to pasienter fra 8/11-2023 (innføring eprom basis) har begge deler, + # vi bruker da eprom. + # SAMLET ALLE RAND 12 henger på MCEID + dobbel_rand12 <- dplyr::inner_join( + d_rand12_eprom %>% dplyr::select(mceid), + d_rand12_manual %>% dplyr::select(mceid), + by = "mceid") %>% + dplyr::pull() + d_rand12_basis <- dplyr::bind_rows( + d_rand12_manual %>% dplyr::filter(!mceid %in% dobbel_rand12), + d_rand12_eprom %>% dplyr::select(-mceid_followupbasis)) + + d_rand12_basis %<>% + dplyr::select(mceid, centreid, dato_rand12, besvart_rand12, + rand_1:rand_7) - names(d_followup) <- tolower(names(d_followup)) - names(d_proms) <- tolower(names(d_proms)) - names(d_baseregPat) <- tolower(names(d_baseregPat)) - names(d_rand12) <- tolower(names(d_rand12)) + # GKV + d_gkv %<>% + dplyr::filter(complete == 1 & form_completed_via_proms == 1) %>% + dplyr::select(mceid, centreid, dato_gkv, gkv_1:gkv_12) %>% + dplyr::rename("mceid_followupbasis" = mceid) - # Sjekk at bare en oppfølging per forløp - # (I starten ble flere skjema sendt ut da er det nyeste skjema som gjelder) - followup_data <- d_followup %>% - dplyr::filter(!is.na(followup1_status)) %>% + # Tar utgangspunkt i alle tilgjengelige oppfølgingsdata for 1 aar + # Legger til mceid for followup og proms variabler + followup_dataBasis <- d_followupBasis %>% + dplyr::rename("mceid_followupbasis" = mceid) %>% + dplyr::rename_with(.data = ., + ~ paste0("followupbasis_", .x), + .cols =c("complete":"status", "tscreated")) %>% + dplyr::select(-tsupdated, + -updatedby, + -form_completed_via_proms, + -first_time_closed, + -first_time_closed_by, + -createdby) %>% + dplyr::left_join(., + d_mce %>% + dplyr::filter(mcetype == 7) %>% + dplyr::select(mceid, parentmceid) %>% + dplyr::rename("mceid_followupbasis" = mceid, + "mceid" = parentmceid), + by = "mceid_followupbasis") %>% + dplyr::mutate(eprom_opprettet_basis = "ja") %>% dplyr::left_join(., d_proms, - by = "mceid_followup") + by = "mceid_followupbasis") %>% + + dplyr::left_join(., + d_gkv, + by = c("mceid_followupbasis", "centreid")) %>% + dplyr::relocate("mceid", .before = "mceid_followupbasis") %>% + dplyr::relocate("eprom_opprettet_basis", + "eprom_sendt_basis", + .before = "dato_followup") %>% + dplyr::relocate("proms_tssendt", + "proms_status", + "proms_expiry_date", + .before ="dato_followup" ) + + + + + + + # PROCESS PATIENT - BASEREG AND PROCEDURE DATA ---- + d_pros %<>% + dplyr::select( + mceid:dato_pros, + redo, redo_times, narkose, + pros_varighet, rtg_tid, abla_varighet, + dplyr::contains("aryt_i"), + dplyr::contains("sys_"), + dplyr::contains("abla_strat"), + akutt_suksess, + oppsummering, + dplyr::contains("komp_") + ) + + + d_basereg %<>% dplyr::select(mceid:forskyvning, ehra_sympt) + d_mcePatientdata %<>% + dplyr::select(pid, mceid) %>% + dplyr::rename(patient_id = pid) - # Legg til follow-up i pasient - prosedyre - data - d_ablanor <- d_baseregPat %>% + d_patientlist %<>% + dplyr::select(id, birth_date, gender, + deceased, deceased_date, + ssn_type, ssnsubtype) %>% + dplyr::rename(patient_id = id) + + + # ENDELIG DATASETT MED PASIENT - BASEREG - PROSEDYRE - FOLLOWUPDATA ---- + df <- dplyr::right_join(d_basereg, + d_pros, + by = c("mceid", "centreid")) %>% + dplyr::filter(!is.na(forlopstype))%>% + dplyr::right_join(x = d_mce %>% + dplyr::select(mceid, patient_id, has_basisfollowup), + y = ., + by = "mceid") %>% + dplyr::right_join(x = d_patientlist %>% dplyr::distinct(), + y = ., + by = c("patient_id"), + multiple = "all") %>% dplyr::left_join(., - followup_data, - by = c("mceid", "centreid", "patient_id")) %>% + followup_dataBasis, + by = c("mceid", "centreid")) %>% dplyr::left_join(., - d_rand12, - by = "mceid_followup") + d_rand12_basis, + by = c("mceid", "centreid")) + # Nyeste prosedyredato som har eprom: nyeste_eprom_bestilling <- lubridate::date(max( - d_ablanor %>% - dplyr::filter(!is.na(followup1_status)) %>% + df %>% + dplyr::filter(!is.na(followupbasis_status)) %>% dplyr::pull(dato_pros))) - - d_ablanor %<>% - dplyr::mutate( - - # I Versjon 1.5 ble opprettelse/bestilling av eproms skilt. - # I ny versjon så sjekkes alle kriterier før opprettelse av e-prom - versjon_1_5_eller_mer = ifelse( - test = (dato_pros >= as.Date("2022-11-22", format = "%Y-%m-%d")), - yes = "ja", - no = "nei"), - - # 50 uker etter prosedyredato blir e-proms opprettet - dato_followup_teoretisk_1aar = dato_pros + lubridate::days(351)) %>% - + # KRITERIER FOR EPROM ---- + df %<>% # KRITERIER FOR UTSENDING - # KRITERIE 1. Alder. Under 16 på prosedyretidspunktet. + # KRITERIE 1. Alder. Under 16 p prosedyretidspunktet. ablanor::utlede_alder() %>% ablanor::utlede_aldersklasse() %>% dplyr::mutate(kriterie_alder = ifelse(test = alder >= 16, yes = "ja", no = "nei")) %>% - # KRITERIE 2. Norsk fødselsnummer + # KRITERIE 2. Norsk fdselsnummer dplyr::mutate(kriterie_norsk = ifelse( test = (ssn_type %in% 1 & ssnsubtype %in% c(1, 3)), yes = "ja", no = "nei")) %>% - # KRITERIE 3. Levende 50 uker etter prosedyren - dplyr::mutate(kriterie_levende_1aar = ifelse( + # KRITERIE 3. Levende dagen etter etter prosedyren + dplyr::mutate(kriterie_levende = ifelse( test = (deceased %in% 0 | - (deceased %in% 1 & - deceased_date > dato_followup_teoretisk_1aar)), + (deceased %in% 1 & deceased_date > dato_pros)), yes = "ja", - no = "nei")) + no = "nei")) %>% - # KRITERIE 4: Ingen ny prosedyre av samme type - d_ablanor %<>% - dplyr::arrange(dato_pros) %>% - dplyr::group_by(patient_id, forlopstype) %>% - dplyr::mutate( - antall_pros = dplyr::n(), - dg_til_neste = as.numeric(difftime(dplyr::lead(dato_pros), - dato_pros, - units = "days"))) %>% - dplyr::ungroup() %>% + # KRITERIE 4: Minst en av prosedyrevarighet, rtg_tid eller abla_varighet + # er fylt ut dplyr::mutate( - kriterie_nyeste_1aar = ifelse( - test= (is.na(dg_til_neste) | dg_til_neste > 351), + kriterie_tid = ifelse( + test = (!is.na(pros_varighet) | + !is.na(rtg_tid) | + !is.na(abla_varighet)), yes = "ja", no = "nei"), # KRITERIE ALLE - kriterie_alle_1aar = ifelse( - test = (kriterie_nyeste_1aar %in% "ja" & + kriterie_alle_basis = ifelse( + test = (kriterie_tid %in% "ja" & kriterie_alder %in% "ja" & - kriterie_levende_1aar %in% "ja" & + kriterie_levende %in% "ja" & kriterie_norsk %in% "ja"), yes = "ja", no = "nei")) - - d_ablanor %<>% + # UTLEDE TIDSVARIABLER ----- + df %<>% dplyr::mutate( # Tidsvariabler for prosedyre @@ -804,219 +952,83 @@ getBaseregProsFollowup1Data <- function(registryName, maaned_prosedyre = ifelse( test = (is.na(aar_prosedyre) | is.na(maaned_nr_prosedyre)), yes = NA, - no = paste0(aar_prosedyre, "-", maaned_nr_prosedyre)), - - - # Tidsvariabler for besvart followup - aar_followup_1aar = as.ordered( - x = lubridate::year(followup1_dato_followup)), + no = paste0(aar_prosedyre, "-", maaned_nr_prosedyre))) %>% + dplyr::select(-maaned_nr_prosedyre) %>% + dplyr::arrange(mceid) - # Tidsvariabler for opprettet followup - aar_followup_tscreated_1aar = as.ordered( - x = lubridate::year(followup1_tscreated)), - # Tidsvariabler for bestilt followup - aar_proms_tssendt_1aar = as.ordered( - x = lubridate::year(proms_tssendt)), - dg_pros_opprettet = as.numeric(difftime( - followup1_tscreated, - dato_pros, - units = "days")) - ) %>% - dplyr::select(-maaned_nr_prosedyre) %>% - dplyr::arrange(mceid) %>% + # DATAGRUNNLAG ---- + df %<>% dplyr::mutate( - eprom_kjente_feil_1aar = dplyr::case_when( - - dato_pros == as.Date("2021-09-01", format = "%Y-%m-%d") ~ - "teknisk problem", + eprom_datagrunnlag_basis = factor( + x = dplyr::case_when( - (dato_pros >= as.Date("2020-01-01", format = "%Y-%m-%d") & - dato_pros <= as.Date("2020-01-24", format = "%Y-%m-%d")) ~ - "teknisk problem", + # ALT FOR GAMLE REGISTRERINGER + dato_pros < as.Date("2023-11-08", format = "%Y-%m-%d") ~ + "foer innfoering av eproms basis", - (dato_pros >= as.Date("2022-11-22", format = "%Y-%m-%d") & - dato_pros <= as.Date("2022-11-25", format = "%Y-%m-%d") & - eprom_opprettet_1aar %in% "ja" & - kriterie_alle_1aar %in% "ja" & - is.na(eprom_sendt_1aar))~ - "teknisk problem", + # EPROMS OPPRETTET OG SATT TIL AVDD MED EN GANG + (has_basisfollowup %in% 1 & + eprom_opprettet_basis %in% "ja" & + followupbasis_incomplete_reason %in% 3) ~ + "nei, opprettet satt til doed", - TRUE ~ "nei"), + # EPROMS SENDT UT UTEN AT ALLE KRITERIER VAR OPPFYLT + (has_basisfollowup %in% 1 & + eprom_opprettet_basis %in% "ja" & + kriterie_alle_basis %in% "nei" & + eprom_sendt_basis %in% "ja") ~ + "nei, eprom feilaktig sendt, sjekk kriterier", - eprom_datagrunnlag_1aar = factor( - x = dplyr::case_when( + # NY VERSJON: KONTROLL KRITIER FR OPPRETTELSE + (kriterie_alle_basis %in% "nei" & + is.na(eprom_opprettet_basis)) ~ + "nei, ikke opprettet etter kriteriesjekk", - # ALT FOR NYE REGISTRERINGER - dato_pros > nyeste_eprom_bestilling ~ - "nei, registreringen er for ny", + # NY VERSJON: OPPRETTELES EN DAG, OG BESTILLING INNEN 30 DAGER ETTER + # "BESTILT I DAG, SENDES I MORGEN" + (has_basisfollowup %in% 1 & + eprom_opprettet_basis %in% "ja" & + kriterie_alle_basis %in% "ja" & + is.na(eprom_sendt_basis)) ~ + "nei, eprom venter paa utsendelse", - # ALT FOR GAMLE REGISTRERINGER - dato_pros < as.Date("2020-01-01", format = "%Y-%m-%d") ~ - "nei, før innføring av 1års oppf.", - - dato_pros == as.Date("2020-01-01", format = "%Y-%m-%d") & - is.na(eprom_opprettet_1aar) ~ - "nei, før innføring av 1års oppf.", - - # EPROMS OPPRETTET OG SATT TIL AVDØD MED EN GANG - (has_followup %in% 1 & - eprom_opprettet_1aar %in% "ja" & - followup1_incomplete_reason %in% 3) ~ - "nei, opprettet satt til død", - - # EPROMS SENDT UT UTEN AT ALLE KRITERIER VAR OPPFYLT - (has_followup %in% 1 & - eprom_opprettet_1aar %in% "ja" & - kriterie_alle_1aar %in% "nei" & - eprom_sendt_1aar %in% "ja" & - eprom_kjente_feil_1aar %in% "nei") ~ - "nei, eprom feilaktig sendt, sjekk kriterier", - - - # NY VERSJON: KONTROLL KRITIER FØR OPPRETTELSE - (has_followup %in% 1 & - versjon_1_5_eller_mer %in% "ja" & - is.na(eprom_opprettet_1aar)) ~ - "nei, ikke opprettet etter kriteriesjekk", - - # NY VERSJON: OPPRETTELES EN DAG, OG BESTILLING INNEN 30 DAGER ETTER - # "BESTILT I DAG, SENDES I MORGEN" - (has_followup %in% 1 & - eprom_opprettet_1aar %in% "ja" & - kriterie_alle_1aar %in% "ja" & - eprom_kjente_feil_1aar %in% "nei" & - is.na(eprom_sendt_1aar)) ~ - "nei, eprom venter på utsendelse", - - - # GAMMEL VERSJON: EPROM OPPRETTET FOR ALLE, MEN - # KONTROLL KRITERIER FØR UTSENDING - (has_followup %in% 1 & - versjon_1_5_eller_mer %in% "nei" & - eprom_opprettet_1aar %in% "ja" & - is.na(eprom_sendt_1aar) & - (kriterie_levende_1aar %in% "nei" | - kriterie_norsk %in% "nei" | - kriterie_alder %in% "nei") & - !followup1_incomplete_reason %in% 3 & - eprom_kjente_feil_1aar %in% "nei") ~ - "nei, opprettet men ikke sendt etter kriteriesjekk", - - - # NY VERJSON: OPPRETTET, MEN IKKE SENDT SKYLES TEKNISKE PROBLEM - # RETT ETTER RELEASE - (has_followup %in% 1 & - versjon_1_5_eller_mer %in% "ja" & - eprom_opprettet_1aar %in% "ja" & - is.na(eprom_sendt_1aar) & - !eprom_kjente_feil_1aar %in% "nei") ~ - "nei, opprettet men teknisk feil ved bestilling", - - # GAMMEL VERSJON: OPPRETTET, TEKNISK PROBLEM VED UTSENDELSE I 2021/22, - # MED ELLER UTEN FEILAKTIG UTSENDING I 2023 - (has_followup %in% 1 & - versjon_1_5_eller_mer %in% "nei" & - eprom_opprettet_1aar %in% "ja" & - !eprom_kjente_feil_1aar %in% "nei") ~ - "nei, teknisk, mangler utsending eller feilaktig sendt i 2023", - - - # DISSE ER MED I DATAGRUNNLAGET! - (has_followup %in% 1 & - eprom_opprettet_1aar %in% "ja" & - kriterie_alle_1aar %in% "ja" & - eprom_kjente_feil_1aar %in% "nei") ~ "ja"), + # DISSE ER MED I DATAGRUNNLAGET! + (has_basisfollowup %in% 1 & + eprom_opprettet_basis %in% "ja" & + eprom_sendt_basis %in% "ja" & + kriterie_alle_basis %in% "ja" ) ~ "ja"), levels = c("ja", - "nei, registreringen er for ny", - "nei, før innføring av 1års oppf.", - "nei, opprettet satt til død", + "foer innfoering av eproms basis", + "nei, opprettet satt til doed", "nei, eprom feilaktig sendt, sjekk kriterier", "nei, ikke opprettet etter kriteriesjekk", - "nei, eprom venter på utsendelse", - "nei, opprettet men ikke sendt etter kriteriesjekk", - "nei, opprettet men teknisk feil ved bestilling", - "nei, teknisk, mangler utsending eller feilaktig sendt i 2023"), + "nei, eprom venter paa utsendelse"), ordered = TRUE), - - - eprom_besvart_1aar = dplyr::case_when( - eprom_datagrunnlag_1aar %in% "ja" & + eprom_besvart_basis = dplyr::case_when( + eprom_datagrunnlag_basis %in% "ja" & proms_status %in% 3 ~ "datagrunnlag og besvart", - eprom_datagrunnlag_1aar %in% "ja" & + eprom_datagrunnlag_basis %in% "ja" & !proms_status %in% 3 ~ "datagrunnlag, men ikke besvart") - ) - - - - - # RYDDE: - d_ablanor %<>% - dplyr::select( - # Pasient og prosedyre - centreid, mceid, mceid_followup, patient_id, - forlopstype, - dato_pros, aar_prosedyre, maaned_prosedyre, - gender, alder, aldersklasse, - - # Datagrunnlag for eprom og svarprosent - eprom_datagrunnlag_1aar, - eprom_besvart_1aar, - proms_expiry_date, - - # Dersom besvart, her er svarene. Merk at gamle rand12 kan være - # besvart manuelt. - followup1_q1:followup1_q7_other_specify, - rand_1:rand_7, - - # Variabler for å undersøke kriterier for utendelse av eprom nærmere - - # fra hemit - proms_expiry_date, reminder_date, - proms_status, form_order_status_error_code, - proms_tssendt, aar_proms_tssendt_1aar, - - # eprom opprettet - has_followup, - registration_type, - eprom_opprettet_1aar, - followup1_tscreated, aar_followup_tscreated_1aar, - followup1_complete, followup1_incomplete_reason, - - eprom_sendt_1aar, - - # Eprom utfylt og mottatt - followup1_dato_followup, aar_followup_1aar, - - # Kriterier opprettelse av eprom - dato_followup_teoretisk_1aar, - versjon_1_5_eller_mer, - eprom_kjente_feil_1aar, - dg_pros_opprettet, - deceased, deceased_date, - ssn_type, ssnsubtype, - antall_pros, dg_til_neste, - kriterie_alder, kriterie_norsk, kriterie_levende_1aar, - kriterie_nyeste_1aar, - kriterie_alle_1aar) + ) - if(singleRow == TRUE) { - # Return first row only - d_ablanor %>% dplyr::filter(dplyr::row_number() == 1) - } else { - # Return all - d_ablanor - } + if(singleRow == TRUE) { + # Return first row only + df %>% dplyr::filter(dplyr::row_number() == 1) + } else { + # Return all + df + } } @@ -1024,123 +1036,218 @@ getBaseregProsFollowup1Data <- function(registryName, #' @rdname getPrepDataAblanor #' @export -getBaseregProsFollowup0Data <- function(registryName, +getBaseregProsFollowup1Data <- function(registryName, singleRow = FALSE, reshId = NULL, userRole, fromDate = NULL, toDate = NULL, ...){ - . <- "" - # NB: i SQL må singleRow være FALSE, Ellers fungerer ikke kobling - # av tabeller og utledete variabler. - d <- ablanor::getBaseregProsFollowup0(registryName = registryName, - singleRow = FALSE, - reshId = reshId, - userRole = userRole, - fromDate = fromDate, - toDate = toDate) - d_baseregPat <- d$d_baseregPat - d_followup <- d$d_followup - d_proms <- d$d_proms - d_gkv <- d$d_gkv - d_rand12_raw <- d$d_rand12 + # 1 GET ALL TABELS NEEDED ---- + d_basereg <- ablanor::getBasereg(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_basereg + d_pros <- ablanor::getPros(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_pros - d_followup %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID", - "MCEID" = "PARENTMCEID") %>% - dplyr::rename_with(.data = ., - ~ paste0("FOLLOWUPBASIS_", .x), - .cols =c("TSCREATED":"STATUS")) %>% - dplyr::mutate(eprom_opprettet_basis = "ja") %>% - dplyr::select(-MCETYPE) - - - d_proms %<>% - dplyr::rename("PROMS_STATUS" = "STATUS", - "MCEID_FOLLOWUP" = "MCEID", - "PROMS_TSSENDT" = "TSSENDT", - "PROMS_EXPIRY_DATE" = "EXPIRY_DATE") %>% - dplyr::mutate(eprom_sendt_basis = "ja") - - d_gkv %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID") %>% - dplyr::mutate(besvart_gkv = "ja") %>% - dplyr::relocate(besvart_gkv, .before = GKV_1) - + d_followup1 <- ablanor::getFollowupOneYr(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_followup1 + d_proms <- ablanor::getProms(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_proms - # RAND12 skjema fra før eprom ved basis, ble samlet inn og plottet manuelt, - # på utskrivelses-skjema (mceid til prosedyren) - d_rand12_manual <- d_rand12_raw %>% - dplyr::filter(FOLLOWUP_PARENT_TYPE %in% 1:4) %>% - dplyr::mutate(besvart_rand12 = "manuelt") %>% - dplyr::relocate(besvart_rand12, .before = RAND_1) - - # RAND12 skjema etter før eprom ved basis, - # henger på elekronisk oppfølging (mceid til followup) - d_rand12_eprom <- d_rand12_raw %>% - dplyr::filter(FOLLOWUP_PARENT_TYPE %in% 7) %>% - dplyr::mutate(besvart_rand12 = "elektronisk") %>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID") %>% - dplyr::relocate(besvart_rand12, .before = RAND_1) %>% - dplyr::left_join(., - d_followup %>% dplyr::select(MCEID_FOLLOWUP, MCEID), - by = "MCEID_FOLLOWUP") %>% - dplyr::relocate(MCEID, .before = FOLLOWUP_PARENT_TYPE) + d_rand12 <- ablanor::getRand12(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_rand12 - # Slå sammen rand12 fra manuell plotting og fra eprom ved basis - # Merk, to pasienter fra 8/11-2023 (innføring eprom basis) har begge deler, - # vi bruker da eprom - dobbel_rand12 <- dplyr::inner_join( - d_rand12_eprom %>% dplyr::select(MCEID), - d_rand12_manual %>% dplyr::select(MCEID), - by = "MCEID") %>% - dplyr::pull() + d_mce <- ablanor::getMce(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce + d_mcePatientdata <- ablanor::getMcepatientdata( + registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce_patient_data - d_rand12 <- dplyr::bind_rows( - d_rand12_manual %>% dplyr::filter(!MCEID %in% dobbel_rand12), - d_rand12_eprom %>% dplyr::select(-MCEID_FOLLOWUP)) + d_patientlist <- ablanor::getPatientlist(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_patientlist - names(d_followup) <- tolower(names(d_followup)) + names(d_followup1) <- tolower(names(d_followup1)) names(d_proms) <- tolower(names(d_proms)) - names(d_baseregPat) <- tolower(names(d_baseregPat)) - names(d_gkv) <- tolower(names(d_gkv)) names(d_rand12) <- tolower(names(d_rand12)) + names(d_basereg) <- tolower(names(d_basereg)) + names(d_pros) <- tolower(names(d_pros)) + names(d_mcePatientdata) <- tolower(names(d_mcePatientdata)) + names(d_patientlist) <- tolower(names(d_patientlist)) + names(d_mce) <- tolower(names(d_mce)) - # Sjekk at bare en oppfølging per forløp - # (I starten ble flere skjema sendt ut da er det nyeste skjema som gjelder) - followup_data <- d_followup %>% - dplyr::filter(!is.na(followupbasis_status)) %>% + # 2. PROCESS FOLLOWUP DATA---- + + # VELGER KUN 1 års oppfølging (PROMS) + d_proms %<>% + dplyr::filter(registration_type == "Followup") %>% + dplyr::rename("proms_status" = "status", + "mceid_followup" = "mceid", + "proms_tssendt" = "tssendt", + "proms_expiry_date" = "expiry_date") %>% + dplyr::mutate(eprom_sendt_1aar = "ja") %>% + dplyr::select(mceid_followup, + proms_tssendt, + proms_status, + proms_expiry_date, + eprom_sendt_1aar) + + # RAND 12 fra kun 1 års oppfølging + d_rand12 %<>% + dplyr::filter(followup_parent_type %in% 9, complete == 1) %>% + dplyr::rename("mceid_followup" = "mceid", + "rand_complete" = "complete", + "rand_incomplete_reason" = "incomplete_reason") %>% + dplyr::select(mceid_followup:rand_7) %>% + dplyr::select(-followup_parent_type) + + # Tar utgangspunkt i alle tilgjengelige oppfølgingsdata for 1 aar + # Legger til mceid for followup og proms variabler + followup_data <- d_followup1 %>% + dplyr::rename("mceid_followup" = mceid) %>% + dplyr::rename_with(.data = ., + ~ paste0("followup1_", .x), + .cols =c("complete":"status", "tscreated")) %>% + dplyr::select(-tsupdated, + -updatedby, + -form_completed_via_proms, + -first_time_closed, + -first_time_closed_by, + -createdby) %>% + dplyr::left_join(., + d_mce %>% + dplyr::filter(mcetype == 9) %>% + dplyr::select(mceid, parentmceid) %>% + dplyr::rename("mceid_followup" = mceid, + "mceid" = parentmceid), + by = "mceid_followup") %>% + dplyr::mutate(eprom_opprettet_1aar = "ja") %>% dplyr::left_join(., d_proms, - by = "mceid_followup") + by = "mceid_followup") %>% + dplyr::left_join(., + d_rand12, + by = c("mceid_followup", "centreid")) %>% + dplyr::relocate("mceid", .before = "mceid_followup") %>% + dplyr::relocate("eprom_opprettet_1aar", + "eprom_sendt_1aar", + .before = "dato_followup") %>% + dplyr::relocate("proms_tssendt", + "proms_status", + "proms_expiry_date", + .before ="dato_followup" ) + - # Legg til follow-up i pasient - prosedyre - data - d_ablanor <- d_baseregPat %>% + # PROCESS PATIENT - BASEREG AND PROCEDURE DATA ---- + d_pros %<>% + dplyr::select( + mceid:dato_pros, + redo, redo_times, narkose, + dplyr::contains("aryt_i"), + dplyr::contains("sys_"), + dplyr::contains("abla_strat"), + akutt_suksess, + oppsummering, + dplyr::contains("komp_") + ) + + + d_basereg %<>% + dplyr::select( + mceid:forskyvning, + ehra_sympt + ) + + d_mcePatientdata %<>% + dplyr::select(pid, mceid) %>% + dplyr::rename(patient_id = pid) + + d_patientlist %<>% + dplyr::select(id, birth_date, gender, + deceased, deceased_date, + ssn_type, ssnsubtype) %>% + dplyr::rename(patient_id = id) + + + # ENDELIG DATASETT MED PASIENT - BASEREG - PROSEDYRE - FOLLOWUPDATA ---- + df <- dplyr::right_join(d_basereg, + d_pros, + by = c("mceid", "centreid")) %>% + dplyr::filter(!is.na(forlopstype))%>% + dplyr::right_join(x = d_mce %>% + dplyr::select(mceid, patient_id, has_followup), + y = ., + by = "mceid") %>% + dplyr::right_join(x = d_patientlist %>% dplyr::distinct(), + y = ., + by = c("patient_id"), + multiple = "all") %>% dplyr::left_join(., followup_data, - by = c("mceid", "centreid", "patient_id")) + by = c("mceid", "centreid")) + + + # HJELPEVARIABLER EPROM ---- # Nyeste prosedyredato som har eprom: nyeste_eprom_bestilling <- lubridate::date(max( - d_ablanor %>% - dplyr::filter(!is.na(followupbasis_status)) %>% + df %>% + dplyr::filter(!is.na(followup1_status)) %>% dplyr::pull(dato_pros))) + df %<>% + dplyr::mutate( + # I Versjon 1.5 ble opprettelse/bestilling av eproms skilt. + # I ny versjon så sjekkes alle kriterier før opprettelse av e-prom + versjon_1_5_eller_mer = ifelse( + test = (dato_pros >= as.Date("2022-11-22", format = "%Y-%m-%d")), + yes = "ja", + no = "nei"), - - d_ablanor %<>% + # 50 uker etter prosedyredato blir e-proms opprettet + dato_followup_teoretisk_1aar = dato_pros + lubridate::days(351)) %>% # KRITERIER FOR UTSENDING # KRITERIE 1. Alder. Under 16 på prosedyretidspunktet. @@ -1156,37 +1263,42 @@ getBaseregProsFollowup0Data <- function(registryName, yes = "ja", no = "nei")) %>% - # KRITERIE 3. Levende dagen etter prosedyren - dplyr::mutate(kriterie_levende = ifelse( + # KRITERIE 3. Levende 50 uker etter prosedyren + dplyr::mutate(kriterie_levende_1aar = ifelse( test = (deceased %in% 0 | - (deceased %in% 1 & deceased_date > dato_pros )), - yes = "ja", - no = "nei")) %>% - - # KRITERIE 4: Minst en av prosedyrevarighet, rtg_tid eller abla_varighet - # er fylt ut - dplyr::mutate(kriterie_tid = ifelse( - test = (!is.na(pros_varighet) | - !is.na(rtg_tid) | - !is.na(abla_varighet)), + (deceased %in% 1 & + deceased_date > dato_followup_teoretisk_1aar)), yes = "ja", no = "nei")) + # KRITERIE 4: Ingen ny prosedyre av samme type + df %<>% + dplyr::arrange(dato_pros) %>% + dplyr::group_by(patient_id, forlopstype) %>% + dplyr::mutate( + antall_pros = dplyr::n(), + dg_til_neste = as.numeric(difftime(dplyr::lead(dato_pros), + dato_pros, + units = "days"))) %>% + dplyr::ungroup() %>% + dplyr::mutate( + kriterie_nyeste_1aar = ifelse( + test= (is.na(dg_til_neste) | dg_til_neste > 351), + yes = "ja", + no = "nei"), - # ALLE KRITERIER VED BASIS - d_ablanor %<>% - dplyr::mutate( - kriterie_alle_basis = ifelse( - test = (kriterie_alder %in% "ja" & - kriterie_levende %in% "ja" & - kriterie_norsk %in% "ja" & - kriterie_tid %in% "ja"), + # KRITERIE ALLE + kriterie_alle_1aar = ifelse( + test = (kriterie_nyeste_1aar %in% "ja" & + kriterie_alder %in% "ja" & + kriterie_levende_1aar %in% "ja" & + kriterie_norsk %in% "ja"), yes = "ja", no = "nei")) - d_ablanor %<>% + df %<>% dplyr::mutate( # Tidsvariabler for prosedyre @@ -1199,153 +1311,184 @@ getBaseregProsFollowup0Data <- function(registryName, no = paste0(aar_prosedyre, "-", maaned_nr_prosedyre)), - # Opprettet followup - aar_followup_tscreated_basis = as.ordered( - x = lubridate::year(followupbasis_tscreated)), + # Tidsvariabler for besvart followup + aar_followup_1aar = as.ordered( + x = lubridate::year(dato_followup)), - # Sendt followup - aar_proms_tssendt_basis = as.ordered( + # Tidsvariabler for opprettet followup + aar_followup_tscreated_1aar = as.ordered( + x = lubridate::year(followup1_tscreated)), + + # Tidsvariabler for bestilt followup + aar_proms_tssendt_1aar = as.ordered( x = lubridate::year(proms_tssendt)), + dg_pros_opprettet = as.numeric(difftime( + followup1_tscreated, + dato_pros, + units = "days"))) %>% + dplyr::select(-maaned_nr_prosedyre) %>% + dplyr::arrange(mceid) %>% - # Besvart followup - aar_followup_besvart_basis = as.ordered( - x = lubridate::year(followupbasis_dato_followup))) %>% + dplyr::mutate( + eprom_kjente_feil_1aar = dplyr::case_when( - dplyr::arrange(mceid) %>% + dato_pros == as.Date("2021-09-01", format = "%Y-%m-%d") ~ + "teknisk problem", + + (dato_pros >= as.Date("2020-01-01", format = "%Y-%m-%d") & + dato_pros <= as.Date("2020-01-24", format = "%Y-%m-%d")) ~ + "teknisk problem", + (dato_pros >= as.Date("2022-11-22", format = "%Y-%m-%d") & + dato_pros <= as.Date("2022-11-25", format = "%Y-%m-%d") & + eprom_opprettet_1aar %in% "ja" & + kriterie_alle_1aar %in% "ja" & + is.na(eprom_sendt_1aar))~ + "teknisk problem", + TRUE ~ "nei"), - dplyr::mutate( + eprom_datagrunnlag_1aar = factor( + x = dplyr::case_when( - eprom_datagrunnlag_basis = factor( - x = dplyr::case_when( + # ALT FOR NYE REGISTRERINGER + dato_pros > nyeste_eprom_bestilling ~ + "nei, registreringen er for ny", # ALT FOR GAMLE REGISTRERINGER - dato_pros < as.Date("2023-11-08", format = "%Y-%m-%d") ~ - "før innføring av eproms basis", + dato_pros < as.Date("2020-01-01", format = "%Y-%m-%d") ~ + "nei, før innføring av 1års oppf.", + + dato_pros == as.Date("2020-01-01", format = "%Y-%m-%d") & + is.na(eprom_opprettet_1aar) ~ + "nei, før innføring av 1års oppf.", # EPROMS OPPRETTET OG SATT TIL AVDØD MED EN GANG - (has_basisfollowup %in% 1 & - eprom_opprettet_basis %in% "ja" & - followupbasis_incomplete_reason %in% 3) ~ + (has_followup %in% 1 & + eprom_opprettet_1aar %in% "ja" & + followup1_incomplete_reason %in% 3) ~ "nei, opprettet satt til død", # EPROMS SENDT UT UTEN AT ALLE KRITERIER VAR OPPFYLT - (has_basisfollowup %in% 1 & - eprom_opprettet_basis %in% "ja" & - kriterie_alle_basis %in% "nei" & - eprom_sendt_basis %in% "ja") ~ + (has_followup %in% 1 & + eprom_opprettet_1aar %in% "ja" & + kriterie_alle_1aar %in% "nei" & + eprom_sendt_1aar %in% "ja" & + eprom_kjente_feil_1aar %in% "nei") ~ "nei, eprom feilaktig sendt, sjekk kriterier", + # NY VERSJON: KONTROLL KRITIER FØR OPPRETTELSE - (kriterie_alle_basis %in% "nei" & - is.na(eprom_opprettet_basis)) ~ + (has_followup %in% 1 & + versjon_1_5_eller_mer %in% "ja" & + is.na(eprom_opprettet_1aar)) ~ "nei, ikke opprettet etter kriteriesjekk", # NY VERSJON: OPPRETTELES EN DAG, OG BESTILLING INNEN 30 DAGER ETTER # "BESTILT I DAG, SENDES I MORGEN" - (has_basisfollowup %in% 1 & - eprom_opprettet_basis %in% "ja" & - kriterie_alle_basis %in% "ja" & - is.na(eprom_sendt_basis)) ~ + (has_followup %in% 1 & + eprom_opprettet_1aar %in% "ja" & + kriterie_alle_1aar %in% "ja" & + eprom_kjente_feil_1aar %in% "nei" & + is.na(eprom_sendt_1aar)) ~ "nei, eprom venter på utsendelse", + + # GAMMEL VERSJON: EPROM OPPRETTET FOR ALLE, MEN + # KONTROLL KRITERIER FØR UTSENDING + (has_followup %in% 1 & + versjon_1_5_eller_mer %in% "nei" & + eprom_opprettet_1aar %in% "ja" & + is.na(eprom_sendt_1aar) & + (kriterie_levende_1aar %in% "nei" | + kriterie_norsk %in% "nei" | + kriterie_alder %in% "nei") & + !followup1_incomplete_reason %in% 3 & + eprom_kjente_feil_1aar %in% "nei") ~ + "nei, opprettet men ikke sendt etter kriteriesjekk", + + + # NY VERJSON: OPPRETTET, MEN IKKE SENDT SKYLES TEKNISKE PROBLEM + # RETT ETTER RELEASE + (has_followup %in% 1 & + versjon_1_5_eller_mer %in% "ja" & + eprom_opprettet_1aar %in% "ja" & + is.na(eprom_sendt_1aar) & + !eprom_kjente_feil_1aar %in% "nei") ~ + "nei, opprettet men teknisk feil ved bestilling", + + # GAMMEL VERSJON: OPPRETTET, TEKNISK PROBLEM VED + # UTSENDELSE I 2021/22, + # MED ELLER UTEN FEILAKTIG UTSENDING I 2023 + (has_followup %in% 1 & + versjon_1_5_eller_mer %in% "nei" & + eprom_opprettet_1aar %in% "ja" & + !eprom_kjente_feil_1aar %in% "nei") ~ + "nei, teknisk, mangler utsending eller feilaktig sendt i 2023", + + # DISSE ER MED I DATAGRUNNLAGET! - (has_basisfollowup %in% 1 & - eprom_opprettet_basis %in% "ja" & - eprom_sendt_basis %in% "ja" & - kriterie_alle_basis %in% "ja" ) ~ "ja"), + (has_followup %in% 1 & + eprom_opprettet_1aar %in% "ja" & + kriterie_alle_1aar %in% "ja" & + eprom_kjente_feil_1aar %in% "nei") ~ "ja"), - levels = c("ja", - "før innføring av eproms basis", - "nei, opprettet satt til død", - "nei, eprom feilaktig sendt, sjekk kriterier", - "nei, ikke opprettet etter kriteriesjekk", - "nei, eprom venter på utsendelse"), + levels = c( + "ja", + "nei, registreringen er for ny", + "nei, før innføring av 1års oppf.", + "nei, opprettet satt til død", + "nei, eprom feilaktig sendt, sjekk kriterier", + "nei, ikke opprettet etter kriteriesjekk", + "nei, eprom venter på utsendelse", + "nei, opprettet men ikke sendt etter kriteriesjekk", + "nei, opprettet men teknisk feil ved bestilling", + "nei, teknisk, mangler utsending eller feilaktig sendt i 2023"), ordered = TRUE), - eprom_besvart_basis = dplyr::case_when( - eprom_datagrunnlag_basis %in% "ja" & - proms_status %in% 3 ~ "datagrunnlag og besvart", - eprom_datagrunnlag_basis %in% "ja" & - !proms_status %in% 3 ~ "datagrunnlag, men ikke besvart") - ) + eprom_besvart_1aar = dplyr::case_when( + eprom_datagrunnlag_1aar %in% "ja" & + proms_status %in% 3 ~ "datagrunnlag og besvart", + eprom_datagrunnlag_1aar %in% "ja" & + !proms_status %in% 3 ~ "datagrunnlag, men ikke besvart") + ) - # LEGG TIL GKV KOLONNER - d_ablanor %<>% dplyr::left_join(., - d_gkv, - by = "mceid_followup") + # RYDDE ENDELIG DATASETT ---- + df %<>% + dplyr::relocate("patient_id", + "mceid", + "mceid_followup", + "centreid", + "eprom_datagrunnlag_1aar", + "eprom_besvart_1aar", + .before = "birth_date") %>% + dplyr::select(-dato_bas) %>% + dplyr::relocate("has_followup", .after = "eprom_kjente_feil_1aar") - # LEGG TIL RAND12 KOLONNER - d_ablanor %<>% dplyr::left_join(., - d_rand12, - by = "mceid") - # RYDDE: - d_ablanor %<>% - dplyr::select( - # Pasient og prosedyre - centreid, mceid, mceid_followup, patient_id, - forlopstype, - dato_pros, aar_prosedyre, maaned_nr_prosedyre, maaned_prosedyre, - gender, alder, aldersklasse, - - # Datagrunnlag for eprom og svarprosent - eprom_datagrunnlag_basis, - eprom_besvart_basis, besvart_rand12, besvart_gkv, - proms_expiry_date, - - # Dersom besvart, her er svarene. Merk at gamle rand12 kan være - # besvart manuelt. - followupbasis_q1:followupbasis_q6_other_specify, - gkv_1:gkv_12, - dato_rand12, rand_1:rand_7, - - # Variabler for å undersøke kriterier for utendelse av eprom nærmere - - # fra hemit - proms_expiry_date, reminder_date, - proms_status, form_order_status_error_code, - proms_tssendt, aar_proms_tssendt_basis, - eprom_sendt_basis, - - # eprom opprettet - has_basisfollowup, - registration_type, - eprom_opprettet_basis, - followupbasis_tscreated, aar_followup_tscreated_basis, - followupbasis_complete, followupbasis_incomplete_reason, - - # Eprom utfylt og mottatt - followupbasis_dato_followup, aar_followup_besvart_basis, - - # Kriterier opprettelse av eprom - deceased, deceased_date, - ssn_type, ssnsubtype, - rtg_tid, pros_varighet, abla_varighet, - kriterie_alder, kriterie_levende, kriterie_norsk, kriterie_tid, - kriterie_alle_basis ) if(singleRow == TRUE) { # Return first row only - d_ablanor %>% dplyr::filter(dplyr::row_number() == 1) + df %>% dplyr::filter(dplyr::row_number() == 1) } else { # Return all - d_ablanor + df } } + + #' @rdname getPrepDataAblanor #' @export getBaseregProsFollowup5Data <- function(registryName, @@ -1355,80 +1498,198 @@ getBaseregProsFollowup5Data <- function(registryName, fromDate = NULL, toDate = NULL, ...){ - . <- "" - - # NB: i SQL må singleRow være FALSE, Ellers fungerer ikke kobling - # av tabeller og utledete variabler. - d <- ablanor::getBaseregProsFollowup5(registryName = registryName, - singleRow = FALSE, - reshId = reshId, - userRole = userRole, - fromDate = fromDate, - toDate = toDate) - d_baseregPat <- d$d_baseregPat - d_followup5 <- d$d_followup5 - d_proms <- d$d_proms - d_rand12 <- d$d_rand12 - - + # 1 GET ALL TABELS NEEDED ---- + d_basereg <- ablanor::getBasereg(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_basereg + + d_pros <- ablanor::getPros(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = fromDate, + toDate = toDate)$d_pros + + d_followup5 <- ablanor::getFollowupFiveYr(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_followup5 + + d_proms <- ablanor::getProms(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_proms - d_followup5 %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID", - "MCEID" = "PARENTMCEID") %>% - dplyr::rename_with(.data = ., - ~ paste0("FOLLOWUP5_", .x), - .cols =c("TSCREATED":"STATUS")) %>% - dplyr::mutate(eprom_opprettet_5aar = "ja") %>% - dplyr::select(-MCETYPE) + d_rand12 <- ablanor::getRand12(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_rand12 + d_mce <- ablanor::getMce(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce - d_proms %<>% - dplyr::rename("PROMS_STATUS" = "STATUS", - "MCEID_FOLLOWUP" = "MCEID", - "PROMS_TSSENDT" = "TSSENDT", - "PROMS_EXPIRY_DATE" = "EXPIRY_DATE") %>% - dplyr::mutate(eprom_sendt_5aar = "ja") + d_mcePatientdata <- ablanor::getMcepatientdata( + registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_mce_patient_data - d_rand12 %<>% - dplyr::rename("MCEID_FOLLOWUP" = "MCEID") + d_patientlist <- ablanor::getPatientlist(registryName = "ablanor", + singleRow = FALSE, + reshId = reshId, + userRole = userRole, + fromDate = NULL, + toDate = NULL)$d_patientlist names(d_followup5) <- tolower(names(d_followup5)) names(d_proms) <- tolower(names(d_proms)) - names(d_baseregPat) <- tolower(names(d_baseregPat)) names(d_rand12) <- tolower(names(d_rand12)) + names(d_basereg) <- tolower(names(d_basereg)) + names(d_pros) <- tolower(names(d_pros)) + names(d_mcePatientdata) <- tolower(names(d_mcePatientdata)) + names(d_patientlist) <- tolower(names(d_patientlist)) + names(d_mce) <- tolower(names(d_mce)) - # Sjekk at bare en oppfølging per forløp - # (I starten ble flere skjema sendt ut da er det nyeste skjema som gjelder) + # 2. PROCESS FOLLOWUP DATA---- + + # VELGER KUN 5 års oppfølging (PROMS) + d_proms %<>% + dplyr::filter(registration_type == "FiveYearollowup") %>% + dplyr::rename("proms_status" = "status", + "mceid_followup" = "mceid", + "proms_tssendt" = "tssendt", + "proms_expiry_date" = "expiry_date") %>% + dplyr::mutate(eprom_sendt_5aar = "ja") %>% + dplyr::select(mceid_followup, + proms_tssendt, + proms_status, + proms_expiry_date, + eprom_sendt_5aar) + + # RAND 12 fra kun 1 års oppfølging + d_rand12 %<>% + dplyr::filter(followup_parent_type %in% 10, complete == 1) %>% + dplyr::rename("mceid_followup" = "mceid", + "rand_complete" = "complete", + "rand_incomplete_reason" = "incomplete_reason") %>% + dplyr::select(mceid_followup:rand_7) %>% + dplyr::select(-followup_parent_type) + + # Tar utgangspunkt i alle tilgjengelige oppfølgingsdata for 1 aar + # Legger til mceid for followup og proms variabler followup_data <- d_followup5 %>% - dplyr::filter(!is.na(followup5_status)) %>% + dplyr::rename("mceid_followup" = mceid) %>% + dplyr::rename_with(.data = ., + ~ paste0("followup5_", .x), + .cols =c("complete":"status", "tscreated")) %>% + dplyr::select(-tsupdated, + -updatedby, + -form_completed_via_proms, + -first_time_closed, + -first_time_closed_by, + -createdby) %>% + dplyr::left_join(., + d_mce %>% + dplyr::filter(mcetype == 10) %>% + dplyr::select(mceid, parentmceid) %>% + dplyr::rename("mceid_followup" = mceid, + "mceid" = parentmceid), + by = "mceid_followup") %>% + dplyr::mutate(eprom_opprettet_5aar = "ja") %>% dplyr::left_join(., d_proms, - by = "mceid_followup") + by = "mceid_followup") %>% + dplyr::left_join(., + d_rand12, + by = c("mceid_followup", "centreid")) %>% + dplyr::relocate("mceid", .before = "mceid_followup") %>% + dplyr::relocate("eprom_opprettet_5aar", + "eprom_sendt_5aar", + .before = "dato_followup") %>% + dplyr::relocate("proms_tssendt", + "proms_status", + "proms_expiry_date", + .before ="dato_followup" ) - # Legg til follow-up i pasient - prosedyre - data - d_ablanor <- d_baseregPat %>% + + + # PROCESS PATIENT - BASEREG AND PROCEDURE DATA ---- + d_pros %<>% + dplyr::select( + mceid:dato_pros, + redo, redo_times, narkose, + dplyr::contains("aryt_i"), + dplyr::contains("sys_"), + dplyr::contains("abla_strat"), + akutt_suksess, + oppsummering, + dplyr::contains("komp_") + ) + + + d_basereg %<>% dplyr::select(mceid:forskyvning, ehra_sympt) + + d_mcePatientdata %<>% + dplyr::select(pid, mceid) %>% + dplyr::rename(patient_id = pid) + + d_patientlist %<>% + dplyr::select(id, birth_date, gender, + deceased, deceased_date, + ssn_type, ssnsubtype) %>% + dplyr::rename(patient_id = id) + + + + # ENDELIG DATASETT MED PASIENT - BASEREG - PROSEDYRE - FOLLOWUPDATA ---- + df <- dplyr::right_join(d_basereg, + d_pros, + by = c("mceid", "centreid")) %>% + dplyr::filter(!is.na(forlopstype))%>% + dplyr::right_join(x = d_mce %>% + dplyr::select(mceid, patient_id, has_fiveyearfollowup), + y = ., + by = "mceid") %>% + dplyr::right_join(x = d_patientlist %>% dplyr::distinct(), + y = ., + by = c("patient_id"), + multiple = "all") %>% dplyr::left_join(., followup_data, - by = c("mceid", "centreid", "patient_id")) %>% - dplyr::left_join(., - d_rand12, - by = "mceid_followup") + by = c("mceid", "centreid")) + + + + # HJELPEVARIABLER EPROM ---- # Nyeste prosedyredato som har eprom: nyeste_eprom_bestilling <- lubridate::date(max( - d_ablanor %>% + df %>% dplyr::filter(!is.na(followup5_status)) %>% dplyr::pull(dato_pros))) - - - d_ablanor %<>% + df %<>% dplyr::mutate( @@ -1457,7 +1718,7 @@ getBaseregProsFollowup5Data <- function(registryName, no = "nei")) # KRITERIE 4: Ingen ny prosedyre av samme type - d_ablanor %<>% + df %<>% dplyr::arrange(dato_pros) %>% dplyr::group_by(patient_id, forlopstype) %>% dplyr::mutate( @@ -1483,7 +1744,7 @@ getBaseregProsFollowup5Data <- function(registryName, - d_ablanor %<>% + df %<>% dplyr::mutate( # Tidsvariabler for prosedyre @@ -1521,39 +1782,39 @@ getBaseregProsFollowup5Data <- function(registryName, - eprom_datagrunnlag_5aar = factor( - x = dplyr::case_when( + eprom_datagrunnlag_5aar = factor( + x = dplyr::case_when( - # ALT FOR NYE REGISTRERINGER - dato_pros > nyeste_eprom_bestilling ~ - "nei, registreringen er for ny", + # ALT FOR NYE REGISTRERINGER + dato_pros > nyeste_eprom_bestilling ~ + "nei, registreringen er for ny", - # EPROMS OPPRETTET OG SATT TIL AVDØD MED EN GANG - (has_fiveyearfollowup %in% 1 & - eprom_opprettet_5aar %in% "ja" & - followup5_incomplete_reason %in% 3) ~ - "nei, opprettet satt til død", + # EPROMS OPPRETTET OG SATT TIL AVDØD MED EN GANG + (has_fiveyearfollowup %in% 1 & + eprom_opprettet_5aar %in% "ja" & + followup5_incomplete_reason %in% 3) ~ + "nei, opprettet satt til død", - # NY VERSJON: KONTROLL KRITIER FØR OPPRETTELSE - (has_fiveyearfollowup %in% 1 & - is.na(eprom_opprettet_5aar)) ~ - "nei, ikke opprettet etter kriteriesjekk", + # NY VERSJON: KONTROLL KRITIER FØR OPPRETTELSE + (has_fiveyearfollowup %in% 1 & + is.na(eprom_opprettet_5aar)) ~ + "nei, ikke opprettet etter kriteriesjekk", - # NY VERSJON: OPPRETTELES EN DAG, OG BESTILLING INNEN 30 DAGER ETTER - # "BESTILT I DAG, SENDES I MORGEN" - (has_fiveyearfollowup %in% 1 & - eprom_opprettet_5aar %in% "ja" & - kriterie_alle_5aar %in% "ja" & - is.na(eprom_sendt_5aar)) ~ - "nei, eprom venter på utsendelse", + # NY VERSJON: OPPRETTELES EN DAG, OG BESTILLING INNEN 30 DAGER ETTER + # "BESTILT I DAG, SENDES I MORGEN" + (has_fiveyearfollowup %in% 1 & + eprom_opprettet_5aar %in% "ja" & + kriterie_alle_5aar %in% "ja" & + is.na(eprom_sendt_5aar)) ~ + "nei, eprom venter på utsendelse", - # DISSE ER MED I DATAGRUNNLAGET! - (has_fiveyearfollowup %in% 1 & - eprom_opprettet_5aar %in% "ja" & - kriterie_alle_5aar %in% "ja") ~ "ja", + # DISSE ER MED I DATAGRUNNLAGET! + (has_fiveyearfollowup %in% 1 & + eprom_opprettet_5aar %in% "ja" & + kriterie_alle_5aar %in% "ja") ~ "ja", levels = c("ja", @@ -1574,63 +1835,27 @@ getBaseregProsFollowup5Data <- function(registryName, ) + # RYDDE ENDELIG DATASETT ---- + df %<>% + dplyr::relocate("patient_id", + "mceid", + "mceid_followup", + "centreid", + "eprom_datagrunnlag_5aar", + "eprom_besvart_5aar", + .before = "birth_date") %>% + dplyr::select(-dato_bas) %>% + dplyr::relocate("has_fiveyearfollowup", .after = "kriterie_alle_5aar") - # RYDDE: - d_ablanor %<>% - dplyr::select( - # Pasient og prosedyre - centreid, mceid, mceid_followup, patient_id, - forlopstype, - dato_pros, aar_prosedyre, maaned_prosedyre, - gender, alder, aldersklasse, - - # Datagrunnlag for eprom og svarprosent - eprom_datagrunnlag_1aar, - eprom_besvart_5aar, - proms_expiry_date, - - # Dersom besvart, her er svarene. Merk at gamle rand12 kan være - # besvart manuelt. - followup5_q1:followup5_q7_other_specify, - rand_1:rand_7, - - # Variabler for å undersøke kriterier for utendelse av eprom nærmere - - # fra hemit - proms_expiry_date, reminder_date, - proms_status, form_order_status_error_code, - proms_tssendt, aar_proms_tssendt_5aar, - - # eprom opprettet - has_fiveyearfollowup, - registration_type, - eprom_opprettet_5aar, - followup5_tscreated, aar_followup_tscreated_5aar, - followup5_complete, followup5_incomplete_reason, - - eprom_sendt_5aar, - - # Eprom utfylt og mottatt - followup1_dato_followup, aar_followup_1aar, - - # Kriterier opprettelse av eprom - dato_followup_teoretisk_5aar, - dg_pros_opprettet, - deceased, deceased_date, - ssn_type, ssnsubtype, - antall_pros, dg_til_neste, - kriterie_alder, kriterie_norsk, kriterie_levende_5aar, - kriterie_nyeste_5aar, - kriterie_alle_5aar) if(singleRow == TRUE) { # Return first row only - d_ablanor %>% dplyr::filter(dplyr::row_number() == 1) + df %>% dplyr::filter(dplyr::row_number() == 1) } else { # Return all - d_ablanor + df } } diff --git a/man/getDataAblanor.Rd b/man/getDataAblanor.Rd index 6b80ab3..82dc6b8 100644 --- a/man/getDataAblanor.Rd +++ b/man/getDataAblanor.Rd @@ -7,7 +7,6 @@ \alias{getMce} \alias{getRand12} \alias{getFollowupBasis} -\alias{getFollowupOneYr} \alias{getFollowupFiveYr} \alias{getGkv} \alias{getProms} @@ -16,12 +15,10 @@ \alias{getFriendlycentre} \alias{getMcepatientdata} \alias{getBaseregPros} -\alias{getBaseregProsFollowup1} -\alias{getBaseregProsFollowup0} \alias{getLatestEntry} \alias{getNameReshId} \alias{getHospitalName} -\alias{getBaseregProsFollowup5} +\alias{getFollowupOneYr} \title{Ablanor SQL} \usage{ getBasereg( @@ -164,36 +161,6 @@ getBaseregPros( ... ) -getBaseregProsFollowup1( - registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, - ... -) - -getBaseregProsFollowup0( - registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, - ... -) - -getBaseregProsFollowup5( - registryName, - singleRow, - reshId = NULL, - userRole, - fromDate = NULL, - toDate = NULL, - ... -) - getLatestEntry(registryName) getNameReshId( diff --git a/man/getPrepDataAblanor.Rd b/man/getPrepDataAblanor.Rd index b25a5e5..907face 100644 --- a/man/getPrepDataAblanor.Rd +++ b/man/getPrepDataAblanor.Rd @@ -122,7 +122,7 @@ getBaseregProsHendelseData( ... ) -getBaseregProsFollowup1Data( +getBaseregProsFollowup0Data( registryName, singleRow = FALSE, reshId = NULL, @@ -132,7 +132,7 @@ getBaseregProsFollowup1Data( ... ) -getBaseregProsFollowup0Data( +getBaseregProsFollowup1Data( registryName, singleRow = FALSE, reshId = NULL,