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

BGPMUA11.m

Go to the documentation of this file.
  1. BGPMUA11 ; IHS/MSC/MGH - MI measure NQF0074 ;13-Jul-2011 16:05;MGH
  1. ;;11.1;IHS CLINICAL REPORTING SYSTEM;**1**;JUN 27, 2011;Build 106
  1. ;Code to collect meaningful use reports
  1. ENTRY1 ;EP Entry point for NQA0074 for CAD and anti-lipid meds
  1. N START,END,BGPNUM,BGPDEN,BGPNUM,STRING,OUTCT,NFCT,INCT
  1. N IEN,INV,VISIT,DATA,VDATE,VALUE,EXCEPT,FIRST,VIEN,EXCEPT,RESULT
  1. N CNT,DIAB,NUM,EXC,DIAB,OUTENC,NFENC,INENC,CADDX
  1. S (BGPDEN,BGPNUM,RESULT)=0
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE,VALUE=0
  1. S START=START_".2359"
  1. S STRING="",CADDX=0
  1. S (CAD,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,OUTCT,NFCT,INCT)=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 OUTENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU ENCOUNTER OUTPT")
  1. ..I +OUTENC S OUTCT=OUTCT+1
  1. ..S NFENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU NURSING FAC EM")
  1. ..I +NFENC S NFCT=NFCT+1
  1. ..I +OUTENC!(+NFENC) D
  1. ...S VDATE=$P($G(^AUPNVSIT(IEN,0)),U,1)
  1. ...S CNT=CNT+1
  1. ...S VIEN(CNT)=IEN_U_VDATE_U_$$DATE^BGPMUUTL(VDATE)
  1. ...S STRING(CNT)=$$DATE^BGPMUUTL(VDATE)
  1. ;Next check to see if the patient is in the denominator
  1. ;Denominator is that the pt has DX of CAD or cardiac surgery before found visits
  1. I OUTCT>1!(NFCT>1) D
  1. .S CADDATE=$P($P($G(VIEN(1)),U,2),".")
  1. .S CAD=$$CAD(DFN,CADDATE)
  1. .I +CAD D
  1. ..;If the patient had CAD, check to see if they are in the numerator
  1. ..S NUM=$$NUM1(DFN,BGPBDATE,BGPEDATE)
  1. ..;If not in the numerator,see if they are an exception
  1. ..I +NUM=0 S EXC=$$EXCEPT(.VIEN,DFN,CADDATE,BGPEDATE,CNT)
  1. ..D TOTAL1(DFN,CAD,NUM,EXC)
  1. Q
  1. TOTAL1(DFN,CAD,NUM,EXC) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT,NOTNUM,TOTALS,DXTIME,DEN
  1. S TOTALS=$G(^TMP("BGPMU0074",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0074",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0074",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0074",$J,BGPMUTF,"EXC"))
  1. S NOTNUM=+$G(^TMP("BGPMU0074",$J,BGPMUTF,"NOT"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S (DEN,DXTIME)=""
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0074",$J,BGPMUTF,"DEN")=DENCT
  1. I $P(CAD,U,3)'="" S DXTIME=$$DATE^BGPMUUTL($P(CAD,U,3))
  1. S DEN=$P(CAD,U,2)_DXTIME_";EN:"_STRING(1)
  1. I $D(STRING(2)) S DEN=DEN_";EN:"_STRING(2)
  1. I +EXC D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0074",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0074",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_DEN_U_"EXCLUDE"
  1. I +NUM D
  1. .S NUMCT=NUMCT+1 S ^TMP("BGPMU0074",$J,BGPMUTF,"NUM")=NUMCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0074",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DEN_U_"M:MED;"_$P(NUM,U,3)
  1. I +NUM=0&(EXC=0) D
  1. .S NOTNUM=NOTNUM+1 S ^TMP("BGPMU0074",$J,BGPMUTF,"NOT")=NOTNUM
  1. .I BGPMUTF="C" S ^TMP("BGPMU0074",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DEN_U_"NM:"_$P(NUM,U,2)
  1. S ^TMP("BGPMU0074",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. S BGPICARE("MU.EP.0074.1",BGPMUTF)=1_U_+NUM_U_+EXC_U_DEN_";"_$P(NUM,U,3)_";"_$P(NUM,U,2)
  1. Q
  1. CAD(DFN,CADDATE) ; Get the denominator
  1. N RESULT,CADA,CADB,CADDX,CADSUR,DOB
  1. S RESULT=0
  1. ;Check for coronary artery disease
  1. S DOB=$$GET1^DIQ(2,DFN,.03,"I")
  1. S CADA=$$LASTDX^BGPMUUT2(DFN,"",CADDATE,"BGPMU CAD DX")
  1. S CADB=$$PLTAX^BGPMUUT1(DFN,"BGPMU CAD DX","C",CADDATE)
  1. I +CADA S CADDX=CADA
  1. I +CADB S CADDX=CADB
  1. I +CADA!(+CADB) S RESULT=1_U_"CAD:"_U_$P(CADDX,U,3) Q RESULT
  1. ;Check for cardiac surgery
  1. S CADSUR=$$CPT^BGPMUUT1(DFN,DOB,CADDATE,"BGPMU CARDIAC SURGERY CPT")
  1. I +CADSUR S RESULT=1_U_"CSP:"_U_$P(CADSUR,U,3)
  1. Q RESULT
  1. EXCEPT(VIEN,DFN,CADDATE,BGPEDATE,CNT) ;Find exceptions
  1. N FOUND,REF,ALLER,TAX,BGPR,VLABIEN,VALUE,LDL
  1. S FOUND=0
  1. ;Check for LDL in 365 days before latest encounter date
  1. S BGPYR=$$FMADD^XLFDT(CADDATE,-365)
  1. S TAX="BGPMU LAB LOINC LDL"
  1. S LDL=$$LOINC^BGPMUUT2(DFN,BGPYR,CADDATE,TAX)
  1. I +LDL D
  1. .S VLABIEN=$P(LDL,U,2)
  1. .S VALUE=$P($G(^AUPNVLAB(VLABIEN,0)),U,4)
  1. .I VALUE<130 S FOUND=1_U_VALUE_U_$P(LDL,U,1)
  1. ;Next check for allergy
  1. S ALLER=$$ALLER^BGPMUA10("CV350","")
  1. I +ALLER S FOUND=1_U_$P(ALLER,U,1)
  1. ;Check for refusals
  1. S TAX="BGPMU LIPID LOWERING NDCS"
  1. S REF=$$REF^BGPMUA10(.VIEN,TAX,BGPEDATE)
  1. I +REF S FOUND=1_U_$P(REF,U,1)
  1. Q FOUND
  1. NUM1(DFN,BGPBDATE,BGPEDATE) ;check for meds in numerator
  1. N FOUND,PMED
  1. S FOUND=0
  1. S PMED=$$FIND^BGPMUUT8(DFN,"BGPMU LIPID LOWERING NDCS",BGPBDATE,"",BGPEDATE)
  1. I +PMED S FOUND=2_U_$P(PMED,U,2)_U_$P(PMED,U,3)
  1. Q FOUND