require(rstarating);require(relvm);require(rclus);require(cmsdata);require(reshape2)
# "C:/rhuang/cmsdata/2018/20180126/Hospital_Revised_Flatfiles", # "Complications and Deaths - Hospital.csv" # "HOSPITAL_QUARTERLY_AHRQ_PSI_90_6decimals.csv" file <- file.path("T:/Clinical Excellence/Analytics/Data Sources/cmsData/2017/20171221/Hospital_Revised_Flatfiles20171221", "Complications and Deaths - Hospital.csv") # psi_ <- read_csv(file) %>% subset(select=c("ccnid","measure_id","score","denominator")) %>% subset(.$measure_id %in% grep("psi",.$measure_id,value=T)) %>% subset(!(.$measure_id %in% c("psi_4_surg_comp","psi_90_safety"))) psi_score= psi_%>% dcast(ccnid~measure_id,value.var="score") psi_den = psi_ %>% dcast(ccnid~measure_id,value.var="denominator") psi <- merge(x=psi_score,y=psi_den,by="ccnid",all=T,suffixes = c("","_den")) # input <- cms_star_rating_input_2017dec %>% colnames_wiper("provider_id","ccnid") %>% cols_str_wiper(index="ccnid",pattern="^b'0|^b'|'$",with="") %>% subset(select=!(grepl("psi_90_safety",names(.)))) %>% merge(y= psi, by="ccnid",all=T) mtbl <- create_measure_tbl(input) mtbl[mtbl$group=="outcome_safty",]
sort_by_group <- function(y) { merge(x=create_measure_tbl(mstbl(input)$mstbl_std)[c("name","group")], y=y,by="name",all.y=T) %>% cols_sort(by=c("group","name")) %>% subset(group == "outcome_safty") %>% rownames_wiper() }
# Test 1: replace psi90 with 10 of psi 90 componet measures. fit1 <- relvm(mstbl(input)) par1 <- sort_by_group(fit1$groups$pars) # Test 2 : put all the den to 100. input2 <- input for (idx in grep("_den",colnames(input2),value=T)) { input2[,idx] <- ifelse(is.na(input2[,idx]),NA, 100) } fit2 <- relvm(mstbl(input2)) par2 <- sort_by_group(fit2$groups$pars)
# TEst 3 remove hai_ and comp_hip_knee measure. psi_components only input3 <- input2 for (idx in c(grep("comp_hip_knee|hai_",names(input2),value=T))) { input3[idx] <- NULL } fit3 <- relvm(mstbl(input3)) par3 <- sort_by_group(fit3$groups$pars) # TEst 4 remove psi_components and comp_hip_knee. input4 <- input2 for (idx in c(grep("comp_hip_knee|psi_",names(input4),value=T))) { input4[idx] <- NULL } fit4 <- relvm(mstbl(input4)) par4 <- sort_by_group(fit4$groups$pars)
# test 5 original denominator, but remove comp_hip_knee and hai_ measures. So input5 <- input for (idx in c(grep("comp_hip_knee|hai_",names(input5),value=T))) { input5[idx] <- NULL } fit5 <- relvm(mstbl(input5)) par5 <- sort_by_group(fit5$groups$pars)
require(rio) file <- file.path("T:/Clinical Excellence/Analytics/Personal Development Folders/RenHuai/star/TEP", 'cms_star_dec2017_den_100_v3.xlsx') export(par1,file,which="repalce psi 90",overwrite=T) export(par2,file,which="then replace den 100",overwrite=T) export(par3,file,which="psi component only",overwrite=T) export(par4,file,which="hai only",overwrite=T) export(par5,file,which="psi_components_den_original",overwrite=T)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.