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

BGP6D7.m

Go to the documentation of this file.
  1. BGP6D7 ; IHS/CMI/LAB - measure 31 06 Nov 2014 2:31 PM ;
  1. ;;16.1;IHS CLINICAL REPORTING;;MAR 22, 2016;Build 170
  1. I18 ;EP
  1. S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPN6,BGPN7,BGPN8,BGPN9,BGPN10,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7,BGPD8,BGPD9,BGPXPHD,BGP1320)=0
  1. I BGPAGEB<5 S BGPSTOP=1 Q
  1. I BGPACTUP S BGPD1=1
  1. I BGPAGEB>4,BGPAGEB<14 S BGPD2=1
  1. I BGPAGEB>13,BGPAGEB<18 S BGPD3=1
  1. I BGPAGEB>17,BGPAGEB<25 S BGPD4=1
  1. I BGPAGEB>24,BGPAGEB<45 S BGPD5=1
  1. I BGPAGEB>44,BGPAGEB<65 S BGPD6=1
  1. I BGPAGEB>64 S BGPD7=1
  1. I BGPSEX="F",$$PREG(DFN,$$FMADD^XLFDT(BGPEDATE,-608),BGPEDATE,1,1,"",BGPBDATE,BGPEDATE) S BGPD8=1
  1. I '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7+BGPD8) S BGPSTOP=1 Q
  1. S BGP20M=$$FMADD^XLFDT(BGPEDATE,-608)
  1. TA ;EP - called from elder
  1. S BGPTOB=$$TOBHF^BGP6D712(DFN,BGPBDATE,BGPEDATE) ;get last HF from the 3 categories
  1. S BGPSDX=$$DX(DFN,BGPBDATE,BGPEDATE)
  1. S BGPUDX=$$DXU(DFN,BGPBDATE,BGPEDATE)
  1. S BGPSMDX=$$DXS(DFN,BGPBDATE,BGPEDATE)
  1. S BGPSLDX=$$DXSL(DFN,BGPBDATE,BGPEDATE)
  1. S BGPXPHD=$$PED(DFN,BGPBDATE,BGPEDATE)
  1. S BGP1320=$$DENT(DFN,BGPBDATE,BGPEDATE)
  1. S BGPSCPT=$$CPTSM(DFN,BGPBDATE,BGPEDATE)
  1. S BGPN1=$S(BGPTOB]"":1,1:0)
  1. I BGPSDX]"" S BGPN1=1
  1. I BGPSLDX]"" S BGPN1=1
  1. I BGPXPHD]"" S BGPN1=1
  1. I BGP1320]"" S BGPN1=1
  1. I BGPSCPT]"" S BGPN1=1
  1. I BGPUDX]"" S BGPN1=1
  1. I BGPSMDX]"" S BGPN1=1
  1. S (BGPVALUE,BGPVAL)=""
  1. I 'BGPN1 G TAEND
  1. S F=BGPTOB
  1. D
  1. .I $P(F,U,1)["CURRENT"!($P(F,U,1)["CESSATION")!($P(F,U,1)["HEAVY TOBACCO SMOKER")!($P(F,U,1)["LIGHT TOBACCO SMOKER") S BGPN2=1,BGPVAL=$P(BGPTOB,U,2)_" SCREEN, "_$P(BGPTOB,U,2)_" USER" Q ;SMOKING CATEGORY
  1. .I $P(F,U,4)["CURRENT"!($P(F,U,4)["CESSATION") S BGPN2=1,BGPVAL=$P(BGPTOB,U,5)_" SCREEN, "_$P(BGPTOB,U,5)_" USER" Q ;SMOKELESS CATEGORY
  1. .I BGPUDX]"" S BGPN2=1,BGPVAL=$$DATE^BGP6UTL($P(BGPUDX,U,2))_" SCREEN, "_$$DATE^BGP6UTL($P(BGPUDX,U,2))_" USER" Q
  1. .I BGPSMDX]"" S BGPN2=1,BGPVAL=$$DATE^BGP6UTL($P(BGPSMDX,U,2))_" SCREEN, "_$$DATE^BGP6UTL($P(BGPSMDX,U,2))_" USER" Q
  1. .I BGPSLDX]"" S BGPN2=1,BGPVAL=$$DATE^BGP6UTL($P(BGPSLDX,U,2))_" SCREEN, "_$$DATE^BGP6UTL($P(BGPSLDX,U,2))_" USER" Q
  1. .I ($P(BGPSCPT,U)="1034F")!($P(BGPSCPT,U)="1035F")!($P(BGPSCPT,U)="G0376")!($P(BGPSCPT,U)="G0375")!($P(BGPSCPT,U)=99407)!($P(BGPSCPT,U)="G9276") D Q
  1. ..S BGPN2=1,BGPVAL=$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" SCREEN, "_$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" USER" Q
  1. .I $P(BGPSCPT,U)=99406!($P(BGPSCPT,U)="G8455")!($P(BGPSCPT,U)="G8456")!($P(BGPSCPT,U)="G8402")!($P(BGPSCPT,U)="G8453") S BGPN2=1,BGPVAL=$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" SCREEN, "_$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" USER" Q
  1. ;BGPN3 - SMOKER OR NOT
  1. D
  1. .I $P(F,U,1)["CURRENT SMOKER"!($P(F,U,1)="CESSATION-SMOKER")!($P(F,U,1)["HEAVY TOBACCO SMOKER")!($P(F,U,1)["LIGHT TOBACCO SMOKER") S BGPN3=1,BGPVAL=BGPVAL_", "_$P(F,U,2)_" SMOKER" Q
  1. .I BGPSMDX]"" S BGPN3=1,BGPVAL=BGPVAL_", "_$$DATE^BGP6UTL($P(BGPSMDX,U,2))_" SMOKER" Q
  1. .I $P(BGPSCPT,U)="1034F"!($P(BGPSCPT,U)="G0376")!($P(BGPSCPT,U)="G0375")!($P(BGPSCPT,U)=99407)!($P(BGPSCPT,U)=99406)!($P(BGPSCPT,U)="G8455")!($P(BGPSCPT,U)="G8402")!($P(BGPSCPT,U)="G8453") D
  1. ..S BGPN3=1,BGPVAL=BGPVAL_", "_$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" SMOKER" Q
  1. ;BGPN4 - SMOKELESS
  1. D
  1. .I $P(F,U,4)="CURRENT SMOKELESS"!($P(F,U,4)="CURRENT SMOKER & SMOKELESS")!($P(F,U,4)="CESSATION-SMOKELESS") S BGPN4=1,BGPVAL=BGPVAL_", "_$P(F,U,5)_" SMOKELESS" Q
  1. .I $P(BGPSCPT,U)="1035F"!($P(BGPSCPT,U)="G8456") S BGPN4=1,BGPVAL=BGPVAL_", "_$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" SMOKELESS" Q
  1. .I BGPSLDX]"" S BGPN4=1,BGPVAL=BGPVAL_", "_$$DATE^BGP6UTL($P(BGPSLDX,U,2))_" SMOKELESS" Q
  1. ;BGPN5 - ETS
  1. I $P(F,U,7)="SMOKER IN HOME"!($P(F,U,7)["ENVIRON") S BGPN5=1,BGPVAL=$S(BGPVAL["SCREEN":BGPVAL_", "_$P(F,U,8)_" ETS",1:$P(BGPTOB,U,8)_" SCREEN, ETS")
  1. I BGPN1,BGPVAL="" D
  1. .I BGPTOB]"" S BGPVAL=$S($P(BGPTOB,U,2)]"":$P(BGPTOB,U,2)_" SCREEN",$P(BGPTOB,U,5)]"":$P(BGPTOB,U,5)_" SCREEN",$P(BGPTOB,U,8)]"":$P(BGPTOB,U,8)_" SCREEN",1:"") Q
  1. .I BGPSDX]"" S BGPVAL=$$DATE^BGP6UTL($P(BGPSDX,U,2))_" SCREEN" Q
  1. .I BGPSCPT]"" S BGPVAL=$$DATE^BGP6UTL($P(BGPSCPT,U,2))_" SCREEN" Q
  1. .I BGPXPHD]"" S BGPVAL=$$DATE^BGP6UTL($P(BGPXPHD,U,2))_" SCREEN" Q
  1. .I BGP1320]"" S BGPVAL=$$DATE^BGP6UTL($P(BGP1320,U,2))_" SCREEN" Q
  1. S V=$S(BGPD1:"UP",1:"")_$S(BGPACTCL:",AC",1:"")_$S(BGPD8:",PREG",1:"")
  1. S BGPVALUE=V_"|||"_BGPVAL
  1. ;
  1. TAEND ;now check pregnancy if necessary
  1. S V=$S(BGPD1:"UP",1:"")_$S(BGPACTCL:",AC",1:"")_$S(BGPD8:",PREG",1:"")
  1. S BGPVALUE=V_"|||"_BGPVAL
  1. I BGPRTYPE'=5,BGPD8,'BGPN1 D PREGSCRN
  1. K X,Y,Z,%,A,B,C,D,E,H,BDATE,EDATE,P,V,S,F,BGPSDX,BGPXPHD,BGP1320,BGP20M
  1. K ^TMP($J,"A")
  1. Q
  1. ;
  1. PREGSCRN ;
  1. G PREGSCRN^BGP6D713
  1. ;
  1. I023 ;EP - PHN
  1. K BGPN1,BGPN2,BGPN3,BGPN4,BGPVALUE
  1. I 'BGPACTUP S BGPSTOP=1 Q
  1. S (BGPN1,BGPN2)=0
  1. S BGPVALUE=$$PHNV(DFN,BGP365,BGPEDATE,BGPHOME)
  1. S BGPN1=BGPVALUE
  1. S BGPVALUE="UP|||"_$P(BGPVALUE,U)_" all PHN; "_$P(BGPVALUE,U,2)_" home; "_$P(BGPVALUE,U,12)_" driver all; "_$P(BGPVALUE,U,13)_" driver home"
  1. K ^TMP($J,"A")
  1. Q
  1. PHNV(P,BDATE,EDATE,HOMELOC) ;
  1. S HOMELOC=$G(HOMELOC)
  1. K ^TMP($J,"A") S A="^TMP($J,""A"","
  1. S B=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
  1. I '$D(^TMP($J,"A",1)) Q "0^0^0^0^0^0^0^0^0^0^0^0^0"
  1. S (X,Y)=0,C="0^0^0^0^0^0^0^0^0^0^0^0^0" F S X=$O(^TMP($J,"A",X)) Q:X'=+X S V=$P(^TMP($J,"A",X),U,5) D
  1. .;S Y=0 I $$CLINIC^APCLV(V,"C")=45 S Y=1 Q
  1. .S (D,Y,Z)=0
  1. .F S D=$O(^AUPNVPRV("AD",V,D)) Q:D'=+D S Q=$P(^AUPNVPRV(D,0),U) D
  1. ..Q:Q=""
  1. ..S %=$$VALI^XBDIQ1($S($P(^DD(9000010.06,.01,0),U,2)["200":200,1:6),Q,$S($P(^DD(9000010.06,.01,0),U,2)["200":53.5,1:2))
  1. ..I % S %=$P($G(^DIC(7,+%,9999999)),U)
  1. ..I %'=13,%'=91 Q ;not a phn or driver
  1. ..S $P(C,U,1)=$P(C,U,1)+1
  1. ..I %=91 S $P(C,U,12)=$P(C,U,12)+1
  1. ..D HOME
  1. ..D AGE
  1. Q C
  1. ;
  1. HOME ;
  1. S HV=0
  1. I $$CLINIC^APCLV(V,"C")=11 S $P(C,U,2)=$P(C,U,2)+1,HV=1 S:%=91 $P(C,U,13)=$P(C,U,13)+1 Q
  1. Q:HOMELOC=""
  1. I HOMELOC=$P(^AUPNVSIT(V,0),U,6) S $P(C,U,2)=$P(C,U,2)+1,HV=1 S:%=91 $P(C,U,13)=$P(C,U,13)+1 Q
  1. Q
  1. AGE ;
  1. S DAYS=$$FMDIFF^XLFDT($P($P(^AUPNVSIT(V,0),U),"."),$P(^DPT(P,0),U,3))
  1. S YRS=$$AGE^AUPNPAT(P,$P($P(^AUPNVSIT(V,0),U),"."))
  1. I DAYS<29 S $P(C,U,3)=$P(C,U,3)+1 S:HV=1 $P(C,U,4)=$P(C,U,4)+1 Q
  1. I DAYS>28,YRS<1 S $P(C,U,5)=$P(C,U,5)+1 S:HV=1 $P(C,U,6)=$P(C,U,6)+1 Q
  1. I YRS>0,YRS<65 S $P(C,U,7)=$P(C,U,7)+1 S:HV=1 $P(C,U,8)=$P(C,U,8)+1 Q
  1. I YRS>64 S $P(C,U,9)=$P(C,U,9)+1 S:HV=1 $P(C,U,10)=$P(C,U,10)+1 Q
  1. W BGPBOMB
  1. Q
  1. DENT(P,BDATE,EDATE) ;EP
  1. K ^TMP($J,"A")
  1. S A="^TMP($J,""A"",",B=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
  1. I '$D(^TMP($J,"A",1)) Q ""
  1. S (X,G)=0 F S X=$O(^TMP($J,"A",X)) Q:X'=+X!(G) S V=$P(^TMP($J,"A",X),U,5) D
  1. .Q:V']""
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .S Z=0 F S Z=$O(^AUPNVDEN("AD",V,Z)) Q:Z'=+Z!(G) S B=$P($G(^AUPNVDEN(Z,0)),U) I B S B=$P($G(^AUTTADA(B,0)),U) I B=1320 S G=1_U_$P($P(^AUPNVSIT(V,0),U),".")
  1. .Q
  1. I G=0 Q ""
  1. Q "ADA 1320"_U_$P(G,U,2)
  1. PED(P,BDATE,EDATE) ;EP
  1. NEW BGPG,S,SN,Y,E,X,D,T
  1. K BGPG
  1. S Y="BGPG("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I '$D(BGPG) Q ""
  1. S SN=$O(^BGPSNOMM("B","TOBACCO SCREEN PATIENT ED",0))
  1. S (X,D)=0,%="",T="" F S X=$O(BGPG(X)) Q:X'=+X!(%]"") D
  1. .S T=$P(^AUPNVPED(+$P(BGPG(X),U,4),0),U)
  1. .Q:'T
  1. .Q:'$D(^AUTTEDT(T,0))
  1. .S T=$P(^AUTTEDT(T,0),U,2)
  1. .I $P(T,"-")="TO" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-",2)="TO" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-",2)="SHS" S %=T_U_$P(BGPG(X),U) Q
  1. .S S=$P(T,"-",1)
  1. .S S=$$ICDDX^BGP6UTL2(S)
  1. .I $P(S,U,1)'="-1",$$ICD^BGP6UTL2($P(S,U,1),$O(^ATXAX("B","BGP TOBACCO DXS",0)),9) S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="D1320" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="99406" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="99407" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G0375" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G0376" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="1034F" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="1035F" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="1036F" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="1000F" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G8455" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G8456" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G8457" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G8402" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G8453" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G9276" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")="G9275" S %=T_U_$P(BGPG(X),U) Q
  1. .I $P(T,"-")]"",$D(^BGPSNOMM(SN,11,"B",$P(T,"-"))) S %=T_U_$P(BGPG(X),U) Q
  1. Q %
  1. PREG(P,BDATE,EDATE,NORXCHR,NORX,FORM,CPBD,CPED) ;EP
  1. G PREG^BGP6D714
  1. ;
  1. DX(P,BDATE,EDATE) ;EP - WAS THERE SCREENING?
  1. K BGPG
  1. S BGPG(1)=$$LASTDX^BGP6UTL1(P,"BGP TOBACCO DXS",BDATE,EDATE)
  1. I BGPG(1)]"" Q $P($$ICDDX^BGP6UTL2($P(BGPG(1),U,4),$P(BGPG(1),U,1)),U,2)_U_$P(BGPG(1),U,3)_U_$P(BGPG(1),U,4)
  1. S T=$O(^ATXAX("B","BGP TOBACCO DXS",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G]"") D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,3)>EDATE
  1. .Q:$P(^AUPNPROB(X,0),U,3)<BDATE
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^BGP6UTL2(Y,T,9)
  1. .S G=$P($$ICDDX^BGP6UTL2(Y),U,2)_U_$P(^AUPNPROB(X,0),U,3)_U_Y
  1. .Q
  1. Q G
  1. DXSL(P,BDATE,EDATE) ;EP - WAS THERE A SMOKELESS USER DX?
  1. K BGPG
  1. S BGPG(1)=$$LASTDX^BGP6UTL1(P,"BGP GPRA SMOKELESS DXS",BDATE,EDATE)
  1. I BGPG(1)]"" Q $P($$ICDDX^BGP6UTL2($P(BGPG(1),U,4),$P(BGPG(1),U,1)),U,2)_U_$P(BGPG(1),U,3)_U_$P(BGPG(1),U,4)
  1. S T=$O(^ATXAX("B","BGP GPRA SMOKELESS DXS",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G]"") D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,3)>EDATE
  1. .Q:$P(^AUPNPROB(X,0),U,3)<BDATE
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^BGP6UTL2(Y,T,9)
  1. .S G=$P($$ICDDX^BGP6UTL2(Y),U,2)_U_$P(^AUPNPROB(X,0),U,3)_U_Y
  1. .Q
  1. Q G
  1. DXU(P,BDATE,EDATE) ;EP - WAS THERE A USER DX?
  1. K BGPG
  1. S BGPG(1)=$$LASTDX^BGP6UTL1(P,"BGP TOBACCO USER DXS",BDATE,EDATE)
  1. I BGPG(1)]"" Q $P($$ICDDX^BGP6UTL2($P(BGPG(1),U,4),$P(BGPG(1),U,1)),U,2)_U_$P(BGPG(1),U,3)_U_$P(BGPG(1),U,4)
  1. S T=$O(^ATXAX("B","BGP TOBACCO USER DXS",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G]"") D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,3)>EDATE
  1. .Q:$P(^AUPNPROB(X,0),U,3)<BDATE
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^BGP6UTL2(Y,T,9)
  1. .S G=$P($$ICDDX^BGP6UTL2(Y),U,2)_U_$P(^AUPNPROB(X,0),U,3)_U_Y
  1. .Q
  1. Q G
  1. DXS(P,BDATE,EDATE) ;EP - WAS THERE A SMOKING USER DX?
  1. K BGPG
  1. S BGPG(1)=$$LASTDX^BGP6UTL1(P,"BGP GPRA SMOKING DXS",BDATE,EDATE)
  1. I BGPG(1)]"" Q $P($$ICDDX^BGP6UTL2($P(BGPG(1),U,4),$P(BGPG(1),U,1)),U,2)_U_$P(BGPG(1),U,3)_U_$P(BGPG(1),U,4)
  1. S T=$O(^ATXAX("B","BGP GPRA SMOKING DXS",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G]"") D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,3)>EDATE
  1. .Q:$P(^AUPNPROB(X,0),U,3)<BDATE
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^BGP6UTL2(Y,T,9)
  1. .S G=$P($$ICDDX^BGP6UTL2(Y),U,2)_U_$P(^AUPNPROB(X,0),U,3)_U_Y
  1. .Q
  1. Q G
  1. TOBACCO(P,BDATE,EDATE,CESSIN) ;EP - USED FOR TOBACCO SCREEN ONLY
  1. K BGPTOB,BGP
  1. S CESSIN=$G(CESSIN)
  1. D TOBACCO1
  1. I BGPTOB]"" Q BGPTOB
  1. D TOBACCO0
  1. I $D(BGPTOB) Q BGPTOB
  1. Q ""
  1. TOBACCO1 ;check for tobacco documented in health factors
  1. K BGPTOB
  1. S BGPTOB=$$LASTHF(P,"TOBACCO (SMOKING)",BDATE,EDATE) K O,D,H
  1. Q:BGPTOB]""
  1. S BGPTOB=$$LASTHF(P,"TOBACCO (SMOKELESS - CHEWING/DIP)",BDATE,EDATE) K O,D,H
  1. Q:BGPTOB]""
  1. I 'CESSIN S BGPTOB=$$LASTHF(P,"TOBACCO (EXPOSURE)",BDATE,EDATE) K O,D,H
  1. Q:BGPTOB]""
  1. S BGPTOB=$$LASTHF(P,"TOBACCO",BDATE,EDATE) K O,D,H
  1. Q
  1. TOBACCO0 ;lookup in health status
  1. S (X,Y)=0 F S X=$O(^AUPNHF("AA",P,X)) Q:X'=+X!(Y) I $$VAL^XBDIQ1(9999999.64,X,.03)="TOBACCO" S Y=X
  1. Q:'Y
  1. S E=$O(^AUPNHF("AA",P,Y,0)) Q:'E
  1. I (9999999-E)>EDATE Q ;documented after time frame
  1. I (9999999-E)<BDATE Q ;documented before year
  1. S Y=$P(^AUTTHF(Y,0),U)
  1. S BGPTOB=Y_"^"_$$DATE^BGP6UTL(9999999-E)_"^"_(9999999-E)
  1. K Y,E,X
  1. Q
  1. ;
  1. LASTHF(P,C,BDATE,EDATE) ;EP - get last factor in category C for patient P
  1. S C=$O(^AUTTHF("B",C,0)) ;ien of category passed
  1. I '$G(C) Q ""
  1. S (H,D)=0 K O
  1. F S H=$O(^AUTTHF("AC",C,H)) Q:'+H D
  1. .Q:'$D(^AUPNVHF("AA",P,H))
  1. .S D="" F S D=$O(^AUPNVHF("AA",P,H,D)) Q:D'=+D D
  1. ..Q:(9999999-D)>EDATE ;after time frame
  1. ..Q:(9999999-D)<BDATE ;before time frame
  1. ..S O(D)=$O(^AUPNVHF("AA",P,H,D,""))
  1. .Q
  1. S D=$O(O(0))
  1. I D="" Q D
  1. Q $$VAL^XBDIQ1(9000010.23,O(D),.01)_"^"_$$DATE^BGP6UTL(9999999-D)_"^"_(9999999-D)
  1. ;
  1. LOINC(A,B) ;
  1. NEW %
  1. S %=$P($G(^LAB(95.3,A,9999999)),U,2)
  1. I %]"",$D(^ATXAX(B,21,"B",%)) Q 1
  1. S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
  1. I $D(^ATXAX(B,21,"B",%)) Q 1
  1. Q ""
  1. ;
  1. CPTSM(P,BDATE,EDATE) ;EP - did pat have TOBACCO SCREENING cpt?
  1. NEW X
  1. S X=$$CPT^BGP6DU(P,BDATE,EDATE,$O(^ATXAX("B","BGP TOBACCO SCREEN CPTS",0)),5)
  1. I X]"" Q $P(X,U,2)_U_$P(X,U,1)
  1. Q ""