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.

124 lines
4.3KB

  1. source("functionsOvalide.R")
  2. library(lubridate)
  3. # Date pour le rapport
  4. date <- format.Date(today(),format="%d/%m/%Y")
  5. # Récupération des arguments pour utilisation non interactive
  6. arguments <- commandArgs()
  7. if (length(arguments) != 13)
  8. {
  9. print ("Usage : donnees.sh CHUuser CHUpass ATIHuser ATIHpass LivenneUser LivennePass annee mois")
  10. quit()
  11. } else
  12. {
  13. CHUuser <- arguments[6]
  14. CHUpass <- arguments[7]
  15. ATIHuser <- arguments[8]
  16. ATIHpass <- arguments[9]
  17. user <- arguments[10]
  18. password <- arguments[11]
  19. annee <- as.numeric(arguments[12])
  20. mois <- as.numeric(arguments[13])
  21. }
  22. # Récupération des fichiers ePMSI
  23. print("1/9 - Connexion à ePMSI")
  24. connectOvalide(CHUuser, CHUpass, ATIHuser, ATIHpass)
  25. print(str_c("2/9 - Téléchargement du tableau de", mois, annee, sep = " "))
  26. getOvalide(CHUuser, CHUpass, annee, mois)
  27. print(str_c("3/9 - Téléchargement du tableau de", mois, annee - 1, sep = " "))
  28. getOvalide(CHUuser, CHUpass, annee - 1, mois)
  29. # Extraction des données des fichiers ePMSI
  30. print("4/9 - Extraction des tableaux ePMSI")
  31. read.csv2("listOvalide.csv") %>%
  32. {
  33. apply(., 1, . %>%
  34. {
  35. df <- extractOvalide(annee, mois, .[2], .[3])
  36. names(df) <- LETTERS[1:length(df)]
  37. df
  38. }) ->> Ovalide
  39. names(Ovalide) <<- .$name
  40. apply(., 1, . %>%
  41. {
  42. df <- extractOvalide(annee - 1, mois, .[2], .[3])
  43. names(df) <- LETTERS[1:length(df)]
  44. df
  45. }) ->> OvalideP
  46. names(OvalideP) <<- .$name
  47. }
  48. # Récupération des données ePMSI de 2015 fusionnées CCEG-CHU
  49. if (annee == 2016)
  50. {
  51. load("Ovalide.Rdata")
  52. OvalideP <- CCEGCHU2015[[str_c("mois", mois, sep = "")]]
  53. rm("CCEGCHU2015")
  54. }
  55. # Nettoyage des fichiers extraits. Les archives sont conservées.
  56. unlink(str_c("OVALIDE T2A.MCO.DGF", annee, mois, "html", sep = "."))
  57. unlink(str_c("OVALIDE T2A.MCO.DGF", annee - 1, mois, "html", sep = "."))
  58. # RUM + structure + calcul durée de séjour
  59. print("5/9 - LIVENNE : RUM et structure")
  60. src_mysql("pmsi_dim", "localhost", user = user, password = password) %>%
  61. tbl(sql("SELECT finess, idhosp, idrss, idrum, date_entree, date_sortie, cmd, um FROM fix116
  62. UNION
  63. SELECT finess, idhosp, idrss, idrum, date_entree, date_sortie, cmd, um FROM fix117")) %>%
  64. collect(n = Inf) %>%
  65. mutate(date_entree = date_entree %>% as.Date,
  66. date_sortie = date_sortie %>% as.Date) %>%
  67. left_join(src_mysql("pmsi_dim_nom", "localhost", user = user, password = password) %>%
  68. tbl("structure") %>%
  69. filter(um != "") %>%
  70. select(uf_date_ferm, um, service_libelle, pole_libelle) %>%
  71. arrange(um, uf_date_ferm) %>%
  72. distinct %>%
  73. collect(n = Inf) %>%
  74. add_rownames(var = "dummy") %>% # Dédoublonnage : 1 um -> 1 couple libellés
  75. group_by(um) %>%
  76. filter(dummy == last(dummy)) %>%
  77. select(-dummy, -uf_date_ferm) %>%
  78. ungroup) %>%
  79. mutate(idrss = ifelse(finess == "540000031", str_c("m", idrss), idrss)) %>% # maternité
  80. mutate(idrss = ifelse(finess == "540020112", str_c("c", idrss), idrss)) %>% # CCEG
  81. mutate(idhosp = idhosp %>% str_replace_all(" ", "")) %>%
  82. mutate(duree_rum = date_sortie - date_entree) %>% # durée rum
  83. left_join(group_by(., idrss) %>%
  84. summarise(duree_rss = sum(duree_rum))) -> rum
  85. # CLOS14 Hémato
  86. rum %<>%
  87. mutate(pole_libelle = ifelse(pole_libelle == "CLOS14 HEMATOLOGIE", "SPECIALITES MEDICALES", pole_libelle),
  88. service_libelle = ifelse(service_libelle == "CLOS14 HEMATO.S.INTENSIFS", "SERVICE HEMATOLOGIE", service_libelle))
  89. # Création des RSSs des 3 dernières années à partir des RUMs
  90. print("6/9 - Création des RSS")
  91. rum %>%
  92. group_by(idrss) %>%
  93. filter(idrum == max(idrum)) %>%
  94. ungroup %>%
  95. mutate(annee_sortie = year(date_sortie),
  96. mois_sortie = month(date_sortie)) %>%
  97. filter(annee_sortie > annee - 3) -> rss
  98. # Sélection uniquement des RUMs appartenant aux RSS
  99. print("7/9 - Sélection des RUMs")
  100. rum %<>%
  101. right_join(rss %>% select(idrss, annee_sortie, mois_sortie))
  102. # Exhaustivité ----
  103. print("8/9 - Exhaustivité")
  104. exhau_pims <- read_csv("exhau_pims.csv")
  105. names(exhau_pims) <- c("Pole", "Service", "RUM", "DP", "Erreur", "Sortie")
  106. exhau_pims %<>%
  107. mutate(Sortie = Sortie %>% as.Date) %>%
  108. filter(month(Sortie) <= mois)
  109. save(Ovalide, OvalideP, annee, mois, rum, rss, gam, exhau, exhau_pims, date, file = "donnees.Rdata")