Le package refpmsi comprend 9 référentiels liés aux GHM et GHS.

GHS DGF

Intitulé du référentiel : ghs_dgf

Mise à jour : 27 mai 2020.

Référentiel des GHS et GHM du secteur ex-DGF.

Ce référentiel, annualisé au sens du PMSI MCO, comprend 11 variables et 13 756 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

ghs = code GHS
ghm = code GHM
libelle = libellé du GHM
bb = borne basse
bh = borne haute
tarif_ghs = tarif du GHS
forfait_exb = forfait EXB (valeurs uniquement en 2016)
exb = tarif journalier EXB (EXtrême Bas)
exh = tarif journalier EXH (EXtrême Haut)
anpmsi = année PMSI de 2016 à 2020
ghs_intermediaire = code du GHS intermédiaire correspondant au GHS de la ligne s’il existe (valable à partir de 2020)

Sources

Arrêté tarifaire MCO (Ministère de la Santé - Arrêté 2020)

GHS OQN

Intitulé du référentiel : ghs_oqn

Mise à jour : 7 mai 2020.

Référentiel des GHS et GHM du secteur ex-OQN.

Ce référentiel, annualisé au sens du PMSI MCO, comprend 11 variables et 10 832 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

ghs = code GHS
ghm = code GHM
libelle = libellé du GHM
bb = borne basse
bh = borne haute
tarif_ghs = tarif du GHS
forfait_exb = forfait EXB (valeurs uniquement en 2016)
exb = tarif journalier EXB (EXtrême Bas)
exh = tarif journalier EXH (EXtrême Haut)
anpmsi = année PMSI de 2016 à 2020
ghs_intermediaire = code du GHS intermédiaire correspondant au GHS de la ligne s’il existe (valable à partir de 2020)

Sources

Arrêté tarifaire MCO (Ministère de la Santé - Arrêté 2020)

Regroupements GHM

Intitulé du référentiel : ghm_regroupement

Mise à jour : 7 mai 2020.

Référentiel des regroupements des GHM en DA (Domaine d’Activité), GA (Groupe d’Activité) et GP (Groupe de Planification).

Ce référentiel, annualisé au sens du PMSI MCO, comprend 12 variables et 12 964 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

ghm = code GHM
libelle_ghm = libellé du GHM
aso = code ASO du GHM (Activité de SOins)
da = code DA du GHM
libelle_da = libellé du DA
gp = code GP du GHM
libelle_gp = libellé du GP
ga = code GA du GHM
libelle_ga = libellé du GA
da_gp = concaténation des codes DA et GP du GHM
da_gp_ga = concaténation des codes DA, GP et GA du GHM
anpmsi = année PMSI de 2016 à 2020

Sources

Regroupements des GHM (ATIH)

Libellés des regroupements GHM

Intitulé du référentiel : ghm_regroupement_lib

Mise à jour : 7 mai 2020.

Libellés des DA (Domaine d’Activité), GA (Groupe d’Activité) et GP (Groupe de Planification).

Ce référentiel comprend 3 variables et 327 lignes.

Il n’est pas annualisé. Il comprend tous les DA, GA et GP depuis 2016.

Variables

type = type de regroupement GHM (da,ga,gp)
code = code regroupement
libelle = libellé du code regroupement

Sources

Regroupements des GHM (ATIH)

Regroupements des racines de GHM

Intitulé du référentiel : rghm_regroupement

Mise à jour : 7 mai 2020.

Référentiel des regroupements des GHM en DA (Domaine d’Activité), GA (Groupe d’Activité) et GP (Groupe de Planification).

Ce référentiel, annualisé au sens du PMSI MCO, comprend 12 variables et 3 340 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

rghm = code racine GHM
libelle_rghm = libellé de la racine GHM
aso = code ASO du GHM (Activité de SOins)
da = code DA de la racine GHM
libelle_da = libellé du DA
gp = code GP de la racine GHM
libelle_gp = libellé du GP
ga = code GA de la racine GHM
libelle_ga = libellé du GA
da_gp = concaténation des codes DA et GP de la racine GHM
da_gp_ga = concaténation des codes DA, GP et GA de la racine GHM
anpmsi = année PMSI de 2016 à 2020

OVALIDE - Table de référence GHMINFO_exDGF

Intitulé du référentiel : ovalide_ghminfo_dgf

Mise à jour : 7 mai 2020.

Informations issues des tables de référence OVALIDE MCO, GHMINFO_exDGF. Les informations redondantes avec d’autres référentiels de refpmsi:: ne sont pas reprises (exemples : cma, bb, bh, …)

Ce référentiel, annualisé au sens du PMSI MCO, comprend 11 variables et 10 374 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

ghm = code GHM
tghm = type du GHM (C : chirurgical; M : médical; X : autre)
dms = durée moyenne de séjour nationale
pctdc = taux de décès national
mage = age moyen
pctcourt = pourcentage de séjours courts (parmi les séjours de durée > 1 jour). Durée d’un séjour court = borne basse ou borne basse +1
pvalo = code GHS du GHS le plus valorisé dans les GHM multi-GHS
pctpvalo = taux de séjours aux GHS plus élevés
pctcma4 = pourcentage de séjours de niveau 4 par sous-cmd (sous-cmd = 3 premières positions des GHM)
pctautres = pourcentage de séjours avec un DA autres (.8)
anpmsi = année PMSI de 2016 à 2019

OVALIDE - Table de référence GHMINFO_exOQN

Intitulé du référentiel : ovalide_ghminfo_oqn

Mise à jour : 7 mai 2020.

Informations issues des tables de référence OVALIDE MCO, GHMINFO_exOQN. Les informations redondantes avec d’autres référentiels de refpmsi:: ne sont pas reprises (exemples : cma, bb, bh, …)

Ce référentiel, annualisé au sens du PMSI MCO, comprend 11 variables et 10 374 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

ghm = code GHM
tghm = type du GHM (C : chirurgical; M : médical; X : autre)
dms = durée moyenne de séjour nationale
pctdc = taux de décès national
mage = age moyen
pctcourt = pourcentage de séjours courts (parmi les séjours de durée > 1 jour). Durée d’un séjour court = borne basse ou borne basse +1
pvalo = code GHS du GHS le plus valorisé dans les GHM multi-GHS
pctpvalo = taux de séjours aux GHS plus élevés
pctcma4 = pourcentage de séjours de niveau 4 par sous-cmd (sous-cmd = 3 premières positions des GHM)
pctautres = pourcentage de séjours avec un DA autres (.8)
anpmsi = année PMSI de 2016 à 2019

OVALIDE - Table de référence RacineINFO_exDGF

Intitulé du référentiel : ovalide_racineinfo_dgf

Mise à jour : 7 mai 2020.

Informations issues des tables de référence OVALIDE MCO, RacineINFO_exDGF.

Ce référentiel, annualisé au sens du PMSI MCO, comprend 12 variables et 2 672 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

racine = code racine GHM
pctdc = taux de décès national
conf = confirmation de codage nécessaire pour la racine GHM (1 : OUI ; 0 : NON)
age2 = effet de l’âge pour les moins de 2 ans (1 : OUI ; 0 : NON)
age69 = effet de l’âge pour les plus de 69 / 79 ans (1-3 : OUI pour les plus de 69 ans ; 2-4-6 : OUI pour les plus de 79 ans ; 0 : NON)
pctcma2 = pourcentage de séjours de niveau 2 dans la racine GHM
pctcma3 = pourcentage de séjours de niveau 2 dans la racine GHM
pctexb = pourcentage de séjours en dessous de la borne basse
pctssacte = taux de séjours de 0 jours sans acte
app = racine apparentée à la racine GHM
pctapp = pourcentage de séjours dans la racine apparentée
anpmsi = année PMSI de 2016 à 2019

OVALIDE - Table de référence RacineINFO_exOQN

Intitulé du référentiel : ovalide_racineinfo_oqn

Mise à jour : 7 mai 2020.

Informations issues des tables de référence OVALIDE MCO, RacineINFO_exOQN.

Ce référentiel, annualisé au sens du PMSI MCO, comprend 12 variables et 2 672 lignes.

Il est recommandé de ne charger que les années PMSI utiles.

Variables

racine = code racine GHM
pctdc = taux de décès national
conf = confirmation de codage nécessaire pour la racine GHM (1 : OUI ; 0 : NON)
age2 = effet de l’âge pour les moins de 2 ans (1 : OUI ; 0 : NON)
age69 = effet de l’âge pour les plus de 69 / 79 ans (1-3 : OUI pour les plus de 69 ans ; 2-4-6 : OUI pour les plus de 79 ans ; 0 : NON)
pctcma2 = pourcentage de séjours de niveau 2 dans la racine GHM
pctcma3 = pourcentage de séjours de niveau 2 dans la racine GHM
pctexb = pourcentage de séjours en dessous de la borne basse
pctssacte = taux de séjours de 0 jours sans acte
app = racine apparentée à la racine GHM
pctapp = pourcentage de séjours dans la racine apparentée
anpmsi = année PMSI de 2016 à 2019

Exemples

Chargement du référentiel des GHS DGF des années 2019 et 2020

# Chargement du référentiel des GHS-GHM DGF des années 2019 et 2020
ghs_2019_2020 <- refpmsi::refpmsi("ghs_dgf",2019:2020)
ghs_2019_2020
#> # A tibble: 5,681 x 11
#>    ghs   ghm   libelle    bb    bh tarif_ghs forfait_exb   exb   exh anpmsi
#>    <chr> <chr> <chr>   <int> <int>     <dbl>       <dbl> <dbl> <dbl> <chr> 
#>  1 22    01C0~ Cranio~     0    11     3460.           0    0  102.  2020  
#>  2 23    01C0~ Cranio~     0    19     6143.           0    0   84.6 2020  
#>  3 24    01C0~ Cranio~     0    64    11085.           0    0   65.6 2020  
#>  4 25    01C0~ Cranio~    12   124    15021.           0  375. 278.  2020  
#>  5 65    01C0~ Cranio~     0    12    11979.           0    0  125.  2020  
#>  6 26    01C0~ Cranio~     0    12     5421.           0    0  125.  2020  
#>  7 66    01C0~ Cranio~     0    20    15597.           0    0   94.7 2020  
#>  8 27    01C0~ Cranio~     0    20     9039.           0    0   94.7 2020  
#>  9 28    01C0~ Cranio~     0    43    13051.           0    0   65.2 2020  
#> 10 67    01C0~ Cranio~     0    43    19609.           0    0   65.2 2020  
#> # ... with 5,671 more rows, and 1 more variable: ghs_intermediaire <chr>

Association du libellé GHM aux GHM

Soit le jeu de données artificiel jeu_ghm composé de 15 RUM représentant 10 séjours.

#> # A tibble: 15 x 7
#>    no_rum no_rss ghm    dp_rum    jp ghs   annee_rss
#>     <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>    
#>  1      1      1 06K02Z D122       0 2119  2020     
#>  2      1      2 08C321 S8220      3 2808  2019     
#>  3      1      3 04M053 J181      10 1144  2019     
#>  4      1      4 05M092 I5001      7 1754  2020     
#>  5      1      5 06M12T R104       0 2200  2020     
#>  6      1      6 04M053 J181       0 1144  2019     
#>  7      1      7 20Z041 F102      29 7267  2019     
#>  8      1      8 08K041 S730       2 3033  2020     
#>  9      1      9 01M201 S0600      3 268   2019     
#> 10      1     10 06M12T R104       0 2206  2020     
#> 11      1     11 05M092 I5009      2 1754  2019     
#> 12      2     11 05M092 I472       1 1754  2019     
#> 13      1     12 04M053 J189       2 1144  2020     
#> 14      2     12 04M053 J960      11 1144  2020     
#> 15      3     12 04M053 J189      11 1144  2020
# chargement des GHM DGF 2019 et 2020
ghm_2019_2020 <- refpmsi::refpmsi("ghs_dgf",2019:2020)

# association à chaque GHM de son libellé correspondant à l'année PMSI de son séjour et à son GHS associé
jeu_ghm_libelle <- jeu_ghm %>%
  dplyr::left_join(ghm_2019_2020 %>%
                   dplyr::select(ghs,libelle,anpmsi),
                   by = c("ghs" = "ghs", "annee_rss" = "anpmsi"))
jeu_ghm_libelle
#> # A tibble: 15 x 8
#>    no_rum no_rss ghm    dp_rum    jp ghs   annee_rss libelle               
#>     <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>     <chr>                 
#>  1      1      1 06K02Z D122       0 2119  2020      Endoscopies digestive~
#>  2      1      2 08C321 S8220      3 2808  2019      Interventions sur la ~
#>  3      1      3 04M053 J181      10 1144  2019      Pneumonies et pleurés~
#>  4      1      4 05M092 I5001      7 1754  2020      Insuffisances cardiaq~
#>  5      1      5 06M12T R104       0 2200  2020      Douleurs abdominales,~
#>  6      1      6 04M053 J181       0 1144  2019      Pneumonies et pleurés~
#>  7      1      7 20Z041 F102      29 7267  2019      Ethylisme avec dépend~
#>  8      1      8 08K041 S730       2 3033  2020      Tractions continues e~
#>  9      1      9 01M201 S0600      3 268   2019      Commotions cérébrales~
#> 10      1     10 06M12T R104       0 2206  2020      Douleurs abdominales,~
#> 11      1     11 05M092 I5009      2 1754  2019      Insuffisances cardiaq~
#> 12      2     11 05M092 I472       1 1754  2019      Insuffisances cardiaq~
#> 13      1     12 04M053 J189       2 1144  2020      Pneumonies et pleurés~
#> 14      2     12 04M053 J960      11 1144  2020      Pneumonies et pleurés~
#> 15      3     12 04M053 J189      11 1144  2020      Pneumonies et pleurés~

Association DMS nationale aux séjours

Dans un premier temps, on rattache les DMS nationales issues d’OVALIDE MCO à chaque séjour.

Puis on compare la DS des séjours avec ces DMS nationales pour les séjours pour lesquels cela a un sens (séjours avec une DS > 0).

# chargement des DMS nationales correspondant à l'année 2019
## Au 20 mai 2020, l'ATIH n'a pas encore publié les tables OVALIDE MCO 2020 : on utilise les DMS nationales 2019 pour les séjours 2020.
dms_nat <- refpmsi::refpmsi("ovalide_ghminfo_dgf",2019) %>%
  dplyr::select(ghm,dms,anpmsi)

jeu_ghm_dms <- jeu_ghm %>%
  dplyr::left_join(dms_nat, by = c("ghm" = "ghm")) %>%
# création variable ecart_dms
## variable jp est un integer, dms est un double : le résultat sera un double
# création variable ratio_ecart_dms : pour les cas jp = 0, ce ratio est NA
  dplyr::mutate(ecart_dms = jp - dms,
                ratio_ecart_dms = ifelse(jp != 0L, round(jp/dms,2), NA_real_))
jeu_ghm_dms %>% print(n = 15, width = Inf)
#> # A tibble: 15 x 11
#>    no_rum no_rss ghm    dp_rum    jp ghs   annee_rss    dms anpmsi
#>     <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>      <dbl> <chr> 
#>  1      1      1 06K02Z D122       0 2119  2020       0.124 2019  
#>  2      1      2 08C321 S8220      3 2808  2019       3.19  2019  
#>  3      1      3 04M053 J181      10 1144  2019      11.3   2019  
#>  4      1      4 05M092 I5001      7 1754  2020       8.04  2019  
#>  5      1      5 06M12T R104       0 2200  2020       0.582 2019  
#>  6      1      6 04M053 J181       0 1144  2019      11.3   2019  
#>  7      1      7 20Z041 F102      29 7267  2019       9.07  2019  
#>  8      1      8 08K041 S730       2 3033  2020       5.14  2019  
#>  9      1      9 01M201 S0600      3 268   2019       0.694 2019  
#> 10      1     10 06M12T R104       0 2206  2020       0.582 2019  
#> 11      1     11 05M092 I5009      2 1754  2019       8.04  2019  
#> 12      2     11 05M092 I472       1 1754  2019       8.04  2019  
#> 13      1     12 04M053 J189       2 1144  2020      11.3   2019  
#> 14      2     12 04M053 J960      11 1144  2020      11.3   2019  
#> 15      3     12 04M053 J189      11 1144  2020      11.3   2019  
#>    ecart_dms ratio_ecart_dms
#>        <dbl>           <dbl>
#>  1    -0.124           NA   
#>  2    -0.195            0.94
#>  3    -1.30             0.89
#>  4    -1.04             0.87
#>  5    -0.582           NA   
#>  6   -11.3             NA   
#>  7    19.9              3.2 
#>  8    -3.14             0.39
#>  9     2.31             4.32
#> 10    -0.582           NA   
#> 11    -6.04             0.25
#> 12    -7.04             0.12
#> 13    -9.30             0.18
#> 14    -0.296            0.97
#> 15    -0.296            0.97

Enfin, on peut filtrer les séjours qui ont une DS >= 2,5 x la DMS nationale de leur GHM pour repérer des séjours, à priori, particulièrement longs.

sej_2.5_dms <- jeu_ghm_dms %>%
  dplyr::filter(ratio_ecart_dms >= 2.5)
sej_2.5_dms %>% print(width = Inf)
#> # A tibble: 2 x 11
#>   no_rum no_rss ghm    dp_rum    jp ghs   annee_rss   dms anpmsi ecart_dms
#>    <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>     <dbl> <chr>      <dbl>
#> 1      1      7 20Z041 F102      29 7267  2019      9.07  2019       19.9 
#> 2      1      9 01M201 S0600      3 268   2019      0.694 2019        2.31
#>   ratio_ecart_dms
#>             <dbl>
#> 1            3.2 
#> 2            4.32

Case mix en DA (Domaine d’Activité) des séjours

case_mix_da <- jeu_ghm %>%
  # rattachement des codes DA aux séjours
  dplyr::left_join(refpmsi::refpmsi("ghm_regroupement",2019:2020) %>%
  dplyr::select(ghm,da,libelle_da,anpmsi),
                by = c("ghm"= "ghm", "annee_rss" = "anpmsi")) %>%
  # regroupement en DA
  group_by(da,libelle_da) %>%
  # calcul du nombre de RUM par DA et du nombre de séjours par DA
  dplyr::summarise(n_rum = n(),
                   n_sej = dplyr::n_distinct(no_rss))
case_mix_da
#> # A tibble: 6 x 4
#> # Groups:   da [6]
#>   da    libelle_da                                              n_rum n_sej
#>   <chr> <chr>                                                   <int> <int>
#> 1 D01   Digestif                                                    3     3
#> 2 D02   Orthopédie traumatologie                                    2     2
#> 3 D05   Système nerveux (hors cathétérismes vasculaires diagno~     1     1
#> 4 D07   Cardio-vasculaire (hors cathétérismes vasculaires diag~     3     2
#> 5 D09   Pneumologie                                                 5     3
#> 6 D23   Toxicologie, Intoxications, Alcool                          1     1

Séjours et gradation des prises en charge ambulatoires

Dans un premier temps, on repère les séjours avec un GHS plein susceptible d’être concerné, en indiquant le GHS intermédiaire correspondant.

sej_ghs_plein_intermediaire <- jeu_ghm %>%
  # filtre sur l'année 2020, seule concernée dans notre data set
  dplyr::filter(annee_rss == 2020) %>%
  dplyr::left_join(refpmsi::refpmsi("ghs_dgf",2020) %>%
                     dplyr::select(ghs,ghs_intermediaire,anpmsi),
                   by = c("ghs" = "ghs", "annee_rss" = "anpmsi")) %>%
  # filtre sur les séjours pour lesquels le GHS a un GHS intermédiaire associé
  dplyr::filter(!is.na(ghs_intermediaire)) %>%
  # filtre sur les séjours ambulatoire en M ou Z
  dplyr::filter(jp == 0L,stringr::str_sub(ghm,3,3) %in% c("M","Z"))
sej_ghs_plein_intermediaire
#> # A tibble: 1 x 8
#>   no_rum no_rss ghm    dp_rum    jp ghs   annee_rss ghs_intermediaire
#>    <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>     <chr>            
#> 1      1      5 06M12T R104       0 2200  2020      2206

Dans un second temps, on repère les séjours dégradés via leur GHS intermédiaire.

sej_ghs_intermediaire <- jeu_ghm %>%
  dplyr::filter(annee_rss == 2020) %>%
  # dplyr::inner_join ne va retenir que les séjours pour lesquels le GHS est un GHS intermédiaire
  dplyr::inner_join(refpmsi::refpmsi("ghs_dgf",2020) %>%
                     dplyr::select(ghs_intermediaire,anpmsi),
                   by = c("ghs" = "ghs_intermediaire", "annee_rss" = "anpmsi")) %>%
sej_ghs_intermediaire
#> # A tibble: 1 x 7
#>   no_rum no_rss ghm    dp_rum    jp ghs   annee_rss
#>    <dbl>  <dbl> <chr>  <chr>  <int> <chr> <chr>    
#> 1      1     10 06M12T R104       0 2206  2020