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

BGP4CU1.m

Go to the documentation of this file.
  1. BGP4CU1 ; IHS/CMI/LAB - calc CMS measures 26 Sep 2004 11:28 AM 04 May 2010 2:38 PM 30 Oct 2009 11:26 AM ;
  1. ;;14.1;IHS CLINICAL REPORTING;;MAY 29, 2014;Build 114
  1. ;
  1. ASAALLEG(P,BDATE,EDATE) ;EP does patient have an aspirin allergy documented on or before EDATE
  1. NEW BGPG,G,X,N,Z,Y,T,I
  1. K BGPG
  1. I $G(BDATE)="" S BDATE=$$DOB^AUPNPAT(P)
  1. S G=""
  1. S X=P_"^ALL DX [BGP ASA ALLERGY 995.0-995.3;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,"BGPG(")
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X!(G) D
  1. .S Y=+$P(BGPG(X),U,4)
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04),N=$$UP^XLFSTR(N)
  1. .I N["ASPIRIN"!(N["ASA") S G=1_U_$$DATE^BGP4UTL($P(BGPG(X),U))_" POV "_$$VAL^XBDIQ1(9000010.07,Y,.01) Q
  1. .S T=$O(^ATXAX("B","BGP ADV EFF SALICYLATES",0))
  1. .S Z=$P(^AUPNVPOV(Y,0),U,9) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,18) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,19) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .Q
  1. I G Q G ;found pov
  1. S G=""
  1. K BGPG S BGPG=$$LASTDX^BGP4UTL1(P,"BGP ADV EFF SALICYLATES 10",$$DOB^AUPNPAT(P),EDATE)
  1. I BGPG S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG,U,3))_" ["_$P(BGPG,U,2)_"]"
  1. I G Q G
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP HX DRUG ALLERGY NEC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X!(G) D
  1. .S Y=+$P(BGPG(X),U,4)
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04),N=$$UP^XLFSTR(N)
  1. .I N["ASPIRIN"!(N["ASA") S G=1_U_$$DATE^BGP4UTL($P(BGPG(X),U))_" POV "_$$VAL^XBDIQ1(9000010.07,Y,.01)
  1. .Q
  1. I G Q G
  1. ;now check problem list for these codes
  1. S T="",T=$O(^ATXAX("B","BGP ASA ALLERGY 995.0-995.3",0))
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G) D
  1. .S I=$P($G(^AUPNPROB(X,0)),U),Y=$P($$ICDDX^BGP4UTL2(I),U,2)
  1. .S N=$$VAL^XBDIQ1(9000011,X,.05),N=$$UP^XLFSTR(N)
  1. .Q:$P(^AUPNPROB(X,0),U,8)<BDATE
  1. .Q:$P(^AUPNPROB(X,0),U,8)>EDATE ;added after DIS DATE
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .I $$ICD^BGP4UTL2(I,$O(^ATXAX("B","BGP HX DRUG ALLERGY NEC",0)),9)!($$ICD^BGP4UTL2(I,T,9)),N["ASPIRIN"!(N["ASA") S G=1_U_$$DATE^BGP4UTL($P(^AUPNPROB(X,0),U,8))_" Problem List "_$$VAL^XBDIQ1(9000011,X,.01) Q
  1. .I $$ICD^BGP4UTL2(I,$O(^ATXAX("B","BGP ADV EFF SALICYLATES 10",0)),9) S G=1_U_"PROBLEM LIST: "_$$DATE^BGP4UTL($P(^AUPNPROB(X,0),U,8))_" ["_Y_"] "
  1. I G Q G
  1. ;now check allergy tracking
  1. S X=0 F S X=$O(^GMR(120.8,"B",P,X)) Q:X'=+X!(G) D
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")<BDATE
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")>EDATE ;entered after
  1. .S N=$P($G(^GMR(120.8,X,0)),U,2),N=$$UP^XLFSTR(N)
  1. .I N["ASPIRIN" S G=1_U_$$DATE^BGP4UTL($P($P($G(^GMR(120.8,X,0)),U,4),"."))_" Allergy Tracking "_N
  1. Q G
  1. ;
  1. ACEALLEG(P,BDATE,EDATE) ;EP
  1. NEW ED,BD,BGPG,G,X,Y,Z,N
  1. S G=""
  1. I $G(BDATE)="" S BDATE=$$DOB^AUPNPAT(P)
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP ASA ALLERGY 995.0-995.3;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04) S N=$$UP^XLFSTR(N)
  1. .I N["ACEI"!(N["ACE I") S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_"] "_N Q
  1. .S T=$O(^ATXAX("B","BGP ADV EFF ANTIHYPERTEN AGT",0))
  1. .S Z=$P(^AUPNVPOV(Y,0),U,9) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,18) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,19) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .Q
  1. I G Q G
  1. S G=""
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP ADV EFF ANTIHYPER 10;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I $D(BGPG(1)) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(1),U))_" ["_$P(BGPG(1),U,2)_"]"
  1. I G Q G
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP HX DRUG ALLERGY NEC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04),N=$$UP^XLFSTR(N)
  1. .I N["ACEI"!(N["ACE I") S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_"] "_N
  1. I G Q G
  1. S T="",T=$O(^ATXAX("B","BGP ASA ALLERGY 995.0-995.3",0))
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P($G(^AUPNPROB(X,0)),U),Y=$P($$ICDDX^BGP4UTL2(I),U,2)
  1. .S N=$$VAL^XBDIQ1(9000011,X,.05),N=$$UP^XLFSTR(N)
  1. .Q:$P(^AUPNPROB(X,0),U,8)<BDATE
  1. .Q:$P(^AUPNPROB(X,0),U,8)>EDATE ;added after discharge date
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .I $$ICD^BGP4UTL2(I,$O(^ATXAX("B","BGP HX DRUG ALLERGY NEC",0)),9)!($$ICD^BGP4UTL2(I,T,9)),N["ACEI"!(N["ACE I") S G=1_U_"PROBLEM LIST: "_$$DATE^BGP4UTL($P(^AUPNPROB(X,0),U,8))_" ["_Y_"] "_N Q
  1. .I $$ICD^BGP4UTL2(I,$O(^ATXAX("B","BGP ADV EFF ANTIHYPER 10",0)),9) S G=1_U_"PROBLEM LIST: "_$$DATE^BGP4UTL($P(^AUPNPROB(X,0),U,8))_" ["_Y_"] "
  1. .Q
  1. I G Q G
  1. S X=0 F S X=$O(^GMR(120.8,"B",P,X)) Q:X'=+X D
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")<BDATE
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")>EDATE ;entered after discharge date
  1. .S N=$P($G(^GMR(120.8,X,0)),U,2),N=$$UP^XLFSTR(N)
  1. .I N["ACEI"!(N["ACE INHIBITOR") S G=1_U_"ALLERGY TRACKING: "_$$DATE^BGP4UTL($P(^GMR(120.8,X,0),U,4))_" "_N
  1. Q G
  1. ;
  1. ARBALLEG(P,BDATE,EDATE) ;EP
  1. NEW ED,BD,BGPG,G,X,Y,Z,N
  1. S G=""
  1. I $G(BDATE)="" S BDATE=$$DOB^AUPNPAT(P)
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP ASA ALLERGY 995.0-995.3;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04) S N=$$UP^XLFSTR(N)
  1. .I N["ARB"!(N["ANGIOTENSIN RECEPTOR BLOCKER") S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_"] "_N Q
  1. .S T=$O(^ATXAX("B","BGP ADV EFF ANTIHYPERTEN AGT",0))
  1. .S Z=$P(^AUPNVPOV(Y,0),U,9) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,18) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .S Z=$P(^AUPNVPOV(Y,0),U,19) I Z]"",$$ICD^BGP4UTL2(Z,T,9) S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_" + "_$P($$ICDDX^BGP4UTL2(Z),U,2)_"] "_N Q
  1. .Q
  1. I G Q G
  1. K BGPG S Y="BGPG(",X=P_"^ALL DX [BGP HX DRUG ALLERGY NEC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .S N=$$VAL^XBDIQ1(9000010.07,Y,.04),N=$$UP^XLFSTR(N)
  1. .I N["ARB"!(N["ANGIOTENSIN RECEPTOR BLOCKER") S G=1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" ["_$P(BGPG(X),U,2)_"] "_N
  1. I G Q G
  1. S T="",T=$O(^ATXAX("B","BGP ASA ALLERGY 995.0-995.3",0))
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P($G(^AUPNPROB(X,0)),U),Y=$P($$ICDDX^BGP4UTL2(I),U,2)
  1. .S N=$$VAL^XBDIQ1(9000011,X,.05),N=$$UP^XLFSTR(N)
  1. .Q:$P(^AUPNPROB(X,0),U,8)<BDATE
  1. .Q:$P(^AUPNPROB(X,0),U,8)>EDATE ;added after discharge date
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .I $$ICD^BGP4UTL2(I,$O(^ATXAX("B","BGP HX DRUG ALLERGY NEC",0)),9)!($$ICD^BGP4UTL2(I,T,9)),N["ARB"!(N["ANGIOTENSIN RECEPTOR BLOCKER") S G=1_U_"PROBLEM LIST: "_$$DATE^BGP4UTL($P(^AUPNPROB(X,0),U,8))_" ["_Y_"] "_N
  1. .Q
  1. I G Q G
  1. S X=0 F S X=$O(^GMR(120.8,"B",P,X)) Q:X'=+X D
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")<BDATE
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")>EDATE ;entered after discharge date
  1. .S N=$P($G(^GMR(120.8,X,0)),U,2),N=$$UP^XLFSTR(N)
  1. .I N["ARB"!(N["ANGIOTENSIN RECEPTOR BLOCKER") S G=1_U_"ALLERGY TRACKING: "_$$DATE^BGP4UTL($P(^GMR(120.8,X,0),U,4))_" "_N
  1. Q G
  1. ;
  1. SAORSTEN(P,BDATE,EDATE) ;EP
  1. NEW BGPG,Y,E,X
  1. K BGPG S Y="BGPG(",X=P_"^LAST DX [BGP CMS AORTIC STENOSIS DXS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I $D(BGPG(1)) Q 1_U_"POV: "_$$DATE^BGP4UTL($P(BGPG(1),U))_" ["_$P(BGPG(1),U,2)_"] "_$$VAL^XBDIQ1(9000010.07,+$P(BGPG(1),U,4),.04)
  1. Q ""
  1. NMIDRUG(P,BDATE,EDATE,BGPY,TAX,C) ;EP ;nmi in Refusal file for aspirin or cpt/tran
  1. ;array returned is BGPY
  1. NEW T,Z,Y,D,N
  1. I $G(C)="" S C=0
  1. S T=$O(^ATXAX("B",TAX,0))
  1. I T="" Q
  1. S X=0 F S X=$O(^AUPNPREF("AA",P,50,X)) Q:X'=+X D
  1. .Q:'$D(^ATXAX(T,21,"B",X)) ;not an aspirin
  1. .S D=0 F S D=$O(^AUPNPREF("AA",P,50,X,D)) Q:D'=+D D
  1. ..S Y=9999999-D I Y<BDATE Q ;documented before bdate
  1. ..I Y>EDATE Q ;documented after discharge
  1. ..S N=0 F S N=$O(^AUPNPREF("AA",P,50,X,D,N)) Q:N'=+N D
  1. ...Q:$P($G(^AUPNPREF(N,0)),U,7)'="N"
  1. ...S C=C+1,BGPY(C)="NMI Refusal of: "_$$VAL^XBDIQ1(9000022,N,.04)_" "_$$DATE^BGP4UTL($P(^AUPNPREF(N,0),U,3))_" "_$$VAL^XBDIQ1(9000022,X,1101)
  1. ..Q
  1. .Q
  1. I TAX'["ASPIRIN" Q
  1. ;now check for CPT code G8008
  1. S X=$$CPTI^BGP4DU(P,BDATE,EDATE,+$$CODEN^ICPTCOD("G8008"))
  1. I X S C=C+1,BGPY(C)="CPT G8008: "_$$DATE^BGP4UTL($P(X,U,2))
  1. S X=$$TRANI^BGP4DU(P,BDATE,EDATE,+$$CODEN^ICPTCOD("G8008"))
  1. I X S C=C+1,BGPY(C)="CPT (tran code) G8008: "_$$DATE^BGP4UTL($P(X,U,2))
  1. Q
  1. ;
  1. LASTMED(P,BDATE,EDATE,T,T1,T2) ;EP - last rx prescription for taxonomy T
  1. K BGPY
  1. S T=$G(T)
  1. S T1=$G(T1)
  1. S T2=$G(T2)
  1. D GETMEDS^BGP4CU(P,BDATE,EDATE,T,T1,T2,0,"","",0,1)
  1. I '$D(BGPY) Q ""
  1. Q BGPY
  1. ;
  1. LASTASPC(P,BDATE,EDATE) ;EP - last G8006
  1. NEW X
  1. S X=$$CPTI^BGP4DU(P,BDATE,EDATE,+$$CODEN^ICPTCOD("G8006"))
  1. I X="" Q ""
  1. Q "G8006 "_$$DATE^BGP4UTL($P(X,U,2))
  1. ;
  1. ALLALGA1(P,EDATE,BGPY) ;EP - all allergies from the allergy tracking system
  1. ;
  1. ;now check allergy tracking
  1. S BGPC=0
  1. S X=0 F S X=$O(^GMR(120.8,"B",P,X)) Q:X'=+X D
  1. .Q:$P($P($G(^GMR(120.8,X,0)),U,4),".")>EDATE ;entered after END date
  1. .S N=$P($G(^GMR(120.8,X,0)),U,2),N=$$UP^XLFSTR(N)
  1. .S BGPC=BGPC+1,BGPY(BGPC)=N_" "_$$DATE^BGP4UTL($P(^GMR(120.8,X,0),U,4))
  1. Q
  1. IVUD(P,BD,ED,TAX,BGPY,TAXN,TAXC) ;EP
  1. ;p - patient
  1. ;bd - beg date
  1. ;ed - ending date
  1. ;BGPY - return array
  1. ;tax - taxonomy ien
  1. NEW C,X,E,D,S,I,A,B,F,Z,V,BGPE
  1. K BGPY,BGPE
  1. S TAX=$G(TAX),TAXN=$G(TAXN),TAXC=$G(TAXC)
  1. S C=0
  1. S X=0 F S X=$O(^PS(55,P,5,X)) Q:X'=+X D
  1. .S E=$P($P($G(^PS(55,P,5,X,2)),U,2),".",1)
  1. .Q:E>ED
  1. .Q:E<BD
  1. .S D="",G="",Z=0 F S Z=$O(^PS(55,P,5,X,1,Z)) Q:Z'=+Z D
  1. ..S D=$P(^PS(55,P,5,X,1,Z,0),U)
  1. ..Q:D=""
  1. ..Q:'$D(^PSDRUG(D,0))
  1. ..I '$$WTD(D,TAX,TAXN,TAXC) Q
  1. ..S G=G_$S(G]"":"; ",1:"")_$P(^PSDRUG(D,0),U)
  1. .S S=$P(^PS(55,P,5,X,0),U,9),S=$$EXTSET^XBFUNC(55.06,28,S)
  1. .S A=$$FMTE^XLFDT($P($G(^PS(55,P,5,X,2)),U,2),2)
  1. .S B=$$FMTE^XLFDT($P($G(^PS(55,P,5,X,2)),U,4),2)
  1. .S F=$$FMTE^XLFDT($P($G(^PS(55,P,5,X,2)),U,3),2)
  1. .I G]"" S C=C+1,BGPE((9999999-E),C)="Unit Dose: "_G_" Date: "_$$DATE^BGP4UTL(E)_" Status: "_S_" Start: "_A_" Stop: "_B_" Previous Stop: "_F
  1. .Q
  1. S X=0 F S X=$O(^PS(55,P,"IV",X)) Q:X'=+X D
  1. .S E=$P(^PS(55,P,"IV",X,0),U,2),E=$P(E,".")
  1. .Q:E>ED
  1. .Q:E<BD
  1. .S D="",G="",Z=0 F S Z=$O(^PS(55,P,"IV",X,"AD",Z)) Q:Z'=+Z D
  1. ..S D=$P(^PS(55,P,"IV",X,"AD",Z,0),U)
  1. ..Q:D=""
  1. ..S D=$P($G(^PS(52.6,D,0)),U,2)
  1. ..I D="" Q
  1. ..I '$$WTD(D,TAX,TAXN,TAXC) Q
  1. ..S G=G_$S(G]"":"; ",1:"")_$P(^PSDRUG(D,0),U)
  1. .S S=$P(^PS(55,P,"IV",X,0),U,17),S=$$EXTSET^XBFUNC(55.01,100,S)
  1. .S A=$$FMTE^XLFDT($P($G(^PS(55,P,"IV",X,0)),U,2),2)
  1. .S B=$$FMTE^XLFDT($P($G(^PS(55,P,"IV",X,0)),U,3),2)
  1. .S F=$$FMTE^XLFDT($P($G(^PS(55,P,"IV",X,2)),U,7),2)
  1. .I G]"" S C=C+1,BGPE((9999999-E),C)="IV: "_G_" Date: "_$$DATE^BGP4UTL(E)_" Status: "_S_" Start: "_A_" Stop: "_B_" Previous Stop: "_F
  1. .Q
  1. S (D,C,A)=0 F S D=$O(BGPE(D)) Q:D'=+D S C=0 F S C=$O(BGPE(D,C)) Q:C'=+C S A=A+1,BGPY(A)=BGPE(D,C)
  1. Q
  1. WTD(D,TD,TN,TC) ;
  1. S TD=$G(TD)
  1. S TN=$G(TN)
  1. S TC=$G(TC)
  1. NEW V
  1. I 'TD,'TN,'TC Q 1 ;no taxonomies so quit
  1. I TD,$D(^ATXAX(TD,21,"B",D)) Q 1
  1. S V=$P($G(^PSDRUG(D,0)),U,2)
  1. I V]"",TC,$D(^ATXAX(TC,21,"B",V)) Q 1
  1. S V=$P($G(^PSDRUG(D,2)),U,4)
  1. I V]"",TN,$D(^ATXAX(TN,21,"B",V)) Q 1
  1. Q ""
  1. LVSD(P,BDATE,EDATE,BGPY,BGPC) ;EP
  1. NEW X,Y,I,T,V,BGPG
  1. K BGPG
  1. I $G(BGPC)="" S BGPC=0
  1. S X=P_"^ALL DX 429.71;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,"BGPG(")
  1. ;S X=$$LASTDXI^BGP4UTL(P,"429.71",BDATE,EDATE) I X]"" D
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X D
  1. .S BGPC=BGPC+1,BGPY(BGPC)="POV: "_$$DATE^BGP4UTL($P(BGPG(X),U,1))_" ["_$P(BGPG(X),U,2)_"] "_$$VAL^XBDIQ1(9000010.07,+$P(BGPG(X),U,4),.04)
  1. .Q
  1. Q
  1. EJECFRAC(P,BDATE,EDATE,BGPY,BGPC) ;EP - now get all measurements CEF
  1. NEW X,Y,BGPG,N,E,V,T
  1. I $G(BGPC)="" S BGPC=0
  1. K BGPG S Y="BGPG(",X=P_"^ALL MEAS CEF;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .Q:$P($G(^AUPNVMSR(Y,2)),U,1)
  1. .S N=$P(^AUPNVMSR(Y,0),U,4)
  1. .;Q:N>39
  1. .S BGPC=BGPC+1,BGPY(BGPC)="MEASUREMENT CEF: "_$$DATE^BGP4UTL($P(BGPG(X),U))_" value: "_N
  1. .Q
  1. ;now see if any procedures
  1. S X=0 F S X=$O(^AUPNVPRC("AC",P,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNVPRC(X,0))
  1. .S I=$P($G(^AUPNVPRC(X,0)),U) Q:'I
  1. .S Y=$P($$ICDOP^BGP4UTL2(I),U,2)
  1. .S T="",T=$O(^ATXAX("B","BGP CMS EJECTION FRACTION PROC",0))
  1. .I $$ICD^BGP4UTL2(I,T,0) D
  1. ..S V=$P(^AUPNVPRC(X,0),U,3)
  1. ..S V=$P($P($G(^AUPNVSIT(V,0)),U),".")
  1. ..I V<BDATE Q
  1. ..I V>EDATE Q ;after discharge
  1. ..S BGPC=BGPC+1,BGPY(BGPC)="CEF PROCEDURE: "_$$DATE^BGP4UTL(V)_" ["_Y_"] "_$$VAL^XBDIQ1(9000010.08,X,.04)
  1. ;now get all cpts
  1. S X=0 F S X=$O(^AUPNVCPT("AC",P,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNVCPT(X,0))
  1. .S I=$P($G(^AUPNVCPT(X,0)),U) Q:'I
  1. .S Y=$P($$CPT^ICPTCOD(I),U,2)
  1. .S T="",T=$O(^ATXAX("B","BGP CMS EJECTION FRACTION CPTS",0))
  1. .I $$ICD^BGP4UTL2(I,T,1) D
  1. ..S V=$P(^AUPNVCPT(X,0),U,3)
  1. ..S V=$P($P($G(^AUPNVSIT(V,0)),U),".")
  1. ..I V<BDATE Q
  1. ..I V>EDATE Q ;after discharge
  1. ..S BGPC=BGPC+1,BGPY(BGPC)="CEF CPT: "_$$DATE^BGP4UTL(V)_" ["_Y_"] "_$P($$CPT^ICPTCOD(I,V),U,3)
  1. Q