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

BGPMUA13.m

Go to the documentation of this file.
  1. BGPMUA13 ; IHS/MSC/MGH - MI measure NQF0387 ;01-Sep-2011 13:06;DU
  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 breast cancer on Tamoxifen Aromatase
  1. N START,END,STRING
  1. N IEN,INV,VISIT,DATA,VDATE,VALUE,EXCEPT,FIRST,VIEN
  1. N CNT,BC,NUM,EXC,OUTENC
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE,VALUE=0
  1. S START=START_".2359"
  1. S (STRING,STRING2)=""
  1. S (EXC,NUM)=0
  1. ;Pts must be >18 and <75
  1. ;No need to check further if no age match
  1. Q:BGPAGEE<18
  1. Q:BGPSEX="M"
  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 OUTENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU ENC OFFICE VISIT")
  1. ..I +OUTENC D VSTSTORE Q
  1. Q:CNT<2
  1. ;Next check to see if the patient is in the denominator
  1. ;Denominator is that the pt had a diagnosis of breast cancer
  1. S BC=$$BREAST(DFN,BGPBDATE,BGPEDATE,CNT,.VIEN)
  1. I +BC D
  1. .;If the patient is in denominator, 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(DFN,BGPBDATE,BGPEDATE,.VIEN)
  1. .D TOTAL1(DFN,BC,NUM,EXC)
  1. Q
  1. VSTSTORE ;Store compliant visit in array
  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
  1. TOTAL1(DFN,BC,NUM,EXC) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT,NOTNUM,TOTALS,DXTIME,DEN
  1. S TOTALS=+$G(^TMP("BGPMU0387",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0387",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0387",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0387",$J,BGPMUTF,"EXC"))
  1. S NOTNUM=+$G(^TMP("BGPMU0387",$J,BGPMUTF,"NOT"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S DEN=""
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0387",$J,BGPMUTF,"DEN")=DENCT
  1. S DEN=$P(BC,U,2)_";"_$P(BC,U,3)
  1. I $D(STRING(1)) S DEN=DEN_";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("BGPMU0387",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0387",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_DEN_U_"Excluded"
  1. I +NUM D
  1. .S NUMCT=NUMCT+1 S ^TMP("BGPMU0387",$J,BGPMUTF,"NUM")=NUMCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0387",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DEN_U_"M:"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. I +NUM=0&(+EXC=0) D
  1. .S NOTNUM=NOTNUM+1 S ^TMP("BGPMU0387",$J,BGPMUTF,"NOT")=NOTNUM
  1. .I BGPMUTF="C" S ^TMP("BGPMU0387",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DEN_U_"NM:"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. S ^TMP("BGPMU0387",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. S BGPICARE("MU.EP.0387.1",BGPMUTF)=1_U_+NUM_U_+EXC_U_DEN_";"_$P(NUM,U,2)_";"_$P(NUM,U,3)
  1. Q
  1. BREAST(DFN,BGPBDATE,BGPEDATE,CNT,VIEN) ;Check patient for Breast Cancer
  1. N CANCER,LAST,DXA,DXB,HXA,HXB,STAGE,SAVE
  1. S LAST=0,CANCER=0,STAGE=0,SAVE=0
  1. S LAST=$P($P($G(VIEN(1)),U,2),".")
  1. ;First check for DX of breast cancer
  1. S DXA=$$LASTDX^BGPMUUT2(DFN,"",LAST,"BGPMU BREAST CANCER DX")
  1. I +DXA S SAVE=DXA S STAGE=$$STAGE(DFN,LAST)
  1. S DXB=$$PLTAX^BGPMUUT1(DFN,"BGPMU BREAST CANCER DX","C",LAST)
  1. I +DXB S SAVE=DXB S STAGE=$$STAGE(DFN,LAST)
  1. S HXA=$$LASTDX^BGPMUUT2(DFN,"",LAST,"BGPMU BREAST CANCER HISTORY DX")
  1. I +HXA S SAVE=HXA S STAGE=$$STAGE(DFN,LAST)
  1. S HXB=$$PLTAX^BGPMUUT1(DFN,"BGPMU BREAST CANCER HISTORY DX","I",LAST)
  1. I +HXB S SAVE=HXB S STAGE=$$STAGE(DFN,LAST)
  1. I +STAGE D
  1. .S CANCER=1_U_"BCDX:"_$$DATE^BGPMUUTL($P(SAVE,U,3))_U_$P(STAGE,U,2)
  1. Q CANCER
  1. STAGE(DFN,LAST) ;Check for stage of breast cancer
  1. N STAGE1,STAGE2,A,B,C
  1. S (STAGE1,STAGE2)=0
  1. S A=$$CPT^BGPMUUT1(DFN,"",LAST,"BGPMU BREAST CANCER STAGE CPT")
  1. Q:'A 0
  1. S STAGE1="BCST:"_$$DATE^BGPMUUTL($P(A,U,3))
  1. S B=$$LASTDX^BGPMUUT2(DFN,"",LAST,"BGPMU BREAST CANCER ER ICD")
  1. I +B S STAGE2="BCP:"_$$DATE^BGPMUUTL($P(B,U,3)) G STAGEX
  1. S C=$$CPT^BGPMUUT1(DFN,"",LAST,"BGPMU BREAST CANCER ER CPT")
  1. I +C S STAGE2="BCP:"_$$DATE^BGPMUUTL($P(C,U,3))
  1. STAGEX Q $S(STAGE2=0:0,1:1_U_STAGE1_";"_STAGE2)
  1. NUM1(DFN,BGPBDATE,BGPEDATE) ;Look for wide range of items to satisfy this measure
  1. N FOUND,PMED
  1. S FOUND=0
  1. S PMED=$$FIND^BGPMUUT8(DFN,"BGPMU TAMOXIFEN AROMATASE NDCS",BGPBDATE,"",BGPEDATE)
  1. I +PMED S FOUND=1_U_"MED:"_$$DATE^BGPMUUTL($P(PMED,U,3))
  1. Q FOUND
  1. EXCEPT(DFN,BGPBDATE,BGPEDATE,VIEN) ;Check Exception criteria
  1. N LAST,RESULT,OOP,RAD,CHEMO,METDX,METPL,PMED,ALLER,REF,TAX
  1. S RESULT=0
  1. S LAST=$P($P($G(VIEN(1)),U,2),".")
  1. S OOP=$$CPT^BGPMUUT1(DFN,"",LAST,"BGPMU BILATERAL OOPHORECTOMY")
  1. I +OOP S RESULT=OOP Q RESULT
  1. S RAD=$$CPT^BGPMUUT1(DFN,"",LAST,"BGPMU RADIATION THERAPY CPT")
  1. I +RAD S RESULT=RAD Q RESULT
  1. S CHEMO=$$CPT^BGPMUUT1(DFN,"",LAST,"BGPMU CHEMOTHERAPY CPTS")
  1. I +CHEMO S RESULT=CHEMO Q RESULT
  1. ;Check for metastisis
  1. S METDX=$$LASTDX^BGPMUUT2(DFN,"",LAST,"BGPMU BREAST CANCER METS DX")
  1. I +METDX S RESULT=METDX Q RESULT
  1. S METPL=$$PLTAX^BGPMUUT1(DFN,"BGPMU BREAST CANCER METS DX","C",LAST)
  1. I +METPL S RESULT=METPL Q RESULT
  1. ;Check if on another drug
  1. S PMED=$$FIND^BGPMUUT8(DFN,"BGPMU GONODOTROPIN NDCS",BGPBDATE,"",BGPEDATE)
  1. I +PMED S RESULT=1_U_$P(PMED,U,2)_U_$P(PMED,U,3)
  1. ;Next check for allergy
  1. S ALLER=0
  1. S ALLER=$$ALLER^BGPMUA10("","TAMOXIFEN")
  1. I +ALLER S RESULT=1_U_$P(ALLER,U,1) Q RESULT
  1. S ALLER=0
  1. S ALLER=$$ALLER^BGPMUA10("","ANASTROZOLE")
  1. I +ALLER S RESULT=1_U_$P(ALLER,U,1) Q RESULT
  1. S ALLER=0
  1. S ALLER=$$ALLER^BGPMUA10("","EXEMESTANE")
  1. I +ALLER S RESULT=1_U_$P(ALLER,U,1) Q RESULT
  1. S ALLER=0
  1. S ALLER=$$ALLER^BGPMUA10("","LETROZOLE")
  1. I +ALLER S RESULT=1_U_$P(ALLER,U,1) Q RESULT
  1. ;Check for refusals
  1. S TAX="BGPMU TAMOXIFEN AROMATASE NDCS"
  1. S REF=$$MEDREF^BGPMUUT2(DFN,0,BGPEDATE,TAX)
  1. I +REF S RESULT=1_U_$P(REF,U,1) Q RESULT
  1. Q RESULT