R et PMSI

Retour sur une année de webinaires R et PMSI

Nous partageons avec la communauté PMSI un retour d’expérience quant à la participation des professionnels PMSI aux webinaires « R et PMSI » que nous organisons régulièrement.

A titre d’expérimentation, sans trop savoir si cela intéresserait des professionnels du PMSI, nous avons proposé un premier webinaire gratuit de découverte intitulé « Débuter avec R pour le PMSI » d’une heure et demi le 16 mars 2023, dans une logique de sensibilisation et de « dédramatisation » de l’approche R pour les analyses PMSI.

Nous avons été agréablement surpris puisque plusieurs dizaines de personnes s’étaient inscrites. Du coup, on propose maintenant ce webinaire régulièrement en améliorant et mettant à jour son contenu au fil des webinaires.

Quelques chiffres sur l’année 2023 :

# 6 webinaires entre mars et décembre 2023
# 91 professionnels se sont inscrits
# 68 sont venus et ont assisté à tout le webinaire auquel ils s’étaient inscrits
# ces 68 professionnels se répartissent, par profession, en 38 médecins DIM, 21 statisticiens (on regroupe ici les statisticiens proprement dits, les data analyst, data scientist, ingénieur hospitalier, …), 7 TIM et 2 Autres
# de manière approximative
1 participant sur 2 vient en découverte (« je vois bien que c’est l’avenir », « on en parle autour de moi », « est-ce fait pour moi ? », « concrètement comment démarre-t-on ? », « qu’est ce qu’on peut faire en R ? »)
1 participant sur 4 assiste au webinaire car il commence, seul ou en projet dans son établissement, à réaliser quelques manipulations ou analyses simples PMSI en R et a des questions à poser
1 participant sur 4 a déjà bien compris les bénéfices à tout point de vue (productivité, indépendance, performance, coût, partage) de basculer ses analyses PMSI avec R, produit des analyses PMSI en R et vient écouter des bonnes pratiques, participer à la communauté.

Copyright © Lespmsi.com – Imprimer cet article

Liste des médicaments anticancéreux intra-GHS : expérimentation 51 (version 2020)

Dans le cadre de l’expérimentation article 51 (voir notre article « Expérimentation article 51 pour le recueil des médicaments anticancéreux« ), certains établissements sont amenés à déclarer les médicaments anticancéreux non-inscrits sur la liste en sus ou intra-GHS.

L’ATIH a publié la version « 2020 » de cette liste de médicaments (format Excel), applicable au 1er janvier 2020 et à déclarer dans le FICHCOMP « anticancéreux intraGHS » (voir notre article « Format du FICHCOMP anticancéreux intraGHS« ).

La liste comprend 3 926 codes indications pour 891 codes UCD différents.

Chaque indication est documentée. La DCI (dénomination commune internationale associée aux codes UCD est présente.

Nous avons ajouté ce nouveau référentiel au package R refpmsi:: des référentiels PMSI avec le libellé « anticancereux_intraghs ». Disponible à partir du 12 décembre 2020.

Source : Médicaments anticancéreux intra-GHS : Expérimentation article 51 (ATIH)

Imprimer cet article – Copyright © Lespmsi.com

Répartition des GHM par UM (code R)

Nous inaugurons une série d’articles « R et PMSI » dans laquelle nous publierons régulièrement des exemples de tableau et de graphiques d’analyse PMSI en R avec mise à disposition du code R commenté.

Sujet : répartition par UM de l’activité, classée par GHM

Commentaires :
Nous avons produit un jeu de données MCO minimal sous R, correspondant à une activité MCO réaliste avec l’essentiel des variables intéressantes (DP, actes CCAM, DAS, durée, GHM, âge, …) et des données correspondant à des codages standards 

Ces variables se retrouvent dans les fichiers rss ou rsa ou sont facilement calculables à partir de celles-ci.

Dans cet exemple, nous avons filtré sur les 10 premiers GHM en terme de nombre de RUM.

La répartition de l’activité classée dans un GHM donné est faite à partir du nombre de RUM.

Tri par ordre décroissant sur le nombre de RUM.

Les référentiels PMSI sont récupérés avec le package refpmsi::

L’analyse peut évidemment être étendue à tous les GHM représentés dans un périmètre d’analyse ou recalibrée à un autre niveau (RGHM, CMD, DA, GP, …) ou sur un regroupement particulier d’UM (par pôle ou par autorisation par exemple).

La mise en forme du tableau reprend l’essentiel des « Ten Guideline for Better Tables » de John Schwabish

Le tableau est produit avec le package gt::

Intérêts :
Visualiser l’adéquation des prises en charge avec les UM
Repérer les prises en charge très majoritairement (> 90%) réalisées dans un UM pour regarder les motifs de réalisations dans les autres UM (cas particuliers justifiés ?, problèmes de codage ?)
Adéquation prises en charge / autorisation

Code R du tableau

Imprimer cet article – Copyright © Lespmsi.com

refpmsi : nouveau package R de référentiels PMSI

Nous venons de mettre en ligne refpmsinouveau package R des référentiels PMSI.

refpmsi comprend à ce jour 70 référentiels PMSI et 2 fonctions basiques (refpmsi(), même nom que le package, pour charger un référentiel et liste_refpmsi() pour visualiser la liste des référentiels directement dans R Studio).

Exemples d’utilisation de refpmsi :
avec les référentiels CIM-10
avec les référentiels GHM

Le package est open source, librement utilisable par tous.

Nous mettrons à jour les référentiels et en ajouterons régulièrement de nouveau.

Pour être tenu au courant des mises à jour et des nouveaux référentiels disponibles dans refpmsi :

    Le package est ouvert à tous les référentiels PMSI.

    N’hésitez pas à en proposer en nous écrivant directement ici : nous les ajouterons volontiers à refpmsi pour qu’un maximum de DIM et d’établissements puissent les utiliser dans leurs analyses PMSI.

    Voir aussi :
    # le github de refpmsi.
    # article « 6 raisons d’utiliser R en analyse PMSI »
    # le package nomensland, autre package R de référentiels PMSI, développé et maintenu par Guillaume Pressiat, statisticien. Ce package propose en outre des listes de requêtes.

    Copyright © Lespmsi.com – Imprimer cet article

    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