Crate pmsi_rust
Expand description
§pmsi_rust: du PMSi avec Rust
pmsi_rust est une bibliothèque pour le PMSi en Rust basée sur Polars. Elle permet de lire, découper et requêter les fichiers PMSi ainsi que les exporter vers des fichiers de formats plus ouverts.
Une vidéo est aussi disponible sur l’interface utilisateur liée à ce projet PMSI en Rust Lien vidéo
§Table des matières
§Premier exemple
let file_to_read = "~/Documents/data/mco/290000017.2022.12.ano";
use pmsi_rust::core::parse_pmsi;
use pmsi_rust::core::utils::io::write_dataframe_to_somefile;
let ano = parse_pmsi(file_to_read.to_owned(),
"2022",
"ano",
"mco",
None,)
.unwrap();
let out_parquet: String = "~/Documents/tmp/290000017.2022.12.ano.parquet".to_string();
let _export_trace = write_dataframe_to_somefile(ano.clone(), out_parquet);
let out_csv: String = "~/Documents/tmp/290000017.2022.12.ano.csv".to_string();
let _export_trace = write_dataframe_to_somefile(ano.clone(), out_csv);
let out_json: String = "~/Documents/tmp/290000017.2022.12.ano.json".to_string();
let _export_trace = write_dataframe_to_somefile(ano, out_json);
Écriture de ~/Documents/tmp/290000017.2022.12.ano.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.ano.csv
Écriture de ~/Documents/tmp/290000017.2022.12.ano.json
§Lire les RSA
§Partie fixe uniquement
let file_to_read = "~/Documents/data/mco/290000017.2022.12.rsa";
use pmsi_rust::core::parse_pmsi;
let rsa = parse_pmsi(file_to_read.to_owned(),
"2022",
"rsa",
"mco",
None,)
.unwrap();
§Partie fixe et parties variables
let file_to_read = "~/Documents/data/mco/290000017.2022.12.rsa";
use pmsi_rust::core::mco::parse_rsa;
let rsa = parse_rsa(file_to_read.to_owned(),
"2022",
None,)
.unwrap();
§Lire les RUM
§Partie fixe uniquement
let file_to_read = "~/Documents/data/mco/290000017.2022.12.rss.ini.txt";
use pmsi_rust::core::parse_pmsi;
let rum = parse_pmsi(file_to_read.to_owned(),
"2022",
"rss.ini.txt",
"mco",
None,)
.unwrap();
§Partie fixe et parties variables
let file_to_read = "~/Documents/data/mco/290000017.2022.12.rss.ini.txt";
use pmsi_rust::core::mco::parse_rum;
let rum = parse_rum(file_to_read.to_owned(),
"2022",
None,)
.unwrap();
§Lire les autres fichiers
Il y a une seule fonction pour tous les autres fichiers avec seulement une partie fixe.
let file_to_read = "~/Documents/data/mco/290000017.2022.12.dmi.txt";
use pmsi_rust::core::parse_pmsi;
let dmi = parse_pmsi(file_to_read.to_owned(),
"2022",
"dmi.txt",
"mco",
None,)
.unwrap();
Il faut indiquer l’extension, parmi :
- rsa
- ano
- ano.txt
- rss.ini.txt
- med
- med.txt
- porg
- dmip
- dmi.txt
- iium
- rsa_um
- rsa_actes
- rum_actes
- pie
- diap
§Noyau de paramètres PMSI
L’objectif du noyau de paramètres est d’éviter de complexifier le code et les redondances d’appels à des objets toujours identiques en réalité
- le chemin des fichiers PMSI
- le finess
- l’année
- le mois
§Définir un noyau de paramètres
use pmsi_rust::core::noyau_pmsi::Noyau;
let mut noyau_p = Noyau {
finess: "290000017",
annee: 2022,
mois: 12,
path: "~/Documents/data/mco".to_string(),
n_rows: None,
};
println!("{:?}", noyau_p.create_filepath(&"rsa".to_string()));
"~/Documents/data/mco/290000017.2022.12.rsa"
use pmsi_rust::core::noyau_pmsi::Noyau;
let mut noyau_p = Noyau {
finess: "290000017",
annee: 2022,
mois: 12,
path: "~/Documents/data/mco".to_string(),
n_rows: None,
};
noyau_p.annee = 2021;
noyau_p.mois = 11;
println!("{:?}", noyau_p.create_filepath(&"rsa".to_string()));
"~/Documents/data/mco/290000017.2021.11.rsa"
§Lire un fichier PMSi d’un noyau
Exemple
use pmsi_rust::core::noyau_pmsi::Noyau;
let mut noyau_p = Noyau {
finess: "290000017",
annee: 2022,
mois: 12,
path: "~/Documents/data/mco".to_string(),
n_rows: None,
};
let ano = noyau_p
.parse_pmsi("ano", "mco")
.unwrap();
println!("{:?}", ano.collect());
§Lire un fichier RSA d’un noyau
Exemple
use pmsi_rust::core::noyau_pmsi::Noyau;
use pmsi_rust::core::utils::io::hashmap_collect;
let mut noyau_p = Noyau {
finess: "290000017",
annee: 2022,
mois: 12,
path: "~/Documents/data/mco".to_string(),
n_rows: None,
};
let rsa = noyau_p.parse_rsa().unwrap();
println!("{:?}", hashmap_collect(rsa));
§Lire tous les fichiers d’un noyau
L’articulation autour d’un noyau de paramètres permet de traiter tous les fichiers d’une passe.
use pmsi_rust::core::noyau_pmsi::Noyau;
use pmsi_rust::core::pmsi_frames::PmsiFrame;
let noyau_p = Noyau {
finess: "290000017",
annee: 2022,
mois: 12,
path: "~/Documents/data/mco".to_string(),
n_rows: None, //Some(10000),
};
let rsa = noyau_p.parse_rsa();
let rum = noyau_p.parse_rum();
let liste_pmsi = noyau_p.parse_all(
vec![
"ano", "ano.txt", "med", "medatu", "med.txt", "dmip", "dmi.txt", "porg", "pie", "diap",
],
"mco",
);
let all_bis = rsa
.unwrap()
.colligate(rum.unwrap())
.colligate(liste_pmsi.unwrap());
let _export_all = all_bis.write("~/Documents/tmp/290000017.2022.12.****.parquet".to_string());
println!(
"{}",
serde_json::to_string_pretty(&_export_all.unwrap()).unwrap()
);
use pmsi_rust::core::pmsi_frames::PmsiLazyFrame;
let tra = noyau_p.parse_tra("tra", "mco");
let _export_tra = tra
.unwrap()
.write("~/Documents/tmp/290000017.2022.12.tra.parquet".to_string());
println!(
"{}",
serde_json::to_string_pretty(&_export_tra.unwrap()).unwrap()
);
Écriture de ~/Documents/tmp/290000017.2022.12.rum_dmi.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_rum.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_medatu.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_das.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_med.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_dmi.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_actes.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_med.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_ano.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_actes.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_ano.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_diap.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_po.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_das.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rum_dad.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_pie.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_rsa.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.rsa_um.parquet
Écriture de ~/Documents/tmp/290000017.2022.12.tra.parquet
Modules§
- pmsi_rust en ligne de commande
- Cœur de pmsi_rust
- Dévelopements annexes sur les objets PMSi