library(tidyverse) library(rmarkdown) library(lubridate) library(magrittr) library(stringr) library(shiny) library(DT) options(shiny.maxRequestSize = 500*1024^2) if (!dir.exists("/var/www/html/shiny_files/actes")) dir.create("/var/www/html/shiny_files/actes") file.copy("actes_collact.wid", "/var/www/html/shiny_files/actes", overwrite = T) -> null file.copy("actes_pims.wid", "/var/www/html/shiny_files/actes", overwrite = T) -> null # CCAM ==== read_csv("CCAM.csv") %>% `names<-`(c("code", "libelle", "classant", "ICR", "phase")) %>% arrange(code) %>% distinct %>% group_by(code) %>% summarize(libelle = first(libelle), classant = max(classant), ICR = max(ICR, na.rm = T)) -> ccam # UI ==== ui <- fluidPage( titlePanel("Actes manquants collact → pims"), sidebarLayout( sidebarPanel( a(href = "https://livenne.chu-nancy.fr/shiny_files/actes/actes_collact.wid", "Requête collact"), br(), a(href = "https://livenne.chu-nancy.fr/shiny_files/actes/actes_pims.wid", "Requête webPIMS"), hr(), fileInput("collact", "Fichier collact", accept = "text/csv"), fileInput("webpims", "Fichier webpims", accept = "text/csv"), width = 3 ), mainPanel( DT::dataTableOutput("resultat") ) ) ) # SERVER ==== server <- function(input, output) { # collact ==== collact <- reactive({ req(input$collact) read_csv(input$collact$datapath) %>% setNames(c("nda", "entree", "sortie", "code", "date", "uf", "uf_lib")) %>% mutate(date = date %>% as.Date(format = "%Y/%m/%d %H:%M:%S")) -> collact }) # webpims ==== pims <- reactive({ req(input$webpims) read_csv(input$webpims$datapath) %>% setNames(c("nda", "code", "date")) %>% mutate(date = date %>% as.Date(format = "%Y/%m/%d %H:%M:%S"), code = code %>% str_sub(1,7)) -> pims }) # Output output$resultat <- DT::renderDataTable( { req(collact(), pims()) withProgress(message = "Calcul…", value = 0.25, detail = "Différence collact-pims", { # Collact - PIMS ==== collact() %>% anti_join(pims(), by = c("nda", "code", "date")) %>% left_join(ccam, by = "code") -> collact_pims setProgress(.5, detail = "Agrégation") # Summary ==== collact_pims %>% filter(classant == "Oui") %>% group_by(code, libelle) %>% summarize(n = n(), ICR = sum(ICR)) %>% ungroup %>% arrange(desc(ICR)) -> summ_actes setProgress(.75, detail = "Liste finale") # Liste finale ==== collact_pims %>% inner_join(summ_actes, by = c("code", "libelle")) %>% rename(`ICR acte` = ICR.x, `ICR total` = ICR.y) %>% arrange(desc(`ICR total`)) %>% mutate(code = code %>% factor) %>% select(-classant) })}, extensions = "Buttons", filter = "top", options = list(paging = F, searching = T, dom = "Bfrtip", buttons = c("copy", "excel"))) } shinyApp(ui = ui, server = server)