|
- 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)
|