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

BUDARP6V.m

Go to the documentation of this file.
  1. BUDARP6V ; IHS/CMI/LAB - UDS REPORT PROCESSOR 01 Dec 2013 5:11 PM ;
  1. ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
  1. ;
  1. ;
  1. ADOLWT ;EP - called from xbdbque
  1. ;must have DOB between 1/1/06 and 12/31/06
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUDX27RB=($E(BUDBD,1,3)-17)_"0101"
  1. S BUDX2RB=($E(BUDED,1,3)-2)_"1231"
  1. S BUD3RB=($E(BUDED,1,3)-3)_"1231"
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUD3BD=$E(BUDDOB,1,3)+3_$E(BUDDOB,4,7)
  1. Q:BUD3BD>BUDED
  1. S BUDX27BD=$E(BUDDOB,1,3)+17_$E(BUDDOB,4,7)
  1. Q:$$AGE^AUPNPAT(DFN,BUDED)>17
  1. Q:BUDMEDV<1
  1. S BUDX27TH=$E(BUDDOB,1,3)+17_$E(BUDDOB,4,7)
  1. I '$$VBBD(DFN,BUDDOB,$$FMADD^XLFDT(BUDX27TH,-1)) Q
  1. K BUDPAP
  1. ;S BUDPD=$E(BUDBD,1,3)-2_$E(BUDBD,4,7)
  1. Q:$$PREG^BUDARP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED)
  1. S BUDPAP=$$BMINPA(DFN,BUDBD,BUDED,BUDAGE)
  1. Q:BUDPAP="REF"
  1. S G=0 F X=1:1:3 I $P(BUDPAP,U,X)]"" S G=G+1
  1. I G=3 S BUDSECTE("AWT")=$G(BUDSECTE("AWT"))+1
  1. ;put the rest in demoninator
  1. S BUDSECTE("PTS")=$G(BUDSECTE("PTS"))+1 D
  1. .I $G(BUDWAC2L) D
  1. ..I G'=3 S ^XTMP("BUDARP6B",BUDJ,BUDH,"WAC2",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDPAP
  1. .I $G(BUDWAC1L) D
  1. ..I G=3 S ^XTMP("BUDARP6B",BUDJ,BUDH,"WAC1",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDPAP
  1. Q
  1. ;
  1. ;
  1. VBBD(P,BDATE,EDATE) ;EP
  1. NEW BUDVL,G
  1. K BUDVL
  1. S G=""
  1. S A="BUDVL(",B=DFN_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
  1. I '$D(BUDVL) Q ""
  1. S X=0 F S X=$O(BUDVL(X)) Q:X'=+X S V=$P(BUDVL(X),U,5) D
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:'$D(^AUPNVPRV("AD",V))
  1. .Q:'$D(^AUPNVPOV("AD",V))
  1. .S L=$P(^AUPNVSIT(V,0),U,6)
  1. .Q:L=""
  1. .Q:'$D(^BUDQSITE(BUDSITE,11,L)) ;not valid location
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="C"
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="T"
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="N"
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="D"
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="X"
  1. .Q:$P(^AUPNVSIT(V,0),U,7)="E"
  1. .S G=V
  1. .Q
  1. Q G
  1. ;
  1. BMINPA(P,BDATE,EDATE,AGE) ;EP
  1. NEW %,W,H,B,D,%DT,RETVAL,BUDBMI,BUDNE,BUDPA
  1. S BUDBMI=$$BMI(P,BDATE,EDATE,AGE)
  1. I BUDBMI="" S BUDBMI=$$BMIPROC(P,BDATE,EDATE)
  1. I BUDBMI="" I $$REF(P,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV)) Q "REF"
  1. S BUDNE=$$NUTR(P,BDATE,EDATE)
  1. S BUDPA=$$PA(P,BDATE,EDATE)
  1. Q BUDBMI_U_BUDNE_U_BUDPA
  1. BMIPROC(P,BDATE,EDATE) ;EP
  1. NEW A
  1. S A=$$LASTDX^BUDAUTL1(P,"BUD BMI PROCS",BDATE,EDATE)
  1. I A Q "POV "_$P(A,U,2)
  1. Q ""
  1. REF(P,BDATE,EDATE) ;EP
  1. NEW H,W
  1. S H=$$REFRNU^BUDAUTL1(P,9999999.07,$O(^AUTTMSR("B","HT",0)),BDATE,EDATE)
  1. I H="" Q 1
  1. S W=$$REFRNU^BUDAUTL1(P,9999999.07,$O(^AUTTMSR("B","WT",0)),BDATE,EDATE)
  1. I W="" Q 1
  1. Q ""
  1. BMI(P,BDATE,EDATE,AGE) ;EP
  1. NEW HDATE,BUDBMIH,W,H,X
  1. S BUDBMIH=""
  1. I AGE>18,AGE<51 D Q BUDBMIH
  1. .S HDATE=$$FMADD^XLFDT(BDATE,-(5*365)),HDATE=$$FMTE^XLFDT(HDATE)
  1. .;S BDATE=$$FMADD^XLFDT(BDATE,-(5*365))
  1. .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
  1. .S W=$P($$WT(P,BDATE,EDATE),U,1) I W=""!(W="?") Q
  1. .S H=$$HT(P,HDATE,EDATE) I H="" Q
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. I AGE>50 D Q BUDBMIH
  1. .S HDATE=$$FMADD^XLFDT(BDATE,-(2*365)),HDATE=$$FMTE^XLFDT(HDATE)
  1. .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
  1. .S W=$P($$WT(P,BDATE,EDATE),U,1) I W=""!(W="?") Q
  1. .S HDATE=BDATE
  1. .S H=$$HT(P,HDATE,EDATE) I H="" Q
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. I AGE<19 D Q BUDBMIH
  1. .S X=$$HTWTSD(P,BDATE,EDATE)
  1. .I '$P(X,"^") Q
  1. .I '$P(X,"^",2) Q
  1. .S W=$P(X,"^"),H=$P(X,"^",2)
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. .Q
  1. Q ""
  1. HT(P,BDATE,EDATE) ;EP
  1. I 'P Q ""
  1. NEW %,BUDARRY,H,E
  1. S %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDARRY(") S H=$P($G(BUDARRY(1)),U,2)
  1. I H="" Q H
  1. I H["?" Q ""
  1. S H=$J(H,2,0)
  1. Q H
  1. WT(P,BDATE,EDATE) ;EP
  1. I 'P Q ""
  1. NEW %,E,BUDLW,X,BUDLN,BUDL,BUDLD,BUDLZ,BUDLX,ICD
  1. K BUDL S BUDLW="" S BUDLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(BUDLX,"BUDL(")
  1. S BUDLN=0 F S BUDLN=$O(BUDL(BUDLN)) Q:BUDLN'=+BUDLN!(BUDLW]"") D
  1. .S BUDLZ=$P(BUDL(BUDLN),U,5)
  1. .I '$D(^AUPNVPOV("AD",BUDLZ)) S BUDLW=$P(BUDL(BUDLN),U,2) Q
  1. . S BUDLD=0 F S BUDLD=$O(^AUPNVPOV("AD",BUDLZ,BUDLD)) Q:'BUDLD!(BUDLW]"") D
  1. .. S D=$P(BUDL(BUDLN),U)
  1. .. S ICD=$P($$ICDDX^ICDCODE($P(^AUPNVPOV(BUDLD,0),U),D),U,2) D
  1. ...I $E(ICD,1,3)="V22" Q
  1. ...I $E(ICD,1,3)="V23" Q
  1. ...I $E(ICD,1,3)="V27" Q
  1. ...I $E(ICD,1,3)="V28" Q
  1. ...I ICD>629.9999&(ICD<676.95) Q
  1. ...I ICD>61.49&(ICD<61.71) Q
  1. ...S BUDLW=$P(BUDL(BUDLN),U,2)
  1. ..Q
  1. Q BUDLW
  1. HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
  1. I '$G(P) Q ""
  1. KILL BUDLWTS,BUDLHTS,%,X,BUDLWTS1,BUDLHTS1,Y
  1. ;get all hts during time frame
  1. S %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLHTS(")
  1. S Y=0 F S Y=$O(BUDLHTS(Y)) Q:Y'=+Y I $P(BUDLHTS(Y),U,2)="?"!($P(BUDLHTS(Y),U,2)="") K BUDLHTS(Y)
  1. ;set the array up by date
  1. K BUDLHTS1 S X=0 F S X=$O(BUDLHTS(X)) Q:X'=+X S BUDLHTS1($P(BUDLHTS(X),U))=X
  1. ;get all wts during time frame
  1. S %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLWTS(")
  1. S Y=0 F S Y=$O(BUDLWTS(Y)) Q:Y'=+Y I $P(BUDLWTS(Y),U,2)="?"!($P(BUDLWTS(Y),U,2)="") K BUDLWTS(Y)
  1. ;set the array up by date
  1. K BUDLWTS1 S X=0 F S X=$O(BUDLWTS(X)) Q:X'=+X S BUDLWTS1($P(BUDLWTS(X),U))=X
  1. S BUDLCHT="",X=9999999 F S X=$O(BUDLWTS1(X),-1) Q:X=""!(BUDLCHT]"") I $D(BUDLHTS1(X)) S BUDLCHT=$P(BUDLWTS(BUDLWTS1(X)),U,2)_U_$P(BUDLHTS(BUDLHTS1(X)),U,2)
  1. Q BUDLCHT
  1. ;
  1. NUTR(P,BDATE,EDATE) ;EP
  1. NEW BUDALLED,BUDG,X,E,%,D,T,Y
  1. S Y="BUDALLED("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S (X,D)=0,%="",T="" F S X=$O(BUDALLED(X)) Q:X'=+X!(%]"") D
  1. .S T=$P(^AUPNVPED(+$P(BUDALLED(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,"-",2)="N"!($P(T,"-",2)="DT")!($P(T,"-",2)="MNT") S %=T Q
  1. .I $P(T,"-",1)="97802"!($P(T,"-",1)="97803")!($P(T,"-",1)="97804") S %=T Q
  1. I %]"" Q %
  1. S T=$O(^ATXAX("B","BUD NUTRITION CPT",0))
  1. S %=$$CPT^BUDADU(P,BDATE,EDATE,T,5)
  1. I %]"" Q "CPT: "_$P(%,U,2)
  1. Q ""
  1. PA(P,BDATE,EDATE) ;EP
  1. NEW BUDALLED,BUDG,X,E,%,D,T,Y
  1. K BUDG S X=P_"^LAST DX V65.41;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,"BUDG(")
  1. I $D(BUDG(1)) Q "POV V65.41"
  1. S Y="BUDALLED("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I '$D(BUDALLED(1)) Q ""
  1. S (X,D)=0,%="",T="" F S X=$O(BUDALLED(X)) Q:X'=+X!(%]"") D
  1. .S T=$P(^AUPNVPED(+$P(BUDALLED(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,"-",2)="EX" S %=T Q
  1. .I $P(T,"-",1)="V65.41" S %=T Q
  1. Q %
  1. ADULT ;EP
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUDX28RB=($E(BUDBD,1,3)-18)_"1231"
  1. Q:BUDDOB>BUDX28RB
  1. Q:BUDMEDV<1
  1. S BUDX28TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. I '$$VBBD(DFN,$$FMADD^XLFDT(BUDX28TH,1),BUDED) Q ;quit if no visiT AFTER 18TH BIRTHDAY
  1. ;HAD V66.7 WITHIN 6 MONTHS BEFORE LAST VISIT DATE
  1. Q:$$LASTDX^BUDAUTL1(DFN,"V66.7",$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV))
  1. K BUDBMI,BUDOW,BUDUW
  1. S (BUDBMI,BUDOW,BUDUW,BUDPLAN)=""
  1. ;S BUDPD=$E(BUDBD,1,3)-2_$E(BUDBD,4,7)
  1. Q:$$PREG^BUDARP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED)
  1. S BUDBMI=$$BMI(DFN,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV),BUDAGE)
  1. ;I BUDBMI="" I $$REF(P,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV)) Q
  1. I BUDBMI="" S BUDPLAN=$$PLAN(DFN,BUDBD,BUDED) I BUDPLAN]"" S G=0 S ^XTMP("BUDARP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN Q ;NO BMI
  1. I BUDBMI="" Q
  1. I BUDAGE<65 D G N
  1. .I BUDBMI>25 S BUDOW="OW"
  1. .I BUDBMI<18.5 S BUDUW="UW"
  1. I BUDBMI'<30 S BUDOW="OW"
  1. I BUDBMI<22 S BUDUW="UW"
  1. ;put the rest in demoninator
  1. N I BUDOW="",BUDUW="" Q ;not over/underweight & HAD BMI
  1. S BUDWTDT=$$BMI^BUDARP6R(DFN,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV),BUDAGE)
  1. S BUDPLAN=$$PLAN(DFN,BUDWTDT,BUDED)
  1. S G=0
  1. I BUDPLAN]"" S G=1,BUDSECTF("PLAN")=$G(BUDSECTF("PLAN"))+1
  1. ;put the rest in demoninator
  1. S BUDSECTF("PTS")=$G(BUDSECTF("PTS"))+1 D
  1. .I $G(BUDAWS2L) D
  1. ..I 'G S ^XTMP("BUDARP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
  1. .I $G(BUDAWS1L) D
  1. ..I G S ^XTMP("BUDARP6B",BUDJ,BUDH,"AWS1",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
  1. Q
  1. ;
  1. PLAN(P,BD,ED) ;
  1. NEW G,Y,X,E,T,%,Z,BUDALLED
  1. ;S BD=D,ED=D
  1. ;check for cpt codes
  1. S G=$$CPT^BUDAUTL1(P,BD,ED,$O(^ATXAX("B","BUD WT PLAN CPTS",0)),5)
  1. I G]"" Q $P(G,U,2)_" on "_$$FMTE^XLFDT($P(G,U,1))
  1. S G=$$LASTDX^BUDAUTL1(P,"BUD WT PLAN DXS",BD,ED)
  1. I G Q $P(G,U,2)_" on "_$$FMTE^XLFDT($P(G,U,3))
  1. K BUDALLED
  1. S Y="BUDALLED("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(ED) S E=$$START1^APCLDF(X,Y)
  1. S (X,D)=0,%="",T="" F S X=$O(BUDALLED(X)) Q:X'=+X!(%]"") D
  1. .S T=$P(^AUPNVPED(+$P(BUDALLED(X),U,4),0),U)
  1. .Q:'T
  1. .Q:'$D(^AUTTEDT(T,0))
  1. .S T=$P(^AUTTEDT(T,0),U,2)
  1. .S E=$P(BUDALLED(X),U,1)
  1. .I $P(T,"-",2)="EX"!($P(T,"-",2)="LA")!($P(T,"-",2)="N")!($P(T,"-",2)="DT")!($P(T,"-",2)="MNT") S %=T_U_E Q
  1. .I $P(T,"-",1)="OBS"!($P(T,"-",1)="V65.3")!($P(T,"-",1)="V65.41")!($P(T,"-",1)="278.00")!($P(T,"-",1)="278.01") S %=T_U_E Q
  1. I %]"" Q $P(%,U,1)_" on "_$$FMTE^XLFDT($P(%,U,2))
  1. ;now check for a clinic or provider visit
  1. NEW BUDG,W,R
  1. K BUDG
  1. S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(ED),E=$$START1^APCLDF(%,"BUDG(")
  1. S (X,Y,D)="" F S X=$O(BUDG(X)) Q:X'=+X!(Y) D
  1. .S Z=0 F S Z=$O(^AUPNVPRV("AD",$P(BUDG(X),U,5),Z)) Q:Z'=+Z!(Y) D
  1. ..S W=$P($G(^AUPNVPRV(Z,0)),U,1)
  1. ..Q:W=""
  1. ..S R=$$VALI^XBDIQ1(200,W,53.5)
  1. ..I R="" Q
  1. ..S R=$P($G(^DIC(7,R,9999999)),U,1)
  1. ..I R="07"!(R=29) S Y=1,D="Provider "_R_" on "_$$FMTE^XLFDT($P(BUDG(X),U)) Q
  1. ..S R=$$CLINIC^APCLV($P(BUDG(X),U,5),"C") I R=67!(R=36) S Y=1,D="Clinic "_R_" on "_$$FMTE^XLFDT($P(BUDG(X),U)) Q
  1. I Y Q D
  1. Q ""
  1. G1 ;EP
  1. NEW BUDGOT
  1. S BUDGOT=""
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUDX28RB=($E(BUDBD,1,3)-18)_"1231"
  1. Q:BUDDOB>BUDX28RB
  1. Q:BUDMEDV<1
  1. S BUDX28TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. I '$$VBBD(DFN,$$FMADD^XLFDT(BUDX28TH,1),BUDED) Q
  1. S X=$$GETV^BUDARP6U(DFN,BUDDOB,BUDED,BUDSITE)
  1. Q:X<2
  1. K BUDTOBS,BUDTOBD
  1. S BUDTOBDD=$E(BUDBD,1,3)-1_$E(BUDBD,4,7)
  1. S BUDTOBS=$$TOBACCO(DFN,$$DOB^AUPNPAT(DFN),BUDED)
  1. I BUDTOBS]"",$P(BUDTOBS,U,3)'<BUDTOBDD S BUDSECG1("ABM")=$G(BUDSECG1("ABM"))+1,BUDGOT=1
  1. ;put the rest in demoninator
  1. S BUDSECG1("PTS")=$G(BUDSECG1("PTS"))+1 D
  1. .I $G(BUDTUA2L) D
  1. ..I 'BUDGOT S ^XTMP("BUDARP6B",BUDJ,BUDH,"TUA2",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDTOBS
  1. .I $G(BUDTUA1L) D
  1. ..I BUDGOT S ^XTMP("BUDARP6B",BUDJ,BUDH,"TUA1",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDTOBS
  1. Q
  1. ;
  1. TOBACCO(P,BDATE,EDATE) ;
  1. ;TOBACCO SCREENING IN DATE RANGE?
  1. NEW BUDTOB,BUDX,BUDPV,BUDLAST
  1. K BUDLAST
  1. D TOBACCO1
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. ;PATIENT ED
  1. S BUDTOB=$$TOBPED(P,BDATE,EDATE)
  1. I BUDTOB]"" S X=$P(BUDTOB,U,3),BUDLAST(X)=BUDTOB
  1. S BUDPV=$$LASTDX^BUDAUTL1(P,"BUD TOBACCO SCREEN DXS",BDATE,EDATE)
  1. I BUDPV S BUDLAST($P(BUDPV,U,3))=$P(BUDPV,U,2)_U_$$FMTE^XLFDT($P(BUDPV,U,3))_U_$P(BUDPV,U,3) ; Q BUDTOB
  1. S BUDCPT=$$CPT^BUDAUTL1(P,BDATE,EDATE,$O(^ATXAX("B","BUD TOBACCO SCREEN CPTS",0)),7)
  1. I BUDCPT]"" S BUDLAST($P(BUDCPT,U,3))=BUDCPT ;S BUDTOB=BUDCPT Q BUDTOB
  1. I '$D(BUDLAST) Q ""
  1. S BUDX=0 F S BUDX=$O(BUDLAST(BUDX)) Q:BUDX'=+BUDX S BUDTOB=BUDX
  1. Q BUDLAST(BUDTOB)
  1. TOBACCO1 ;
  1. K BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO (SMOKING)",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO (SMOKELESS - CHEWING/DIP)",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO (EXPOSURE)",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. Q
  1. TOBACCO0 ;
  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
  1. I (9999999-E)<BDATE Q
  1. S Y=$P(^AUTTHF(Y,0),U)
  1. S BUDTOB=Y_"^"_$$FMTE^XLFDT(9999999-E)_"^"_(9999999-E)
  1. K Y,E,X
  1. Q
  1. ;
  1. LASTHF(P,C,BDATE,EDATE) ;EP
  1. S C=$O(^AUTTHF("B",C,0))
  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
  1. ..Q:(9999999-D)<BDATE
  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)_"^"_$$FMTE^XLFDT(9999999-D)_"^"_(9999999-D)
  1. ;
  1. TOBPED(P,BDATE,EDATE) ;EP
  1. NEW Y,X,E,D,T,%,BUDG,BUDPED
  1. K BUDPED
  1. S Y="BUDG("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I '$D(BUDG) Q ""
  1. S (X,D)=0,%="",T="" F S X=$O(BUDG(X)) Q:X'=+X D
  1. .S T=$P(^AUPNVPED(+$P(BUDG(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 BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-",2)="TO" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-",2)="SHS" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="305.1" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.00" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.01" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.02" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.03" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.04" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="V15.82" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1034F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1035F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1036F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1000F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. I '$D(BUDPED) Q ""
  1. S X=0 F S X=$O(BUDPED(X)) Q:X'=+X S %=X
  1. Q BUDPED(%)
  1. G2 ;
  1. D G2^BUDARP6U
  1. Q