library(pmeasyr) library(dplyr, warn.conflicts = F)
Il faut au moins disposer des rsa et des données anohosp. Pour valoriser les suppléments, les tables porg, pie et diap sont aussi nécessaires.
Deux possibilités pour préparer les données rsa et ano afin de calculer la valorisation : les importer spécifiquement, ou les collecter depuis une base de données, voir pour cela éventuellement les fonctions autour des bases de données dans pmeasyr
.
Ici, on utilise les fonctions vvr_rsa
et vvr_ano_mco
pour importer les données depuis les fichiers bruts du out et sélectionner les variables dont nous avons besoins.
library(pmeasyr) noyau_pmeasyr( finess = '750100042', annee = 2018, mois = 12, path = '~/Documents/data/mco', progress = FALSE, lib = FALSE, tolower_names = TRUE ) -> p adezip(p, type = "out") vrsa <- vvr_rsa(p) vano <- vvr_ano_mco(p)
Cela produit deux tables vrsa
et vano
.
Autre possibilité donc, le recours à une base de données où les tables préexistent, ici, on les collecte en ne sélectionnant que les variables utiles.
library(MonetDBLite) dbdir <- "~/Documents/data/monetdb" con <- src_monetdblite(dbdir) vrsa <- vvr_rsa(con, 18) vano <- vvr_ano_mco(con, 18)
Cela produit de manière identique deux tables vrsa
et vano
.
Pour valoriser les séjours, nous avons besoin des tarifs officiels. Comme d'autres tables référentiels classiques du PMSI, on peut trouver ces informations tarifaires pour les établissements ex-DGF dans le package nomensland.
# devtools::install_github('GuillaumePressiat/nomensland') library(nomensland)
Il reste possible d'utiliser des tables tarifs et suppléments provenant d'une autre source, mais cela nécessite d'avoir les mêmes noms de colonnes que dans les tables de nomensland.
Charger ce package donne accès aux fonctions get_table
et get_dictionnaire_tables
.
Nous ne tenons pas compte de la rubrique "minoration forfaitaire liste en SUS" volontairement car cela nécessite de maintenir la liste des MO en SUS pour 2016 et 2017.
Pour les RSA transmis hors période (année précédente, mois d'après, souvent causés par des dossiers à cheval), on force le groupage en erreur comme epmsi le fait. C'est fait avec la fonction vvr_rsa_hors_periode
:
vrsa <- vrsa %>% vvr_rsa_hors_periode(as.character(p$annee), stringr::str_pad(p$mois, 2, "left", '0'))
Ici, on se concentre sur la valorisation dite BEE pour "Base + Extrême haut - Extrême bas". En effet par défaut le paramètre bee
est à TRUE
dans l'appel de fonction, et les tables vano, porg et diap sont renseignés à vide.
# Importer les tarifs GHS tarifs_ghs <- dplyr::distinct(get_table('tarifs_mco_ghs'), ghs, anseqta, .keep_all = TRUE) resu <- vvr_mco( vvr_ghs_supp(rsa = vrsa, ano = vano, tarifs = tarifs_ghs, cgeo = 1L), vvr_mco_sv(vrsa, vano) )
La table resu
contient une ligne par rsa avec les variables suivantes :
cle_rsa rec_totale rec_base rec_exb rec_exh rec_bee type_fin typvidhosp
On peut libeller ces variables en faisant appel à la fonction vvr_libelles_valo
, voir ci-dessous.
# Importer les tarifs des suppléments tarifs_supp <- get_table('tarifs_mco_supplements') %>% mutate_if(is.numeric, tidyr::replace_na, 0) %>% select(-cgeo) resu <- vvr_mco( vvr_ghs_supp(rsa = vrsa, tarifs = tarifs_ghs, supplements = tarifs_supp, ano = vano, porg = ipo(p), diap = idiap(p), pie = ipie(p), mo = imed_mco(p), full = FALSE, cgeo = 1L, prudent = NULL, bee = FALSE), vvr_mco_sv(vrsa, vano, ipo(p)) )
La table resu
contient une ligne par rsa avec les variables suivantes :
cle_rsa moissor anseqta rec_totale rec_bee rec_base rec_exb rec_exh rec_rep rec_rea rec_stf rec_src rec_nn1 rec_nn2 rec_nn3 rec_dialhosp rec_caishyp rec_aph rec_ant rec_rap rec_rehosp_ghm rec_rdt_tot rec_sdc rec_po_tot type_fin typvidhosp
On peut libeller ces variables en faisant appel à la fonction vvr_libelles_valo
, voir ci-dessous.
Les variables présentes dans la table resu
permettent à la fois de dénombrer les séjours par type de valorisation, c'est-à-dire :
knitr::kable(pmeasyr::vvr_libelles_valo('lib_type_sej'))
et de reproduire les rubriques de valorisation par type de recette:
knitr::kable(pmeasyr::vvr_libelles_valo('lib_valo'))
La table resu contient également une colonne typvidhosp
qui correspond à un type de séjour, croisant plusieurs modalités (factam, nouveaux-nés, séances, 0 jour, autres, etc.)
knitr::kable(pmeasyr::vvr_libelles_valo('lib_vidhosp'))
Les séjours sont distribués et les recettes BR * coeffs sont sommées en fonction du type de séjours (lib_type_sej).
epmsi_mco_sv(resu) %>% bind_rows(summarise_if(., is.numeric, sum))
Les séjours sont distribués et les recettes BR * coeffs sont sommées en fonction du type de séjours et du type de recette (lib_type_sej * lib_valo).
epmsi_mco_rav(resu)
Il est possible de garder toutes les variables intermédiaires du calcul de valorisation, c'est le cas en précisant le paramètre full = TRUE
:
resu <- vvr_mco( vvr_ghs_supp(rsa = vrsa, tarifs = tarifs_ghs, supplements = tarifs_supp, ano = vano, porg = ipo(p), diap = idiap(p), pie = ipie(p), full = TRUE, cgeo = 1L, prudent = NULL, bee = FALSE), vvr_mco_sv(vrsa, vano, ipo(p)) )
Dans ce cas, les variables suivantes deviennent accessibles au niveau de chaque séjour :
resu %>% summarise_at(vars(starts_with('rec_')), sum) %>% names() %>% cat(sep = "\n")
rec_base rec_exh rec_exb rec_bee rec_totale rec_rep rec_rea rec_stf rec_src rec_nn1 rec_nn2 rec_nn3 rec_hhs rec_edpahs rec_edpcahs rec_ehhs rec_dip rec_dialhosp rec_caishyp rec_aph rec_ant rec_rap rec_sdc rec_rdt5 rec_prot rec_ict rec_cyb rec_gam rec_rcon1 rec_rcon2 rec_tciea rec_tcies rec_aie rec_rcon3 rec_rdt_tot rec_poi rec_poii rec_poiii rec_poiv rec_pov rec_povi rec_povii rec_poviii rec_poix rec_poa rec_po_tot rec_rehosp_ghm rec_pie_src rec_pie_stf rec_pie_rea rec_pie_rep rec_pie_nn1 rec_pie_nn2 rec_pie_nn3
La valorisation des rsa est assez mécanique (c'est un programme), le détail de ce mécanisme peut-être lu en regardant le code source de pmeasyr
(bien sûr, ce n'est pas le programme officiel). En peu de mots, la logique est celle-ci :
Si cette mécanique vaut pour la grande majorité, on note quelques exceptions, d'où les deux adaptations suivantes :
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.