Passer au contenu

CIM-10 FR à usage PMSI

Intitulé du référentiel : cim

Mise à jour : 18 avril 2025

Référentiel annualisé au sens PMSI (2019 à 2025)

Le chargement complet en local et/ou sa visualisation dans R Studio peuvent être longs. Il est recommandé de ne charger que la ou les années utile(s).

Variables

cim_code = code CIM-10
cim_libelle = libellé CIM-10 long
cim_tmco = type MCO/HAD :
0 Pas de restriction particulière (valeur par défaut)
1 Diagnostic interdit en DP et DR - Autorisé ailleurs
2 Diagnostic interdit en DP et DR - Cause externe de morbidité
3 Diagnostic interdit en DP, DR et DA - Catégories et sous-catégories non vides ou code père interdit
4 Diagnostic interdit en DP – Autorisé ailleurs
cim_tpsy = type PSY
0 Pas de restriction particulière (valeur par défaut)
1 Diagnostic interdit en DP (Code imprécis, Séquelles, Cause externe de morbidités…)
3 Diagnostic interdit en DP et DA - Catégories et sous-catégories non vides ou code père interdit (et supprimé)
cim_pssr = profil SMR
digit 1 : code autorisé en finalité principale de prise en charge ? (O : oui, N : non)
digit 2 : code autorisé en manifestation morbide principale ? (O : oui, N : non)
digit 3 : code autorisé en affection étiologique ? (O : oui, N : non)
digit 4 : code autorisé en DAS ? (O : oui, N : non)
cim_code_actif =
1 : code actif dans l’année PMSI
0 : code inactif dans l’année PMSI
cim_chapitre = chapitre CIM-10 du code CIM-10
cim_groupe = groupe de catégories dans lequel s’insère le code CIM-10
cim_categorie = 3 premières positions du code CIM-10
cim_precision = TRUE si pas de code fils plus précis, FALSE sinon
annee_pmsi = année PMSI

#> Rows: 300,145
#> Columns: 11
#> $ cim_code       <chr> "A00", "A000", "A001", "A009", "A01", "A010", "A011", "…
#> $ cim_tmco       <chr> "3", "0", "0", "0", "3", "0", "0", "0", "0", "0", "3", …
#> $ cim_pssr       <chr> "NNN", "OOO", "OOO", "OOO", "NNN", "OOO", "OOO", "OOO",…
#> $ cim_tpsy       <chr> "3", "0", "0", "0", "3", "0", "0", "0", "0", "0", "3", …
#> $ cim_libelle    <chr> "Choléra", "Choléra à Vibrio cholerae 01, biovar choler…
#> $ cim_code_actif <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
#> $ cim_categorie  <chr> "A00", "A00", "A00", "A00", "A01", "A01", "A01", "A01",…
#> $ cim_chapitre   <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", …
#> $ cim_groupe     <chr> "A00-A09", "A00-A09", "A00-A09", "A00-A09", "A00-A09", …
#> $ cim_precision  <lgl> FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,…
#> $ annee_pmsi     <chr> "2025", "2025", "2025", "2025", "2025", "2025", "2025",…

CIM Chapitre

Intitulé du référentiel : cim_chapitre

Mise à jour : 18 avril 2025

Référentiel non annualisé

Basé sur la dernière version de la CIM-10 FR à usage PMSI.

Variables

cim_chapitre_no = numéros des chapitres de la CIM-10
cim_chapitre_libelle = libellés des chapitres de la CIM-10

#> Rows: 22
#> Columns: 2
#> $ cim_chapitre_no      <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"…
#> $ cim_chapitre_libelle <chr> "Certaines maladies infectieuses et parasitaires"…

CIM Groupe

Intitulé du référentiel : cim_groupe

Mise à jour : 18 avril 2025

Référentiel non annualisé.

Basé sur la dernière version de la CIM-10 FR à usage PMSI.

Variables

cim_groupe = premier et dernier code CIM-10 de chaque groupe de la CIM-10
cim_groupe_libelle =libellés des groupes de la CIM-10

#> Rows: 212
#> Columns: 2
#> $ cim_groupe         <chr> "A00-A09", "A15-A19", "A20-A28", "A30-A49", "A50-A6…
#> $ cim_groupe_libelle <chr> "Maladies intestinales infectieuses", "Tuberculose"…

CIM Libellé

Intitulé du référentiel : cim_libelle

Mise à jour : 18 avril 2025

Tous les codes CIM-10 depuis 2019 avec la dernière version de leur libellé.

Référentiel non annualisé.

Variables

cim_code = code CIM-10
cim_libelle = version la plus récente du libellé CIM-10
cim_categorie = catégorie CIM-10 dont dépend le groupe de la CIM-10
cim_groupe = groupe CIM-10 dont dépend le groupe de la CIM-10
cim_chapitre = chapitre CIM-10 dont dépend le groupe de la CIM-10

#> Rows: 42,897
#> Columns: 5
#> $ cim_code      <chr> "A00", "A000", "A001", "A009", "A01", "A010", "A011", "A…
#> $ cim_libelle   <chr> "Choléra", "Choléra à Vibrio cholerae 01, biovar cholera…
#> $ cim_categorie <chr> "A00", "A00", "A00", "A00", "A01", "A01", "A01", "A01", …
#> $ cim_groupe    <chr> "A00-A09", "A00-A09", "A00-A09", "A00-A09", "A00-A09", "…
#> $ cim_chapitre  <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "…

CIM Précarité

Intitulé du référentiel : cim_precarite

Mise à jour : 28 novembre 2022

Référentiel non annualisé.

Variables

cim_code = code CIM-10 des codes de précarité
cim_lib = libellés des codes CIM-10 de précarité

#> Rows: 21
#> Columns: 2
#> $ cim_code <chr> "Z5500", "Z5508", "Z551", "Z590", "Z5910", "Z5911", "Z5912", …
#> $ cim_lib  <chr> "Analphabétisme et illettrisme", "Faibles niveaux éducatifs, …

CIM Polyhandicap lourd

Intitulé du référentiel : cim_polyhandicap

Mise à jour : 28 novembre 2022

Référentiel non annualisé.

Variables

cim_code = code CIM-10 des codes de polyhandicap lourd
cim_lib = libellés des codes CIM-10 de polyhandicap lourd
cim_polyhandicap_liste = numéro de la liste de polyhandicap lourd à laquelle est rattaché le code
1 = Déficiences mentales ou psychiatriques sévères
2 = Troubles moteurs
3 = Critères de mobilité réduite
4 = Restrictions extrêmes de l’autonomie
cim_polyhandicap_liste = libellés des listes de polyhandicap lourd

#> Rows: 202
#> Columns: 4
#> $ cim_code                   <chr> "F00002", "F00012", "F00022", "F00032", "F0…
#> $ cim_lib                    <chr> "Démence sévère de la maladie d'Alzheimer, …
#> $ cim_polyhandicap_liste     <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1"…
#> $ cim_polyhandicap_liste_lib <chr> "Déficiences mentales ou psychiatriques sév…

CMA MCO

Intitulé du référentiel : cma_mco

Mise à jour : 18 avril 2025

Référentiel annualisé au sens PMSI (2019 à 2025)

Source : Annexe 4 du volume 1 des manuels des GHM

Variables

cma_mco_code = code CIM-10 des CMA MCO
cma_mco_severite = niveau de sévérite (2, 3 ou 4) des CMA
cma_mco_liste_exclusion_dp = numéro de la liste d’exclusions entre diagnostic principal (DP) et CMA
cma_mco_liste_exclusion_racine = numéro de la liste d’exclusions entre racines de GHM et CMA
annee_pmsi = année PMSI MCO

#> Rows: 33,591
#> Columns: 5
#> $ cma_mco_code                   <chr> "A000", "A001", "A009", "A010", "A011",…
#> $ cma_mco_severite               <chr> "2", "2", "2", "2", "2", "2", "2", "2",…
#> $ cma_mco_liste_exclusion_dp     <chr> "674", "674", "674", "674", "674", "674…
#> $ annee_pmsi                     <chr> "2025", "2025", "2025", "2025", "2025",…
#> $ cma_mco_liste_exclusion_racine <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…

CMA SMR

Intitulé du référentiel : cma_ssr

Mise à jour : 18 avril 2025

Référentiel annualisé au sens PMSI (2019 à 2025)

Source : Annexe 6 du volume 1 des manuels des GME

Variables

cma_smr_code = code CIM-10 des CMA SMR
annee_pmsi = année PMSI SMR

#> Rows: 5,530
#> Columns: 2
#> $ cma_smr_code <chr> "A000", "A001", "A009", "A020", "A022", "A028", "A029", "…
#> $ annee_pmsi   <chr> "2025", "2025", "2025", "2025", "2025", "2025", "2025", "…

Dénombrement Base nationale MCO des diagnostics

Intitulé du référentiel : denombrement_mco_diagnostic

Mise à jour : 10 septembre 2024

Dernière version (2023)

Source

Variables

#> Rows: 20,794
#> Columns: 2
#> $ diagnostic              <chr> "A000", "A001", "A009", "A010", "A011", "A014"…
#> $ denombrement_diagnostic <int> 14, NA, 14, 147, NA, NA, 3621, 497, 218, 256, …

Exemples

Chargement de la CIM-10 2025

# Chargement de la CIM-10 de l'année 2025 dans la variable cim_2025
cim_2025 <- refpmsi::refpmsi(cim,2025)
glimpse(cim_2025)
#> Rows: 42,897
#> Columns: 11
#> $ cim_code       <chr> "A00", "A000", "A001", "A009", "A01", "A010", "A011", "…
#> $ cim_tmco       <chr> "3", "0", "0", "0", "3", "0", "0", "0", "0", "0", "3", …
#> $ cim_pssr       <chr> "NNN", "OOO", "OOO", "OOO", "NNN", "OOO", "OOO", "OOO",…
#> $ cim_tpsy       <chr> "3", "0", "0", "0", "3", "0", "0", "0", "0", "0", "3", …
#> $ cim_libelle    <chr> "Choléra", "Choléra à Vibrio cholerae 01, biovar choler…
#> $ cim_code_actif <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
#> $ cim_categorie  <chr> "A00", "A00", "A00", "A00", "A01", "A01", "A01", "A01",…
#> $ cim_chapitre   <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", …
#> $ cim_groupe     <chr> "A00-A09", "A00-A09", "A00-A09", "A00-A09", "A00-A09", …
#> $ cim_precision  <lgl> FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,…
#> $ annee_pmsi     <chr> "2025", "2025", "2025", "2025", "2025", "2025", "2025",…

Chargement de la CIM-10 des années 2023 et 2024

# Chargement de la CIM-10 des années 2023 et 2024
cim_2023_2024 <- refpmsi::refpmsi(cim,2023:2024)
head(cim_2023_2024)
#> # A tibble: 6 × 11
#>   cim_code cim_tmco cim_pssr cim_tpsy cim_libelle   cim_code_actif cim_categorie
#>   <chr>    <chr>    <chr>    <chr>    <chr>                  <int> <chr>        
#> 1 A00      3        NNNN     3        Choléra                    1 A00          
#> 2 A000     0        NOOO     0        Choléra à Vi…              1 A00          
#> 3 A001     0        NOOO     0        Choléra à Vi…              1 A00          
#> 4 A009     0        NOOO     0        Choléra, san…              1 A00          
#> 5 A01      3        NNNN     3        Fièvres typh…              1 A01          
#> 6 A010     0        NOOO     0        Fièvre typho…              1 A01          
#> # ℹ 4 more variables: cim_chapitre <chr>, cim_groupe <chr>,
#> #   cim_precision <lgl>, annee_pmsi <chr>

Génération du référentiel cim_libelle à partir du référentiel cim

# library(dplyr)

cim <- refpmsi::refpmsi(cim)

cim_libelle <- cim %>% 
  dplyr::select(cim_code,cim_libelle,annee_pmsi) %>%
  dplyr::group_by(cim_code) %>%
  # tri descendant selon les années pour chaque codage CIM
  dplyr::arrange(desc(annee_pmsi), by_groups = TRUE) %>% 
  # filtrage de la 1ere ligne de chaque regroupement CIM
  dplyr::filter(dplyr::row_number() == 1) %>%
  dplyr::ungroup() %>% 
  dplyr::select(cim_code,cim_libelle)
head(cim_libelle)
#> # A tibble: 6 × 2
#>   cim_code cim_libelle                                  
#>   <chr>    <chr>                                        
#> 1 A00      Choléra                                      
#> 2 A000     Choléra à Vibrio cholerae 01, biovar cholerae
#> 3 A001     Choléra à Vibrio cholerae 01, biovar El Tor  
#> 4 A009     Choléra, sans précision                      
#> 5 A01      Fièvres typhoïde et paratyphoïde             
#> 6 A010     Fièvre typhoïde

Association du libellé CIM-10 aux DP

Soit un mini jeu de données jeu_dp composé de 12 codes DP de RSS mono-RUM

#> # A tibble: 12 × 3
#>    no_rss dp_rss annee_rss
#>     <int> <chr>  <chr>    
#>  1      1 I5010  2023     
#>  2      2 Z491   2023     
#>  3      3 H251   2024     
#>  4      4 Z380   2023     
#>  5      5 S7200  2023     
#>  6      6 S0600  2024     
#>  7      7 R074   2023     
#>  8      8 J441   2023     
#>  9      9 K358   2023     
#> 10     10 R53+0  2024     
#> 11     11 S7200  2024     
#> 12     12 I5011  2023
# library(dplyr)

# chargement de la CIM-10 2023 et 2024
cim_2023_2024 <- refpmsi::refpmsi(cim,2023:2024)

# rattachement à chaque DP du libellé CIM-10 correspondant au DP et à son année PMSI
jeu_dp_libelle <- jeu_dp %>% 
  dplyr::left_join(cim_2023_2024 %>% dplyr::select(cim_code,cim_libelle,annee_pmsi),
                   join_by(dp_rss == cim_code, annee_rss == annee_pmsi))
jeu_dp_libelle
#> # A tibble: 12 × 4
#>    no_rss dp_rss annee_rss cim_libelle                                          
#>     <int> <chr>  <chr>     <chr>                                                
#>  1      1 I5010  2023      Insuffisance ventriculaire gauche, avec fraction d'é…
#>  2      2 Z491   2023      Dialyse extra-corporelle                             
#>  3      3 H251   2024      Cataracte sénile nucléaire                           
#>  4      4 Z380   2023      Enfant unique, né à l'hôpital                        
#>  5      5 S7200  2023      Fracture fermée du col du fémur                      
#>  6      6 S0600  2024      Commotion cérébrale, sans plaie intracrânienne       
#>  7      7 R074   2023      Douleur thoracique, sans précision                   
#>  8      8 J441   2023      Maladie pulmonaire obstructive chronique avec épisod…
#>  9      9 K358   2023      Appendicites aigües, autres et non précisées         
#> 10     10 R53+0  2024      Altération [baisse] de l'état général                
#> 11     11 S7200  2024      Fracture fermée du col du fémur                      
#> 12     12 I5011  2023      Insuffisance ventriculaire gauche, avec fraction d'é…

Case mix par chapitre CIM-10

Avec le jeu de données jeu_dp de l’exemple précédent.

# library(dplyr)

# chargement de la CIM-10 2023 et 2024
cim_2023_2024 <- refpmsi::refpmsi(cim,2023:2024)

# rattachement aux codes DP des libellés CIM-10 et des numéros de chapitre CIM-10 correspondant
dp_chapitre <- jeu_dp %>% 
  dplyr::left_join(cim_2023_2024 %>% dplyr::select(cim_code, cim_libelle, cim_chapitre, annee_pmsi),
                   join_by(dp_rss == cim_code, annee_rss == annee_pmsi))
dp_chapitre
#> # A tibble: 12 × 5
#>    no_rss dp_rss annee_rss cim_libelle                              cim_chapitre
#>     <int> <chr>  <chr>     <chr>                                    <chr>       
#>  1      1 I5010  2023      Insuffisance ventriculaire gauche, avec… 9           
#>  2      2 Z491   2023      Dialyse extra-corporelle                 21          
#>  3      3 H251   2024      Cataracte sénile nucléaire               7           
#>  4      4 Z380   2023      Enfant unique, né à l'hôpital            21          
#>  5      5 S7200  2023      Fracture fermée du col du fémur          19          
#>  6      6 S0600  2024      Commotion cérébrale, sans plaie intracr… 19          
#>  7      7 R074   2023      Douleur thoracique, sans précision       18          
#>  8      8 J441   2023      Maladie pulmonaire obstructive chroniqu… 10          
#>  9      9 K358   2023      Appendicites aigües, autres et non préc… 11          
#> 10     10 R53+0  2024      Altération [baisse] de l'état général    18          
#> 11     11 S7200  2024      Fracture fermée du col du fémur          19          
#> 12     12 I5011  2023      Insuffisance ventriculaire gauche, avec… 9

# chargement du référentiel "cim_chapitre" avec les 2 variables qui nous intéressent
cim_chapitre <- refpmsi::refpmsi("cim_chapitre") %>% dplyr::select(cim_chapitre_no,cim_chapitre_libelle)
cim_chapitre
#> # A tibble: 22 × 2
#>    cim_chapitre_no cim_chapitre_libelle                                         
#>    <chr>           <chr>                                                        
#>  1 1               Certaines maladies infectieuses et parasitaires              
#>  2 2               Tumeurs                                                      
#>  3 3               Maladies du sang et des organes hématopoïétiques et certains…
#>  4 4               Maladies endocriniennes, nutritionnelles et métaboliques     
#>  5 5               Troubles mentaux et du comportement                          
#>  6 6               Maladies du système nerveux                                  
#>  7 7               Maladies de l'œil et de ses annexes                          
#>  8 8               Maladies de l'oreille et de l'apophyse mastoïde              
#>  9 9               Maladies de l'appareil circulatoire                          
#> 10 10              Maladies de l'appareil respiratoire                          
#> # ℹ 12 more rows

casemix_chapitre <- dp_chapitre %>% 
    # par chapitre, calcul du nombre de DP, du nombre de DP différent et de la liste des DP
    dplyr::summarise(.by = c(cim_chapitre),
                     nb_dp = dplyr::n(),
                     nb_dp_different = dplyr::n_distinct(dp_rss),
                     liste_dp = paste0(dp_rss, collapse = ",")
                     ) %>% 
    # rattachement des libellés de chapitre CIM-10 via le référentiel "cim_chapitre"
    dplyr::left_join(cim_chapitre, join_by(cim_chapitre == cim_chapitre_no)) %>%
    # tri descendant sur le nombre de DP
    dplyr::arrange(desc(nb_dp)) %>% 
    # réorganisation de l'ordre des variables
    dplyr::select(cim_chapitre,cim_chapitre_libelle,nb_dp,nb_dp_different,liste_dp)
casemix_chapitre
#> # A tibble: 7 × 5
#>   cim_chapitre cim_chapitre_libelle               nb_dp nb_dp_different liste_dp
#>   <chr>        <chr>                              <int>           <int> <chr>   
#> 1 19           Lésions traumatiques, empoisonnem…     3               2 S7200,S…
#> 2 9            Maladies de l'appareil circulatoi…     2               2 I5010,I…
#> 3 21           Facteurs influant sur l'état de s…     2               2 Z491,Z3…
#> 4 18           Symptômes, signes et résultats an…     2               2 R074,R5…
#> 5 7            Maladies de l'œil et de ses annex…     1               1 H251    
#> 6 10           Maladies de l'appareil respiratoi…     1               1 J441    
#> 7 11           Maladies de l'appareil digestif        1               1 K358

Repérage des DAS interdits en DP et DR

Soit un mini jeu de données jeu_das composé de 10 DAS.

#> # A tibble: 10 × 3
#>    no_rss das   annee_rss
#>     <int> <chr> <chr>    
#>  1      1 Z370  2023     
#>  2      2 I10   2023     
#>  3      3 P040  2023     
#>  4      4 F1725 2024     
#>  5      5 G473  2023     
#>  6      6 W189  2023     
#>  7      7 R600  2024     
#>  8      8 N178  2024     
#>  9      9 B952  2023     
#> 10     10 D638  2023
# library(dplyr)

# chargement de la CIM-10 2023 et 2024
cim_2023_2024 <- refpmsi::refpmsi(cim,2023:2024)

das_interdit_dp_dr <- jeu_das %>% 
  # rattachement à chaque DAS du type MCO et du libellé CIM-10, correspondant à son année PMSI
  dplyr::left_join(cim_2023_2024 %>% dplyr::select(cim_code,cim_libelle,cim_tmco,annee_pmsi),
                   join_by(das == cim_code, annee_rss == annee_pmsi)) %>%
  # filtre sur les types MCO 1 "Diagnostic interdit en DP et DR - Autorisé ailleurs" 
  # et 2 "Diagnostic interdit en DP et DR - Cause externe de morbidité" 
  dplyr::filter(cim_tmco %in% c(1,2))
das_interdit_dp_dr
#> # A tibble: 3 × 5
#>   no_rss das   annee_rss cim_libelle                                    cim_tmco
#>    <int> <chr> <chr>     <chr>                                          <chr>   
#> 1      1 Z370  2023      Naissance unique, enfant vivant                1       
#> 2      6 W189  2023      Autre chute de plain-pied, lieu sans précision 2       
#> 3      9 B952  2023      Streptocoques, groupe D, et entérocoques, cau… 1

Listes des CMA MCO par niveau - sortie Excel

# library(dplyr)

cim_libelle <- refpmsi::refpmsi(cim_libelle)
cma_mco <- refpmsi::refpmsi(cma_mco)

# liste de 3 tibbles correspondant aux 3 listes de CMA par niveau
cma_mco_niveau <- cma_mco %>% 
  dplyr::filter(annee_pmsi == "2025") %>% 
  dplyr::select(cma_mco_code,cma_mco_severite) %>% 
  dplyr::left_join(cim_libelle %>% dplyr::select(cim_code,cim_libelle),
                   join_by(cma_mco_code == cim_code)) %>% 
  dplyr::group_split(cma_mco_severite) %>% 
  # nommage des listes
  setNames(unique(cma_mco$cma_mco_severite))

# génération des 3 excels correspondant aux 3 niveaux de cma mco dans le répertoire du projet
cma_mco_niveau %>% 
  purrr::iwalk(~ readr::write_excel_csv2(.x, stringr::str_c("cma_mco_niveau_",.y, ".csv")))

Comparaison CIM-10 2023 et 2022

# library(dplyr)

# Y-a-t-il des codes CIM-10 2023 avec un type mco (tmco) différent de leur tmco 2022 ?
cim <- refpmsi::refpmsi(cim)
cim_2022 <- cim %>% dplyr::filter(annee_pmsi == "2022") %>% dplyr::select(cim_code,cim_tmco)
cim_2023 <- cim %>% dplyr::filter(annee_pmsi == "2023") %>% dplyr::select(cim_code,cim_tmco_2023 = cim_tmco)
cim_2022 %>% 
  dplyr::inner_join(cim_2023, by = c("cim_code" = "cim_code")) %>% 
  dplyr::filter(cim_tmco != cim_tmco_2023)
# résultat : aucune différence

# Y-a-t-il des codes CIM-10 2023 avec un type ssr (pssr) différent de leur pssr 2022 ?
cim_2022 <- cim %>% dplyr::filter(annee_pmsi == "2022") %>% dplyr::select(cim_code,cim_pssr)
cim_2023 <- cim %>% dplyr::filter(annee_pmsi == "2023") %>% dplyr::select(cim_code,cim_pssr_2023 = cim_pssr)
cim_2022 %>% 
  dplyr::inner_join(cim_2023, join_by(cim_code == cim_code)) %>% 
  dplyr::filter(cim_pssr != cim_pssr_2023)
# résultat : Z515 devient autorisé en morbidité principale