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.

733 lines
25KB

  1. ---
  2. title: Bilan de clôture
  3. output:
  4. html_document:
  5. toc: true
  6. toc_float: true
  7. params:
  8. annee: NA
  9. mois: NA
  10. rum: NA
  11. rss: NA
  12. exhau: NA
  13. exhau_pims: NA
  14. Ovalide: NA
  15. OvalideP: NA
  16. ---
  17. ```{r init, echo = F, message = F}
  18. library(tidyverse)
  19. library(DT)
  20. library(knitr)
  21. library(stringr)
  22. library(plotly)
  23. library(lubridate)
  24. opts_chunk$set(echo = F,
  25. message = F,
  26. warning = F,
  27. fig.width = 10,
  28. fig.height = 6)
  29. options(DT.options = list(paging = F,
  30. searching = F,
  31. info = F,
  32. dom = "Bfrtip",
  33. buttons = c("copy", "excel")))
  34. pdf(NULL)
  35. ```
  36. ```{r data}
  37. Ovalide <- params$Ovalide$tab
  38. OvalideP <- params$OvalideP$tab
  39. annee <- params$annee
  40. mois <- params$mois
  41. rum <- params$rum
  42. rss <- params$rss
  43. exhau <- params$exhau
  44. exhau_pims <- params$exhau_pims
  45. mois_label <- c("Janvier",
  46. "Février",
  47. "Mars",
  48. "Avril",
  49. "Mai",
  50. "Juin",
  51. "Juillet",
  52. "Août",
  53. "Septembre",
  54. "Octobre",
  55. "Novembre",
  56. "Décembre")
  57. sprintf("%02.f", mois) %>%
  58. {
  59. previous <<- str_c("M", ., "-", annee - 1)
  60. current <<- str_c("M", ., "-", annee)
  61. periode <<- str_c(previous, " et de ", current)
  62. }
  63. ```
  64. # Production
  65. ## Nombre total de RUM et de RSS transmis
  66. ```{r tab1}
  67. rum %>%
  68. filter(annee_sortie == annee) %>%
  69. tally %>%
  70. bind_rows(rss %>%
  71. filter(annee_sortie == annee) %>%
  72. tally) %>%
  73. datatable(rownames = c("RUM", "RSS"),
  74. extensions = "Buttons",
  75. colnames = c("Type de résumé", "Nombre transmis"))
  76. ```
  77. ## Nombre de RUM transmis par mois pour les 3 dernières années
  78. ```{r tab2a}
  79. rum %>%
  80. count(annee_sortie, mois_sortie) %>%
  81. spread(annee_sortie, n) %>%
  82. bind_rows(filter(., mois_sortie <= mois) %>%
  83. select(-mois_sortie) %>%
  84. summarise_each(funs(sum))) %>%
  85. bind_rows(filter(., mois_sortie <= 12) %>%
  86. select(-mois_sortie) %>%
  87. summarise_each(funs(sum))) %>%
  88. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  89. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  90. select(-mois_sortie) %>%
  91. datatable(rownames = c(mois_label, "Total clôture", "Total M12"),
  92. extensions = "Buttons") %>%
  93. formatPercentage(c(4,5), digits = 2)
  94. ```
  95. ```{r fig2a}
  96. rum %>%
  97. count(annee_sortie, mois_sortie) %>%
  98. ungroup %>%
  99. mutate(annee_sortie = annee_sortie %>% factor) %>%
  100. ggplot(
  101. aes(x = mois_sortie,
  102. y = n,
  103. color = annee_sortie,
  104. shape = annee_sortie)) +
  105. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  106. geom_line() +
  107. geom_point() +
  108. labs(x = NULL,
  109. y = NULL,
  110. title = "RUM") +
  111. theme_bw() +
  112. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  113. legend.title = element_blank(),
  114. plot.title = element_text(hjust = 0)) -> p
  115. ggplotly(p, tooltip = c("x", "y", "colour"))
  116. ```
  117. ## Nombre de RSS transmis par mois pour les 3 dernières années
  118. ```{r tab2b}
  119. rss %>%
  120. count(annee_sortie, mois_sortie) %>%
  121. spread(annee_sortie, n) %>%
  122. bind_rows(filter(., mois_sortie <= mois) %>%
  123. select(-mois_sortie) %>%
  124. summarise_each(funs(sum))) %>%
  125. bind_rows(filter(., mois_sortie <= 12) %>%
  126. select(-mois_sortie) %>%
  127. summarise_each(funs(sum))) %>%
  128. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  129. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  130. select(-mois_sortie) %>%
  131. datatable(rownames = c(mois_label, "Total clôture", "Total M12"),
  132. extensions = "Buttons") %>%
  133. formatPercentage(c(4,5), digits = 2)
  134. ```
  135. ```{r fig2b}
  136. rss %>%
  137. count(annee_sortie, mois_sortie) %>%
  138. ungroup %>%
  139. mutate(annee_sortie = annee_sortie %>% factor) %>%
  140. ggplot(
  141. aes(x = mois_sortie,
  142. y = n,
  143. color = annee_sortie,
  144. shape = annee_sortie)) +
  145. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  146. geom_line() +
  147. geom_point() +
  148. labs(x = NULL,
  149. y = NULL,
  150. title = "RSS") +
  151. theme_bw() +
  152. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  153. legend.title = element_blank(),
  154. plot.title = element_text(hjust = 0)) -> p
  155. ggplotly(p, tooltip = c("x", "y", "colour"))
  156. ```
  157. ### Nombre de RSS de 1 jour et plus transmis par mois pour les 3 dernières années
  158. ```{r tab3a}
  159. rss %>%
  160. filter(duree_rss >= 1) %>%
  161. count(annee_sortie, mois_sortie) %>%
  162. spread(annee_sortie, n) %>%
  163. bind_rows(filter(., mois_sortie <= mois) %>%
  164. select(-mois_sortie) %>%
  165. summarise_each(funs(sum))) %>%
  166. bind_rows(filter(., mois_sortie <= 12) %>%
  167. select(-mois_sortie) %>%
  168. summarise_each(funs(sum))) %>%
  169. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  170. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  171. select(-mois_sortie) %>%
  172. datatable(extensions = "Buttons", rownames = c(mois_label, "Total clôture", "Total M12")) %>%
  173. formatPercentage(c(4,5), digits = 2)
  174. ```
  175. ```{r fig3a}
  176. rss %>%
  177. filter(duree_rss >= 1) %>%
  178. count(annee_sortie, mois_sortie) %>%
  179. ungroup %>%
  180. mutate(annee_sortie = annee_sortie %>% factor) %>%
  181. ggplot(
  182. aes(x = mois_sortie,
  183. y = n,
  184. color = annee_sortie,
  185. shape = annee_sortie)) +
  186. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  187. geom_line() +
  188. geom_point() +
  189. labs(x = NULL,
  190. y = NULL,
  191. title = "RSS de 1 jour et +") +
  192. theme_bw() +
  193. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  194. legend.title = element_blank(),
  195. plot.title = element_text(hjust = 0)) -> p
  196. ggplotly(p, tooltip = c("x", "y", "colour"))
  197. ```
  198. ### Nombre de RSS de 0 jour (hors séances) transmis par mois pour les 3 dernières années
  199. ```{r tab3b}
  200. rss %>%
  201. filter(duree_rss == 0, cmd != 28) %>%
  202. count(annee_sortie, mois_sortie) %>%
  203. spread(annee_sortie, n) %>%
  204. bind_rows(filter(., mois_sortie <= mois) %>%
  205. select(-mois_sortie) %>%
  206. summarise_each(funs(sum))
  207. ) %>%
  208. bind_rows(filter(., mois_sortie <= 12) %>%
  209. select(-mois_sortie) %>%
  210. summarise_each(funs(sum))
  211. ) %>%
  212. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  213. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  214. select(-mois_sortie) %>%
  215. datatable(extensions = "Buttons", rownames = c(mois_label, "Total clôture", "Total M12")) %>%
  216. formatPercentage(c(4,5), digits = 2)
  217. ```
  218. ```{r fig3b}
  219. rss %>%
  220. filter(duree_rss == 0, cmd != 28) %>%
  221. count(annee_sortie, mois_sortie) %>%
  222. ungroup %>%
  223. mutate(annee_sortie = annee_sortie %>% factor) %>%
  224. ggplot(
  225. aes(x = mois_sortie,
  226. y = n,
  227. color = annee_sortie,
  228. shape = annee_sortie)) +
  229. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  230. geom_line() +
  231. geom_point() +
  232. labs(x = NULL,
  233. y = NULL,
  234. title = "RSS de 0 jour, hors séances") +
  235. theme_bw() +
  236. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  237. legend.title = element_blank(),
  238. plot.title = element_text(hjust = 0)) -> p
  239. ggplotly(p, tooltip = c("x", "y", "colour"))
  240. ```
  241. ### Nombre de RSS de séance transmis par mois pour les 3 dernières années
  242. ```{r tab3c}
  243. rss %>%
  244. filter(duree_rss == 0, cmd == 28) %>%
  245. count(annee_sortie, mois_sortie) %>%
  246. spread(annee_sortie, n) %>%
  247. bind_rows(filter(., mois_sortie <= mois) %>%
  248. select(-mois_sortie) %>%
  249. summarise_each(funs(sum))) %>%
  250. bind_rows(filter(., mois_sortie <= 12) %>%
  251. select(-mois_sortie) %>%
  252. summarise_each(funs(sum))) %>%
  253. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  254. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  255. select(-mois_sortie) %>%
  256. datatable(extensions = "Buttons", rownames = c(mois_label, "Total clôture", "Total M12")) %>%
  257. formatPercentage(c(4,5), digits = 2)
  258. ```
  259. ```{r fig3c}
  260. rss %>%
  261. filter(duree_rss == 0, cmd == 28) %>%
  262. count(annee_sortie, mois_sortie) %>%
  263. ungroup %>%
  264. mutate(annee_sortie = annee_sortie %>% factor) %>%
  265. ggplot(
  266. aes(x = mois_sortie,
  267. y = n,
  268. color = annee_sortie,
  269. shape = annee_sortie)) +
  270. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  271. geom_line() +
  272. geom_point() +
  273. labs(x = NULL,
  274. y = NULL,
  275. title = "RSS de séances") +
  276. theme_bw() +
  277. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  278. legend.title = element_blank(),
  279. plot.title = element_text(hjust = 0)) -> p
  280. ggplotly(p, tooltip = c("x", "y", "colour"))
  281. ```
  282. ## Nombre de RUM transmis par pôle pour les 3 dernières années
  283. ```{r tab4}
  284. rum %>%
  285. filter(mois_sortie <= mois) %>%
  286. filter(! is.na(pole_libelle)) %>%
  287. count(pole_libelle, annee_sortie) %>%
  288. ungroup %>%
  289. mutate(pole_libelle = pole_libelle %>% str_replace("\xc9", "É")) %>%
  290. spread(annee_sortie, n) %>%
  291. bind_rows(select(., -pole_libelle) %>%
  292. summarise_each(funs(sum(., na.rm = T))) %>%
  293. mutate(pole_libelle = "TOTAL")) %>%
  294. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 2,"`)/`", annee - 2,"`"), str_c(annee, "-", annee - 2))) %>%
  295. mutate_(.dots = setNames(str_c("(`",annee,"`-`", annee - 1,"`)/`", annee - 1,"`"), str_c(annee, "-", annee - 1))) %>%
  296. datatable(extensions = "Buttons", colnames = c("Pôle" = 1), rownames = F) %>%
  297. formatPercentage(c(5,6), digits = 2)
  298. ```
  299. ```{r fig4}
  300. rum %>%
  301. filter(mois_sortie <= mois) %>%
  302. filter(! is.na(pole_libelle)) %>%
  303. count(pole_libelle, annee_sortie) %>%
  304. ungroup %>%
  305. mutate(pole_libelle = pole_libelle %>% str_replace("\xc9", "É")) %>%
  306. ggplot(
  307. aes(x = annee_sortie,
  308. y = n,
  309. color = pole_libelle)) +
  310. scale_x_continuous(breaks = (annee - 2):annee) +
  311. facet_wrap(~ pole_libelle, scales = "free") +
  312. geom_point() +
  313. geom_line() +
  314. labs(x = NULL,
  315. y = NULL,
  316. title = "RUM par pôle") +
  317. theme_bw() +
  318. theme(legend.position = "none",
  319. plot.title = element_text(hjust = 0))
  320. ```
  321. # Exhaustivité
  322. ## Exhaustivité des RSS en fonction du mois et de l'année de clôture
  323. ### Nombre de RSS produits et transmis, et taux d'exhaustivité : historique des clôtures de l'année
  324. ```{r tab5}
  325. exhau %>%
  326. mutate(rss_trans = rss - manq,
  327. exh = rss_trans / rss) %>%
  328. select(rss, rss_trans, exh) %>%
  329. datatable(colnames = c("Clôture", "Total RSS produits", "Nombre de RSS transmis", "Taux d'exhaustivité RSS (%)"),
  330. extensions = "Buttons",
  331. rownames = mois_label) %>%
  332. formatPercentage(3, digits = 2)
  333. ```
  334. ### Taux d'exhaustivité selon le mois clôturé de l'année courante
  335. ```{r fig5a}
  336. exhau %>%
  337. mutate(rss_trans = rss - manq,
  338. exh = 100 * rss_trans / rss) %>%
  339. ggplot(
  340. aes(x = mois,
  341. y = exh)) +
  342. geom_point() +
  343. geom_line() +
  344. labs(x = NULL,
  345. y = NULL,
  346. title = NULL) +
  347. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  348. theme_bw() +
  349. theme(axis.text.x = element_text(angle = 45, hjust = 1)) -> p
  350. ggplotly(p)
  351. ```
  352. ## Exhaustivité mensuelle de la clôture
  353. ### Taux d'exhaustivité des RSS pour la clôture actuelle selon le mois de sortie du RSS
  354. ```{r fig7}
  355. exhau_pims %>%
  356. mutate(mois_sortie = month(Sortie)) %>%
  357. filter(is.na(DP)) %>%
  358. distinct(RSS, .keep_all = T) %>%
  359. count(mois_sortie) %>%
  360. full_join(exhau_pims %>%
  361. mutate(mois_sortie = month(Sortie)) %>%
  362. distinct(RSS, .keep_all = T) %>%
  363. count(mois_sortie),
  364. by = "mois_sortie") %>%
  365. mutate(n = 100 * (n.y - n.x) / n.y) %>%
  366. complete(mois_sortie = 1:mois, fill = list(n = 100)) %>%
  367. ggplot(
  368. aes(x = mois_sortie,
  369. y = n)) +
  370. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  371. geom_line() +
  372. geom_point() +
  373. labs(x = NULL,
  374. y = NULL,
  375. title = NULL) +
  376. theme_bw() +
  377. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  378. legend.title = element_blank(),
  379. plot.title = element_text(hjust = 0)) -> p
  380. ggplotly(p)
  381. ```
  382. ### Nombre de RSS manquants pour la clôture actuelle selon le mois de sortie du RSS
  383. ```{r fig8}
  384. exhau_pims %>%
  385. mutate(mois_sortie = month(Sortie)) %>%
  386. filter(is.na(DP)) %>%
  387. distinct(RSS, .keep_all = T) %>%
  388. count(mois_sortie) %>%
  389. complete(mois_sortie = 1:mois, fill = list(n = 0)) %>%
  390. ggplot(
  391. aes(x = mois_sortie,
  392. y = n)) +
  393. scale_x_discrete(limits = mois_label, expand = c(.05, 0)) +
  394. geom_line() +
  395. geom_point() +
  396. labs(x = NULL,
  397. y = NULL,
  398. title = NULL) +
  399. theme_bw() +
  400. theme(axis.text.x = element_text(angle = 45, hjust = 1),
  401. legend.title = element_blank(),
  402. plot.title = element_text(hjust = 0)) -> p
  403. ggplotly(p)
  404. ```
  405. ## Exhaustivité par pôle et par service
  406. ```{r tab9}
  407. exhau_pims %>%
  408. group_by(Pole, Service) %>%
  409. summarise(Prod = n()) %>%
  410. full_join(
  411. exhau_pims %>%
  412. filter(is.na(DP)) %>%
  413. group_by(Pole, Service) %>%
  414. summarise(Manquants = n())
  415. ) %>%
  416. full_join(
  417. exhau_pims %>%
  418. filter(Erreur == 4) %>%
  419. group_by(Pole, Service) %>%
  420. summarise(Rumrss = n())
  421. ) %>%
  422. bind_rows(
  423. exhau_pims %>%
  424. group_by(Pole) %>%
  425. summarise(Prod = n()) %>%
  426. full_join(
  427. exhau_pims %>%
  428. filter(is.na(DP)) %>%
  429. group_by(Pole) %>%
  430. summarise(Manquants = n())
  431. ) %>%
  432. full_join(
  433. exhau_pims %>%
  434. filter(Erreur == 4) %>%
  435. group_by(Pole) %>%
  436. summarise(Rumrss = n())
  437. )
  438. ) %>%
  439. bind_rows(
  440. exhau_pims %>%
  441. summarise(Prod = n()) %>%
  442. bind_cols(
  443. exhau_pims %>%
  444. filter(is.na(DP)) %>%
  445. summarise(Manquants = n())
  446. ) %>%
  447. bind_cols(
  448. exhau_pims %>%
  449. filter(Erreur == 4) %>%
  450. summarise(Rumrss = n())
  451. )
  452. ) %>%
  453. ungroup %>%
  454. arrange(Pole, Service) %>%
  455. select(Pole, Service, Manquants, Rumrss, Prod) %>%
  456. mutate(Service = ifelse(is.na(Service), "TOTAL", Service),
  457. Exh_rum = (Prod - Manquants) / Prod,
  458. Exh_rumrss = (Prod - Rumrss) / Prod,
  459. Exh_rum = ifelse(is.na(Exh_rum), 1, Exh_rum),
  460. Pole = Pole %>% factor,
  461. Exh_rumrss = ifelse(is.na(Exh_rumrss), 1, Exh_rumrss)) %>%
  462. datatable(colnames = c("Pôle", "Service", "RUM manquants", "RUM dans RSS manquant", "Production RUM", "Exhaustivité RUM", "Exhaustivité RUM-RSS"),
  463. extensions = "Buttons",
  464. rownames = F,
  465. filter = "top",
  466. options = list(searching = T,
  467. paging = T)) %>%
  468. formatPercentage(c(6,7), digits = 2)
  469. ```
  470. # Valorisation
  471. ## Nombre et valorisation des RSA transmis, traités et valorisés
  472. ```{r tab10}
  473. OvalideP$SVA %>%
  474. full_join(Ovalide$SVA, by = "A") %>%
  475. mutate(D = C.y - C.x,
  476. E = (C.y - C.x) / C.x) %>%
  477. datatable(rownames = F,
  478. extensions = "Buttons",
  479. escape = F,
  480. container = htmltools::withTags(table(class = 'display',
  481. thead(tr(th(rowspan = 2, "RSA"),
  482. th(colspan = 2, previous),
  483. th(colspan = 2, current),
  484. th(colspan = 2, "Évolution")),
  485. tr(th("Effectif"),
  486. th("Montant BR"),
  487. th("Effectif"),
  488. th("Montant BR"),
  489. th("€"),
  490. th("%"))
  491. )
  492. ))) %>%
  493. formatCurrency(c(3,5,6), currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",") %>%
  494. formatPercentage(7, digits = 2)
  495. ```
  496. *Données issues des tableaux OVALIDE [1.V.1.SV] A de `r periode`*
  497. ## Valorisation des RSA non pris en charge par l'Assurance Maladie
  498. ```{r tab11}
  499. OvalideP$VSS %>% select(1:3) %>%
  500. full_join(Ovalide$VSS %>% select(1:3), by = "A") %>%
  501. mutate(D = C.y - C.x,
  502. E = (C.y - C.x) / C.x) %>%
  503. datatable(rownames = F,
  504. extensions = "Buttons",
  505. container = htmltools::withTags(table(class = 'display',
  506. thead(tr(th(rowspan = 2, "Composante"),
  507. th(colspan = 2, previous),
  508. th(colspan = 2, current),
  509. th(colspan = 2, "Évolution")),
  510. tr(th("Effectif"),
  511. th("Montant BR"),
  512. th("Effectif"),
  513. th("Montant BR"),
  514. th("€"),
  515. th("%"))
  516. )
  517. )
  518. )) %>%
  519. formatCurrency(c(3,5,6), currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",") %>%
  520. formatPercentage(7, digits = 2)
  521. ```
  522. *Données issues des tableaux [1.V.1.VSS] A de `r periode`*
  523. ## Taux de remboursement des RSA pris en charge par l'Assurance Maladie
  524. ```{r tab12}
  525. OvalideP$TXR %>%
  526. full_join(Ovalide$TXR, by = c("A", "B")) %>%
  527. datatable(rownames = F,
  528. extensions = "Buttons",
  529. container = htmltools::withTags(table(class = 'display',
  530. thead(tr(th(rowspan = 2, "Taux de remboursement"),
  531. th(rowspan = 2, "Type"),
  532. th(colspan = 2, previous),
  533. th(colspan = 2, current)),
  534. tr(th("Effectif"),
  535. th("%"),
  536. th("Effectif"),
  537. th("%"))
  538. )
  539. )
  540. )) %>%
  541. formatCurrency(c(4, 6), digits = 2, currency = "", dec.mark = ",")
  542. ```
  543. *Données issues des tableaux OVALIDE [1.V.1.TXR] C de `r periode`*
  544. _\* Séjours de NN, radiothérape ou PO_
  545. ## Valorisation des RSA pris en charge par l'Assurance Maladie
  546. ```{r tab13}
  547. OvalideP$RAV[-(1:2), c(1,4,6)] %>%
  548. full_join(Ovalide$RAV[-(1:2), c(1,4,6)], by = "A") %>%
  549. mutate(D.z = (D.y - D.x) / D.x,
  550. F.z = (F.y - F.x) / F.x) %>%
  551. .[names(.) %>% sort] %>%
  552. datatable(rownames = F,
  553. extensions = "Buttons",
  554. escape = F,
  555. container = htmltools::withTags(table(class = 'display',
  556. thead(tr(th(rowspan = 2, "Composante"),
  557. th(colspan = 2, "Montant BR¹"),
  558. th(rowspan = 2, "Evol. montant BR¹"),
  559. th(colspan = 2, "Montant remboursé AM²"),
  560. th(rowspan = 2, "Evol. montant remboursé AM²")),
  561. tr(rep(c(previous, current), 2) %>%
  562. lapply(th))
  563. )
  564. )
  565. )) %>%
  566. formatPercentage(c(4, 7), digits = 2) %>%
  567. formatCurrency(c(2, 3, 5, 6), currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",")
  568. ```
  569. *Données issues des tableaux OVALIDE [1.V.1.RAV] C de `r periode`*
  570. <sup>1</sup> Montant Brut
  571. <sup>2</sup> Montant Remboursé par l'Assurance Maladie
  572. ## Valorisation des IVG, ATU, SE, actes et consultations
  573. ```{r tab14}
  574. data_frame(A = c(OvalideP$VATU[is.na(OvalideP$VATU$A), 3:5] %>% unlist,
  575. OvalideP$VSE[OvalideP$VSE$A == "", 3:5] %>% unlist,
  576. OvalideP$VCCAM[OvalideP$VCCAM$A == "", 2:4] %>% unlist,
  577. OvalideP$VNGAP[OvalideP$VNGAP$A == "", 3:5] %>% unlist),
  578. B = c(Ovalide$VATU[is.na(Ovalide$VATU$A), 3:5] %>% unlist,
  579. Ovalide$VSE[Ovalide$VSE$A == "", 3:5] %>% unlist,
  580. Ovalide$VCCAM[Ovalide$VCCAM$A == "", 2:4] %>% unlist,
  581. Ovalide$VNGAP[Ovalide$VNGAP$A == "", 3:5] %>% unlist)) %>%
  582. mutate(C = B - A,
  583. D = (B - A) / A) %>%
  584. datatable(rownames = str_c(rep(c("Nombre de prestations",
  585. "Valorisation brute",
  586. "Valorisation AM"),4),
  587. rep(c("ATU<sup>1</sup>",
  588. "SE<sup>2</sup>",
  589. "CCAM<sup>3</sup>",
  590. "NGAP<sup>4</sup>"), each = 3), sep = " "),
  591. colnames = c(previous, current, "Évolution (n ou &euro;)", "Évolution"),
  592. extensions = "Buttons",
  593. escape = F) %>%
  594. formatCurrency(1:3, currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",") %>%
  595. formatPercentage(4, digits = 2)
  596. ```
  597. <sup>1</sup>*Données issues des tableaux OVALIDE [2.V.VATU] de `r periode`*
  598. <sup>2</sup>*Données issues des tableaux OVALIDE [2.V.VSE] de `r periode`*
  599. <sup>3</sup>*Données issues des tableaux OVALIDE [2.V.VCCAM] de `r periode`*
  600. <sup>4</sup>*Données issues des tableaux OVALIDE [2.V.VNGAP] de `r periode`*
  601. ## Nombre de Suppléments valorisés, Performance et Valorisation des séjours non envoyés
  602. ```{r tab15}
  603. OvalideP$UMAS %>%
  604. full_join(Ovalide$UMAS, by = "A") %>%
  605. mutate(C = B.y - B.x,
  606. D = (B.y - B.x) / B.x) %>%
  607. datatable(rownames = F,
  608. extensions = "Buttons",
  609. colnames = c(previous, current, "Évolution (n)", "Évolution")) %>%
  610. formatCurrency(2:4, currency = "", interval = 3, mark = "&nbsp;", digits = 0) %>%
  611. formatPercentage(5, digits = 2)
  612. ```
  613. *Données issues des tableaux OVALIDE [1.V.1.UMAS] E de `r periode`*
  614. ## Prix Moyen du Cas Traité\* de l'année en cours et de l'année précédente
  615. ```{r tab16}
  616. OvalideP$SVB %>%
  617. mutate(B = C/B) %>%
  618. select(-C) %>%
  619. full_join(Ovalide$SVB %>%
  620. mutate(B = C/B) %>%
  621. select(-C),
  622. by = "A") %>%
  623. mutate(C = B.y - B.x,
  624. D = (B.y - B.x) / (B.x)) %>%
  625. datatable(escape = F,
  626. extensions = "Buttons",
  627. rownames = F,
  628. colnames = c("Type de séjours", previous, current, "Évolution (&euro;)", "Évolution")) %>%
  629. formatPercentage(5, digits = 2) %>%
  630. formatCurrency(2:4, currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",")
  631. ```
  632. *Données issues des tableaux OVALIDE [1.V.1.SV] B de `r periode`*
  633. _\* Prix Moyen du Cas Traité = Total valorisation / nombre de RSA valorisés_
  634. ## Estimation de la valorisation des séjours non transmis de l'année en cours
  635. ```{r tab17}
  636. exhau_pims %>% filter(is.na(DP), Duree == 0) %>% distinct(RSS) %>% nrow -> zero
  637. exhau_pims %>% filter(is.na(DP), Duree > 0) %>% distinct(RSS) %>% nrow -> plus
  638. data.frame(zero = c(zero, Ovalide$SVB$C[3]/Ovalide$SVB$B[3], zero * Ovalide$SVB$C[3]/Ovalide$SVB$B[3]),
  639. plus = c(plus, Ovalide$SVB$C[2]/Ovalide$SVB$B[2], plus * Ovalide$SVB$C[2]/Ovalide$SVB$B[2])) %>%
  640. datatable(escape = F,
  641. extensions = "Buttons",
  642. rownames = c("Nombre", "PMCT*", "Valorisation"),
  643. colnames = c("Indicateur", "0 jour", "Plus de 0 jour")) %>%
  644. formatCurrency(1:2, currency = "", interval = 3, mark = "&nbsp;", digits = 2, dec.mark = ",")
  645. rm(plus, zero)
  646. ```
  647. *Données issues de la requête BO «`r current`» et des tableaux OVALIDE [1.V.1.SV] B de `r periode`*
  648. _\* Prix Moyen du Cas Traité = Total valorisation / nombre de RSA valorisés_
  649. ## Indice de performance de la durée moyenne de séjours (IP-DMS) de l'année en cours et de l'année précédente
  650. ```{r tab18}
  651. if (nrow(Ovalide$EDMS) == 6)
  652. {
  653. IP_current <- (Ovalide$EDMS[[1, 2]] + Ovalide$EDMS[[4, 2]]) / (Ovalide$EDMS[[2, 2]] + Ovalide$EDMS[[5, 2]])
  654. IP_previous <- (OvalideP$EDMS[[1, 2]] + OvalideP$EDMS[[4, 2]]) / (OvalideP$EDMS[[2, 2]] + OvalideP$EDMS[[5, 2]])
  655. } else {
  656. IP_current <- Ovalide$EDMS[[1, 2]] / Ovalide$EDMS[[2, 2]]
  657. IP_previous <- OvalideP$EDMS[[1, 2]] / OvalideP$EDMS[[2, 2]]
  658. }
  659. data_frame(IP_previous, IP_current) %>%
  660. datatable(rownames = "Indice de performance",
  661. extensions = "Buttons",
  662. colnames = c(previous, current)) %>%
  663. formatCurrency(1:2, currency = "", digits = 3, dec.mark = ",")
  664. rm(IP_previous, IP_current)
  665. ```
  666. *Données issues des tableaux OVALIDE [1.D2.EDMS] de `r periode`*
  667. _\* Nb de journées / Nb de journées standardisées sur la DMS théorique_