Le fichier rsfa peut être volumineux car il contient tous les types de rafael (débuts de factures, actes externes, ATU, consultations, …). Or il est rare d’avoir à utiliser tous les types de rafael en même temps dans un seul projet.

Plutôt que de tout importer dans R et donc charger trop de données (c.-à.-d. remplir la mémoire vive inutilement), on peut :

Ce notebook détaille comment le faire en associant pmeasyr à un script Python, chose possible dans un même programme à l’aide des Notebook .Rmd de RStudio.

Dézipage des fichiers rsfa et rsfa-maj

Avec le package pmeasyr on dézippe depuis un script R les fichiers rsfa et rsfa_maj.

########### Script R
########### ########
library(pmeasyr)
adezip(finess  = '750712184',
       annee   = 2015,
       mois    = 12,
       path    = '~/Documents/data/rsf',
       type    = "out",
       liste   = c('rsfa', 'rsfa-maj'))
Dézippage archive
 Type     : out 
 Finess   : 750712184 
 Période  : 2015 M12 
 Fichiers : rsfa rsfa-maj 

Solution uniquement avec pmeasyr

Le paramêtre lister de la fonction ìrafael() permet de lister le type de rafael que l’on souhaite importer dans R

irafael('750712184', '2015', '12', '~/Documents/data/rsf/', progress = F, lister = c('C', 'M')) -> rafael

Solution en passant par python

Vérifier le path dans python

Changer de path dans un Notebook n’est pas conseillé, on vérifie que l’on est bien dans le répertoire où sont les fichiers.

########### Script Python
########### #############
import os
print(os.path.abspath(''))
/Users/guillaumepressiat/Documents/data/rsf

Fonction de split du fichier rsfa par type de rsf (A, B, C, M, …)

La fonction permet de créer un nouveau fichier ne contenant que le type de rsf que l’on souhaite étudier.

########### Script Python
########### #############
import os

# Fonction de split du fichier rsfa
def split_rsfa(filtre, path, finess, annee, mois, type):
  # Gestion des chemins (a adapter pour windows)
  # Fichier rsfa au depart
  filin = '/'.join((path, '.'.join((finess, annee, mois, type))))
  # Fichier rsfa filtre en sortie, on accole au finess le type de rsfa, ex: finess_C
  filout = '/'.join((path, '.'.join((finess + '_' +  filtre, annee, mois, type))))
  
  # Pour chaque ligne du fichier d'entree on teste le type d'enregistrement A, B, C... selon
  # que le fichier soit .rsfa ou .rsfa-maj, donc en colonne 9 ou 27 du fichier texte
  fout = open(filout, 'w')
  for line in open(filin):
    if type == 'rsfa':
      if line[8] == filtre:
        fout.write(line)
    if type == 'rsfa-maj':
      if line[26] == filtre:
        fout.write(line)
  fout.close()


# Execution dans notre cas pour un fichier place ici :
chemin = os.path.abspath('')

# Exemple pour les rsfa C et M sur les deux types de fichiers (rsfa et/ou rsfa-maj)
for i in ['C', 'M']:
  split_rsfa(i, chemin, '750712184','2015', '12', 'rsfa')
  print('Split des rsfa ' + i + ' ok')
  #split_rsfa(i, chemin, '750712184','2015', '12', 'rsfa-maj')
Split des rsfa C ok
Split des rsfa M ok

Les fichiers produits

Vérifier les fichiers tout juste produits.

########### Script R
########### ########
list.files() -> fichiers
cat(fichiers[grepl('\\.rsfa', fichiers)], sep = "\n")
750712184_C.2015.12.rsfa
750712184_C.2015.12.rsfa-maj
750712184_M.2015.12.rsfa
750712184_M.2015.12.rsfa-maj
750712184.2015.12.rsfa
750712184.2015.12.rsfa-maj

Import dans R avec pmeasyr

L’import des rsf type par type est plus leger ensuite dans R :

########### Script R
########### ########
library(pmeasyr)
# Import de la table des actes CCAM en externes uniquement
irafael('750712184_M', '2015', '12', '~/Documents/data/rsf/', progress = F, lister = 'M')$M -> rafael_M

Cette approche évite d’alourdir les fichiers lus par pmeasyr et allège donc les traitements.


27/02/2017
retour

LS0tCnRpdGxlOiAiU3BsaXQgZGVzIFJTRkEgcGFyIHR5cGUgZCdlbnJlZ2lzdHJlbWVudCIKYXV0aG9yOiBHIFByZXNzaWF0CmRhdGU6IDI3LzAyLzIwMTcKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCkxlIGZpY2hpZXIgYHJzZmFgIHBldXQgw6p0cmUgdm9sdW1pbmV1eCBjYXIgaWwgY29udGllbnQgdG91cyBsZXMgdHlwZXMgZGUgcmFmYWVsIChkw6lidXRzIGRlIGZhY3R1cmVzLCBhY3RlcyBleHRlcm5lcywgQVRVLCBjb25zdWx0YXRpb25zLCAuLi4pLiBPciBpbCBlc3QgcmFyZSBkJ2F2b2lyIMOgIHV0aWxpc2VyIHRvdXMgbGVzIHR5cGVzIGRlIHJhZmFlbCBlbiBtw6ptZSB0ZW1wcyBkYW5zIHVuIHNldWwgcHJvamV0LgogIApQbHV0w7R0IHF1ZSBkZSB0b3V0IGltcG9ydGVyIGRhbnMgUiBldCBkb25jIGNoYXJnZXIgdHJvcCBkZSBkb25uw6llcyAoYy4tw6AuLWQuIHJlbXBsaXIgbGEgbcOpbW9pcmUgdml2ZSBpbnV0aWxlbWVudCksIG9uIHBldXQgOgoKLSBzcMOpY2lmaWVyIMOgICpwbWVhc3lyKiBxdWUgbCdvbiBuZSBzb3VoYWl0ZSBwYXMgZ2FyZGVyIHRvdXMgbGVzIHR5cGVzIGRlIHJzZmEgZW4gbcOpbW9pcmUgZGFucyBSCi0gZGl2aXNlciBsZSBmaWNoaWVyIGQnb3JpZ2luZSBgcnNmYWAgZW4gcGx1c2lldXJzIGZpY2hpZXJzIHNlbG9uIGxldXIgdHlwZSBhdmVjIHB5dGhvbgoKQ2Ugbm90ZWJvb2sgZMOpdGFpbGxlIGNvbW1lbnQgbGUgZmFpcmUgZW4gYXNzb2NpYW50ICpwbWVhc3lyKiDDoCB1biBzY3JpcHQgUHl0aG9uLCBjaG9zZSBwb3NzaWJsZSBkYW5zIHVuIG3Dqm1lIHByb2dyYW1tZSDDoCBsJ2FpZGUgZGVzIE5vdGVib29rIC5SbWQgZGUgUlN0dWRpby4KCiMjIyBEw6l6aXBhZ2UgZGVzIGZpY2hpZXJzIHJzZmEgZXQgcnNmYS1tYWogCgpBdmVjIGxlIHBhY2thZ2UgKnBtZWFzeXIqIG9uIGTDqXppcHBlIGRlcHVpcyB1biBzY3JpcHQgUiBsZXMgZmljaGllcnMgYHJzZmFgIGV0IGByc2ZhX21hamAuCgpgYGB7cn0KIyMjIyMjIyMjIyMgU2NyaXB0IFIKIyMjIyMjIyMjIyMgIyMjIyMjIyMKbGlicmFyeShwbWVhc3lyKQoKYWRlemlwKGZpbmVzcyAgPSAnNzUwNzEyMTg0JywKICAgICAgIGFubmVlICAgPSAyMDE1LAogICAgICAgbW9pcyAgICA9IDEyLAogICAgICAgcGF0aCAgICA9ICd+L0RvY3VtZW50cy9kYXRhL3JzZicsCiAgICAgICB0eXBlICAgID0gIm91dCIsCiAgICAgICBsaXN0ZSAgID0gYygncnNmYScsICdyc2ZhLW1haicpKQoKYGBgCgoKIyMjIFNvbHV0aW9uIHVuaXF1ZW1lbnQgYXZlYyAqcG1lYXN5cioKCkxlIHBhcmFtw6p0cmUgYGxpc3RlcmAgZGUgbGEgZm9uY3Rpb24gYMOscmFmYWVsKClgIHBlcm1ldCBkZSBsaXN0ZXIgbGUgdHlwZSBkZSByYWZhZWwgcXVlIGwnb24gc291aGFpdGUgaW1wb3J0ZXIgZGFucyBSCgpgYGB7cn0KaXJhZmFlbCgnNzUwNzEyMTg0JywgJzIwMTUnLCAnMTInLCAnfi9Eb2N1bWVudHMvZGF0YS9yc2YvJywgcHJvZ3Jlc3MgPSBGLCBsaXN0ZXIgPSBjKCdDJywgJ00nKSkgLT4gcmFmYWVsCmBgYAoKCiMjIyBTb2x1dGlvbiBlbiBwYXNzYW50IHBhciBweXRob24KCiMjIyMgVsOpcmlmaWVyIGxlIHBhdGggZGFucyBweXRob24KCkNoYW5nZXIgZGUgcGF0aCBkYW5zIHVuIE5vdGVib29rIG4nZXN0IHBhcyBjb25zZWlsbMOpLCBvbiB2w6lyaWZpZSBxdWUgbCdvbiBlc3QgYmllbiBkYW5zIGxlIHLDqXBlcnRvaXJlIG/DuSBzb250IGxlcyBmaWNoaWVycy4KCmBgYHtweXRob259CiMjIyMjIyMjIyMjIFNjcmlwdCBQeXRob24KIyMjIyMjIyMjIyMgIyMjIyMjIyMjIyMjIwppbXBvcnQgb3MKcHJpbnQob3MucGF0aC5hYnNwYXRoKCcnKSkKYGBgCgojIyMjIEZvbmN0aW9uIGRlIHNwbGl0IGR1IGZpY2hpZXIgcnNmYSBwYXIgdHlwZSBkZSByc2YgKEEsIEIsIEMsIE0sIC4uLikKCkxhIGZvbmN0aW9uIHBlcm1ldCBkZSBjcsOpZXIgdW4gbm91dmVhdSBmaWNoaWVyIG5lIGNvbnRlbmFudCBxdWUgbGUgdHlwZSBkZSByc2YgcXVlIGwnb24gc291aGFpdGUgw6l0dWRpZXIuCgpgYGB7cHl0aG9ufQojIyMjIyMjIyMjIyBTY3JpcHQgUHl0aG9uCiMjIyMjIyMjIyMjICMjIyMjIyMjIyMjIyMKaW1wb3J0IG9zCgojIEZvbmN0aW9uIGRlIHNwbGl0IGR1IGZpY2hpZXIgcnNmYQpkZWYgc3BsaXRfcnNmYShmaWx0cmUsIHBhdGgsIGZpbmVzcywgYW5uZWUsIG1vaXMsIHR5cGUpOgogICMgR2VzdGlvbiBkZXMgY2hlbWlucyAoYSBhZGFwdGVyIHBvdXIgd2luZG93cykKICAjIEZpY2hpZXIgcnNmYSBhdSBkZXBhcnQKICBmaWxpbiA9ICcvJy5qb2luKChwYXRoLCAnLicuam9pbigoZmluZXNzLCBhbm5lZSwgbW9pcywgdHlwZSkpKSkKICAjIEZpY2hpZXIgcnNmYSBmaWx0cmUgZW4gc29ydGllLCBvbiBhY2NvbGUgYXUgZmluZXNzIGxlIHR5cGUgZGUgcnNmYSwgZXg6IGZpbmVzc19DCiAgZmlsb3V0ID0gJy8nLmpvaW4oKHBhdGgsICcuJy5qb2luKChmaW5lc3MgKyAnXycgKyAgZmlsdHJlLCBhbm5lZSwgbW9pcywgdHlwZSkpKSkKICAKICAjIFBvdXIgY2hhcXVlIGxpZ25lIGR1IGZpY2hpZXIgZCdlbnRyZWUgb24gdGVzdGUgbGUgdHlwZSBkJ2VucmVnaXN0cmVtZW50IEEsIEIsIEMuLi4gc2Vsb24KICAjIHF1ZSBsZSBmaWNoaWVyIHNvaXQgLnJzZmEgb3UgLnJzZmEtbWFqLCBkb25jIGVuIGNvbG9ubmUgOSBvdSAyNyBkdSBmaWNoaWVyIHRleHRlCiAgZm91dCA9IG9wZW4oZmlsb3V0LCAndycpCiAgZm9yIGxpbmUgaW4gb3BlbihmaWxpbik6CiAgICBpZiB0eXBlID09ICdyc2ZhJzoKICAgICAgaWYgbGluZVs4XSA9PSBmaWx0cmU6CiAgICAgICAgZm91dC53cml0ZShsaW5lKQogICAgaWYgdHlwZSA9PSAncnNmYS1tYWonOgogICAgICBpZiBsaW5lWzI2XSA9PSBmaWx0cmU6CiAgICAgICAgZm91dC53cml0ZShsaW5lKQogIGZvdXQuY2xvc2UoKQoKCiMgRXhlY3V0aW9uIGRhbnMgbm90cmUgY2FzIHBvdXIgdW4gZmljaGllciBwbGFjZSBpY2kgOgpjaGVtaW4gPSBvcy5wYXRoLmFic3BhdGgoJycpCgojIEV4ZW1wbGUgcG91ciBsZXMgcnNmYSBDIGV0IE0gc3VyIGxlcyBkZXV4IHR5cGVzIGRlIGZpY2hpZXJzIChyc2ZhIGV0L291IHJzZmEtbWFqKQpmb3IgaSBpbiBbJ0MnLCAnTSddOgogIHNwbGl0X3JzZmEoaSwgY2hlbWluLCAnNzUwNzEyMTg0JywnMjAxNScsICcxMicsICdyc2ZhJykKICBwcmludCgnU3BsaXQgZGVzIHJzZmEgJyArIGkgKyAnIG9rJykKICAjc3BsaXRfcnNmYShpLCBjaGVtaW4sICc3NTA3MTIxODQnLCcyMDE1JywgJzEyJywgJ3JzZmEtbWFqJykKYGBgCgojIyMjIExlcyBmaWNoaWVycyBwcm9kdWl0cwoKVsOpcmlmaWVyIGxlcyBmaWNoaWVycyB0b3V0IGp1c3RlIHByb2R1aXRzLgoKYGBge3J9CiMjIyMjIyMjIyMjIFNjcmlwdCBSCiMjIyMjIyMjIyMjICMjIyMjIyMjCmxpc3QuZmlsZXMoKSAtPiBmaWNoaWVycwpjYXQoZmljaGllcnNbZ3JlcGwoJ1xcLnJzZmEnLCBmaWNoaWVycyldLCBzZXAgPSAiXG4iKQpgYGAKCiMjIyMgSW1wb3J0IGRhbnMgUiBhdmVjICpwbWVhc3lyKgoKTCdpbXBvcnQgZGVzIHJzZiB0eXBlIHBhciB0eXBlIGVzdCBwbHVzIGxlZ2VyIGVuc3VpdGUgZGFucyBSIDoKCmBgYHtyfQojIyMjIyMjIyMjIyBTY3JpcHQgUgojIyMjIyMjIyMjIyAjIyMjIyMjIwpsaWJyYXJ5KHBtZWFzeXIpCiMgSW1wb3J0IGRlIGxhIHRhYmxlIGRlcyBhY3RlcyBDQ0FNIGVuIGV4dGVybmVzIHVuaXF1ZW1lbnQKaXJhZmFlbCgnNzUwNzEyMTg0X00nLCAnMjAxNScsICcxMicsICd+L0RvY3VtZW50cy9kYXRhL3JzZi8nLCBwcm9ncmVzcyA9IEYsIGxpc3RlciA9ICdNJykkTSAtPiByYWZhZWxfTQpgYGAKCkNldHRlIGFwcHJvY2hlIMOpdml0ZSBkJ2Fsb3VyZGlyIGxlcyBmaWNoaWVycyBsdXMgcGFyICpwbWVhc3lyKiBldCBhbGzDqGdlIGRvbmMgbGVzIHRyYWl0ZW1lbnRzLgoKLS0tLS0tCjI3LzAyLzIwMTcgIApbcmV0b3VyXShodHRwOi8vZ3VpbGxhdW1lcHJlc3NpYXQuZ2l0aHViLmlvL2Jsb2cvKQoK