# Se t.ex. http://adv-r.had.co.nz/OO-essentials.html#s3
# TODO Designa om detta rudimentära S3-system för kvalitetsindikatorer i NKBC
# Definiera generiska funktioner ----
#' @export
code <- function(x) UseMethod("code")
#' @export
kortnamn <- function(x) UseMethod("kortnamn")
#' @export
lab <- function(x) UseMethod("lab")
#' @export
lab_short <- function(x) UseMethod("lab_short")
#' @export
lab_short_w_pop <- function(x) UseMethod("lab_short_w_pop")
#' @export
pop <- function(x) UseMethod("pop")
#' @export
pop_short <- function(x) UseMethod("pop_short")
#' @export
filter_pop <- function(x) UseMethod("filter_pop")
#' @export
filter_incl_period <- function(x, report_end_year, nkbc_data_date, ...) UseMethod("filter_incl_period")
#' @export
mutate_outcome <- function(x) UseMethod("mutate_outcome")
#' @export
mutate_other_vars <- function(x) UseMethod("mutate_other_vars")
#' @export
outcome <- function(x) UseMethod("outcome")
#' @export
prop_within_unit <- function(x) UseMethod("prop_within_unit")
#' @export
prop_within_value <- function(x) UseMethod("prop_within_value")
#' @export
target_values <- function(x) UseMethod("target_values")
#' @export
period_dat_var <- function(x) UseMethod("period_dat_var")
#' @export
sjhkod_var <- function(x) UseMethod("sjhkod_var")
#' @export
geo_units_vars <- function(x) UseMethod("geo_units_vars")
#' @export
other_vars <- function(x) UseMethod("other_vars")
#' @export
other_vars_inca <- function(x) UseMethod("other_vars_inca")
#' @export
hide_less_than <- function(x) UseMethod("hide_less_than")
#' @export
outcomeTitle <- function(x, locale, ...) UseMethod("outcomeTitle")
#' @export
textBeforeSubtitle <- function(x, locale, ...) UseMethod("textBeforeSubtitle")
#' @export
comment <- function(x, locale, ...) UseMethod("comment")
#' @export
description <- function(x, report_end_year, w_target_values, locale, ...) UseMethod("description")
#' @export
description_inca <- function(x, w_target_values, ...) UseMethod("description_inca")
#' @export
periodDefaultStart <- function(x, ...) UseMethod("periodDefaultStart")
#' @export
varOtherComparison <- function(x, varbesk, locale, ...) UseMethod("varOtherComparison")
#' @export
varOther <- function(x, varbesk, locale, ...) UseMethod("varOther")
#' @export
varOther_inca <- function(x, varbesk, ...) UseMethod("varOther_inca")
#' @export
propWithinUnit <- function(x, locale, ...) UseMethod("propWithinUnit")
#' @export
propWithinValue <- function(x, ...) UseMethod("propWithinValue")
#' @export
hideLessThan <- function(x, ...) UseMethod("hideLessThan")
#' @export
kpl_description <- function(x, ...) UseMethod("kpl_description")
# Definiera metoder för klasserna nkbcind och nkbc33 ----
#' @export
code.nkbcind <- function(x) x$code
#' @export
kortnamn.nkbcind <- function(x) x$kortnamn
#' @export
lab.nkbcind <- function(x) x$lab
#' @export
lab_short.nkbcind <- function(x) if (!is.null(x$lab_short)) x$lab_short else lab(x)
#' @export
lab_short_w_pop.nkbcind <- function(x) if (!is.null(x$lab_short_w_pop)) x$lab_short_w_pop else lab_short(x)
#' @export
pop.nkbcind <- function(x) x$pop
#' @export
pop_short.nkbcind <- function(x) if (!is.null(x$pop_short)) x$pop_short else pop(x)
#' @export
filter_incl_period.nkbcind <- function(x,
report_end_year = lubridate::year(lubridate::today()) - 1,
nkbc_data_date = lubridate::today(),
...) {
function(y, ...) {
if (!is.null(x$inkl_beskr_onk_beh) && x$inkl_beskr_onk_beh) {
y <- y %>%
# Uppgifter som rör given onkologisk behandling redovisas enbart t.o.m.
# föregående år p.g.a. eftersläpning i rapporteringen
dplyr::filter(lubridate::year(a_diag_dat) <= report_end_year - 1)
} else if (code(x) == "nkbc47" & lubridate::semester(nkbc_data_date) == 1) {
y <- y %>%
# Vid datauttag under första halvåret sker redovisning enbart t.o.m.
# föregående år p.g.a. eftersläpning i inrapportering av
# operations-formulär för fall med preop onk beh
dplyr::filter(lubridate::year(a_diag_dat) <= report_end_year - 1)
} else if (code(x) == "nkbc30") {
y <- y %>%
# 5-årsöverlevnad kräver 5 års uppföljning
dplyr::filter(lubridate::year(a_diag_dat) <= report_end_year - 5)
} else if (code(x) == "nkbc30b") {
y <- y %>%
# 10-årsöverlevnad kräver 10 års uppföljning
dplyr::filter(lubridate::year(a_diag_dat) <= report_end_year - 10)
}
return(y)
}
}
#' @export
filter_pop.nkbcind <- function(x) x$filter_pop
#' @export
mutate_other_vars.nkbcind <- function(x) {
function(y, ...) {
y %>%
dplyr::mutate(
dplyr::across(
where(is.factor) & dplyr::any_of(other_vars_inca(x)),
~ forcats::fct_explicit_na(., "Uppgift saknas")
)
) %>%
dplyr::mutate(
dplyr::across(
where(is.factor) & dplyr::any_of(paste0(other_vars_inca(x), "_en")),
~ forcats::fct_explicit_na(., "Missing")
)
)
}
}
#' @export
mutate_outcome.nkbcind <- function(x) x$mutate_outcome
#' @export
outcome.nkbcind <- function(x) if (!is.null(x$outcome)) x$outcome else "outcome"
#' @export
prop_within_unit.nkbcind <- function(x) x$prop_within_unit
#' @export
prop_within_value.nkbcind <- function(x) x$prop_within_value
#' @export
target_values.nkbcind <- function(x) x$target_values
# TODO Kolla upp
# target_values.nkbcind <- function(x) {
# if (!is.null(x$target_values)) {
# x$target_values
# } else {
# rep(list(NULL), length(outcome(x)))
# }
# }
#' @export
period_dat_var.nkbcind <- function(x) x$period_dat_var
#' @export
sjhkod_var.nkbcind <- function(x) x$sjhkod_var
#' @export
geo_units_vars.nkbcind <- function(x) {
if (!is.null(x$geo_units_vars)) {
x$geo_units_vars
} else {
c("region", "landsting", "sjukhus")
}
}
#' @export
other_vars.nkbcind <- function(x) x$other_vars
#' @export
other_vars_inca.nkbcind <- function(x) {
if (!is.null(x$other_vars_inca)) {
x$other_vars_inca
} else {
other_vars(x)
}
}
#' @export
hide_less_than.nkbcind <- function(x) x$hide_less_than
#' @export
outcomeTitle.nkbcind <- function(x, locale = "sv", ...) {
if (!is.null(x$outcome_title)) {
x$outcome_title[locale]
} else {
as.list(lab(x)[locale])
}
}
#' @export
textBeforeSubtitle.nkbcind <- function(x, locale = "sv", ...) {
c(
sv = paste0("Bland ", pop_short(x)["sv"], "."),
en = paste0("Among ", pop_short(x)["en"], ".")
)[locale]
}
#' @export
comment.nkbcind <- function(x, locale = "sv", ...) {
if (!is.null(x$comment)) {
x$comment[locale]
} else {
c(sv = "", en = "")[locale]
}
}
#' @export
description.nkbcind <- function(x, report_end_year = report_end_year, w_target_values = FALSE, locale = "sv", ...) {
# Lägga till "(andel inom ... dagar)" för kontinuerliga variabler
if (!is.null(prop_within_value(x))) {
target_levels_extra_txt_sv <- paste0("Andel inom ", prop_within_value(x), " ", ifelse(!is.null(prop_within_unit(x)), prop_within_unit(x), "dagar"), " ")
} else {
target_levels_extra_txt_sv <- NULL
}
# Lägga till "for proportion within ... days)" för kontinuerliga variabler
if (!is.null(prop_within_value(x))) {
target_levels_extra_txt_en <- paste0("Proportion within ", prop_within_value(x), " days ")
} else {
target_levels_extra_txt_en <- NULL
}
y <- list(
sv = c(
# Om indikatorn
paste(
c(
x$om_indikatorn$sv,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Målnivå: ", target_levels_extra_txt_sv, x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Målnivåer: ", target_levels_extra_txt_sv, x$target_values[1], "% (låg) ", x$target_values[2], "% (hög)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$sv,
if (!is.null(x$inkl_beskr_missca) && x$inkl_beskr_missca == TRUE) {
"Datum för välgrundad misstanke om cancer tillkom som variabel 2016 och innan detta har datum för första kontakt använts."
},
if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod")) {
paste(
"Uppgifterna redovisas uppdelat på sjukhus där onkologisk behandling ges, vilket i vissa fall kan innebära en annan enhet än anmälande/opererande enhet.",
"När antalet behandlade fall skiljer sig kraftigt från antalet anmälda fall vid en enhet kan starka selektionsmekanismer på basen av patient- och tumördata styra vilken enhet som ger onkologisk behandling."
)
},
if (!is.null(x$inkl_beskr_onk_beh) && x$inkl_beskr_onk_beh == TRUE) {
paste(
"Uppgifter som rör given onkologisk behandling redovisas enbart t.o.m.",
report_end_year - 1, "p.g.a. eftersläpning i rapporteringen."
)
},
if (!is.null(x$inkl_beskr_overlevnad_5ar) && x$inkl_beskr_overlevnad_5ar == TRUE) {
paste0("Uppgifter som rör 5-årsöverlevnad redovisas t.o.m. diagnosår ", report_end_year - 5, ".")
},
if (!is.null(x$inkl_beskr_overlevnad_10ar) && x$inkl_beskr_overlevnad_10ar == TRUE) {
paste0("Uppgifter som rör 10-årsöverlevnad redovisas t.o.m. diagnosår ", report_end_year - 10, ".")
},
paste(
"Ett fall per bröst kan rapporterats till Nationellt kvalitetsregister för bröstcancer (NKBC).",
"Det innebär att samma person kan finnas med i statistiken två gånger."
),
"Skövde och Lidköpings sjukhus presenteras tillsammans som Skaraborg.",
if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod", "d_onkpreans_sjhkod", "d_onkpostans_sjhkod", "d_prim_beh_sjhkod")) {
"Malmö och Lunds sjukhus presenteras tillsammans som Lund/Malmö."
}
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning$sv,
paste0("Population: ", x$pop["sv"], "."),
paste0(
"Uppgifterna redovisas uppdelat på ",
dplyr::case_when(
x$sjhkod_var %in% "a_inr_sjhkod" ~
"anmälande sjukhus",
x$sjhkod_var %in% "op_inr_sjhkod" ~
"opererande sjukhus",
x$sjhkod_var %in% "d_opans_sjhkod" ~
"opererande sjukhus, och om detta saknas, anmälande sjukhus",
x$sjhkod_var %in% "d_pat_sjhkod" ~
"opererande sjukhus för primärt opererade fall, annars anmälande sjukhus",
x$sjhkod_var %in% "d_prim_beh_sjhkod" ~
"sjukhus ansvarig för primär behandling",
x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod") ~
"sjukhus där onkologisk behandling ges",
x$sjhkod_var %in% c("d_onkpreans_sjhkod", "d_onkpostans_sjhkod") ~
"rapporterande sjukhus där onkologisk behandling ges, och om detta saknas, sjukhus ansvarigt för rapportering av onkologisk behandling, sjukhus för onkologisk behandling, anmälande sjukhus",
x$sjhkod_var %in% "d_uppfans_sjhkod" ~
"sjukhus ansvarigt för rapportering av uppföljning, och om detta saknas, sjukhus för onkologisk behandling, sjukhus ansvarigt för rapportering av onkologisk behandling, opererande sjukhus, anmälande sjukhus"
),
"."
)
),
collapse = "\n<p></p>\n"
)
),
en = c(
# Om indikatorn
paste(
c(
x$om_indikatorn$en,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Target level: ", target_levels_extra_txt_en, x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Target levels: ", target_levels_extra_txt_en, x$target_values[1], "% (low) ", x$target_values[2], "% (high)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$en,
if (!is.null(x$inkl_beskr_missca) && x$inkl_beskr_missca == TRUE) {
"The date of well-founded suspicion of cancer was added as a variable in 2016 and before this date the date of first contact was used."
},
if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod")) {
paste(
"The information is presented per hospital where oncological treatment is given, which in some cases may be a unit other than the notifying unit/unit performing surgery.",
"When the number of treated cases differs greatly from the number of reported cases at a unit, strong selection mechanisms based on patient and tumor data can direct which unit provides oncological treatment."
)
},
if (!is.null(x$inkl_beskr_onk_beh) && x$inkl_beskr_onk_beh == TRUE) {
paste(
"Information relating to given oncological treatment is presented only up to",
report_end_year - 1, "due to lag in reporting."
)
},
if (!is.null(x$inkl_beskr_overlevnad_5ar) && x$inkl_beskr_overlevnad_5ar == TRUE) {
paste0("Information relating to 5-year survival is presented up to diagnosis year ", report_end_year - 5, ".")
},
if (!is.null(x$inkl_beskr_overlevnad_10ar) && x$inkl_beskr_overlevnad_10ar == TRUE) {
paste0("Information relating to 10-year survival is presented up to diagnosis year ", report_end_year - 10, ".")
},
paste(
"One case per breast can be reported to the National Quality Registry for Breast Cancer (NKBC).",
"This means that the same person can be included in the statistics twice."
),
"Skövde and Lidköping hospitals are presented as Skaraborg.",
if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod", "d_onkpreans_sjhkod", "d_onkpostans_sjhkod", "d_prim_beh_sjhkod")) {
"Lund and Malmö hospitals are presented as Lund/Malmö."
}
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning_en,
paste0("Population: ", x$pop["en"], "."),
paste0(
"The information is presented per ",
dplyr::case_when(
x$sjhkod_var %in% "a_inr_sjhkod" ~
"notifying hospital",
x$sjhkod_var %in% "op_inr_sjhkod" ~
"hospital performing surgery",
x$sjhkod_var %in% "d_opans_sjhkod" ~
"hospital performing surgery and, if missing, notifying hospital",
x$sjhkod_var %in% "d_pat_sjhkod" ~
"hospital performing surgery for cases with primary surgery, otherwise notifying hospital",
x$sjhkod_var %in% "d_prim_beh_sjhkod" ~
"hospital responsible for primary treatment",
x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod") ~
"hospital where oncological treatment is given",
x$sjhkod_var %in% c("d_onkpreans_sjhkod", "d_onkpostans_sjhkod") ~
"reporting hospital where oncological treatment is given and if missing, hospital responsible for reporting oncological treatment, hospital for oncological treatment, reporting hospital",
x$sjhkod_var %in% "d_uppfans_sjhkod" ~
"hospital responsible for reporting follow-up and if missing, hospital for oncological treatment, hospital responsible for reporting oncological treatment, hospital performing surgery, reporting hospital"
),
"."
)
),
collapse = "\n<p></p>\n"
)
)
)
return(y[locale])
}
#' @export
description.keynkbcind <- function(x, report_end_year = report_end_year, w_target_values = FALSE, locale = "sv", ...) {
x_ordinary <- x
class(x_ordinary) <- setdiff(class(x), "keynkbcind")
if (w_target_values) {
tmp_description <- description(x_ordinary, report_end_year, w_target_values = TRUE, locale = c("sv", "en"))
tmp_description$sv[1] <- paste(
c(
tmp_description$sv[1],
paste0("För motsvarande indikator med flera urvalsmöjligheter, se under ’", get_meny(x, locale = "sv"), "’.")
),
collapse = "\n<p></p>\n"
)
tmp_description$en[1] <- paste(
c(
tmp_description$en[1],
paste0("For the corresponding indicator with several selection options, see under ’", get_meny(x, locale = "en"), "’.")
),
collapse = "\n<p></p>\n"
)
} else {
tmp_description <- description(x_ordinary, report_end_year, w_target_values = FALSE, locale = c("sv", "en"))
tmp_description$sv[1] <- paste(
c(
tmp_description$sv[1],
"För motsvarande indikator med målnivå, se under ’Nyckelindikatorer’."
),
collapse = "\n<p></p>\n"
)
tmp_description$en[1] <- paste(
c(
tmp_description$en[1],
"For the corresponding indicator with target level, see under 'Key indicators'."
),
collapse = "\n<p></p>\n"
)
}
return(tmp_description[locale])
}
#' @export
description.nkbc33 <- function(x, report_end_year = report_end_year, w_target_values = FALSE, locale = "sv", ...) {
# Anpassad för rapporteringa av täckningsgrad mot cancerregistret (nkbc33)
y <- list(
sv = c(
# Om indikatorn
paste(
c(
x$om_indikatorn$sv,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Målnivå: ", x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Målnivåer: ", x$target_values[1], "% (låg) ", x$target_values[2], "% (hög)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$sv,
paste(
"Ett fall per bröst kan rapporterats till Nationellt kvalitetsregister för bröstcancer (NKBC).",
"Det innebär att samma person kan finnas med i statistiken upp till två gånger."
)
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning$sv,
paste0("Population: ", x$pop["sv"], "."),
"Uppgifterna redovisas uppdelat på den sjukvårdsregion personen var bosatt i vid diagnos."
),
collapse = "\n<p></p>\n"
)
),
en = c(
# Om indikatorn
paste(
c(
x$om_indikatorn$en,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Target level: ", x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Target levels: ", x$target_values[1], "% (low) ", x$target_values[2], "% (high)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$en,
paste(
"One case per breast can be reported to the National Quality Registry for Breast Cancer (NKBC).",
"This means that the same person can be included in the statistics twice."
)
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning$en,
paste0("Population: ", x$pop["en"], "."),
"The information is presented per healthcare region in which the person resided at the time of diagnosis"
),
collapse = "\n<p></p>\n"
)
)
)
return(y[locale])
}
#' @export
description_inca.nkbcind <- function(x, w_target_values = FALSE, ...) {
# Lägga till "(andel inom ... dagar)" för kontinuerliga variabler
if (!is.null(prop_within_value(x))) {
target_levels_extra_txt_sv <- paste0("Andel inom ", prop_within_value(x), " ", ifelse(!is.null(prop_within_unit(x)), prop_within_unit(x), "dagar"), " ")
} else {
target_levels_extra_txt_sv <- NULL
}
c(
# Om indikatorn
paste(
c(
x$om_indikatorn$sv,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Målnivå: ", target_levels_extra_txt_sv, x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Målnivåer: ", target_levels_extra_txt_sv, x$target_values[1], "% (låg) ", x$target_values[2], "% (hög)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$sv,
if (!is.null(x$inkl_beskr_missca) && x$inkl_beskr_missca == TRUE) {
"Datum för välgrundad misstanke om cancer tillkom som variabel 2016 och innan detta har datum för första kontakt använts."
},
if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod")) {
paste(
"Uppgifterna redovisas uppdelat på sjukhus där onkologisk behandling ges, vilket i vissa fall kan innebära en annan enhet än anmälande/opererande enhet.",
"När antalet behandlade fall skiljer sig kraftigt från antalet anmälda fall vid en enhet kan starka selektionsmekanismer på basen av patient- och tumördata styra vilken enhet som ger onkologisk behandling."
)
},
if (!is.null(x$inkl_beskr_onk_beh) && x$inkl_beskr_onk_beh == TRUE) {
paste(
"Rapportering av given onkologisk behandling sker på ett eget formulär till kvalitetsregistret, separat från anmälan.",
"Rapporteringen sker cirka 1 - 1,5 år efter anmälan."
)
},
# if (!is.null(x$inkl_beskr_overlevnad_5ar) && x$inkl_beskr_overlevnad_5ar == TRUE) {
# paste0("Uppgifter som rör 5 års överlevnad redovisas enbart t.o.m. ", report_end_year - 5, ".")
# },
paste(
"Ett fall per bröst kan rapporterats till det nationella kvalitetsregistret för bröstcancer.",
"Det innebär att samma person kan finnas med i statistiken upp till två gånger."
)
# "Skövde och Lidköpings sjukhus presenteras tillsammans som Skaraborg.",
# if (x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod", "d_onkpreans_sjhkod", "d_onkpostans_sjhkod", "d_prim_beh_sjhkod")) {
# "Malmö och Lunds sjukhus presenteras tillsammans som Lund/Malmö."
# }
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning$sv,
paste0("Population: ", x$pop["sv"], "."),
paste0(
"Uppgifterna redovisas uppdelat på ",
dplyr::case_when(
x$sjhkod_var %in% "a_inr_sjhkod" ~
"anmälande sjukhus",
x$sjhkod_var %in% "op_inr_sjhkod" ~
"opererande sjukhus",
x$sjhkod_var %in% "d_opans_sjhkod" ~
"opererande sjukhus, och om detta saknas, anmälande sjukhus",
x$sjhkod_var %in% "d_pat_sjhkod" ~
"opererande sjukhus för primärt opererade fall, annars anmälande sjukhus",
x$sjhkod_var %in% "d_prim_beh_sjhkod" ~
"sjukhus ansvarig för primär behandling",
x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod") ~
"sjukhus där onkologisk behandling ges",
x$sjhkod_var %in% c("d_onkpreans_sjhkod", "d_onkpostans_sjhkod") ~
"rapporterande sjukhus där onkologisk behandling ges, och om detta saknas, sjukhus ansvarigt för rapportering av onkologisk behandling, sjukhus för onkologisk behandling, anmälande sjukhus",
x$sjhkod_var %in% "d_uppfans_sjhkod" ~
"sjukhus ansvarigt för rapportering av uppföljning, och om detta saknas, sjukhus för onkologisk behandling, sjukhus ansvarigt för rapportering av onkologisk behandling, opererande sjukhus, anmälande sjukhus"
),
"."
)
),
collapse = "\n<p></p>\n"
)
)
}
#' @export
description_inca.keynkbcind <- function(x, w_target_values = FALSE, ...) {
x_ordinary <- x
class(x_ordinary) <- setdiff(class(x), "keynkbcind")
if (w_target_values) {
tmp_description <- description_inca(x_ordinary, w_target_values = TRUE)
tmp_description[1] <- paste(
c(
tmp_description[1],
paste0("För motsvarande indikator med flera urvalsmöjligheter, se under ’", get_meny(x, locale = "sv"), "’.")
),
collapse = "\n<p></p>\n"
)
} else {
tmp_description <- description_inca(x_ordinary, w_target_values = FALSE)
tmp_description[1] <- paste(
c(
tmp_description[1],
"För motsvarande indikator med målnivå, se under ’Nyckelindikatorer’."
),
collapse = "\n<p></p>\n"
)
}
return(tmp_description)
}
#' @export
description_inca.nkbc33 <- function(x, w_target_values = FALSE, ...) {
# Anpassad för rapporteringa av täckningsgrad mot cancerregistret (nkbc33)
c(
# Om indikatorn
paste(
c(
x$om_indikatorn$sv,
if (w_target_values & !is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Målnivå: ", x$target_values[1], "%"),
length(x$target_values) == 2 ~
paste0("Målnivåer: ", x$target_values[1], "% (låg) ", x$target_values[2], "% (hög)")
)
}
),
collapse = "\n<p></p>\n"
),
# Vid tolkning
paste(
c(
x$vid_tolkning$sv,
paste(
"Ett fall per bröst kan rapporterats till det nationella kvalitetsregistret för bröstcancer.",
"Det innebär att samma person kan finnas med i statistiken upp till två gånger."
)
),
collapse = "\n<p></p>\n"
),
# Teknisk beskrivning
paste(
c(
x$teknisk_beskrivning$sv,
paste0("Population: ", x$pop["sv"], "."),
"Sjukhus är i första hand inrapporterande sjukhus på anmälan i kvalitetsregistret och om detta saknas remitterande klinik i cancerregistret och om detta saknas arbetskodklinik i cancerregistret."
),
collapse = "\n<p></p>\n"
)
)
}
#' @export
periodDefaultStart.nkbcind <- function(x, ...) {
if (code(x) %in% c("nkbc30", "nkbc30b")) {
periodDefaultStart <- 2008
} else {
periodDefaultStart <- NULL
}
return(periodDefaultStart)
}
#' @export
varOtherComparison.nkbcind <- function(x, varbesk = varbesk_other_vars, locale = "sv", ...) {
if (all(geo_units_vars(x) %in% "region")) {
varOtherComparison <- NULL
} else {
var_other_comparison <- "d_pat_lkfdia_lan"
if (sjhkod_var(x) != "a_inr_sjhkod") {
var_other_comparison <- c(var_other_comparison, "d_a_inr_sjukhus")
}
varOtherComparison <- lapply(var_other_comparison, function(y) list(var = y, label = varbesk[[y]][locale]))
}
return(varOtherComparison)
}
#' @export
varOther.nkbcind <- function(x, varbesk = varbesk_other_vars, locale = "sv", ...) {
if (is.null(x$other_vars)) {
return(NULL)
} else {
lapply(x$other_vars, function(y) list(var = y, label = varbesk[[y]][locale]))
}
}
#' @export
varOther_inca.nkbcind <- function(x, varbesk = varbesk_other_vars, ...) {
if (is.null(x$other_vars_inca)) {
varOther(x, varbesk = varbesk, ...)
} else {
lapply(x$other_vars_inca, function(y) list(var = y, label = varbesk[[y]]["sv"]))
}
}
#' @export
propWithinValue.nkbcind <- function(x, ...) {
if (!is.null(x$prop_within_value)) {
propWithinValue <- x$prop_within_value
} else {
# work-around, använd standardvärde
propWithinValue <- rep(30, length(outcome(x)))
}
return(propWithinValue)
}
#' @export
propWithinUnit.nkbcind <- function(x, locale = "sv", ...) {
if (!is.null(x$prop_within_unit)) {
propWithinUnit <- x$prop_within_unit[locale]
} else {
# work-around, använd standardvärde
propWithinUnit <- c(sv = "dagar", en = "days")[locale]
}
return(propWithinUnit)
}
#' @export
hideLessThan.nkbcind <- function(x, ...) {
if (!is.null(x$hide_less_than)) {
hideLessThan <- x$hide_less_than
} else {
# work-around, använd standardvärde
hideLessThan <- 5
}
return(hideLessThan)
}
#' @export
kpl_description.nkbcind <- function(x, ...) {
if (!is.null(prop_within_value(x))) {
# x antas vara en ledtid
lab_mod <- paste("Tid från", tolower(lab(x)["sv"]), "inom", prop_within_value(x), "dagar")
} else {
lab_mod <- lab(x)["sv"] %>%
stringr::str_replace(", måluppfyllelse", "")
}
# Adopted from https://stackoverflow.com/a/56125845
str_to_lower2 <- function(x) {
str_keep_upper <- c(
"ER",
"ER-positivitet",
"PR",
"PR-positivitet",
"HER2",
"HER2-positivitet",
"IHC",
"ISH",
"(ISH)",
"Ki67",
"NHG"
)
paste(lapply(strsplit(x, " "), function(y) ifelse(y %in% str_keep_upper, y, tolower(y)))[[1]], collapse = " ")
}
paste(
c(
paste0("Andel med ", str_to_lower2(lab_mod), " bland ", pop(x)["sv"], ".") %>%
# stringr::str_to_sentence(locale = "sv") %>%
stringr::str_replace_all("min vårdplan", "Min Vårdplan"),
if (!is.null(x$inkl_beskr_missca) && x$inkl_beskr_missca == TRUE) {
"Datum för välgrundad misstanke om cancer tillkom som variabel 2016 och innan detta har datum för 1:a kontakt använts."
},
paste0(
"Fall beskrivs utifrån ",
dplyr::case_when(
x$period_dat_var %in% "a_diag_dat" ~ "diagnosdatum",
x$period_dat_var %in% "d_pre_onk_dat" ~ "startdatum för preoperativ onkologisk behandling",
x$period_dat_var %in% "op_kir_dat" ~ "operationsdatum"
),
" och ",
dplyr::case_when(
x$sjhkod_var %in% "a_inr_sjhkod" ~
"anmälande sjukhus",
x$sjhkod_var %in% "op_inr_sjhkod" ~
"opererande sjukhus",
x$sjhkod_var %in% "d_opans_sjhkod" ~
"opererande sjukhus, och om detta saknas, anmälande sjukhus",
x$sjhkod_var %in% "d_pat_sjhkod" ~
"opererande sjukhus för primärt opererade fall, annars anmälande sjukhus",
x$sjhkod_var %in% "d_prim_beh_sjhkod" ~
"sjukhus ansvarig för primär behandling",
x$sjhkod_var %in% c("post_inr_sjhkod", "pre_inr_sjhkod", "d_onk_sjhkod") ~
"sjukhus där onkologisk behandling ges",
x$sjhkod_var %in% c("d_onkpreans_sjhkod", "d_onkpostans_sjhkod") ~
"rapporterande sjukhus där onkologisk behandling ges, och om detta saknas, sjukhus ansvarigt för rapportering av onkologisk behandling, sjukhus för onkologisk behandling, anmälande sjukhus",
x$sjhkod_var %in% "d_uppfans_sjhkod" ~
"sjukhus ansvarigt för rapportering av uppföljning, och om detta saknas, sjukhus för onkologisk behandling, sjukhus ansvarigt för rapportering av onkologisk behandling, opererande sjukhus, anmälande sjukhus"
),
"."
),
if (!is.null(x$target_values)) {
dplyr::case_when(
length(x$target_values) == 1 ~
paste0("Målnivå: ", x$target_values[1], "%."),
length(x$target_values) == 2 ~
paste0("Målnivåer: ", x$target_values[1], "% (låg) ", x$target_values[2], "% (hög).")
)
}
),
collapse = " "
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.