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 :
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 :
C:\openjdk-8u322-b06
ou encore C:\jdk1.8
selon ce qui est installé)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.
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-refet double-cliquer sur le fichier batch
installer-fichiers-ref.bat
pour installer les fichiers CIM 10 et CCAM utilisés par les scripts.
C:\app\gpmsi\v2.1
, puis double-cliquez sur
menu.bat
, une fenêtre similaire à :
devrait s'ouvrir.
Exemple pour "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.
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_vers_xlsx_dnd.bat
Envoie les champs du fichier ANOHOSP (VIDHOSP anonymisé via MAGIC)
vers un fichier Excel.
csv-vers-xlsx-strings-dnd.bat
transforme un fichier .csv en fichier .xlsx avec
tous les champs en type "texte". Utile pour ouvrir un fichier .csv rapidement dans Excel, sans
aucune transformation.
csv-virgule-utf8-vers-xlsx-strings-dnd.bat
transforme un fichier .csv qui est
encodé en UTF-8 et qui a le séparateur virgule en .xlsx avec tous les champs en type "texte".
C'est utile pour ouvrir rapidement des .csv que l'on trouve sur les sites de Data Science
où l'on a ce type d'encodage qui est fastidieux à ouvrir avec Excel.
libcim10multi-vers-cim10-dnd.bat
Transforme un fichier que l'on trouve sur le
site de l'ATIH dans le kit de nomenclature, en 2 fichiers équivalents, mais avec des
noms de colonne en en-tête, et un encodage UTF-8 pour le 1er fichier, et Windows-1252 pour
le deuxième fichier.
dmi-vers-xlsx-dnd.bat
Transformation d'un fichcomp DMI en fichier Excel .xlsx.
med-vers-xlsx-dnd.bat
Transformation d'un fichcomp MED en fichier Excel .xlsx.
hl7-mllp-vers-xml.bat
Transformation d'un fichier HL7 "MLLP" (séparateurs |^~\&)
en fichier HL7 encodé en XML. Cela rend le fichier HL7 plus facile à analyser.
csv-vers-ium-dnd.bat
Transformation d'un fichier .csv en fichier au format FICIUM
pour décrire les autorisations d'UM. Utilise les colonnes qui ont le nom parmi :
NUM FGEO TYAUT DEAUT NBLITS MODHOSP
(numéro d'UM, finess géo, type d'autorisation, date d'effet de l'autorisation, nombre de lits,
mode d'hospitalisation).
Permet de garder un fichier Excel avec des colonnes supplémentaires (remarques etc.) pour
centraliser toutes les autorisations, et ensuite utiliser le fichier Excel unique pour générer
les éventuels FICIUM lors de tout changement.
diff-rhs-vh-dnd.bat
Pour ce raccourci il faut sélectionner DEUX fichiers et les
faire glisser tous deux sur ce batch. Le nom du fichier VIDHOSP DOIT commencer par VIDHOSP_SSR,
et le nom du fichier des RHS DOIT commencer par SSR_RHS. Le fichier résultat dit pour chaque
numéro de dossier si on le trouve seulement dans le VIDHOSP, seulement dans les RHS, ou dans
les deux. Cela permet de vérifier rapidement les problèmes (basiques) éventuels de chaînage.
rhs-fusion-fichiers-dxcare-dnd.bat
Pour ce raccourci il faut sélectionner DEUX
fichiers et les faire glisser tous deux sur ce batch. Le script rassemble les deux fichiers
et met en commun les actes CCAM, CSARR, les DAS pour chaque semaine. Ceci était nécessaire
en raison de bugs de DxCare qui n'exportait pas tous les RHS, et il fallait faire plusieurs
exports séparés puis les réunir. Le bug n'existe plus maintenant mais j'ai laissé le
script qui est assez compliqué et intéressant à étudier.
rhs-reparer-lundis-dnd.bat
Ce raccourci est pour les outils de recueuil qui
n'exportent pas un RHS pour la semaine du lundi lorsque le patient sort un lundi, alors qu'il faut
quand même exporter cette semaine, même si tous les jours de présence sont à 0.
DxCare est dans ce cas ... Le script demande de manière interactive d'indiquer la période
concernée par l'export, sous la forme AAAAMM. Un nouveau fichier est produit, avec un RHS
ajouté lorsque nécessaire pour chaque dossier.
rhs-vers-csv-dnd.bat
Exporte les principaux champs du RHS vers un fichier .csv
rpu_analyser_dnd.bat
Sur le fichier des RPUs, recherche d'anomalies basiques :
rpu_decouper_par_mois_dnd.bat
Découpe un fichier RPU en mois (de 1 à 12), avec
des fichiers RPUs qui contiennent les bonnes bornes. Destiné à l'alimentation SESAN sans
faire planter l'interface qui n'accepte pas plus de 5000 RPUs par envoi.
rpu_fusion_fichiers.bat
Pour ce fichier il faut sélectionner DEUX fichiers RPU
et les faire glisser sur le fichier batch. Le script effectue la fusion des deux fichiers RPU.
rpu_renommages_multiples_sesan.bat
Ce fichier batch accepte un ensemble de
fichiers (sélectionner l'ensemble des fichiers puis faire glisser l'ensemble sur le fichier
batch) et pour chaque fichier, appelle rpu_renommer_sesan.bat
rpu_renommer_sesan.bat
Fait un renommage du fichier des RPUs au format SESAN, en
utilisant les données du fichier RPU.
rpu_xlsx_dp_vide.bat
Prend un fichier .xlsx qui contient des RPUs, et enlève
les lignes pour lesquelles le DP n'est pas vide.
rpu-bornes-dates-dnd.bat
Analyse un fichier RPU XML et donne les date entree min,
date entree max, date sortie min, date sortie max.
rpu-vers-csv.bat
Exporte les RPUs format XML vers un fichier .csv
rpu-vers-xlsx.bat
Exporte les RPUs format XML vers un fichier Excel .xlsx
nrsa-rattacher-ndoss-dnd.bat
Pour ce batch il faut sélectionner DEUX fichier
puis les faire glisser sur le fichier batch. Ce que fait le script c'est le rattachement
d'une colonne numéro de dossier (NDOSS) à
un fichier .csv qui contient une colonne NRSA, à l'aide du fichier TRA fourni.
Le fichier TRA doit finir par .tra.txt et l'autre fichier qui contient la colonne NRSA
doit être au format .csv
rsface-2023-vers-xlsx-dnd.bat
Convertit un fichier RSF-ACE en fichier Excel,
avec un onglet par type de facture.
diff-rss-vh-dnd.bat
Ce fichier batch nécessite DEUX fichiers en entrée. Il faut
donc sélectionner les deux fichiers puis faire glisser la sélection sur le fichier batch.
Le fichier VIDHOSP doit commencer par VIDHOSP_MCO, et le fichier des RSS doit commencer par
MCO_RSS. Le fichier résultat indique pour chaque numéro de dossier si on le retrouve dans les
RSS, dans le VIDHOSP, ou dans les deux.
rss-doublons-lignes-dnd.bat
Pour un fichier RSS, trouver les doublons RSS/RUM
et les doublons parfaits de ligne. On les envoie juste dans la sortie normale. DxCare avait
ce type de bug pendant quelques années.
rss-vers-csv-dnd.bat
Convertit un fichier RSS en fichier .csv (ne convertit pas tous les champs). Nécessite que
la CIM 10 et la CCAM soient tous deux bien installés. Vous pouvez facilement créer votre
propre script pour ajouter/supprimer les champs que vous voulez.
rss-vers-triple-csv.bat
Convertit un fichier RSS en 3 fichiers : _rums.csv , _da.csv , _actes.csv
pour utilisation ultérieure dans R ou Python, sans avoir à réanalyser les champs.
rss-vers-xlsx-dnd.bat
Convertit un fichier de RSS vers un fichier Excel .xlsx, en
mettant les libellés pour les codes CIM 10 et les actes CCAM. Le résultat est un fichier énorme ;
c'est plutôt à utiliser lorsque l'on a déja sélectionné un petit nombre de RUMs/RSSs, pour les
analyser plus finement.
rss-vers-xlsx-sans-libelles-dnd.bat
Identique à rss-vers-xlsx-dnd.bat
, mais n'émet
pas les libellés.
tracsv-vers-xlsx-dnd.bat
Convertit un fichier .tra.txt issu du groupage en fichier
Excel .xlsx.
rss_121_vers_122.bat
Prend un RSS groupé au format 121, et le convertit
au format 122. Etait nécessaire car DxCare avait du retard à la fourniture de la version
adéquate, et il fallait envoyer les fichiers, même légèrement incomplets. Gardé pour
montrer la façon de transformer des fichiers RSS avec gpmsi.
desaccentuer-fichier-dos-dnd.bat
Enlever les accents d'un fichier qui a l'encodage
DOS
desaccentuer-fichier-utf-8-dnd.bat
Enlever les accents d'un fichier qui a l'encodage
UTF-8
desaccentuer-fichier-windows-dnd.bat
Enlever les accents d'un fichier qui a l'encodage
Windows (1252)
vidhosp-extraire-nadls-dnd.bat
Extraire les numéros de dossier du VIDHOSP vers un fichier .csv
vidhosp-sejours-a-cheval-dnd.bat
Extraire les numérod de dossier des séjours qui sont à cheval sur deux années
vidhosp-vers-xlsx-dnd.bat
Convertir un fichier VIDHOSP en fichier Excel .xlsx.
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%
<mettre_ici_chemin_du_fichier_des_RUMSRSS>
par RSSG_250228.txt
<mettre_ici_chemin_du_fichier_csv_avec_colonne_NADL>
par nadls.csv
<mettre_ici_chemin_du_fichier_des_RUMSRSS_selectionnes>
par RSSG_250228_apres_selection.txt
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.batLe 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.csvEt 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.
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 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 :
Vous trouverez ci-joint une copie de cette license,
ainsi que le fichier NOTICE qui l'accompagne.