Browse Source

Initial commit

master
Maxime Wack 7 years ago
commit
1a2fb31709
4 changed files with 8627 additions and 0 deletions
  1. +8298
    -0
      CCAM.csv
  2. +186
    -0
      README.html
  3. +34
    -0
      README.md
  4. +109
    -0
      app.R

+ 8298
- 0
CCAM.csv
File diff suppressed because it is too large
View File


+ 186
- 0
README.html
File diff suppressed because it is too large
View File


+ 34
- 0
README.md View File

@@ -0,0 +1,34 @@
---
title: Actes manquants collact → webpims
author: Maxime Wack
date: 2017-03-21
---

# Description

Script servant à l'identification d'actes classants saisis dans le collecteur d'actes mais non transmis à webPIMS.

# Sources de données

Les fichiers doivent être fournis au format CSV avec les paramètres suivants :

* séparateur = ,
* guillemets = "
* encodage = UTF-8

## Collecteur d'actes

Le fichier collact doit contenir les colonnes suivantes, dans cet ordre (peu importe le nom, mais la ligne d'en-tête doit exister) :

* n° de venue
* code acte CCAM
* date de l'acte au format **jj/mm/aa**
* n° d'intervention

## WebPIMS

Le fichier webpims doit contenir les colonnes suivantes, dans cet ordre (peu importe le nom, mais la ligne d'en-tête doit exister) :

* n° de venue
* code acte CCAM
* date de l'acte au format **aaaa/mm/jj**

+ 109
- 0
app.R View File

@@ -0,0 +1,109 @@
library(tidyverse)
library(rmarkdown)
library(lubridate)
library(magrittr)
library(stringr)
library(shiny)
library(DT)

options(shiny.maxRequestSize = 100*1024^2)

# 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 = "README.html", "Manuel d'utilisation"),
hr(),
numericInput("annee", "Année", Sys.Date() %>% year),
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, col_types = "cccc") %>%
`names<-`(c("idhosp", "code", "date", "internum")) %>%
#mutate(date = date %>% as.Date(format = "%d/%m/%Y") + years(2000)) %>%
mutate(date = date %>% as.Date(format = "%d/%m/%Y")) %>%
filter(date <= as.Date(str_c(input$annee, "-12-31")))
})

# webpims ====
pims <- reactive({
req(input$webpims)

read_csv(input$webpims$datapath, col_types = "ccc") %>%
`names<-`(c("idhosp", "code", "date")) %>%
#mutate(date = date %>% as.Date(format = "%Y/%m/%d"),
mutate(date = date %>% as.Date(format = "%d/%m/%Y"),
code = code %>% str_sub(1,7)) %>%
filter(date <= as.Date(str_c(input$annee, "-12-31")))
})

# Output
output$resultat <- DT::renderDataTable(
{
req(collact(), pims())

withProgress(message = "Calcul…",
value = 0.25,
detail = "Différence collact-pims",
{

# Collact - PIMS ====
collact() %>%
filter(!((code %>% str_detect("^JVJF")) & (date < str_c(input$annee, "-01-01")))) %>%
anti_join(pims()) %>%
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)

Loading…
Cancel
Save