Documentation gpmsi 2.1

Raccourcis

javadoc de gpmsi - groovydoc de gpmsi - javadoc de pmsixml

Introduction

Les différents traitements utilisés dans le PMSI utilisent fréquemment des fichiers contenant des lignes de longueur fixe, avec les informations toujours au même endroit dans chaque ligne.
La construction des programmes manipulant ces informations est très répétitive et fastidieuse.

Les fichiers XML bien que plus complexes et moins compact ont l'avantage de la disponibilité de nombreux outils pour leur traitement automatisé.

Depuis toujours au sein des DIM, nous avions d'importants problèmes de cohérence de fichiers, de bugs des outils, ou d'outils en retard sur les mises à jour et le besoin de faire des scripts pouvant analyser, comparer des fichiers de RSS, RSA, FICHCOMP, etc. était très important.

Le besoin initial était de convertir les fichiers en un format XML, qui pouvait être plus facilement lu et transformé, d'où le nom initial du programme : pmsixml.
Au fur et à mesure de la construction des scripts, des éléments communs ont émergés et je les ai rajouté et rassemblé le tout dans une librairie.
En fait l'utilisation répétée de scripts en langage Groovy a montré qu'il y avait deux besoins :

Au total la librairie pmsixml a été cantonnée aux fichiers PMSI avec champs à position fixe (RSS, RHS, VIDHOSP, etc.),
et le reste des fonctionnalités a été mis dans une nouvelle librairie que j'ai appelé gpmsi (pour Groovy PMSI),
car elle tire tout son intérêt de l'utilisation du langage Groovy pour rendre plus clairs les traitements des données PMSI (voire le traitement d'autres types de données également).

Certains scripts sont prêts à l'emploi, et il n'y a pas besoin de connaître ni Java, ni Groovy pour les utiliser. On peut citer par exemple :

Installation

Prérequis:

Installation proprement dite :

Créer un répertoire (de préférence C:\app\gpmsi\v2.1 pour ne pas avoir à modifier les scripts d'exemple), et extraire le contenu du fichier gpmsi-2.1.2-dist.zip dans ce répertoire.

Ouvrir une fenêtre d'explorateur de fichiers et aller dans le répertoire : C:\app\gpmsi\v2.1\scripts\bat\tutoriel

Double-cliquer sur bonjour.bat.
Si gpmsi est bien installé, une fenêtre devrait s'ouvrir et l'affichage devrait ressembler à ceci :

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>rem Le script le plus simple possible, il appelle juste bonjour.groovy

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>setlocal EnableExtensions

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>if not defined GPMSI_HOME set GPMSI_HOME=C:\app\gpmsi\v2.1

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>set APP=C:\app\gpmsi\v2.1\gpmsi.bat

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>set SCRIPT=C:\app\gpmsi\v2.1\scripts\groovy\bonjour.groovy

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>call C:\app\gpmsi\v2.1\gpmsi.bat -script C:\app\gpmsi\v2.1\scripts\groovy\bonjour.groovy

Un petit bonjour à tous ? depuis le script bonjour.groovy, dans l'environnement GPMSI / Groovy.

C:\app\gpmsi\v2.1\scripts\bat\tutoriel>pause
Appuyez sur une touche pour continuer...
(N.B. Le texte qui s'affiche est au départ :
Un petit bonjour à tous ☺ depuis le script bonjour.groovy, dans l'environnement GPMSI / Groovy.

Mais à l'intérieur du terminal windows le caractère de smiley n'est pas supporté et est remplacé par "?", cela fait partie du tutoriel pour montrer qu'il faut bien choisir les caractères qu'on affiche via les scripts)

Maintenant qu'il est confirmé que les scripts gpmsi s'exécutent correctement, aller dans le dossier des fichiers de référence :

C:\app\gpmsi\v2.1\fichiers-ref
et double-cliquer sur le fichier batch installer-fichiers-ref.bat pour installer les fichiers CIM 10 et CCAM utilisés par les scripts.

Lancement du menu

Il existe un script qui affiche un menu, qui permet d'ouvrir les principaux scripts livrés avec gpmsi.
Pour afficher ce menu, ouvrir une fenêtre d'explorateur de fichiers, et aller dans le répertoire :
C:\app\gpmsi\v2.1, puis double-cliquez sur menu.bat , une fenêtre similaire à :

resultat de menu.bat

devrait s'ouvrir.

Utilisation des scripts

Par fenêtre

Certains scripts affichent une fenêtre qui permet d'entrer les informations avant d'exécuter une action.
Dans le menu, ce sont les entrées qui sont précédées d'un petit éclair icône en forme d'éclair

Exemple pour "RSS vers .csv" :

fenêtre d'exécution pour conversion RSS vers .csv

Ici la fenêtre permet de choisir les fichiers, puis de poursuivre la conversion ou bien d'annuler. Peu de scripts font cela car il faut du développement supplémentaire, mais c'est possible.

Par glisser-déposer

La plupart des scripts qui prennent en entrée un ou deux fichiers peuvent fonctionner par "glisser-déposer".
Par exemple dans le menu, si on clique dans la colonne RSS sur "glisser-déposer", une fenêtre explorateur s'ouvre,
et on voit des fichiers de scripts dont le nom contient "dnd" :
cela correspond à "drag and drop", soit "glisser-déposer" en anglais.

fenêtre avec scripts de glisser-déposer

Ici il suffit depuis une autre fenêtre de faire glisser un fichier RSS vers le fichier rss-vers-csv-dnd.bat
puis de lâcher le bouton de la souris lorsque le fichier RSS est au dessus du fichier "bat",
cela déclenchera le script qui va traiter le fichier RSS et le transformer en fichier .csv .

Voici ce qu'il y a en scripts glisser-déposer dans la distribution

ANOHOSP

csv

FICHCOMP

DMI
MED

HL7

IUM

RHS

RPU

RSA

RSFACE

RSS

migration

texte

VIDHOSP

Par appel du script en ligne de commande

Un certain nombre de scripts sont concus pour être appelés par la ligne de commande; soit en tapant l'appel du script directement en ligne de commande, ce qui est fastidieux, soit en faisant un copier-coller d'un fichier batch existant, puis en adaptant ce fichier batch pour constituer la commande que l'on veut appeler.

Prenons l'exemple d'un fichier RSS dont nous ne souhaitons garder qu'une partie, en fonction d'une liste des numéros de dossier à garder.

Si l'on ouvre le répertoire C:\app\gpmsi\v2.1\scripts\a-copier-coller on va retrouver beaucoup de répertoires qui contiennent des fichiers batchs prêts à être copié-collés. Celui qui nous intéresse est dans le répertoire RSS et s'appelle : selectionner-rss-sur-liste-ndas.bat.

Prenons comme exemple un fichier de RSS situé dans le chemin suivant : C:\Local\epmsi\mco\2024\M12\RSS+VH\RSSG_250228.txt, accompagné d'un second fichier nadls.csv dont la première ligne (ligne des noms de colonne) est juste NADL, les lignes suivantes contenant les numéros de dossier que nous voulons garder.

Copier le fichier selectionner-rss-sur-liste-ndas.bat dans le même répertoire que ce fichier RSS, puis ouvrons ce fichier (avec jEdit ou tout éditeur de votre choix).

Voici le contenu du fichier :


rem Selection de RUMs a partir d'une colonne NADL d'un fichier csv
rem Ce fichier est a copier-coller
rem puis a adapter

setlocal EnableExtensions

rem Adapter GPMSI_HOME dans la ligne ci-dessous si gpmsi est installe ailleurs
if not defined GPMSI_HOME set GPMSI_HOME=C:\app\gpmsi\v2.1

set APP=%GPMSI_HOME%\gpmsi.bat

set SCRIPT=%GPMSI_HOME%\scripts\groovy\selection_de_rss.groovy

rem Fichier RUMS/RSS, ce sera 'A'
set A=<mettre_ici_chemin_du_fichier_des_RUMSRSS>
rem Fichier csv contenant une colonne NADL, ce sera 'B'
set B=<mettre_ici_chemin_du_fichier_csv_avec_colonne_NADL>
rem Fichier RUMS/RSS selectionnes, ce sera 'C'
set C=<mettre_ici_chemin_du_fichier_des_RUMSRSS_selectionnes>

%APP% -script "%SCRIPT%" -a:input "%A%" -a:nadlincl "%B%" -a:output "%C%

Il y a juste à remplacer

Et éventuellement enlever les commentaires superflus.

Voici le fichier après modifications (en gras) :


rem Selection de RUMs a partir d'une colonne NADL d'un fichier csv

setlocal EnableExtensions

if not defined GPMSI_HOME set GPMSI_HOME=C:\app\gpmsi\v2.1

set APP=%GPMSI_HOME%\gpmsi.bat

set SCRIPT=%GPMSI_HOME%\scripts\groovy\selection_de_rss.groovy

rem Fichier RUMS/RSS, ce sera 'A'
set A=RSSG_250228.txt
rem Fichier csv contenant une colonne NADL, ce sera 'B'
set B=nadls.csv
rem Fichier RUMS/RSS selectionnes, ce sera 'C'
set C=RSSG_250228_apres_selection.txt

%APP% -script "%SCRIPT%" -a:input "%A%" -a:nadlincl "%B%" -a:output "%C%

L'avantage de cette approche c'est que l'existence du fichier batch documente ce qui a été fait, et les modifications ne sont pas longues ni compliquées à faire.

Il suffit ensuite d'ouvrir une fenêtre de ligne de commande (pour aller vite : touche-windows + R, puis dans la fenêtre taper "cmd" + touche Entrée)
Puis entrer les commandes :

cd C:\Local\epmsi\mco\2024\M12\RSS+VH
selectionner-rss-sur-liste-ndas.bat
Le résultat ressemblera à quelque chose comme (seules lignes finales montrées ici) :
...
C:\Local\epmsi\mco\2024\M12\RSS+VH>C:\app\gpmsi\v2.1\gpmsi.bat -script "C:\app\gpmsi\v2.1\scripts\groovy\selection_de_rss.groovy" -a:input "RSSG_250228.txt" -a:nadlincl "nadls.csv" -a:output "RSSG_250228_selectionnes.txt
input : RSSG_250228.txt
output : RSSG_250228_selectionnes.txt
fichier des nadl a inclure : nadls.csv
Et en ouvrant le fichier RSSG_250228_selectionnes.txt on trouvera uniquement les RUMs/RSSs concernés avec un numéro de dossier de la sélection.

Faire ses propres scripts avec Groovy

Gpmsi est certes livré avec un menu et quelques scripts, mais il est conçu au départ
pour écrire des scripts en Groovy.
Groovy est un langage qui étend java avec des constructions dynamiques plus évoluées.
Cela paraît abstrait dit comme cela, mais en pratique cela donne des nouvelles possibilités dans l'écriture des programmes, dans la concision de l'écriture et la facilité d'utilisation.
Il y a de nombreuses améliorations, on pourra aller sur le site de Groovy les voir toutes.
Groovy est un langage de programmation, dont les bases sont plus simples à acquérir que pour le langage R.
Mais l'apprentissage n'est pas trivial malgré tout, surtout si on n'a jamais utilisé le langage java.
Il y a de nombreuses ressources pour apprendre java, par ex. sur Developpez.com, et pour apprendre groovy, on trouve également des ressources en français sur Developpez.com.

Il y a maintenant un manuel séparé pour aborder la programmation des scripts.

Voici entre autres ce que vous permet l'utilisation des scripts groovy dans gpmsi :

Où mettre ses scripts ?

Où mettre les scripts que l'on a développé ?

En fait on peut les mettre où l'on veut ; du moment que l'on passe le chemin complet du script groovy en argument -script du fichier gpmsi.bat ça va bien fonctionner.
Cependant si on partage des scripts entre plusieurs postes du même site ma convention est de mettre ces script dans le répertoire C:\app\gpmsi\scripts-locaux, avec des sous-répertoires bat, groovy, gui, drag-and-drop, a-copier-coller, comme dans C:\app\gpmsi\v2.1\scripts

Si le script groovy nécessite des fichiers .jar supplémentaires dans le classpath, deux solutions :

C'est ce mécanisme que l'on utilise pour ajouter des librairies de base de données supplémentaire comme Postgresql ou Oracle.

License

Gpmsi (et pmsixml) sont sous license Apache 2.0.

Vous trouverez ci-joint une copie de cette license,
ainsi que le fichier NOTICE qui l'accompagne.