- BUDDRP6V ; IHS/CMI/LAB - UDS REPORT PROCESSOR ;
- ;;11.0;IHS/RPMS UNIFORM DATA SYSTEM;;JAN 18, 2017;Build 66
- ;
- ;
- ADOLWT ;EP - called from xbdbque
- ;must have DOB between 1/1/06 and 12/31/06
- NEW BUDBMI,BUDDOB,BUD17RB,BUD3RB,BUD18BD,X,G
- S BUDDOB=$P(^DPT(DFN,0),U,3)
- S BUD17RB=($E(BUDBD,1,3)-17)_"0101" ;RERPORT PERIOD 17 BD
- S BUD3RB=($E(BUDED,1,3)-3)_"1231" ;REPORT PERIOD 3 BD
- Q:BUDDOB>BUD3RB
- Q:BUDDOB<BUD17RB
- Q:BUDMEDV<1 ;AT LEAST 1 MEDICAL VISIT
- S BUD18BD=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
- I '$$VBBD(DFN,BUDDOB,$$FMADD^XLFDT(BUD18BD,-1)) Q ;SEEN AT LEAST ONCE BEFORE 18TH DOB
- Q:$$PREG^BUDDRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
- S BUDBMI=$$BMINPA(DFN,BUDBD,BUDED,BUDAGE)
- S G=0 F X=1:1:3 I $P(BUDBMI,U,X)]"" S G=G+1
- I G=3 S BUDSECTE("AWT")=$G(BUDSECTE("AWT"))+1
- ;put the rest in demoninator
- S BUDSECTE("PTS")=$G(BUDSECTE("PTS"))+1 D
- .I $G(BUDWAC2L) D
- ..I G'=3 S ^XTMP("BUDDRP6B",BUDJ,BUDH,"WAC2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
- .I $G(BUDWAC1L) D
- ..I G=3 S ^XTMP("BUDDRP6B",BUDJ,BUDH,"WAC1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
- Q
- ;
- ;
- VBBD(P,BDATE,EDATE) ;EP
- NEW BUDVL,G,V,A,L
- K BUDVL
- S G=""
- S A="BUDVL(",B=DFN_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
- I '$D(BUDVL) Q ""
- S X=0 F S X=$O(BUDVL(X)) Q:X'=+X S V=$P(BUDVL(X),U,5) D
- .Q:'$D(^AUPNVSIT(V,0))
- .Q:'$P(^AUPNVSIT(V,0),U,9)
- .Q:$P(^AUPNVSIT(V,0),U,11)
- .Q:'$D(^AUPNVPRV("AD",V))
- .Q:'$D(^AUPNVPOV("AD",V))
- .S L=$P(^AUPNVSIT(V,0),U,6)
- .Q:L=""
- .Q:'$D(^BUDDSITE(BUDSITE,11,L)) ;not valid location
- .Q:$P(^AUPNVSIT(V,0),U,7)="C"
- .Q:$P(^AUPNVSIT(V,0),U,7)="T"
- .Q:$P(^AUPNVSIT(V,0),U,7)="N"
- .Q:$P(^AUPNVSIT(V,0),U,7)="D"
- .Q:$P(^AUPNVSIT(V,0),U,7)="X"
- .Q:$P(^AUPNVSIT(V,0),U,7)="E"
- .S G=V
- .Q
- Q G
- ;
- BMINPA(P,BDATE,EDATE,AGE) ;EP
- NEW %,W,H,B,D,%DT,RETVAL,BUDBMI,BUDNE,BUDPA
- S BUDBMI=$$LASTITEM^APCLAPIU(P,"BMIP","MEASUREMENT",BDATE,EDATE,"A") I BUDBMI]"" S BUDBMI=$P(BUDBMI,U,3)_" %ile meas" ;get percentile
- I BUDBMI="" S BUDBMI=$$LASTITEM^APCLAPIU(P,"BMI","MEASUREMENT",BDATE,EDATE,"A") I BUDBMI]"" S BUDBMI=$P(BUDBMI,U,3)_" BMI meas"
- I BUDBMI="" S BUDBMI=$$BMI(P,BDATE,EDATE,AGE) I BUDBMI]"" S BUDBMI=BUDBMI_" BMI"
- I BUDBMI="" S BUDBMI=$$BMIPROC(P,BDATE,EDATE)
- ;I BUDBMI="" I $$REF(P,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV)) Q "REF"
- S BUDNE=$$NUTR(P,BDATE,EDATE)
- S BUDPA=$$PA(P,BDATE,EDATE)
- Q BUDBMI_U_BUDNE_U_BUDPA
- BMIPROC(P,BDATE,EDATE) ;EP
- NEW D,BUDG,E,%
- K BUDG S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
- NEW X,Y,G,T
- S T=$O(^BUDDTSSC("B","T6B ADOLWT BMI DIAGNOSES CODES",0))
- S G=""
- S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G]"") D
- .S Y=+$P(BUDG(X),U,4)
- .S Y=$P($G(^AUPNVPOV(Y,0)),U,1)
- .I $D(^BUDDTSSC("AD",Y,T)) S G="POV "_$P(BUDG(X),U,2)
- Q G
- REF(P,BDATE,EDATE) ;EP
- NEW H,W
- S H=$$REFRNU^BUDDUTL1(P,9999999.07,$O(^AUTTMSR("B","HT",0)),BDATE,EDATE)
- I H Q 1
- S W=$$REFRNU^BUDDUTL1(P,9999999.07,$O(^AUTTMSR("B","WT",0)),BDATE,EDATE)
- I W Q 1
- Q ""
- ADULTBMI(P,BDATE,EDATE,AGE) ;EP
- NEW BUDBMI
- S BUDBMI=$$LASTITEM^APCLAPIU(P,"BMI","MEASUREMENT",BDATE,EDATE,"A") I BUDBMI]"" S BUDBMI=$P(BUDBMI,U,3)_U_$P(BUDBMI,U)
- I BUDBMI="" S BUDBMI=$$BMI(P,BDATE,EDATE,AGE) I BUDBMI]"" S BUDBMI=BUDBMI_U_$P($$WT(P,BDATE,EDATE),U,1)
- Q BUDBMI
- BMI(P,BDATE,EDATE,AGE) ;EP
- NEW HDATE,BUDBMIH,W,H,X
- S BUDBMIH=""
- I AGE>18,AGE<51 D Q BUDBMIH
- .S HDATE=$$FMADD^XLFDT(BDATE,-(5*365)),HDATE=$$FMTE^XLFDT(HDATE)
- .;S BDATE=$$FMADD^XLFDT(BDATE,-(5*365))
- .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S W=$P($$WT(P,BDATE,EDATE),U,1) I W=""!(W="?") Q
- .S H=$$HT(P,HDATE,EDATE) I H="" Q
- .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
- I AGE>50 D Q BUDBMIH
- .S HDATE=$$FMADD^XLFDT(BDATE,-(2*365)),HDATE=$$FMTE^XLFDT(HDATE)
- .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
- .S W=$P($$WT(P,BDATE,EDATE),U,1) I W=""!(W="?") Q
- .S HDATE=BDATE
- .S H=$$HT(P,HDATE,EDATE) I H="" Q
- .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
- I AGE<19 D Q BUDBMIH
- .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),BUDBMIH=(W/H)
- .Q
- Q ""
- HT(P,BDATE,EDATE) ;EP
- I 'P Q ""
- NEW %,BUDARRY,H,E
- S %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDARRY(") S H=$P($G(BUDARRY(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,BUDLW,X,BUDLN,BUDL,BUDLD,BUDLZ,BUDLX,ICD
- K BUDL S BUDLW="" S BUDLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(BUDLX,"BUDL(")
- S BUDLN=0 F S BUDLN=$O(BUDL(BUDLN)) Q:BUDLN'=+BUDLN!(BUDLW]"") D
- .S BUDLZ=$P(BUDL(BUDLN),U,5)
- .I '$D(^AUPNVPOV("AD",BUDLZ)) S BUDLW=$P(BUDL(BUDLN),U,2) Q
- . S BUDLD=0 F S BUDLD=$O(^AUPNVPOV("AD",BUDLZ,BUDLD)) Q:'BUDLD!(BUDLW]"") D
- .. S D=$P(BUDL(BUDLN),U)
- .. I $$ICD^ATXAPI($P(^AUPNVPOV(BUDLD,0),U,1),$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) Q
- .. S BUDLW=$P(BUDL(BUDLN),U,2)_U_$P(BUDL(BUDLN),U,1)
- ..Q
- Q BUDLW
- HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
- I '$G(P) Q ""
- KILL BUDLWTS,BUDLHTS,%,X,BUDLWTS1,BUDLHTS1,Y
- ;get all hts during time frame
- S %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLHTS(")
- 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)
- ;set the array up by date
- K BUDLHTS1 S X=0 F S X=$O(BUDLHTS(X)) Q:X'=+X S BUDLHTS1($P(BUDLHTS(X),U))=X
- ;get all wts during time frame
- S %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLWTS(")
- 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)
- ;set the array up by date
- K BUDLWTS1 S X=0 F S X=$O(BUDLWTS(X)) Q:X'=+X S BUDLWTS1($P(BUDLWTS(X),U))=X
- 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)
- Q BUDLCHT
- ;
- NUTR(P,BDATE,EDATE) ;EP
- NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDNUT
- S BUDNUT=""
- D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- S TIEN=$O(^BUDDTSSC("B","T6B ADOLWT NUTRITION CODES",0))
- S CTR=0 F S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR D
- .S VIEN=$P(BUDVS(CTR),U,5)
- .S VDATE=$P(BUDVS(CTR),U,1)
- .S X=0 F S X=$O(^AUPNVPED("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVPED(X,0))
- ..S T=$$VALI^XBDIQ1(9000010.16,X,.01)
- ..Q:'$D(^AUTTEDT(T,0))
- ..S T=$P(^AUTTEDT(T,0),U,2)
- ..I $P(T,"-",2)="N"!($P(T,"-",2)="DT")!($P(T,"-",2)="MNT")!($P(T,"-",1)="MNT") S BUDNUT=T Q
- ..I $P(T,"-",1)="97802"!($P(T,"-",1)="97803")!($P(T,"-",1)="97804") S BUDNUT=T Q
- .;CPT
- .S X=0 F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVCPT(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDNUT="CPT: "_Y Q
- .;V TRANS
- .S X=0 F S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVTC(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDNUT="CPT/TRAN: "_Y Q
- .;SNOMED
- .S X=0 F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVPOV(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AS",Y,TIEN)) S BUDNUT="SNOMED: "_Y Q
- I BUDNUT]"" Q BUDNUT
- ;CHECK PROBLEM LIST FOR SNOMED
- S X=$$PLCL^BUDDDU(P,"T6B ADOLWT NUTRITION CODES",EDATE,0,BDATE) I X Q "PROBLEM SNOMED "_$P(X,U,2)
- Q ""
- PA(P,BDATE,EDATE) ;EP
- NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDPA
- S BUDPA=""
- D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- S TIEN=$O(^BUDDTSSC("B","T6B ADOLWT PHYSICAL ACT CODES",0))
- S CTR=0 F S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR D
- .S VIEN=$P(BUDVS(CTR),U,5)
- .S VDATE=$P(BUDVS(CTR),U,1)
- .S X=0 F S X=$O(^AUPNVPED("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVPED(X,0))
- ..S T=$$VALI^XBDIQ1(9000010.16,X,.01)
- ..Q:'$D(^AUTTEDT(T,0))
- ..S T=$P(^AUTTEDT(T,0),U,2)
- ..I $P(T,"-",2)="EX"!($P(T,"-",1)="Z1.89") S BUDPA=T Q
- ..I $P(T,"-",1)="97802"!($P(T,"-",1)="97803")!($P(T,"-",1)="97804") S BUDPA=T Q
- .;CPT
- .S X=0 F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVCPT(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDPA="CPT: "_Y Q
- .;V TRANS
- .S X=0 F S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVTC(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDPA="CPT/TRAN: "_Y Q
- .;SNOMED
- .S X=0 F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X D
- ..Q:'$D(^AUPNVPOV(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AS",Y,TIEN)) S BUDPA="SNOMED: "_Y Q
- ..S Y=$$VALI^XBDIQ1(9000010.07,X,.01) I $D(^BUDDTSSC("AD",Y,TIEN)) S BUDPA="DX "_Y Q
- I BUDPA]"" Q BUDPA
- ;CHECK PROBLEM LIST FOR SNOMED
- S X=$$PLCL^BUDDDU(P,"T6B ADOLWT PHYSICAL ACT CODES",EDATE,0,BDATE) I X Q "PROBLEM SNOMED "_$P(X,U,2)
- Q ""
- ADULT ;EP
- NEW BUDDOB,BUDX18RB,BUDX18TH,BUDBMI,BUDOW,BUDUW,BUDPLAN,BUDBMIV,BUDBMID
- S BUDDOB=$P(^DPT(DFN,0),U,3)
- S BUDX18RB=($E(BUDBD,1,3)-18)_"1231"
- Q:BUDDOB>BUDX18RB
- Q:BUDMEDV<1
- S BUDX18TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
- I '$$VBBD(DFN,BUDX18TH,BUDED) Q ;quit if no visiT AFTER 18TH BIRTHDAY
- Q:$$PREG^BUDDRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
- ;REFUSAL, ETC.
- ;PALLIATIVE CARE
- Q:$$PALL(DFN,BUDBD,BUDED) ;HAD PALLIATIVE CARE
- Q:$$REF(DFN,BUDBD,BUDED) ;HAD A REFUSAL
- S D=$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-182)
- ;I D<BUDBD S D=BUDBD
- S BUDBMI=$$ADULTBMI(DFN,D,$$VD^APCLV(BUDLASTV),BUDAGE)
- S BUDBMIV=$P(BUDBMI,U,1)
- S BUDBMID=$P(BUDBMI,U,2)
- S BUDOW="",BUDUW="",BUDPLAN=""
- ;I BUDBMI="" S BUDPLAN=$$PLAN(DFN,BUDBD,BUDED) I BUDPLAN]"" S G=0 S ^XTMP("BUDDRP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN Q ;NO BMI
- I BUDBMI="" S Y=$$CPTI^BUDDDU(P,BUDBD,BUDED,$P($$CPT^ICPTCOD("3008F"),U,1)) I Y S BUDBMI="CPT: 3008F" S G=0 G D
- I BUDBMI="" S G=0 G D
- I BUDAGE<65 D G N
- .I BUDBMI>25 S BUDOW="OW"
- .I BUDBMI<18.5 S BUDUW="UW"
- I BUDBMI'<30 S BUDOW="OW"
- I BUDBMI<23 S BUDUW="UW"
- ;put the rest in demoninator
- 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
- S BUDPLAN=$$PLAN(DFN,$$FMADD^XLFDT(BUDBMID,-182),BUDBMID)
- S G=0
- I BUDPLAN]"" S G=1,BUDSECTF("PLAN")=$G(BUDSECTF("PLAN"))+1
- D ;put the rest in demoninator
- S BUDSECTF("PTS")=$G(BUDSECTF("PTS"))+1 D
- .I $G(BUDAWS2L) D
- ..I 'G S ^XTMP("BUDDRP6B",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^BUDDUTL1(BUDBMID)_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
- .I $G(BUDAWS1L) D
- ..I G S ^XTMP("BUDDRP6B",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^BUDDUTL1(BUDBMID)_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN
- Q
- ;
- PLAN(P,BDATE,EDATE) ;
- NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDPL,C
- S BUDPL=""
- D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- S TIEN=$O(^BUDDTSSC("B","T6B ADULTWT PLAN CODES",0))
- S CTR=0 F S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR D
- .S VIEN=$P(BUDVS(CTR),U,5)
- .S VDATE=$P(BUDVS(CTR),U,1)
- .S C=$$CLINIC^APCLV(VIEN,"C") I C]"",$D(^BUDDTSSC(TIEN,17,"B",C)) S BUDPL="Clinic "_C_U_VDATE Q
- .S X=0 F S X=$O(^AUPNVPED("AD",VIEN,X)) Q:X'=+X!(BUDPL]"") D
- ..Q:'$D(^AUPNVPED(X,0))
- ..S T=$$VALI^XBDIQ1(9000010.16,X,.01)
- ..Q:'$D(^AUTTEDT(T,0))
- ..S T=$P(^AUTTEDT(T,0),U,2)
- ..I $P(T,"-",2)="EX"!($P(T,"-",2)="LA")!($P(T,"-",2)="N")!($P(T,"-",2)="DT")!($P(T,"-",2)="MNT") S BUDPL=T_U_VDATE Q
- ..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")!($P(T,"-",1)="Z71.3") S BUDPL=T_U_VDATE Q
- .;CPT
- .S X=0 F S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X!(BUDPL]"") D
- ..Q:'$D(^AUPNVCPT(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDPL="CPT: "_Y_U_VDATE Q
- .;V TRANS
- .S X=0 F S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X!(BUDPL]"") D
- ..Q:'$D(^AUPNVTC(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- ..Q:Y=""
- ..I $D(^BUDDTSSC("AC",Y,TIEN)) S BUDPL="CPT/TRAN: "_Y_U_VDATE Q
- .;SNOMED
- .S X=0 F S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X!(BUDPL]"") D
- ..Q:'$D(^AUPNVPOV(X,0))
- ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- ..I Y]"",$D(^BUDDTSSC("AS",Y,TIEN)) S BUDPL="SNOMED: "_Y_U_VDATE Q
- ..S Y=$$VALI^XBDIQ1(9000010.07,X,.01) I $D(^BUDDTSSC("AD",Y,TIEN)) S BUDPL="DX "_$$VAL^XBDIQ1(9000010.07,X,.01)_U_VDATE Q
- .;PROVIDER CODES
- .S X=0 F S X=$O(^AUPNVPRV("AD",VIEN,X)) Q:X'=+X!(BUDPL]"") D
- ..Q:'$D(^AUPNVPRV(X,0))
- ..S Y=$$VALI^XBDIQ1(9000010.06,X,.01)
- ..Q:Y=""
- ..S Y=$$PROVCLSC^XBFUNC1(Y)
- ..Q:Y=""
- ..I $D(^BUDDTSSC(16,"B",Y)) S BUDPL="Prv: "_Y_U_VDATE Q
- I BUDPL]"" Q BUDPL
- ;CHECK PROBLEM LIST FOR SNOMED
- S X=$$PLCL^BUDDDU(P,"T6B ADULTWT PLAN CODES",EDATE,0,BDATE) I X Q "PROBLEM SNOMED "_$P(X,U,2)
- Q ""
- PALL(P,BDATE,EDATE) ;
- NEW D,BUDG,E,%
- S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
- NEW X,Y,G,T,V,Z,A
- S T=$O(^BUDDTSSC("B","T6B ADULTWT PALLIATIVE CARE",0))
- S G=""
- S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G]"") D
- .S Y=+$P(BUDG(X),U,4)
- .S Z=$P($G(^AUPNVPOV(Y,0)),U,1)
- .I $D(^BUDDTSSC("AD",Z,T)) S G=1 Q
- .S Y=$$VAL^XBDIQ1(9000010.07,Y,1101)
- .Q:Y=""
- .I $D(^BUDDTSSC("AS",Y,T)) S G=1
- I G Q G
- S X=$$PLCL^BUDDDU(P,"T6B ADULTWT PALLIATIVE CARE",EDATE,0,BDATE) I X Q 1 ;"PROBLEM SNOMED "_$P(X,U,2)
- Q G
- G ;EP
- G G^BUDDRP6R
- BUDDRP6V ; IHS/CMI/LAB - UDS REPORT PROCESSOR ;
- +1 ;;11.0;IHS/RPMS UNIFORM DATA SYSTEM;;JAN 18, 2017;Build 66
- +2 ;
- +3 ;
- ADOLWT ;EP - called from xbdbque
- +1 ;must have DOB between 1/1/06 and 12/31/06
- +2 NEW BUDBMI,BUDDOB,BUD17RB,BUD3RB,BUD18BD,X,G
- +3 SET BUDDOB=$PIECE(^DPT(DFN,0),U,3)
- +4 ;RERPORT PERIOD 17 BD
- SET BUD17RB=($EXTRACT(BUDBD,1,3)-17)_"0101"
- +5 ;REPORT PERIOD 3 BD
- SET BUD3RB=($EXTRACT(BUDED,1,3)-3)_"1231"
- +6 IF BUDDOB>BUD3RB
- QUIT
- +7 IF BUDDOB<BUD17RB
- QUIT
- +8 ;AT LEAST 1 MEDICAL VISIT
- IF BUDMEDV<1
- QUIT
- +9 SET BUD18BD=$EXTRACT(BUDDOB,1,3)+18_$EXTRACT(BUDDOB,4,7)
- +10 ;SEEN AT LEAST ONCE BEFORE 18TH DOB
- IF '$$VBBD(DFN,BUDDOB,$$FMADD^XLFDT(BUD18BD,-1))
- QUIT
- +11 IF $$PREG^BUDDRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
- QUIT
- +12 SET BUDBMI=$$BMINPA(DFN,BUDBD,BUDED,BUDAGE)
- +13 SET G=0
- FOR X=1:1:3
- IF $PIECE(BUDBMI,U,X)]""
- SET G=G+1
- +14 IF G=3
- SET BUDSECTE("AWT")=$GET(BUDSECTE("AWT"))+1
- +15 ;put the rest in demoninator
- +16 SET BUDSECTE("PTS")=$GET(BUDSECTE("PTS"))+1
- Begin DoDot:1
- +17 IF $GET(BUDWAC2L)
- Begin DoDot:2
- +18 IF G'=3
- SET ^XTMP("BUDDRP6B",BUDJ,BUDH,"WAC2",BUDAGE,$PIECE(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
- End DoDot:2
- +19 IF $GET(BUDWAC1L)
- Begin DoDot:2
- +20 IF G=3
- SET ^XTMP("BUDDRP6B",BUDJ,BUDH,"WAC1",BUDAGE,$PIECE(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI
- End DoDot:2
- End DoDot:1
- +21 QUIT
- +22 ;
- +23 ;
- VBBD(P,BDATE,EDATE) ;EP
- +1 NEW BUDVL,G,V,A,L
- +2 KILL BUDVL
- +3 SET G=""
- +4 SET A="BUDVL("
- SET B=DFN_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE)
- SET E=$$START1^APCLDF(B,A)
- +5 IF '$DATA(BUDVL)
- QUIT ""
- +6 SET X=0
- FOR
- SET X=$ORDER(BUDVL(X))
- IF X'=+X
- QUIT
- SET V=$PIECE(BUDVL(X),U,5)
- Begin DoDot:1
- +7 IF '$DATA(^AUPNVSIT(V,0))
- QUIT
- +8 IF '$PIECE(^AUPNVSIT(V,0),U,9)
- QUIT
- +9 IF $PIECE(^AUPNVSIT(V,0),U,11)
- QUIT
- +10 IF '$DATA(^AUPNVPRV("AD",V))
- QUIT
- +11 IF '$DATA(^AUPNVPOV("AD",V))
- QUIT
- +12 SET L=$PIECE(^AUPNVSIT(V,0),U,6)
- +13 IF L=""
- QUIT
- +14 ;not valid location
- IF '$DATA(^BUDDSITE(BUDSITE,11,L))
- QUIT
- +15 IF $PIECE(^AUPNVSIT(V,0),U,7)="C"
- QUIT
- +16 IF $PIECE(^AUPNVSIT(V,0),U,7)="T"
- QUIT
- +17 IF $PIECE(^AUPNVSIT(V,0),U,7)="N"
- QUIT
- +18 IF $PIECE(^AUPNVSIT(V,0),U,7)="D"
- QUIT
- +19 IF $PIECE(^AUPNVSIT(V,0),U,7)="X"
- QUIT
- +20 IF $PIECE(^AUPNVSIT(V,0),U,7)="E"
- QUIT
- +21 SET G=V
- +22 QUIT
- End DoDot:1
- +23 QUIT G
- +24 ;
- BMINPA(P,BDATE,EDATE,AGE) ;EP
- +1 NEW %,W,H,B,D,%DT,RETVAL,BUDBMI,BUDNE,BUDPA
- +2 ;get percentile
- SET BUDBMI=$$LASTITEM^APCLAPIU(P,"BMIP","MEASUREMENT",BDATE,EDATE,"A")
- IF BUDBMI]""
- SET BUDBMI=$PIECE(BUDBMI,U,3)_" %ile meas"
- +3 IF BUDBMI=""
- SET BUDBMI=$$LASTITEM^APCLAPIU(P,"BMI","MEASUREMENT",BDATE,EDATE,"A")
- IF BUDBMI]""
- SET BUDBMI=$PIECE(BUDBMI,U,3)_" BMI meas"
- +4 IF BUDBMI=""
- SET BUDBMI=$$BMI(P,BDATE,EDATE,AGE)
- IF BUDBMI]""
- SET BUDBMI=BUDBMI_" BMI"
- +5 IF BUDBMI=""
- SET BUDBMI=$$BMIPROC(P,BDATE,EDATE)
- +6 ;I BUDBMI="" I $$REF(P,$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-(6*30.5)),$$VD^APCLV(BUDLASTV)) Q "REF"
- +7 SET BUDNE=$$NUTR(P,BDATE,EDATE)
- +8 SET BUDPA=$$PA(P,BDATE,EDATE)
- +9 QUIT BUDBMI_U_BUDNE_U_BUDPA
- BMIPROC(P,BDATE,EDATE) ;EP
- +1 NEW D,BUDG,E,%
- +2 KILL BUDG
- SET %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BUDG(")
- +3 NEW X,Y,G,T
- +4 SET T=$ORDER(^BUDDTSSC("B","T6B ADOLWT BMI DIAGNOSES CODES",0))
- +5 SET G=""
- +6 SET X=0
- FOR
- SET X=$ORDER(BUDG(X))
- IF X'=+X!(G]"")
- QUIT
- Begin DoDot:1
- +7 SET Y=+$PIECE(BUDG(X),U,4)
- +8 SET Y=$PIECE($GET(^AUPNVPOV(Y,0)),U,1)
- +9 IF $DATA(^BUDDTSSC("AD",Y,T))
- SET G="POV "_$PIECE(BUDG(X),U,2)
- End DoDot:1
- +10 QUIT G
- REF(P,BDATE,EDATE) ;EP
- +1 NEW H,W
- +2 SET H=$$REFRNU^BUDDUTL1(P,9999999.07,$ORDER(^AUTTMSR("B","HT",0)),BDATE,EDATE)
- +3 IF H
- QUIT 1
- +4 SET W=$$REFRNU^BUDDUTL1(P,9999999.07,$ORDER(^AUTTMSR("B","WT",0)),BDATE,EDATE)
- +5 IF W
- QUIT 1
- +6 QUIT ""
- ADULTBMI(P,BDATE,EDATE,AGE) ;EP
- +1 NEW BUDBMI
- +2 SET BUDBMI=$$LASTITEM^APCLAPIU(P,"BMI","MEASUREMENT",BDATE,EDATE,"A")
- IF BUDBMI]""
- SET BUDBMI=$PIECE(BUDBMI,U,3)_U_$PIECE(BUDBMI,U)
- +3 IF BUDBMI=""
- SET BUDBMI=$$BMI(P,BDATE,EDATE,AGE)
- IF BUDBMI]""
- SET BUDBMI=BUDBMI_U_$PIECE($$WT(P,BDATE,EDATE),U,1)
- +4 QUIT BUDBMI
- BMI(P,BDATE,EDATE,AGE) ;EP
- +1 NEW HDATE,BUDBMIH,W,H,X
- +2 SET BUDBMIH=""
- +3 IF AGE>18
- IF AGE<51
- Begin DoDot:1
- +4 SET HDATE=$$FMADD^XLFDT(BDATE,-(5*365))
- SET HDATE=$$FMTE^XLFDT(HDATE)
- +5 ;S BDATE=$$FMADD^XLFDT(BDATE,-(5*365))
- +6 SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +7 SET W=$PIECE($$WT(P,BDATE,EDATE),U,1)
- IF W=""!(W="?")
- QUIT
- +8 SET H=$$HT(P,HDATE,EDATE)
- IF H=""
- QUIT
- +9 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BUDBMIH=(W/H)
- End DoDot:1
- QUIT BUDBMIH
- +10 IF AGE>50
- Begin DoDot:1
- +11 SET HDATE=$$FMADD^XLFDT(BDATE,-(2*365))
- SET HDATE=$$FMTE^XLFDT(HDATE)
- +12 SET BDATE=$$FMTE^XLFDT(BDATE)
- SET EDATE=$$FMTE^XLFDT(EDATE)
- +13 SET W=$PIECE($$WT(P,BDATE,EDATE),U,1)
- IF W=""!(W="?")
- QUIT
- +14 SET HDATE=BDATE
- +15 SET H=$$HT(P,HDATE,EDATE)
- IF H=""
- QUIT
- +16 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BUDBMIH=(W/H)
- End DoDot:1
- QUIT BUDBMIH
- +17 IF AGE<19
- Begin DoDot:1
- +18 SET X=$$HTWTSD(P,BDATE,EDATE)
- +19 IF '$PIECE(X,"^")
- QUIT
- +20 IF '$PIECE(X,"^",2)
- QUIT
- +21 SET W=$PIECE(X,"^")
- SET H=$PIECE(X,"^",2)
- +22 SET W=W*.45359
- SET H=(H*.0254)
- SET H=(H*H)
- SET BUDBMIH=(W/H)
- +23 QUIT
- End DoDot:1
- QUIT BUDBMIH
- +24 QUIT ""
- HT(P,BDATE,EDATE) ;EP
- +1 IF 'P
- QUIT ""
- +2 NEW %,BUDARRY,H,E
- +3 SET %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BUDARRY(")
- SET H=$PIECE($GET(BUDARRY(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,BUDLW,X,BUDLN,BUDL,BUDLD,BUDLZ,BUDLX,ICD
- +3 KILL BUDL
- SET BUDLW=""
- SET BUDLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(BUDLX,"BUDL(")
- +4 SET BUDLN=0
- FOR
- SET BUDLN=$ORDER(BUDL(BUDLN))
- IF BUDLN'=+BUDLN!(BUDLW]"")
- QUIT
- Begin DoDot:1
- +5 SET BUDLZ=$PIECE(BUDL(BUDLN),U,5)
- +6 IF '$DATA(^AUPNVPOV("AD",BUDLZ))
- SET BUDLW=$PIECE(BUDL(BUDLN),U,2)
- QUIT
- +7 SET BUDLD=0
- FOR
- SET BUDLD=$ORDER(^AUPNVPOV("AD",BUDLZ,BUDLD))
- IF 'BUDLD!(BUDLW]"")
- QUIT
- Begin DoDot:2
- +8 SET D=$PIECE(BUDL(BUDLN),U)
- +9 IF $$ICD^ATXAPI($PIECE(^AUPNVPOV(BUDLD,0),U,1),$ORDER(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9)
- QUIT
- +10 SET BUDLW=$PIECE(BUDL(BUDLN),U,2)_U_$PIECE(BUDL(BUDLN),U,1)
- +11 QUIT
- End DoDot:2
- End DoDot:1
- +12 QUIT BUDLW
- HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
- +1 IF '$GET(P)
- QUIT ""
- +2 KILL BUDLWTS,BUDLHTS,%,X,BUDLWTS1,BUDLHTS1,Y
- +3 ;get all hts during time frame
- +4 SET %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BUDLHTS(")
- +5 SET Y=0
- FOR
- SET Y=$ORDER(BUDLHTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BUDLHTS(Y),U,2)="?"!($PIECE(BUDLHTS(Y),U,2)="")
- KILL BUDLHTS(Y)
- +6 ;set the array up by date
- +7 KILL BUDLHTS1
- SET X=0
- FOR
- SET X=$ORDER(BUDLHTS(X))
- IF X'=+X
- QUIT
- SET BUDLHTS1($PIECE(BUDLHTS(X),U))=X
- +8 ;get all wts during time frame
- +9 SET %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BUDLWTS(")
- +10 SET Y=0
- FOR
- SET Y=$ORDER(BUDLWTS(Y))
- IF Y'=+Y
- QUIT
- IF $PIECE(BUDLWTS(Y),U,2)="?"!($PIECE(BUDLWTS(Y),U,2)="")
- KILL BUDLWTS(Y)
- +11 ;set the array up by date
- +12 KILL BUDLWTS1
- SET X=0
- FOR
- SET X=$ORDER(BUDLWTS(X))
- IF X'=+X
- QUIT
- SET BUDLWTS1($PIECE(BUDLWTS(X),U))=X
- +13 SET BUDLCHT=""
- SET X=9999999
- FOR
- SET X=$ORDER(BUDLWTS1(X),-1)
- IF X=""!(BUDLCHT]"")
- QUIT
- IF $DATA(BUDLHTS1(X))
- SET BUDLCHT=$PIECE(BUDLWTS(BUDLWTS1(X)),U,2)_U_$PIECE(BUDLHTS(BUDLHTS1(X)),U,2)
- +14 QUIT BUDLCHT
- +15 ;
- NUTR(P,BDATE,EDATE) ;EP
- +1 NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDNUT
- +2 SET BUDNUT=""
- +3 DO ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- +4 SET TIEN=$ORDER(^BUDDTSSC("B","T6B ADOLWT NUTRITION CODES",0))
- +5 SET CTR=0
- FOR
- SET CTR=$ORDER(BUDVS(CTR))
- IF CTR'=+CTR
- QUIT
- Begin DoDot:1
- +6 SET VIEN=$PIECE(BUDVS(CTR),U,5)
- +7 SET VDATE=$PIECE(BUDVS(CTR),U,1)
- +8 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPED("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +9 IF '$DATA(^AUPNVPED(X,0))
- QUIT
- +10 SET T=$$VALI^XBDIQ1(9000010.16,X,.01)
- +11 IF '$DATA(^AUTTEDT(T,0))
- QUIT
- +12 SET T=$PIECE(^AUTTEDT(T,0),U,2)
- +13 IF $PIECE(T,"-",2)="N"!($PIECE(T,"-",2)="DT")!($PIECE(T,"-",2)="MNT")!($PIECE(T,"-",1)="MNT")
- SET BUDNUT=T
- QUIT
- +14 IF $PIECE(T,"-",1)="97802"!($PIECE(T,"-",1)="97803")!($PIECE(T,"-",1)="97804")
- SET BUDNUT=T
- QUIT
- End DoDot:2
- +15 ;CPT
- +16 SET X=0
- FOR
- SET X=$ORDER(^AUPNVCPT("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +17 IF '$DATA(^AUPNVCPT(X,0))
- QUIT
- +18 SET Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- +19 IF Y=""
- QUIT
- +20 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDNUT="CPT: "_Y
- QUIT
- End DoDot:2
- +21 ;V TRANS
- +22 SET X=0
- FOR
- SET X=$ORDER(^AUPNVTC("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +23 IF '$DATA(^AUPNVTC(X,0))
- QUIT
- +24 SET Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- +25 IF Y=""
- QUIT
- +26 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDNUT="CPT/TRAN: "_Y
- QUIT
- End DoDot:2
- +27 ;SNOMED
- +28 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPOV("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +29 IF '$DATA(^AUPNVPOV(X,0))
- QUIT
- +30 SET Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- +31 IF Y=""
- QUIT
- +32 IF $DATA(^BUDDTSSC("AS",Y,TIEN))
- SET BUDNUT="SNOMED: "_Y
- QUIT
- End DoDot:2
- End DoDot:1
- +33 IF BUDNUT]""
- QUIT BUDNUT
- +34 ;CHECK PROBLEM LIST FOR SNOMED
- +35 SET X=$$PLCL^BUDDDU(P,"T6B ADOLWT NUTRITION CODES",EDATE,0,BDATE)
- IF X
- QUIT "PROBLEM SNOMED "_$PIECE(X,U,2)
- +36 QUIT ""
- PA(P,BDATE,EDATE) ;EP
- +1 NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDPA
- +2 SET BUDPA=""
- +3 DO ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- +4 SET TIEN=$ORDER(^BUDDTSSC("B","T6B ADOLWT PHYSICAL ACT CODES",0))
- +5 SET CTR=0
- FOR
- SET CTR=$ORDER(BUDVS(CTR))
- IF CTR'=+CTR
- QUIT
- Begin DoDot:1
- +6 SET VIEN=$PIECE(BUDVS(CTR),U,5)
- +7 SET VDATE=$PIECE(BUDVS(CTR),U,1)
- +8 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPED("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +9 IF '$DATA(^AUPNVPED(X,0))
- QUIT
- +10 SET T=$$VALI^XBDIQ1(9000010.16,X,.01)
- +11 IF '$DATA(^AUTTEDT(T,0))
- QUIT
- +12 SET T=$PIECE(^AUTTEDT(T,0),U,2)
- +13 IF $PIECE(T,"-",2)="EX"!($PIECE(T,"-",1)="Z1.89")
- SET BUDPA=T
- QUIT
- +14 IF $PIECE(T,"-",1)="97802"!($PIECE(T,"-",1)="97803")!($PIECE(T,"-",1)="97804")
- SET BUDPA=T
- QUIT
- End DoDot:2
- +15 ;CPT
- +16 SET X=0
- FOR
- SET X=$ORDER(^AUPNVCPT("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +17 IF '$DATA(^AUPNVCPT(X,0))
- QUIT
- +18 SET Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- +19 IF Y=""
- QUIT
- +20 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDPA="CPT: "_Y
- QUIT
- End DoDot:2
- +21 ;V TRANS
- +22 SET X=0
- FOR
- SET X=$ORDER(^AUPNVTC("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +23 IF '$DATA(^AUPNVTC(X,0))
- QUIT
- +24 SET Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- +25 IF Y=""
- QUIT
- +26 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDPA="CPT/TRAN: "_Y
- QUIT
- End DoDot:2
- +27 ;SNOMED
- +28 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPOV("AD",VIEN,X))
- IF X'=+X
- QUIT
- Begin DoDot:2
- +29 IF '$DATA(^AUPNVPOV(X,0))
- QUIT
- +30 SET Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- +31 IF Y=""
- QUIT
- +32 IF $DATA(^BUDDTSSC("AS",Y,TIEN))
- SET BUDPA="SNOMED: "_Y
- QUIT
- +33 SET Y=$$VALI^XBDIQ1(9000010.07,X,.01)
- IF $DATA(^BUDDTSSC("AD",Y,TIEN))
- SET BUDPA="DX "_Y
- QUIT
- End DoDot:2
- End DoDot:1
- +34 IF BUDPA]""
- QUIT BUDPA
- +35 ;CHECK PROBLEM LIST FOR SNOMED
- +36 SET X=$$PLCL^BUDDDU(P,"T6B ADOLWT PHYSICAL ACT CODES",EDATE,0,BDATE)
- IF X
- QUIT "PROBLEM SNOMED "_$PIECE(X,U,2)
- +37 QUIT ""
- ADULT ;EP
- +1 NEW BUDDOB,BUDX18RB,BUDX18TH,BUDBMI,BUDOW,BUDUW,BUDPLAN,BUDBMIV,BUDBMID
- +2 SET BUDDOB=$PIECE(^DPT(DFN,0),U,3)
- +3 SET BUDX18RB=($EXTRACT(BUDBD,1,3)-18)_"1231"
- +4 IF BUDDOB>BUDX18RB
- QUIT
- +5 IF BUDMEDV<1
- QUIT
- +6 SET BUDX18TH=$EXTRACT(BUDDOB,1,3)+18_$EXTRACT(BUDDOB,4,7)
- +7 ;quit if no visiT AFTER 18TH BIRTHDAY
- IF '$$VBBD(DFN,BUDX18TH,BUDED)
- QUIT
- +8 IF $$PREG^BUDDRP6B(DFN,$$FMADD^XLFDT(BUDED,-609),BUDED,BUDBD)
- QUIT
- +9 ;REFUSAL, ETC.
- +10 ;PALLIATIVE CARE
- +11 ;HAD PALLIATIVE CARE
- IF $$PALL(DFN,BUDBD,BUDED)
- QUIT
- +12 ;HAD A REFUSAL
- IF $$REF(DFN,BUDBD,BUDED)
- QUIT
- +13 SET D=$$FMADD^XLFDT($$VD^APCLV(BUDLASTV),-182)
- +14 ;I D<BUDBD S D=BUDBD
- +15 SET BUDBMI=$$ADULTBMI(DFN,D,$$VD^APCLV(BUDLASTV),BUDAGE)
- +16 SET BUDBMIV=$PIECE(BUDBMI,U,1)
- +17 SET BUDBMID=$PIECE(BUDBMI,U,2)
- +18 SET BUDOW=""
- SET BUDUW=""
- SET BUDPLAN=""
- +19 ;I BUDBMI="" S BUDPLAN=$$PLAN(DFN,BUDBD,BUDED) I BUDPLAN]"" S G=0 S ^XTMP("BUDDRP6B",BUDJ,BUDH,"AWS2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDBMI_U_$S(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERWEIGHT",1:"")_U_BUDPLAN Q ;NO BMI
- +20 IF BUDBMI=""
- SET Y=$$CPTI^BUDDDU(P,BUDBD,BUDED,$PIECE($$CPT^ICPTCOD("3008F"),U,1))
- IF Y
- SET BUDBMI="CPT: 3008F"
- SET G=0
- GOTO D
- +21 IF BUDBMI=""
- SET G=0
- GOTO D
- +22 IF BUDAGE<65
- Begin DoDot:1
- +23 IF BUDBMI>25
- SET BUDOW="OW"
- +24 IF BUDBMI<18.5
- SET BUDUW="UW"
- End DoDot:1
- GOTO N
- +25 IF BUDBMI'<30
- SET BUDOW="OW"
- +26 IF BUDBMI<23
- SET BUDUW="UW"
- +27 ;put the rest in demoninator
- N ;not over/underweight & HAD BMI PUT IN NUM/DEN
- IF BUDOW=""
- IF BUDUW=""
- SET BUDSECTF("PLAN")=$GET(BUDSECTF("PLAN"))+1
- SET G=1
- GOTO D
- +1 SET BUDPLAN=$$PLAN(DFN,$$FMADD^XLFDT(BUDBMID,-182),BUDBMID)
- +2 SET G=0
- +3 IF BUDPLAN]""
- SET G=1
- SET BUDSECTF("PLAN")=$GET(BUDSECTF("PLAN"))+1
- D ;put the rest in demoninator
- +1 SET BUDSECTF("PTS")=$GET(BUDSECTF("PTS"))+1
- Begin DoDot:1
- +2 IF $GET(BUDAWS2L)
- Begin DoDot:2
- +3 IF 'G
- SET ^XTMP("BUDDRP6B",BUDJ,BUDH,"AWS2",BUDAGE,$PIECE(^DPT(DFN,0),U),BUDCCOM,DFN)=$SELECT($PIECE(BUDBMIV,U,1)]"":$JUSTIFY($PIECE(BUDBMIV,U,1),6,2),1:"")_" "_$$DATE^BUDDUTL1(BUDBMID)_U_$SELECT(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERW
- EIGHT",1:"")_U_BUDPLAN
- End DoDot:2
- +4 IF $GET(BUDAWS1L)
- Begin DoDot:2
- +5 IF G
- SET ^XTMP("BUDDRP6B",BUDJ,BUDH,"AWS1",BUDAGE,$PIECE(^DPT(DFN,0),U),BUDCCOM,DFN)=$SELECT($PIECE(BUDBMIV,U,1)]"":$JUSTIFY($PIECE(BUDBMIV,U,1),6,2),1:"")_" "_$$DATE^BUDDUTL1(BUDBMID)_U_$SELECT(BUDOW]"":"OVERWEIGHT",BUDUW]"":"UNDERW
- EIGHT",1:"")_U_BUDPLAN
- End DoDot:2
- End DoDot:1
- +6 QUIT
- +7 ;
- PLAN(P,BDATE,EDATE) ;
- +1 NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,S,T,BUDPL,C
- +2 SET BUDPL=""
- +3 DO ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
- +4 SET TIEN=$ORDER(^BUDDTSSC("B","T6B ADULTWT PLAN CODES",0))
- +5 SET CTR=0
- FOR
- SET CTR=$ORDER(BUDVS(CTR))
- IF CTR'=+CTR
- QUIT
- Begin DoDot:1
- +6 SET VIEN=$PIECE(BUDVS(CTR),U,5)
- +7 SET VDATE=$PIECE(BUDVS(CTR),U,1)
- +8 SET C=$$CLINIC^APCLV(VIEN,"C")
- IF C]""
- IF $DATA(^BUDDTSSC(TIEN,17,"B",C))
- SET BUDPL="Clinic "_C_U_VDATE
- QUIT
- +9 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPED("AD",VIEN,X))
- IF X'=+X!(BUDPL]"")
- QUIT
- Begin DoDot:2
- +10 IF '$DATA(^AUPNVPED(X,0))
- QUIT
- +11 SET T=$$VALI^XBDIQ1(9000010.16,X,.01)
- +12 IF '$DATA(^AUTTEDT(T,0))
- QUIT
- +13 SET T=$PIECE(^AUTTEDT(T,0),U,2)
- +14 IF $PIECE(T,"-",2)="EX"!($PIECE(T,"-",2)="LA")!($PIECE(T,"-",2)="N")!($PIECE(T,"-",2)="DT")!($PIECE(T,"-",2)="MNT")
- SET BUDPL=T_U_VDATE
- QUIT
- +15 IF $PIECE(T,"-",1)="OBS"!($PIECE(T,"-",1)="V65.3")!($PIECE(T,"-",1)="V65.41")!($PIECE(T,"-",1)="278.00")!($PIECE(T,"-",1)="278.01")!($PIECE(T,"-",1)="Z71.3")
- SET BUDPL=T_U_VDATE
- QUIT
- End DoDot:2
- +16 ;CPT
- +17 SET X=0
- FOR
- SET X=$ORDER(^AUPNVCPT("AD",VIEN,X))
- IF X'=+X!(BUDPL]"")
- QUIT
- Begin DoDot:2
- +18 IF '$DATA(^AUPNVCPT(X,0))
- QUIT
- +19 SET Y=$$VAL^XBDIQ1(9000010.18,X,.01)
- +20 IF Y=""
- QUIT
- +21 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDPL="CPT: "_Y_U_VDATE
- QUIT
- End DoDot:2
- +22 ;V TRANS
- +23 SET X=0
- FOR
- SET X=$ORDER(^AUPNVTC("AD",VIEN,X))
- IF X'=+X!(BUDPL]"")
- QUIT
- Begin DoDot:2
- +24 IF '$DATA(^AUPNVTC(X,0))
- QUIT
- +25 SET Y=$$VAL^XBDIQ1(9000010.33,X,.07)
- +26 IF Y=""
- QUIT
- +27 IF $DATA(^BUDDTSSC("AC",Y,TIEN))
- SET BUDPL="CPT/TRAN: "_Y_U_VDATE
- QUIT
- End DoDot:2
- +28 ;SNOMED
- +29 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPOV("AD",VIEN,X))
- IF X'=+X!(BUDPL]"")
- QUIT
- Begin DoDot:2
- +30 IF '$DATA(^AUPNVPOV(X,0))
- QUIT
- +31 SET Y=$$VAL^XBDIQ1(9000010.07,X,1101)
- +32 IF Y]""
- IF $DATA(^BUDDTSSC("AS",Y,TIEN))
- SET BUDPL="SNOMED: "_Y_U_VDATE
- QUIT
- +33 SET Y=$$VALI^XBDIQ1(9000010.07,X,.01)
- IF $DATA(^BUDDTSSC("AD",Y,TIEN))
- SET BUDPL="DX "_$$VAL^XBDIQ1(9000010.07,X,.01)_U_VDATE
- QUIT
- End DoDot:2
- +34 ;PROVIDER CODES
- +35 SET X=0
- FOR
- SET X=$ORDER(^AUPNVPRV("AD",VIEN,X))
- IF X'=+X!(BUDPL]"")
- QUIT
- Begin DoDot:2
- +36 IF '$DATA(^AUPNVPRV(X,0))
- QUIT
- +37 SET Y=$$VALI^XBDIQ1(9000010.06,X,.01)
- +38 IF Y=""
- QUIT
- +39 SET Y=$$PROVCLSC^XBFUNC1(Y)
- +40 IF Y=""
- QUIT
- +41 IF $DATA(^BUDDTSSC(16,"B",Y))
- SET BUDPL="Prv: "_Y_U_VDATE
- QUIT
- End DoDot:2
- End DoDot:1
- +42 IF BUDPL]""
- QUIT BUDPL
- +43 ;CHECK PROBLEM LIST FOR SNOMED
- +44 SET X=$$PLCL^BUDDDU(P,"T6B ADULTWT PLAN CODES",EDATE,0,BDATE)
- IF X
- QUIT "PROBLEM SNOMED "_$PIECE(X,U,2)
- +45 QUIT ""
- PALL(P,BDATE,EDATE) ;
- +1 NEW D,BUDG,E,%
- +2 SET %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE
- SET E=$$START1^APCLDF(%,"BUDG(")
- +3 NEW X,Y,G,T,V,Z,A
- +4 SET T=$ORDER(^BUDDTSSC("B","T6B ADULTWT PALLIATIVE CARE",0))
- +5 SET G=""
- +6 SET X=0
- FOR
- SET X=$ORDER(BUDG(X))
- IF X'=+X!(G]"")
- QUIT
- Begin DoDot:1
- +7 SET Y=+$PIECE(BUDG(X),U,4)
- +8 SET Z=$PIECE($GET(^AUPNVPOV(Y,0)),U,1)
- +9 IF $DATA(^BUDDTSSC("AD",Z,T))
- SET G=1
- QUIT
- +10 SET Y=$$VAL^XBDIQ1(9000010.07,Y,1101)
- +11 IF Y=""
- QUIT
- +12 IF $DATA(^BUDDTSSC("AS",Y,T))
- SET G=1
- End DoDot:1
- +13 IF G
- QUIT G
- +14 ;"PROBLEM SNOMED "_$P(X,U,2)
- SET X=$$PLCL^BUDDDU(P,"T6B ADULTWT PALLIATIVE CARE",EDATE,0,BDATE)
- IF X
- QUIT 1
- +15 QUIT G
- G ;EP
- +1 GOTO G^BUDDRP6R