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

BGP3D91.m

Go to the documentation of this file.
  1. BGP3D91 ; IHS/CMI/LAB - calc measures 29 Apr 2010 7:38 PM 14 Nov 2006 5:02 PM 12 Nov 2009 11:03 AM 07 Apr 2010 7:00 AM ;
  1. ;;13.0;IHS CLINICAL REPORTING;**1**;NOV 20, 2012;Build 7
  1. ;
  1. EOST ;
  1. NEW BGPOXV,BGPD,BGPN
  1. K BGPOXV
  1. I 'BGPACTUP S BGPSTOP=1 Q ;no active user pop
  1. I BGPAGEB<18 S BGPSTOP=1 Q ;don't process this measure, pt under 18
  1. S BGPD1=0
  1. S BGPN1=0,BGPVALUE=""
  1. D TIAFIB(DFN,BGPBDATE,BGPEDATE,.BGPOXV)
  1. ;now evaluate result
  1. S BGPD1=BGPOXV("DENOM")
  1. I 'BGPD1 S BGPSTOP=1 Q
  1. S BGPN1=$P(BGPOXV(0),U,1)
  1. S BGPN2=$P(BGPOXV(0),U,2)
  1. S BGPN3=$P(BGPOXV(0),U,3)
  1. S BGPD="",BGPN=""
  1. S C=0 F S C=$O(BGPOXV(C)) Q:C'=+C D
  1. .S BGPN=$S(BGPN="":"Visit: ",1:BGPN_"; ")
  1. .S BGPN=BGPN_$P(BGPOXV(C),U,1)_" THERAPY: "_$P($P(BGPOXV(C),U,2)," ",2,99)
  1. .Q
  1. ;
  1. S BGPVALUE="UP"_"|||"_BGPN
  1. Q
  1. ;
  1. TIAFIB(P,BDATE,EDATE,BGPR) ;EP
  1. NEW A,X,V,BGPG,G,C,T,B,E,BGPX,BGPV,BGPD
  1. K BGPR,BGPG,BGPX
  1. S BGPR="",BGPR(0)=""
  1. S X=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,"BGPG(")
  1. I '$D(BGPG(1)) S BGPR("DENOM")=0 Q
  1. ;now go through and get rid of H and CHS
  1. S T=$O(^ATXAX("B","BGP TIA DXS",0))
  1. S A=0 F S A=$O(BGPG(A)) Q:A'=+A D
  1. .S V=$P(BGPG(A),U,5)
  1. .I '$D(^AUPNVSIT(V,0)) K BGPG(A) Q
  1. .I $P(^AUPNVSIT(V,0),U,3)="C" K BGPG(A) Q
  1. .I $P(^AUPNVSIT(V,0),U,7)'="H" K BGPG(A) Q
  1. .S X=0,G=0,E=0,B=0 F S X=$O(^AUPNVPOV("AD",V,X)) Q:X'=+X D
  1. ..S C=$P($G(^AUPNVPOV(X,0)),U)
  1. ..Q:C=""
  1. ..I $$ICD^ATXCHK(C,T,9) S G=1,$P(BGPG(A),U,15)=$$VAL^XBDIQ1(9000010.07,X,.01)
  1. ..I $$ICD^ATXCHK(C,$O(^ATXAX("B","BGP ATRIAL FIBRILLATION DXS",0)),9) S E=1
  1. .I G,E S B=1 ;have both
  1. .I 'B K BGPG(A) ;no tia diagnosis
  1. I '$D(BGPG) S BGPR("DENOM")=0 Q
  1. ;reorder the diagnoses by visit date
  1. S A=0 F S A=$O(BGPG(A)) Q:A'=+A S V=$P(BGPG(A),U,5),D=$P($P($G(^AUPNVSIT(V,0)),U),"."),BGPX(D,V)=BGPG(A)
  1. ;now get the first one
  1. S BGPD=0,BGPC=0 F S BGPD=$O(BGPX(BGPD)) Q:BGPD'=+BGPD D
  1. .S BGPV=0 F S BGPV=$O(BGPX(BGPD,BGPV)) Q:BGPV'=+BGPV D
  1. ..S BGPC=BGPC+1,BGPR(BGPC)=BGPC_") "_$$DATE^BGP2UTL(BGPD)_" POV "_$P(BGPX(BGPD,BGPV),U,15)_" + POV 427.31" ;set denominator
  1. ..S G=$$ANTICOAG(P,$$FMADD^XLFDT(BGPD,-365),$$DSCHDATE^APCLV(BGPV),BGPD) ; any ANTICOAG?
  1. ..S $P(BGPR(BGPC),U,2)=BGPC_") "_$P(G,U,1) ;set numerator column
  1. ..S $P(BGPR(0),U,$P(G,U,2))=$P(BGPR(0),U,$P(G,U,2))+1
  1. S BGPR("DENOM")=BGPC
  1. Q
  1. ANTICOAG(P,BDATE,EDATE,BGPAD) ;EP - was there ANTICOAG
  1. NEW BGPD,X,N,E,Y,T,D,C,BGPLT,L,J,BGPG,S
  1. K BGPG S Y="BGPG(",X=P_"^ALL MED;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0,G="" F S X=$O(BGPG(X)) Q:X'=+X!(G]"") D
  1. .S N=+$P(BGPG(X),U,4) ;ien of v med
  1. .S C=$$ANTIDRUG(N) ;not one of the drugs
  1. .Q:'$P(C,U)
  1. .;c=1^category of drug
  1. .I $P(^AUPNVMED(N,0),U,8)]"",$P(^AUPNVMED(N,0),U,8)'>EDATE Q ;discontinued before discharge date
  1. .S S=$P(^AUPNVMED(N,0),U,7)
  1. .I $P($P(^AUPNVSIT($P(^AUPNVMED(N,0),U,3),0),U),".")=EDATE S G=$$DATE^BGP3UTL(EDATE)_" MET: "_$P(C,U,2)_"^1" ;PRESCRIBED ON DISCHARGE DATE
  1. .S V=$P(^AUPNVMED(N,0),U,3)
  1. .S V=$P($P(^AUPNVSIT(V,0),U),".")
  1. .I $$FMADD^XLFDT(V,S)<EDATE Q ;not valid through discharge date
  1. .S G=$$DATE^BGP3UTL(V)_" MET: "_$P(C,U,2)_"^1"
  1. I G]"" Q G
  1. Q "NOT MET: NO THERAPY^3"
  1. ;
  1. ANTIDRUG(N) ;
  1. NEW G,T,I
  1. I '$D(^AUPNVMED(N,0)) Q 0
  1. I $$UP^XLFSTR($P($G(^AUPNVMED(N,11)),U))["RETURNED TO STOCK" Q 0
  1. S I=$P($G(^AUPNVMED(N,0)),U)
  1. I 'I Q 0
  1. S G=0
  1. S T=$O(^ATXAX("B","DM AUDIT ASPIRIN DRUGS",0))
  1. I T,$D(^ATXAX(T,21,"B",I)) Q "1^ASA"
  1. S T=$O(^ATXAX("B","BGP CMS WARFARIN MEDS",0))
  1. I T,$D(^ATXAX(T,21,"B",I)) Q "1^WARF"
  1. S T=$O(^ATXAX("B","DM AUDIT ANTI-PLATELET DRUGS",0))
  1. I T,$D(^ATXAX(T,21,"B",I)) Q "1^ANTI-PLT"
  1. S G=$P(^PSDRUG(I,0),U,2)
  1. I G="BL700" Q "1^ANTI-PLT"
  1. I $P(^PSDRUG(I,0),U)["WARFARIN" Q "1^WARF"
  1. Q ""
  1. ;
  1. EOOX ;
  1. NEW BGPOXV,BGPD,BGPN
  1. I 'BGPACTUP S BGPSTOP=1 Q ;no active user pop
  1. I BGPAGEB<18 S BGPSTOP=1 Q ;don't process this measure, pt under 18
  1. S BGPD1=0 ;Number of pneumonia visits
  1. S BGPN1=0,BGPVALUE=""
  1. K BGPOXV
  1. D PNEUOX(DFN,BGPBDATE,BGPEDATE,.BGPOXV)
  1. ;now evaluate result
  1. S BGPD1=BGPOXV("DENOM") ;number of pneumonia visits
  1. I 'BGPD1 S BGPSTOP=1 Q ;no pneumonia visits
  1. S BGPN1=$P(BGPOXV(0),U,1)
  1. S BGPN2=$P(BGPOXV(0),U,2)
  1. S BGPN3=$P(BGPOXV(0),U,3)
  1. S BGPD="",BGPN=""
  1. S C=0 F S C=$O(BGPOXV(C)) Q:C'=+C D
  1. .S BGPD=BGPD_$S(BGPD]"":"; ",1:"")_$P(BGPOXV(C),U)
  1. .S BGPN=BGPN_$S(BGPN]"":"; ",1:"")_$P(BGPOXV(C),U,2)
  1. ;
  1. S BGPVALUE="UP,"_BGPD_"||| "_BGPN
  1. Q
  1. ;
  1. PNEUOX(P,BDATE,EDATE,BGPR) ;EP
  1. NEW A,B,C,D,E,F,G,BGPG,BGPX,BGPD,BGPV,BGPC
  1. K BGPG,BGPR
  1. S BGPR="",BGPR(0)=""
  1. S X=P_"^ALL DX [BGP CMS PNEUMONIA;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,"BGPG(")
  1. I '$D(BGPG(1)) S BGPR("DENOM")=0 Q
  1. ;now go through and get rid of CHS or service category not A, O, S
  1. S A=0 F S A=$O(BGPG(A)) Q:A'=+A D
  1. .S V=$P(BGPG(A),U,5)
  1. .I '$D(^AUPNVSIT(V,0)) K BGPG(A)
  1. .I $P(^AUPNVSIT(V,0),U,3)="C" K BGPG(A)
  1. .I "AOS"'[$P(^AUPNVSIT(V,0),U,7) K BGPG(A)
  1. I '$D(BGPG) S BGPR("DENOM")=0 Q ;got rid of them all
  1. ;reorder the diagnoses by visit date
  1. S A=0 F S A=$O(BGPG(A)) Q:A'=+A S V=$P(BGPG(A),U,5),D=$P($P($G(^AUPNVSIT(V,0)),U),"."),BGPX(D,V)=BGPG(A)
  1. ;now get the first one
  1. S BGPD=0,BGPC=0 F S BGPD=$O(BGPX(BGPD)) Q:BGPD'=+BGPD D
  1. .S BGPV=0 F S BGPV=$O(BGPX(BGPD,BGPV)) Q:BGPV'=+BGPV D
  1. ..S BGPC=BGPC+1,BGPR(BGPC)=BGPC_") "_$$DATE^BGP2UTL(BGPD)_" "_$P(BGPX(BGPD,BGPV),U,2) ;set denominator
  1. ..S G=$$OXSAT(BGPV) ; any o2 saturation on this visit?
  1. ..S $P(BGPR(BGPC),U,2)=BGPC_") "_$P(G,U,1) ;set numerator column
  1. ..S $P(BGPR(0),U,$P(G,U,2))=$P(BGPR(0),U,$P(G,U,2))+1
  1. ..;now delete out all visits that are <46 days difference and all other visits on the same day
  1. ..S V=BGPV F S V=$O(BGPX(BGPD,V)) Q:V'=+V K BGPX(BGPD,V)
  1. ..S D=BGPD,V=BGPV F S D=$O(BGPX(D)) Q:D'=+D D
  1. ...S V=0 F S V=$O(BGPX(D,V)) Q:V'=+V I $$FMDIFF^XLFDT(D,BGPD)<46 K BGPX(D,V)
  1. S BGPR("DENOM")=BGPC
  1. Q
  1. ;
  1. OXSAT(V) ;was there ox sat at the visit
  1. ;get all O2 measurements on or after admission date
  1. NEW BGPD,X,N,E,Y,T,D,C,BGPLT,L,J,BGPG,M,M1
  1. S BGPG=""
  1. S BGPD=$P($P(^AUPNVSIT(V,0),U),".")
  1. ;K BGPG S Y="BGPG(",X=P_"^ALL MEAS O2;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(ED) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(^AUPNVMSR("AD",V,X)) Q:X'=+X!(BGPG]"") I $$VAL^XBDIQ1(9000010.01,X,.01)="O2" S BGPG=$$DATE^BGP2UTL(BGPD)_" O2 MEAS^1"
  1. I BGPG]"" Q BGPG
  1. ;now check for cpts
  1. S T=$O(^ATXAX("B","BGP CMS ABG CPTS",0))
  1. S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X!(BGPG]"") D
  1. .Q:'$D(^AUPNVCPT(X,0))
  1. .S C=$P(^AUPNVCPT(X,0),U)
  1. .Q:'$$ICD^ATXCHK(C,T,1)
  1. .S M=$$VAL^XBDIQ1(9000010.18,X,.08)
  1. .S M1=$$VAL^XBDIQ1(9000010.18,X,.09)
  1. .I $P(^ICPT(C,0),U)="3028F",(M="1P"!(M="2P")!(M="3P")!(M="4P")!(M="8P")) Q ;3028f and has modifier
  1. .I $P(^ICPT(C,0),U)="3028F",(M1="1P"!(M="2P")!(M="3P")!(M="4P")!(M="8P")) Q ;3028f and has modifier
  1. .S BGPG=$$DATE^BGP2UTL(BGPD)_" O2 SAT: CPT "_$P($$CPT^ICPTCOD(C),U,2)_"^1"
  1. .Q
  1. I BGPG]"" Q BGPG
  1. ;now check v tran
  1. S T=$O(^ATXAX("B","BGP CMS ABG CPTS",0))
  1. S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X!(BGPG]"") D
  1. .Q:'$D(^AUPNVTC(X,0))
  1. .S C=$P(^AUPNVTC(X,0),U,7)
  1. .Q:C=""
  1. .Q:'$$ICD^ATXCHK(C,T,1)
  1. .S BGPG=$$DATE^BGP2UTL(BGPD)_" O2 SAT: CPT "_$P($$CPT^ICPTCOD(C),U,2)_"^1"
  1. .Q
  1. I BGPG]"" Q BGPG
  1. ;now check for lab tests
  1. S T=$O(^ATXAX("B","BGP CMS ABG LOINC",0))
  1. S BGPLT=$O(^ATXLAB("B","BGP CMS ABG TESTS",0))
  1. S X=0 F S X=$O(^AUPNVLAB("AD",V,X)) Q:X'=+X!(BGPG]"") D
  1. .Q:'$D(^AUPNVLAB(X,0))
  1. .I BGPLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(BGPLT,21,"B",$P(^AUPNVLAB(X,0),U))) S BGPG=$$DATE^BGP2UTL(BGPD)_" O2 SAT: LAB "_$$VAL^XBDIQ1(9000010.09,X,.01)_"^1" Q
  1. .Q:'T
  1. .S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
  1. .Q:'$$LOINC^BGP2D21(J,T)
  1. .S BGPG=$$DATE^BGP2UTL(BGPD)_" O2 SAT: LAB "_$$VAL^XBDIQ1(9000010.09,X,.01)_"^1" Q
  1. I BGPG]"" Q BGPG
  1. Q $$DATE^BGP2UTL(BGPD)_" None^3"
  1. ;