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

BUDHRP6Q.m

Go to the documentation of this file.
  1. BUDHRP6Q ;IHS/CMI/LAB - UDS T6B;
  1. ;;13.0;IHS/RPMS UNIFORM DATA SYSTEM;**1**;OCT 12, 2018;Build 2
  1. ;
  1. L ;EP - NEW HIV
  1. NEW BUDGOT,BUDDOA
  1. S BUDGOT=""
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. Q:BUDMEDV<1
  1. S BUDX28TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. K BUDG
  1. S Y="BUDG("
  1. S X=DFN_"^FIRST DX [BUD HIV DXS" S E=$$START1^APCLDF(X,Y)
  1. I '$D(BUDG(1)) Q
  1. S BUDHIVD=$P(BUDG(1),U,1) ;FIRST DX IN RPMS
  1. S BUDHIVDX=$P(BUDG(1),U,2)
  1. S D=($E(BUDBD,1,3)-1)_"1001"
  1. S E=$E(BUDED,1,3)_"0930"
  1. I BUDHIVD<D Q
  1. I BUDHIVD>E Q
  1. S BUDDOA=""
  1. ;now check problem list date of onset
  1. S T=$O(^BUDHTSSC("B","T6B HIV HIV CODES",0))
  1. S (X,G)=0,Z="" F S X=$O(^AUPNPROB("AC",DFN,X)) Q:X'=+X D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,13)=""
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .;)
  1. .Q:'$D(^BUDHTSSC("AD",Y,T))
  1. .S BUDDOA=$P(^AUPNPROB(X,0),U,13)
  1. .I $P(^AUPNPROB(X,0),U,13)<BUDHIVD S G=1
  1. .Q
  1. I G Q
  1. S BUDHIVF=$$FU(DFN,$$FMADD^XLFDT(BUDHIVD,1))
  1. I BUDHIVF S BUDSECTL("HIV")=$G(BUDSECTL("HIV"))+1
  1. S ;put the rest in demoninator
  1. S BUDSECTL("PTS")=$G(BUDSECTL("PTS"))+1 D
  1. .I $G(BUDHIV2L) D
  1. ..I BUDHIVF="" S ^XTMP("BUDHRP6B",BUDJ,BUDH,"HIV2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)="First HIV: "_BUDHIVDX_": "_$$DATE^BUDHUTL1(BUDHIVD)_"|Follow-up: "_$P(BUDHIVF,U,2)_" "_$$DATE^BUDHUTL1($P(BUDHIVF,U,1))_"|"_$$DATE^BUDHUTL1(BUDDOA)
  1. .I $G(BUDHIV1L) D
  1. ..I BUDHIVF]"" S ^XTMP("BUDHRP6B",BUDJ,BUDH,"HIV1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)="First HIV: "_BUDHIVDX_": "_$$DATE^BUDHUTL1(BUDHIVD)_"|Follow-up: "_$P(BUDHIVF,U,2)_" "_$$DATE^BUDHUTL1($P(BUDHIVF,U,1))_"|"_$$DATE^BUDHUTL1(BUDDOA)
  1. Q
  1. FU(P,BD) ;WAS THERE AN HIV VISIT WITHIN 90 DAYS OF BD
  1. NEW BUDVS
  1. S ED=$$FMADD^XLFDT(BD,90)
  1. D ALLV^APCLAPIU(P,BD,ED,"BUDVS")
  1. I '$D(BUDVS) Q ""
  1. NEW X,Y,V,G,D,C,T,L1,L2,L3
  1. S G=""
  1. S X=0 F S X=$O(BUDVS(X)) Q:X'=+X!(G) D
  1. .S V=$P(BUDVS(X),U,5)
  1. .S C=$$CLINIC^APCLV(V,"C") I C=59 S G=$P(BUDVS(X),U,1)_U_"Clinic: 59" Q
  1. .S D=$$PRIMPOV^APCLV(V,"I")
  1. .I $$ICD^ATXCHK(D,$O(^ATXAX("B","BUD HIV DXS",0)),9) S G=$P(BUDVS(X),U,1)_U_"DX: "_$P(^ICD9(D,0),U,1) Q
  1. .S C=0 F S C=$O(^AUPNVCPT("AD",V,C)) Q:C'=+C!(G) D
  1. ..S T=$$VALI^XBDIQ1(9000010.18,C,.01)
  1. ..I $$ICD^ATXCHK(T,$O(^ATXAX("B","BUD HIV FU CPTS",0)),1) S G=$P(BUDVS(X),U,1)_U_"CPT: "_$P(^ICPT(T,0),U,1) Q
  1. .S L1=$O(^ATXLAB("B","BGP HIV TEST TAX",0))
  1. .S L2=$O(^ATXLAB("B","BGP CD4 TAX",0))
  1. .S L3=$O(^ATXLAB("B","BGP HIV VIRAL LOAD TAX",0))
  1. .S C=0 F S C=$O(^AUPNVLAB("AD",V,C)) Q:C'=+C!(G) D
  1. ..S T=$$VALI^XBDIQ1(9000010.09,C,.01)
  1. ..I L1,$D(^ATXLAB(L1,21,"B",T)) S G=$P(BUDVS(X),U,1)_U_"LAB: "_$P(^LAB(60,T,0),U,1) Q
  1. ..I L2,$D(^ATXLAB(L2,21,"B",T)) S G=$P(BUDVS(X),U,1)_U_"LAB: "_$P(^LAB(60,T,0),U,1) Q
  1. ..I L3,$D(^ATXLAB(L3,21,"B",T)) S G=$P(BUDVS(X),U,1)_U_"LAB: "_$P(^LAB(60,T,0),U,1) Q
  1. Q G
  1. M ;EP
  1. NEW BUDGOT
  1. S BUDGOT=""
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. Q:BUDMEDV<1
  1. S BUDX12RB=($E(BUDBD,1,3)-13)_"1231"
  1. Q:BUDDOB>BUDX12RB
  1. S BUDP12BD=($E(BUDDOB,1,3)+12)_$E(BUDDOB,4,7)
  1. K BUDG
  1. ;get first depression screen during the report period.
  1. S BUDFDEP=$$FDEPSCR^BUDHRP6M(DFN,BUDBD,BUDED)
  1. ;DENOMINATOR EXCLUSION - ACTIVE DX FOR DEPRESSION OR BIPOLAR DX BEFORE SCREEN OR IF NO SCREEN USE END DATE OF REPORT PERIOD
  1. I $$HASDEPPL(DFN,"T6B DEP DEPRESSION CODES",$S(BUDFDEP]"":$$FMADD^XLFDT(BUDFDEP,-1),1:BUDED)) Q ;pcc or bh problem list
  1. I $$HASDEPPL(DFN,"T6B DEP BIPOLAR DXS",$S(BUDFDEP]"":$$FMADD^XLFDT(BUDFDEP,-1),1:BUDED)) Q ;pcc or bh problem list
  1. ;if screen, was there a diagnosis before the SCREEN AND DURING REPORT PERIOD? if so, quit
  1. I BUDFDEP Q:$$HASDEPOV(DFN,$$DOB^AUPNPAT(DFN),$$FMADD^XLFDT(BUDFDEP,-1),"T6B DEP DEPRESSION CODES")
  1. I 'BUDFDEP Q:$$HASDEPOV(DFN,$$DOB^AUPNPAT(DFN),BUDED,"T6B DEP DEPRESSION CODES") ;if no screen quit if any dx during report period
  1. I BUDFDEP Q:$$HASDEPOV(DFN,$$DOB^AUPNPAT(DFN),$$FMADD^XLFDT(BUDFDEP,-1),"T6B DEP BIPOLAR DXS")
  1. I 'BUDFDEP Q:$$HASDEPOV(DFN,$$DOB^AUPNPAT(DFN),BUDED,"T6B DEP BIPOLAR DXS") ;if no screen quit if any dx during report period
  1. ;
  1. I 'BUDFDEP Q:$$REFUSAL(DFN,BUDBD,BUDED) ;if no screen, quit if they refused
  1. ;CHECK exam, phq2, phq9, phqt for a positive and if no positive get the first negative
  1. S (BUDSCR,BUDPLAN)=""
  1. S BUDSCR=$$DEPRES(DFN,BUDBD,BUDED) ;MOST RECENT WITH A RESULT
  1. ;
  1. R ;
  1. S BUDSECTM("PTS")=$G(BUDSECTM("PTS"))+1 ;DENOMINATOR
  1. S BUDN=0
  1. I BUDSCR="" G M1
  1. I $P(BUDSCR,U,3)["NEG" S BUDSECTM("DEP")=$G(BUDSECTM("DEP"))+1 S BUDN=1 G M1
  1. ;CHECK FOR PLAN
  1. S BUDPLAN=$$FUPLAN(DFN,$P(BUDSCR,U,1),$P(BUDSCR,U,1)) ;PLAN BETWEEN DATE OF SCREEN AND END OF REPORT PERIOD
  1. I BUDPLAN]"" S BUDSECTM("DEP")=$G(BUDSECTM("DEP"))+1,BUDN=1
  1. M1 ;LISTS
  1. D
  1. .I $G(BUDDEP2L),'BUDN D
  1. ..S ^XTMP("BUDHRP6B",BUDJ,BUDH,"DEP2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDSCR_"|"_BUDPLAN
  1. .I $G(BUDDEP1L),BUDN D
  1. ..S ^XTMP("BUDHRP6B",BUDJ,BUDH,"DEP1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDSCR_"|"_BUDPLAN
  1. Q
  1. REFUSAL(P,BDATE,EDATE) ;
  1. ;CHECK REFUSAL FILE FIRST FOR FLU CVX OR FLU CPT AND MEDICAL REASON NOT DONE SNOMED OR PATIENT REASON NOT DONE SNOMED OR SYSTEM REASON NOT DONE SNOMED
  1. ;ITEM 1-2, 1-3, 1-4
  1. NEW F,G,I,C,ID,X,T1,T2
  1. S T1=$O(^BUDHTSSC("B","PXRM BGP IPC NOT DONE MED",0))
  1. S T2=$O(^BUDHTSSC("B","PXRM BGP IPC NOT DONE PAT",0))
  1. S F=0,G="" F F=9999999.07,9999999.15 D
  1. .S I="" F S I=$O(^AUPNPREF("AA",P,F,I)) Q:I=""!(G) D
  1. ..;check all file vs item combos
  1. ..I F=9999999.15,$$VAL^XBDIQ1(9999999.15,I,.02)'=36 Q
  1. ..I F=9999999.07 S C=$P($G(^AUTTMSR(I,0)),U,1) I C'="PHQ2",C'="PHQ9",C'="PHQT" Q
  1. ..S ID=0 F S ID=$O(^AUPNPREF("AA",P,F,I,ID)) Q:ID=""!(G) D
  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(T1,13,"B",R)) S G=1 Q
  1. ....I R]"",$D(BUDHTSSC(T2,13,"B",R)) S G=1 Q
  1. ....I $$VALI^XBDIQ1(9000022,X,.07)="R" S G=1 Q
  1. ....I $$VALI^XBDIQ1(9000022,X,.07)="N" S G=1 Q
  1. Q G
  1. FUPLAN(P,BDATE,EDATE) ;
  1. ;PROBLEM LIST SNOMED ENTERED ON BDATE
  1. NEW X,G,S,BUDG,Y,I,V,W,Z,TAX,BUDMEDS1,TAX1,M,R,B,O,T1,T2,T3,D1,D,C,C1,T4
  1. S T1=$O(^BUDHTSSC("B","PXRM BGP IPC DEP INTER",0))
  1. S T2=$O(^BUDHTSSC("B","T6B DEP DEPRESSION CODES",0))
  1. S T3=$O(^BUDHTSSC("B","T6B DEP BIPOLAR DXS",0))
  1. S T4=$O(^BUDHTSSC("B","T6B DEP DEPRESSION PLAN CODES",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G) D
  1. .Q:'$D(^AUPNPROB(X,0))
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,8)'=BDATE
  1. .S S=$$VAL^XBDIQ1(9000011,X,80001)
  1. .Q:S=""
  1. .I '$D(^BUDHTSSC(T1,13,"B",S)) Q
  1. .S G=1_U_"F/U PL "_S
  1. I G Q G
  1. ;now vpov using asnc
  1. S Y="BUDG("
  1. S X=P_"^ALL DX;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G) D
  1. .S I=+$P(BUDG(X),U,4)
  1. .S V=$P(BUDG(X),U,5)
  1. .S S=$$VAL^XBDIQ1(9000010.07,I,1101)
  1. .I S="" Q
  1. .I '$D(^BUDHTSSC(T1,13,"B",S)) Q
  1. .S G=1_U_"F/U POV "_S
  1. I G Q G
  1. ;NOW CPT
  1. S C=0 F S C=$O(^AUPNVCPT("AA",P,C)) Q:C'=+C!(G) D
  1. .S C1=$P($G(^ICPT(C,0)),U,1)
  1. .Q:C1=""
  1. .Q:'$D(^BUDHTSSC(T4,14,"B",C1))
  1. .S D=0 F S D=$O(^AUPNVCPT("AA",P,C,D)) Q:D'=+D!(G) D
  1. ..S D1=9999999-D
  1. ..Q:D1<BDATE
  1. ..Q:D1>EDATE
  1. ..S G=1_U_"F/U CPT "_C1
  1. I G Q G
  1. ;REFERRALS? ANY V REFERRAL ON DATE WITH A SNOMED AS .01 FIELD
  1. S Z=0 F S Z=$O(^AUPNVREF("AC",P,Z)) Q:Z'=+Z!(G) D
  1. .S V=$P($G(^AUPNVREF(Z,0)),U,3)
  1. .S D=$$VD^APCLV(V)
  1. .Q:D<BDATE
  1. .Q:D>EDATE
  1. .S S=$P($G(^AUPNVREF(Z,0)),U,1) Q:S=""
  1. .Q:'$D(^BUDHTSSC(T1,13,"B",S))
  1. .S G=1_U_"F/U Referral: "_S Q
  1. I G Q G
  1. S G=""
  1. ;V PATIENT EDUCATION
  1. K BUDG
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BUDG(X)) Q:X'=+X!(G) D
  1. .S I=+$P(BUDG(X),U,4)
  1. .S T=$$VALI^XBDIQ1(9000010.16,I,.01)
  1. .Q:'T
  1. .Q:'$D(^AUTTEDT(T,0))
  1. .S T=$P(^AUTTEDT(T,0),U,2)
  1. .I $P(T,"-",2)'="FU" Q ;must be followup
  1. .S S=$P(T,"-",1)
  1. .S C=$$ICDDX^ICDEX(S)
  1. .I $P(C,U,1)'="-1",$$ICD^ATXAPI($P(C,U,1),$O(^ATXAX("B","BGP IPC DEPRESSION DIAG DXS",0)),9) S G=1_U_"F/U Pt Ed "_T Q
  1. .I $P(C,U,1)'="-1",$$ICD^ATXAPI($P(C,U,1),$O(^ATXAX("B","BGP IPC BIPOLAR DISORDER DXS",0)),9) S G=1_U_"F/U Pt Ed "_T Q
  1. .;is it a snomed?
  1. .I $D(^BUDHTSSC(T1,13,"B",S)) S G=1_U_"F/U Pt Ed "_T Q
  1. .I $D(^BUDHTSSC(T2,13,"B",S)) S G=1_U_"F/U Pt Ed "_T Q
  1. .I $D(^BUDHTSSC(T3,13,"B",S)) S G=1_U_"F/U Pt Ed "_T Q
  1. I G Q G
  1. ;v med first
  1. D GETMEDS^BUDHUTL2(P,BDATE,EDATE,"BGP IPC DEPRESSION MEDS","",,,.BUDMEDS1,"BGP IPC DEPRESSION RXNORM")
  1. S X=0,T=0,W="" F S X=$O(BUDMEDS1(X)) Q:X'=+X!(G) D
  1. .S Y=$P(BUDMEDS1(X),U,4) ;vmed ien
  1. .Q:'$D(^AUPNVMED(Y,0))
  1. .Q:$$UP^XLFSTR($P($G(^AUPNVMED(Y,11)),U))["RETURNED TO STOCK"
  1. .S D=$P(^AUPNVMED(Y,0),U,1) ;drug ien
  1. .;DAYS SUPPLY MUST BE >0
  1. .S E=$P(^AUPNVMED(Y,0),U,8) ;date discontinued
  1. .S S=$P(^AUPNVMED(Y,0),U,7) ;DAYS SUPPLY
  1. .Q:'S
  1. .I E,E'>$P(BUDMEDS1(X),U,1) Q ;at least one day
  1. .S G=1_U_"F/U Med "_$$VAL^XBDIQ1(9000010.14,Y,.01)
  1. I G Q G
  1. ;how about orders
  1. ;go through all 52 for one ordered on BDATE
  1. S TAX=$O(^ATXAX("B","BGP IPC DEPRESSION MEDS",0))
  1. S TAX1=$O(^BGPSNOMR("B","BGP IPC DEPRESSION RXNORM",0))
  1. S Z=0,G="" F S Z=$O(^PS(55,P,"P",Z)) Q:Z'=+Z!(G) D
  1. .S R=$P(^PS(55,P,"P",Z,0),U,1)
  1. .Q:'$D(^PSRX(R,0)) ;bad xref
  1. .S D=$P(^PSRX(R,0),U,6)
  1. .Q:'D ;no drug??
  1. .S M=0
  1. .I $D(^ATXAX(TAX,21,"B",D)) S M=1
  1. .S B=$$VAL^XBDIQ1(9000010.14,R,9999999.27)
  1. .I B]"",$D(^BGPSNOMR(TAX1,11,"B",B)) S M=1
  1. .Q:'M
  1. .;ORDER
  1. .S O=$P($G(^PSRX(R,"OR1")),U,2) ;order number
  1. .Q:'O
  1. .Q:'$D(^OR(100,O))
  1. .S A=0 F S A=$O(^OR(100,O,8,A)) Q:A'=+A!(G) D
  1. ..S D=$P($G(^OR(100,O,8,A,0)),U,1)
  1. ..I $P(D,".")=BDATE S G=1_U_"F/U PSRX Order"
  1. I G Q G
  1. EHRO ;EPRES
  1. ;EHR OUTSIDE
  1. S C=$$PRES^BUDHRP6W(P,TAX,BDATE,EDATE)
  1. I C]"" Q 1_U_$P(C,U,1)_" on "_$$FMTE^XLFDT($P(C,U,3))
  1. Q ""
  1. NDC(A,B) ;
  1. ;a is drug ien
  1. ;b is taxonomy ien
  1. NEW BUDNDC
  1. S BUDNDC=$P($G(^PSDRUG(A,2)),U,4)
  1. I BUDNDC]"",B,$D(^ATXAX(B,21,"B",BUDNDC)) Q 1
  1. Q 0
  1. DEPRES(P,BD,ED) ;
  1. ;DID PT HAVE AN EXAM 36 DURING REPORT PERIOD
  1. NEW %,E,D,V,X,G,BUDD
  1. NEW BUDG,BUDR,BUDALL
  1. S BUDD=0
  1. K BUDG S %=P_"^ALL EXAM 36;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(")
  1. S E=0 F S E=$O(BUDG(E)) Q:E'=+E D
  1. .I $P(BUDG(E),U,2)="?" Q ;no result
  1. .S BUDR=$S($P(BUDG(E),U,2)="PO":"POS",$P(BUDG(E),U,2)="RF":"POS",1:"NEG")
  1. .S BUDALL(9999999-$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC EX 36"_U_BUDR_" "_$P(BUDG(E),U,2)
  1. ;phq2
  1. K BUDG S %=P_"^ALL MEAS PHQ2;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(")
  1. S E=0 F S E=$O(BUDG(E)) Q:E'=+E D
  1. .S BUDR=$$MRES($P(BUDG(E),U,3),$P(BUDG(E),U,2))
  1. .S BUDALL(9999999-$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQ2"_U_BUDR
  1. K BUDG S %=P_"^ALL MEAS PHQ9;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(")
  1. S E=0 F S E=$O(BUDG(E)) Q:E'=+E D
  1. .S BUDR=$$MRES($P(BUDG(E),U,3),$P(BUDG(E),U,2))
  1. .S BUDALL(9999999-$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQ9"_U_BUDR
  1. K BUDG S %=P_"^ALL MEAS PHQT;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(")
  1. S E=0 F S E=$O(BUDG(E)) Q:E'=+E D
  1. .S BUDR=$$MRES($P(BUDG(E),U,3),$P(BUDG(E),U,2))
  1. .S BUDALL(9999999-$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQT"_U_BUDR
  1. ;BH EXAM
  1. BHSCR ;
  1. S D=0,E=9999999-BD,D=9999999-ED-1_".9999"
  1. F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E) S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V D
  1. .I $P($G(^AMHREC(V,14)),U,5)="N" S I=9999999-$P(D,".") I '$D(BUDALL($P(D,"."))) S BUDR="NEG",BUDALL($P(D,"."))=I_U_"BH EX"_U_BUDR
  1. .I $P($G(^AMHREC(V,14)),U,5)="P"!($P($G(^AMHREC(V,14)),U,5)="REF") S I=9999999-$P(D,".") I '$D(BUDALL("POS",I)) S BUDR="POS",BUDALL($P(D,"."))=I_U_"BH EX"_U_BUDR
  1. .S X=0 F S X=$O(^AMHRMSR("AD",V,X)) Q:X'=+X S BUDP=$P($G(^AMHRMSR(X,0)),U) D
  1. ..Q:'BUDP
  1. ..S BUDP=$P($G(^AUTTMSR(BUDP,0)),U)
  1. ..I BUDP="PHQ2"!(BUDP="PHQ9")!(BUDP="PHQT") D
  1. ...S BUDR=$$MRES(BUDP,$P(^AMHRMSR(X,0),U,4))
  1. ...I '$D(BUDALL($P(D,"."))) D
  1. ....S BUDALL($P(D,"."))=(9999999-$P(D,"."))_U_"BH "_BUDP_U_BUDR
  1. ;I $D(BUDALL("POS")) S X=$O(BUDALL("POS",0)) Q BUDALL("POS",X)
  1. ;I $D(BUDALL("NEG")) S Y=$O(BUDALL("NEG",0)) Q BUDALL("NEG",Y)
  1. S X=$O(BUDALL(0)) I 'X Q ""
  1. Q BUDALL(X)
  1. ;Q ""
  1. PRIMPOV(V) ;
  1. NEW Y,Z,P
  1. S Y=0,Z=""
  1. I $P(^AUPNVSIT(V,0),U,7)="H" F S Y=$O(^AUPNVPOV("AD",V,Y)) Q:Y'=+Y I $P(^AUPNVPOV(Y,0),U,12)="P" S Z=Y
  1. I $P(^AUPNVSIT(V,0),U,7)'="H" S Y=$O(^AUPNVPOV("AD",V,0)) I Y S Z=Y
  1. Q Z
  1. HASDEPOV(P,BDATE,EDATE,A) ;EP -
  1. I '$G(P) Q ""
  1. NEW T,B,BUDVS,BUDX,BUDV,BUDDX2,BUDDX3,BUDDX4,BUDDX5
  1. S T=$O(^BUDHTSSC("B",A,0))
  1. S BUDVS="BUDVS",BUDDX4=""
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
  1. S BUDX=0 F S BUDX=$O(BUDVS(BUDX)) Q:BUDX'=+BUDX!(BUDDX4) D
  1. .S BUDV=$P(BUDVS(BUDX),U,5)
  1. .S BUDI=$$PRIMPOV(BUDV)
  1. .Q:BUDI=""
  1. .S BUDDX3=$P($G(^AUPNVPOV(BUDI,0)),U)
  1. .I $D(^BUDHTSSC("AD",BUDDX3,T)) S BUDDX4=1_"^"_$P($$ICDDX^ICDEX(BUDDX3),U,2)_"^"_$$VD^APCLV(BUDV)_"^"_BUDDX3 Q ;FOUND ONE
  1. .;NOW CHECK SNOMED
  1. .S A=$P($G(^AUPNVPOV(BUDI,11)),U,1)
  1. .Q:A=""
  1. .I $D(^BUDHTSSC("AS",A,T)) S BUDDX4=1_"^"_$P($$ICDDX^ICDEX(BUDDX3),U,2)_"^"_$$VD^APCLV(BUDV)_"^"_BUDDX3 Q ;FOUND ONE
  1. .Q
  1. I BUDDX4 Q BUDDX4
  1. S SD=$$FMADD^XLFDT(BDATE,-1),SD=SD_".9999"
  1. F S SD=$O(^AMHREC("AF",P,SD)) Q:SD'=+SD!($P(SD,".")>EDATE)!(BUDDX4) D
  1. .S BUDDX2=0 F S BUDDX2=$O(^AMHREC("AF",P,SD,BUDDX2)) Q:BUDDX2'=+BUDDX2!(BUDDX4) D
  1. ..S BUDDX5=0 S BUDDX5=$O(^AMHRPRO("AD",BUDDX2,BUDDX5)) Q:BUDDX5=""!(BUDDX4]"") D
  1. ...S BUDDX3=$P($G(^AMHRPRO(BUDDX5,0)),U,1)
  1. ...Q:BUDDX3=""
  1. ...S Z=$P($G(^AMHPROB(BUDDX3,0)),U,5)
  1. ...I Z="" Q
  1. ...S Y=+$$CODEN^ICDEX(Z,80)
  1. ...I $D(^BUDHTSSC("AD",Y,T)) S BUDDX4=1_"^"_$P($$ICDDX^ICDEX(Y),U,2)_"^"_SD_"^"_BUDDX3_"^"_BUDDX5 Q ;FOUND ONE
  1. ...S Z=$P($G(^AMHPROB(BUDDX3,0)),U,17)
  1. ...I Z="" Q
  1. ...S Y=+$$CODEN^ICDEX(Z,80)
  1. ...I $D(^BUDHTSSC("AD",Y,T)) S BUDDX4=1_"^"_$P($$ICDDX^ICDEX(Y),U,2)_"^"_SD_"^"_BUDDX3_"^"_BUDDX5 Q ;FOUND ONE
  1. Q BUDDX4
  1. HASDEPPL(P,A,BD) ;EP - ACTIVE DEPRESSION ON PL
  1. I $G(P)="" Q ""
  1. I $G(A)="" Q ""
  1. N T,N S T=$O(^BUDHTSSC("B",A,0))
  1. I 'T Q ""
  1. N X,Y,I,A,D,G S (X,Y)=0,I="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)) D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .S A=0,D="",G="" F S A=$O(^AUPNPROB(X,14,A)) Q:A'=+A!(G) D
  1. ..S D=$$VD^APCLV($P(^AUPNPROB(X,14,A,0),U,1))
  1. ..I D'>BD S G=1
  1. .I 'G S A=0,D="" F S A=$O(^AUPNPROB(X,15,A)) Q:A'=+A!(G) D
  1. ..S D=$$VD^APCLV($P(^AUPNPROB(X,15,A,0),U,1))
  1. ..I D'>BD S G=1
  1. .I 'G I $P(^AUPNPROB(X,0),U,8)'>BD S G=1
  1. .I 'G I $P(^AUPNPROB(X,0),U,3)'>BD S G=1
  1. .Q:'G
  1. .S Y=$P(^AUPNPROB(X,0),U) I $D(^BUDHTSSC("AD",Y,T)) S I=1_U_$$VAL^XBDIQ1(9000011,X,.01)_U_$P(^AUPNPROB(X,0),U,3) Q
  1. .S N=$$VAL^XBDIQ1(9000011,X,80001) I N]"",$D(^BUDHTSSC("AS",N,T)) S I=1_U_N_U_$P(^AUPNPROB(X,0),U,3)
  1. Q I
  1. ;
  1. PHQ(Y) ;
  1. I Y="PHQ2" Q 1
  1. I Y="PHQ9" Q 1
  1. I Y="PHQT" Q 1
  1. Q ""
  1. MRES(T,R) ;
  1. I T="PHQ9",R'<10 Q "POS "_R
  1. I T="PHQ2",R'<3 Q "POS "_R
  1. I T="PHQT",R'<10 Q "POS "_R
  1. Q "NEG "_R