knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(dplyr) library(stringr) library(refpmsi) library(tidyr)
Intitulé du référentiel : cmd
Mise à jour : 11 avril 2023
Référentiel des libellés des CMD (Catégories Majeures de Diagnostics).
Référentiel non annualisé.
refpmsi::refpmsi("cmd") %>% dplyr::glimpse()
Intitulé du référentiel : ghm_lib
Mise à jour : 11 avril 2023
Les libellés des GHM depuis 2018 dans leur dernière version.
Référentiel non annualisé.
ghm = code GHM
ghm_lib = version la plus récente du libellé GHM
refpmsi::refpmsi("ghm_lib") %>% dplyr::glimpse()
Intitulé du référentiel : ghs_public
Mise à jour : 11 avril 2023
Référentiel des GHS et GHM du secteur public (ex-DGF).
Référentiel annualisé au sens du PMSI MCO (2018 à 2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
ghs = code GHS
ghm = code GHM
ghm_lib = libellé du GHM
ghm_bb = borne basse du GHM
ghm_bh = borne haute du GHM
ghs_tarif = tarif du GHS
ghs_exb = tarif journalier EXB (EXtrême Bas)
ghs_exh = tarif journalier EXH (EXtrême Haut)
annee_pmsi = année PMSI
refpmsi::refpmsi("ghs_public") %>% dplyr::glimpse()
Intitulé du référentiel : ghs_prive
Mise à jour : 11 avril 2023
Référentiel des GHS et GHM du secteur privé (ex-OQN).
Référentiel annualisé au sens du PMSI MCO (2018 à 2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
ghs = code GHS
ghm = code GHM
ghm_lib = libellé du GHM
ghm_bb = borne basse du GHM
ghm_bh = borne haute du GHM
ghs_tarif = tarif du GHS
ghs_exb = tarif journalier EXB (EXtrême Bas)
ghs_exh = tarif journalier EXH (EXtrême Haut)
annee_pmsi = année PMSI
refpmsi::refpmsi("ghs_prive") %>% dplyr::glimpse()
Intitulé du référentiel : ghm_intermediaire
Mise à jour : 11 avril 2023
Référentiel des GHM avec GHS intermédiaire
Référentiel annualisé au sens PMSI MCO (2020-2023)
refpmsi::refpmsi("ghm_intermediaire") %>% dplyr::glimpse()
Intitulé du référentiel : ghm_uhcd
Mise à jour : 11 avril 2023
Référentiel annualisé au sens PMSI MCO (2021-2023)
Pour chaque GHS UHCD et par année PMSI MCO, la liste des GHM associés
refpmsi::refpmsi("ghs_uhcd") %>% dplyr::glimpse()
Intitulé du référentiel : ghm_regroupement
Mise à jour : 28 novembre 2022
Référentiel des regroupements des GHM en DA (Domaine d'Activité), GA (Groupe d'Activité) et GP (Groupe de Planification).
Référentiel annualisé au sens du PMSI MCO (2018-2022).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
ghm = code GHM
ghm_lib = libellé du GHM
aso = code ASO du GHM (Activité de SOins)
da = code DA du GHM
da_lib = libellé du DA
gp = code GP du GHM
gp_lib = libellé du GP
ga = code GA du GHM
ga_lib = 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
annee_pmsi = année PMSI
refpmsi::refpmsi("ghm_regroupement") %>% dplyr::glimpse()
Intitulé du référentiel : ghm_regroupement_lib
Mise à jour : 28 novembre 2022
Libellés de tous les DA (Domaine d'Activité), GA (Groupe d'Activité) et GP (Groupe de Planification) depuis 2018.
Référentiel non annualisé.
ghm_regroupement = type de regroupement GHM (da,ga,gp)
ghm_regroupement_code = code regroupement
ghm_regroupement_lib = libellé du code regroupement
refpmsi::refpmsi("ghm_regroupement_lib") %>% dplyr::glimpse()
Intitulé du référentiel : rghm_regroupement
Mise à jour : 28 novembre 2022
Référentiel des regroupements des racines de GHM en DA (Domaine d'Activité), GA (Groupe d'Activité) et GP (Groupe de Planification).
Référentiel annualisé au sens du PMSI MCO (2018-2022).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
rghm = code racine GHM
rghm_lib = libellé de la racine GHM
aso = code ASO de la racine GHM (Activité de SOins)
da = code DA de la racine GHM
da_lib = libellé du DA
gp = code GP de la racine GHM
gp_lib = libellé du GP
ga = code GA de la racine GHM
ga_lib = 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
annee_pmsi = année PMSI
refpmsi::refpmsi("rghm_regroupement") %>% dplyr::glimpse()
Intitulé du référentiel : ovalide_ghminfo_dgf
Mise à jour : 21 juin 2023
Informations issues de la table GHMINFO_exDGF OVALIDE MCO. Les informations redondantes avec d'autres référentiels de refpmsi::
ne sont pas reprises (exemples : cma, bb, bh, ...)
Référentiel annualisé au sens du PMSI MCO (2018-2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
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)
annee_pmsi = année PMSI
refpmsi::refpmsi("ovalide_ghminfo_dgf") %>% dplyr::glimpse()
Intitulé du référentiel : ovalide_ghminfo_oqn
Mise à jour : 21 juin 2023
Informations issues de la table OVALIDE MCO, GHMINFO_exOQN. Les informations redondantes avec d'autres référentiels de refpmsi::
ne sont pas reprises (exemples : cma, bb, bh, ...)
Référentiel annualisé au sens du PMSI MCO (2018-2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
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)
annee_pmsi = année PMSI
refpmsi::refpmsi("ovalide_ghminfo_oqn") %>% dplyr::glimpse()
Intitulé du référentiel : ovalide_racineinfo_dgf
Mise à jour : 21 juin 2023
Informations issues de la table OVALIDE MCO, RacineINFO_exDGF.
Référentiel annualisé au sens du PMSI MCO (2018-2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
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
annee_pmsi = année PMSI
refpmsi::refpmsi("ovalide_racineinfo_dgf") %>% dplyr::glimpse()
Intitulé du référentiel : ovalide_racineinfo_oqn
Mise à jour : 21 juin 2023
Informations issues de la table OVALIDE MCO, RacineINFO_exOQN.
Référentiel annualisé au sens du PMSI MCO (2018-2023).
Il est recommandé de ne charger que la ou les année(s) PMSI utile(s).
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
annee_pmsi = année PMSI
refpmsi::refpmsi("ovalide_racineinfo_oqn") %>% dplyr::glimpse()
Intitulé du référentiel : mco_fg_listes
Mise à jour : 8 octobre 2021
Année 2021.
mco_fg_liste_code = code des listes
mco_fg_liste_lib = libellé des listes
mco_fg_liste_type = D pour les listes en D et A pour les listes en A
mco_fg_cmd = CMD dans laquelle la liste participe au groupage des séjours
mco_fg_code = code CIM-10 (liste en D) ou code acte CCAM PMSI (liste en A)
mco_fg_ccam_pmsi_extension = extension PMSI des actes CCAM PMSI
mco_fg_ccam_pmsi_phase = phase des actes CCAM PMSI
annee_pmsi = année PMSI
refpmsi::refpmsi("mco_fg_listes") %>% dplyr::glimpse()
# Chargement du référentiel des GHS-GHM Public des années 2022 et 2023 ghs_2022_2023 <- refpmsi::refpmsi("ghs_public",2022:2023) ghs_2022_2023
Soit un jeu de données jeu_ghm
composé de 17 RUM correspondant à 14 séjours.
jeu_ghm <- tibble::tibble(no_rum = c(rep(1L,10L),1,2,1,2,3,1,1), no_rss = c(seq(1L:10L),11,11,12,12,12,13,14), ghm = c("06K02Z","08C321","04M053","05M092", "06M12T","04M053","20Z041", "08K041","01M201","06M12T","05M092","05M092", "04M053","04M053","04M053","16M11T","16M11T"), dp_rum = c("D122","S8220","J181","I5001", "R104","J181","F102","S730","S0600", "R104","I5009","I472","J189","J960","J189","D508","D509"), jp = c(0L,3L,10L,7L,0L,0L,29L,2L,3L,0L, 2L,1L,2L,11L,11L,0L,0L), ghs = c("2119","2808","1144","1754","2200", "1144","7267","3033","268", "2206","1754","1754","1144","1144","1144","6186","6118"), annee_rss = c("2020","2019","2019","2020","2020", "2019","2019","2020","2019", "2020","2019","2019","2020","2020","2020","2020","2020")) jeu_ghm
# chargement des GHM Public 2019 et 2020 ghm_2019_2020 <- refpmsi::refpmsi("ghs_public", 2019:2020) jeu_ghm_libelle <- jeu_ghm %>% # rattachement des libellés aux GHM via la jointure (ghs, annee_pmsi) dplyr::left_join(ghm_2019_2020 %>% dplyr::select(ghs,ghm_lib,annee_pmsi), by = c("ghs" = "ghs", "annee_rss" = "annee_pmsi")) jeu_ghm_libelle
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 des années PMSI 2019 et 2020 dms_nat <- refpmsi::refpmsi("ovalide_ghminfo_dgf", 2019:2020) %>% dplyr::select(ghm,dms,annee_pmsi) dms_nat jeu_ghm_dms <- jeu_ghm %>% # rattachement des DMS OVALIDE dplyr::left_join(dms_nat, by = c("ghm" = "ghm", "annee_rss" = "annee_pmsi")) %>% # nouvelle variable ecart_dms # nouvelle variable ratio_ecart_dms. = NA pour les cas jp = 0 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)
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)
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,da_lib,annee_pmsi), by = c("ghm"= "ghm", "annee_rss" = "annee_pmsi")) %>% # regroupement en DA group_by(da,da_lib) %>% # calcul du nombre de RUM et du nombre de séjours par DA dplyr::summarise(n_rum = dplyr::n(), n_sej = dplyr::n_distinct(no_rss), .groups = "drop") case_mix_da
Dans un premier temps, on repère les séjours groupés dans un GHM concerné par la gradation des prises en charge ambulatoires et on rattache le GHS plein et le GHS intermédiaire.
sej_ghm_gradation_ambulatoire <- jeu_ghm %>% # filtre sur l'année 2020, seule année concernée dans notre data set dplyr::filter(annee_rss == 2020) %>% # rattachement GHS plein et GHS intermédiaire pour les GHM concernés dplyr::left_join(refpmsi::refpmsi("ghm_intermediaire"), by = c("ghm" = "ghm_intermediaire", "annee_rss" = "annee_pmsi")) %>% # filtre sur les séjours concernés dplyr::filter(!is.na(ghs_plein)) sej_ghm_gradation_ambulatoire
Dans un second temps, on repère les seuls séjours classés dans un GHS intermédiaire
sej_ghs_intermediaire <- sej_ghm_gradation_ambulatoire %>% # filtre sur les séjours dont le GHS = le GHS intermédiaire associé dplyr::filter(ghs == ghs_intermediaire) sej_ghs_intermediaire
# Chargement du référentiel des listes D et A de l'algorithme de groupage MCO V2021 mco_fg_listes <- refpmsi::refpmsi("mco_fg_listes", 2021) mco_fg_listes
On choisit d'extraire les codes CIM-10 de la liste D-0401 ""Bronchite ou asthme"
Le DP d'un séjour appartenant à cette liste amène le séjour concerné en racine 04M03 "Bronchites et asthme, âge supérieur à 17 ans" ou 04M02 "Bronchites et asthme, âge inférieur à 18 ans"
liste_D_0401 <- mco_fg_listes %>% # on ne garde que des variables qui nous intéressent pour une liste en D dplyr::select(mco_fg_liste_code, mco_fg_liste_lib, mco_fg_cmd, mco_fg_code) %>% dplyr::filter(mco_fg_liste_code == "D-0401") liste_D_0401
Script similaire pour extraire les actes CCAM PMSI d'une liste A.
On choisit d'extraire les diags d'entrée de la CMD 01
# on a chargé le référentiel mco_fg_listes dans la variable mco_fg_listes diag_cmd_01 <- mco_fg_listes %>% dplyr::filter(mco_fg_cmd == "01", mco_fg_liste_type == "D") %>% # argument.keep_all = TRUE pour garder les colonnes dplyr::distinct(mco_fg_code, .keep_all = TRUE) %>% # colonnes qui nous intéressent + réordonnancement dplyr::select(mco_fg_code, mco_fg_cmd, mco_fg_liste_code, mco_fg_liste_lib) diag_cmd_01
Niveau R avancé
Soit un mini-jeu de données de 12 séjours avec le DP, le GHM et l'année PMSI du séjour
jeu_dp_ghm <- tibble::tibble(no_rss = seq(1:12), dp_rss = c("I5010","S7220","H269","Z380", "S7200","S0600","R074","J441", "K358","R53+0","S7200","I5011"), ghm_rss = c("05M091","08M041","02C05J","15M05A", "08C471","01M201","05M13T","04M202", "06C091","23M20Z","08C471","05M092"), annee_rss = sample(c("2020","2021"),12,replace = TRUE)) jeu_dp_ghm
1ere étape : construire le tibble des diagnostics d'entrée de toutes les CMD concernées par une introduction de groupage par le DP
# on a chargé le référentiel mco_fg_listes dans la variable mco_fg_listes diag_cmd <- mco_fg_listes %>% dplyr::filter(mco_fg_liste_type == "D") %>% # nest_by = group_by + summarise + rowwise (expérimental dplyr 1.0.7) dplyr::nest_by(mco_fg_cmd, .key = "diag_entree") %>% # dégroupage du rowwise généré par nest_by dplyr::ungroup() %>% # traitement de la list_column des diags d'entrée dplyr::mutate(diag_entree = purrr::map(diag_entree, ~ dplyr::distinct(.x, mco_fg_code, .keep_all = TRUE) %>% dplyr::select(c("mco_fg_code", "mco_fg_liste_code", "mco_fg_liste_lib")))) diag_cmd
2eme étape : rattachement du libellé de la liste D correspondant au DP pour la CMD du séjour
jeu_dp_ghm_liste_D <- jeu_dp_ghm %>% # extraction de la CMD du séjour dplyr::mutate(cmd_rss = stringr::str_sub(ghm_rss,1,2)) %>% dplyr::left_join(diag_cmd %>% tidyr::unnest(diag_entree), # jonction via dp et cmd. Rappel : plusieurs listes D possibles pour un DP by = c("dp_rss" = "mco_fg_code", "cmd_rss" = "mco_fg_cmd" )) jeu_dp_ghm_liste_D
Remarque : pas de libellé de liste D pour le DP Z380 "Enfant unique, né à l'hôpital" d'un séjour classé dans la CMD 15 "Nouveau-nés, prématurés et affections de la période périnatale" car, dans cette CMD, le groupage ne commence pas par le DP.
Soit un jeu de données jeu_ghm
composé de 17 RUM correspondant à 14 séjours.
library(dplyr) library(refpmsi) ghm_regroupement <- refpmsi::refpmsi("ghm_regroupement")
Manuel de groupage GHM 2023 - Volume 1 (ATIH)
Arrêté tarifaire MCO 2023 (Ministère de la Santé - Arrêté 2023)
Arrêté tarifaire MCO 2022 (Ministère de la Santé - Arrêté 2022)
Arrêté tarifaire MCO 2021 (Ministère de la Santé - Arrêté 2021)
Arrêté tarifaire MCO 2020 (Ministère de la Santé - Arrêté 2020)
Arrêté tarifaire MCO 2019 (Ministère de la Santé - Arrêté 2019)
Arrêté tarifaire MCO 2018 (Ministère de la Santé - Arrêté 2018)
Regroupements des GHM et RGHM 2022 (ATIH)
OVALIDE MCO - Tables de référence 2022 (ATIH)
Données du volume 2 du manuel des GHS 2023 (ATIH)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.