library(magrittr)
library(knitr)
library(kableExtra)
library(dplyr)
library(janitor)

# make sure to use a temporary directory AND absolute paths, e.g. that figs
# can be found also when deployed at a server. See below link for explanation
# https://rgriff23.github.io/2017/04/25/how-to-knit-for-mysite.html
# Also make sure we use tempdir() as working directory so we do not clutter
# the package of the hosting shiny app
# workDir <- tempdir()
# knitr::opts_knit$set(base.dir = workDir,
#                      base.url = file.path(paste0(tempdir(), "/")),
#                      root.dir = workDir)

# Handle both html and latex (pdf) output. Actually to avoid setting 'format'
# for each kable call
# inspired by https://stackoverflow.com/questions/46080853/why-does-rendering-a-pdf-from-rmarkdown-require-closing-rstudio-between-renders
options(knitr.table.format = params$tableFormat)

knitr::opts_chunk$set(warnings = FALSE, echo = FALSE)
options(stringsAsFactors = FALSE)

# For some reason Shiny Server does not get the server locale settings right.
# To display dates correct, enforce locale here:
Sys.setlocale("LC_TIME", "nb_NO.UTF-8")
colPrimary <- c("#000059",
                "#084594",
                "#2171b5",
                "#4292c6",
                "#6baed6",
                "#c6dbef")
colNeutral <- c("#4D4D4D", "#737373", "#A6A6A6", "#DADADA")
colKontrast <- "#FF7260"
showN <- 14
# DATAGRUNNLAG: PERIODE FOR SQL SPØRRING

# NYESTE DATO:
# Finne nyeste prosedyredato (=nyeste registrering). Vi ønsker ikke at
# forhåndsregisrerte planlagte forløp kommer med i rapporten. Derfor brukes
# gårsdagens dato som referanse, ingen forløp etter denne kommer med .
# Vi vil dermed også kunne se dersom ingen nye registreringer gjøres eller om
# overføringer har stoppet opp

# ELDSTE DATO:
# Januar fra i fjor (hele foregående år skal vise i rapporten)

if(params$registryName %in% "noricStagingNasjonal"){
  nyeste_reg <- noric::getLatestEntryHospital(
    registryName = params$registryName, 
    reshID = params$reshID)

} else {
  nyeste_reg <- noric::getLatestEntry(registryName = params$registryName)
}

periode_data <- data.frame(
  siste_dato = min((as.Date(Sys.time()) - 1),
                   nyeste_reg))

periode_data %<>%
  dplyr::mutate(
    forste_dato  = lubridate::floor_date(.data$siste_dato,
                                         "month") - months(showN))
timeTableMonth <- data.frame(
  monthDato = seq(periode_data$forste_dato, 
                  periode_data$siste_dato,
                  by = "month")) %>% 
  dplyr::transmute(maaned = as.factor(format(x = .data$monthDato, 
                                             format = "%Y-%m"))) %>% 
  dplyr::mutate(maaned = as.ordered(maaned))


rangeProsDato <- paste(format(periode_data$forste_dato, 
                              "%d/%m-%Y"), 
                       "til", 
                       format(periode_data$siste_dato, 
                              "%d/%m-%Y"))
if(params$registryName %in% "noricStagingNasjonal"){

# SPørring til NASJONAL database. Kun utvalgt sykehus
    AP <- noric::getPrepApData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = params$reshID)

  AnP <- noric::getPrepAnPData(registryName = params$registryName,
                               fromDate  = periode_data$forste_dato,
                               toDate = periode_data$siste_dato,
                               singleRow = FALSE, 
                             singleHospital = params$reshID)

  evaluate_AnP <- nrow(AnP) > 0 # for conditional running of AnP-related chunks
  # (TRUE when AnP contains data)


  SS <- noric::getPrepSsData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = params$reshID)

  AnD <- noric::getPrepAnDData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = params$reshID)


  } else{
    # SPørring til LOKAL database. 
    # Kun et sykehus, som er registry name

  AP <- noric::getPrepApData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = NULL)

  AnP <- noric::getPrepAnPData(registryName = params$registryName,
                               fromDate  = periode_data$forste_dato,
                               toDate = periode_data$siste_dato,
                               singleRow = FALSE, 
                             singleHospital = NULL)

  evaluate_AnP <- nrow(AnP) > 0 # for conditional running of AnP-related chunks
  # (TRUE when AnP contains data)


  SS <- noric::getPrepSsData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = NULL)

  AnD <- noric::getPrepAnDData(registryName = params$registryName,
                             fromDate  = periode_data$forste_dato,
                             toDate = periode_data$siste_dato,
                             singleRow = FALSE, 
                             singleHospital = NULL)
}
AnP %<>% 
  dplyr::mutate(
    AnnenProsType = factor(x = AnnenProsType,
                           levels = c("Høyre hjertekateterisering",
                                      "Temporær pacemaker",
                                      "Perikardiocentese",
                                      "Ventilfilming",
                                      "Lukking av ASD/PFO",
                                      "Lukking av venstre aurikkel",
                                      "Impella",
                                      "Plugging av PVL",
                                      "PTSMA",
                                      "Aortaballongpumpe",
                                      "ECMO", 
                                      "Myokardiell biopsi", 
                                      "Tricuspidal klaff TEER"),
                           labels = c("Høyre kat.",
                                      "Temp. PM",
                                      "Perikardiocentese",
                                      "Ventilfilming",
                                      "Lukking ASD/PFO",
                                      "Lukking v. aurikkel",
                                      "Impella",
                                      "Plugging av PVL",
                                      "PTSMA",
                                      "Aortaballongpumpe",
                                      "ECMO", 
                                      "Myokardiell biopsi", 
                                      "Tricuspidal klaff TEER")))
SS %<>% dplyr::select(AvdRESH,
                      ForlopsID,
                      ProsedyreDato,
                      Indikasjon,
                      ProsedyreType,
                      Stentnavn,
                      StentType,
                      maaned)


SS %<>% dplyr::mutate(

  Indikasjon = factor(
    dplyr::case_when(Indikasjon == "Stabil koronarsykdom" ~ "SAP",
                     Indikasjon == "UAP" ~ "UAP",
                     Indikasjon == "NSTEMI" ~ "NSTEMI",
                     Indikasjon %in% c("STEMI",
                                       "STEMI > 24h",
                                       "STEMI/Rescue PCI")
                     ~ "STEMI",
                     is.na(Indikasjon) ~ NA_character_,
                     TRUE ~ "Annet"),
    levels = c("SAP", "UAP", "NSTEMI", "STEMI", "Annet", NA)),

  ProsedyreType2 = factor(
    dplyr::case_when(
      ProsedyreType %in% c("Direktestent",
                           "Ballong + Stent",
                           "Medikamentell ballong + Stent") ~ "Stent",
      ProsedyreType == "Ballongdilatasjon" ~ "POBA",
      ProsedyreType == "Wireforsøk" ~ "Wireforsøk",
      ProsedyreType == "Rotablator" ~ "Rotablator",
      TRUE ~ "Annet"),
    levels = c("Stent", "POBA", "Wireforsøk", "Rotablator", "Annet")))
AP %<>% 
  dplyr::mutate(

    ProsedyreDato = as.factor(ProsedyreDato), 
    Sykehusnavn = as.factor(Sykehusnavn),

    Indikasjon2 = factor(
      dplyr::case_when(
        Indikasjon == "Stabil koronarsykdom" ~ "SAP",
        Indikasjon == "UAP" ~ "UAP",
        Indikasjon %in% c("STEMI",
                          "Hjertestans ved STEMI",
                          "STEMI > 24h",
                          "STEMI/Rescue PCI") ~ "STEMI",
        Indikasjon == "Uklare brystsmerter" ~ "Uklare brystsmerter",
        Indikasjon == "NSTEMI" ~ "NSTEMI",
        TRUE ~ "Annet"),
      levels = c("Uklare brystsmerter", 
                 "SAP", 
                 "UAP", 
                 "NSTEMI", 
                 "STEMI", 
                 "Annet")), 

    Hastegrad = factor(Hastegrad,
                       levels = c("Akutt",
                                  "Subakutt",
                                  "Planlagt",
                                  NA)), 
    SkjemaStatusKomplikasjoner = factor(SkjemaStatusKomplikasjoner, 
                                        levels = c(-1, 0, 1, NA)),
    SkjemastatusHovedskjema = factor(SkjemastatusHovedskjema, 
                                        levels = c(-1, 0, 1, NA)),
    SkjemaStatusUtskrivelse = factor(SkjemaStatusUtskrivelse, 
                                        levels = c(-1, 0, 1, NA)),


    # Noen form for alvorlig blødning på avdeling
    komplik_avd_alvorligBlodning =  ifelse(
      (AvdKompBlodningMajor  %in% "Ja" |
        AvdKompHbFallStor %in% "Ja" |
        AvdKompForlengetOppholdStor %in% "Ja" |
        AvdKompBlodtransfusjon %in% "Ja" |
        AvdKompKirurgiskBeh %in% "Ja" |
        AvdKompPseudoaneurysme %in% "Ja"), 
      "Ja", 
      NA_character_), 


    # Noen form for alvorlig blødning på avdeling
    komplik_avd_ovrigBlodning =  ifelse(
      (AvdKompBlodningMinor  %in% "Ja" |
        AvdKompHematomStor %in% "Ja" |
        AvdKompForlengetTidStor %in% "Ja" ), 
      "Ja", 
      NA_character_))


AP %<>%
  noric::legg_til_antall_stent(df_ap =  ., df_ss = SS) %>%
  dplyr::mutate(
    Nstents = ifelse(is.na(.data$antall_stent),
                     0,
                     .data$antall_stent))
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.1)  # set progress to 10%

r if(params$tableFormat !="html") {"<!--"}

Månedsrapport: Invasive prosedyrer {-}

Denne rapporten er generert ved hjelp av resultatløsningen Rapporteket og er kun ment til internt bruk!

Rapporten inneholder tabeller og figurer med resultater basert på forløp registrert ved r params$hospitalName. Opptellinger og statistikker er gjort per forløp/prosedyre, og ikke per individ. Tabellene og figurene presenteres med data fra perioden r rangeProsDato.

Eventuelle spørsmål knyttet til rapporten kan rettes til noric@helse-bergen.no r if(params$tableFormat !="html") {"-->"}

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}



Invasive koronare prosedyrer

Prosedyretype {#prosedyretype}

pal <- colPrimary[c(5, 3, 1)]


prosedyreTypeMaaned <- AP %>%
  dplyr::count(.data$maaned,
               .data$ProsedyreType) %>%
  dplyr::group_by(.data$maaned, .data$ProsedyreType)

prosedyreType_levels <- c("Angio", "Angio + PCI", "PCI")

prosedyreTypeMaaned %>% ggplot2::ggplot(
  ggplot2::aes(x = .data$maaned,
               y = .data$n,
               fill = factor(.data$ProsedyreType,
                             levels = prosedyreType_levels))
) +
  ggplot2::geom_bar(position = "stack", stat = "identity") +
  ggplot2::scale_fill_manual(values = pal) +
  ggplot2::theme_minimal() +
  ggplot2::xlab("") +
  ggplot2::ylab("Antall prosedyrer") +
  ggplot2::theme(legend.title = ggplot2::element_blank(),
                 axis.text = ggplot2::element_text(size = 12),
                 axis.text.x = ggplot2::element_text(angle = 45, hjust = 1), 
                 axis.title = ggplot2::element_text(size = 12), 
                 legend.text = ggplot2::element_text(size = 12))
cap <- paste0("Antall koronare angiografier og/eller PCI registrert ",
              "i NORIC per måned ved ", params$hospitalName,
              " i perioden ", 
              rangeProsDato, ".")

TabDataProsedyreType <- AP %>% 
  janitor::tabyl(maaned,
                 ProsedyreType) %>% 
  janitor::adorn_totals("col", name = "Totalt")

TabNProsedyreTypeMaaned <- timeTableMonth %>% 
  merge(., TabDataProsedyreType, 
        by.x = c("maaned"), by.y = c("maaned"),
        all.x = TRUE, all.y = FALSE) %>%
  janitor::adorn_totals("row", name = "Totalt")

TabNProsedyreType <- TabNProsedyreTypeMaaned %>% 
  dplyr::rename(" " = "maaned")

TabNProsedyreType[TabNProsedyreType == 0] <- " - "
TabNProsedyreType[is.na(TabNProsedyreType)] <- " - "

align <- c("l", rep("c", dim(TabNProsedyreType)[2] - 1))

noric::mst(tab = TabNProsedyreType, 
           type = params$tableFormat, 
           cap = cap,
           digs = c(0, 0, 0, 1), 
           align = rep("r", 5), 
           label = "TabNProsedyreType")

# if (params$tableFormat == "html") {
#   knitr::kable(x = TabNProsedyreType, caption = cap, align = align) %>%
#     kableExtra::kable_styling(bootstrap_options = c("striped",
#                                                     "hover",
#                                                     "condensed"),
#                               full_width = FALSE) %>%
#     kableExtra::column_spec(column = 1, width = "7em")
# } else if (params$tableFormat == "latex") {
#   knitr::kable(x = TabNProsedyreType,
#                format = params$tableFormat,
#                caption = cap,
#                booktabs = TRUE,
#                align = "r") %>%
#     kableExtra::kable_styling(latex_options = "HOLD_position")
# }
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.2)  # set progress to 20%


r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

Hastegrad

pal <- colPrimary[c(5, 3, 1)]

hastegradMaaned <- AP %>%
  dplyr::count(.data$maaned,
               .data$Hastegrad) %>%
  dplyr::group_by(.data$maaned, .data$Hastegrad)

hastegrad_levels <- c("Planlagt", "Subakutt", "Akutt")

hastegradMaaned %>% ggplot2::ggplot(
  ggplot2::aes(x = .data$maaned,
               y = .data$n,
               fill = factor(.data$Hastegrad,
                             levels = hastegrad_levels))) +
  ggplot2::geom_bar(position = "stack", stat = "identity") +
  ggplot2::scale_fill_manual(values = pal) +
  ggplot2::theme_minimal() +
  ggplot2::xlab("") +
  ggplot2::ylab("Antall prosedyrer") +
  ggplot2::theme(legend.title = ggplot2::element_blank(),
                 axis.text = ggplot2::element_text(size = 12),
                 axis.text.x = ggplot2::element_text(angle = 45, hjust = 1), 
                 axis.title = ggplot2::element_text(size = 12), 
                 legend.text = ggplot2::element_text(size = 12))
cap <- paste0("Antall prosedyrer registrert i NORIC per måned ",
              "og hastegrad ved ", params$hospitalName,
              " i perioden ", rangeProsDato, ".")

TabDataHastegrad <- AP %>% 
  janitor::tabyl(maaned,
                 Hastegrad) %>%
  janitor::adorn_totals("col", name = "Totalt")


TabNHastegrad <- timeTableMonth %>%
  merge(., TabDataHastegrad, 
        by.x = c("maaned"), by.y = c("maaned"),
        all.x = TRUE, all.y = FALSE) %>% 
  dplyr::rename(" " = "maaned") %>% 
  janitor::adorn_totals("row", name = "Totalt")

TabNHastegrad[TabNHastegrad == 0] <- " - "
TabNHastegrad[is.na(TabNHastegrad)] <- " - "

align <- c("l", rep("c", dim(TabNHastegrad)[2] - 1))
digs <-  rep(0, dim(TabNHastegrad)[2] )

noric::mst(tab = TabNHastegrad, 
           type = params$tableFormat, 
           cap = cap,
           digs = digs, 
           align = align, 
           label = "TabNHastegrad")

# if (params$tableFormat == "html") {
#   knitr::kable(x = TabNHastegrad, caption = cap, align = align) %>%
#     kableExtra::kable_styling(bootstrap_options = c("striped",
#                                                     "hover",
#                                                     "condensed"),
#                               full_width = FALSE) %>%
#     kableExtra::column_spec(column = 1, width = "7em")
# } else if (params$tableFormat == "latex") {
#   knitr::kable(x = TabNHastegrad,
#                format = params$tableFormat,
#                caption = cap,
#                booktabs = TRUE,
#                align = "r") %>%
#     kableExtra::kable_styling(latex_options = "HOLD_position")
# }


if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.3)  # set progress to 30%

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

Indikasjon

I denne figuren er indikasjonene Hjertestans ved STEMI, STEMI > 24h og STEMI/Rescue PCI slått sammen med STEMI.

Indikasjonen Annet inkluderer blant annet prosedyrer utført som ledd i utredning av hjerteklaffsykdom eller hjerterytmeforstyrrelser.

Indikasjon2Maaned <- AP %>%
  dplyr::count(.data$maaned,
               .data$Indikasjon2) %>%
  dplyr::group_by(.data$maaned, .data$Indikasjon2)

indikasjon2_levels <- c("Annet",
                        "STEMI",
                        "NSTEMI",
                        "UAP",
                        "SAP",
                        "Uklare brystsmerter")

Indikasjon2Maaned %>% ggplot2::ggplot(
  ggplot2::aes(x = .data$maaned,
               y = .data$n,
               fill = factor(.data$Indikasjon2,
                             levels = indikasjon2_levels))) +
  ggplot2::geom_bar(position = "stack", stat = "identity") +
  ggplot2::scale_fill_manual(values = rev(colPrimary)) +
  ggplot2::theme_minimal() +
  ggplot2::xlab("") +
  ggplot2::ylab("Antall prosedyrer") +
  ggplot2::theme(legend.title = ggplot2::element_blank(),
                 axis.text = ggplot2::element_text(size = 12),
                 axis.text.x = ggplot2::element_text(angle = 45, hjust = 1), 
                 axis.title = ggplot2::element_text(size = 12), 
                 legend.text = ggplot2::element_text(size = 12))
cap <- paste0("Antall prosedyrer registrert i NORIC per måned ",
              "og indikasjon ved ", params$hospitalName, " i perioden ",
              rangeProsDato, ".")

TabDataIndikasjon <- AP %>% 
  janitor::tabyl(maaned,
                 Indikasjon2) %>% 
  janitor::adorn_totals("col", name = "Totalt") 

TabNIndikasjon <- timeTableMonth %>% 
  merge(., TabDataIndikasjon, 
        by.x = c("maaned"), by.y = c("maaned"),
        all.x = TRUE, all.y = FALSE) %>% 
  janitor::adorn_totals("row", name = "Totalt") %>% 
  dplyr::rename(" " = "maaned")

TabNIndikasjon[TabNIndikasjon == 0] <- " - "
TabNIndikasjon[is.na(TabNIndikasjon)] <- " - "


align <- c("l", rep("c", dim(TabNIndikasjon)[2] - 1))
digs <-  rep(0, dim(TabNIndikasjon)[2] )

noric::mst(tab = TabNIndikasjon, 
           type = params$tableFormat, 
           cap = cap,
           digs = digs, 
           align = align, 
           label = "TabNIndikasjon")


# align <- c("l", rep("r", dim(TabNIndikasjon)[2] - 1))
# 
# if (params$tableFormat == "html") {
#   knitr::kable(x = TabNIndikasjon, caption = cap, align = align) %>%
#     kableExtra::kable_styling(bootstrap_options = c("striped",
#                                                     "hover",
#                                                     "condensed"),
#                               full_width = FALSE) %>%
#     kableExtra::column_spec(column = 1, width = "7em")
# } else if (params$tableFormat == "latex") {
#   knitr::kable(x = TabNIndikasjon,
#                format = params$tableFormat,
#                caption = cap,
#                booktabs = TRUE,
#                align = "c") %>%
#     kableExtra::kable_styling(latex_options = "HOLD_position")
# }
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.4)  # set progress to 40%


Annen diagnostikk og tilleggsprosedyrer

PrintTabTilleggCol <- function(VAR) {
  nVAR <- addmargins(
    table(
      AP$maaned,
      addNA(factor(
        AP[, VAR],
        levels = c("Ja", "Nei", "")))),
    margin = 1)

  nVARja <- sprintf(
    "%3.0f",
    nVAR[, which(colnames(nVAR) == "Ja")]
  )

  rVAR <- round(
    100 * prop.table(nVAR, margin = 1),
    digits = 1)

  rVARja <- sprintf(
    "%4.1f",
    rVAR[, which(colnames(rVAR) == "Ja")]
  )

  prosentJa <- paste0(nVARja, " (", rVARja, "%)")
  prosentJa[prosentJa == "  0 ( 0.0%)"] <- "    -    "

  return(prosentJa)
}

TilleggVars <- c(
  "FFR",
  "Doppler",
  "IVUS",
  "OCT",
  "IFR",
  "PA_Hyperemi",
  "PD_Hyperemi",
  "PDPA",
  "IMR",
  "NIRS",
  "HoyreHjerteKat",
  "Perikardiocentese",
  "Ventilfilming",
  "Pacemaker",
  "Aortaballongpumpe",
  "Impella",
  "Trombectomy",
  "ECMO",
  "AnnenDiag")

IndexMinEnTillegg <- unique(
  unlist(
    lapply(
      X = TilleggVars,
      FUN = function(X) which(AP[, X] == "Ja")
    )))

AP$IngenTillegg <- "Ja"
AP$IngenTillegg[IndexMinEnTillegg] <- "Nei"

TabTillegg <- cbind(
  PrintTabTilleggCol("FFR"),
  PrintTabTilleggCol("Doppler"),
  PrintTabTilleggCol("IVUS"),
  PrintTabTilleggCol("OCT"),
  PrintTabTilleggCol("IFR"),
  PrintTabTilleggCol("PA_Hyperemi"),
  PrintTabTilleggCol("PD_Hyperemi"),
  PrintTabTilleggCol("PDPA"),
  PrintTabTilleggCol("IMR"),
  PrintTabTilleggCol("NIRS"),
  PrintTabTilleggCol("HoyreHjerteKat"),
  PrintTabTilleggCol("Perikardiocentese"),
  PrintTabTilleggCol("Ventilfilming"),
  PrintTabTilleggCol("Pacemaker"),
  PrintTabTilleggCol("Aortaballongpumpe"),
  PrintTabTilleggCol("Impella"),
  PrintTabTilleggCol("Trombectomy"),
  PrintTabTilleggCol("ECMO"),
  PrintTabTilleggCol("AnnenDiag"),
  PrintTabTilleggCol("IngenTillegg")
)

TilleggLabels <- c(
  "FFR",
  "Doppler",
  "IVUS",
  "OCT",
  "IFR",
  "Pa",
  "Pd",
  "PdPa",
  "IMR",
  "NIRS",
  "Høyre kat.",
  "Perikardiocentese",
  "Ventilfilming",
  "PM",
  "IABP",
  "Impella",
  "Trombectomy",
  "ECMO",
  "Annen",
  "Ingen")


rownames(TabTillegg) <- c(levels(AP$maaned), "Totalt")
colnames(TabTillegg) <- c(TilleggLabels)


TabTillegg %<>%
  cbind(., AP %>%
          dplyr::count(maaned) %>%
          janitor::adorn_totals("row") %>%
          dplyr::transmute(Totalt = n))


Annen diagnostikk i direkte tilknytning til Angio/PCI

cap <- paste0("Antall (andel) prosedyrer registrert i NORIC der det er utført ",
              "annen diagnostikk per måned ved ", params$hospitalName, " i perioden ", 
              rangeProsDato, ".")

noric::mst(TabTillegg[, c("FFR",
                         "IFR",
                         "OCT",
                         "IVUS",
                         "Pa",
                         "Pd",
                         "PdPa",
                         "IMR",
                         "Totalt")],
           type = params$tableFormat,
           cap = cap,
           digs = 0,
           align =  rep("c", 9),
           label = "TabTilleggsProsedyre1")


Tilleggsprosedyrer i direkte tilknytning til Angio/PCI

cap <- paste0("Antall (andel) tilleggsprosedyrer registrert i NORIC der det er ",
              "utført koronare angiografi og/eller PCI per måned ved ",
              params$hospitalName, " i perioden ", rangeProsDato, ".")

noric::mst(TabTillegg[, c("Høyre kat.",
                         "Perikardiocentese",
                         "Ventilfilming",
                         "Totalt")],
           type = params$tableFormat,
           cap = cap,
           digs = 0,
           align = rep("c", 4),
           label = "TabTilleggsProsedyre2")

Adjuvant terapi i direkte tilknytning til Angio og/eller PCI

cap <- paste0("Antall (andel) prosedyrer registrert i NORIC der det er utført ",
              "tilleggsbehandling i tilknytning til angiografi og/eller PCI ",
              "per måned ved ", params$hospitalName,
              " i perioden ", rangeProsDato, ".")

noric::mst(TabTillegg[, c("PM",
                          "IABP",
                          "Impella",
                          "ECMO",
                          "Totalt")],
           type = params$tableFormat,
           cap = cap,
           digs = 0,
           align =  rep("c", 5),
           label = "TabTilleggsProsedyre3")
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.5)  # set progress to 50%

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}


Komplikasjoner

Eventuelle komplikasjoner forbundet med invasiv koronar utredning og behandling blir i NORIC delt i to kategorier, avhengig av om komplikasjonene blir oppdaget i tilknytning til selve prosedyren eller i observasjonstiden etterpå.


Komplikasjoner på kat.lab.

Her rapporteres komplikasjoner oppstått i tilknytning til selve prosedyren mens pasienten fortsatt er på hjertekateteriseringslaboratoriet (kat.lab.) Datagrunnlaget omfatter både planlagte, subakutte og akutte prosedyrer samlet, uavhengig av pasientens helsetilstand på forhånd. Vi har gruppert komplikasjonenene som Alvorlige eller Øvrige. Figuren viser antall registrerte komplikasjoner de siste r showN månedene. Merk at det kan ha blitt registrert flere typer komplikasjoner for en og samme pasient.



fig_df_kompLab <- AP %>%
  dplyr::select(
    #Alvorlige
    LabKompAllergiskAlvorlig,
    LabKompBehkrevendeArytmi,
    LabKompHemodynamisk,
    LabKompNeurologisk,
    LabKompVaskulaerIkkeKoronar,
    LabKompPerforasjon,
    LabKompTamponade,
    LabKompAkuttACBOperasjon,
    LabKompAnnenAlv,
    LabKompDod,
    LabKompProsedyrerelatertDod, 

    # Øvrige
    LabKompAllergiskLettModerat, 
    LabKompMistetStent, 
    LabKompVedvarSidegrensokkl

  ) %>% 
  tidyr::pivot_longer(cols = LabKompAllergiskAlvorlig:LabKompVedvarSidegrensokkl) %>% 
  dplyr::mutate(
    type_komplikasjon = case_when(
      name %in% "LabKompAllergiskAlvorlig" ~ "Allergisk reaksjon alvorlig", 
      name %in% "LabKompBehkrevendeArytmi" ~ "Behandlingskrevende arytmi", 
      name %in% "LabKompHemodynamisk" ~ "Hemodynamisk komplikasjon", 
      name %in% "LabKompNeurologisk" ~ "Nevrologisk komplikasjon", 
      name %in% "LabKompVaskulaerIkkeKoronar" ~ "Vaskul\u00e6r (ikke koronare kar)", 
      name %in% "LabKompPerforasjon" ~ "Perforasjon", 
      name %in% "LabKompTamponade" ~ "Tamponade", 
      name %in% "LabKompAkuttACBOperasjon" ~ "Akutt ACB-operasjon fra lab", 
      name %in% "LabKompAnnenAlv" ~ "Annen alvorlig komplikasjon", 
      name %in% "LabKompDod" ~ "D\u00f8d",
      name %in% "LabKompProsedyrerelatertDod" ~ " - herav prosedyrerelatert d\u00f8d",
      name %in% "LabKompAllergiskLettModerat" ~ "Allergisk lett/moderat",
      name %in% "LabKompMistetStent" ~ "Mistet stent",
      name %in% "LabKompVedvarSidegrensokkl" ~ "Vedvarende sidegrensokklusjon",
      TRUE ~ NA_character_ ), 

    gradering = ifelse(name %in% c("LabKompAllergiskLettModerat", 
                                   "LabKompMistetStent", 
                                   "LabKompVedvarSidegrensokkl"), 
                       "Øvrige", 
                       "Alvorlige komplikasjoner på lab")) %>% 
  dplyr::count(name, type_komplikasjon, value, gradering) %>%
  tidyr::pivot_wider(names_from = value, 
                     values_from = n, 
                     values_fill = 0) %>% 
  dplyr::select(name, type_komplikasjon, gradering, Ja)


# Rekkefølge: 
# Først alvorlig, med Annen alvorlig nederst. Så øvrige. 
# Prosedyrerelatert død etter død. 
synkende_rekkefolge_lab <- rbind(

  fig_df_kompLab %>% 
    dplyr::filter(name != "LabKompAnnenAlv", 
                  name != "LabKompProsedyrerelatertDod", 
                  gradering %in% "Alvorlige komplikasjoner på lab") %>% 
    dplyr::arrange(-Ja), 

  fig_df_kompLab %>% 
    dplyr::filter(name == "LabKompAnnenAlv"), 

  fig_df_kompLab %>% 
    dplyr::filter(gradering %in% "Øvrige") %>% 
    dplyr::arrange(-Ja)
  ) 

insert_prsRel_her <- which(synkende_rekkefolge_lab$name == "LabKompDod")
synkende_rekkefolge_lab %<>%
  dplyr::add_row(
    fig_df_kompLab %>% dplyr::filter(name == "LabKompProsedyrerelatertDod"),
    .after = insert_prsRel_her)


# PARAMETRE FOR FIGUR: 
synkende_rekkefolge_lab %<>% 
  dplyr::mutate(
    Sortering  = n():1, 

    alpha_soyler= ifelse(
      name %in% "LabKompProsedyrerelatertDod", 
      TRUE, 
      FALSE))  




synkende_rekkefolge_lab %>%
  ggplot2::ggplot(data = . , 
                  ggplot2::aes(x = reorder(type_komplikasjon, Sortering) ,
                               y = Ja)) +

  ggplot2::geom_bar(
    mapping = ggplot2::aes(alpha = alpha_soyler),
    stat="identity",
    width = 0.85,
    fill = colPrimary[4]) +
  ggplot2::scale_alpha_manual(breaks = c(TRUE, FALSE), 
                              values = c(0.5, 1)) +
  ggplot2::facet_grid(rows =  "gradering", 
                      scales = "free",
                      space='free', 
                      switch = "y") +
  ggplot2::coord_flip(clip = "off") +
  ggplot2::geom_text(
    mapping = ggplot2::aes(alpha = alpha_soyler,
                           label = Ja),
    vjust = 0.5,
    hjust = -0.15,
    size = 6) +
  ggplot2::theme_classic(base_size = 20) +
  ggplot2::theme(
    legend.position = "none", # fjerne hele legend
    axis.text.x = ggplot2::element_text(size = 18, colour = "black"),
    axis.line.y = ggplot2::element_blank(),
    axis.ticks.y = ggplot2::element_blank(), 
    strip.placement = "outside"
  ) +
  # Fjerne akse-tittel:
  ggplot2::labs(x = NULL, 
                y = NULL)
cap <- paste0("Antall alvorlige og øvrige komplikasjoner på kat.lab., ",
              "per måned, i ", 
              "perioden fra ", rangeProsDato,  ".", 
              "")

tab_labkomp <- timeTableMonth %>% 
  dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompAllergiskAlvorlig %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Allergisk reaksjon alvorlig" = n), 
                   by = "maaned") %>% 
  dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompBehkrevendeArytmi %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Behandlingskrevende arytmi" = n), 
                   by = "maaned") %>% 

    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompHemodynamisk %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Hemodynamisk komplikasjon" = n), 
                   by = "maaned") %>% 

    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompNeurologisk %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Nevrologisk komplikasjon" = n), 
                   by = "maaned") %>% 


    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompVaskulaerIkkeKoronar %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Vaskulær (ikke koronare kar)" = n), 
                   by = "maaned") %>% 
     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompPerforasjon %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Perforasjon" = n), 
                   by = "maaned") %>% 

     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompTamponade %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Tamponade" = n), 
                   by = "maaned") %>% 

     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompAkuttACBOperasjon %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Akutt ACB-operasjon fra lab" = n), 
                   by = "maaned") %>% 

   dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompDod %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Død" = n), 
                   by = "maaned") %>% 


   dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompProsedyrerelatertDod %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav prosedyrerelatert død" = n), 
                   by = "maaned") %>% 

     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompAnnenAlv %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Annen alvorlig" = n), 
                   by = "maaned") %>% 
 dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompAllergiskLettModerat %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Allergisk lett/moderat" = n), 
                   by = "maaned") %>% 
  dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompMistetStent %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Mistet stent" = n), 
                   by = "maaned") %>% 

    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(LabKompVedvarSidegrensokkl %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Vedvarende sidegr.okkl" = n), 
                   by = "maaned") %>% 
  janitor::adorn_totals("row", name = "Totalt") 

tab_labkomp[tab_labkomp == 0] <-  " - "
tab_labkomp[is.na(tab_labkomp)] <- " - "




align <- c("r", rep("c", dim(tab_labkomp)[2] - 1))
col_nams <- c("", names(tab_labkomp[-1]))



if (params$tableFormat == "html") {
  knitr::kable(x = tab_labkomp, 
               caption = cap,
               align = align, col.names = col_nams) %>%
    kableExtra::kable_styling(bootstrap_options = c("striped",
                                                    "hover",
                                                    "condensed"),
                              full_width = FALSE) %>%
    kableExtra::row_spec(row = 0, angle = -45) %>%
    kableExtra::column_spec(column = 1, width = "7em") %>% 
     kableExtra::add_header_above(., header = c("", 
                                               "Alvorlige komplikasjoner på lab" = 11, 
                                               "Øvrige " = 3), 
                                 bold = TRUE, 
                                 font_size = 10)

} else if (params$tableFormat == "latex") {
  knitr::kable(x = tab_labkomp,
               format = params$tableFormat,
               caption = cap,
               booktabs = TRUE,
               align = "r", col.names = col_nams) %>%
    kableExtra::kable_styling(latex_options = "HOLD_position", 
                              font_size = 8) %>%
    kableExtra::row_spec(row = 0, angle = 90) %>% 
    kableExtra::add_header_above(., header = c("", 
                                               "Alvorlige komplikasjoner på lab" = 11, 
                                               "Øvrige " = 3), 
                                 bold = TRUE, 
                                 font_size = 10)
}

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

Komplikasjoner på avdeling

Her rapporteres komplikasjoner oppstått på sengepost under sykehusoppholdet etter avsluttet prosedyre. Hvis det er registrert flere komplikasjoner på samme pasient er disse talt opp hver for seg. For pasienter som har hatt en eller flere sekundære prosedyrer under samme sykehusopphold, registreres eventuelle komplikasjoner oppstått på avdelingen for alle prosedyrene samlet.

Vi viser opptellingene for både ferdigstilte og ikke ferdigstilte komplikasjonsskjema. Klikk her for å se oversikten over antall (andel) ferdigstilte komplikasjonsskjemaer.

fig_df_kompl_avd <- AP %>%

  dplyr::filter(is.na(KobletForlopsID)) %>% 

  dplyr::select(
    AvdKompVaskulaer, 
    AvdKompNeurologiskKomp, 
    AvdKompNyNyreinsuffisiens, 
    AvdKompTamponade, 
    AvdKompPCI, 
    AvdKompACB, 
    AvdKompHjerteinfarkt, 
    AvdKompAnnenAlvorlig, 
    AvdKompDod, 
    AvdKompProsedyrerelatertDod, 

    # Alvorlige blødninger
    komplik_avd_alvorligBlodning,
    AvdKompBlodningMajor, 
    AvdKompHbFallStor, 
    AvdKompForlengetOppholdStor, 
    AvdKompBlodtransfusjon, 
    AvdKompKirurgiskBeh, 
    AvdKompPseudoaneurysme,

    # Mindre alvorlige blødninger og øvrige komplikasjoner
    komplik_avd_ovrigBlodning, 
    AvdKompBlodningMinor, 
    AvdKompHematomStor, 
    AvdKompForlengetTidStor, 
    AvdKompAllergisk ) %>% 
  tidyr::pivot_longer(cols = AvdKompVaskulaer:AvdKompAllergisk) %>% 

   dplyr::mutate(
    type_komplikasjon = case_when(

      name %in% "AvdKompVaskulaer" ~ "Vaskulær (ikke koronare kar)", 
      name %in% "AvdKompNeurologiskKomp" ~ "Nevrologisk", 
      name %in% "AvdKompNyNyreinsuffisiens" ~ "Nytilkommet nyreinsuffisens", 
      name %in% "AvdKompTamponade" ~ "Tamponade", 
      name %in% "AvdKompPCI" ~ "Re-PCI (behandlet segment)", 
      name %in% "AvdKompACB" ~ "ACB-operasjon (ikke fra lab)", 
      name %in% "AvdKompHjerteinfarkt" ~ "Hjerteinfarkt", 
      name %in% "AvdKompAnnenAlvorlig" ~ "Annen alvorlig", 
      name %in% "AvdKompDod" ~ "Død", 
      name %in% "AvdKompProsedyrerelatertDod" ~ "- herav prosedyrerelatert død", 

      name %in% "komplik_avd_alvorligBlodning" ~ " Noen form for alvorlig blødning", 
      name %in% "AvdKompBlodningMajor" ~ "- herav blødning major", 
      name %in% "AvdKompHbFallStor" ~ "- herav Hb fall stor", 
      name %in% "AvdKompForlengetOppholdStor" ~ "- herav forlenget sykehusopphold", 
      name %in% "AvdKompBlodtransfusjon" ~ "- herav blodtransfusjon", 
      name %in% "AvdKompKirurgiskBeh" ~ "- herav kirurgisk behandling", 
      name %in% "AvdKompPseudoaneurysme" ~ "- herav pseudoaneurysme", 

      name %in% "komplik_avd_ovrigBlodning" ~ "Noen form for øvrig blødning",
      name %in% "AvdKompBlodningMinor" ~ "- herav blødning minor",
      name %in% "AvdKompHematomStor" ~ "- herav hematom stort", 
      name %in% "AvdKompForlengetTidStor" ~ "- herav forlenget kompresjonstid", 
      name %in% "AvdKompAllergisk" ~ "Allergisk senreaksjon", 
      TRUE ~ NA_character_ ), 

    gradering = case_when(
      name %in% c("AvdKompVaskulaer", 
                  "AvdKompNeurologiskKomp", 
                  "AvdKompNyNyreinsuffisiens", 
                  "AvdKompTamponade", 
                  "AvdKompPCI", 
                  "AvdKompACB", 
                  "AvdKompHjerteinfarkt", 
                  "AvdKompAnnenAlvorlig", 
                  "AvdKompDod", 
                  "AvdKompProsedyrerelatertDod",
                  "komplik_avd_alvorligBlodning") ~
                               "Alvorlige komplikasjoner på avdeling", 

      name %in% c("AvdKompBlodningMajor", 
                  "AvdKompHbFallStor", 
                  "AvdKompForlengetOppholdStor", 
                  "AvdKompBlodtransfusjon",
                  "AvdKompKirurgiskBeh", 
                  "AvdKompPseudoaneurysme") ~ "Undergruppe alv blødning",

      name %in% c("AvdKompBlodningMinor",
                  "AvdKompHematomStor", 
                  "AvdKompForlengetTidStor") ~ "Undergruppe av ovrig blodning", 
      TRUE ~ "Øvrige") ) %>% 
  dplyr::count(name, type_komplikasjon, value, gradering) %>%
  tidyr::pivot_wider(names_from = value, values_from = n, values_fill=0) %>% 
  select(name, type_komplikasjon, gradering, Ja)


# Rekkefølge: 
# Først alvorlig, så øvrige. 
# Annen alvorlig nederst av alvorlige. 
# pros_red_dod etter død
# Alle alvorlige blødnigner under "noen form for.."



synkende_rekkefolge_avd_alvorlig <- rbind(

  # Alvorlig (uten annen alvorlig,  pros.rel.dod og undergruppe alvorlig blødning.)
  fig_df_kompl_avd %>% 
    dplyr::filter(name != "AvdKompAnnenAlvorlig", 
                   name != "AvdKompProsedyrerelatertDod", 
                   gradering %in% "Alvorlige komplikasjoner på avdeling") %>% 
    dplyr::arrange(-Ja), 

  # Annen alvorlig nederst av alvorlige
  fig_df_kompl_avd %>% 
    dplyr::filter(name == "AvdKompAnnenAlvorlig")
  ) 

# sett inn prosedyrerelatert død på riktig sted
insert_prsRel_her <- which(synkende_rekkefolge_avd_alvorlig$name == "AvdKompDod")

synkende_rekkefolge_avd_alvorlig %<>%
  dplyr::add_row( fig_df_kompl_avd %>% 
    filter(name == "AvdKompProsedyrerelatertDod"),
    .after = insert_prsRel_her) 

# sett inn undergrupper blødning på riktig sted
insert_blod_her<- which(synkende_rekkefolge_avd_alvorlig$name == "komplik_avd_alvorligBlodning")

endelig_alvorlig <- rbind(

  # Før blødning
  synkende_rekkefolge_avd_alvorlig[1:insert_blod_her, ], 

  # Undergrupper blødingn
  fig_df_kompl_avd %>% 
    filter(gradering %in% "Undergruppe alv blødning") %>% 
      dplyr::arrange(-Ja), 

   # Før blødning
  synkende_rekkefolge_avd_alvorlig[-(1:insert_blod_her), ]
  )




  # Deretter øvrige
synkende_rekkefolge_avd_ovrige <-   fig_df_kompl_avd %>% 
    dplyr::filter(gradering %in% "Øvrige") %>% 
    dplyr::arrange(-Ja)

# sett inn undergrupper blødning på riktig sted
insert_blod_her<- which(synkende_rekkefolge_avd_ovrige$name == "komplik_avd_ovrigBlodning")

endelig_ovrig <- rbind(

  # Før blødning
  synkende_rekkefolge_avd_ovrige[1:insert_blod_her, ], 

  # Undergrupper blødingn
  fig_df_kompl_avd %>% 
    filter(gradering %in% "Undergruppe av ovrig blodning") %>% 
      dplyr::arrange(-Ja), 

   # Før blødning
  synkende_rekkefolge_avd_ovrige[-(1:insert_blod_her), ]
  )


#SAMMEN: 
endelig_alle <- rbind(
  endelig_alvorlig, 
  endelig_ovrig
) %>% 
  # PARAMETRE FOR PLOT
   dplyr::mutate(
    Sortering = n():1, 

    alpha_soyler= ifelse(
      gradering %in% "Undergruppe alv blødning" |
        gradering %in% "Undergruppe av ovrig blodning" |
        name %in% "AvdKompProsedyrerelatertDod", 
      TRUE, 
      FALSE), 

    gradering2 = ifelse(
      gradering %in% c("Undergruppe alv blødning", 
                       "Alvorlige komplikasjoner på avdeling"), 
      "Alvorlige komplikasjoner på avdeling", 
      "Øvrige"

    ))  





endelig_alle %>%
  ggplot2::ggplot(data = . , 
                  ggplot2::aes(x = reorder(type_komplikasjon, Sortering) ,
                               y = Ja)) +
  ggplot2::geom_bar(
    mapping = ggplot2::aes(alpha = alpha_soyler),
    stat="identity",
    width = 0.85,
    fill = colPrimary[4]) +
    ggplot2::scale_alpha_manual(breaks = c(TRUE, FALSE), 
                              values = c(0.5, 1)) +

  ggplot2::facet_grid(rows =  "gradering2", 
                     scales = "free",
                     space='free', 
                     switch = "y") +
  ggplot2::coord_flip(clip = "off") +
  # FREKVENS-TALL SOM PLASSERES I/PÅ SØYLENE:
  ggplot2::geom_text(
    ggplot2::aes(label = Ja, 
                 alpha = alpha_soyler),
    vjust = 0.5,
    hjust = -0.15,
    size = 6  ) +
  # THEME & BASE SIZE:
  ggplot2::theme_classic( base_size = 20) +
  # THEME -
  ggplot2::theme(
    legend.position = "none", # fjerne hele legend
    axis.text.x = ggplot2::element_text( size = 18, colour = "black"),
    # axis.text.y = ggplot2::element_text(color = farger_tekst),
    axis.line.y = ggplot2::element_blank(),
    axis.ticks.y = ggplot2::element_blank(), 
    strip.placement = "outside"
  ) +
  # Fjerne akse-tittel:
  ggplot2::labs(
    x = NULL,
    y = NULL)
cap <- paste0("Antall alvorlige og øvrige komplikasjoner på sengepost, ",
              "per måned, i ", 
              "perioden fra ", rangeProsDato,  ".", 
              "")

tab_avdkomp <- timeTableMonth %>% 
  dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID),
                       AvdKompDod %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Død på avdeling" = n), 
                   by = "maaned") %>% 
  dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID),
                       AvdKompProsedyrerelatertDod %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav prosedyrerelatert død" = n), 
                   by = "maaned") %>% 

    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompNyNyreinsuffisiens %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Nytilkommet nyreinsuffisens" = n), 
                   by = "maaned") %>% 

      dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompNeurologiskKomp %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Nevrologisk" = n), 
                   by = "maaned") %>% 
     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompHjerteinfarkt %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Hjerteinfarkt" = n), 
                   by = "maaned") %>% 
     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompTamponade %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Tamponade" = n), 
                   by = "maaned") %>% 
     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompVaskulaer %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Vaskulær (ikke koronare kar)" = n), 
                   by = "maaned") %>% 
     dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompPCI %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Re-PCI (behandlet segment)" = n), 
                   by = "maaned") %>% 

       dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompACB %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("ACB-operasjon (ikke fra lab)" = n), 
                   by = "maaned") %>% 

  dplyr::left_join(., 
                   AP %>% 
                     dplyr::filter(
                          is.na(KobletForlopsID), 
                          komplik_avd_alvorligBlodning %in% "Ja") %>% 
                        dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Noen form for alvorlig blødning" = n), 
                   by = "maaned") %>% 
       dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompAnnenAlvorlig %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Annen alvorlig" = n), 
                   by = "maaned") %>% 

        dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       komplik_avd_ovrigBlodning %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Noen form for øvrig blødning" = n), 
                   by = "maaned") %>% 
      dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompAllergisk %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Allergisk senreaksjon" = n), 
                   by = "maaned") %>% 





  janitor::adorn_totals("row", name = "Totalt") 

tab_avdkomp[tab_avdkomp == 0] <-  " - "
tab_avdkomp[is.na(tab_avdkomp)] <- " - "




align <- c("r", rep("c", dim(tab_avdkomp)[2] - 1))
col_nams <- c("", names(tab_avdkomp[-1]))



if (params$tableFormat == "html") {
  knitr::kable(x = tab_avdkomp, 
               caption = cap,
               align = align, col.names = col_nams) %>%
    kableExtra::kable_styling(bootstrap_options = c("striped",
                                                    "hover",
                                                    "condensed"),
                              full_width = FALSE) %>%
    kableExtra::row_spec(row = 0, angle = -45) %>%
    kableExtra::column_spec(column = 1, width = "7em") %>%
  kableExtra::add_header_above(., header = c("",
                                            "Alvorlige komplikasjoner på avdeling" = 11,
                                            "Øvrige " = 2),
                              bold = TRUE,
                              font_size = 10)

} else if (params$tableFormat == "latex") {
  knitr::kable(x = tab_avdkomp,
               format = params$tableFormat,
               caption = cap,
               booktabs = TRUE,
               align = "r", col.names = col_nams) %>%
    kableExtra::kable_styling(latex_options = "HOLD_position", 
                              font_size = 8) %>%
    kableExtra::row_spec(row = 0, angle = 90)%>% 
    kableExtra::add_header_above(., header = c("",
                                               "Alvorlige komplikasjoner på avdeling" = 11,
                                               "Øvrige " = 2),
                                 bold = TRUE,
                                 font_size = 10)
}
cap <- paste0("Antall alvorlige og øvrige blødninger på sengepost, ",
              "per måned, i ", 
              "perioden fra ", rangeProsDato,  ".", 
              "")

tab_avdkomp_blod <- timeTableMonth %>% 
  dplyr::left_join(., 
                   AP %>% 
                     dplyr::filter(
                          is.na(KobletForlopsID), 
                          komplik_avd_alvorligBlodning %in% "Ja") %>% 
                        dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Noen form for alvorlig blødning" = n), 
                   by = "maaned") %>% 
       dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompHbFallStor %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav Hb fall stor" = n), 
                   by = "maaned") %>% 

         dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompForlengetOppholdStor %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav forlenget sykehusopphold" = n), 
                   by = "maaned") %>% 

         dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompBlodtransfusjon %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav blodtransfusjon" = n), 
                   by = "maaned") %>% 

         dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompKirurgiskBeh %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav kirurgisk behandling" = n), 
                   by = "maaned") %>% 

    dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompPseudoaneurysme %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav pseudoaneurysme" = n), 
                   by = "maaned") %>% 

        dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       komplik_avd_ovrigBlodning %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("Noen form for øvrig blødning" = n), 
                   by = "maaned") %>% 

   dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompBlodningMinor %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav blødning minor" = n), 
                   by = "maaned") %>% 
   dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompHematomStor %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav hematom stort" = n), 
                   by = "maaned") %>% 
   dplyr::left_join(.,
                   AP %>% 
                     dplyr::filter(
                       is.na(KobletForlopsID), 
                       AvdKompForlengetTidStor %in% "Ja") %>% 
                     dplyr::count(maaned, .drop = FALSE) %>% 
                     dplyr::rename("- herav forlenget kompresjonstid" = n), 
                   by = "maaned") %>% 
  janitor::adorn_totals("row", name = "Totalt") 

tab_avdkomp_blod[tab_avdkomp_blod == 0] <-  " - "
tab_avdkomp_blod[is.na(tab_avdkomp_blod)] <- " - "




align <- c("r", rep("c", dim(tab_avdkomp_blod)[2] - 1))
col_nams <- c("", names(tab_avdkomp_blod[-1]))



if (params$tableFormat == "html") {
  knitr::kable(x = tab_avdkomp_blod, 
               caption = cap,
               align = align, col.names = col_nams) %>%
    kableExtra::kable_styling(bootstrap_options = c("striped",
                                                    "hover",
                                                    "condensed"),
                              full_width = FALSE) %>%
    kableExtra::row_spec(row = 0, angle = -45) %>%
    kableExtra::column_spec(column = 1, width = "7em") %>%
  kableExtra::add_header_above(., header = c("",
                                            "Alvorlige blødninger" = 6,
                                            "Øvrige blødninger " = 4),
                              bold = TRUE,
                              font_size = 10)

} else if (params$tableFormat == "latex") {
  knitr::kable(x = tab_avdkomp_blod,
               format = params$tableFormat,
               caption = cap,
               booktabs = TRUE,
               align = "r", col.names = col_nams) %>%
    kableExtra::kable_styling(latex_options = "HOLD_position", 
                              font_size = 8) %>%
    kableExtra::row_spec(row = 0, angle = 90)%>% 
    kableExtra::add_header_above(., header = c("",
                                            "Alvorlige blødninger" = 6,
                                            "Øvrige blødninger " = 4),
                                 bold = TRUE,
                                 font_size = 10)
}
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.6)  # set progress to 60%

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

Kompletthet

Kompletthet angio/PCI-skjemaer {-}

r if(params$tableFormat !="latex") {"<!--"} \vspace{-4truemm} r if(params$tableFormat !="latex") {"-->"}

tabHovedKomplett <- AP %>% 
  dplyr::count(maaned, SkjemastatusHovedskjema, .drop = FALSE) %>% 
  tidyr::pivot_wider(names_from = SkjemastatusHovedskjema, 
                     values_from = n, 
                     values_fill = 0) %>% 
  dplyr::transmute(
    maaned = maaned,
    Totalt = `-1`+ `0` + `1`, 
    Ferdigstilt = `1`, 
    Andel = (round(Ferdigstilt/Totalt, 2) *100))

tabHovedKomplett %<>%   dplyr::rename(" " = "maaned")

cap <- paste0("Andel ferdigstilte hovedskjemaer i NORIC per måned ved ",
             params$hospitalName, " i perioden ", rangeProsDato, ".")

noric::mst(tab = tabHovedKomplett, 
           type = params$tableFormat, 
           cap = cap,
           digs = c(0, 0, 0, 1), 
           align = c("l", "r", "r", "r"),
           label = "SOtab1")

Kompletthet komplikasjonsskjemaer {- #komplSkjema}

r if(params$tableFormat !="latex") {"<!--"} \vspace{-4truemm} r if(params$tableFormat !="latex") {"-->"}

tabKomplikKomplett <- AP %>% 
  dplyr::filter(Regtype %in% "Primær") %>% 

  dplyr::count(maaned, SkjemaStatusKomplikasjoner, .drop = FALSE) %>% 
  tidyr::pivot_wider(names_from = SkjemaStatusKomplikasjoner, 
                     values_from = n, 
                     values_fill = 0) %>% 
  dplyr::transmute(
    maaned = maaned,
    Totalt = `-1`+ `0` + `1`, 
    Ferdigstilt = `1`, 
    Andel = (round(Ferdigstilt/Totalt, 2) *100))


tabKomplikKomplett %<>%   dplyr::rename(" " = "maaned")


cap <- paste0("Andel ferdigstilte komplikasjonsskjemaer registrert i NORIC ",
              "per måned ved ", params$hospitalName,
              " i perioden ", rangeProsDato, ".")
noric::mst(tab = tabKomplikKomplett, 
           type = params$tableFormat,
           cap = cap,
           digs = c(0, 0, 0, 1),
           align = c("l", "r", "r", "r"),
           label = "SOtab2")

Kompletthet utskrivelsesskjemaer {-}

r if(params$tableFormat !="latex") {"<!--"} \vspace{-4truemm} r if(params$tableFormat !="latex") {"-->"}

tabUtskrKomplett <- AP %>% 
  dplyr::filter(Regtype %in% "Primær") %>% 

  dplyr::count(maaned, SkjemaStatusUtskrivelse, .drop = FALSE) %>% 
  tidyr::pivot_wider(names_from = SkjemaStatusUtskrivelse, 
                     values_from = n, 
                     values_fill = 0) %>% 
  dplyr::transmute(
    maaned = maaned,
    Totalt = `-1`+ `0` + `1`, 
    Ferdigstilt = `1`, 
    Andel = (round(Ferdigstilt/Totalt, 2) *100))

tabUtskrKomplett %<>%   dplyr::rename(" " = "maaned")
cap <- paste0("Andel ferdigstilte utskrivelsesskjemaer registrert i NORIC per ", 
              "måned ved ", params$hospitalName, " i perioden ",
              rangeProsDato, ".")

noric::mst(tab = tabUtskrKomplett,
           type = params$tableFormat, 
           cap = cap,
           digs = c(0, 0, 0, 1), 
           align = c("l", "r", "r", "r"),
           label = "SOtab3")

r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.7)  # set progress to 70%



Stentbruk og intervensjoner

Opptellingene under gjelder for prosedyretypene Angio/PCI og PCI.

Intervensjonstype

cap <- paste0("Antall utførte intervensjoner registrert i NORIC per ",
              "måned ved ", params$hospitalName, " i perioden ",
              rangeProsDato, ". ",
              "Merk at flere intervensjoner kan være utført i samme prosedyre.")

TabDataSsIntervensjonstype <- SS %>% 
  janitor::tabyl(maaned,
                 ProsedyreType2) %>% 
  janitor::adorn_totals("col", name = "Totalt antall intervensjoner") 

TabNInervProsedyreType <- AP %>%
  dplyr::filter(ProsedyreType %in% c("Angio + PCI", "PCI")) %>% 
  janitor::tabyl(maaned,
                 ProsedyreType) %>% 
  janitor::adorn_totals("col", name = "Antall prosedyrer") %>% 
  dplyr::select(maaned, "Antall prosedyrer")

TabNSsIntervensjonstype <- timeTableMonth %>% 
  merge(., TabDataSsIntervensjonstype, 
        by.x = c("maaned"), by.y = c("maaned"),
        all.x = TRUE, all.y = FALSE) %>% 
  dplyr::right_join(., TabNInervProsedyreType, by = c("maaned")) %>% 
  dplyr::rename(" " = "maaned")

TabNSsIntervensjonstype[TabNSsIntervensjonstype == 0] <-  " - "
TabNSsIntervensjonstype[is.na(TabNSsIntervensjonstype)] <- " - "

align <- c("l", rep("c", dim(TabNSsIntervensjonstype)[2] - 1))

noric::mst(tab = TabNSsIntervensjonstype,
           type = params$tableFormat, 
           cap = cap,
           align = c("l", "r", "r", "r"),
           label = "TabNSsIntervensjonstype")


# if (params$tableFormat == "html") {
#   knitr::kable(x = TabNSsIntervensjonstype, caption = cap, align = align) %>%
#     kableExtra::kable_styling(bootstrap_options = c("striped",
#                                                     "hover",
#                                                     "condensed"),
#                               full_width = FALSE) %>%
#     kableExtra::column_spec(column = 1, width = "7em")
# } else if (params$tableFormat == "latex") {
#   knitr::kable(x = TabNSsIntervensjonstype,
#                format = params$tableFormat,
#                caption = cap,
#                booktabs = TRUE,
#                align = "r") %>%
#     kableExtra::kable_styling(latex_options = c("HOLD_position",
#                                                 "scale_down"))
# }


Her er en oversikt over antall prosedyrer per måned.



Stenter per prosedyre

Antall stenter per prosedyre ved r params$hospitalName registrert i NORIC i perioden r rangeProsDato. Antall prosedyrer med minst 1 stent er r AP %>% filter(Nstents>0) %>% nrow().

par(
  mfcol = c(1, 1),
  xpd = NA,
  mar = c(5.1, 4.1, 4.1, 13.1),
  las = 1
  )

TabNStent <- xtabs(
  formula = ~ Nstents,
  data = AP %>% dplyr::filter(Nstents>0))

barplot(
  TabNStent,
  xlab = "Antall stenter per prosedyre",
  ylab = "Antall prosedyrer",
  border = FALSE,
  space = 0.3,
  col = colPrimary[3]
)

SumStat <- round(summary(AP[which(AP$Nstents>0), "Nstents"]), 1)
legend(
  "right",
  inset = -.28,
  bty = "n",
  legend = paste(attr(SumStat, "names"), ": ", SumStat, sep = ""))
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.8)  # set progress to 80%


r if(params$tableFormat !="latex") {"<!--"} \newpage r if(params$tableFormat !="latex") {"-->"}

Stent - merke

cap <- paste0("Antall stenter registrert i NORIC per måned og merke ved ",
              params$hospitalName, " i perioden ", rangeProsDato, ".")

tab_stent <- SS %>% 
  dplyr::filter(ProsedyreType2 == "Stent") %>%
  janitor::tabyl(maaned,
                 Stentnavn) %>% 
  janitor::adorn_totals("col", name = "Totalt") %>% 
  janitor::adorn_totals("row", name = "Totalt") 

tab_stent[tab_stent == 0] <- " - "
tab_stent[is.na(tab_stent)] <- " - "

tab_stent %<>%   dplyr::rename(" " = "maaned")

align <- c("r", rep("c", dim(tab_stent)[2] - 1))

if (params$tableFormat == "html") {
  knitr::kable(x = tab_stent,
               caption = cap,
               align = align) %>%
    kableExtra::kable_styling(bootstrap_options = c("striped",
                                                    "hover",
                                                    "condensed"),
                              full_width = FALSE) %>%
    kableExtra::row_spec(row = 0, font_size = 8, angle = -45) %>%
    kableExtra::column_spec(column = 1, width = "7em")

  } else if (params$tableFormat == "latex") {
  knitr::kable(x = tab_stent,
               format = params$tableFormat,
               caption = cap,
               booktabs = TRUE,
               align = "r") %>%
   kableExtra::kable_styling(latex_options = "HOLD_position", 
                              font_size = 8) %>%
   kableExtra::row_spec(row = 0, angle = 90, font_size = 8)
}
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(0.9)  # set progress to 90%

r if(params$tableFormat !="latex" & evaluate_AnP == FALSE) {"<!--"} \newpage r if(params$tableFormat !="latex" & evaluate_AnP == FALSE) {"-->"}

Andre prosedyrer (Stand-alone)

r if(evaluate_AnP == FALSE){"Dette lokale registeret har ingen registrerte forløp fra Andre Prosedyrer-modulen i datagrunnlaget på nåværende tidspunkt."}

r if(evaluate_AnP == TRUE){"Prosedyrer som er utført uten tilknytning til Angio/PCI."}

cap <- paste0("Antall prosedyrer registrert i modulen for ",
              "\"Andre prosedyrer\"", " i NORIC (utført uten direkte ",
             "tilknytning til Angio/PCI)  per måned og prosedyretype ved ",
             params$hospitalName, " i perioden ",
             rangeProsDato, ".")

TabDataAndreProsedyrer <- AnP %>% 
  janitor::tabyl(maaned,
                 AnnenProsType) %>% 
  janitor::adorn_totals("col", name = "Totalt")

TabNAndreProsedyrer <- timeTableMonth %>% 
  merge(., TabDataAndreProsedyrer, 
        by.x = c("maaned"), by.y = c("maaned"),
        all.x = TRUE, all.y = FALSE) %>% 
  janitor::adorn_totals("row", name = "Totalt") %>% 
  dplyr::rename(" " = "maaned")

TabNAndreProsedyrer[TabNAndreProsedyrer == 0] <- " - "
TabNAndreProsedyrer[is.na(TabNAndreProsedyrer)] <- " - "

align <- c("r", rep("c", dim(TabNAndreProsedyrer)[2] - 1))

if (params$tableFormat == "html") {
  knitr::kable(x = TabNAndreProsedyrer, 
               caption = cap,
               align = align) %>%
    kableExtra::kable_styling(bootstrap_options = c("striped",
                                                    "hover",
                                                    "condensed"),
                              full_width = FALSE) %>%
    kableExtra::row_spec(row = 0, font_size = 8, angle = -45) %>%
    kableExtra::column_spec(column = 1, width = "7em")

} else if (params$tableFormat == "latex") {
  knitr::kable(x = TabNAndreProsedyrer,
               format = params$tableFormat,
               caption = cap,
               booktabs = TRUE,
               align = "r") %>%
   kableExtra::kable_styling(latex_options = "HOLD_position", 
                              font_size = 8) %>%
     kableExtra::row_spec(row = 0, angle = 90, font_size = 8)

}
if (params$rendered_by_shiny == TRUE && params$tableFormat == "latex")
    shiny::setProgress(1)  # set progress to 100%


Rapporteket/NORIC documentation built on Sept. 7, 2024, 10:32 a.m.