R/modul_indikatorfig.R

Defines functions indikatorfigServer indikatorfig_UI

Documented in indikatorfigServer indikatorfig_UI

#' UI-modul for indikatorfigurer i NNRR sin shiny-app på Rapporteket
#'
#' Kun til bruk i Shiny
#'
#' @export
#'
indikatorfig_UI <- function(id){
  ns <- shiny::NS(id)

  shiny::sidebarLayout(
    sidebarPanel(width = 3,
                 id = ns("id_indikator_panel"),
                 selectInput(inputId = ns("valgtVar"), label = "Velg indikator",
                             choices = c("Andel tverrfaglig behandlet" = "nnrr_tverrfaglig_behandling",
                                         "Klinisk viktig endring i ODI" = "nnrr_bedret_funksjon",
                                         "Andel med minimal funksjonsnedsettelse" = "nnrr_funksjons_nedsettelse",
                                         "Bedring av smerte i hvile" = "nnrr_bedring_smerte_hvile",
                                         "Bedring av smerte i aktivitet" = "nnrr_bedring_smerte_aktiv",
                                         "Andel tilbake i jobb" = "nnrr_jobb_ny_v1",
                                         "Andel tilbake i jobb el. lavere grad sykemelding" = "nnrr_jobb_ny_v2",
                                         "Pasientopplevd bedring av behandling" = "nnrr_bedring_av_behandling",
                                         "Andel fornøyd med behandling" = "nnrr_misfornoeyd"
                             )
                 ),
                 uiOutput(outputId = ns('tilAar_ui')),
                 # selectInput(inputId = ns("valgtShus"), label = "Fjern sykehus pga. lav dekningsgrad",
                 #             choices = BrValg$sykehus, multiple = TRUE),
                 # sliderInput(ns("skriftStr"), "Skriftstørrelse sykehusnavn", min = 0.5, max = 1.8,
                 #             value = 1.3, step = 0.05, ticks = F),
                 selectInput(inputId = ns("bildeformat"), label = "Velg bildeformat",
                             choices = c('pdf', 'png', 'jpg', 'bmp', 'tif', 'svg')),
                 tags$hr(),
                 actionButton(ns("reset_input"), "Nullstill valg")
    ),
    mainPanel(
      tabsetPanel(id = ns("tab"),
                  tabPanel("Figur", value = "fig",
                           plotOutput(ns("Figur1"), height="auto"), downloadButton(ns("lastNedBilde"), "Last ned figur")),
                  tabPanel("Tabell", value = "tab",
                           # uiOutput(ns("utvalg")),
                           # br(),
                           DT::DTOutput(ns("tabell"))
                  )
      )
    )
  )

}

#' Server-modul for indikatorfigurer i NNRR sin shiny-app på Rapporteket
#'
#' Kun til bruk i Shiny
#'
#' @export
#'
indikatorfigServer <- function(id, RegData, userRole, hvd_session){
  moduleServer(
    id,

    function(input, output, session) {

      observeEvent(input$reset_input, {
        shinyjs::reset("id_indikator_panel")
      })

      # observe(
      #   if (userRole != 'SC') {
      #     shinyjs::hide(id = 'valgtShus')
      #   })


      output$tilAar_ui <- renderUI({
        ns <- session$ns
        selectInput(inputId = ns("tilAar"), label = "T.o.m. år",
                    choices = rev((min(RegData$Aar)+2):max(RegData$Aar)))
      })


      tabellReager <- reactive({
        indikatordata <- nnrr::nnrrBeregnIndikator(RegData = RegData,
                                                   ind_id = input$valgtVar)
        TabellData <- indikatordata$indikator
        TabellData <- TabellData[which(TabellData$year <= as.numeric(req(input$tilAar))), ]
        indikatordata$indikator <- TabellData
        indikatordata
      })

      output$Figur1 <- renderPlot({
        nnrr::nnrrPlotIndikator(indikatordata = tabellReager(),
                                graaUt=NA, outfile = '',
                                lavDG=NA, inkl_konf=F)
      }, width = 700, height = 700)

      # output$tabell <- DT::renderDT({
      #   indikatordata = tabellReager()
      #   tabell <- indikatordata$indikator %>%
      #     dplyr::group_by(SykehusNavn, year) %>%
      #     dplyr::summarise(Antall = sum(var),
      #                      N = sum(denominator),
      #                      Andel = Antall/N*100)
      #   # antall <-
      #   #
      #   # %>%
      #   #   janitor::adorn_totals()
      #
      # })

      output$tabell  <- DT::renderDataTable(
        server = FALSE,
        DT::datatable(
          {tabellReager()$indikator %>%
              dplyr::group_by(SykehusNavn, year) %>%
              dplyr::summarise(Antall = sum(var),
                               N = sum(denominator),
                               Andel = Antall/N*100)},

          extensions = 'Buttons',
          rownames = FALSE,

          options = list(
            paging = TRUE,
            pageLength = 40,
            searching = TRUE,
            fixedColumns = TRUE,
            autoWidth = TRUE,
            ordering = TRUE,
            dom = 'tB',
            buttons = c('copy', 'csv', 'excel')
          ),

          class = "display"
        ) %>% DT::formatRound(columns = "Andel", digits = 1)
      )


    }
  )
}
Rapporteket/nnrr documentation built on Jan. 27, 2023, 5:53 p.m.