|
- source("functionsOvalide.R")
- library(lubridate)
- library(RMySQL)
-
- # Récupération des arguments pour utilisation non interactive ----
- arguments <- commandArgs()
- if (length(arguments) != 13)
- {
- print ("Usage : donnees.sh CHUuser CHUpass ATIHuser ATIHpass LivenneUser LivennePass annee mois")
- quit()
- } else
- {
- CHUuser <- arguments[6]
- CHUpass <- arguments[7]
- ATIHuser <- arguments[8]
- ATIHpass <- arguments[9]
- user <- arguments[10]
- password <- arguments[11]
- annee <- as.numeric(arguments[12])
- mois <- as.numeric(arguments[13])
- }
-
- # Récupération des fichiers ePMSI
- print("1/9 - Connexion à ePMSI")
- connectOvalide(CHUuser, CHUpass, ATIHuser, ATIHpass)
- print(str_c("2/9 - Téléchargement du tableau de", mois, annee, sep = " "))
- getOvalide(CHUuser, CHUpass, annee, mois)
- print(str_c("3/9 - Téléchargement du tableau de", mois, annee - 1, sep = " "))
- getOvalide(CHUuser, CHUpass, annee - 1, mois)
-
- # Extraction des données des fichiers ePMSI
- print("4/9 - Extraction des tableaux ePMSI")
- read.csv2("listOvalide.csv") %>%
- {
- apply(., 1, . %>%
- {
- df <- extractOvalide(annee, mois, .[2], .[3])
- names(df) <- LETTERS[1:length(df)]
- df
- }) ->> Ovalide
- names(Ovalide) <<- .$name
-
- apply(., 1, . %>%
- {
- df <- extractOvalide(annee - 1, mois, .[2], .[3])
- names(df) <- LETTERS[1:length(df)]
- df
- }) ->> OvalideP
- names(OvalideP) <<- .$name
- }
-
- # Récupération des données ePMSI de 2015 fusionnées CCEG-CHU
- if (annee == 2016)
- {
- load("Ovalide.Rdata")
- OvalideP <- CCEGCHU2015[[str_c("mois", mois, sep = "")]]
- rm("CCEGCHU2015")
- }
-
- # Nettoyage des fichiers extraits. Les archives sont conservées.
- unlink(str_c("OVALIDE T2A.MCO.DGF", annee, mois, "html", sep = "."))
- unlink(str_c("OVALIDE T2A.MCO.DGF", annee - 1, mois, "html", sep = "."))
-
- # RUM + structure + calcul durée de séjour
- print("5/9 - LIVENNE : RUM et structure")
- src_mysql("pmsi_dim", "localhost", user = user, password = password) %>%
- tbl(sql("SELECT finess, idhosp, idrss, idrum, date_entree, date_sortie, cmd, um FROM fix116
- UNION
- SELECT finess, idhosp, idrss, idrum, date_entree, date_sortie, cmd, um FROM fix117")) %>%
- collect(n = Inf) %>%
- mutate(date_entree = date_entree %>% as.Date,
- date_sortie = date_sortie %>% as.Date) %>%
- left_join(src_mysql("pmsi_dim_nom", "localhost", user = user, password = password) %>%
- tbl("structure") %>%
- filter(um != "") %>%
- select(uf_date_ferm, um, service_libelle, pole_libelle) %>%
- arrange(um, uf_date_ferm) %>%
- distinct %>%
- collect(n = Inf) %>%
- add_rownames(var = "dummy") %>% # Dédoublonnage : 1 um -> 1 couple libellés
- group_by(um) %>%
- filter(dummy == last(dummy)) %>%
- select(-dummy, -uf_date_ferm) %>%
- ungroup) %>%
- mutate(idrss = ifelse(finess == "540000031", str_c("m", idrss), idrss)) %>% # maternité
- mutate(idrss = ifelse(finess == "540020112", str_c("c", idrss), idrss)) %>% # CCEG
- mutate(idhosp = idhosp %>% str_replace_all(" ", "")) %>%
- mutate(duree_rum = date_sortie - date_entree) %>% # durée rum
- left_join(group_by(., idrss) %>%
- summarise(duree_rss = sum(duree_rum))) -> rum
-
- # CLOS14 Hémato
- rum %<>%
- mutate(pole_libelle = ifelse(pole_libelle == "CLOS14 HEMATOLOGIE", "SPECIALITES MEDICALES", pole_libelle),
- service_libelle = ifelse(service_libelle == "CLOS14 HEMATO.S.INTENSIFS", "SERVICE HEMATOLOGIE", service_libelle))
-
- # Création des RSSs des 3 dernières années à partir des RUMs
- print("6/9 - Création des RSS")
- rum %>%
- group_by(idrss) %>%
- filter(idrum == max(idrum)) %>%
- ungroup %>%
- mutate(annee_sortie = year(date_sortie),
- mois_sortie = month(date_sortie)) %>%
- filter(annee_sortie > annee - 3) -> rss
-
- # Sélection uniquement des RUMs appartenant aux RSS
- print("7/9 - Sélection des RUMs")
- rum %<>%
- right_join(rss %>% select(idrss, annee_sortie, mois_sortie))
-
- # Exhaustivité ----
- print("8/9 - Exhaustivité")
- exhau_pims <- read_csv("exhau_pims.csv")
- names(exhau_pims) <- c("Pole", "Service", "RUM", "DP", "Erreur", "Sortie")
-
- exhau_pims %<>%
- mutate(Sortie = Sortie %>% as.Date) %>%
- filter(month(Sortie) <= mois)
-
- dbConnect(MySQL(), host = "localhost", dbname = "pmsi_dim", user = user, password = password) %>%
- dbWriteTable("exhaustivite", data.frame(annee = annee, mois = mois, nb_rss_tot = exhau_pims %>% nrow, nb_rss_manq = exhau_pims %>% filter(is.na(DP)) %>% nrow), row.names = F, append = T)
-
- src_mysql("pmsi_dim", "localhost", user = user, password = password) %>%
- tbl("exhaustivite") %>%
- filter(annee == annee) %>%
- collect %>%
- full_join(data.frame(mois = 1:12), by = "mois") %>%
- select(mois, rss = nb_rss_tot, manq = nb_rss_manq) -> exhau
-
- # Écriture des données ----
- print("9/9 - Écriture des données")
-
- save(Ovalide, OvalideP, annee, mois, rum, rss, exhau, exhau_pims, file = "donnees.Rdata")
|