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

BUDDRP6Q.m

Go to the documentation of this file.
  1. BUDDRP6Q ; IHS/CMI/LAB - HIV/DEP ;
  1. ;;11.0;IHS/RPMS UNIFORM DATA SYSTEM;;JAN 18, 2017;Build 66
  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 ;NO HIV DXS
  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 X=$$GETV^BUDDRP6U(DFN,($E(BUDBD,1,3)-1)_0101,BUDED,BUDSITE)
  1. ;I X<1,BUDMEDV<1 Q
  1. S BUDDOA=""
  1. ;now check problem list date of onset, if date of onset is prior to the report period quit
  1. S T=$O(^BUDDTSSC("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)="" ;no date of onset so don't bother
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .;Q:'$$ICD^ATXCHK(Y,T,9)
  1. .Q:'$D(^BUDDTSSC("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("BUDDRP6B",BUDJ,BUDH,"HIV2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)="First HIV: "_BUDHIVDX_": "_$$DATE^BUDDUTL1(BUDHIVD)_"|Follow-up: "_$P(BUDHIVF,U,2)_" "_$$DATE^BUDDUTL1($P(BUDHIVF,U,1))_"|"_$$DATE^BUDDUTL1(BUDDOA)
  1. .I $G(BUDHIV1L) D
  1. ..I BUDHIVF]"" S ^XTMP("BUDDRP6B",BUDJ,BUDH,"HIV1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)="First HIV: "_BUDHIVDX_": "_$$DATE^BUDDUTL1(BUDHIVD)_"|Follow-up: "_$P(BUDHIVF,U,2)_" "_$$DATE^BUDDUTL1($P(BUDHIVF,U,1))_"|"_$$DATE^BUDDUTL1(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)-12)_"1231"
  1. Q:BUDDOB>BUDX12RB
  1. S BUDP12BD=($E(BUDDOB,1,3)+12)_$E(BUDDOB,4,7)
  1. K BUDG
  1. ;REFUSAL OF DEPRESSION SCREENING EXAM OR CPT OR MEASUREMENT
  1. I $$REFDS(DFN,BUDBD,BUDED) Q
  1. ;DENOMINATOR EXCLUSION, ANY ONE WITH ACTIVE PL ENTRY OF THE DX OR SNOMED
  1. ;GET DATE OF FIRST SCREEN IN REPORT PERIOD
  1. I $$HASDEPPL(DFN,"T6B DEP DEP/BIPOLAR CODES",$$VD^APCLV(BUDFRSTV)) Q ;pcc or bh problem list
  1. ;Q:$$HASDEPOV(DFN,$$DOB^AUPNPAT(DFN),$$FMADD^XLFDT($$VD^APCLV(BUDFRSTV),-1)) ;PCC DX DURING REPORT PERIOD
  1. S BUDFDEP=$$FDEPSCR^BUDDRP6M(DFN,BUDBD,BUDED)
  1. ;if screen, was there a diagnosis before the SCREEN AND DURING REPORT PERIOD? if so, quit
  1. I BUDFDEP Q:$$HASDEPOV(DFN,BUDBD,BUDFDEP)
  1. I 'BUDFDEP Q:$$HASDEPOV(DFN,BUDBD,BUDED) ;if no screen quit if any dx during report period
  1. S BUDSECTM("PTS")=$G(BUDSECTM("PTS"))+1 ;DENOMINATOR
  1. ;DO THEY HAVE A SCREEN?
  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)
  1. I BUDSCR]"" Q:$$HASDEPOV(DFN,BUDBD,$P(BUDSCR,U,1)) ;dx prior to screen and during report period
  1. I BUDSCR]"" G R
  1. ;now check for any without a result and assume negative (per Duane)
  1. ;S BUDSCR=$$DEPNORES(DFN,BUDBD,BUDED) ;NO CPTS PER MEGAN
  1. R ;
  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=$$PLAN(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("BUDDRP6B",BUDJ,BUDH,"DEP2",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDSCR_"|"_BUDPLAN
  1. .I $G(BUDDEP1L),BUDN D
  1. ..S ^XTMP("BUDDRP6B",BUDJ,BUDH,"DEP1",BUDAGE,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=BUDSCR_"|"_BUDPLAN
  1. Q
  1. REFDS(P,BDATE,EDATE) ;
  1. I $$REFRU^BUDDUTL1(P,9999999.15,$O(^AUTTEXAM("C",36,0)),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,81,$P($$CPT^ICPTCOD("3725F"),U,1),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,81,$P($$CPT^ICPTCOD("1220F"),U,1),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,81,$P($$CPT^ICPTCOD("G0444"),U,1),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,9999999.07,$O(^AUTTMSR("B","PHQ2",0)),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,9999999.07,$O(^AUTTMSR("B","PHQ9",0)),BDATE,EDATE) Q 1
  1. I $$REFRU^BUDDUTL1(P,9999999.07,$O(^AUTTMSR("B","PHQT",0)),BDATE,EDATE) Q 1
  1. Q ""
  1. PLAN(P,BDATE,EDATE) ;
  1. ;CHECK MEDS, CPTS, SNOMEDS
  1. NEW BUDVS,BUDDEPS,BUDV,BUDX,BUDA,BUDD,BUDP,BUDY,X,T,Y,A,B,J,D,R,K,BUDRX,BUDRXRF,BUDXRX,BUDNORM
  1. ;BGPDEPS=DATE SCREEN^SCREEN ITEM^SCREEN RESULT^FU PLAN ITEM
  1. S BUDVS="BUDVS"
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,.BUDVS)
  1. S BUDX=0,BUDD=0,BUDDEPS=""
  1. S T=$O(^BUDDTSSC("B","T6B DEP DEPRESSION PLAN CODES",0))
  1. S J=$O(^ATXAX("B","BGP HEDIS ANTIDEPRESSANT MEDS",0))
  1. S K=$O(^ATXAX("B","BGP HEDIS ANTIDEPRESSANT NDC",0))
  1. F S BUDX=$O(BUDVS(BUDX)) Q:BUDX'=+BUDX!(BUDDEPS]"") D
  1. .;DX/snomed
  1. .S BUDV=$P(BUDVS(BUDX),U,5)
  1. .S BUDY=0 F S BUDY=$O(^AUPNVPOV("AD",BUDV,BUDY)) Q:BUDY'=+BUDY!(BUDDEPS]"") D
  1. ..Q:'$D(^AUPNVPOV(BUDY,0))
  1. ..;NOW CHECK SNOMED
  1. ..S A=$P($G(^AUPNVPOV(BUDY,11)),U,1)
  1. ..Q:A=""
  1. ..I $D(^BUDDTSSC("AS",A,T)) S BUDDEPS=$$VD^APCLV(BUDV)_U_"SNOMED: "_A Q
  1. .;CPT
  1. .S BUDY=0 F S BUDY=$O(^AUPNVCPT("AD",BUDV,BUDY)) Q:BUDY'=+BUDY!(BUDDEPS]"") D
  1. ..Q:'$D(^AUPNVCPT(BUDY,0))
  1. ..S A=$$VAL^XBDIQ1(9000010.18,BUDY,.01)
  1. ..Q:'$D(^BUDDTSSC("AC",A,T))
  1. ..S BUDDEPS=$$VD^APCLV(BUDV)_U_"CPT: "_A
  1. .;NOW CHECK MEDS
  1. .S BUDY=0 F S BUDY=$O(^AUPNVMED("AD",BUDV,BUDY)) Q:BUDY'=+BUDY!(BUDDEPS]"") D
  1. ..Q:'$D(^AUPNVMED(BUDY,0))
  1. ..S D=$P(^AUPNVMED(BUDY,0),U,1)
  1. ..Q:D=""
  1. ..Q:'$D(^PSDRUG(D,0))
  1. ..I $D(^ATXAX(J,21,"B",D)) S BUDDEPS=$$VD^APCLV(BUDV)_U_"RX: "_$$VAL^XBDIQ1(9000010.14,BUDY,.01) Q
  1. ..;check NDC
  1. ..I $$NDC(D,K) S BUDDEPS=$$VD^APCLV(BUDV)_U_"RX: "_$$VAL^XBDIQ1(9000010.14,BUDY,.01) Q
  1. ..;check rxnorm?
  1. ..;GET PRESCRIPTION
  1. ..S BUDRXRF=""
  1. ..S BUDRX=$O(^PSRX("APCC",BUDY,0)) I 'BUDRX Q ;NO 52 ENTRY
  1. ..I BUDRX S BUDRXRF=$O(^PSRX("APCC",BUDY,BUDRX,"")) S:BUDRXRF="" BUDRXRF=0
  1. ..S BUDNORM=""
  1. ..I BUDRXRF S BUDNORM=$P($G(^PSRX(BUDRX,1,BUDRXRF,9999999)),U,19)
  1. ..I BUDNORM="" S BUDNORM=$P($G(^PSRX(BUDRX,999999921)),U,7)
  1. ..I BUDNORM]"",$D(^BUDDTSSC(T,19,"B",BUDNORM)) S BUDDEPS=$$VD^APCLV(BUDV)_U_"RX NORM: "_$$VAL^XBDIQ1(9000010.14,BUDY,.01) Q
  1. I BUDDEPS]"" Q BUDDEPS
  1. ;
  1. S D=0,E=9999999-BDATE,D=9999999-EDATE-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(BUDDEPS]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V D
  1. .S X=0 F S X=$O(^AMHRPROC("AD",V,X)) Q:X'=+X S BUDP=$$VAL^XBDIQ1(9002011.04,X,.01) D
  1. ..Q:BUDP=""
  1. ..Q:'$D(^BUDDTSSC("AC",BUDP,T))
  1. ..S BUDDEPS=9999999-$P(D,".")_U_"BH CPT: "_$$GET1^DIQ(9002011.04,X,.01)
  1. Q BUDDEPS
  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. .S BUDR=$S($P(BUDG(E),U,2)="PO":"POS",$P(BUDG(E),U,2)="RF":"POS",1:"NEG")
  1. .S BUDALL(BUDR,$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC EX 36"_U_BUDR_" "_$P(BUDG(E),U,2) ;W !,P," ",BUDALL(BUDR,$P(BUDG(E),U,1))
  1. ;phq2
  1. K BUDG S %=P_"^ALL MEAS PHQ2;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(") ;ZW BUDG Q ""
  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($P(BUDR," "),$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQ2"_U_BUDR ;W !,P," ",BUDALL(BUDR,$P(BUDG(E),U,1))
  1. K BUDG S %=P_"^ALL MEAS PHQ9;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(") ;ZW BUDG Q ""
  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($P(BUDR," ",1),$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQ9"_U_BUDR ;W !,P," ",BUDALL(BUDR,$P(BUDG(E),U,1))
  1. K BUDG S %=P_"^ALL MEAS PHQT;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(") ;ZW BUDG Q ""
  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($P(BUDR," ",1),$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"PCC PHQT"_U_BUDR ;W !,P," ",BUDALL(BUDR,$P(BUDG(E),U,1))
  1. ;SNOMED
  1. ;ALL POVS
  1. K BUDG S %=P_"^ALL DX;DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BUDG(")
  1. S E=0 F S E=$O(BUDG(E)) Q:E'=+E D
  1. .S BUDR=+$P(BUDG(E),U,4)
  1. .I $P($G(^AUPNVPOV(BUDR,11)),U,1)=428181000124104 D
  1. ..S BUDALL("POS",$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"SNOMED "_"428181000124104"_U_"POS"
  1. .I $P($G(^AUPNVPOV(BUDR,11)),U,1)=428171000124102 D
  1. ..S BUDALL("NEG",$P(BUDG(E),U,1))=$P(BUDG(E),U,1)_U_"SNOMED "_"428171000124102"_U_"NEG"
  1. ;NOW GO TO BH
  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("NEG",I)) S BUDR="NEG",BUDALL(BUDR,I)=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(BUDR,I)=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(BUDR," "),(9999999-$P(D,".")))) D
  1. ....S BUDALL($P(BUDR," "),(9999999-$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. 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) ;EP - do they have one dx in 6 months prior to beginning of report period
  1. I '$G(P) Q ""
  1. NEW T,B,BUDVS,BUDX,BUDV,BUDDX2,BUDDX3,BUDDX4,BUDDX5
  1. S T=$O(^BUDDTSSC("B","T6B DEP DEP/BIPOLAR CODES",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(^BUDDTSSC("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(^BUDDTSSC("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) ;ICD9 CODE
  1. ...I Z="" Q
  1. ...S Y=+$$CODEN^ICDEX(Z,80)
  1. ...I $D(^BUDDTSSC("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) ;ICD9 CODE
  1. ...I Z="" Q
  1. ...S Y=+$$CODEN^ICDEX(Z,80)
  1. ...I $D(^BUDDTSSC("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(^BUDDTSSC("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 ;GOOD DATE
  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(^BUDDTSSC("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(^BUDDTSSC("AS",N,T)) S I=1_U_N_U_$P(^AUPNPROB(X,0),U,3)
  1. Q I
  1. ;
  1. DEPNORES(P,BDATE,EDATE) ;EP
  1. ;CHECK FOR V79.0, CPTS
  1. NEW BUDVS,BUDDEPS,BUDV,BUDX,BUDA,BUDD,BUDP,BUDY,X,T,Y,S,A
  1. ;BGPDEPS=DATE SCREEN^SCREEN ITEM^SCREEN RESULT^FU PLAN ITEM
  1. S BUDVS="BUDVS"
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,.BUDVS)
  1. S BUDX=0,BUDD=0
  1. F S BUDX=$O(BUDVS(BUDX)) Q:BUDX'=+BUDX D
  1. .S BUDV=$P(BUDVS(BUDX),U,5)
  1. .;CPT
  1. .S BUDY=0 F S BUDY=$O(^AUPNVCPT("AD",BUDV,BUDY)) Q:BUDY'=+BUDY D
  1. ..Q:'$D(^AUPNVCPT(BUDY,0))
  1. ..Q:'$$ICD^ATXCHK($P(^AUPNVCPT(BUDY,0),U),$O(^ATXAX("B","BUD DEPRESSION SCREEN CPTS",0)),1)
  1. ..S BUDDEPS($$VD^APCLV(V))=$$VD^APCLV(BUDV)_U_"CPT: "_$$GET1^DIQ(9000010.18,BUDY,.01)_U_"NEG"
  1. .;====================================
  1. BHNORES ;
  1. S D=0,E=9999999-BDATE,D=9999999-EDATE-1_".99" 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. .S X=0 F S X=$O(^AMHRPROC("AD",V,X)) Q:X'=+X S BUDP=$P($G(^AMHRPROC(X,0)),U) D
  1. ..Q:'BUDP
  1. ..Q:'$$ICD^ATXCHK(BUDP,$O(^ATXAX("B","BUD DEPRESSION SCREEN CPTS",0)),1)
  1. ..S BUDDEPS((9999999-$P(D,".")))=9999999-$P(D,".")_U_"BH CPT: "_$$GET1^DIQ(9002011.04,X,.01)_U_"NEG"
  1. S Y=$O(BUDDEPS(0)) I Y Q BUDDEPS(Y)
  1. Q ""
  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