|
|
@@ -1,136 +0,0 @@ |
|
|
|
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", "Duree", "RSS") |
|
|
|
|
|
|
|
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 %>% distinct(RSS, .keep_all = T) %>% nrow, nb_rss_manq = exhau_pims %>% filter(is.na(DP)) %>% distinct(RSS) %>% nrow), row.names = F, append = T) |
|
|
|
|
|
|
|
an <- annee |
|
|
|
|
|
|
|
src_mysql("pmsi_dim", "localhost", user = user, password = password) %>% |
|
|
|
tbl("exhaustivite") %>% |
|
|
|
collect(n = Inf) %>% |
|
|
|
filter(annee == an) %>% |
|
|
|
full_join(data.frame(mois = 1:12), by = "mois") %>% |
|
|
|
select(annee, 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") |