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

BGPMUH07.m

Go to the documentation of this file.
  1. BGPMUH07 ; IHS/MSC/MGH - MU measure NQF0439-STK-6 ;02-Mar-2011 16:18;DU
  1. ;;11.0;IHS CLINICAL REPORTING;**4**;JAN 06, 2011;Build 84
  1. ;meaningful use hospital measure STROKE-6 - High Cholest w/ Statin Rx
  1. ;
  1. ENTRY ;PEP Stroke Measure 6 - High Cholest w/ Statin RxHigh Cholest w/ Statin Rx
  1. N START,END,BGPIEN,DFN,BGPVST,BGPISDX,BGPAGEE,BGPBIRTH,BGPIPROB,STROKE,EXC,NUM,BGPDIS,BGPCHOL,BGPLIPID
  1. N BGPADM
  1. ;Start by finding all admissions during the reporting period
  1. S START=BGPBDATE
  1. S END=BGPEDATE_".2359"
  1. F S START=$O(^DGPM("B",START)) Q:START=""!(START>END) D
  1. .S BGPIEN="" F S BGPIEN=$O(^DGPM("B",START,BGPIEN)) Q:BGPIEN="" D
  1. ..Q:$P($G(^DGPM(BGPIEN,0)),U,2)'=1 ;Only include admissions
  1. ..S DFN=$P($G(^DGPM(BGPIEN,0)),U,3)
  1. ..S BGPBIRTH=$$DOB^AUPNPAT(DFN)
  1. ..Q:DFN=""
  1. ..S BGPACTUP=$$ACTUPAP^BGPMUEHD(DFN,BGPBDATE,BGPEDATE,BGPBEN)
  1. ..I 'BGPACTUP,'$G(BGPXPXPX),'$G(BGPIISO) Q
  1. ..S BGPVST=$P($G(^DGPM(BGPIEN,0)),U,27) ;Get the visit
  1. ..Q:BGPVST=""
  1. ..S BGPDIS=$P($G(^DGPM(BGPIEN,0)),U,17) ;Don't use if pt is still an inpt
  1. ..Q:BGPDIS=""
  1. ..S BGPADM=$P($$GET1^DIQ(9000010,BGPVST_",",.01,"I"),".",1) ;get admin date
  1. ..S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPADM)
  1. ..;Check for a diagnosis of stroke
  1. ..S STROKE=0,EXC=0,NUM=0
  1. ..S BGPISDX=$$VSTPOVA^BGPMUUT3(DFN,BGPVST,"BGPMU ISCHEMIC STROKE DX")
  1. ..;S BGPIPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU ISCHEMIC STROKE DX","A")
  1. ..;Pt must have both a POV of stoke and it must be an active problem
  1. ..;I +BGPISDX&(+BGPIPROB) S STROKE=1
  1. ..I +BGPISDX S STROKE=1
  1. ..Q:'STROKE
  1. ..;Pt must have high cholest OR (not measured) OR (on a lipid lowering drug prior to arrival)
  1. ..S BGPCHOL=$$CHOLEST(DFN,BGPIEN,BGPVST) ; returns 0 for normal, 1^<value>, or 2 for not measured
  1. ..S BGPLIPID=$$LIPIDRX(DFN,BGPVST)
  1. ..;quit if normal cholest AND not on a lipid lowering agent
  1. ..I 'BGPCHOL,'BGPLIPID Q
  1. ..;Next check for exclusions
  1. ..S EXC=$$EXCLUDE(DFN,BGPIEN,BGPVST,BGPBIRTH)
  1. ..;If no exclusions see if they have high cholesterol and an Rx for statin
  1. ..I '+EXC S NUM=$$NUMER(DFN,BGPVST,BGPIEN,BGPDIS)
  1. ..;Now add it all up
  1. ..D TOTAL(BGPIEN)
  1. Q
  1. TOTAL(BGPIEN) ;add up the totals
  1. N PTCNT,EXCCT,DENCT,NUMCT,TOTALS,DATE,NOTCT
  1. S TOTALS=$G(^TMP("BGPMU0439",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0439",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0439",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0439",$J,BGPMUTF,"EXC"))
  1. S NOTCT=+$G(^TMP("BGPMU0439",$J,BGPMUTF,"NOT"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. S DATE=$$DATE^BGPMUUTL($P($G(^DGPM(BGPIEN,0)),U,1))
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0439",$J,BGPMUTF,"DEN")=DENCT
  1. I +EXC D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0439",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0439",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_$P(EXC,U,2)
  1. I '+EXC D
  1. .I +NUM=1 D
  1. ..S NUMCT=NUMCT+1 S ^TMP("BGPMU0439",$J,BGPMUTF,"NUM")=NUMCT
  1. ..S ^TMP("BGPMU0439",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DATE_U_$P(NUM,U,3)_U_$P(NUM,U,2)_U_$P(BGPCHOL,U,2)_U_$P(BGPLIPID,U,2)
  1. .I +NUM=0 D
  1. ..S NOTCT=NOTCT+1 S ^TMP("BGPMU0439",$J,BGPMUTF,"NOT")=NOTCT
  1. ..S ^TMP("BGPMU0439",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DATE_U_$P(NUM,U,3)_U_$P(NUM,U,2)_U_$P(BGPCHOL,U,2)_U_$P(BGPLIPID,U,2)
  1. S ^TMP("BGPMU0439",$J,BGPMUTF,"TOT")=PTCNT
  1. S BGPICARE("MU.STK.0439.1",BGPMUTF,DFN)=1_U_+$G(NUM)_U_+EXC_U_DATE_";"_$P($G(NUM),U,3)_";"_$P(EXC,U,2)
  1. Q
  1. CHOLEST(DFN,BGPIEN,BGPVST) ; RETURNS 0^value^dt for normal, 1^value^date if high or a 2 if cholesterol not measured
  1. ;search for LDL-c measurement in LAB data
  1. ; from 30-days prior to the admission date through the
  1. ; first 48 hours of the encounter
  1. N LDLSDATE,LDLEDATE,ADMDATE,BGPLDL,LIEN,LABVAL,%,LDLFOUND
  1. S %=2
  1. S ADMDATE=$P($G(^DGPM(BGPIEN,0)),U,1)
  1. S LDLSDATE=$$FMADD^XLFDT(ADMDATE,-30),LDLEDATE=$$FMADD^XLFDT(ADMDATE,2)
  1. S BGPLDL=$$LOINC^BGPMUUT2(DFN,LDLSDATE,LDLEDATE,"BGPMU LDL LOINC")
  1. I +BGPLDL D
  1. .S LIEN=$P(BGPLDL,U,2)
  1. .S LABVAL=$P($G(^AUPNVLAB(LIEN,0)),U,4)
  1. .I LABVAL>=100 D
  1. ..S %=1_U_LABVAL_U_$P(BGPLDL,U,1) Q
  1. .I LABVAL<100 D
  1. ..S %=0_U_LABVAL_U_$P(BGPLDL,U,1)
  1. Q %
  1. LIPIDRX(DFN,BGPVST) ;
  1. Q $$FIND^BGPMUUT4(DFN,"BGPMU LIPID LOWERING NDCS",$P($G(^DGPM(BGPIEN,0)),U,1),"OP")
  1. EXCLUDE(DFN,BGPIEN,BGPVST,BGPBIRTH) ;See if there are exclusions
  1. N REASON,BGPLOS,BGPHOS,BGPCLIN,BGPECI,BGPATH,DTYPE1,DTYPE1C,DTYPE2,DTYPE2C,BGPALL,BGPREF
  1. S REASON=""
  1. I BGPAGEE<18 S REASON="1^AGE" Q REASON
  1. ;Check for LOS
  1. S BGPLOS=$$LOS^BGPMUH08(BGPIEN,BGPDIS)
  1. I BGPLOS>120 S REASON="1^LOS" Q REASON
  1. ;Check for hospice care
  1. S BGPHOS=$$HOSPICE^BGPMUH08(DFN,BGPVST)
  1. I +BGPHOS S REASON=BGPHOS Q REASON
  1. ;Check for clinical trials
  1. S BGPCLIN=$$TRIAL^BGPMUH08(DFN,BGPVST)
  1. I +BGPCLIN S REASON=BGPCLIN Q REASON
  1. ;Check for elective carotid intervention procedure
  1. S BGPECI=$$ELECTIVE^BGPMUH08(DFN,BGPVST,BGPIEN)
  1. I +BGPECI S REASON=BGPECI Q REASON
  1. ;Check for no evidence of Atherosclerosis
  1. S BGPATH=$$ATHERO(DFN,BGPVST,BGPIEN,BGPBIRTH)
  1. I 'BGPATH S REASON="1^No Atherosclerosis" Q REASON
  1. ;
  1. ; ajf ; Getting specific discharge reasons
  1. ;Check for discharge reasons
  1. S DTYPE1=$P($G(^DGPM(BGPDIS,0)),U,4)
  1. S DTYPE2=$P($G(^DGPM(BGPDIS,"IHS")),U,7)
  1. ;I DTYPE1'=12 S REASON="1^"_DTYPE1
  1. ;I DTYPE2'=1 S REASON="1^"_DTYPE2
  1. I DTYPE1 S DTYPE1C=$$MOVE(DTYPE1) I +DTYPE1C S REASON=DTYPE1C Q REASON
  1. I DTYPE2 S DTYPE2C=$$PSTAT(DTYPE2) I +DTYPE2C S REASON=DTYPE2C Q REASON
  1. ;
  1. ;Check for allergies to statins
  1. S BGPALL=$$ALLER(DFN)
  1. I +BGPALL S REASON=BGPALL Q REASON
  1. ;Check for refusals
  1. S BGPREF=$$REF(DFN,BGPVST,BGPDIS)
  1. I +BGPREF S REASON=BGPREF
  1. Q REASON
  1. ALLER(DFN) ;Find if pt has allergies to statins
  1. N AA,BB,X,Y,TEST
  1. S (AA,TEST)=0
  1. I '$D(^GMR(120.8,"B",DFN)) Q TEST
  1. F S AA=$O(^GMR(120.8,"B",DFN,AA)) Q:AA'>0!(TEST=1) D
  1. . I $P(^GMR(120.8,AA,0),"^",16)'=1 Q ;Quit if not verified
  1. . I $D(^GMR(120.8,AA,"ER")),$P(^GMR(120.8,AA,"ER"),"^",1)=1 Q ;
  1. . S X=$P(^GMR(120.8,AA,0),"^",2) X ^%ZOSF("UPPERCASE")
  1. . I (Y["LIST DRUG")!(Y["NAMES HERE???") S TEST="1^"_Y ; <----- NEEDS ATTENTION
  1. . S BB=0
  1. . F S BB=$O(^GMR(120.8,AA,3,"B",BB)) Q:BB'>0 D
  1. . . I $P(^PS(50.605,BB,0),"^",1)="CV350" S TEST="1^"_Y
  1. Q TEST
  1. REF(DFN,BGPVST,BGPDIS) ;Find refuals for this medication
  1. N ENDDT,X1,X2,X,MED,BGPEVT,DISDT,TAX
  1. S MED=0
  1. S BGPEVT=$P($G(^AUPNVSIT(BGPVST,0)),U,1)
  1. S DISDT=$P($G(^DGPM(BGPDIS,0)),U,1)
  1. S ENDDT=$$FMADD^XLFDT(DISDT,+1)
  1. S TAX="BGPMU STATIN NDCS"
  1. S MED=$$MEDREF^BGPMUUT2(DFN,BGPEVT,ENDDT,TAX)
  1. Q MED
  1. ATHERO(DFN,BGPVST,BGPIEN,BGPBIRTH) ;Find evidence of atherosclerosis
  1. N BGPF,BGPF1,BGPF2,BGPI,BGPADX,BGPAPROB,BGPCS,BGPTMP
  1. S BGPF=0 ;DX pair found
  1. F BGPI=1:1 Q:+BGPF S BGPCS=$T(ATHEROT+BGPI) Q:$P(BGPCS,";;",2)="" D
  1. .S BGPF1=$$LASTDXI^BGPMUUT2(DFN,$P(BGPCS,";;",2),BGPBIRTH,BGPEDATE)
  1. .S BGPF2=$$LASTDXI^BGPMUUT2(DFN,$P(BGPCS,";;",3),BGPBIRTH,BGPEDATE)
  1. .S BGPF=(+BGPF1)&(+BGPF2)
  1. I +BGPF Q BGPF1
  1. S BGPADX=$$LASTDX^BGPMUUT2(DFN,BGPBIRTH,BGPEDATE,"BGPMU ATHEROSCLEROSIS DX")
  1. I +BGPADX Q BGPADX
  1. S BGPAPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU ATHEROSCLEROSIS DX","C")
  1. Q BGPAPROB
  1. ATHEROT ;;
  1. ;;250.70;;443.81
  1. ;;250.80;;443.9
  1. ;;250.81;;443.89
  1. ;;414.06;;996.83
  1. ;;434.91;;784.51
  1. ;;414.00;;997.1
  1. ;
  1. NUMER(DFN,BGPVST,BGPIEN,BGPDIS) ;Check to see if pt is in the numerator
  1. N %,DISCHKDT,EDATE
  1. S EDATE=$P($G(^DGPM(BGPDIS,0)),U,1)
  1. S %=0
  1. S DISCHKDT=$$FMADD^XLFDT(EDATE,1),$P(DISCHKDT,".",2)="0001"
  1. S %=$$FIND^BGPMUUT4(DFN,"BGPMU STATIN NDCS",DISCHKDT,"OP")
  1. S:+% $P(%,U,3)=EDATE
  1. Q %
  1. ;
  1. MOVE(IEN) ;Check to see if movement is part of exclusions
  1. ; Transfer status from Facility Movement Type 405.1
  1. ; 2,3,13,14
  1. I IEN=2!IEN=3!IEN=13!IEN=14 Q "1^TRANSFER"
  1. ;Death -
  1. ; 15,16,17,18
  1. I IEN=15!IEN=16!IEN=17!IEN=18 Q "1^DEATH"
  1. Q 0
  1. ;
  1. PSTAT(IEN) ;Check to see if patient status code is part of exclusions
  1. ; Transfer status from Patient Status Code 99999.04
  1. I IEN>19,IEN<30 Q "1^DEATH"
  1. I IEN=40!IEN=41!IEN=42 Q "1^DEATH"
  1. ;
  1. ;Discharged/Transferred to a Hospice
  1. I IEN=50!IEN=51 Q "1^HOSPICE"
  1. ;
  1. ;Transferred to Federal HealthCARE Facility
  1. I IEN=3!IEN=4!IEN=62!IEN=63!IEN=63 Q "1^FH TRANSFER"
  1. ;
  1. Q 0