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

BGPMUH08.m

Go to the documentation of this file.
  1. BGPMUH08 ; IHS/MSC/MGH - MI measure NQF0440-STK-8 ;02-Mar-2011 16:19;DU
  1. ;;11.0;IHS CLINICAL REPORTING;**4**;JAN 06, 2011;Build 84
  1. ;ED meaningful use hospital measured
  1. ; print output routine is BGPMUHP4
  1. ; delimited output routine is BGPMUHD3
  1. ENTRY ;PEP Stroke Measure 8 - stroke education
  1. N START,END,BGPIEN,DFN,BGPVST,BGPISDX,BGPHSDX,BGPAGEE,BGPIPROB,BGPHPROB,STROKE,EXC,NUM,BGPDIS
  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. ..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 BGPADM=$P($$GET1^DIQ(9000010,BGPVST_",",.01,"I"),".",1) ;get admin date
  1. ..S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPADM)
  1. ..S BGPDIS=$P($G(^DGPM(BGPIEN,0)),U,17) ;Don't use if pt is still an inpt
  1. ..Q:BGPDIS=""
  1. ..;Check for a diagnosis of stroke (both types for this measure)
  1. ..S STROKE=0,EXC=0,NUM=0
  1. ..;S BGPISDX=$$VSTPOV^BGPMUUT3(DFN,BGPVST,"BGPMU ISCHEMIC STROKE DX") ;ZSAT
  1. ..;S BGPHSDX=$$VSTPOV^BGPMUUT3(DFN,BGPVST,"BGPMU HEMORRHAGIC STROKE DX") ;ZSAT
  1. ..S BGPISDX=$$VSTPOVA^BGPMUUT3(DFN,BGPVST,"BGPMU ISCHEMIC STROKE DX")
  1. ..S BGPHSDX=$$VSTPOVA^BGPMUUT3(DFN,BGPVST,"BGPMU HEMORRHAGIC STROKE DX")
  1. ..;S BGPIPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU ISCHEMIC STROKE DX","A")
  1. ..;S BGPHPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU HEMORRHAGIC 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 +BGPHSDX&(+BGPHPROB) S STROKE=1
  1. ..I +BGPISDX S STROKE=1
  1. ..I +BGPHSDX S STROKE=1
  1. ..;Next check for exclusions
  1. ..I +STROKE D
  1. ...S EXC=$$EXCLUDE(DFN,BGPIEN,BGPVST)
  1. ...;If no exclusions see if they had the education coded
  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("BGPMU0440",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0440",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0440",$J,BGPMUTF,"NUM"))
  1. S NOTCT=+$G(^TMP("BGPMU0440",$J,BGPMUTF,"NOT"))
  1. S EXCCT=+$G(^TMP("BGPMU0440",$J,BGPMUTF,"EXC"))
  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("BGPMU0440",$J,BGPMUTF,"DEN")=DENCT
  1. I EXC'="" D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0440",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0440",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_$P(EXC,U,2)
  1. I EXC="" D
  1. .S ^TMP("BGPMU0440",$J,"PAT",BGPMUTF,"DEN",PTCNT)=DFN_U_DATE
  1. .I +NUM=1 D
  1. ..S NUMCT=NUMCT+1 S ^TMP("BGPMU0440",$J,BGPMUTF,"NUM")=NUMCT
  1. ..S ^TMP("BGPMU0440",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DATE_U_$P(NUM,U,3)_U_$P(NUM,U,2)
  1. .I +NUM=0 D
  1. ..S NOTCT=NOTCT+1 S ^TMP("BGPMU0440",$J,BGPMUTF,"NOT")=NOTCT
  1. ..S ^TMP("BGPMU0440",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DATE_U_$P(NUM,U,3)_U_$P(NUM,U,2)
  1. S ^TMP("BGPMU0440",$J,BGPMUTF,"TOT")=PTCNT
  1. S BGPICARE("MU.STK.0435.1",BGPMUTF,DFN)=1_U_+$G(NUM)_U_+EXC_U_DATE_";"_$P($G(NUM),U,3)_";"_$P(EXC,U,2)
  1. Q
  1. EXCLUDE(DFN,BGPIEN,BGPVST) ;See if there are exclusions
  1. N REASON,BGPLOS,BGPHOS,BGPCLIN,BGPECI
  1. S REASON=""
  1. I BGPAGEE<18 S REASON="1^AGE" Q REASON
  1. ;Check for LOS
  1. S BGPLOS=$$LOS(BGPIEN,BGPDIS)
  1. I BGPLOS>120 S REASON="1^LOS" Q REASON
  1. ;Check for hospice care
  1. S BGPHOS=$$HOSPICE(DFN,BGPVST)
  1. I +BGPHOS S REASON=BGPHOS Q REASON
  1. ;Check for clinical trials
  1. S BGPCLIN=$$TRIAL(DFN,BGPVST)
  1. I +BGPCLIN S REASON=BGPCLIN Q REASON
  1. ;Check for elective carotid intervention procedure
  1. S BGPECI=$$ELECTIVE(DFN,BGPVST,BGPIEN)
  1. I +BGPECI S REASON=BGPECI Q REASON
  1. Q REASON
  1. NUMER(DFN,BGPVST,BGPIEN,BGPDIS) ;Check to see if pt is in the numerator
  1. N EDU,ETOPIC,D,Y,BDATE,EDATE,LIT,LIT2,%,EIEN,ICD,BGPMU,TNAME
  1. S BDATE=$P($G(^DGPM(BGPIEN,0)),U,1)
  1. S EDATE=$P($G(^DGPM(BGPDIS,0)),U,1)
  1. S (%,ETOPIC,LIT,LIT2)=0
  1. ;Find all the patient ed topics from admission to discharge
  1. ;Loop through the array and look for stroke education
  1. S EIEN="" F S EIEN=$O(^AUPNVPED("AD",BGPVST,EIEN)) Q:EIEN=""!(%'=0) D
  1. .S ETOPIC=$P($G(^AUPNVPED(EIEN,0)),U,1)
  1. .Q:'ETOPIC
  1. .Q:'$D(^AUTTEDT(ETOPIC,0))
  1. .;Quit if you find the specific stroke eduction topic
  1. .S TNAME=$P($G(^AUTTEDT(ETOPIC,0)),U,1)
  1. .S TTIME=$P($G(^AUPNVPED(EIEN,12)),U,1)
  1. .I TNAME="STROK-LITERATURE" S %=1_U_TNAME_U_TTIME Q
  1. .I $P(TNAME,"-",2)="LITERATURE" D
  1. ..;Check for diagnoses related literature
  1. ..S ICD=$P(TNAME,"-",1)
  1. ..I +ICD S LIT=$$EDLOOP(ICD,"BGPMU ISCHEMIC STROKE DX")
  1. ..I +LIT S %=LIT_U_TTIME
  1. ..I +ICD S LIT2=$$EDLOOP(ICD,"BGPMU HEMORRHAGIC STROKE DX")
  1. ..I +LIT2 S %=LIT2_U_TTIME
  1. S:+% $P(%,U,3)=EDATE
  1. Q %
  1. EDLOOP(ICD,TAX) ;Find ed code in taxonomy
  1. N BGPTX,X,%,CODE
  1. S %=0
  1. S BGPTX=$O(^ATXAX("B",TAX,0))
  1. S X=0 F S X=$O(^ATXAX(BGPTX,21,X)) Q:X=""!(%'=0) D
  1. .S CODE=$P($G(^ATXAX(BGPTX,21,X,0)),U,1)
  1. .I CODE=ICD S %=1_U_CODE_"-LITERATURE"
  1. Q %
  1. LOS(BGPIEN,BGPDIS) ;Return the length of stay
  1. N DAYS,X1,X2,X
  1. S DAYS=0
  1. S X2=$P($G(^DGPM(BGPIEN,0)),U,1)
  1. S X1=$P($G(^DGPM(BGPDIS,0)),U,1)
  1. D ^%DTC S DAYS=X
  1. Q DAYS
  1. HOSPICE(DFN,BGPVST) ;Return if hospice DX/problem was found for this patient
  1. N COMFORT,BGPTDX,BGPTPROB,BGPTCPT
  1. S COMFORT=0
  1. S BGPTDX=$$VSTPOVB^BGPMUUT3(DFN,BGPVST,"BGPMU TERMINAL")
  1. I +BGPTDX S COMFORT=BGPTDX
  1. S BGPTPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU TERMINAL","C")
  1. I +BGPTPROB S COMFORT=BGPTPROB
  1. S BGPTCPT=$$VSTCPT^BGPMUUT1(DFN,BGPVST,"BGPMU PALLIATIVE CARE CPT")
  1. I +BGPTCPT S COMFORT=BGPTCPT
  1. Q COMFORT
  1. TRIAL(DFN,BGPVST) ;Return if patient is on a clinical trial
  1. N CLIN,BGPCDX,BGPCPROB
  1. S CLIN=0
  1. S BGPCDX=$$VSTPOVB^BGPMUUT3(DFN,BGPVST,"BGPMU CLINICAL TRIAL DX")
  1. I +BGPCDX S CLIN=BGPCDX
  1. S BGPCPROB=$$PLTAX^BGPMUUT1(DFN,"BGPMU CLINICAL TRIAL DX","C")
  1. I +BGPCPROB S CLIN=BGPCPROB
  1. Q CLIN
  1. ELECTIVE(DFN,BGPVST,BGPIEN) ;Return if pt was admitted for an elective carotic interventions procedures
  1. N PROC,TYPE,BGPCPT,BGPICD0
  1. S PROC=0
  1. S TYPE=$$GET1^DIQ(405,BGPIEN,9999999.05)
  1. I TYPE="ELECTIVE" D
  1. .S BGPICD0=$$VSTICD0^BGPMUUT3(DFN,BGPVST,"BGPMU CAROTID INTER ICD0")
  1. .I +BGPICD0 S PROC=BGPICD0
  1. Q PROC