pmsi-io v0.4.0
Changelog pmsi::io
[0.4.0] : 2026-06-22
Résumé
pmsi::io 0.4.0 représente une extension significative de l'application et une refonte sur deux axes principaux.
Côté fonctionnalités, deux nouveaux onglets viennent enrichir l'interface :
- Requêtes : sélection et exécution de requêtes PMSI pré-établies par thématique, avec aperçu hover et lien vers le Lab'
- Requête Lab' : constructeur de requêtes personnalisées (GHM, diagnostics, actes, âge, poids, durée), sauvegarde, édition, export JSON, partage entre utilisateurs
- ces onglets requêtes utilisent les développements de requêtage déjà embarqués dans pmsi_rust depuis la version 0.2
- Notifications toast : système de notifications succès / erreur / info dans les trois onglets
- Onglet Aide : documentation utilisateur intégrée
Côté robustesse :
PmsiError: type d'erreur unifié danspmsi_rust, remplace les multiples types disparates (PolarsError,String,Box<dyn Error>) ; les erreurs remontent proprement jusqu'au frontend sans être silencieuses- Fichier absent : produit désormais une vraie erreur
FichierIntrouvableau lieu d'un DataFrame vide silencieux - Requête sans résultat : retour silencieux sans erreur, pas de fichier écrit
- Zéro
.unwrap()dans le code de production Rust - 37 tests dont 3 nouveaux tests d'erreurs indépendants des fichiers locaux
- le passage en Tauri v2 permettra une maintenance plus facile à l'avenir
Frontend (Svelte 5)
- Migration Svelte 5 : runes (
$state,$derived,$bindable), syntaxeonclickau lieu deon:click, suppression des$:réactifs - Refactoring composants :
+page.svelteréduit à l'orchestration ; logique extraite dansConversionTab.svelte,QueryTab.svelte,CustomQueryTab.svelte - Onglet Requêtes : sélection par chips avec ellipsis, groupes thématiques, requêtes pré-établies et personnalisées, preview hover, lien ↗ vers Requête Lab'
- Onglet Requête Lab' : constructeur de requêtes JSON (GHM, CIM, CCAM, âge, poids, durée), sauvegarde/édition/suppression, export JSON, copie presse-papier
- Stores partagés :
addTra,outExtensionpartagés entre les 3 onglets viastore.ts - Notifications toast : système
Toaster.svelte(succès/erreur/info), auto-dismiss 5s, coin inférieur droit - Messages requêtes : toast succès indique le nombre de requêtes exécutées dont non vides
- Onglet Aide : documentation utilisateur (hygiène numérique, conversion I/O, requêtes, Requête Lab')
- Header responsive :
flex-wrapsur fenêtre réduite - Lien mailto : fonctionnel via
tauri-plugin-shell
Backend Rust (pmsi_rust 0.4.0)
PmsiError: type d'erreur unifié (thiserror) :FichierIntrouvable,ExtensionInconnue,AnneeInvalide,ParsingPmsi,Requete,FormatInconnu,XlsxTropGrand,Polars/Io/Json(conversions automatiques),AutrePmsiResult<T>: toutes les fonctions publiques migrées ; suppression desResult<T, PolarsError>,Result<T, String>,Result<T, Box<dyn Error>>- Zéro
.unwrap()dans le code de production pmsi_read_lines: retourneErr(FichierIntrouvable)si le fichier est absent (au lieu d'un DataFrame vide silencieux)- DataFrame vide :
write_dataframe_to_somefilene tente pas d'écrire si 0 lignes, retour silencieux sans erreur - Tests : 3 tests d'erreurs dans
test_errors.rsindépendants des fichiers locaux ; 37 tests au total - CLI :
pmsi_rust_cli()retournePmsiResult<()>, messages d'erreur propres viaeprintln!
Tauri bridge
- Erreurs Rust → UI : commandes Tauri retournent de vrais
Err(String); suppression de la logiqueOk(Attention: ...)et decolorize_errors - Dépendance
regexsupprimée desrc-tauri/Cargo.toml query_rsa(): propagation correcte dePmsiResultvia.map_err(|e| e.to_string())?
Infrastructure
- Tauri v2 : migration depuis Tauri v1
- Vite : bumpé à
^5.4.3(corrige CVEserver.fs.deny) - CSS partagé : classes communes (
pmsi-select,pmsi-toggle, etc.) extraites dansapp.postcss - Version :
0.4.0danstauri.conf.json,package.json,src-tauri/Cargo.toml,Logo.svelte