PerlMSI
présentation

blog

archives

références

copyrights

télécharger

contact

Le PMSI avec PERL et Postgres SQL et R et ...
Rappel important

Tous les programmes ci-présent sont distribués sous licence AGPL v3. Vous pouvez les utiliser gratuitement, on espère qu'ils fonctionnent bien, mais il n'y a aucune certitude... Considérez-les donc comme des bases de travail pour vos informaticiens ! À ce titre, toutes les versions sont conservées, pour faciliter l'étude de l'évolution de leurs fonctionnalités.

Réservé aux connaisseurs !

Vous constaterez aussi que la plupart de ces programmes ne fonctionnent qu'en ligne de commande. Il n'y a dans cette décision aucune volonté élitiste : l'interface graphique (souvent dite « clicodrôme ») n'aurait que peu d'intérêt vu le public visé, notre priorité allant à la réalisation de programmes fonctionnels pour les professionels du secteur. Toutefois, si vous maitrisez Gtk2Perl souhaitez nous aider dans cette approche, n'hésitez pas à nous contacter.

Des besoins spécifiques ?

Si malgré tout vous avez des besoins très spécifiques, qui nécessitent par exemple un développement particulier, le mieux est de nous contacter pour que l'on puisse étudier votre projet.

Assez discuté ! Je veux ces programmes !

Vous pouvez vous servir, mais pensez à lire les explications ci-dessous, surtout pour des programmes à l'utilisation aussi spécifique que RSSDIFF2RSS.

 


 

RSS2SQL et SQL2RSS

Ces deux scripts permettent de rentrer et de sortir un fichier RSS dans une base PostGreSQL. Leur intérêt principal est de faire des analyses statistiques (ex: il est très facile à partir d'une base SQL de décompter les patients par UF et par sexe) et de croiser des informations issues de systèmes ne se parlant pas (ex: pour tester l'intérêt de déverser dans le RSS les actes issus d'un logiciel spécifique à un service). Tous les formats de RSS depuis 2004 sont gérés.

GREPRSS

Produire tout un fichier RSS à partir de la table SQL générée par RSS2SQL est souvent beaucoup trop compliqué pour une tâche simple (ex: créer un fichier RSS correspondant aux patients répondant à deux critères pour évaluer la valorisation d'un plan de transfert d'activité vers un autre établissement par le biais d'une transmission epop M0). Il suffit de créer une table SQL contenant le fruit des croisements, et GREPRSS utilise cette table pour créer un extrait du fichier RSS à partir des numéros de RSS donnés en entrée. Cette opération se fait bien plus rapidement que SQL2RSS ne peut générer un fichier complet.

RSA2SQL

Il s'agit du pendant de RSS2SQL, qui permet de charger les RSA dans une base SQL. Dans ses premières versions, il a été construit à partir de RSS2SQL mais il a évolué spécifiquement, notamment dans la gestion des différents formats de RSA. Cette gestion reste sous la forme de bloc après des tests, pour faciliter l'adaptation du script par des personnes qui auraient quelques difficultés avec des structures plus compliquées telles qu'utilisées dans les autres programmes dont la bibliothèque PerlMSI.

RSA2EURO

Ce script permet de créer à partir d'un fichier RSA des bases SQL donnant la valeur en euro de chaque RSA, notamment pour le nombre de CMD90 et les différences (ex: utiliser ce script suivre l'élimination des CMD90 et la progression des gains correspondants). Il chiffre aussi les séjours non pris en charge par la CPAM (ex: pour comparer au valeurs du titre 2), et indique la répartition de la valorisation entre séjours de patients décédés, en deça, entre, et aux delà des bornes en GHMv10. Il crée une table de comparaison par rapport au groupage référence, pour faciliter l'étude à postériori des étapes de rattrapage. Attention: il est très approximatif et nécessite une table d'association IEP/IPP pour les calculs par IPP. Il devrait bientôt être remplacé par des fonctions de la bibliothèque PerlMSI.

TRA2SQL

Cet extrait de RSA2EURO se consacre a une seule fonction : charger la liste des associations RSA/RSS pour faciliter les croisements entre les deux bases SQL, pour que lors d'une utilisation de RSA2SQL et de RSS2SQL, il ne faille pas lancer inutilement tout un RSA2EURO (ex: lorsqu'on recherche juste la liste des IEP et des RSS ayant eu un certain supplément au GHS).

BILAN.PHP

À l'instar de RSA2EURO, ce script cherche à faire des évaluations. Mais alors que RSA2EURO est utile pour suivre les rattrapages de valeur lors des corrections de CMD90, bilan.php est surtout destiné à donner des informations aux UF à partir du fichier RSS chargé par RSS2SQL. Il dépend de fonctions.php, pour une routine d'interrogation de la base de donnée retournant différent types de tableaux selon les besoins. Il est très basique, notamment d'un point de vue présentation, mais peut être modifié pour faire des tableaux de bord par UF ou par pôle.

VIDHOSPCONVERT

Le fichier VIDHOSP, qui donne l'ANOHOSP, est utilisé par GENRSA pour déterminer si un séjour est facturable ou pas à l'assurance maladie. Le VIDHOSP dépend de la filière administrative, et a souvent quelques petits problèmes, comme des erreurs évidentes sur le numéro de sécurité sociale. Il est recommandé dans les forums de l'ATIH de corriger de telles erreurs - ce script s'en charge ! Il est aussi capable de convertir les formats d'une année à l'autre (ex: pour alimenter un script d'analyse statistique qui ne connait pas le nouveau format VIDHOSP).

VIDHOSP2TXT

Repérer et corriger les erreurs du VIDHOSP devenant trop compliqué pour être fait de manière automatique, il vaut parfois mieux faire un rapport de bug à l'éditeur. Pour celà, il faut pouvoir facilement décoder les différents champs du fichier VIDHOSP. VIDHOSP2TXT s'en charge, en mettant des libellés clair pour chaque valeur. Il supporte aussi tous les formats de VIDHOSP, par une nouvelle méthode de tableau associatif qui permet d'économiser des boucles (ex: dans RSA2SQL, la plupart du contenu se répête) tout en étant simplement modifiable par un néophyte pour rajouter de nouveau formats.

FICHCOMP2SQL

En MCO, il faut aussi pouvoir décoder les informations sur les molécules onéreuses (FICHCOMP-MON) et les dispositifs médicaux (FICHCOMP-DMI), qui sont transmises par la pharmacie au DIM. FICHCOMP2SQL est le pendant de RSS2SQL, car il permet de les charger dans une base PostGreSQL.

RSSDIFF2RSS

Les GHM indiqués par les logiciels de groupage dans le fichier RSS n'ont aucune valeur légale, seul GENRSA de l'ATIH étant le logiciel de référence. Souvent, il peut exister des différences entre les GHM attribués par votre logiciel de codage et les GHM retenus par l'ATIH. (Ex de logiciel de codage: Cora de PrisMedica, mais tous les éditeurs sont dans la même situation : en cas de divergence, même lié à une erreur dans GENRSA, il est la référence !). De telles divergences s'avèrent génantes si vous utilisez des logiciels de présentation de résultats utilisant les fichiers RSS, comme PMSI-Pilot de la société PSIH.

Normalement, vous devez utiliser le fichier .rss.txt de l'archive in.zip produite par GENRSA, et non le rss.ini.txt correspondant au fichier créé par votre logiciel de groupage. Toutefois, il peut être parfois gênant et source d'erreur de devoir faire de telles manipulations sur les fichiers .zip qui portent tous des noms très proches. (Ex: lors du chargement de corrections sur les mouvements entre des UF qui ne modifiront pas le groupage en GHM mais qui changeront les répartitions de T2A par UF).

Dans un tel cas, si vous êtes sur que le groupage en GHM produit par votre logiciel de groupage continue à manifester des erreurs normalement corrigées par GENRSA, prenez le fichier dif de son archive in.zip et le RSS produit par votre logiciel de groupage. RSSDIFF2RSS appliquera les corrections recommandées par le fichier dif de GENRSA pour corriger le fichier RSS sorti de votre logiciel de groupage, sans devoir à chaque fois lancer GENRSA. RSSDIFF2RSS est particulièrement utile pour suivre l'avancée de correction de saisie de mouvement sans devoir à chaque fois passez 5 minutes voire plus à attendre GENRSA.

Il faut toutefois l'utiliser avec prudence, et lancer au moins GENRSA lorsqu'on est sur d'avoir saisi toutes les mutations, au cas où d'autres modifications impacteraient le groupage par GHM! RSSDIFF2RSS est le programme le plus court, le plus simple, pouvant faire gagner le plus de temps, mais donc aussi le plus complexe d'utilisation.

 


 

Biblothèque PerlMSI

Il s'agit d'une nouvelle implémentation de toutes ces fonctions sous la forme d'une bibliothèque standard Perl, pouvant donc être utilisée par tout programme Perl pour manipuler des informations PMSI dans une approche orientée objet. Le but est de permettre à tout programmeur de pouvoir mélanger les fonctions des différences parties pour créer de nouveaux programmes encore plus utiles.

Il s'agit probablement donc du programme le plus intéressant pour un établissement voulant mettre en oeuvre PerlMSI pour un projet spécifique. Commencez par cet exemple destiné à décompter les coûts liés à la mauvaise attribution des DMI et des MON à des patients dont l'IEP n'est pas référencé dans le fichier RSS. Il est simplement fait référence aux fichier FICHCOMP et RSS, ici de l'année 2009 - mais toute autre année sera gérée de la même manière, vu que l'object E_rss créé par la fonction RSS:readfrom est indépendant de l'année, l'objet RSS se chargeant de l'abstraction des formats.

Autre exemple : l'analyse des erreurs administratives du VIDHOSP sous une forme texte simple à lire se fait en appelant la méthode noncpam de l'object VIDHOSP créé par la fonction VIDHOSP::readfrom, là encore de manière indépendante du format. Quelques lignes suffisent à réaliser cette étape, qui peut alors donner lieu à des analyses plus poussées pour exclure les cas légitimes, comme par exemple les patients pris en charge au niveau du titre 2.

Bien sur, il n'est pas nécessaire de vouloir faire des choses aussi compliquées pour utiliser la bibliothèque. Elle peut aussi permettre de décompter en quelques secondes le nombre de lignes, d'IEP et de RSS uniques dans un fichier de RSS, ou transformer un fichier RSA en une sortie texte plus facilement lisible. Sa souplesse d'utilisation en fait sa force.

 


 

RSS2EURO (ne pas utiliser en pratique mais en recherche)

L'ATIH proclame fièrement que la T2A se rapproche de plus en plus finement des coûts révélés par l'ENC. Toutefois, on doit noter une complexification croissante des calculs de valorisation, comme on peut le voir dans l'allongement progressif des formules de calcul de valorisation chaque année. En pratique, outre le GHM, les suppléments liés à des actes ou des autorisations spécifiques pouvaient déjà changer de manière très importante la valorisation.

Mais actuellement, le problème principal vient de la « double articulation » entre les GHM et les GHS : le simple groupage ne permet pas de calculer la valorisation, car il faut déterminer pas seulement le bon GHM, mais surtout le bon GHS. Le principe d'un GHS par GHM était valable dans la majorité des cas au début de la T2A - il se voit toutefois battu en brèche par les évolutions récentes. Continuer à parler en GHM, comme le font la plupart des cliniciens qui s'intéressent à leur T2A, a donc beaucoup moins d'intérêt économique.

Toutefois, à partir d'un fichier RSS, il est quand même possible dans un grand nombre de cas de faire des évaluations de valorisation pour les RSS dont le GHM ne correspond qu'à un seul GHS, en utilisant soit la base complète des tarifs, soit plus simplement la table des tarifs de l'année voulue et en excluant les cas où un GHM=plusieurs GHS. Mais cette simplification va être de moins en moins utilisable, vu la propention à associer plusieurs GHS à un GHM. Comment donc contourner cette difficulté, sans devoir réimplémenter immédiatement l'intégralité de la fonction de groupage ? (tâche difficile !)

L'approche retenue cherche à étudier dans quels cas cette double articulation peut se voir simplifée voire automatisée, initialement pour les GHS, puis à terme aussi pour les suppléments. En effet, dans un certain nombre de cas, il est possible d'utiliser les listes d'actes publiées au Journal Officiel pour choisir le bon GHS lorsque plusieurs sont possibles.

RSS2EURO vise donc à donner des valeur hors supplément par GHM à partir d'un fichier RSS. Outre l'aspect recherche visant à démonter les cas de double articulation GHM-GHS, il s'agit d'une approche expérimentale, pour mieux étudier les possibilités d'implémentation d'une future fonction de groupage libre lorsque ces informations extraites du Journal Officiel, tarifs, suppléments et formules de calculs, sont croisées aux autorisations règlementaires (fichier dit FICUM).

RSS2EURO met notamment en évidence la nécessité, outre l'algorithme de groupage, de diposer d'une source documentaire de désambigüation lorsque plusieurs GHS correspondent à un GHM. Théoriquement, le quatrième élément (FICUM) et ce cinquième élément (1 GHM/n GHS) devraient suffire à calculer une valorisation à partir d'un GHM. Ainsi, serait possible de découper l'écriture d'une fonction de groupage libre en une première sous-tâche, d'intérêt pratique immédiat.

Les fichiers ghm-nghs2009 et ghm-nghs2010 donnent un exemple d'implémentation, et mettent surtout en évidence la nécessité de disposer d'une grammaire. Dans ce cadre, il est proposé à titre d'exemple une syntaxe basique avec logique booléenne et associative se contentant de 4 opérateurs : + pour AND, | pour OR, ! pour NOT, et les parenthèses comme OPÉRATEURS DE GROUPAGE.

Les équipes intéressées par ces travaux sont invitées à ce joindre au projet.