R/DRGAll0.R

Defines functions CHSGrouper

Documented in CHSGrouper

#' DRGAll0
#' 
#' function that take PPROC as PROCs
#' 
#' @examples 
#' data(testdt)
#' CHSGrouper(testdt)->res
#' res
#' 
#' @export

CHSGrouper<-function(data,adrgVarsLst=ADRGVarsLst,drgRulesDf=DRGRulesDfCHS){
  if(!is.element('myRowID',names(data))){
    data$myRowID<-1:nrow(data)
  }
  
  names(data)->namesDt
  require('magrittr')
  as.numeric(data$bornWt)->data$bornWt
  as.numeric(data$age)->data$age
  as.numeric(data$LOS)->data$LOS
  ifelse(data$age==0,1e-10,data$age)->data$age
  ifelse(data$LOS==0,1e-10,data$LOS)->data$LOS
  data[data=='NA']<-NA
  as.data.frame(data)->data
  ifelse(data$PDX%in%adrgVarsLst$PDX,data$PDX,'OutOfRange')->data$PDX
  data$PDX[is.na(data$PDX)]<-'OutOfRange'
  for(i in 1:15){
    ifelse(data[,paste0('ADX',i)]%in%adrgVarsLst$PDX,data[,paste0('ADX',i)],'OutOfRange')->data[,paste0('ADX',i)]
    ifelse(is.na(data[,paste0('ADX',i)]),'OutOfRange',data[,paste0('ADX',i)])->data[,paste0('ADX',i)]
  }
  
  for(i in 1:8){
    ifelse(data[,paste0('PROC',i)]%in%adrgVarsLst$PPROC,data[,paste0('PROC',i)],'OutOfRange')->data[,paste0('PROC',i)]
    ifelse(is.na(data[,paste0('PROC',i)]),'OutOfRange',data[,paste0('PROC',i)])->data[,paste0('PROC',i)]
  }
  
  CCExcl(data=data,ccEcl=CCEclCHS) %>% CCStat2(data=.) %>%ADRGGrouper5(data=.,lstmat=lstMat) %>%  DRGGrouper(data=.,drgRulesDf=drgRulesDf) ->res
  
  merge(data,res[,c('myRowID','MDCCode','ADRGCode','DRGCode','CCStatus')],by='myRowID',all.x=T)->dtFinal
  
  
  as.data.frame(dtFinal)->res
  
  ifelse(res$PDX%in%DRGChk$DXExcl,'PDX.Excl','Normal')->typepdx
  apply(res[,paste0('PROC',1:8)],1,function(i)ifelse(any(i%in%DRGChk$PROCIn,na.rm=T),'PROC.Inc','PROC.Excl'))->typeproc
  ifelse(substr(res$DRGCode,2,2)%in%LETTERS[18:26],'medical','others')->typeADRG
  ifelse(typepdx=='PDX.Excl','PDXNotInADRGs',ifelse(typeproc=='PROC.Inc'&typeADRG=='medical','PDXUnmatchProc','Normal'))->res$DRGVer
  
  return(res)
  
}



#' CHSGrouperCmp
#' 
#' compile CHSGrouper fun
#' 
#' @export
#' @import compiler

CHSGrouperCmp<-cmpfun(CHSGrouper)
sontron/CHSDRGs documentation built on Aug. 17, 2020, 12:28 a.m.