library(pmeasyr)
library(dplyr, warn.conflicts = F)

1 - Definir un noyau de parametres

p <- noyau_pmeasyr(
        finess   = '750100042',
        annee    = 2015,
        mois     = 12,
        path     = '~/Documents/data/mco',
        progress = F)

On precise avec progress = F le fait que l’on ne veut pas de barre de progression lors de la lecture des fichiers.

En partant de ces parametres a gauche et en ecrivant les appels de fonctions a droite, avec %>% et les fonctions de pmeasyr, on rend le script plus lisible, et on profite du côte “humain” de la programmation %>%.

2 - Dezipper

Par defaut la fonction adezip() dezippe la totalite des fichiers de l’archive PMSI, on pourra egalement effacer tous les fichiers avec adelete().

# Tout dezipper
# out
p %>% adezip(type = "out")
# in
p %>% adezip(type = "in")

3 - Importer

Syntaxe explicite

On importe toutes les tables du MCO, la syntaxe est plus concise et va de gauche à droite :

# out
p %>% irsa()     -> rsa
p %>% iano_mco() -> ano_out
p %>% iium()     -> ium
p %>% idiap()    -> diap_out
p %>% imed_mco() -> med_out
p %>% idmi_mco() -> dmi_out
p %>% ipo()      -> po_out
p %>% ileg_mco() -> leg
p %>% itra()     -> tra

# rsa type 6 : 
p %>% irsa(typi = 6) -> rsa
# rsa d'une autre annee :
p %>% irsa(annee = 2016) -> rsa
# rsa d'une autre annee, lire les dix premiers rsa :
p %>% irsa(annee = 2016, n_max = 10) -> rsa

# in
p %>% irum()                    -> rum
p %>% iano_mco(typano  = "in")  -> ano_in
p %>% imed_mco(typmed  = "in")  -> med_in
p %>% idmi_mco(typdmi  = "in")  -> dmi_in
p %>% idiap(typdiap = "in")     -> diap_in
p %>% ipo(typpo   = "in")       -> po_in

Importer plusieurs annees avec une boucle

On dezippe et on importe les rsa de 2011 a 2015. Les rsa seront dans l’environnement R avec comme nom :

rsa_2011  rsa_2012  rsa_2013  rsa_2014  rsa_2015
p <- noyau_pmeasyr(
  finess = '750100042',
  mois   = 12,
  path = "~/Documents/data/mco",
  progress = F
)

for (i in 2011:2015){
  p %>% adezip(annee = i, type = "out", liste = "rsa")
  p %>% irsa(annee = i) -> temp
  assign(paste("rsa", i, sep = "_"), temp)
}

On peut aussi envisager un import mois par mois si besoin, ou boucler sur une liste de finess (entites geographiques).

Appel de fonctions

Pour l’exemple, on utilise ci-dessous sapply() a la liste des fonctions MCO out, en appelant toutes les fonctions, on cree ainsi un objet contenant toutes les tables du MCO out.

# On liste les fonctions MCO du package :
fout <- c('irsa', 'iano_mco', 'iium', 'idiap', 'imed_mco', 'idmi_mco', 'ipo', 'ileg_mco', 'itra')

sapply(fout, function(x)get(x)(p)) -> liste_tables_mco_out
names(liste_tables_mco_out)
# enlever les i des noms des tables
names(liste_tables_mco_out) <- substr(names(liste_tables_mco_out),2, nchar(names(liste_tables_mco_out)))
rsa ano_mco ium diap med_mco dmi_mco po leg_mco tra

4 - Sauvegarde (~ library Rds)

# Coller des chaines de caracteres facon pipe
`%+%` <- function(x,y){paste0(x,y)}

dir.create(p$path %+% '/tables')

Le repertoire suivant est cree :

'~/Documents/data/mco/tables/'
nom <- p$finess %+% '.' %+% p$annee %+% '.' %+% p$mois %+% '.' %+% 'out' %+% '.' %+% 'rds'
saveRDS(liste_tables_mco_out, p$path %+% '/tables/' %+% nom)

Le fichier rds se nomme :

750100042.2015.12.out.rds

5 - Effacer

# Tout effacer sauf les zip : 
p %>%  adelete()

6 - Relire les tables sauvegardees en rds

Avec le noyau de parametres p defini tout en haut de cette page, on a les elements necessaires pour reconstruire le nom du fichier : 750100042.2015.12.out.Rds :

# Coller des chaines de caracteres faon pipe
`%+%` <- function(x,y){paste0(x,y)}

# Le fichier se nomme : 750100042.2015.12.out.Rds
nom <- p$finess %+% '.' %+% p$annee %+% '.' %+% p$mois %+% '.' %+% 'out' %+% '.' %+% 'Rds'
readRDS(p$path %+% '/tables/' %+% nom) -> mydata

View(mydata$rsa$rsa)
View(mydata$rsa$actes)

View(mydata$leg_mco)

Les donnees sont de nouveau dans l’environnement R.