You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

316 lines
8.2KB

  1. ---
  2. title: Endoscopies
  3. runtime: shiny
  4. output:
  5. html_document:
  6. toc: true
  7. toc_float: true
  8. ---
  9. ```{r setup, message = F, warning = F, echo = F}
  10. library(tidyverse)
  11. library(DT)
  12. library(knitr)
  13. library(magrittr)
  14. library(stringr)
  15. opts_chunk$set(message = F,
  16. echo = F,
  17. warning = F)
  18. options(DT.options = list(paging = F,
  19. searching = F,
  20. info = F,
  21. dom = "Bfrtip",
  22. buttons = c("copy", "excel")),
  23. shiny.maxRequestSize = 100*1024^2)
  24. ```
  25. # {.tabset}
  26. ## Chargement des données
  27. Les fichiers doivent être fournis au format CSV avec les paramètres suivants :
  28. * séparateur de champs = ,
  29. * guillemets = "
  30. * encodage = UTF-8
  31. * séparateur de décimales = ,
  32. ### Endoscopies en externe
  33. Le fichier doit être issu de la [requête suivante](endoscopies_ext.wid).
  34. ### Endoscopies en hospitalisation
  35. Le fichier doit être issu de la [requête suivante](endoscopies_hos.wid).
  36. ```{r data}
  37. inputPanel(
  38. fileInput("ext", "Endoscopies externes", accept = "text/csv"),
  39. fileInput("hos", "Endoscopies hospitalisations", accept = "text/csv"),
  40. downloadButton("report", "Générer le rapport")
  41. )
  42. read_csv2("actes.csv") -> liste_actes
  43. endoscopies <- reactive(
  44. {
  45. req(input$ext)
  46. read_csv(input$ext$datapath, locale = locale(decimal_mark = ",")) %>%
  47. setNames(c("Venue", "Intervention", "Acte", "Tarif", "Acte_libelle", "Service", "Type_venue")) %>%
  48. left_join(liste_actes %>% select(Code, Appareil), by = c("Acte" = "Code")) %>%
  49. dmap_if(is.character, factor) %>%
  50. filter(Tarif != 0) %>%
  51. distinct
  52. }
  53. )
  54. endoscopies_ext <- reactive(
  55. {
  56. req(endoscopies())
  57. endoscopies() %>%
  58. filter(Type_venue != 2)
  59. })
  60. endoscopies_hos <- reactive(
  61. {
  62. req(input$hos)
  63. read_csv(input$hos$datapath, locale = locale(decimal_mark = ",")) %>%
  64. setNames(c("RSS", "Durée", "GHM", "GHM_libelle", "Valorisation")) %>%
  65. distinct %>%
  66. mutate(Type_duree = `Durée` %>% cut(c(-Inf, 1.5, Inf), labels = c("0 ou 1 j", "1+ j")))
  67. })
  68. ```
  69. ```{r report}
  70. output$report <- downloadHandler(filename = "endoscopies.html",
  71. content = function(file)
  72. {
  73. tempReport <- file.path(tempdir(), "endoscopies.rmd")
  74. file.copy("endoscopies.rmd", tempReport, overwrite = T)
  75. rmarkdown::render(tempReport, output_file = file, params = list(liste_actes = liste_actes, endoscopies = endoscopies(), endoscopies_ext = endoscopies_ext(), endoscopies_hos = endoscopies_hos()))
  76. })
  77. ```
  78. ## Rapport
  79. ### Codes utilisés {.tabset}
  80. #### ORL
  81. ```{r liste_orl}
  82. liste_actes %>%
  83. filter(Appareil == "ORL") %>%
  84. select(- Appareil) %>%
  85. datatable(rownames = F, options = list(paging = T, searching = T))
  86. ```
  87. #### Digestif
  88. ```{r liste_dig}
  89. liste_actes %>%
  90. filter(Appareil == "Digestif") %>%
  91. select(- Appareil) %>%
  92. datatable(rownames = F, options = list(paging = T, searching = T))
  93. ```
  94. #### Respiratoire
  95. ```{r liste_respi}
  96. liste_actes %>%
  97. filter(Appareil == "Respiratoire") %>%
  98. select(- Appareil) %>%
  99. datatable(rownames = F, options = list(paging = T, searching = T))
  100. ```
  101. #### Génito-urinaire
  102. ```{r liste_uro}
  103. liste_actes %>%
  104. filter(Appareil == "Genito-urinaire") %>%
  105. select(- Appareil) %>%
  106. datatable(rownames = F, options = list(paging = T, searching = T))
  107. ```
  108. ### Global
  109. #### Total
  110. ```{r global_total}
  111. renderDataTable(
  112. {
  113. endoscopies() %>%
  114. summarise(Venues = n_distinct(Venue)) %>%
  115. datatable(rownames = F,
  116. extensions = "Buttons")
  117. })
  118. ```
  119. #### Par service exécutant
  120. ```{r global_par_service}
  121. renderDataTable(
  122. {
  123. endoscopies() %>%
  124. group_by(Service) %>%
  125. summarise(Venues = n_distinct(Venue)) %>%
  126. ungroup %>%
  127. arrange(desc(Venues)) %>%
  128. datatable(rownames = F,
  129. extensions = "Buttons")
  130. })
  131. ```
  132. ### Externe
  133. #### Total
  134. ```{r ext_total}
  135. renderDataTable(
  136. {
  137. endoscopies_ext() %>%
  138. summarise(Venues = n_distinct(Venue),
  139. Valorisation = sum(Tarif)) %>%
  140. datatable(rownames = F,
  141. extensions = "Buttons") %>%
  142. formatCurrency(2, currency = "€", dec.mark = ",", mark = " ", before = F)
  143. })
  144. ```
  145. #### Par appareil
  146. ```{r ext_par_appareil}
  147. renderDataTable(
  148. {
  149. endoscopies_ext() %>%
  150. group_by(Appareil) %>%
  151. summarise(Venues = n_distinct(Venue),
  152. Valorisation = sum(Tarif)) %>%
  153. arrange(desc(Valorisation)) %>%
  154. datatable(rownames = F,
  155. extensions = "Buttons") %>%
  156. formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F)
  157. })
  158. ```
  159. #### Par acte
  160. ```{r ext_par_acte}
  161. renderDataTable(
  162. {
  163. endoscopies_ext() %>%
  164. group_by(Acte, Acte_libelle) %>%
  165. summarise(Venues = n_distinct(Venue),
  166. Valorisation = sum(Tarif)) %>%
  167. ungroup %>%
  168. arrange(desc(Valorisation)) %>%
  169. datatable(options = list(paging = T, searching = T),
  170. colnames = c("Libelle" = "Acte_libelle"),
  171. rownames = F,
  172. extensions = "Buttons") %>%
  173. formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F)
  174. })
  175. ```
  176. #### Par service exécutant
  177. ```{r ext_par_service}
  178. renderDataTable(
  179. {
  180. endoscopies_ext() %>%
  181. group_by(Service) %>%
  182. summarise(Venues = n_distinct(Venue),
  183. Valorisation = sum(Tarif)) %>%
  184. ungroup %>%
  185. arrange(desc(Valorisation)) %>%
  186. datatable(rownames = F,
  187. extensions = "Buttons") %>%
  188. formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F)
  189. })
  190. ```
  191. #### Par service exécutant et par acte
  192. ```{r ext_par_acte_et_service}
  193. renderDataTable(
  194. {
  195. endoscopies_ext() %>%
  196. group_by(Service, Acte, Acte_libelle) %>%
  197. summarise(Venues = n_distinct(Venue),
  198. Valorisation = sum(Tarif)) %>%
  199. arrange(Service, desc(Valorisation)) %>%
  200. ungroup %>%
  201. datatable(options = list(paging = T, searching = T),
  202. colnames = c("Libelle" = "Acte_libelle"),
  203. rownames = F,
  204. extensions = "Buttons",
  205. filter = "top") %>%
  206. formatCurrency(5, currency = "€", dec.mark = ",", mark = " ", before = F)
  207. })
  208. ```
  209. ### Hospitalisation
  210. #### Total
  211. ```{r total_hos}
  212. renderDataTable(
  213. {
  214. endoscopies_hos() %>%
  215. summarise(RSS = n(),
  216. Valorisation = sum(Valorisation)) %>%
  217. datatable(rownames = F,
  218. extensions = "Buttons") %>%
  219. formatCurrency(2, currency = "€", dec.mark = ",", mark = " ", before = F)
  220. })
  221. ```
  222. #### Par durée d'hospitalisation
  223. ```{r hos_par_durée}
  224. renderDataTable(
  225. {
  226. endoscopies_hos() %>%
  227. group_by(Type_duree) %>%
  228. summarise(RSS = n(),
  229. Valorisation = sum(Valorisation)) %>%
  230. datatable(rownames = F,
  231. colnames = c("Durée" = "Type_duree"),
  232. extensions = "Buttons") %>%
  233. formatCurrency(3, currency = "€", dec.mark = ",", mark = " ", before = F)
  234. })
  235. ```
  236. #### Par GHM {.tabset}
  237. ##### 0 ou 1j
  238. ```{r ghm_hos_0j}
  239. renderDataTable(
  240. {
  241. endoscopies_hos() %>%
  242. filter(Type_duree == "0 ou 1 j") %>%
  243. group_by(GHM, GHM_libelle) %>%
  244. summarise(RSS = n(),
  245. Valorisation = sum(Valorisation)) %>%
  246. ungroup %>%
  247. arrange(desc(RSS)) %>%
  248. datatable(rownames = F,
  249. colnames = c("Libelle GHM" = "GHM_libelle"),
  250. options = list(paging = T),
  251. extensions = "Buttons") %>%
  252. formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F) %>%
  253. formatRound(5)
  254. })
  255. ```
  256. ##### 1+ j
  257. ```{r ghm_hos_1j}
  258. renderDataTable(
  259. {
  260. endoscopies_hos() %>%
  261. filter(Type_duree == "1+ j") %>%
  262. group_by(GHM, GHM_libelle) %>%
  263. summarise(RSS = n(),
  264. Valorisation = sum(Valorisation)) %>%
  265. ungroup %>%
  266. arrange(desc(RSS)) %>%
  267. datatable(rownames = F,
  268. colnames = c("Libelle GHM" = "GHM_libelle"),
  269. options = list(paging = T),
  270. extensions = "Buttons") %>%
  271. formatCurrency(4, currency = "€", dec.mark = ",", mark = " ", before = F) %>%
  272. formatRound(5)
  273. })
  274. ```