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

BUDHRP6V.m

Go to the documentation of this file.
  1. BUDHRP6V ; IHS/CMI/LAB - UDS REPORT PROCESSOR ;
  1. ;;13.0;IHS/RPMS UNIFORM DATA SYSTEM;;OCT 12, 2018;Build 90
  1. ;
  1. ;
  1. ADOLWT ;EP - called from xbdbque
  1. ;
  1. NEW BUDBMI,BUDDOB,BUD17RB,BUD3RB,BUD18BD,X,G
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUD17RB=($E(BUDBD,1,3)-17)_"0101" ;RERPORT PERIOD 17 BD
  1. S BUD3RB=($E(BUDED,1,3)-4)_"1231" ;REPORT PERIOD 3 BD
  1. Q:BUDDOB>BUD3RB
  1. Q:BUDDOB<BUD17RB
  1. Q:BUDMEDV<1
  1. S BUD18BD=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. I '$$VBBD(DFN,BUDDOB,$$FMADD^XLFDT(BUD18BD,-1)) Q
  1. Q:$$HOSPIND^BUDHRP6C(DFN,BUDBD,BUDED) ;new v18, hospice
  1. Q:$$PREG^BUDHRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
  1. S BUDBMI=$$BMINPA(DFN,BUDBD,BUDED,BUDAGE)
  1. S G=0 F X=1:1:5 I $P(BUDBMI,U,X)]"" S G=G+1
  1. I G=5 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'=5 S ^XTMP("BUDHRP6B",BUDJ,BUDH,"WAC2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
  1. .I $G(BUDWAC1L) D
  1. ..I G=5 S ^XTMP("BUDHRP6B",BUDJ,BUDH,"WAC1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
  1. Q
  1. ;
  1. ;
  1. VBBD(P,BDATE,EDATE) ;EP
  1. NEW BUDVL,G,V,A,L
  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(^BUDHSITE(BUDSITE,11,L))
  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,BUDHT,BUDWT,BUDVAL
  1. S BUDVAL=""
  1. S BUDHT=$$LASTITEM^APCLAPIU(P,"HT","MEASUREMENT",BDATE,EDATE,"A") I BUDHT]"" S BUDHT="HT: "_$P(BUDHT,U,3)
  1. S BUDWT=$$LASTITEM^APCLAPIU(P,"WT","MEASUREMENT",BDATE,EDATE,"A") I BUDWT]"" S BUDWT="WT: "_$P(BUDWT,U,3)
  1. S BUDBMI=$$LASTITEM^APCLAPIU(P,"BMIP","MEASUREMENT",BDATE,EDATE,"A") I BUDBMI]"" S BUDBMI="BMIP: "_$P(BUDBMI,U,3)
  1. S BUDNE=$$NUTR(P,BDATE,EDATE)
  1. S BUDPA=$$PA(P,BDATE,EDATE)
  1. Q BUDHT_U_BUDWT_U_BUDBMI_U_BUDNE_U_BUDPA
  1. BMIPROC(P,BDATE,EDATE) ;EP
  1. NEW D,BUDG,E,%
  1. K BUDG S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
  1. NEW X,Y,G,T
  1. S T=$O(^BUDHTSSC("B","T6B ADOLWT BMI DIAGNOSES CODES",0))
  1. S G=""
  1. S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G]"") D
  1. .S Y=+$P(BUDG(X),U,4)
  1. .S Y=$P($G(^AUPNVPOV(Y,0)),U,1)
  1. .I $D(^BUDHTSSC("AD",Y,T)) S G="POV "_$P(BUDG(X),U,2)
  1. Q G
  1. REF(P,BDATE,EDATE) ;EP
  1. NEW F,G,I,ID,C,X,D,H,W,R,T
  1. S G=0
  1. S T=$O(^BUDHTSSC("B","T6B ADULTWT REFUSAL",0))
  1. S F=9999999.07,I=$O(^AUTTMSR("B","BMI",0))
  1. S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(G) D
  1. .S D=9999999-$P(ID,".") ;ID
  1. .Q:D'=BDATE
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(G) D
  1. ..;get snomed reason not done and it must be in one of the subsets
  1. ..S R=$$VALI^XBDIQ1(9000022,X,1.01) ;SNOMED REASON NOT DONE
  1. ..I R]"",$D(^BUDHTSSC(T,13,"B",R)) S G=1 Q
  1. ..S R=$$VALI^XBDIQ1(9000022,X,.07)
  1. ..I R="R"!(R="N")!(R="U") S G=1 Q
  1. I G Q G
  1. ;now check for WT or HT
  1. S (W,H)=""
  1. S F=9999999.07,I=$O(^AUTTMSR("B","WT",0))
  1. S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(W) D
  1. .S D=9999999-$P(ID,".") ;ID
  1. .Q:D'=BDATE
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(W) D
  1. ..S R=$$VALI^XBDIQ1(9000022,X,.07)
  1. ..I R="R"!(R="N")!(R="U") S W=1
  1. I W Q 1
  1. S F=9999999.07,I=$O(^AUTTMSR("B","HT",0))
  1. S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(H) D
  1. .S D=9999999-$P(ID,".") ;ID
  1. .Q:D'=BDATE
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(H) D
  1. ..S R=$$VALI^XBDIQ1(9000022,X,.07)
  1. ..I R="R"!(R="N")!(R="U") S H=1
  1. I H Q 1
  1. S H=$$MRND(P,BDATE,EDATE)
  1. Q H
  1. MRND(P,BDATE,EDATE) ;EP
  1. NEW F,G,I,ID,C,X,D,H,W,R,TNDM,TAN,TBN
  1. S TNDM=$O(^BUDHTSSC("B","PXRM BGP IPC NOT DONE MED",0))
  1. S TAN=$O(^BUDHTSSC("B","T6B ADULTWT ABOVE NORM",0))
  1. S TBN=$O(^BUDHTSSC("B","T6B ADULTWT BELOW NORM",0))
  1. S G=0
  1. S F=81,I=""
  1. F S I=$O(^AUPNPREF("AA",P,F,I)) Q:I=""!(G) D
  1. .I '$$ICD^ATXCHK(I,$O(^ATXAX("B","BGP IPC ABOVE NORMAL FU CPTS",0)),1),'$$ICD^ATXCHK(I,$O(^ATXAX("B","BGP IPC BELOW NORMAL FU CPTS",0)),1) Q
  1. .S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(G) D
  1. ..S D=9999999-$P(ID,".") ;ID
  1. ..Q:D<BDATE
  1. ..Q:D>EDATE
  1. ..S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(G) D
  1. ...;get snomed reason not done and it must be in one of the subsets
  1. ...S R=$$VALI^XBDIQ1(9000022,X,1.01) ;SNOMED REASON NOT DONE
  1. ...I R]"",$D(^BUDHTSSC(TNDM,13,"B",R)) S G=1 Q
  1. ...S R=$$VALI^XBDIQ1(9000022,X,.07)
  1. ...I R="N"!(R="U") S G=1
  1. I G Q G
  1. S F=9002318.4,I=""
  1. F S I=$O(^AUPNPREF("AA",P,F,I)) Q:I=""!(G) D
  1. .I '$D(^BUDHTSSC(TAN,13,"B",I)),'$D(^BUDHTSSC(TBN,13,"B",I)) Q
  1. .S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(G) D
  1. ..S D=9999999-$P(ID,".") ;ID
  1. ..Q:D<BDATE
  1. ..Q:D>EDATE
  1. ..S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(G) D
  1. ...;get snomed reason not done and it must be in one of the subsets
  1. ...S R=$$VALI^XBDIQ1(9000022,X,1.01) ;SNOMED REASON NOT DONE
  1. ...I R]"",$D(^BUDHTSSC(TNDM,13,"B",R)) S G=1 Q
  1. ...S R=$$VALI^XBDIQ1(9000022,X,.07)
  1. ...I R="N"!(R="U") S G=1
  1. I G Q G
  1. ;MEDS
  1. S F=50,I=""
  1. NEW T,T1
  1. S T=$O(^ATXAX("B","BGP IPC BELOW NORMAL MEDS",0))
  1. S T1=$O(^ATXAX("B","BGP IPC ABOVE NORMAL MEDS",0))
  1. F S I=$O(^AUPNPREF("AA",P,F,I)) Q:I=""!(G) D
  1. .I '$D(^ATXAX(T,21,"B",I)),'$D(^ATXAX(T,21,"B",I)) Q
  1. .S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(G) D
  1. ..S D=9999999-$P(ID,".") ;ID
  1. ..Q:D<BDATE
  1. ..Q:D>EDATE
  1. ..S X=0 F S X=$O(^AUPNPREF("AA",P,F,I,ID,X)) Q:X'=+X!(G) D
  1. ...;get snomed reason not done and it must be in one of the subsets
  1. ...S R=$$VALI^XBDIQ1(9000022,X,1.01) ;SNOMED REASON NOT DONE
  1. ...I R]"",$D(^BUDHTSSC(TDNM,"B",13,R)) S G=1 Q
  1. I G Q G
  1. Q ""
  1. ADULTBMI(P,BDATE,EDATE,AGE) ;EP
  1. NEW BUDBMI
  1. S BUDBMI=$$LASTITEM^APCLAPIU(P,"BMI","MEASUREMENT",BDATE,EDATE,"A") I BUDBMI]"" S BUDBMI=$P(BUDBMI,U,3)_U_$P(BUDBMI,U)
  1. I BUDBMI="" S BUDBMI=$$BMI(P,BDATE,EDATE,AGE) I BUDBMI]"" S BUDBMI=BUDBMI_U_$P($$WT(P,BDATE,EDATE),U,1)
  1. Q BUDBMI
  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. .. I $$ICD^ATXAPI($P(^AUPNVPOV(BUDLD,0),U,1),$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) Q
  1. .. S BUDLW=$P(BUDL(BUDLN),U,2)_U_$P(BUDL(BUDLN),U,1)
  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 BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDNUT
  1. S BUDNUT=""
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
  1. S TIEN=$O(^BUDHTSSC("B","T6B ADOLWT NUTRITION CODES",0))
  1. S CTR=0 F S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR D
  1. .S VIEN=$P(BUDVS(CTR),U,5)
  1. .S VDATE=$P(BUDVS(CTR),U,1)
  1. .S X=0 F S X=$O(^AUPNVPED("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVPED(X,0))
  1. ..S T=$$VALI^XBDIQ1(9000010.16,X,.01)
  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")!($P(T,"-",1)="MNT") S BUDNUT=T_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. ..I $P(T,"-",1)="97802"!($P(T,"-",1)="97803")!($P(T,"-",1)="97804") S BUDNUT=T_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. ..S S=$P(T,"-",1) I S]"",$D(^BUDHTSSC("AS",S,TIEN)) S BUDNUT=T_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;CPT
  1. .S X=0 F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVCPT(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. ..Q:Y=""
  1. ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDNUT="CPT: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;V TRANS
  1. .S X=0 F S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVTC(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
  1. ..Q:Y=""
  1. ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDNUT="CPT/TRAN: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;SNOMED
  1. .S X=0 F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVPOV(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
  1. ..Q:Y=""
  1. ..I $D(^BUDHTSSC("AS",Y,TIEN)) S BUDNUT="SNOMED: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. I BUDNUT]"" Q BUDNUT
  1. ;CHECK PROBLEM LIST FOR SNOMED
  1. S X=$$PLCL^BUDHDU(P,"T6B ADOLWT NUTRITION CODES",EDATE,0,BDATE) I X Q "PROBLEM SNOMED "_$P(X,U,2)
  1. Q ""
  1. PA(P,BDATE,EDATE) ;EP
  1. NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDPA
  1. S BUDPA=""
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
  1. S TIEN=$O(^BUDHTSSC("B","T6B ADOLWT PHYSICAL ACT CODES",0))
  1. S CTR=0 F S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR D
  1. .S VIEN=$P(BUDVS(CTR),U,5)
  1. .S VDATE=$P(BUDVS(CTR),U,1)
  1. .S X=0 F S X=$O(^AUPNVPED("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVPED(X,0))
  1. ..S T=$$VALI^XBDIQ1(9000010.16,X,.01)
  1. ..Q:'$D(^AUTTEDT(T,0))
  1. ..S T=$P(^AUTTEDT(T,0),U,2)
  1. ..I $P(T,"-",2)="EX" S BUDPA=T_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. ..S S=$P(T,"-",1)
  1. ..I S]"",$D(^BUDHTSSC("AS",S,TIEN)) S BUDPA=T_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;CPT
  1. .S X=0 F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVCPT(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. ..Q:Y=""
  1. ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDPA="CPT: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;V TRANS
  1. .S X=0 F S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVTC(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
  1. ..Q:Y=""
  1. ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDPA="CPT/TRAN: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. .;SNOMED
  1. .S X=0 F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X D
  1. ..Q:'$D(^AUPNVPOV(X,0))
  1. ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
  1. ..;Q:Y=""
  1. ..I Y]"",$D(^BUDHTSSC("AS",Y,TIEN)) S BUDPA="SNOMED: "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. ..S Y=$$VALI^XBDIQ1(9000010.07,X,.01) I $D(^BUDHTSSC("AD",Y,TIEN)) S BUDPA="DX "_Y_" "_$$DATE^BUDHUTL1(VDATE) Q
  1. I BUDPA]"" Q BUDPA
  1. ;CHECK PROBLEM LIST FOR SNOMED
  1. S X=$$PLCL^BUDHDU(P,"T6B ADOLWT PHYSICAL ACT CODES",EDATE,0,BDATE) I X Q "PROBLEM SNOMED "_$P(X,U,2)
  1. Q ""
  1. ADULT ;EP
  1. NEW BUDDOB,BUDX18RB,BUDX18TH,BUDBMI,BUDOW,BUDUW,BUDPLAN,BUDBMIV,BUDBMID
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUDX18RB=($E(BUDBD,1,3)-18)_"1231"
  1. Q:BUDDOB>BUDX18RB
  1. Q:BUDMEDV<1
  1. S BUDX18TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. I '$$VBBD(DFN,BUDX18TH,BUDED) Q ;quit if no visiT AFTER 18TH BIRTHDAY
  1. Q:$$PREG^BUDHRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
  1. ;REFUSAL, ETC.
  1. ;PALLIATIVE CARE
  1. S D=$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-365)
  1. Q:$$PALL(DFN,D,$$VD^APCLV(BUDLASTV)) ;HAD PALLIATIVE CARE
  1. Q:$$REF(DFN,D,$$VD^APCLV(BUDLASTV)) ;HAD A REFUSAL
  1. S D=$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-394)
  1. ;I D<BUDBD S D=BUDBD
  1. S BUDBMI=$$ADULTBMI(DFN,D,$$VD^APCLV(BUDLASTV),BUDAGE)
  1. S BUDBMIV=$P(BUDBMI,U,1)
  1. S BUDBMID=$P(BUDBMI,U,2)
  1. S BUDOW="",BUDUW="",BUDPLAN=""
  1. ;I BUDBMI="" S BUDPLAN=$$PLAN(DFN,BUDBD,BUDED) I BUDPLAN]"" S G=0 S ^XTMP("BUDHRP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN Q ;NO BMI
  1. ;I BUDBMI="" S Y=$$CPTI^BUDHDU(P,BUDBD,BUDED,$P($$CPT^ICPTCOD("3008F"),U,1)) I Y S BUDBMI="CPT: 3008F" S G=0 G D
  1. I BUDBMI="" S G=0 G D
  1. I BUDBMI>25 S BUDOW="OW"
  1. I +BUDBMI=25 S BUDOW="OW"
  1. I BUDBMI<18.5 S BUDUW="UW"
  1. ;put the rest in demoninator
  1. N I BUDOW="",BUDUW="" S BUDSECTF("PLAN")=$G(BUDSECTF("PLAN"))+1 S G=1 G D ;not over/underweight & HAD BMI PUT IN NUM/DEN
  1. S D=$$VD^APCLV(BUDLASTV)
  1. I BUDOW]"" S BUDPLAN=$$ANFU^BUDHUTL3(DFN,$$FMADD^XLFDT(D,-394),D)
  1. I BUDUW]"" S BUDPLAN=$$BLFU^BUDHUTL3(DFN,$$FMADD^XLFDT(D,-394),D)
  1. S G=0
  1. I BUDPLAN]"" S G=1,BUDSECTF("PLAN")=$G(BUDSECTF("PLAN"))+1
  1. D ;put the rest in demoninator
  1. S BUDSECTF("PTS")=$G(BUDSECTF("PTS"))+1 D
  1. .I $G(BUDAWS2L) D
  1. ..I 'G S ^XTMP("BUDHRP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=$S($P(BUDBMIV,U,1)]"":$J($P(BUDBMIV,U,1),6,2),1:"")_" "_$$DATE^BUDHUTL1(BUDBMID)_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
  1. .I $G(BUDAWS1L) D
  1. ..I G S ^XTMP("BUDHRP6B",BUDJ,BUDH,"AWS1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=$S($P(BUDBMIV,U,1)]"":$J($P(BUDBMIV,U,1),6,2),1:"")_" "_$$DATE^BUDHUTL1(BUDBMID)_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
  1. Q
  1. ;
  1. PALL(P,BDATE,EDATE) ;
  1. NEW D,BUDG,E,%
  1. S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
  1. NEW X,Y,G,T,V,Z,A
  1. S T=$O(^BUDHTSSC("B","T6B ADULTWT PALLIATIVE CARE",0))
  1. S G=""
  1. S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G]"") D
  1. .S Y=+$P(BUDG(X),U,4)
  1. .S Z=$P($G(^AUPNVPOV(Y,0)),U,1)
  1. .I $D(^BUDHTSSC("AD",Z,T)) S G=1 Q
  1. .S Y=$$VAL^XBDIQ1(9000010.07,Y,1101)
  1. .Q:Y=""
  1. .I $D(^BUDHTSSC("AS",Y,T)) S G=1
  1. I G Q G
  1. S X=$$PLCL^BUDHDU(P,"T6B ADULTWT PALLIATIVE CARE",EDATE,0,BDATE) I X Q 1 ;"PROBLEM SNOMED "_$P(X,U,2)
  1. Q G
  1. G ;EP
  1. G G^BUDHRP6R