R et PMSI

Nettoyage des points dans les codes CIM-10 en R

On est régulièrement amené à enrichir une liste de codages CIM-10 avec des informations issues d’un référentiel CIM-10 dans lequel les codes CIM-10 sont enregistrés avec un point.

Exemple avec une liste de diags CIM-10 que l’on appelle df1

Extrait de quelques lignes de df1 filtrées sur la seule colonne DP

DP
D987
C098
K317
Z987

que l’on cherche à enrichir avec un référentiel que l’on appelle df2

Extrait de quelques lignes de df2

Codes CIM-10 Explications Sources
M62.3 Le syndrome d’immobilité est une entité clinique distincte d’origine musculaire, le diagnostic doit être posé par le clinicien. Il ne s’agit pas seulement d’un état d’immobilisation du patient pour des raisons diverses. Agora
Q93.3 Le syndrome de Wolf-Hirschhorn (SWH) est un trouble du développement avec anomalies faciales caractéristiques, retard de croissance pré- et postnatale, déficit intellectuel, retard psychomoteur sévère, crises d’épilepsie et hypotonie.
Synonyme : Délétion distale 4p
Coder les manifestations en fonction des circonstances
ORPHANET & COCOA
I89.0 Le volume 3 classe en I89.0 les lymphœdèmes primitifs mais aussi secondaires. C’est bien ce code qui convient pour un
lymphœdème après curage associé au code T81.7
Agora
K31.7 Polypes du tube digestif
Le codage des polypes du tube digestif est à distinguer selon les compléments d’information fournis.
On les code comme une tumeur bénigne du segment concerné quand ils sont précisés adénomateux. On utilise alors
les catégories D12 Tumeur bénigne du côlon, du rectum, de l’anus et du canal anal ou D13 Tumeurs bénignes de parties
autres et mal définies de l’appareil digestif.
S’ils sont le siège d’un cancer (polype dégénéré), ils doivent être codés comme des tumeurs malignes du segment
concerné.
Les polypes non tumoraux et ceux dont la nature histologique n’est pas précisée sont décrits par des libellés particuliers
du chapitre XI des maladies de l’appareil digestif. On y trouve en effet :
– les polypes de l’estomac et du duodénum (K31.7) ;
– les polypes du côlon (K63.5) ;
– les polypes du rectum (K62.1) ;
– les polypes de l’anus (K62.0).
ATIH – Consignes de codage

Source : CoCoa 2019 – Version 30 juin 2019

Problème

Pour pouvoir faire la jointure entre ces 2 data frames, il va falloir au préalable nettoyer la colonne Codes CIM-10 de df2 en supprimant les points dans les codes CIM-10

Analyse

Remplacer la colonne actuelle Codes CIM-10 de df2 par une colonne de même nom avec les codes CIM-10 nettoyés (= sans les points)

Donc appliquer à chaque code CIM-10 de la colonne Codes CIM-10 une fonction de nettoyage du point s’il existe

La colonne Codes CIM-10 est de type character

Voyons directement le code correspondant que nous commentons ensuite.

Code

delete_dot <- function(x) str_replace_all(x,"[.]","")

df2 <- df2 %>%
      mutate(`Codes CIM-10` = map_chr(`Codes CIM-10`, delete_dot))

Commentaires du code

Le remplacement d’une colonne par une autre colonne : fonction mutate() de dplyr.
Mise entre du nom de la colonne car le nom comprend un espace vide.

Appliquer une même fonction sur une colonne : une fonction map() du package purrr.
On choisit map_chr() pour retourner directement une colonne chr.

Il est plus lisible de coder la fonction de nettoyage en dehors du map_chr() : c’est la fonction que l’on a appelé delete_dot(). Cela permet aussi de réutiliser librement delete_dot().

Pour le nettoyage, on a choisi de rester dans le tidyverse avec la fonction str_replace_all() du package stringr, plutôt que d’utiliser la fonction R native gsub().

str_replace_all() : tuto simple en français

Pour aller chercher les points dans les codes CIM-10, via le 2eme argument de str_replace_all(), on a codé un REGEX classique [.]. On aurait aussi pu coder \\. pour ce 2eme argument (moins élégant).

Le remplacement du point par rien est codé simplement "" dans le 3eme argument de str_replace_all()

Si le code CIM-10 ne contient pas de point, str_replace_all() ne fait rien car il ne trouve pas de point.

Résultat

On vérifie que la colonne Codes CIM-10 de df2 a bien été modifiée comme voulu.

Codes CIM-10 Explications Sources
M623 Le syndrome d’immobilité est une entité clinique distincte d’origine musculaire, le diagnostic doit être posé par le clinicien. Il ne s’agit pas seulement d’un état d’immobilisation du patient pour des raisons diverses. Agora
Q933 Le syndrome de Wolf-Hirschhorn (SWH) est un trouble du développement avec anomalies faciales caractéristiques, retard de croissance pré- et postnatale, déficit intellectuel, retard psychomoteur sévère, crises d’épilepsie et hypotonie.
Synonyme : Délétion distale 4p
Coder les manifestations en fonction des circonstances
ORPHANET & COCOA
I890 Le volume 3 classe en I89.0 les lymphœdèmes primitifs mais aussi secondaires. C’est bien ce code qui convient pour un
lymphœdème après curage associé au code T81.7
Agora
K317 Polypes du tube digestif
Le codage des polypes du tube digestif est à distinguer selon les compléments d’information fournis.
On les code comme une tumeur bénigne du segment concerné quand ils sont précisés adénomateux. On utilise alors
les catégories D12 Tumeur bénigne du côlon, du rectum, de l’anus et du canal anal ou D13 Tumeurs bénignes de parties
autres et mal définies de l’appareil digestif.
S’ils sont le siège d’un cancer (polype dégénéré), ils doivent être codés comme des tumeurs malignes du segment
concerné.
Les polypes non tumoraux et ceux dont la nature histologique n’est pas précisée sont décrits par des libellés particuliers
du chapitre XI des maladies de l’appareil digestif. On y trouve en effet :
– les polypes de l’estomac et du duodénum (K31.7) ;
– les polypes du côlon (K63.5) ;
– les polypes du rectum (K62.1) ;
– les polypes de l’anus (K62.0).
ATIH – Consignes de codage

On peut maintenant faire la jointure des 2 data frame df1 et df2 via les colonnes DP de Codes CIM-10 qui se correspondent (avec la fonction left_join() par exemple).

Copyright © LesPMSI.com

Formation R et PMSI MCO – Liste de requêtes

Liste (non exhaustive) de quelques requêtes R et PMSI MCO qui seront présentées lors de la formation « R et PMSI MCO » qui aura lieu à Paris les 8 et 9 octobre 2020., essentiellement lors des ateliers « Traitement de données PMSI MCO et associées en R » (8 octobre 2020) et « Bibliothèque requêtes PMSI MCO en R » (9 octobre 2020)

Le code R de chacune de ces requêtes sera fourni dans le support de la formation et dans la correction des exercices. Les résultats de certaines de ces requêtes seront illustrés graphiquement dans l’atelier « Les graphiques en R ».

Les référentiels PMSI et tiers utilisés pour ces exercices seront fournis en début de formation.

A l’issue de la formation, les participants seront autonomes pour coder et personnaliser ces familles de requêtes avec leurs données, en toute indépendance par rapport à leur service informatique ou à un logiciel commercial.

# nb RUM et des séjours par filtre (GHM, regroupement de GHM, présence d’au moins 1 codage CIM-10 ou CCAM, …)
# répartition des séjours multi-rum par nb de RUM
# nb d’UM différents avec au moins 1 séjour groupé dans une CM ou un regroupement de GHM
# proportion de séjours de sévérité 3 et 4
# taux de décès
# calcul des IP-DMS
# activité par UM/regroupement UM (service, pôle, regroupement libre) = DMS, nb RUM, nb séjour, valorisation T2A, nb patients
# séjours en provenance des urgences par UM/regroupement d’UM
# séjour 0, 1 ou 2 journée(s) en HC (séjours dits « forains »)
# codage médical par position (DP,DR,DAS) par pathologie. Tri par occurence.
# case mix des codages CIM-10 par position (DP,DR,DAS)
# nb accouchement dans l’établissement
# répartition des accouchements par classe d’âge
# nb accouchements par voie basse spontanée / assistée / instrumentale / césarienne programmée / césarienne en urgence ou pendant le travail
# taux d’accouchement avec péridurale / épisiotomie
# activité de réa
# proportion des séjours avec passage en réa dans le 1er RUM par rapport au total des séjours avec passage en  réa
# repérage des séjours avec passage en  réa dans le dernier RUM pour les séjours multi-RUM
# regroupement des UM en services et en pôles
# produire un case mix (exemples : case mix des GHM, des GHS, des DA)
# case mix des DMI posés pour les séjours de chirurgie orthopédique (exemple de requêtes joignant 2 sources de données PMSI)
# case mix des UCD dispensés pour une sélection de séjour
# sélection de séjours via la présence ou l’exclusion d’une liste d’actes CCAM ou de codes CIM-10 ou de classification GHM
# analyse d’activité par phénotype (exemple d’import en R d’un référentiel externe structuré)
# calcul du score de Charlson (exemple de recours à un package métier)
# cohérence du codage des unités typées avec les pathologies de ces unités
# repérage des séjours substituables (exemple de codage en R d’un algorithme simple)
# suivi de l’activité de chirurgie ambulatoire
# ré-hospitalisation à 7 jours et 30 jours des séjours de chirurgie ambulatoire
# régressions linéaires simples (valorisation T2A par durée de séjour)
# suivi d’activité pluriannuel avec comparaison inter-annuelle
# identification des séjours longs par différentes approches (dépassement d’un nombre fixe de journées ou d’un coefficient par rapport à la DMS nationale du GHM du séjour ou par rapport à la DMS du GHM dans l’établissement, dépassement de la BH, durées statistiquement aberrantes (outliers))
# test-t de Student (exemple : comparaison de DMS pour 2 échantillons de séjours différentiés par un codage)
# test du khi-2 (exemple : indépendance du mode de sortie par classe d’âge pour une prise en charge donnée)
# activité de cancer Chirurgie Digestive (exemple de codage d’un algorithme INCa)
# case mix GHS de l’activité avec DM intraGHS (exemple de jointure avec un référentiel tiers : la liste des DM intraGHS)

Copyright © Lespmsi.com – Imprimer cet article

6 raisons d’utiliser R en analyse PMSI

Nous travaillons depuis plusieurs années avec R, langage open source de traitement de données et de statistique, pour l’analyse PMSI.

Nous partageons aujourd’hui notre retour d’expérience sur l’utilisation de R pour l’analyse des PMSI.

Raison #1 : R est adapté aux analyses PMSI

Principales caractéristiques de R :
# importation optimisée de fichiers textes structurés
# manipulation très fluide et naturelle de structures de données. R a été conçu spécifiquement pour la manipulation de données.
# toutes les fonctions statistiques et de manipulations de données existent nativement dans R
# de très nombreuses fonctions graphiques et de visualisation de données sont intégrées à R pour produire automatiquement des histogrammes, des courbes, des camemberts, des boîtes à moustache, etc…
# génération de rapports dynamiques
# très rapidement opérationnel.
En quelques heures, un professionnel du PMSI peut réaliser des comptages (nombre de RUM, nombre moyen de RUM par RSS, DMS, …) et quelques requêtes simples (nombre moyen d’actes CCAM par séjour et GHM, ratio de séjours avec un code CIM-10 codé, …)

Or ces caractéristiques sont justement celles recherchées par les équipes DIM :
# travail sur un PC, souvent un portable pour les médecins DIM, sans vouloir ou pouvoir dépendre d’un service informatique
# import et manipulation rapide (en quelques secondes) de fichiers de quelques 100 000 lignes
# réutilisation et personnalisation à volonté de requêtes
# « nettoyage » facile de données (ex : supprimer les GHM représentés par moins de 10 séjours)
# « jeux » avec les filtres et les sélections
# production de graphiques à la volée
# production de case mix
# comparaison de jeux de données période à période ou périmètre à périmètre
# repérage d’atypies avec paramétrage de listes de codes
# appel à des fonctions ou des tests statistiques en ayant l’assurance qu’ils sont corrects
# distinction entre variables quantitatives, qualitatives, catégorielles
# rapprochement avec des référentiels ou des textes non structurés
# génération de rapports d’activité dynamiques reproductibles
# intégration aux EDS, aux études multi-sites

R est par ailleurs très largement utilisé en Santé Publique et en biostatistique depuis de nombreuses années.

Raison #2 : R est mature et pérenne

R existe depuis plus de 20 ans. Sa maturité, sa popularité et sa diffusion s’accroissent d’année en année.

A ce jour, R est couramment utilisé en entreprise, dans les milieux académiques et les organismes publics, en particulier dans le monde hospitalier et de la santé.

R comprend plus de 15 000 packages à ce jour (source), répondant à des besoins de plus en plus pointus.

En janvier 2019, R est classé 12e dans l’index TIOBE qui mesure la popularité des langages de programmation dans le monde.

Raison #3 : R est gratuit et open source

La gratuité de R permet aux équipes DIM de travailler tout de suite en toute liberté, sans dépendre d’un financement qui peut toujours être remis en cause ou d’un éditeur commercial qui bride l’accès aux possibilités d’analyses, sans dépendre d’un nombre de licences.

R est open source. Cela garantit une maîtrise de bout en bout des requêtes et des fonctions : pas de « boîtes noires », pas de « modules supplémentaires payants », aucune limitation dans les développements.

R dispose d’un environnement de développement gratuit, libre, multiplateforme pour R, orienté utilisateur : RStudio qui facilite grandement le développement sous R et la visualisation en direct des résultats, en particulier des graphiques.

Raison #4 : R est très documenté

L’écosystème francophone autour de R est aujourd’hui très développé avec des sites et blogs didactiques, du plus basique pour démarrer aux plus techniques, des forums et des rencontres académiques dans de nombreuses villes (Nantes, Toulouse, Paris, Lyon), un réseau d’experts indépendants.

Pour les professionnels qui comprennent l’anglais basique, la documentation R devient alors quasi-infinie.

Chaque question a sa réponse dans les blogs, sites ou forums

Raison #5 : Les spécialistes et experts du PMSI utilisent R

La quasi-totalité des CHU et CHR utilisent aujourd’hui R.

L’AP-HP développe un logiciel open source R pour le PMSI : pmeasyr (voir notre interview de Guillaume PRESSIAT qui développe et maintient pmeasyr).

La DREES développe depuis 2019 sa visualisation de données en ligne en R

Nous développons PMSISoft, le logiciel d’analyse PMSI le plus pointu à ce jour, en R.

Raison # 6 : R = l’ouverture du PMSI à la data science

Pour les équipes DIM, travailler avec R, c’est aussi participer aux travaux les plus récents en santé publique autour des EDS (Entrepôts De Santé) qui voient le jour dans les principaux CHU (Paris, Grand Ouest, Marseille, Bordeaux, Strasbourg, Lyon) et de l’IA.

C’est s’inscrire dans une démarche de partage et de collaboration valorisant les expertises propres aux PMSI (via, par exemple, le partage de package ad’hoc).

Travailler avec R pour une équipe DIM, c’est travailler de plein pied dans le monde des data scientist, du codage semi-automatisé, de l’avenir de l’analyse des données de santé à laquelle participe le PMSI.

Copyright © Lespmsi.com – Imprimer cet article