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

BGPMUH15.m

Go to the documentation of this file.
  1. BGPMUH15 ;IHS/MSC/MGH - MI measure NQF0376-VTE-6 ;02-Mar-2011 16:03;MGH
  1. ;;11.0;IHS CLINICAL REPORTING;**4**;JAN 06, 2011;Build 84
  1. ;ED meaningful use hospital measures
  1. ENTRY ;PEP Vte measure 6 - VTE prophylaxis not given and pt got VTE
  1. N START,END,BGPIEN,DFN,BGPVST,BGPISDX,BGPHSDX,BGPAGEE,BGPIPROB,BGPHPROB,SECOND,EXC,NUM,BGPDIS
  1. N BGPER,BGPADTMI,BGPDD,EVDT,PDTE,ONADMIT,FIRST,EXCL,BGPVCODE,BGPRCODE,BGPVTE,BGPVTEPB,BGPVICD0
  1. ;Start by finding all admissions during the reporting period
  1. S START=BGPBDATE,EXCL=""
  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 BGPDIS=$P($G(^DGPM(BGPIEN,0)),U,17) ;Don't use if pt is still an inpt
  1. ..Q:BGPDIS=""
  1. ..;Get the admit time & discharge times
  1. ..S BGPADMIT=$P($G(^DGPM(BGPIEN,0)),U,1)
  1. ..S BGPDD=$P($G(^DGPM(BGPDIS,0)),U,1)
  1. ..;Get patient age at admission
  1. ..S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPADMIT)
  1. ..;Look for DX of VTE
  1. ..S BGPVTE=$$VSTPOVB^BGPMUUT3(DFN,BGPVST,"BGPMU VTE DX")
  1. ..S BGPVCODE=$$VSTCPT^BGPMUUT1(DFN,BGPVST,"BGPMU VTE TEST CPT")
  1. ..S PROC=$P(BGPVCODE,U,3)
  1. ..;S BGPVICD0=$$VSTICD0^BGPMUUT3(DFN,BGPVST,"BGPMU VTE TEST ICD0")
  1. ..I +BGPVTE D ;Must have DX of VTE
  1. ...;Now check to see if they were admitted with VTE
  1. ...S FIRST=$$FMADD^XLFDT(BGPADMIT,+1)
  1. ...S EXC=""
  1. ...S EVDT=$P(BGPVTE,U,3) ;Event date of POV
  1. ...S ONADMIT=$P(BGPVTE,U,4) ;Present on admission
  1. ...;I $P(EVDT,".",1)=$P(BGPADMIT,".",1)!($P(PDTE,".",1)=$P(BGPADMIT,".",1)) S EXC=1_U_"ADM"
  1. ...;I $P(EVDT,".",1)<$P(BGPADMIT,".",1)!($P(PDTE,".",1)<$P(BGPADMIT,".",1)) S EXC=1_U_"ADM"
  1. ...I ONADMIT="Y" S EXC=1_U_"ADM"
  1. ...I $P(EVDT,".",1)=$P(BGPADMIT,".",1) S EXC=1_U_"ADM"
  1. ...I $P(EVDT,".",1)<$P(BGPADMIT,".",1) S EXC=1_U_"ADM"
  1. ...I EXC="" S EXC=$$EXCLUDE(DFN,BGPIEN,BGPVST,BGPDIS,BGPADMIT)
  1. ...;If no exclusions see if they had VTE
  1. ...I EXC="" S NUM=$$NUMER(DFN,BGPADMIT,PROC,BGPVST)
  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("BGPMU0376",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0376",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0376",$J,BGPMUTF,"NUM"))
  1. S EXCCT=+$G(^TMP("BGPMU0376",$J,BGPMUTF,"EXC"))
  1. S NOTCT=+$G(^TMP("BGPMU0376",$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("BGPMU0376",$J,BGPMUTF,"DEN")=DENCT
  1. I EXC'="" D
  1. .S EXCCT=EXCCT+1 S ^TMP("BGPMU0376",$J,BGPMUTF,"EXC")=EXCCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0376",$J,"PAT",BGPMUTF,"EXC",PTCNT)=DFN_U_DATE_U_$P(EXC,U,2)
  1. I EXC="" D
  1. .I +NUM=0 D
  1. ..S NUMCT=NUMCT+1 S ^TMP("BGPMU0376",$J,BGPMUTF,"NUM")=NUMCT
  1. ..S ^TMP("BGPMU0376",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_DATE_U_PROC
  1. .I +NUM=1 D
  1. ..S ^TMP("BGPMU0376",$J,"PAT",BGPMUTF,"NOT",PTCNT)=DFN_U_DATE
  1. ..S NOTCT=NOTCT+1 S ^TMP("BGPMU0376",$J,BGPMUTF,"NOT")=NOTCT
  1. S ^TMP("BGPMU0376",$J,BGPMUTF,"TOT")=PTCNT
  1. S BGPICARE("MU.VTE.0376.1",BGPMUTF,DFN)=1_U_+$G(NUM)_U_+$G(EXC)_U_DATE_";"_$G(PROC)_";"_$P($G(EXC),U,2)
  1. Q
  1. EXCLUDE(DFN,BGPIEN,BGPVST,BGPDIS,BGPADMIT) ;See if there are exclusions
  1. N REASON,BGPLOS,BGPHOS,BGPCLIN,BGPECI,BGPALL,BGPREF,MED,PHARM,PHARMP,MECH,MECHP,FIRST,CPT
  1. N BGPRCODE,BGPVCODE,BGPVICD0
  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 palliative Care
  1. S BGPHOS=$$HOSPICE^BGPMUH08(DFN,BGPVST)
  1. I +BGPHOS S REASON=BGPHOS Q REASON
  1. ;Check for clinical trial
  1. S BGPCLIN=$$TRIAL^BGPMUH08(DFN,BGPVST)
  1. I +BGPCLIN S REASON=BGPCLIN Q REASON
  1. ;Check for refusal of VTE med
  1. S FIRST=$$FMADD^XLFDT(BGPADMIT,+1)
  1. S MED=$$MEDREF^BGPMUUT2(DFN,$P(BGPADMIT,"."),$P(FIRST,".")_".2359","BGPMU VTE PROPHYLAXIS")
  1. I +MED S REASON=MED Q REASON
  1. ;Check for refusals of procedures
  1. S CPT=$$REFTAX^BGPMUUT2(DFN,81,"BGPMU VTE DEVICES CPT",$P(BGPADMIT,"."),$P(FIRST,"."))
  1. I +CPT S REASON=CPT Q REASON
  1. ;Check for refusal of ICD
  1. S ICD=$$REFTAX^BGPMUUT2(DFN,81.1,"BGPMU VTE DEVICES ICD0",$P(BGPADMIT,"."),$P(FIRST,"."))
  1. I +ICD S REASON=ICD Q REASON
  1. ;Check diagnoses for whom VTE is not appropriate
  1. S PHARM=$$VSTPOV^BGPMUUT3(DFN,BGPVST,"BGPMU VTE EXCLUDE PHARM DXS")
  1. I +PHARM S REASON=PHARM Q REASON
  1. S PHARMP=$$PLTAX^BGPMUUT1(DFN,"BGPMU VTE EXCLUDE PHARM DXS","C")
  1. I +PHARMP S REASON=PHARMP Q REASON
  1. S MECH=$$VSTPOVB^BGPMUUT3(DFN,BGPVST,"BGPMU VTE EXCLUDE-MECH DX")
  1. I +MECH S REASON=MECH Q REASON
  1. S MECHP=$$PLTAX^BGPMUUT1(DFN,"BGPMU VTE EXCLUDE-MECH DX","C")
  1. I +MECHP S REASON=MECHP Q REASON
  1. ;Check for confirmation codes
  1. S BGPRCODE=$$FIND^BGPMUUT7(DFN,"BGPMU VTE TEST CPT",BGPADMIT,BGPDD) ;RAD procedure check
  1. S BGPVCODE=$$VSTCPT^BGPMUUT1(DFN,BGPVST,"BGPMU VTE TEST CPT")
  1. ;S BGPVICD0=$$VSTICD0^BGPMUUT3(DFN,BGPVST,"BGPMU VTE TEST ICD0") ;this is not in the ORT
  1. ;I ('+BGPRCODE)&('+BGPVCODE)&('+BGPVICD0) S REASON="1^no VTE test"
  1. I ('+BGPRCODE)&('+BGPVCODE) S REASON="1^no VTE test"
  1. Q REASON
  1. NUMER(DFN,ADMIT,PROC,VST) ;Check to see if pt is in the numerator
  1. N TAX,MEDDTE,ENDDT,VTE,MEDIEN,STATUS,DRUG,DISPENSE
  1. N TEDS,FIRST,GIVEN,NOTGIV,RETURN,DEV
  1. S VTE=0,RETURN=0
  1. ;First, see if the pt has CPT for procedure in first 24hrs
  1. S FIRST=$$FMADD^XLFDT(ADMIT,+1)
  1. S TEDS=$$DTECPT^BGPMUUT3(DFN,VST,"BGPMU VTE DEVICES CPT",ADMIT,PROC)
  1. I +TEDS S VTE=TEDS S $P(VTE,U,3)=BGPDD Q VTE
  1. S DEV=$$DTECPT^BGPMUUT3(DFN,VST,"BGPMU VTE DEVICES ICD0",ADMIT,PROC)
  1. I +DEV S VTE=DEV S $P(VTE,U,3)=BGPDD Q VTE
  1. ;See if the VTE CPT code was entered
  1. ;DEV thinks this should be here, but it is not in the ORT
  1. ;S GIVEN=$$DTECPT^BGPMUUT3(DFN,VST,"BGPMU VTE GIVEN CPT",ADMIT,PROC)
  1. ;I +GIVEN S VTE=GIVEN S $P(VTE,U,3)=BGPDD Q VTE
  1. ;Check for code that patient is not eligible
  1. ;S NOTGIV=$$DTECPT^BGPMUUT3(DFN,VST,"BGPMU VTE NOT GIVEN CPT",ADMIT,PROC)
  1. ;I +NOTGIV S VTE=NOTGIV S $P(VTE,U,3)=BGPDD Q VTE
  1. ;Check for confirmation codes
  1. S BGPRCODE=$$FIND^BGPMUUT7(DFN,"BGPMU VTE TEST CPT",ADMIT,BGPDD) ;RAD procedure check
  1. S BGPVCODE=$$VSTCPT^BGPMUUT1(DFN,BGPVST,"BGPMU VTE TEST CPT")
  1. ;S BGPVICD0=$$VSTICD0^BGPMUUT3(DFN,BGPVST,"BGPMU VTE TEST ICD0") ;this is not in the ORT
  1. ;I (+BGPRCODE)!(+BGPVCODE)!(+BGPVICD0) S VTE=$S(BGPRCODE'="":BGPRCODE,BGPVICD0'="":BGPVICD0,1:BGPVCODE) S $P(VTE,U,3)=BGPDD Q VTE
  1. I (+BGPRCODE)!(+BGPVCODE) S VTE=$S(BGPRCODE'="":BGPRCODE,1:BGPVCODE) S $P(VTE,U,3)=BGPDD Q VTE
  1. ;Finally check for a BMCA code for antithrombotics
  1. S MEDDTE=ADMIT
  1. F S MEDDTE=$O(^PSB(53.79,"AADT",DFN,MEDDTE)) Q:'+MEDDTE!(MEDDTE>PROC)!(+VTE) D
  1. .S MEDIEN="" F S MEDIEN=$O(^PSB(53.79,"AADT",DFN,MEDDTE,MEDIEN)) Q:'+MEDIEN!(+VTE) D
  1. ..S STATUS=$P($G(^PSB(53.79,MEDIEN,0)),U,9)
  1. ..I STATUS="G"!(STATUS="I")!(STATUS="C") D ;Drug given
  1. ...S DISPENSE=0 F S DISPENSE=$O(^PSB(53.79,MEDIEN,.5,DISPENSE)) Q:'+DISPENSE!(+VTE) D
  1. ....S DRUG=$G(^PSB(53.79,MEDIEN,.5,DISPENSE,0))
  1. ....S DRUG=$P(DRUG,U,1)
  1. ....S TAX="BGPMU VTE PROPHYLAXIS"
  1. ....S VTE=$$NDC^BGPMUUT4(DRUG,TAX)
  1. ....S $P(VTE,U,3)=BGPDD
  1. Q VTE
  1. TEST ;ZSAT
  1. ;S BGPBDATE=3110101
  1. ;S BGPEDATE=3110601
  1. ;S BGPBEN=3
  1. ;S DUZ("AG")="I"
  1. ;S U="^"
  1. ;D ENTRY
  1. Q