---
title: "Flux d'import avec pmeasyr"
author: "Guillaume Pressiat"
date: 07/03/2017
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Import flow with pmeasyr}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---

```{r  eval = F}
library(pmeasyr)
library(dplyr, warn.conflicts = F)
```

## 1 - Definir un noyau de parametres


```{r eval = F}
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()`.

```{r eval = F}
# 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 : 

```{r eval = F}

# 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 : 

```{r eval = F}
rsa_2011  rsa_2012  rsa_2013  rsa_2014  rsa_2015
```

```{r eval = F}
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*. 

```{r eval = F}
# 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)))
```


```{r eval = F}
rsa ano_mco ium diap med_mco dmi_mco po leg_mco tra
```

## 4 - Sauvegarde (~ library Rds)

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

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


Le repertoire suivant est cree : 

```{r eval = F}
'~/Documents/data/mco/tables/'
```

```{r eval = F}
nom <- p$finess %+% '.' %+% p$annee %+% '.' %+% p$mois %+% '.' %+% 'out' %+% '.' %+% 'rds'
saveRDS(liste_tables_mco_out, p$path %+% '/tables/' %+% nom)
```

Le fichier rds se nomme : 

```{r eval = F}
750100042.2015.12.out.rds
```

## 5 - Effacer


```{r eval = F}
# 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&thinsp;: `750100042.2015.12.out.Rds` : 

```{r eval = F}
# 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.
