• Formation R et PMSI MCO

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