--- title: Endoscopies runtime: shiny output: html_document: toc: true toc_float: true --- ```{r setup, message = F, warning = F, echo = F} library(tidyverse) library(DT) library(knitr) library(magrittr) library(stringr) opts_chunk$set(message = F, echo = F, warning = F) options(DT.options = list(paging = F, searching = F, info = F, dom = "Bfrtip", buttons = c("copy", "excel")), shiny.maxRequestSize = 100*1024^2) ``` # {.tabset} ## Chargement des données Les fichiers doivent être fournis au format CSV avec les paramètres suivants : * séparateur de champs = , * guillemets = " * encodage = UTF-8 * séparateur de décimales = , ### Endoscopies en externe Le fichier doit être issu de la [requête suivante](https://livenne.chu-nancy.fr/shiny_files/endoscopies/endoscopies_ext.wid). ### Endoscopies en hospitalisation Le fichier doit être issu de la [requête suivante](https://livenne.chu-nancy.fr/shiny_files/endoscopies/endoscopies_hos.wid). ```{r data} if (!dir.exists("/var/www/html/shiny_files/endoscopies")) dir.create("/var/www/html/shiny_files/endoscopies") file.copy("endoscopies_ext.wid", "/var/www/html/shiny_files/endoscopies", overwrite = T) -> null file.copy("endoscopies_hos.wid", "/var/www/html/shiny_files/endoscopies", overwrite = T) -> null inputPanel( fileInput("ext", "Endoscopies externes", accept = "text/csv"), fileInput("hos", "Endoscopies hospitalisations", accept = "text/csv"), downloadButton("report", "Télecharger le rapport") ) read_csv2("actes.csv") -> liste_actes endoscopies <- reactive( { req(input$ext) read_csv(input$ext$datapath, locale = locale(decimal_mark = ",")) %>% setNames(c("Venue", "Intervention", "Acte", "Tarif", "Acte_libelle", "Service", "Type_venue")) %>% left_join(liste_actes %>% select(Code, Appareil), by = c("Acte" = "Code")) %>% mutate_if(is.character, factor) %>% filter(Tarif != 0) %>% distinct } ) endoscopies_ext <- reactive( { req(endoscopies()) endoscopies() %>% filter(Type_venue != 2) }) endoscopies_hos <- reactive( { req(input$hos) read_csv(input$hos$datapath, locale = locale(decimal_mark = ",")) %>% setNames(c("RSS", "Durée", "GHM", "GHM_libelle", "Valorisation")) %>% distinct %>% mutate(Type_duree = `Durée` %>% cut(c(-Inf, 1.5, Inf), labels = c("0 ou 1 j", "1+ j"))) }) ``` ```{r report} output$report <- downloadHandler(filename = "endoscopies.html", content = function(file) { rmarkdown::render("endoscopies.rmd", output_file = file, params = list(liste_actes = liste_actes, endoscopies = endoscopies(), endoscopies_ext = endoscopies_ext(), endoscopies_hos = endoscopies_hos())) }) ``` ## Rapport ### Codes utilisés {.tabset} #### ORL ```{r liste_orl} liste_actes %>% filter(Appareil == "ORL") %>% select(- Appareil) %>% datatable(rownames = F, options = list(paging = T, searching = T)) ``` #### Digestif ```{r liste_dig} liste_actes %>% filter(Appareil == "Digestif") %>% select(- Appareil) %>% datatable(rownames = F, options = list(paging = T, searching = T)) ``` #### Respiratoire ```{r liste_respi} liste_actes %>% filter(Appareil == "Respiratoire") %>% select(- Appareil) %>% datatable(rownames = F, options = list(paging = T, searching = T)) ``` #### Génito-urinaire ```{r liste_uro} liste_actes %>% filter(Appareil == "Genito-urinaire") %>% select(- Appareil) %>% datatable(rownames = F, options = list(paging = T, searching = T)) ``` ### Global #### Total ```{r global_total} renderDataTable( { endoscopies() %>% summarise(Venues = n_distinct(Venue)) %>% datatable(rownames = F, extensions = "Buttons") }) ``` #### Par service exécutant ```{r global_par_service} renderDataTable( { endoscopies() %>% group_by(Service) %>% summarise(Venues = n_distinct(Venue)) %>% ungroup %>% arrange(desc(Venues)) %>% datatable(rownames = F, extensions = "Buttons") }) ``` ### Externe #### Total ```{r ext_total} renderDataTable( { endoscopies_ext() %>% summarise(Venues = n_distinct(Venue), Valorisation = sum(Tarif)) %>% datatable(rownames = F, extensions = "Buttons") %>% formatCurrency(2, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par appareil ```{r ext_par_appareil} renderDataTable( { endoscopies_ext() %>% group_by(Appareil) %>% summarise(Venues = n_distinct(Venue), Valorisation = sum(Tarif)) %>% arrange(desc(Valorisation)) %>% datatable(rownames = F, extensions = "Buttons") %>% formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par acte ```{r ext_par_acte} renderDataTable( { endoscopies_ext() %>% group_by(Acte, Acte_libelle) %>% summarise(Venues = n_distinct(Venue), Valorisation = sum(Tarif)) %>% ungroup %>% arrange(desc(Valorisation)) %>% datatable(options = list(paging = T, searching = T), colnames = c("Libelle" = "Acte_libelle"), rownames = F, extensions = "Buttons") %>% formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par service exécutant ```{r ext_par_service} renderDataTable( { endoscopies_ext() %>% group_by(Service) %>% summarise(Venues = n_distinct(Venue), Valorisation = sum(Tarif)) %>% ungroup %>% arrange(desc(Valorisation)) %>% datatable(rownames = F, extensions = "Buttons") %>% formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par service exécutant et par acte ```{r ext_par_acte_et_service} renderDataTable( { endoscopies_ext() %>% group_by(Service, Acte, Acte_libelle) %>% summarise(Venues = n_distinct(Venue), Valorisation = sum(Tarif)) %>% arrange(Service, desc(Valorisation)) %>% ungroup %>% datatable(options = list(paging = T, searching = T), colnames = c("Libelle" = "Acte_libelle"), rownames = F, extensions = "Buttons", filter = "top") %>% formatCurrency(5, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` ### Hospitalisation #### Total ```{r total_hos} renderDataTable( { endoscopies_hos() %>% summarise(RSS = n(), Valorisation = sum(Valorisation)) %>% datatable(rownames = F, extensions = "Buttons") %>% formatCurrency(2, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par durée d'hospitalisation ```{r hos_par_durée} renderDataTable( { endoscopies_hos() %>% group_by(Type_duree) %>% summarise(RSS = n(), Valorisation = sum(Valorisation)) %>% datatable(rownames = F, colnames = c("Durée" = "Type_duree"), extensions = "Buttons") %>% formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F) }) ``` #### Par GHM {.tabset} ##### 0 ou 1j ```{r ghm_hos_0j} renderDataTable( { endoscopies_hos() %>% filter(Type_duree == "0 ou 1 j") %>% group_by(GHM, GHM_libelle) %>% summarise(RSS = n(), Valorisation = sum(Valorisation)) %>% ungroup %>% arrange(desc(RSS)) %>% datatable(rownames = F, colnames = c("Libelle GHM" = "GHM_libelle"), options = list(paging = T), extensions = "Buttons") %>% formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F) %>% formatRound(5) }) ``` ##### 1+ j ```{r ghm_hos_1j} renderDataTable( { endoscopies_hos() %>% filter(Type_duree == "1+ j") %>% group_by(GHM, GHM_libelle) %>% summarise(RSS = n(), Valorisation = sum(Valorisation)) %>% ungroup %>% arrange(desc(RSS)) %>% datatable(rownames = F, colnames = c("Libelle GHM" = "GHM_libelle"), options = list(paging = T), extensions = "Buttons") %>% formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F) %>% formatRound(5) }) ```