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

BGPMUD10.m

Go to the documentation of this file.
  1. BGPMUD10 ; IHS/MSC/SAT - MI measure NQF0385 ;08-Sep-2011 14:56
  1. ;;11.1;IHS CLINICAL REPORTING SYSTEM;**1**;JUN 27, 2011;Build 106
  1. ;
  1. ; BGPMUD01 = tobacco use assessment 0028a
  1. ; BGPMUD02 = tobacco use cessation 0028b
  1. ; BGPMUD03 = Heart Failure w/ACE Inhibitor or ARB 0081
  1. ; BGPMUD04 = Prenatal HIV Screening 0012
  1. ; BGPMUD05 = Prenatal Anti-D Immune Globulin 0014
  1. ; BGPMUD06 = Control High Blood Pressure 0018
  1. ; BGPMUD07 = SMOKING CESSATION MEDICAL ASSIST 0027
  1. ; BGPMUD08 = Chlamydia Measure 0033
  1. ; BGPMUD09 = Antidepressant Medication Management 0105
  1. ; BGPMUD10 = Oncology Colon Cancer Stage III 0385
  1. ;
  1. ;Code to collect meaningful use report for Oncology Colon Cancer Stage III 0385
  1. ENTRY ;EP
  1. N START,END,BGPNUM,STRING,STRING2
  1. N IEN,INV,RFOUND,VISIT,DATA,VDATE,VALUE,EXCEPT,FIRST,VIEN
  1. N CNT,DIAB,NUM,DIAB,DIABDX,OUTENC,OPHENC,NONENC,VENC,INENC,ERENC
  1. N BGPEN,BGPEND,BGPEXC,BGPH
  1. N BGPDEN,BGPNOT,BGPNUM
  1. N DEPV1,DEPVA
  1. S (BGPDEN,BGPEN,BGPEXC,BGPNUM,BGPNOT)=""
  1. S BGPEND=0
  1. ;Pts must be >=18 at the end of the reporting period
  1. S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPEDATE)
  1. ;No need to check further if no age match
  1. Q:BGPAGEE<18
  1. ;
  1. ;look for 2 encounters with EP
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE,VALUE=0
  1. S START=START_".2359"
  1. S FIRST=END-0.1 F S FIRST=$O(^AUPNVSIT("AA",DFN,FIRST)) Q:FIRST=""!($P(FIRST,".",1)>START) D
  1. .S VIEN=0 F S VIEN=$O(^AUPNVSIT("AA",DFN,FIRST,VIEN)) Q:'+VIEN D
  1. ..S BGPDT=$P($P($G(^AUPNVSIT(VIEN,0)),U,1),".",1)
  1. ..;Check provider, determine if there are visits with E&M codes
  1. ..I $$PRV^BGPMUUT1(VIEN,BGPPROV) D
  1. ...I $$EM1(DFN,VIEN,0) D
  1. ....S:$L(BGPEN,";")'>1 BGPEN=$S(BGPEN'="":BGPEN_";",1:"")_"EN:"_$$DATE^BGPMUUTL($P(BGPDT,".",1))
  1. ....S BGPEND=$S(BGPDT>BGPEND:BGPDT,1:BGPEND)
  1. ;
  1. Q:$L(BGPEN,";")'>1
  1. S X=0
  1. S X=$$LASTDX^BGPMUUT2(DFN,0,BGPEND,"BGPMU ONC COLON CANCER DX")
  1. S:'+X X=$$PLTAX^BGPMUD09(DFN,"BGPMU ONC COLON CANCER DX","C",0,BGPEND)
  1. S:'+X X=$$LASTDX^BGPMUUT2(DFN,0,BGPEND,"BGPMU ONC COLON CANCER HIST DX")
  1. S:'+X X=$$PLTAX^BGPMUD09(DFN,"BGPMU ONC COLON CANCER HIST DX","I",0,BGPEND)
  1. Q:'+X
  1. S BGPDEN="CCDX:"_$$DATE^BGPMUUTL($P(X,U,3))
  1. S X=0
  1. S X=$$CPT^BGPMUUT1(DFN,0,BGPEND,"BGPMU STAGE III COLON CAN CPT")
  1. Q:'+X
  1. S BGPDEN=BGPDEN_";"_"CCST:"_$$DATE^BGPMUUTL($P(X,U,3))_";"_BGPEN ;patient is in the denominator
  1. ;
  1. ;check PRESCRIPTION for colon cancer chemotherapy meds
  1. S X=$$FIND^BGPMUUT4(DFN,"BGPMU COLON CANCER CHEMO NDCS",BGPBDATE,"",BGPEDATE)
  1. I +X S BGPNUM="M:MED "_$$DATE^BGPMUUTL($P(X,U,3)) ;patient is in the numerator
  1. I '+X S BGPNOT="NM:"
  1. ;
  1. ;check exclusions
  1. S X=0
  1. I '+X S BGPEXC=$$EXCLUDE(DFN)
  1. I BGPEXC'="" S BGPNOT=""
  1. ;
  1. D TOTAL(DFN)
  1. Q
  1. ;
  1. TOTAL(DFN) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT1,NUMCT2,NOTNUM1,NOTNUM2,TOTALS
  1. S TOTALS=$G(^TMP("BGPMU0385",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0385",$J,BGPMUTF,"DEN",1))
  1. S NUMCT1=+$G(^TMP("BGPMU0385",$J,BGPMUTF,"NUM",1))
  1. S NOTNUM1=+$G(^TMP("BGPMU0385",$J,BGPMUTF,"NOT",1))
  1. S EXCCT=+$G(^TMP("BGPMU0385",$J,BGPMUTF,"EXC",1))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0385",$J,BGPMUTF,"DEN",1)=DENCT
  1. ;
  1. I BGPNOT'="" D
  1. .S NOTNUM1=NOTNUM1+1 S ^TMP("BGPMU0385",$J,BGPMUTF,"NOT",1)=NOTNUM1
  1. .I BGPMUTF="C" S ^TMP("BGPMU0385",$J,"PAT",BGPMUTF,"NOT",1,PTCNT)=DFN_U_BGPDEN_U_BGPNOT
  1. ;
  1. I BGPNUM'="" D
  1. .S NUMCT1=NUMCT1+1 S ^TMP("BGPMU0385",$J,BGPMUTF,"NUM",1)=NUMCT1
  1. .I BGPMUTF="C" S ^TMP("BGPMU0385",$J,"PAT",BGPMUTF,"NUM",1,PTCNT)=DFN_U_BGPDEN_U_BGPNUM
  1. ;
  1. I BGPEXC'="" D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0385",$J,BGPMUTF,"EXC",1)=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0385",$J,"PAT",BGPMUTF,"EXC",1,PTCNT)=DFN_U_BGPDEN_U_BGPEXC
  1. S ^TMP("BGPMU0385",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. ; BGPICARE(INDICATOR_ID,Timeframe)=Denom Flag
  1. ; ^ Num Flag ^ Excl Flag ^ Denom disp ; Num disp ^ Excl disp
  1. S BGPICARE("MU.EP.0385.1",BGPMUTF)=1_U_(BGPNUM'="")_U_(BGPEXC'="")_U_BGPDEN_";"_$S(BGPNUM'="":BGPNUM,1:"")_U_$S(BGPEXC="":BGPEXC,1:"")
  1. Q
  1. ;
  1. EM1(DFN,VIEN,FLG) ;check visit for at least 1 E&M code indicating outpatient
  1. N BGPI,BGPTMP
  1. S BGP2=0
  1. S X=+$$VSTCPT^BGPMUUT1(DFN,VIEN,"BGPMU ENC OFFICE VISIT")
  1. S:+X BGP2=1
  1. Q BGP2
  1. ;
  1. EXCLUDE(DFN) ;check PATIENT ALLERGIES for allergy to IUD
  1. N BGPALL,BGPH
  1. S BGPALL=""
  1. S X=0
  1. S BGPH="" F S BGPH=$O(^GMR(120.8,"B",DFN,BGPH)) Q:BGPH="" D Q:X=1
  1. .S BGPALL=$P(^GMR(120.8,BGPH,0),U,2)
  1. .I (BGPALL="AMINOGLUTETHIMIDE")!(BGPALL="ANASTROZOLE")!(BGPALL="CAPECITABINE")!(BGPALL="EXEMESTANE")!(BGPALL="FLUOROURACIL")!(BGPALL="LEUCOVORIN") D
  1. ..S X=1
  1. Q:+X "Excluded"
  1. ;checks of VPOV and PROBLEM for Matastatic sites, Acute renal insufficiency, Neutropenia, Leukopenia
  1. S X=0
  1. S X=$$LASTDX^BGPMUUT2(DFN,0,BGPEND,"BGPMU 0385 EXCLUSIONS DX")
  1. Q:+X "Excluded"
  1. S:'+X X=$$PLTAX^BGPMUD09(DFN,"BGPMU 0385 EXCLUSIONS DX","C",0,BGPEND)
  1. Q:+X "Excluded"
  1. ;check Health Factors
  1. S X=0
  1. S X=$$HF^BGPMUD07(DFN,"BGPMU ECOG POOR")
  1. Q:+X "Excluded"
  1. ;check refusals
  1. S X=0
  1. S X=$$MEDREF^BGPMUUT2(DFN,0,BGPEN_".2359","BGPMU COLON CANCER CHEMO NDCS")
  1. Q:+X "Excluded"
  1. Q ""
  1. ;
  1. TEST ; debug target
  1. S U="^"
  1. S DT=$$DT^XLFDT()
  1. S DFN=65 ; DFN = patient code from VA PATIENT file
  1. S BGPBDATE=3100101 ; BGPBDATE = begin date of report
  1. S BGPEDATE=3101231 ; BGPEDATE = end date of report
  1. S BGPPROV=2 ; BGPPROV = provider code from NEW PERSON file
  1. S BGPMUTF="C" ; BGPMUTF = timeframe variable - "C"=current year; "P"=previous year; "B"=baseline year
  1. D ENTRY
  1. Q