- BGP8D6 ; IHS/CMI/LAB - measure 31 ;
- ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
- ;
- I031 ;EP
- S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7,BGPD8,BGPD9)=0
- I BGPAGEB<2 S BGPSTOP=1 Q
- I BGPAGEB>74 S BGPSTOP=1 Q
- I BGPAGEB>1 S BGPD1=1
- I BGPAGEB>1,BGPAGEB<6 S BGPD2=1
- I BGPAGEB>5,BGPAGEB<12 S BGPD3=1
- I BGPAGEB>11,BGPAGEB<20 S BGPD4=1
- I BGPAGEB>19,BGPAGEB<25 S BGPD5=1
- I BGPAGEB>24,BGPAGEB<35 S BGPD6=1
- I BGPAGEB>34,BGPAGEB<45 S BGPD7=1
- I BGPAGEB>44,BGPAGEB<55 S BGPD8=1
- I BGPAGEB>54,BGPAGEB<75 S BGPD9=1
- I '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7+BGPD8+BGPD9) S BGPSTOP=1 Q
- S BGPBMI=$$BMI(DFN,BGPEDATE,BGPAGEE),BGPN1=$S(BGPBMI]"":1,1:0)
- S BGPXPHV=$$SB^BGP8PDL1($J($P(BGPBMI,U),6,2)) S:BGPXPHV="0.00" BGPXPHV=""
- S BGPN2=$$OW(DFN,BGPBMI,BGPAGEE)
- S BGPN3=$$OB(DFN,BGPBMI,BGPAGEE)
- I BGPN2!(BGPN3) S BGPN4=1
- I 'BGPN1 S BGPREF=$$REF(DFN,BGP365,BGPEDATE,BGPAGEB) I $P(BGPREF,U)=1 S BGPN5=1
- ;I BGPN5 S BGPN1=1
- S BGPVALUE=$S(BGPD1:"UP",1:"") I BGPD1,BGPACTCL S BGPVALUE=BGPVALUE_",AC"
- S BGPVALUE=BGPVALUE_"|||"_$S(BGPBMI]"":$$SB^BGP8PDL1($J($P(BGPBMI,U),6,2)),1:"")_$S(BGPN2:" [OVERWEIGHT]",1:"")_$S(BGPN3:" [OBESE]",1:"")
- I BGPRTYPE'=1,BGPN5 S BGPVALUE=BGPVALUE_"Refused " ;_$P(BGPREF,U,2)_" "_$$DATE^BGP8UTL($P(BGPREF,U,3))_" "_$P(BGPREF,U,5)_" "_$$DATE^BGP8UTL($P(BGPREF,U,6))
- K BGPL,BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- Q
- I031A ;
- S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7,BGPD8,BGPD9)=0
- I BGPAGEB<2 S BGPSTOP=1 Q
- I BGPAGEB>5 S BGPSTOP=1 Q
- I BGPAGEE>5 S BGPSTOP=1 Q
- ;I 'BGPACTCL S BGPSTOP=1 Q
- I BGPACTCL=1 S BGPD1=1
- S BGPD6=1 ;USER POP
- S BGPBMI=$$BMIOR(DFN,BGPBDATE,BGPEDATE,BGPAGEE)
- I $P(BGPBMI,U)="" S BGPSTOP=1 Q ;no bmi
- S BGPOW=$$OW(DFN,$P(BGPBMI,U),$$AGE^AUPNPAT(DFN,$P(BGPBMI,U,2))) I BGPOW S BGPN1=1
- S BGPOB=$$OB(DFN,$P(BGPBMI,U),$$AGE^AUPNPAT(DFN,$P(BGPBMI,U,2))) I BGPOB S BGPN2=1
- I BGPN1!(BGPN2) S BGPN3=1
- S A=$$AGE^AUPNPAT(DFN,$P(BGPBMI,U,2))
- I BGPACTCL,A=2 S BGPD2=1
- I BGPACTCL,A=3 S BGPD3=1
- I BGPACTCL,A=4 S BGPD4=1
- I BGPACTCL,A=5 S BGPD5=1
- ; '(BGPD2+BGPD3+BGPD4+BGPD5+BGPD6) W !,BGPBOMB
- S BGPVALUE="UP"_$S(BGPD1:",AC",1:"")
- I $P(BGPBMI,U)]"" S BGPVALUE=BGPVALUE_"|||"_" Age at BMI: "_A_"; "_$$DATE^BGP8UTL($P(BGPBMI,U,2))_" "_$P(BGPBMI,U)
- I $P(BGPOW,U,2)]""!($P(BGPOB,U,2)]"") S BGPVALUE=BGPVALUE_" [Outside Data Check Limits]"
- I BGPN1 S BGPVALUE=BGPVALUE_" [OVERWEIGHT] "
- I BGPN2 S BGPVALUE=BGPVALUE_" [OBESE] "
- K BGPBMIH,BGPBMI,BGPOW,BGPOB
- Q
- BMIOR(P,BDATE,EDATE,AGE) ;EP
- KILL %,W,H,B,D,%DT
- S BGPBMIH=""
- D Q BGPBMIH
- .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S X=$$HTWTSDOR(P,BDATE,EDATE)
- .I '$P(X,"^") Q
- .S W=$P(X,"^",2),H=$P(X,"^",3)
- .S W=W*.45359,H=(H*.0254),H=(H*H),BGPBMIH=$$SB^BGP8PDL1($J((W/H),6,2))_U_$P(X,U,1)
- .;S W=$P(X,"^",5),H=$P(X,"^",6)
- .;S W=W*.45359,H=(H*.0254),H=(H*H),$P(BGPBMIH,U,3)=$$SB^BGP8PDL1($J((W/H),6,2))_U_$P(X,U,4)
- .Q
- Q ""
- HTWTSDOR(P,BDATE,EDATE) ;get last ht / wt on same day
- I '$G(P) Q ""
- KILL BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- ;get all hts during time frame
- S %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BGPLHTS(")
- S Y=0 F S Y=$O(BGPLHTS(Y)) Q:Y'=+Y I $P(BGPLHTS(Y),U,2)="?"!($P(BGPLHTS(Y),U,2)="") K BGPLHTS(Y)
- ;set the array up by date
- K BGPLHTS1 S X=0 F S X=$O(BGPLHTS(X)) Q:X'=+X S BGPLHTS1($P(BGPLHTS(X),U))=X
- ;get all wts during time frame
- S %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BGPLWTS(")
- S Y=0 F S Y=$O(BGPLWTS(Y)) Q:Y'=+Y I $P(BGPLWTS(Y),U,2)="?"!($P(BGPLWTS(Y),U,2)="") K BGPLWTS(Y)
- ;set the array up by date
- K BGPLWTS1 S X=0 F S X=$O(BGPLWTS(X)) Q:X'=+X S BGPLWTS1($P(BGPLWTS(X),U))=X
- S BGPLCHT="",X=9999999 F S X=$O(BGPLWTS1(X),-1) Q:X=""!(BGPLCHT]"") I $D(BGPLHTS1(X)) S BGPLCHT=$P(BGPLWTS(BGPLWTS1(X)),U)_U_$P(BGPLWTS(BGPLWTS1(X)),U,2)_U_$P(BGPLHTS(BGPLHTS1(X)),U,2)
- Q BGPLCHT
- OB(P,BMI,A) ;EP obese
- I $G(BMI)="" Q ""
- S S=$P(^DPT(P,0),U,2)
- I S="" Q ""
- S R=0,R=$O(^APCLBMI("H",S,A,R))
- I 'R S R=$O(^APCLBMI("H",S,A)) I R S R=$O(^APCLBMI("H",S,R,""))
- I 'R Q ""
- I BMI>$P(^APCLBMI(R,0),U,7)!(BMI<$P(^APCLBMI(R,0),U,6)) Q "0^Outside Data Check Limits"
- I BMI'<$P(^APCLBMI(R,0),U,5) Q 1
- Q ""
- OW(P,BMI,A) ;EP overweight
- I $G(BMI)="" Q ""
- S S=$P(^DPT(P,0),U,2)
- I S="" Q ""
- S R=0,R=$O(^APCLBMI("H",S,A,R))
- I 'R S R=$O(^APCLBMI("H",S,A)) I R S R=$O(^APCLBMI("H",S,R,""))
- I 'R Q ""
- I BMI>$P(^APCLBMI(R,0),U,7)!(BMI<$P(^APCLBMI(R,0),U,6)) Q "0^Outside Data Check Limits"
- I BMI'<$P(^APCLBMI(R,0),U,4),BMI<$P(^APCLBMI(R,0),U,5) Q 1
- Q ""
- HT(P,BDATE,EDATE) ;EP
- I 'P Q ""
- NEW %,BGPARRY,H,E
- S %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BGPARRY(") S H=$P($G(BGPARRY(1)),U,2)
- I H="" Q H
- I H["?" Q ""
- S H=$J(H,2,0)
- Q H
- WT(P,BDATE,EDATE) ;EP
- I 'P Q ""
- NEW %,E,BGPLW,X,BGPLN,BGPL,BGPLD,BGPLZ,BGPLX,ICD,T
- K BGPL S BGPLW="" S BGPLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(BGPLX,"BGPL(")
- S BGPLN=0 F S BGPLN=$O(BGPL(BGPLN)) Q:BGPLN'=+BGPLN!(BGPLW]"") D
- .S BGPLZ=$P(BGPL(BGPLN),U,5)
- .I '$D(^AUPNVPOV("AD",BGPLZ)) S BGPLW=$P(BGPL(BGPLN),U,2) Q
- . S BGPLD=0 F S BGPLD=$O(^AUPNVPOV("AD",BGPLZ,BGPLD)) Q:'BGPLD!(BGPLW]"") D
- .. S D=$P(BGPL(BGPLN),U)
- .. S ICD=$P($$ICDDX^BGP8UTL2($P(^AUPNVPOV(BGPLD,0),U),D),U,2) D
- ...I $$ICD^BGP8UTL2($P(^AUPNVPOV(BGPLD,0),U,1),$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) Q
- ...;I $E(ICD,1,3)="V22" Q
- ...;I $E(ICD,1,3)="V23" Q
- ...;I $E(ICD,1,3)="V27" Q
- ...;I $E(ICD,1,3)="V28" Q
- ...;I ICD>629.9999&(ICD<676.95) Q
- ...S BGPLW=$P(BGPL(BGPLN),U,2)
- ..Q
- Q BGPLW
- ;
- BMI(P,EDATE,AGE) ;EP
- NEW %,W,H,B,D,%DT,BDATE
- ;S BDATE=$$FMADD^XLFDT(EDATE,-365),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- S BGPBMIH=""
- I AGE>18,AGE<51 D Q BGPBMIH
- .S BDATE=$$FMADD^XLFDT(EDATE,-(5*365)),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S W=$$WT(P,BDATE,EDATE) I W=""!(W="?") Q
- .;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
- .S HDATE=BDATE
- .S H=$$HT(P,HDATE,EDATE) I H="" Q
- .S W=W*.45359,H=(H*.0254),H=(H*H),BGPBMIH=(W/H)
- I AGE>50 D Q BGPBMIH
- .S BDATE=$$FMADD^XLFDT(EDATE,-(2*365)),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S W=$$WT(P,BDATE,EDATE) I W=""!(W="?") Q
- .;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
- .S HDATE=BDATE
- .S H=$$HT(P,HDATE,EDATE) I H="" Q
- .S W=W*.45359,H=(H*.0254),H=(H*H),BGPBMIH=(W/H)
- I AGE<19 D Q BGPBMIH
- .S BDATE=$$FMADD^XLFDT(EDATE,-365),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S X=$$HTWTSD(P,BDATE,EDATE)
- .I '$P(X,"^") Q
- .I '$P(X,"^",2) Q
- .S W=$P(X,"^"),H=$P(X,"^",2)
- .S W=W*.45359,H=(H*.0254),H=(H*H),BGPBMIH=(W/H)
- .Q
- Q
- HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
- I '$G(P) Q ""
- NEW BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- ;get all hts during time frame
- S %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BGPLHTS(")
- S Y=0 F S Y=$O(BGPLHTS(Y)) Q:Y'=+Y I $P(BGPLHTS(Y),U,2)="?"!($P(BGPLHTS(Y),U,2)="") K BGPLHTS(Y)
- ;set the array up by date
- K BGPLHTS1 S X=0 F S X=$O(BGPLHTS(X)) Q:X'=+X S BGPLHTS1($P(BGPLHTS(X),U))=X
- ;get all wts during time frame
- S %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BGPLWTS(")
- S Y=0 F S Y=$O(BGPLWTS(Y)) Q:Y'=+Y I $P(BGPLWTS(Y),U,2)="?"!($P(BGPLWTS(Y),U,2)="") K BGPLWTS(Y)
- ;set the array up by date
- K BGPLWTS1 S X=0 F S X=$O(BGPLWTS(X)) Q:X'=+X S BGPLWTS1($P(BGPLWTS(X),U))=X
- S BGPLCHT="",X=9999999 F S X=$O(BGPLWTS1(X),-1) Q:X=""!(BGPLCHT]"") I $D(BGPLHTS1(X)) S BGPLCHT=$P(BGPLWTS(BGPLWTS1(X)),U,2)_U_$P(BGPLHTS(BGPLHTS1(X)),U,2)
- Q BGPLCHT
- ;
- REF(P,BDATE,EDATE,AGE) ;EP - get ht/wt Refusal in past year, same date for 18 and under
- NEW R,X,Y
- S R=""
- I AGE<19 G AGE18R
- S X=$$REFUSAL^BGP8UTL1(P,9999999.07,$O(^AUTTMSR("B","HT",0)),BDATE,EDATE) I X S R=1_U_"HT"_U_$P(X,U,2)
- S Y=$$REFUSAL^BGP8UTL1(P,9999999.07,$O(^AUTTMSR("B","WT",0)),BDATE,EDATE) I Y S $P(R,U,4)=1,$P(R,U,5)="WT",$P(R,U,6)=$P(Y,U,2)
- I X="",Y="" Q ""
- Q R
- AGE18R ;
- NEW H,W,Z,X,Y,R
- K H,W
- S H=$O(^AUTTMSR("B","HT",0))
- S Z=0 F S Z=$O(^AUPNPREF("AA",P,9999999.07,H,Z)) Q:Z'=+Z D
- .S V=0 F S V=$O(^AUPNPREF("AA",P,9999999.07,H,Z,V)) Q:V'=+V D
- ..Q:'$D(^AUPNPREF(V,0))
- ..S D=$P(^AUPNPREF(V,0),U,3)
- ..Q:D>EDATE
- ..Q:D<BDATE
- ..S H(D)=""
- ..Q
- .Q
- S W=$O(^AUTTMSR("B","WT",0))
- S Z=0 F S Z=$O(^AUPNPREF("AA",P,9999999.07,W,Z)) Q:Z'=+Z D
- .S V=0 F S V=$O(^AUPNPREF("AA",P,9999999.07,W,Z,V)) Q:V'=+V D
- ..Q:'$D(^AUPNPREF(V,0))
- ..S D=$P(^AUPNPREF(V,0),U,3)
- ..Q:D>EDATE
- ..Q:D<BDATE
- ..Q:"NRU"'[$P(^AUPNPREF(V,0),U,7)
- ..S W(D)=""
- ..Q
- .Q
- ;is there an H and w on same day?
- S R=""
- S X=0 F S X=$O(H(X)) Q:X'=+X!(R]"") I $D(W(X)) S R=1_U_"HT/WT"_U_X
- Q R
- BGP8D6 ; IHS/CMI/LAB - measure 31 ;
- +1 ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
- +2 ;
- I031 ;EP
- +1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7,BGPD8,BGPD9)=0
- +2 IF BGPAGEB<2
- SET BGPSTOP=1
- QUIT
- +3 IF BGPAGEB>74
- SET BGPSTOP=1
- QUIT
- +4 IF BGPAGEB>1
- SET BGPD1=1
- +5 IF BGPAGEB>1
- IF BGPAGEB<6
- SET BGPD2=1
- +6 IF BGPAGEB>5
- IF BGPAGEB<12
- SET BGPD3=1
- +7 IF BGPAGEB>11
- IF BGPAGEB<20
- SET BGPD4=1
- +8 IF BGPAGEB>19
- IF BGPAGEB<25
- SET BGPD5=1
- +9 IF BGPAGEB>24
- IF BGPAGEB<35
- SET BGPD6=1
- +10 IF BGPAGEB>34
- IF BGPAGEB<45
- SET BGPD7=1
- +11 IF BGPAGEB>44
- IF BGPAGEB<55
- SET BGPD8=1
- +12 IF BGPAGEB>54
- IF BGPAGEB<75
- SET BGPD9=1
- +13 IF '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7+BGPD8+BGPD9)
- SET BGPSTOP=1
- QUIT
- +14 SET BGPBMI=$$BMI(DFN,BGPEDATE,BGPAGEE)
- SET BGPN1=$SELECT(BGPBMI]"":1,1:0)
- +15 SET BGPXPHV=$$SB^BGP8PDL1($JUSTIFY($PIECE(BGPBMI,U),6,2))
- IF BGPXPHV="0.00"
- SET BGPXPHV=""
- +16 SET BGPN2=$$OW(DFN,BGPBMI,BGPAGEE)
- +17 SET BGPN3=$$OB(DFN,BGPBMI,BGPAGEE)
- +18 IF BGPN2!(BGPN3)
- SET BGPN4=1
- +19 IF 'BGPN1
- SET BGPREF=$$REF(DFN,BGP365,BGPEDATE,BGPAGEB)
- IF $PIECE(BGPREF,U)=1
- SET BGPN5=1
- +20 ;I BGPN5 S BGPN1=1
- +21 SET BGPVALUE=$SELECT(BGPD1:"UP",1:"")
- IF BGPD1
- IF BGPACTCL
- SET BGPVALUE=BGPVALUE_",AC"
- +22 SET BGPVALUE=BGPVALUE_"|||"_$SELECT(BGPBMI]"":$$SB^BGP8PDL1($JUSTIFY($PIECE(BGPBMI,U),6,2)),1:"")_$SELECT(BGPN2:" [OVERWEIGHT]",1:"")_$SELECT(BGPN3:" [OBESE]",1:"")
- +23 ;_$P(BGPREF,U,2)_" "_$$DATE^BGP8UTL($P(BGPREF,U,3))_" "_$P(BGPREF,U,5)_" "_$$DATE^BGP8UTL($P(BGPREF,U,6))
- IF BGPRTYPE'=1
- IF BGPN5
- SET BGPVALUE=BGPVALUE_"Refused "
- +24 KILL BGPL,BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- +25 QUIT
- I031A ;
- +1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7,BGPD8,BGPD9)=0
- +2 IF BGPAGEB<2
- SET BGPSTOP=1
- QUIT
- +3 IF BGPAGEB>5
- SET BGPSTOP=1
- QUIT
- +4 IF BGPAGEE>5
- SET BGPSTOP=1
- QUIT
- +5 ;I 'BGPACTCL S BGPSTOP=1 Q
- +6 IF BGPACTCL=1
- SET BGPD1=1
- +7 ;USER POP
- SET BGPD6=1
- +8 SET BGPBMI=$$BMIOR(DFN,BGPBDATE,BGPEDATE,BGPAGEE)
- +9 ;no bmi
- IF $PIECE(BGPBMI,U)=""
- SET BGPSTOP=1
- QUIT
- +10 SET BGPOW=$$OW(DFN,$PIECE(BGPBMI,U),$$AGE^AUPNPAT(DFN,$PIECE(BGPBMI,U,2)))
- IF BGPOW
- SET BGPN1=1
- +11 SET BGPOB=$$OB(DFN,$PIECE(BGPBMI,U),$$AGE^AUPNPAT(DFN,$PIECE(BGPBMI,U,2)))
- IF BGPOB
- SET BGPN2=1
- +12 IF BGPN1!(BGPN2)
- SET BGPN3=1
- +13 SET A=$$AGE^AUPNPAT(DFN,$PIECE(BGPBMI,U,2))
- +14 IF BGPACTCL
- IF A=2
- SET BGPD2=1
- +15 IF BGPACTCL
- IF A=3
- SET BGPD3=1
- +16 IF BGPACTCL
- IF A=4
- SET BGPD4=1
- +17 IF BGPACTCL
- IF A=5
- SET BGPD5=1
- +18 ; '(BGPD2+BGPD3+BGPD4+BGPD5+BGPD6) W !,BGPBOMB
- +19 SET BGPVALUE="UP"_$SELECT(BGPD1:",AC",1:"")
- +20 IF $PIECE(BGPBMI,U)]""
- SET BGPVALUE=BGPVALUE_"|||"_" Age at BMI: "_A_"; "_$$DATE^BGP8UTL($PIECE(BGPBMI,U,2))_" "_$PIECE(BGPBMI,U)
- +21 IF $PIECE(BGPOW,U,2)]""!($PIECE(BGPOB,U,2)]"")
- SET BGPVALUE=BGPVALUE_" [Outside Data Check Limits]"
- +22 IF BGPN1
- SET BGPVALUE=BGPVALUE_" [OVERWEIGHT] "
- +23 IF BGPN2
- SET BGPVALUE=BGPVALUE_" [OBESE] "
- +24 KILL BGPBMIH,BGPBMI,BGPOW,BGPOB
- +25 QUIT
- BMIOR(P,BDATE,EDATE,AGE) ;EP
- +1 KILL %,W,H,B,D,%DT
- +2 SET BGPBMIH=""
- +3 Begin DoDot:1
- +4 SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +5 SET X=$$HTWTSDOR(P,BDATE,EDATE)
- +6 IF '$PIECE(X,"^")
- QUIT
- +7 SET W=$PIECE(X,"^",2)
- SET H=$PIECE(X,"^",3)
- +8 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BGPBMIH=$$SB^BGP8PDL1($JUSTIFY((W/H),6,2))_U_$PIECE(X,U,1)
- +9 ;S W=$P(X,"^",5),H=$P(X,"^",6)
- +10 ;S W=W*.45359,H=(H*.0254),H=(H*H),$P(BGPBMIH,U,3)=$$SB^BGP8PDL1($J((W/H),6,2))_U_$P(X,U,4)
- +11 QUIT
- End DoDot:1
- QUIT BGPBMIH
- +12 QUIT ""
- HTWTSDOR(P,BDATE,EDATE) ;get last ht / wt on same day
- +1 IF '$GET(P)
- QUIT ""
- +2 KILL BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- +3 ;get all hts during time frame
- +4 SET %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BGPLHTS(")
- +5 SET Y=0
- FOR
- SET Y=$ORDER(BGPLHTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BGPLHTS(Y),U,2)="?"!($PIECE(BGPLHTS(Y),U,2)="")
- KILL BGPLHTS(Y)
- +6 ;set the array up by date
- +7 KILL BGPLHTS1
- SET X=0
- FOR
- SET X=$ORDER(BGPLHTS(X))
- IF X'=+X
- QUIT
- SET BGPLHTS1($PIECE(BGPLHTS(X),U))=X
- +8 ;get all wts during time frame
- +9 SET %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BGPLWTS(")
- +10 SET Y=0
- FOR
- SET Y=$ORDER(BGPLWTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BGPLWTS(Y),U,2)="?"!($PIECE(BGPLWTS(Y),U,2)="")
- KILL BGPLWTS(Y)
- +11 ;set the array up by date
- +12 KILL BGPLWTS1
- SET X=0
- FOR
- SET X=$ORDER(BGPLWTS(X))
- IF X'=+X
- QUIT
- SET BGPLWTS1($PIECE(BGPLWTS(X),U))=X
- +13 SET BGPLCHT=""
- SET X=9999999
- FOR
- SET X=$ORDER(BGPLWTS1(X),-1)
- IF X=""!(BGPLCHT]"")
- QUIT
- IF $DATA(BGPLHTS1(X))
- SET BGPLCHT=$PIECE(BGPLWTS(BGPLWTS1(X)),U)_U_$PIECE(BGPLWTS(BGPLWTS1(X)),U,2)_U_$PIECE(BGPLHTS(BGPLHTS1(X)),U,2)
- +14 QUIT BGPLCHT
- OB(P,BMI,A) ;EP obese
- +1 IF $GET(BMI)=""
- QUIT ""
- +2 SET S=$PIECE(^DPT(P,0),U,2)
- +3 IF S=""
- QUIT ""
- +4 SET R=0
- SET R=$ORDER(^APCLBMI("H",S,A,R))
- +5 IF 'R
- SET R=$ORDER(^APCLBMI("H",S,A))
- IF R
- SET R=$ORDER(^APCLBMI("H",S,R,""))
- +6 IF 'R
- QUIT ""
- +7 IF BMI>$PIECE(^APCLBMI(R,0),U,7)!(BMI<$PIECE(^APCLBMI(R,0),U,6))
- QUIT "0^Outside Data Check Limits"
- +8 IF BMI'<$PIECE(^APCLBMI(R,0),U,5)
- QUIT 1
- +9 QUIT ""
- OW(P,BMI,A) ;EP overweight
- +1 IF $GET(BMI)=""
- QUIT ""
- +2 SET S=$PIECE(^DPT(P,0),U,2)
- +3 IF S=""
- QUIT ""
- +4 SET R=0
- SET R=$ORDER(^APCLBMI("H",S,A,R))
- +5 IF 'R
- SET R=$ORDER(^APCLBMI("H",S,A))
- IF R
- SET R=$ORDER(^APCLBMI("H",S,R,""))
- +6 IF 'R
- QUIT ""
- +7 IF BMI>$PIECE(^APCLBMI(R,0),U,7)!(BMI<$PIECE(^APCLBMI(R,0),U,6))
- QUIT "0^Outside Data Check Limits"
- +8 IF BMI'<$PIECE(^APCLBMI(R,0),U,4)
- IF BMI<$PIECE(^APCLBMI(R,0),U,5)
- QUIT 1
- +9 QUIT ""
- HT(P,BDATE,EDATE) ;EP
- +1 IF 'P
- QUIT ""
- +2 NEW %,BGPARRY,H,E
- +3 SET %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BGPARRY(")
- SET H=$PIECE($GET(BGPARRY(1)),U,2)
- +4 IF H=""
- QUIT H
- +5 IF H["?"
- QUIT ""
- +6 SET H=$JUSTIFY(H,2,0)
- +7 QUIT H
- WT(P,BDATE,EDATE) ;EP
- +1 IF 'P
- QUIT ""
- +2 NEW %,E,BGPLW,X,BGPLN,BGPL,BGPLD,BGPLZ,BGPLX,ICD,T
- +3 KILL BGPL
- SET BGPLW=""
- SET BGPLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(BGPLX,"BGPL(")
- +4 SET BGPLN=0
- FOR
- SET BGPLN=$ORDER(BGPL(BGPLN))
- IF BGPLN'=+BGPLN!(BGPLW]"")
- QUIT
- Begin DoDot:1
- +5 SET BGPLZ=$PIECE(BGPL(BGPLN),U,5)
- +6 IF '$DATA(^AUPNVPOV("AD",BGPLZ))
- SET BGPLW=$PIECE(BGPL(BGPLN),U,2)
- QUIT
- +7 SET BGPLD=0
- FOR
- SET BGPLD=$ORDER(^AUPNVPOV("AD",BGPLZ,BGPLD))
- IF 'BGPLD!(BGPLW]"")
- QUIT
- Begin DoDot:2
- +8 SET D=$PIECE(BGPL(BGPLN),U)
- +9 SET ICD=$PIECE($$ICDDX^BGP8UTL2($PIECE(^AUPNVPOV(BGPLD,0),U),D),U,2)
- Begin DoDot:3
- +10 IF $$ICD^BGP8UTL2($PIECE(^AUPNVPOV(BGPLD,0),U,1),$ORDER(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9)
- QUIT
- +11 ;I $E(ICD,1,3)="V22" Q
- +12 ;I $E(ICD,1,3)="V23" Q
- +13 ;I $E(ICD,1,3)="V27" Q
- +14 ;I $E(ICD,1,3)="V28" Q
- +15 ;I ICD>629.9999&(ICD<676.95) Q
- +16 SET BGPLW=$PIECE(BGPL(BGPLN),U,2)
- End DoDot:3
- +17 QUIT
- End DoDot:2
- End DoDot:1
- +18 QUIT BGPLW
- +19 ;
- BMI(P,EDATE,AGE) ;EP
- +1 NEW %,W,H,B,D,%DT,BDATE
- +2 ;S BDATE=$$FMADD^XLFDT(EDATE,-365),BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- +3 SET BGPBMIH=""
- +4 IF AGE>18
- IF AGE<51
- Begin DoDot:1
- +5 SET BDATE=$$FMADD^XLFDT(EDATE,-(5*365))
- SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +6 SET W=$$WT(P,BDATE,EDATE)
- IF W=""!(W="?")
- QUIT
- +7 ;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
- +8 SET HDATE=BDATE
- +9 SET H=$$HT(P,HDATE,EDATE)
- IF H=""
- QUIT
- +10 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BGPBMIH=(W/H)
- End DoDot:1
- QUIT BGPBMIH
- +11 IF AGE>50
- Begin DoDot:1
- +12 SET BDATE=$$FMADD^XLFDT(EDATE,-(2*365))
- SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +13 SET W=$$WT(P,BDATE,EDATE)
- IF W=""!(W="?")
- QUIT
- +14 ;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
- +15 SET HDATE=BDATE
- +16 SET H=$$HT(P,HDATE,EDATE)
- IF H=""
- QUIT
- +17 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BGPBMIH=(W/H)
- End DoDot:1
- QUIT BGPBMIH
- +18 IF AGE<19
- Begin DoDot:1
- +19 SET BDATE=$$FMADD^XLFDT(EDATE,-365)
- SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +20 SET X=$$HTWTSD(P,BDATE,EDATE)
- +21 IF '$PIECE(X,"^")
- QUIT
- +22 IF '$PIECE(X,"^",2)
- QUIT
- +23 SET W=$PIECE(X,"^")
- SET H=$PIECE(X,"^",2)
- +24 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BGPBMIH=(W/H)
- +25 QUIT
- End DoDot:1
- QUIT BGPBMIH
- +26 QUIT
- HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
- +1 IF '$GET(P)
- QUIT ""
- +2 NEW BGPLWTS,BGPLHTS,%,X,BGPLWTS1,BGPLHTS1,Y
- +3 ;get all hts during time frame
- +4 SET %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BGPLHTS(")
- +5 SET Y=0
- FOR
- SET Y=$ORDER(BGPLHTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BGPLHTS(Y),U,2)="?"!($PIECE(BGPLHTS(Y),U,2)="")
- KILL BGPLHTS(Y)
- +6 ;set the array up by date
- +7 KILL BGPLHTS1
- SET X=0
- FOR
- SET X=$ORDER(BGPLHTS(X))
- IF X'=+X
- QUIT
- SET BGPLHTS1($PIECE(BGPLHTS(X),U))=X
- +8 ;get all wts during time frame
- +9 SET %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BGPLWTS(")
- +10 SET Y=0
- FOR
- SET Y=$ORDER(BGPLWTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BGPLWTS(Y),U,2)="?"!($PIECE(BGPLWTS(Y),U,2)="")
- KILL BGPLWTS(Y)
- +11 ;set the array up by date
- +12 KILL BGPLWTS1
- SET X=0
- FOR
- SET X=$ORDER(BGPLWTS(X))
- IF X'=+X
- QUIT
- SET BGPLWTS1($PIECE(BGPLWTS(X),U))=X
- +13 SET BGPLCHT=""
- SET X=9999999
- FOR
- SET X=$ORDER(BGPLWTS1(X),-1)
- IF X=""!(BGPLCHT]"")
- QUIT
- IF $DATA(BGPLHTS1(X))
- SET BGPLCHT=$PIECE(BGPLWTS(BGPLWTS1(X)),U,2)_U_$PIECE(BGPLHTS(BGPLHTS1(X)),U,2)
- +14 QUIT BGPLCHT
- +15 ;
- REF(P,BDATE,EDATE,AGE) ;EP - get ht/wt Refusal in past year, same date for 18 and under
- +1 NEW R,X,Y
- +2 SET R=""
- +3 IF AGE<19
- GOTO AGE18R
- +4 SET X=$$REFUSAL^BGP8UTL1(P,9999999.07,$ORDER(^AUTTMSR("B","HT",0)),BDATE,EDATE)
- IF X
- SET R=1_U_"HT"_U_$PIECE(X,U,2)
- +5 SET Y=$$REFUSAL^BGP8UTL1(P,9999999.07,$ORDER(^AUTTMSR("B","WT",0)),BDATE,EDATE)
- IF Y
- SET $PIECE(R,U,4)=1
- SET $PIECE(R,U,5)="WT"
- SET $PIECE(R,U,6)=$PIECE(Y,U,2)
- +6 IF X=""
- IF Y=""
- QUIT ""
- +7 QUIT R
- AGE18R ;
- +1 NEW H,W,Z,X,Y,R
- +2 KILL H,W
- +3 SET H=$ORDER(^AUTTMSR("B","HT",0))
- +4 SET Z=0
- FOR
- SET Z=$ORDER(^AUPNPREF("AA",P,9999999.07,H,Z))
- IF Z'=+Z
- QUIT
- Begin DoDot:1
- +5 SET V=0
- FOR
- SET V=$ORDER(^AUPNPREF("AA",P,9999999.07,H,Z,V))
- IF V'=+V
- QUIT
- Begin DoDot:2
- +6 IF '$DATA(^AUPNPREF(V,0))
- QUIT
- +7 SET D=$PIECE(^AUPNPREF(V,0),U,3)
- +8 IF D>EDATE
- QUIT
- +9 IF D<BDATE
- QUIT
- +10 SET H(D)=""
- +11 QUIT
- End DoDot:2
- +12 QUIT
- End DoDot:1
- +13 SET W=$ORDER(^AUTTMSR("B","WT",0))
- +14 SET Z=0
- FOR
- SET Z=$ORDER(^AUPNPREF("AA",P,9999999.07,W,Z))
- IF Z'=+Z
- QUIT
- Begin DoDot:1
- +15 SET V=0
- FOR
- SET V=$ORDER(^AUPNPREF("AA",P,9999999.07,W,Z,V))
- IF V'=+V
- QUIT
- Begin DoDot:2
- +16 IF '$DATA(^AUPNPREF(V,0))
- QUIT
- +17 SET D=$PIECE(^AUPNPREF(V,0),U,3)
- +18 IF D>EDATE
- QUIT
- +19 IF D<BDATE
- QUIT
- +20 IF "NRU"'[$PIECE(^AUPNPREF(V,0),U,7)
- QUIT
- +21 SET W(D)=""
- +22 QUIT
- End DoDot:2
- +23 QUIT
- End DoDot:1
- +24 ;is there an H and w on same day?
- +25 SET R=""
- +26 SET X=0
- FOR
- SET X=$ORDER(H(X))
- IF X'=+X!(R]"")
- QUIT
- IF $DATA(W(X))
- SET R=1_U_"HT/WT"_U_X
- +27 QUIT R