AMHPHQO ; IHS/CMI/LAB - BROWSE VISITS ;
;;4.0;IHS BEHAVIORAL HEALTH;**6**;JUN 02, 2010;Build 10
;
;
START ;
W:$D(IOF) @IOF
D EN^XBVK("AMH")
W !,$$CTR("PHQ-2, PHQ-9 and PHQ-9T Depression Outcomes - Scores for One Patient",80),!!
W !,"This option is used to list PHQ2/PHQ9/PHQT Scores for one patient within",!,"a date range specified by the user.",!
D DBHUSR^AMHUTIL
PAT ;
S DFN=""
S DIC="^AUPNPAT(",DIC(0)="AEMQ" D ^DIC K DIC,DA,DR,DLAYGO,DIADD
I Y<0 W !,"No Patient Selected." Q
S DFN=+Y
S Y=DFN D ^AUPNPAT
I DFN,'$$ALLOWP^AMHUTIL(DUZ,DFN) D NALLOWP^AMHUTIL D PAUSE^AMHLEA G PAT
I $G(AUPNDOD)]"" W !!?10,"***** PATIENT'S DATE OF DEATH IS ",$$FMTE^XLFDT(AUPNDOD),!! H 2
WHICH ;
W !!,"Please note: Only visits with PHQ2, PHQ9 and PHQ9T scores recorded will",!,"display on this list.",!
S AMHQUIT=0
S AMHW=""
S (AMHBD,AMHED,AMHNUM)=""
K DIR S DIR(0)="S^N:Patient's Last N Visits;D:Visits in a Date Range;A:All of this Patient's Visits"
S DIR("A")="Browse which subset of visits for "_$P(^DPT(DFN,0),U),DIR("B")="N" KILL DA D ^DIR KILL DIR
I $D(DIRUT) Q
S AMHW=Y
D @AMHW Q:AMHQUIT
;
CP ;
S AMHCP=""
S DIR(0)="S^C:Visits to Selected Clinics;P:Visits to Selected Providers;A:Include All Visits regardless of Clinic/Provider",DIR("A")="Limit by Clinic/Provider"
S DIR("B")="A" KILL DA D ^DIR KILL DIR
I $D(DIRUT) G WHICH
S AMHCP=Y
I AMHCP="A" K AMHPROV,AMHCLN G BROWSE
I AMHCP="C" D CLIN I '$D(AMHCLN) G CP
I AMHCP="P" D PROV I '$D(AMHPROV) G CP
BROWSE ;
K ^TMP("AMHPHQO",$J)
D GATHER
D EN^VALM("AMH PHQ SCORES ONE PATIENT")
K ^TMP("AMHPHQO",$J)
D CLEAR^VALM1
D FULL^VALM1
END ;
K AMHP,AMHQUIT,AMHW,AMHV
Q
;
EP(DFN) ;EP to list for one patient
NEW AMHX,AMHY,AMHR0,AUPNPAT,AUPNDOB,AUPNDOD,AUPNDAYS,AUPNSEX,AMHV,AMHBD,AMHED
D FULL^VALM1
NEW D,R
K AMHV
I '$G(DFN) D PAT Q
W:$D(IOF) @IOF
W $$CTR("GAF Scores",80)
S Y=DFN D ^AUPNPAT
D WHICH
Q
L ;get patients last visit
;AMHV array
;I '$D(^AMHREC("AE",DFN)) W !!,"No visits on file for this patient.",! S AMHQUIT=1 Q
;S D=$O(^AMHREC("AE",DFN,"")),R=$O(^AMHREC("AE",DFN,D,""))
S (C,D)=0 F S D=$O(^AMHREC("AE",DFN,D)) Q:D'=+D!(C>0) S V=0 F S V=$O(^AMHREC("AE",DFN,D,V)) Q:V'=+V!(C>0) I $$ALLOWVI^AMHUTIL(DUZ,V) S C=C+1,AMHV(D,V)=""
;I R S AMHV(D,R)=""
Q
N ;patients last N visits
S AMHNUM=""
S DIR(0)="N^1:99:0",DIR("A")="How many visits should be displayed",DIR("B")="5" KILL DA D ^DIR KILL DIR
I $D(DIRUT) S AMHQUIT=1 Q
S AMHNUM=Y,AMHBD=0,AMHED=DT
Q
R ;on program
S N=""
S DIR(0)="9002011,.02",DIR("A")="Visits to Which Program",DIR("B")="M" KILL DA D ^DIR KILL DIR
I $D(DIRUT) S AMHQUIT=1 Q
S N=Y
S D=0 F S D=$O(^AMHREC("AE",DFN,D)) Q:D'=+D S V=0 F S V=$O(^AMHREC("AE",DFN,D,V)) Q:V'=+V I $P(^AMHREC(V,0),U,2)=N,$$ALLOWVI^AMHUTIL(DUZ,V) S AMHV(D,V)=""
Q
A ;all visits
S AMHNUM=9999999
S AMHBD=""
S AMHED=DT
Q
D ;date range
K AMHED,AMHBD
K DIR W ! S DIR(0)="DO^::EXP",DIR("A")="Enter Beginning Date of Visit"
D ^DIR S:Y<1 AMHQUIT=1 Q:Y<1 S AMHBD=Y
K DIR S DIR(0)="DO^::EXP",DIR("A")="Enter Ending Date of Visit"
D ^DIR S:Y<1 AMHQUIT=1 Q:Y<1 S AMHED=Y
;
I AMHED<AMHBD D G D
. W !!,$C(7),"Sorry, Ending Date MUST not be earlier than Beginning Date."
S AMHNUM=99999999
Q
P ;
S N=""
S DIR(0)="9002011.02,.01",DIR("A")="Visits to Which Provider",DIR("B")=$P(^VA(200,DUZ,0),U) KILL DA D ^DIR KILL DIR
I $D(DIRUT) S AMHQUIT=1 Q
S N=+Y
S D=0 F S D=$O(^AMHREC("AF",DFN,D)) Q:D'=+D S V=0 F S V=$O(^AMHREC("AF",DFN,D,V)) Q:V'=+V I $$ALLOWVI^AMHUTIL(DUZ,V),$P(^AMHREC(V,0),U,14)]"",$$PPINT^AMHUTIL(V)=N S AMHV(D,V)=""
Q
CLIN ;
S X="CLINIC",DIC="^AMQQ(5,",DIC(0)="FM",DIC("S")="I $P(^(0),U,14)" D ^DIC K DIC,DA I Y=-1 W "OOPS - QMAN NOT CURRENT - QUITTING" Q
D PEP^AMQQGTX0(+Y,"AMHCLN(")
I '$D(AMHCLN) Q
I $D(AMHCLN("*")) K AMHCLN
Q
PROV ;
S X="PRIMARY PROVIDER",DIC="^AMQQ(5,",DIC(0)="FM",DIC("S")="I $P(^(0),U,14)" D ^DIC K DIC,DA I Y=-1 W "OOPS - QMAN NOT CURRENT - QUITTING" Q
D PEP^AMQQGTX0(+Y,"AMHPROV(")
I '$D(AMHPROV) Q
I $D(AMHPROV("*")) K AMHPROV
Q
HASPHQ(V) ;EP - does this visit have a phq measurement
NEW X,Y,Z
S (X,Z)=0
F S X=$O(^AMHRMSR("AD",V,X)) Q:X'=+X S Y=$$VAL^XBDIQ1(9002011.12,X,.01) I Y="PHQ2"!(Y="PHQ9")!(Y="PHQT") S Z=1
Q Z
HASPHQV(V) ;EP
NEW X,Y,Z
S (X,Z)=0
F S X=$O(^AUPNVMSR("AD",V,X)) Q:X'=+X S Y=$$VAL^XBDIQ1(9000010.01,X,.01) I Y="PHQ2"!(Y="PHQ9")!(Y="PHQT") S Z=1
Q Z
PRINT ;EP - called from xbdbque
S AMHQUIT=0
;gather up all visit records in ^TMP("AMHPHQO",$J
D GATHER
D PRINT1
K ^TMP("AMHPHQO",$J)
Q
;
PRINT1 ;
W:$D(IOF) @IOF
NEW AMHX
S AMHX=0 F S AMHX=$O(^TMP("AMHPHQO",$J,AMHX)) Q:AMHX'=+AMHX!(AMHQUIT) D
.I $Y>(IOSL-5) D FF Q:AMHQUIT
.W !,^TMP("AMHPHQO",$J,AMHX,0)
.Q
Q
GATHER ;
K ^TMP("AMHPHQO",$J)
NEW AMHX,AMHI,AMHJ,AMHY,AMHZ,AMHC,AMHD
S AMHC=0
S X="Patient Name: "_$P(^DPT(DFN,0),U),$E(X,45)="DOB: "_$$FMTE^XLFDT($P(^DPT(DFN,0),U,3)) D S(X)
S X="HRN: "_$$HRN^AUPNPAT(DFN,DUZ(2)) D S(X)
S X=$TR($J("",80)," ","*") D S(X)
S X="Date",$E(X,11)="PHQ2",$E(X,16)="PHQ9",$E(X,21)="PHQT",$E(X,26)="PROVIDER",$E(X,41)="CLINIC",$E(X,55)="Diagnosis/POV" D S(X)
S X="",$E(X,1)=$$REPEAT^XLFSTR("-",78) D S(X)
S AMHV=0,AMHD=0,AMHRCNT=0
F S AMHV=$O(^AMHREC("C",DFN,AMHV)) Q:AMHV'=+AMHV D
.Q:'$$HASPHQ(AMHV)
.Q:AMHBD>$P($P(^AMHREC(AMHV,0),U),".")
.Q:AMHED<$P($P(^AMHREC(AMHV,0),U),".")
.I $D(AMHCLN) Q:$P(^AMHREC(AMHV,0),U,25)=""
.I $D(AMHCLN),'$D(AMHCLN($P(^AMHREC(AMHV,0),U,25))) Q
.I $D(AMHPROV) S G=0 D Q:'G
..S X=0 F S X=$O(^AMHRPROV("AD",AMHV,X)) Q:X'=+X D
...S Y=$P($G(^AMHRPROV(X,0)),U)
...Q:Y=""
...Q:'$D(AMHPROV(Y))
...S G=1,AMHRCNT=AMHRCNT+1
.S AMHV((9999999-$P($P(^AMHREC(AMHV,0),U),".")),"BH",AMHV)="",AMHRCNT=AMHRCNT+1
;
;NOW get pcc visits
S AMHV=0 F S AMHV=$O(^AUPNVSIT("AC",DFN,AMHV)) Q:AMHV'=+AMHV D
.Q:'$$HASPHQV(AMHV)
.Q:$D(^AMHREC("AVISIT",AMHV)) ;already in BH
.Q:AMHBD>$P($P(^AUPNVSIT(AMHV,0),U),".")
.Q:AMHED<$P($P(^AUPNVSIT(AMHV,0),U),".")
.I $D(AMHCLN) Q:$P(^AUPNVSIT(AMHV,0),U,8)=""
.I $D(AMHCLN),'$D(AMHCLN($P(^AUPNVSIT(AMHV,0),U,8))) Q
.I $D(AMHPROV) S G=0 D Q:'G
..S X=0 F S X=$O(^AUPNVPRV("AD",AMHV,X)) Q:X'=+X D
...S Y=$P($G(^AUPNVPRV(X,0)),U)
...Q:Y=""
...Q:'$D(AMHPROV(Y))
...S G=1
.S AMHV((9999999-$P($P(^AUPNVSIT(AMHV,0),U),".")),"PCC",AMHV)="",AMHRCNT=AMHRCNT+1
S AMHD=0,AMHCNT=0 F S AMHD=$O(AMHV(AMHD)) Q:AMHD=""!(AMHCNT>AMHNUM) D
.S AMHT="" F S AMHT=$O(AMHV(AMHD,AMHT)) Q:AMHT=""!(AMHCNT>AMHNUM) D
..S AMHV=0 F S AMHV=$O(AMHV(AMHD,AMHT,AMHV)) Q:AMHV'=+AMHV!(AMHCNT>AMHNUM) D
...S AMHCNT=AMHCNT+1
...Q:AMHCNT>AMHNUM
...I AMHT="BH" D
....S AMHR0=^AMHREC(AMHV,0)
....S AMHX=$$D^AMHRPEC($P(AMHR0,U))
....S (X,Z)=0 S (Z,N,J)=""
....F S X=$O(^AMHRMSR("AD",AMHV,X)) Q:X'=+X S Y=$$VAL^XBDIQ1(9002011.12,X,.01) D
.....I Y="PHQ2" S Z=Z_$P(^AMHRMSR(X,0),U,4)_" "
.....I Y="PHQ9" S N=N_$P(^AMHRMSR(X,0),U,4)_" "
.....I Y="PHQT" S J=J_$P(^AMHRMSR(X,0),U,4)_" "
....S $E(AMHX,11)=Z
....S $E(AMHX,16)=N
....S $E(AMHX,21)=J
....S $E(AMHX,26)=$E($$PPNAME^AMHUTIL(AMHV),1,14)
....S $E(AMHX,41)=$E($$VAL^XBDIQ1(9002011,AMHV,.25),1,13)
....S X=$O(^AMHRPRO("AD",AMHV,0))
....I X S $E(AMHX,55)=$$VAL^XBDIQ1(9002011.01,X,.01)_" - "_$E($$VAL^XBDIQ1(9002011.01,X,.04),1,25)
....D S(AMHX)
...I AMHT="PCC" D
....S AMHX=$$D^AMHRPEC($P(^AUPNVSIT(AMHV,0),U))
....S (X,Z)=0 S (Z,N,J)=""
....F S X=$O(^AUPNVMSR("AD",AMHV,X)) Q:X'=+X S Y=$$VAL^XBDIQ1(9000010.01,X,.01) D
.....I Y="PHQ2" S Z=Z_$P(^AUPNVMSR(X,0),U,4)_" "
.....I Y="PHQ9" S N=N_$P(^AUPNVMSR(X,0),U,4)_" "
.....I Y="PHQT" S J=J_$P(^AUPNVMSR(X,0),U,4)_" "
....S $E(AMHX,11)=Z
....S $E(AMHX,16)=N
....S $E(AMHX,21)=J
....S $E(AMHX,26)=$E($$PRIMPROV^APCLV(AMHV,"N"),1,14)
....S $E(AMHX,41)=$E($$VAL^XBDIQ1(9000010,AMHV,.08),1,13)
....S X=$O(^AUPNVPOV("AD",AMHV,0))
....I X S $E(AMHX,55)=$$VAL^XBDIQ1(9000010.07,X,.01)_" - "_$E($$VAL^XBDIQ1(9000010.07,X,.04),1,25)
....D S(AMHX)
I AMHCNT=0 S X="No Visits with PHQ2/PHQ9/PHQ9T measurements in the specified time frame." D S(X,1)
Q
CTR(X,Y) ;EP - Center X in a field Y wide.
Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
;----------
FF ;EP
I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S AMHQUIT=1 Q
I $E(IOST)'="C" Q:'$P(AMHR0,U,8) W !!,$TR($J(" ",79)," ","*"),!,$P(^DPT($P(AMHR0,U,8),0),U),?32,"HRN: " D
.S H=$P($G(^AUPNPAT($P(AMHR0,U,8),41,DUZ(2),0)),U,2)
.W H,?46,"DOB: ",$$FMTE^XLFDT($P(^DPT($P(AMHR0,U,8),0),U,3),"2D"),?59,"SSN: ",$$SSN^AMHUTIL($P(AMHR0,U,8)),!
W:$D(IOF) @IOF
Q
HDR ; -- header code
Q
;
S(Y,F,C,T) ;EP - set up array
I '$G(F) S F=0
I '$G(T) S T=0
;blank lines
F F=1:1:F S X="" D S1
S X=Y
I $G(C) S L=$L(Y),T=(80-L)/2 D D S1 Q
.F %=1:1:(T-1) S X=" "_X
F %=1:1:T S X=" "_Y
D S1
Q
S1 ;
S AMHC=AMHC+1
S ^TMP("AMHPHQO",$J,AMHC,0)=X
Q
INIT ; -- init variables and list array
S VALMCNT=$O(^TMP("AMHPHQO",$J,""),-1)
Q
;
HELP ; -- help code
S X="?" D DISP^XQORM1 W !!
Q
;
EXIT ; -- exit code
Q
;
EXPND ; -- expand code
Q
AMHPHQO ; IHS/CMI/LAB - BROWSE VISITS ;
+1 ;;4.0;IHS BEHAVIORAL HEALTH;**6**;JUN 02, 2010;Build 10
+2 ;
+3 ;
START ;
+1 IF $DATA(IOF)
WRITE @IOF
+2 DO EN^XBVK("AMH")
+3 WRITE !,$$CTR("PHQ-2, PHQ-9 and PHQ-9T Depression Outcomes - Scores for One Patient",80),!!
+4 WRITE !,"This option is used to list PHQ2/PHQ9/PHQT Scores for one patient within",!,"a date range specified by the user.",!
+5 DO DBHUSR^AMHUTIL
PAT ;
+1 SET DFN=""
+2 SET DIC="^AUPNPAT("
SET DIC(0)="AEMQ"
DO ^DIC
KILL DIC,DA,DR,DLAYGO,DIADD
+3 IF Y<0
WRITE !,"No Patient Selected."
QUIT
+4 SET DFN=+Y
+5 SET Y=DFN
DO ^AUPNPAT
+6 IF DFN
IF '$$ALLOWP^AMHUTIL(DUZ,DFN)
DO NALLOWP^AMHUTIL
DO PAUSE^AMHLEA
GOTO PAT
+7 IF $GET(AUPNDOD)]""
WRITE !!?10,"***** PATIENT'S DATE OF DEATH IS ",$$DT_source.html#FMTE">FMTE^XLFDT(AUPNDOD),!!
HANG 2
WHICH ;
+1 WRITE !!,"Please note: Only visits with PHQ2, PHQ9 and PHQ9T scores recorded will",!,"display on this list.",!
+2 SET AMHQUIT=0
+3 SET AMHW=""
+4 SET (AMHBD,AMHED,AMHNUM)=""
+5 KILL DIR
SET DIR(0)="S^N:Patient's Last N Visits;D:Visits in a Date Range;A:All of this Patient's Visits"
+6 SET DIR("A")="Browse which subset of visits for "_$PIECE(^DPT(DFN,0),U)
SET DIR("B")="N"
KILL DA
DO ^DIR
KILL DIR
+7 IF $DATA(DIRUT)
QUIT
+8 SET AMHW=Y
+9 DO @AMHW
IF AMHQUIT
QUIT
+10 ;
CP ;
+1 SET AMHCP=""
+2 SET DIR(0)="S^C:Visits to Selected Clinics;P:Visits to Selected Providers;A:Include All Visits regardless of Clinic/Provider"
SET DIR("A")="Limit by Clinic/Provider"
+3 SET DIR("B")="A"
KILL DA
DO ^DIR
KILL DIR
+4 IF $DATA(DIRUT)
GOTO WHICH
+5 SET AMHCP=Y
+6 IF AMHCP="A"
KILL AMHPROV,AMHCLN
GOTO BROWSE
+7 IF AMHCP="C"
DO CLIN
IF '$DATA(AMHCLN)
GOTO CP
+8 IF AMHCP="P"
DO PROV
IF '$DATA(AMHPROV)
GOTO CP
BROWSE ;
+1 KILL ^TMP("AMHPHQO",$JOB)
+2 DO GATHER
+3 DO EN^VALM("AMH PHQ SCORES ONE PATIENT")
+4 KILL ^TMP("AMHPHQO",$JOB)
+5 DO CLEAR^VALM1
+6 DO FULL^VALM1
END ;
+1 KILL AMHP,AMHQUIT,AMHW,AMHV
+2 QUIT
+3 ;
EP(DFN) ;EP to list for one patient
+1 NEW AMHX,AMHY,AMHR0,AUPNPAT,AUPNDOB,AUPNDOD,AUPNDAYS,AUPNSEX,AMHV,AMHBD,AMHED
+2 DO FULL^VALM1
+3 NEW D,R
+4 KILL AMHV
+5 IF '$GET(DFN)
DO PAT
QUIT
+6 IF $DATA(IOF)
WRITE @IOF
+7 WRITE $$CTR("GAF Scores",80)
+8 SET Y=DFN
DO ^AUPNPAT
+9 DO WHICH
+10 QUIT
L ;get patients last visit
+1 ;AMHV array
+2 ;I '$D(^AMHREC("AE",DFN)) W !!,"No visits on file for this patient.",! S AMHQUIT=1 Q
+3 ;S D=$O(^AMHREC("AE",DFN,"")),R=$O(^AMHREC("AE",DFN,D,""))
+4 SET (C,D)=0
FOR
SET D=$ORDER(^AMHREC("AE",DFN,D))
IF D'=+D!(C>0)
QUIT
SET V=0
FOR
SET V=$ORDER(^AMHREC("AE",DFN,D,V))
IF V'=+V!(C>0)
QUIT
IF $$ALLOWVI^AMHUTIL(DUZ,V)
SET C=C+1
SET AMHV(D,V)=""
+5 ;I R S AMHV(D,R)=""
+6 QUIT
N ;patients last N visits
+1 SET AMHNUM=""
+2 SET DIR(0)="N^1:99:0"
SET DIR("A")="How many visits should be displayed"
SET DIR("B")="5"
KILL DA
DO ^DIR
KILL DIR
+3 IF $DATA(DIRUT)
SET AMHQUIT=1
QUIT
+4 SET AMHNUM=Y
SET AMHBD=0
SET AMHED=DT
+5 QUIT
R ;on program
+1 SET N=""
+2 SET DIR(0)="9002011,.02"
SET DIR("A")="Visits to Which Program"
SET DIR("B")="M"
KILL DA
DO ^DIR
KILL DIR
+3 IF $DATA(DIRUT)
SET AMHQUIT=1
QUIT
+4 SET N=Y
+5 SET D=0
FOR
SET D=$ORDER(^AMHREC("AE",DFN,D))
IF D'=+D
QUIT
SET V=0
FOR
SET V=$ORDER(^AMHREC("AE",DFN,D,V))
IF V'=+V
QUIT
IF $PIECE(^AMHREC(V,0),U,2)=N
IF $$ALLOWVI^AMHUTIL(DUZ,V)
SET AMHV(D,V)=""
+6 QUIT
A ;all visits
+1 SET AMHNUM=9999999
+2 SET AMHBD=""
+3 SET AMHED=DT
+4 QUIT
D ;date range
+1 KILL AMHED,AMHBD
+2 KILL DIR
WRITE !
SET DIR(0)="DO^::EXP"
SET DIR("A")="Enter Beginning Date of Visit"
+3 DO ^DIR
IF Y<1
SET AMHQUIT=1
IF Y<1
QUIT
SET AMHBD=Y
+4 KILL DIR
SET DIR(0)="DO^::EXP"
SET DIR("A")="Enter Ending Date of Visit"
+5 DO ^DIR
IF Y<1
SET AMHQUIT=1
IF Y<1
QUIT
SET AMHED=Y
+6 ;
+7 IF AMHED<AMHBD
Begin DoDot:1
+8 WRITE !!,$CHAR(7),"Sorry, Ending Date MUST not be earlier than Beginning Date."
End DoDot:1
GOTO D
+9 SET AMHNUM=99999999
+10 QUIT
P ;
+1 SET N=""
+2 SET DIR(0)="9002011.02,.01"
SET DIR("A")="Visits to Which Provider"
SET DIR("B")=$PIECE(^VA(200,DUZ,0),U)
KILL DA
DO ^DIR
KILL DIR
+3 IF $DATA(DIRUT)
SET AMHQUIT=1
QUIT
+4 SET N=+Y
+5 SET D=0
FOR
SET D=$ORDER(^AMHREC("AF",DFN,D))
IF D'=+D
QUIT
SET V=0
FOR
SET V=$ORDER(^AMHREC("AF",DFN,D,V))
IF V'=+V
QUIT
IF $$ALLOWVI^AMHUTIL(DUZ,V)
IF $PIECE(^AMHREC(V,0),U,14)]""
IF $$PPINT^AMHUTIL(V)=N
SET AMHV(D,V)=""
+6 QUIT
CLIN ;
+1 SET X="CLINIC"
SET DIC="^AMQQ(5,"
SET DIC(0)="FM"
SET DIC("S")="I $P(^(0),U,14)"
DO ^DIC
KILL DIC,DA
IF Y=-1
WRITE "OOPS - QMAN NOT CURRENT - QUITTING"
QUIT
+2 DO PEP^AMQQGTX0(+Y,"AMHCLN(")
+3 IF '$DATA(AMHCLN)
QUIT
+4 IF $DATA(AMHCLN("*"))
KILL AMHCLN
+5 QUIT
PROV ;
+1 SET X="PRIMARY PROVIDER"
SET DIC="^AMQQ(5,"
SET DIC(0)="FM"
SET DIC("S")="I $P(^(0),U,14)"
DO ^DIC
KILL DIC,DA
IF Y=-1
WRITE "OOPS - QMAN NOT CURRENT - QUITTING"
QUIT
+2 DO PEP^AMQQGTX0(+Y,"AMHPROV(")
+3 IF '$DATA(AMHPROV)
QUIT
+4 IF $DATA(AMHPROV("*"))
KILL AMHPROV
+5 QUIT
HASPHQ(V) ;EP - does this visit have a phq measurement
+1 NEW X,Y,Z
+2 SET (X,Z)=0
+3 FOR
SET X=$ORDER(^AMHRMSR("AD",V,X))
IF X'=+X
QUIT
SET Y=$$VAL^XBDIQ1(9002011.12,X,.01)
IF Y="PHQ2"!(Y="PHQ9")!(Y="PHQT")
SET Z=1
+4 QUIT Z
HASPHQV(V) ;EP
+1 NEW X,Y,Z
+2 SET (X,Z)=0
+3 FOR
SET X=$ORDER(^AUPNVMSR("AD",V,X))
IF X'=+X
QUIT
SET Y=$$VAL^XBDIQ1(9000010.01,X,.01)
IF Y="PHQ2"!(Y="PHQ9")!(Y="PHQT")
SET Z=1
+4 QUIT Z
PRINT ;EP - called from xbdbque
+1 SET AMHQUIT=0
+2 ;gather up all visit records in ^TMP("AMHPHQO",$J
+3 DO GATHER
+4 DO PRINT1
+5 KILL ^TMP("AMHPHQO",$JOB)
+6 QUIT
+7 ;
PRINT1 ;
+1 IF $DATA(IOF)
WRITE @IOF
+2 NEW AMHX
+3 SET AMHX=0
FOR
SET AMHX=$ORDER(^TMP("AMHPHQO",$JOB,AMHX))
IF AMHX'=+AMHX!(AMHQUIT)
QUIT
Begin DoDot:1
+4 IF $Y>(IOSL-5)
DO FF
IF AMHQUIT
QUIT
+5 WRITE !,^TMP("AMHPHQO",$JOB,AMHX,0)
+6 QUIT
End DoDot:1
+7 QUIT
GATHER ;
+1 KILL ^TMP("AMHPHQO",$JOB)
+2 NEW AMHX,AMHI,AMHJ,AMHY,AMHZ,AMHC,AMHD
+3 SET AMHC=0
+4 SET X="Patient Name: "_$PIECE(^DPT(DFN,0),U)
SET $EXTRACT(X,45)="DOB: "_$$FMTE^XLFDT($PIECE(^DPT(DFN,0),U,3))
DO S(X)
+5 SET X="HRN: "_$$HRN^AUPNPAT(DFN,DUZ(2))
DO S(X)
+6 SET X=$TRANSLATE($JUSTIFY("",80)," ","*")
DO S(X)
+7 SET X="Date"
SET $EXTRACT(X,11)="PHQ2"
SET $EXTRACT(X,16)="PHQ9"
SET $EXTRACT(X,21)="PHQT"
SET $EXTRACT(X,26)="PROVIDER"
SET $EXTRACT(X,41)="CLINIC"
SET $EXTRACT(X,55)="Diagnosis/POV"
DO S(X)
+8 SET X=""
SET $EXTRACT(X,1)=$$REPEAT^XLFSTR("-",78)
DO S(X)
+9 SET AMHV=0
SET AMHD=0
SET AMHRCNT=0
+10 FOR
SET AMHV=$ORDER(^AMHREC("C",DFN,AMHV))
IF AMHV'=+AMHV
QUIT
Begin DoDot:1
+11 IF '$$HASPHQ(AMHV)
QUIT
+12 IF AMHBD>$PIECE($PIECE(^AMHREC(AMHV,0),U),".")
QUIT
+13 IF AMHED<$PIECE($PIECE(^AMHREC(AMHV,0),U),".")
QUIT
+14 IF $DATA(AMHCLN)
IF $PIECE(^AMHREC(AMHV,0),U,25)=""
QUIT
+15 IF $DATA(AMHCLN)
IF '$DATA(AMHCLN($PIECE(^AMHREC(AMHV,0),U,25)))
QUIT
+16 IF $DATA(AMHPROV)
SET G=0
Begin DoDot:2
+17 SET X=0
FOR
SET X=$ORDER(^AMHRPROV("AD",AMHV,X))
IF X'=+X
QUIT
Begin DoDot:3
+18 SET Y=$PIECE($GET(^AMHRPROV(X,0)),U)
+19 IF Y=""
QUIT
+20 IF '$DATA(AMHPROV(Y))
QUIT
+21 SET G=1
SET AMHRCNT=AMHRCNT+1
End DoDot:3
End DoDot:2
IF 'G
QUIT
+22 SET AMHV((9999999-$PIECE($PIECE(^AMHREC(AMHV,0),U),".")),"BH",AMHV)=""
SET AMHRCNT=AMHRCNT+1
End DoDot:1
+23 ;
+24 ;NOW get pcc visits
+25 SET AMHV=0
FOR
SET AMHV=$ORDER(^AUPNVSIT("AC",DFN,AMHV))
IF AMHV'=+AMHV
QUIT
Begin DoDot:1
+26 IF '$$HASPHQV(AMHV)
QUIT
+27 ;already in BH
IF $DATA(^AMHREC("AVISIT",AMHV))
QUIT
+28 IF AMHBD>$PIECE($PIECE(^AUPNVSIT(AMHV,0),U),".")
QUIT
+29 IF AMHED<$PIECE($PIECE(^AUPNVSIT(AMHV,0),U),".")
QUIT
+30 IF $DATA(AMHCLN)
IF $PIECE(^AUPNVSIT(AMHV,0),U,8)=""
QUIT
+31 IF $DATA(AMHCLN)
IF '$DATA(AMHCLN($PIECE(^AUPNVSIT(AMHV,0),U,8)))
QUIT
+32 IF $DATA(AMHPROV)
SET G=0
Begin DoDot:2
+33 SET X=0
FOR
SET X=$ORDER(^AUPNVPRV("AD",AMHV,X))
IF X'=+X
QUIT
Begin DoDot:3
+34 SET Y=$PIECE($GET(^AUPNVPRV(X,0)),U)
+35 IF Y=""
QUIT
+36 IF '$DATA(AMHPROV(Y))
QUIT
+37 SET G=1
End DoDot:3
End DoDot:2
IF 'G
QUIT
+38 SET AMHV((9999999-$PIECE($PIECE(^AUPNVSIT(AMHV,0),U),".")),"PCC",AMHV)=""
SET AMHRCNT=AMHRCNT+1
End DoDot:1
+39 SET AMHD=0
SET AMHCNT=0
FOR
SET AMHD=$ORDER(AMHV(AMHD))
IF AMHD=""!(AMHCNT>AMHNUM)
QUIT
Begin DoDot:1
+40 SET AMHT=""
FOR
SET AMHT=$ORDER(AMHV(AMHD,AMHT))
IF AMHT=""!(AMHCNT>AMHNUM)
QUIT
Begin DoDot:2
+41 SET AMHV=0
FOR
SET AMHV=$ORDER(AMHV(AMHD,AMHT,AMHV))
IF AMHV'=+AMHV!(AMHCNT>AMHNUM)
QUIT
Begin DoDot:3
+42 SET AMHCNT=AMHCNT+1
+43 IF AMHCNT>AMHNUM
QUIT
+44 IF AMHT="BH"
Begin DoDot:4
+45 SET AMHR0=^AMHREC(AMHV,0)
+46 SET AMHX=$$D^AMHRPEC($PIECE(AMHR0,U))
+47 SET (X,Z)=0
SET (Z,N,J)=""
+48 FOR
SET X=$ORDER(^AMHRMSR("AD",AMHV,X))
IF X'=+X
QUIT
SET Y=$$VAL^XBDIQ1(9002011.12,X,.01)
Begin DoDot:5
+49 IF Y="PHQ2"
SET Z=Z_$PIECE(^AMHRMSR(X,0),U,4)_" "
+50 IF Y="PHQ9"
SET N=N_$PIECE(^AMHRMSR(X,0),U,4)_" "
+51 IF Y="PHQT"
SET J=J_$PIECE(^AMHRMSR(X,0),U,4)_" "
End DoDot:5
+52 SET $EXTRACT(AMHX,11)=Z
+53 SET $EXTRACT(AMHX,16)=N
+54 SET $EXTRACT(AMHX,21)=J
+55 SET $EXTRACT(AMHX,26)=$EXTRACT($$PPNAME^AMHUTIL(AMHV),1,14)
+56 SET $EXTRACT(AMHX,41)=$EXTRACT($$VAL^XBDIQ1(9002011,AMHV,.25),1,13)
+57 SET X=$ORDER(^AMHRPRO("AD",AMHV,0))
+58 IF X
SET $EXTRACT(AMHX,55)=$$VAL^XBDIQ1(9002011.01,X,.01)_" - "_$EXTRACT($$VAL^XBDIQ1(9002011.01,X,.04),1,25)
+59 DO S(AMHX)
End DoDot:4
+60 IF AMHT="PCC"
Begin DoDot:4
+61 SET AMHX=$$D^AMHRPEC($PIECE(^AUPNVSIT(AMHV,0),U))
+62 SET (X,Z)=0
SET (Z,N,J)=""
+63 FOR
SET X=$ORDER(^AUPNVMSR("AD",AMHV,X))
IF X'=+X
QUIT
SET Y=$$VAL^XBDIQ1(9000010.01,X,.01)
Begin DoDot:5
+64 IF Y="PHQ2"
SET Z=Z_$PIECE(^AUPNVMSR(X,0),U,4)_" "
+65 IF Y="PHQ9"
SET N=N_$PIECE(^AUPNVMSR(X,0),U,4)_" "
+66 IF Y="PHQT"
SET J=J_$PIECE(^AUPNVMSR(X,0),U,4)_" "
End DoDot:5
+67 SET $EXTRACT(AMHX,11)=Z
+68 SET $EXTRACT(AMHX,16)=N
+69 SET $EXTRACT(AMHX,21)=J
+70 SET $EXTRACT(AMHX,26)=$EXTRACT($$PRIMPROV^APCLV(AMHV,"N"),1,14)
+71 SET $EXTRACT(AMHX,41)=$EXTRACT($$VAL^XBDIQ1(9000010,AMHV,.08),1,13)
+72 SET X=$ORDER(^AUPNVPOV("AD",AMHV,0))
+73 IF X
SET $EXTRACT(AMHX,55)=$$VAL^XBDIQ1(9000010.07,X,.01)_" - "_$EXTRACT($$VAL^XBDIQ1(9000010.07,X,.04),1,25)
+74 DO S(AMHX)
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+75 IF AMHCNT=0
SET X="No Visits with PHQ2/PHQ9/PHQ9T measurements in the specified time frame."
DO S(X,1)
+76 QUIT
CTR(X,Y) ;EP - Center X in a field Y wide.
+1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
+2 ;----------
FF ;EP
+1 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET AMHQUIT=1
QUIT
+2 IF $EXTRACT(IOST)'="C"
IF '$PIECE(AMHR0,U,8)
QUIT
WRITE !!,$TRANSLATE($JUSTIFY(" ",79)," ","*"),!,$PIECE(^DPT($PIECE(AMHR0,U,8),0),U),?32,"HRN: "
Begin DoDot:1
+3 SET H=$PIECE($GET(^AUPNPAT($PIECE(AMHR0,U,8),41,DUZ(2),0)),U,2)
+4 WRITE H,?46,"DOB: ",$$FMTE^XLFDT($PIECE(^DPT($PIECE(AMHR0,U,8),0),U,3),"2D"),?59,"SSN: ",$$SSN^AMHUTIL($PIECE(AMHR0,U,8)),!
End DoDot:1
+5 IF $DATA(IOF)
WRITE @IOF
+6 QUIT
HDR ; -- header code
+1 QUIT
+2 ;
S(Y,F,C,T) ;EP - set up array
+1 IF '$GET(F)
SET F=0
+2 IF '$GET(T)
SET T=0
+3 ;blank lines
+4 FOR F=1:1:F
SET X=""
DO S1
+5 SET X=Y
+6 IF $GET(C)
SET L=$LENGTH(Y)
SET T=(80-L)/2
Begin DoDot:1
+7 FOR %=1:1:(T-1)
SET X=" "_X
End DoDot:1
DO S1
QUIT
+8 FOR %=1:1:T
SET X=" "_Y
+9 DO S1
+10 QUIT
S1 ;
+1 SET AMHC=AMHC+1
+2 SET ^TMP("AMHPHQO",$JOB,AMHC,0)=X
+3 QUIT
INIT ; -- init variables and list array
+1 SET VALMCNT=$ORDER(^TMP("AMHPHQO",$JOB,""),-1)
+2 QUIT
+3 ;
HELP ; -- help code
+1 SET X="?"
DO DISP^XQORM1
WRITE !!
+2 QUIT
+3 ;
EXIT ; -- exit code
+1 QUIT
+2 ;
EXPND ; -- expand code
+1 QUIT