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

BGPMUF08.m

Go to the documentation of this file.
  1. BGPMUF08 ; IHS/MSC/MGH - MI measure NQF0084 ;20-Jul-2011 14:56;DU
  1. ;;11.1;IHS CLINICAL REPORTING SYSTEM;**1**;JUN 27, 2011;Build 106
  1. ;Code to collect meaningful use report for Heart Failure, Warfarin w/A-Fib
  1. ENTRY ;EP
  1. N START,END,BGPNUM,BGPDEN,BGPNUM,STRING,STRING2,PTBIRTH
  1. N IEN,INV,VISIT,DATA,VDATE,VALUE,EXCEPT,FIRST,VIEN,EXCEPT,RESULT
  1. N CNT,NUM,OUTENC,NFENC,HFDX
  1. S (BGPDEN,BGPNUM,RESULT)=0
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE,VALUE=0
  1. S START=START_".2359"
  1. S (HFDX,EXC,NUM)=0
  1. ;Pts must be >18
  1. ;No need to check further if no age match
  1. Q:BGPAGEE<18
  1. S CNT=0
  1. S PTBIRTH=$$DOB^AUPNPAT(DFN,"")
  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 OUTENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU BP EM")
  1. ..S NFENC=""
  1. ..S:'+OUTENC NFENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU NURSING FAC EM")
  1. ..I (+OUTENC)!(+NFENC) D
  1. ...S CNT=CNT+1
  1. ...S VDATE=$P($G(^AUPNVSIT(IEN,0)),U,1)
  1. ...S VIEN(CNT)=IEN_U_VDATE
  1. Q:CNT<2
  1. ;Next check to see if the patient is in the denominator
  1. S HFDX=$$HFAFIB(DFN,BGPBDATE,BGPEDATE,CNT)
  1. I +HFDX D
  1. .;If the patient has had heart failure w/A-Fib, 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,HFDX,NUM,EXC)
  1. Q
  1. TOTAL(DFN,HFDX,NUM,EXC) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT,NOTNUM,TOTALS,DEN
  1. S TOTALS=$G(^TMP("BGPMU0084",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0084",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0084",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0084",$J,BGPMUTF,"EXC"))
  1. S NOTNUM=+$G(^TMP("BGPMU0084",$J,BGPMUTF,"NOT"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S (DEN,DXTIME)=""
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0084",$J,BGPMUTF,"DEN")=DENCT
  1. S DEN="HF:"_$$DATE^BGPMUUTL($P(HFDX,U,2))
  1. S DEN=DEN_";AF:"_$$DATE^BGPMUUTL($P(HFDX,U,3))
  1. I $D(VIEN(1)) S DEN=DEN_";EN:"_$$DATE^BGPMUUTL($P(VIEN(1),U,2))
  1. I $D(VIEN(2)) S DEN=DEN_";EN:"_$$DATE^BGPMUUTL($P(VIEN(2),U,2))
  1. I +NUM D
  1. .S NUMCT=NUMCT+1 S ^TMP("BGPMU0084",$J,BGPMUTF,"NUM")=NUMCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0084",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DEN_U_"M:MED "_$$DATE^BGPMUUTL($P(NUM,U,2))
  1. I +EXC D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0084",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0084",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_DEN_U_"Excluded"
  1. I +NUM=0&(EXC=0) D
  1. .S NOTNUM=NOTNUM+1 S ^TMP("BGPMU0084",$J,BGPMUTF,"NOT")=NOTNUM
  1. .I BGPMUTF="C" S ^TMP("BGPMU0084",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DEN_U_"NM:"
  1. S ^TMP("BGPMU0084",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. S BGPICARE("MU.EP.0084.1",BGPMUTF)=1_U_+NUM_U_+EXC_U_DEN_";"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. Q
  1. HFAFIB(DFN,BGPBDATE,BGPEDATE,CNT) ;look for Heart Failure W/A-Fib diagnosis
  1. N FOUND,DXHF,PLHF,DXAF,PLAF,DX1,DX2
  1. S FOUND=0,DX1=0,DX2=0
  1. ;Check for the patient having a DX or Problem of Heart Failure (ever)
  1. S DXHF=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HEART FAILURE DX")
  1. I +DXHF S DX1=DXHF
  1. E D
  1. .S PLHF=$$PLTAX^BGPMUUT1(DFN,"BGPMU HEART FAILURE DX","C",BGPEDATE)
  1. .I +PLHF S DX1=PLHF
  1. Q:DX1=0 0
  1. ;Now check for DX or Problem of Atrial Fibrillation
  1. S DXAF=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF AFIB DX")
  1. I +DXAF S DX2=DXAF
  1. E D
  1. .S PLAF=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF AFIB DX","C",BGPEDATE)
  1. .I +PLAF S DX2=PLAF
  1. Q:DX2=0 0
  1. S FOUND=1_U_$P(DX1,U,3)_U_$P(DX2,U,3)
  1. Q FOUND
  1. NUM(DFN,BGPBDATE,BGPEDATE) ;Look for Warfarin PRESCRIPTION
  1. N FOUND,WARFRX
  1. S FOUND=0
  1. S WARFRX=$$FIND^BGPMUUT8(DFN,"BGPMU WARFARIN NDCS",BGPBDATE,"",BGPEDATE)
  1. Q:'WARFRX FOUND
  1. S FOUND=1_U_$P(WARFRX,U,3)
  1. Q FOUND
  1. EXCEPT(DFN,BGPBDATE,BGPEDATE) ;See if this patient has exceptions
  1. N EFOUND
  1. S EFOUND=0
  1. ;Next check for allergy
  1. S ALLER=$$ALLER^BGPMUA10("BL110","WARFARIN")
  1. I +ALLER S EFOUND=1_U_$P(ALLER,U,1) G EXCQ
  1. ;Check for refusals
  1. S TAX="BGPMU WARFARIN NDCS"
  1. S REF=$$REF^BGPMUA10(.VIEN,TAX,BGPEDATE)
  1. I +REF S EFOUND=1_U_$P(REF,U,1) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF ANEMIA DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF ANEMIA DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF GI BLEED DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF GI BLEED DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF IC HEMORRHAGE DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF IC HEMORRHAGE DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF LEUKEMIA DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF LEUKEMIA DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF HEMATURIA DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF HEMATURIA DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF HEMOPTYSIS DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF HEMOPTYSIS DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF HEMORRHAGE DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF HEMORRHAGE DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. S EXCDX=$$LASTDX^BGPMUUT2(DFN,PTBIRTH,BGPEDATE,"BGPMU HF LIVER DISORDER DX")
  1. I +EXCDX S EFOUND=1_U_$P(EXCDX,U,3) G EXCQ
  1. S EXCPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU HF LIVER DISORDER DX","C",BGPEDATE)
  1. I +EXCPL S EFOUND=1_U_$P(EXCPL,U,3) G EXCQ
  1. EXCQ Q EFOUND