Skip to content

Releases: GuillaumePressiat/pmsi-io

pmsi-io v0.4.1

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 01 Jul 11:35

[0.4.1] — 2026-07-01

Nouvelle fonctionnalité — Explorateur de données

Ajout d'un onglet Explorer permettant d'analyser visuellement les résultats de requêtes RSA sans export disque.

Accès

  • Bouton « Explorer ↗ » dans l'onglet Requêtes, à côté de « Filtrer & exporter »
  • Fonctionne sur les requêtes pré-établies et les requêtes personnalisées
  • L'onglet Explorer n'apparaît qu'après un premier clic sur « Explorer ↗ »
  • Croix de fermeture (badge rond) pour masquer l'onglet et remettre l'état à zéro

Pivot table

  • Sélection des axes lignes / colonnes parmi toutes les colonnes du DataFrame filtré
  • Agrégations disponibles : effectif (count), somme, moyenne, minimum, maximum
  • Champ valeur limité aux colonnes numériques (i32, f64…) pour les agrégations non-count
  • Tri des étiquettes : alphabétique (A→Z) ou par effectif décroissant (↓)
  • Affichage limité aux 30 lignes × 20 colonnes les plus représentatives
  • Valeurs par défaut : moissor en lignes, rsatype en colonnes

Graphiques (ECharts)

  • 6 types de graphiques : barres, courbes, camembert, heatmap, river et pyramide des âges
  • Graphique affiché en premier, tableau croisé masqué par défaut (activable via checkbox)
  • Import ECharts en mode custom build (composants sélectifs) pour réduire la taille du bundle

Architecture

  • Calcul pivot entièrement côté Rust/Polars (group_by + agrégation sur le LazyFrame filtré)
  • Deux nouvelles commandes Tauri : query_schema et pivot_to_json pour les requêtes embarquées, custom_query_schema et custom_pivot_to_json pour les requêtes personnalisées
  • query_schema : récupère le schéma (colonnes, types, nb lignes) sans sérialiser les données
  • pivot_to_json : renvoie une liste plate de cellules {row_key, col_key, value} (~quelques centaines de lignes max, quelle que soit la taille du RSA filtré)
  • Aucune écriture sur disque — exploration en mémoire uniquement

Autres ajouts

  • Tutoriel : pastilles numérotées ① à ⑥ guidant les nouveaux utilisateurs pas à pas, désactivables via « J'ai compris », réactivables depuis l'onglet Aide
  • Switcher de thème : bascule clair / sombre (ThemeToggle.svelte), persisté via localStorage
  • Progress bars : indicateurs de progression inline sous les champs répertoire pendant la décompression et le traitement des requêtes (remplace le spinner pour l'onglet conversion)
  • Onglet Aide : section Explorer ajoutée à la documentation utilisateur

pmsi-io v0.4.0

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 22 Jun 10:47
b163f3a

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é dans pmsi_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 FichierIntrouvable au 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), syntaxe onclick au lieu de on:click, suppression des $: réactifs
  • Refactoring composants : +page.svelte réduit à l'orchestration ; logique extraite dans ConversionTab.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, outExtension partagés entre les 3 onglets via store.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-wrap sur 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), Autre
  • PmsiResult<T> : toutes les fonctions publiques migrées ; suppression des Result<T, PolarsError>, Result<T, String>, Result<T, Box<dyn Error>>
  • Zéro .unwrap() dans le code de production
  • pmsi_read_lines : retourne Err(FichierIntrouvable) si le fichier est absent (au lieu d'un DataFrame vide silencieux)
  • DataFrame vide : write_dataframe_to_somefile ne tente pas d'écrire si 0 lignes, retour silencieux sans erreur
  • Tests : 3 tests d'erreurs dans test_errors.rs indépendants des fichiers locaux ; 37 tests au total
  • CLI : pmsi_rust_cli() retourne PmsiResult<()>, messages d'erreur propres via eprintln!

Tauri bridge

  • Erreurs Rust → UI : commandes Tauri retournent de vrais Err(String) ; suppression de la logique Ok(Attention: ...) et de colorize_errors
  • Dépendance regex supprimée de src-tauri/Cargo.toml
  • query_rsa() : propagation correcte de PmsiResult via .map_err(|e| e.to_string())?

Infrastructure

  • Tauri v2 : migration depuis Tauri v1
  • Vite : bumpé à ^5.4.3 (corrige CVE server.fs.deny)
  • CSS partagé : classes communes (pmsi-select, pmsi-toggle, etc.) extraites dans app.postcss
  • Version : 0.4.0 dans tauri.conf.json, package.json, src-tauri/Cargo.toml, Logo.svelte

pmsi-io v0.2.2

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 04 Mar 14:15
4379d73

Changements

  • polars update 0.53.0 (pmsi-clio, pmsi-io)
  • Intégration des formats pour la lecture du PMSI MCO 2026 (pmsi-clio, pmsi-io)
  • npm audit vulnerabilities (pmsi-io)

pmsi-io v0.2.1

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 23 Nov 11:20

Modifications mineures dans cette version, uniquement pmsi-io, pas de changement pour pmsi-clio (voir alors 0.2.0).

Interface utilisateur

Nouveautés

  • Icône : meilleure icône pour un affichage optimal sur mac notamment.
logo-v3_for_base64 1-modified   logo-v4_for_base64 1-min-modified-min   from-composer-iOS-Default-1024x1024@1x

Corrections

  • mineure : doublon du mois M08 dans le select input du mois

pmsi-io v0.2.0

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 14 Oct 15:33

Nouveautés

Arrière plan

  • prêt pour Druides : Lecture des fichiers générés par druides de manière transparente (mois sur 2 caractères, etc.)
  • pmsi_rust est en v0.2.0, gestion d'options de manière dynamique via NoyauOptions et détection automatique du type de fichier (genrsa vs druides)

Interface utilisateur

  • une fois un découpage effectué, tous les paramètres de l'UI sont sauvegardés dans un répertoire propre à l'application pmsi-io (windows : AppData\com.pmsi-io.dev, Mac Library/Application Support/com.pmsi-io.dev, etc.)
  • au redémarrage, les paramètres sont tous rechargés de manière identique à la précédente session
  • transparence : l'opacité de la fenêtre passe de 96% à 94% (sur systèmes unix uniquement)

pmsi-io v0.1.10

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 28 Sep 13:58
6207fb9

Nouveautés

  • majeure : montée de version (à jour) pola.rs 0.51
  • mineure : intégration des formats pour transmission à partir de 2025 M03

Changements

  • gestion de la tâche de découpage du bouton "Go" sous-traitée avec tokio::spawn_blocking pour rendre indépendant le process tokio de Tauri du traitement des données avec pola-rs. Partage des paramètres (année, mois, finess) entre les thread avec Arc/Mutex pour gérer le borrowing / references.
  • ce changement a été rendu obligatoire par l'évolution interne de pola-rs et ses effets de bords (modifications de la gestion des thread tokio avec async, sans doute pour leur engine de streaming)

pmsi::io v0.1.8

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 01 Apr 21:20

Nouveautés

  • gestion effective de 2025 (début d'année, avant m03)
  • affichage de la version au survol du logo
  • montée de version (à jour) pola.rs 0.46
  • version cli intégrée dans cette release (pmsi-clio), pour utiliser l'outil en ligne de commande dans le terminal (pmsi-clio -h)

Améliorations

  • gestion simplifiée du découpage partie variable
  • meilleure performance en temps de lecture (surtout rsa et rum, sur macOS)

pmsi-io v0.1.8

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 22 Feb 22:56

Nouveautés

  • gestion de 2025 (début d'année, avant m03)
  • affichage de la version au survol du logo
  • montée de version (à jour) pola.rs 0.46
  • version cli intégrée dans cette release (pmsi-clio), pour utiliser l'outil en ligne de commande dans le terminal (pmsi-clio -h)

Améliorations

  • gestion simplifiée du découpage partie variable
  • meilleure performance en temps de lecture (surtout rsa et rum, sur macOS)

v0.1.7

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 05 Sep 22:33

Prise en charge des entiers formatés avec des espaces (et non pas des leading zeros)

v0.1.5

Choose a tag to compare

@GuillaumePressiat GuillaumePressiat released this 03 Apr 10:22
06b611b
Initial commit