Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BGPMUG01

BGPMUG01.m

Go to the documentation of this file.
  1. BGPMUG01 ; IHS/MSC/MMT - MI measure NQF0086 ;10-Jan-2012 10:05;MMT
  1. ;;12.1;IHS CLINICAL REPORTING;;MAY 17, 2012;Build 66
  1. ;Code to collect meaningful use report for POAG optic nerve exam
  1. ENTRY ;EP
  1. N START,END,BGPNUM,BGPDEN,BGPBIRTH,STRING,STRING2
  1. N IEN,INV,VISIT,DATA,VDATE,VALUE,EXCEPT,FIRST,VIEN,RESULT
  1. N CNT,NUM,EXC,POAGENC,POAGDX,POAGPL,POAG
  1. S (BGPDEN,BGPNUM,RESULT)=0
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE,VALUE=0
  1. S START=START_".2359"
  1. S (POAG,EXC,NUM)=0
  1. ;Pts must be 18+
  1. ;No need to check further if no age match
  1. Q:BGPAGEE<18
  1. S BGPBIRTH=$$DOB^AUPNPAT(DFN)
  1. S CNT=0
  1. S FIRST=END-0.1 F S FIRST=$O(^AUPNVSIT("AA",DFN,FIRST)) Q:FIRST=""!($P(FIRST,".",1)>START) D
  1. .S IEN=0 F S IEN=$O(^AUPNVSIT("AA",DFN,FIRST,IEN)) Q:'+IEN D
  1. ..;Check provider, Only visits for chosen provider
  1. ..Q:'$$PRV^BGPMUUT1(IEN,BGPPROV)
  1. ..S POAGENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU ENC POAG COMBINED")
  1. ..I +POAGENC D
  1. ...S CNT=CNT+1
  1. ...S VDATE=$P($G(^AUPNVSIT(IEN,0)),U,1)
  1. ...S VIEN(CNT)=IEN_U_VDATE
  1. ...S STRING(CNT)=$$DATE^BGPMUUTL(VDATE)
  1. Q:CNT<2 ;Pt only counts if they had at least 2 visits with the EP
  1. S POAGDX=$$LASTDX^BGPMUUT2(DFN,BGPBIRTH,$P($P(VIEN(1),U,2),"."),"BGPMU POAG DX")
  1. I +POAGDX S POAG=1_U_$P(POAGDX,U,3)
  1. E D
  1. .S POAGPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU POAG DX","C",$P($P(VIEN(1),U,2),"."))
  1. .S:+POAGPL POAG=1_U_$P(POAGPL,U,3)
  1. I +POAG D
  1. .;If the patient has POAG, check to see if they are in the numerator
  1. .S NUM=$$NUM(DFN,BGPBDATE,BGPEDATE)
  1. .;If not in the numerator,see if they are an exception
  1. .I +NUM=0 S EXC=$$EXCEPT(DFN,BGPBDATE,BGPEDATE)
  1. .D TOTAL(DFN,POAG,NUM,EXC)
  1. Q
  1. TOTAL(DFN,POAG,NUM,EXC) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT,NOTNUM,TOTALS,DEN,DXTIME
  1. S TOTALS=$G(^TMP("BGPMU0086",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0086",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0086",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0086",$J,BGPMUTF,"EXC"))
  1. S NOTNUM=+$G(^TMP("BGPMU0086",$J,BGPMUTF,"NOT"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S (DEN,DXTIME)=""
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0086",$J,BGPMUTF,"DEN")=DENCT
  1. I $P(POAG,U,2)'="" S DXTIME=$$DATE^BGPMUUTL($P(POAG,U,2))
  1. S DEN="POAG:"_DXTIME
  1. I $D(STRING(1)) S DEN=DEN_";EN:"_STRING(1)
  1. I $D(STRING(2)) S DEN=DEN_";EN:"_STRING(2)
  1. I +NUM D
  1. .S NUMCT=NUMCT+1 S ^TMP("BGPMU0086",$J,BGPMUTF,"NUM")=NUMCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0086",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DEN_U_"M:"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. I +EXC D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0086",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0086",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_DEN_U_"Excluded"
  1. I +NUM=0&(EXC=0) D
  1. .S NOTNUM=NOTNUM+1 S ^TMP("BGPMU0086",$J,BGPMUTF,"NOT")=NOTNUM
  1. .I BGPMUTF="C" S ^TMP("BGPMU0086",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DEN_U_"NM:"
  1. S ^TMP("BGPMU0086",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. S BGPICARE("MU.EP.0086.1",BGPMUTF)=1_U_+NUM_U_+EXC_U_DEN_";"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. Q
  1. NUM(DFN,BGPBDATE,BGPEDATE) ;Look for evidence of a optic nerve evaluation done by the EP
  1. N FOUND,VCNT,EXMPRC,CLINPTR,CLINCODE
  1. S FOUND=0
  1. ;Check to make sure procedure done during a CLINIC 17 or 18 visit with the EP
  1. S VCNT=""
  1. F S VCNT=$O(VIEN(VCNT)) Q:(VCNT="")!(+FOUND) D
  1. .S EXMPRC=$$VSTCPT^BGPMUUT1(DFN,$P(VIEN(VCNT),U),"BGPMU POAG NERVE EVAL CPT")
  1. .I +EXMPRC D
  1. ..S CLINPTR=$P($G(^AUPNVCPT($P(EXMPRC,U,4),12)),U,3)
  1. ..Q:CLINPTR=""
  1. ..S CLINCODE=$P(^DIC(40.7,CLINPTR,0),U,2)
  1. ..I (CLINCODE=17)!(CLINCODE=18) S FOUND=EXMPRC
  1. .Q:+FOUND
  1. .S EXMPRC=$$VSTICD0^BGPMUUT3(DFN,$P(VIEN(VCNT),U),"BGPMU POAG NERVE EVAL ICD0")
  1. .I +EXMPRC D
  1. ..S CLINPTR=$P($G(^AUPNVPRC($P(EXMPRC,U,4),12)),U,3)
  1. ..Q:CLINPTR=""
  1. ..S CLINCODE=$P(^DIC(40.7,CLINPTR,0),U,2)
  1. ..I (CLINCODE=17)!(CLINCODE=18) S FOUND=EXMPRC
  1. Q FOUND
  1. EXCEPT(DFN,BGPBDATE,BGPEDATE) ;See if this patient has exceptions
  1. N EFOUND,NMI
  1. S EFOUND=0
  1. S NMI=$$REFTAX^BGPMUUT2(DFN,81,"BGPMU POAG NERVE EVAL CPT",BGPBIRTH,BGPEDATE)
  1. Q:+NMI&($P(NMI,U,3)="N") 1_U_$P(NMI,U,4)_U_$P(NMI,U,2)
  1. S NMI=$$REFTAX^BGPMUUT2(DFN,80.1,"BGPMU POAG NERVE EVAL ICD0",BGPBIRTH,BGPEDATE)
  1. Q:+NMI&($P(NMI,U,3)="N") 1_U_$P(NMI,U,4)_U_$P(NMI,U,2)
  1. Q EFOUND