PSODIR1 ;IHS/DSD/JCM - ASKS DATA FOR RX ORDER ENTRY CONT. ;06-Dec-2012 18:58;PLS
;;7.0;OUTPATIENT PHARMACY;**23,46,78,102,121,131,146,166,1005,1008,1011,184,222,268,206,266,1015**;DEC 1997;Build 62
;External reference ^PS(55-DBIA 2228, ^PSDRUG(-DBIA 221, XLFSTR-DBIA 10104
;External reference ^%DTC-DBIA 10000, ^DIC-DBIA 10006, ^DIR-DBIA 10026
;
; Modified - IHS/CIA/PLS - 12/05/03 - Line DAYSEN+1, REFILL+9, REFILL+20 and DIR+4.
; IHS/MSC/PLS - 12/10/08 - Line REFILL+8,REFILL+15
; REFOR+6
; 03/23/09 - Line REFOR+5
; 05/13/11 - Line REFILL+29
; 12/06/12 - Line DAYSEN+14
PTSTAT(PSODIR) ;
PTSTATEN K DIC,DR,DIE S PSODIR("FIELD")=0
I $G(PSOTPBFG),$G(PSOFROM)="NEW" K PSORX("PATIENT STATUS"),PSODIR("PATIENT STATUS") N PSOFNDRX,PSOFNDFL,PSOFNDPS D
.S PSOFNDFL=0 F PSOFNDPS=0:0 S PSOFNDPS=$O(^PS(53,PSOFNDPS)) Q:'PSOFNDPS!(PSOFNDFL) D
..S PSOFNDRX=$P($G(^PS(53,PSOFNDPS,0)),"^") S PSOFNDRX=$$UP^XLFSTR(PSOFNDRX) I PSOFNDRX="NON-VA" S PSOFNDFL=1 S (PSORX("PATIENT STATUS"),DIC("B"))=$P($G(^PS(53,PSOFNDPS,0)),"^")
I $G(PSOTPBFG),$G(PSOFROM)="NEW",$G(PSORX("PATIENT STATUS"))="" W !,"Could not find a 'NON-VA' Patient Status in the RX PATIENT STATUS file (#53)!" D PSTPB D S PSODIR("DFLG")=1 G PTSTATX
.K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
I $G(PSOTPBFG),$G(PSOFROM)="NEW" G TPBB
N PSOX
S PSOX=$G(^PS(55,PSODFN,"PS")) I PSOX]"" S PSORX("PATIENT STATUS")=$P($G(^PS(53,PSOX,0)),"^"),DIC("B")=PSORX("PATIENT STATUS")
S:$G(PSODIR("PATIENT STATUS"))]"" DIC("B")=PSODIR("PATIENT STATUS")
TPBB ;
D ELIG^VADPT W !,"Eligibility: "_$P(VAEL(1),"^",2)_$S(+VAEL(3):" SC%: "_$P(VAEL(3),"^",2),1:"")
S N=0 F S N=$O(VAEL(1,N)) Q:'N W !,?10,$P(VAEL(1,N),"^",2)
S DIC("A")="RX PATIENT STATUS: "
S DIC(0)="QEAMZ",DIC=53 D ^DIC K DIC
I $G(PSOTPBFG),$G(PSOFROM)="NEW" N PSOPSDIR,PSOFNDZZ,PSOPSUPA S (PSOPSDIR,PSOPSUPA)=0 D I PSOPSDIR S:PSOPSUPA PSODIR("DFLG")=1 G:PSOPSUPA PTSTATX W ! D PSTPB G PTSTATEN
.I +Y'>0!($D(DTOUT))!($D(DUOUT)) S (PSOPSDIR,PSOPSUPA)=1 Q
.S (PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"))=+Y,PSODIR("PTST NODE")=Y(0)
.S PSOFNDZZ=$P($G(^PS(53,+Y,0)),"^") S PSOFNDZZ=$$UP^XLFSTR(PSOFNDZZ) I PSOFNDZZ'="NON-VA" S PSOPSDIR=1 K PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"),PSODIR("PTST NODE")
I $G(PSOTPBFG),$G(PSOFROM)="NEW" G TPBSC
I X[U,$L(X)>1 D:'$G(PSOEDIT) JUMP G PTSTATX
I $D(DUOUT)!$D(DTOUT) S PSODIR("DFLG")=1 G PTSTATX
I Y=-1 W $C(7)," Required" G PTSTATEN
N PSOFNDX,PSOFNDXY,PSOFNDXX,PSOFNDYY
S PSOFNDXY=$G(Y),PSOFNDYY=$G(Y(0))
I '$G(PSOTPBFG),$G(PSOFROM)="NEW" S PSOFNDX=$P($G(^PS(53,+Y,0)),"^") S PSOFNDXX=$$UP^XLFSTR(PSOFNDX) I PSOFNDXX="NON-VA" K PSOFNDX,PSOFNDXY,PSOFNDYY,PSOFNDXX,Y W !!,"Cannot select 'NON-VA' Rx Patient Status!",! G PTSTATEN
S Y=$G(PSOFNDXY),Y(0)=$G(PSOFNDYY)
K PSOFNDXY,PSOFNDYY,PSOFNDX,PSOFNDXX
S (PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"))=+Y
S PSODIR("PTST NODE")=Y(0)
TPBSC ;
I $G(PSOFDR),$P($G(OR0),"^",17)="C" G PTSTATX
L +^PS(55,PSODFN):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I '$T G PTSTATX
S DIE="55",DR="3////"_+Y,DA=PSODFN D ^DIE K DIE,DA,D0
L -^PS(55,PSODFN)
PTSTATX K DTOUT,DUOUT,X,Y,DA
Q
SIG(PSODIR) ;
I $G(PSOFDR),$G(PSODIR("SIG"))']"" D SIGOK G:$G(SIGOK)!($G(PSODIR("DFLG"))) SIGX
K DIR,DIC
S DIR(0)="52,10"
S:$G(PSODRUG("SIG"))]"" DIR("B")=PSODRUG("SIG")
S:$G(PSODIR("SIG"))]"" DIR("B")=PSODIR("SIG")
D DIR G:PSODIR("DFLG")!PSODIR("FIELD") SIGX
S PSODIR("SIG")=Y,SIGOK=0 K SIG
SIGX K X,Y
Q
QTY(PSODIR) ;
QTYA K DIR,DIC
I $G(CLOZPAT)=1 S DIR("A",1)="Patient Eligible for 14 day supply or 7 day supply with 1 refill"
I $G(CLOZPAT)=2 S DIR("A",1)="Patient Eligible 28 day supply or 14 day supply with 1 refill or 7 day supply with 3 refill"
S DIR(0)="52,7" S:$G(PSODRUG("IEN")) DIR("A")="QTY ( "_$G(PSODRUG("UNIT"))_" ) "_$S($P($G(^PSDRUG(+PSODRUG("IEN"),5)),"^")]"":$P(^PSDRUG(+PSODRUG("IEN"),5),"^"),1:"")
K QTYHLD I $G(PSODIR("QTY"))]"" S QTYHLD=PSODIR("QTY") K PSODIR("QTY")
D:'$G(PSOQTY) QTY^PSOSIG(.PSODIR)
I '$G(SPEED),$G(QTYHLD),'$G(PSODIR("QTY")) S PSODIR("QTY")=QTYHLD
K QTYHLD K:'$G(PSODIR("QTY")) PSODIR("QTY")
I $G(SPEED),$G(PSODIR("QTY"))']"" S PSODIR("QTY")=$P(^PSRX(PSORENW("OIRXN"),0),"^",7)
S:$G(PSODIR("QTY"))]"" DIR("B")=PSODIR("QTY")
D DIR G:PSODIR("DFLG")!PSODIR("FIELD") QTYX
I $G(Y),$G(PSODRUG("MAXDOSE"))]"",$G(PSODIR("DAYS SUPPLY")),(Y/+PSODIR("DAYS SUPPLY")>PSODRUG("MAXDOSE")) D G:$G(PSODIR("DFLG")) QTYX G QTYA
.W !,$C(7)," Greater than Maximum dose of "_PSODRUG("MAXDOSE")_" per day" D DAYSEN
S PSODIR("QTY")=Y
QTYX K X,Y
Q
COPIES(PSODIR) ;
K DIR,DIC
S DIR(0)="52,10.6"
S DIR("B")=$S($G(PSODIR("COPIES"))]"":PSODIR("COPIES"),1:1)
D DIR G:PSODIR("DFLG")!PSODIR("FIELD") COPIESX
S PSODIR("COPIES")=Y
COPIESX K X,Y
Q
DAYS(PSODIR) ;
DAYSEN K DIR,DIC N PSORFLS
;PSO*7*266
I $D(PSODRUG("IEN")) D
.S PSORFLS=$S($G(PSODIR("# OF REFILLS")):PSODIR("# OF REFILLS"),1:$P($G(PSODIR("RX0")),"^",9))
.I '$D(PSODRUG("DEA")) S PSODRUG("DEA")=$$GET1^DIQ(50,PSODRUG("IEN"),3,"")
; IHS/CIA/PLS - 12/05/03 - Changed 90 to 365
;S DIR(0)="N^1:"_$S($G(CLOZPAT)=2:28,$G(CLOZPAT)=1:14,$G(CLOZPAT)=0:7,1:90)
S DIR(0)="N^1:"_$S($G(CLOZPAT)=2:28,$G(CLOZPAT)=1:14,$G(CLOZPAT)=0:7,1:365)
S DIR("B")=$S($D(CLOZPAT)&('$G(PSODIR("DAYS SUPPLY"))):7,$G(PSODIR("DAYS SUPPLY"))]"":PSODIR("DAYS SUPPLY"),$P($G(PSODIR("PTST NODE")),"^",3):$P(PSODIR("PTST NODE"),"^",3),1:30)
S DIR("A")="DAYS SUPPLY",DIR("?")="Enter a whole number between 1 and "_$S($G(CLOZPAT)=2:28,$G(CLOZPAT)=1:14,$G(CLOZPAT)=0:7,1:90)
D DIR G:PSODIR("DFLG")!PSODIR("FIELD") DAYSX
I $G(Y),$G(PSODRUG("MAXDOSE"))]"",$G(PSODIR("QTY"))]"",(+PSODIR("QTY")/Y>PSODRUG("MAXDOSE")) W !,$C(7)," Greater than Maximum dose of "_PSODRUG("MAXDOSE")_" per day" G DAYSEN
S PSODIR("DAYS SUPPLY")=Y
;PSO*7*266
;IHS/MSC/PLS - 12/06/2012 - Removed check
;I $D(PSODRUG("IEN")),$G(Y),($G(Y)>$S(PSORFLS<4:90,PSORFLS<6:89,PSORFLS<12:60,1:0)) D
;.W !,$C(7),"Invalid number of REFILLS for amount of DAYS SUPPLY.",!,"REFILL EDIT FORCED." D REFILL(.PSODIR)
;.S PSODIR("FLD",9)=PSODIR("# OF REFILLS")
D:$G(PSOFROM)="NEW"
.K QTYHLD S:$G(PSODIR("QTY")) QTYHLD=PSODIR("QTY") D QTY^PSOSIG(.PSODIR)
.I $G(QTYHLD),'$G(PSODIR("QTY")) S PSODIR("QTY")=QTYHLD
.K QTYHLD K:'$G(PSODIR("QTY")) PSODIR("QTY")
S:$G(CLOZPAT)=0 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
D:$G(CLOZPAT)=2
.S:PSODIR("DAYS SUPPLY")=28 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
.S:PSODIR("DAYS SUPPLY")=14 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=1
.S:PSODIR("DAYS SUPPLY")=7 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=3
D:$G(CLOZPAT)=1
.S:PSODIR("DAYS SUPPLY")=14 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
.S:PSODIR("DAYS SUPPLY")=7 (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=1
K QTYHLD S:$G(PSODIR("QTY")) QTYHLD=PSODIR("QTY") D QTY^PSOSIG(.PSODIR)
I $G(QTYHLD),'$G(PSODIR("QTY")) S PSODIR("QTY")=QTYHLD
K QTYHLD K:'$G(PSODIR("QTY")) PSODIR("QTY")
DAYSX K X,Y
Q
REFILL(PSODIR) ;
;PSO*7*266
I $G(PSODIR("PTST NODE"))="" D
.N X,Y
.S X=$G(PSODIR("PATIENT STATUS")) S:'X X=$P(RX0,"^",3)
.S DIC=53,DIC(0)="QXZ" D ^DIC K DIC
.S:+Y PSODIR("PTST NODE")=Y(0)
.S:'$G(PSODIR("PATIENT STATUS")) PSODIR("PATIENT STATUS")=+Y
S $P(PSODIR("PTST NODE"),"^",4)=+$P($G(PSODIR("PTST NODE")),"^",4)
I $G(OR0) G REFOR
S PSODIR("CS")=0 K DIR,DIC,PSOX
F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)="" I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S $P(PSODIR("CS"),"^")=1 S:$E(+PSODRUG("DEA"),DEA)=2 $P(PSODIR("CS"),"^",2)=1
I PSODIR("CS") D
.S PSOX=5,PSOX1=$S($P($G(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSODIR("PTST NODE")),"^",4)),PSOX=$S(PSOX1=5:PSOX,1:PSOX1)
.S PSOX=$S('PSOX:0,PSODIR("DAYS SUPPLY")=90:1,1:PSOX),PSDY=PSODIR("DAYS SUPPLY"),PSDY1=$S(PSDY<60:5,PSDY'<60&(PSDY'>89):2,PSDY=90:1,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
E D
.;IHS/MSC/PLS - 12/10/08 - Changed maximum refills allowed from 11 to 15
.;S PSOX=11,PSOX1=$S($P($G(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSODIR("PTST NODE")),"^",4)),PSOX=$S(PSOX1=11:PSOX,1:PSOX1)
.S PSOX=15,PSOX1=$S($P($G(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSODIR("PTST NODE")),"^",4)),PSOX=$S(PSOX1=15:PSOX,1:PSOX1)
.; IHS/CIA/PLS - 12/05/03 - Changed days supply value
.; Checks for days supply if not less than 90 (was = 90) and
.; will still allow 3 refills. VA had max of 90, IHS edited the days
.; supply to allow max of 365.
.;S PSDY=PSODIR("DAYS SUPPLY"),PSDY1=$S(PSDY<60:11,PSDY'<60&(PSDY'>89):5,PSDY=90:3,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
.;IHS/MSC/PLS - 12/10/08
.;S PSDY=+$G(PSODIR("DAYS SUPPLY")),PSDY1=$S(PSDY<60:11,PSDY<90:5,PSDY=90:3,PSDY<168:2,PSDY<365:1,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
.S PSDY=+$G(PSODIR("DAYS SUPPLY")),PSDY1=$S(PSDY<60:15,PSDY<90:5,PSDY=90:3,PSDY<168:2,PSDY<365:1,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
I '$D(CLOZPAT) I PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2) D G REFILLX
.I PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2)!'$O(^PSRX(+$G(PSODIR("IRXN")),1,0))!('$G(PSOLOKED)) D Q
..S VALMSG="No refills allowed on "_$S(PSODRUG("DEA")["F":"this drug.",1:"Narcotics.") W !,VALMSG,!
..S:$D(PSODIR("FIELD")) PSODIR("FIELD")=0 S PSODIR("# OF REFILLS")=0
..Q
.;reset refills to the # given
.D RFRSET^PSODIR2
.Q
I $P($G(PSODIR("CS")),"^",2)=1 W !,"No refills allowed on Schedule 2 drugs...",! S:$D(PSODIR("FIELD")) PSODIR("FIELD")=0 S PSODIR("# OF REFILLS")=0 G REFILLX
I $D(CLOZPAT) S PSOX=$S($G(CLOZPAT)=2&(PSODIR("DAYS SUPPLY")=14):1,$G(CLOZPAT)=2&(PSODIR("DAYS SUPPLY")=7):3,$G(CLOZPAT)=1&(PSODIR("DAYS SUPPLY")=7):1,1:0)
;PSO*7*266 make sure PSOX is greater than RFTT
S DIR(0)="N^"_$S($G(RFTT):RFTT,1:0)_":"_$S(+$G(RFTT)>PSOX:RFTT,1:PSOX),DIR("A")="# OF REFILLS"
S DIR("B")=$S($G(COPY):PSODIR("# OF REFILLS"),$G(PSODIR("N# REF"))]"":PSODIR("N# REF"),$G(PSODIR("# OF REFILLS"))]"":PSODIR("# OF REFILLS"),$G(PSOX1)]""&(PSOX>PSOX1):PSOX1,1:PSOX)
; IHS/CIA/PLS - 12/05/03 - Set default to zero.
S DIR("B")=0
S DIR("?")="Enter a whole number. The maximum is set by the DAYS SUPPLY field."
D DIR G:PSODIR("DFLG")!PSODIR("FIELD") REFILLX
S (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=Y
REFILLX S:$G(PSODIR("# OF REFILLS"))']"" PSODIR("# OF REFILLS")=$S($G(PSODIR("N# REF"))]"":PSODIR("N# REF"),$G(PSOX1)]""&($G(PSOX)>PSOX1):PSOX1,1:PSOX)
K X,Y,PSOX,PSOX1,PSDY,PSDY1,DEA,PSOCS
Q
;OERR CALL
REFOR ;
D REFOR^PSODIR3
G REFILLX
Q
DIR ;
S (PSODIR("FIELD"),PSODIR("DFLG"))=0
G:$G(DIR(0))']"" DIRX
D ^DIR K DIR,DIE,DIC,DA
DIRS ; EP - IHS/CIA/PLS - 12/23/03 - New entry point DIRS added.
I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)),$L($G(X))'>1!(Y="") S PSODIR("DFLG")=1 G DIRX
I $D(DIRUT)!($D(DIROUT)),$G(SPEED) S PSODIR("DFLG")=1 G DIRX
I X[U,$L(X)>1 D JUMP
DIRX K DIRUT,DTOUT,DUOUT,DIROUT
Q
JUMP ;
I $G(PSOEDIT)!($G(OR0)) S PSODIR("DFLG")=1 Q
S X=$P(X,"^",2),DIC="^DD(52,",DIC(0)="QM" D ^DIC K DIC
I Y=-1 S PSODIR("FIELD")=PSODIR("FLD") G JUMPX
I $G(PSONEW1)=0 D JUMP^PSONEW1 G JUMPX
I $G(PSOREF1)=0 D JUMP^PSOREF1 G JUMPX
I $G(PSONEW3)=0 D JUMP^PSONEW3 G JUMPX
I $G(PSORENW3)=0 D JUMP^PSORENW3 G JUMPX
JUMPX S X="^"_X
Q
SIGOK ;review and decide on oerr sig
I '$O(SIG(0)) S SIGOK=0 Q
K SIGOK W !,"SIG: "
F SIG=0:0 S SIG=$O(SIG(SIG)) W SIG(SIG)_" ",!?5 Q:'$O(SIG(SIG))
K DIR,DIRUT,DUOUT,DTOUT S DIR("B")="YES",DIR(0)="Y",DIR("A")="Is this SIG correct" D ^DIR K DIR I $D(DIRUT) S PSODIR("DFLG")=1 K DIRUT,DUOUT,DTOUT Q
S SIGOK=Y I Y K PSODIR("SIG")
Q
PSTPB ;
W !,"New orders entered through this option must have a Patient Status of 'NON-VA'!",!
Q
PSODIR1 ;IHS/DSD/JCM - ASKS DATA FOR RX ORDER ENTRY CONT. ;06-Dec-2012 18:58;PLS
+1 ;;7.0;OUTPATIENT PHARMACY;**23,46,78,102,121,131,146,166,1005,1008,1011,184,222,268,206,266,1015**;DEC 1997;Build 62
+2 ;External reference ^PS(55-DBIA 2228, ^PSDRUG(-DBIA 221, XLFSTR-DBIA 10104
+3 ;External reference ^%DTC-DBIA 10000, ^DIC-DBIA 10006, ^DIR-DBIA 10026
+4 ;
+5 ; Modified - IHS/CIA/PLS - 12/05/03 - Line DAYSEN+1, REFILL+9, REFILL+20 and DIR+4.
+6 ; IHS/MSC/PLS - 12/10/08 - Line REFILL+8,REFILL+15
+7 ; REFOR+6
+8 ; 03/23/09 - Line REFOR+5
+9 ; 05/13/11 - Line REFILL+29
+10 ; 12/06/12 - Line DAYSEN+14
PTSTAT(PSODIR) ;
PTSTATEN KILL DIC,DR,DIE
SET PSODIR("FIELD")=0
+1 IF $GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
KILL PSORX("PATIENT STATUS"),PSODIR("PATIENT STATUS")
NEW PSOFNDRX,PSOFNDFL,PSOFNDPS
Begin DoDot:1
+2 SET PSOFNDFL=0
FOR PSOFNDPS=0:0
SET PSOFNDPS=$ORDER(^PS(53,PSOFNDPS))
IF 'PSOFNDPS!(PSOFNDFL)
QUIT
Begin DoDot:2
+3 SET PSOFNDRX=$PIECE($GET(^PS(53,PSOFNDPS,0)),"^")
SET PSOFNDRX=$$UP^XLFSTR(PSOFNDRX)
IF PSOFNDRX="NON-VA"
SET PSOFNDFL=1
SET (PSORX("PATIENT STATUS"),DIC("B"))=$PIECE($GET(^PS(53,PSOFNDPS,0)),"^")
End DoDot:2
End DoDot:1
+4 IF $GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
IF $GET(PSORX("PATIENT STATUS"))=""
WRITE !,"Could not find a 'NON-VA' Patient Status in the RX PATIENT STATUS file (#53)!"
DO PSTPB
Begin DoDot:1
+5 KILL DIR
SET DIR(0)="E"
SET DIR("A")="Press Return to continue"
DO ^DIR
KILL DIR
End DoDot:1
SET PSODIR("DFLG")=1
GOTO PTSTATX
+6 IF $GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
GOTO TPBB
+7 NEW PSOX
+8 SET PSOX=$GET(^PS(55,PSODFN,"PS"))
IF PSOX]""
SET PSORX("PATIENT STATUS")=$PIECE($GET(^PS(53,PSOX,0)),"^")
SET DIC("B")=PSORX("PATIENT STATUS")
+9 IF $GET(PSODIR("PATIENT STATUS"))]""
SET DIC("B")=PSODIR("PATIENT STATUS")
TPBB ;
+1 DO ELIG^VADPT
WRITE !,"Eligibility: "_$PIECE(VAEL(1),"^",2)_$SELECT(+VAEL(3):" SC%: "_$PIECE(VAEL(3),"^",2),1:"")
+2 SET N=0
FOR
SET N=$ORDER(VAEL(1,N))
IF 'N
QUIT
WRITE !,?10,$PIECE(VAEL(1,N),"^",2)
+3 SET DIC("A")="RX PATIENT STATUS: "
+4 SET DIC(0)="QEAMZ"
SET DIC=53
DO ^DIC
KILL DIC
+5 IF $GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
NEW PSOPSDIR,PSOFNDZZ,PSOPSUPA
SET (PSOPSDIR,PSOPSUPA)=0
Begin DoDot:1
+6 IF +Y'>0!($DATA(DTOUT))!($DATA(DUOUT))
SET (PSOPSDIR,PSOPSUPA)=1
QUIT
+7 SET (PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"))=+Y
SET PSODIR("PTST NODE")=Y(0)
+8 SET PSOFNDZZ=$PIECE($GET(^PS(53,+Y,0)),"^")
SET PSOFNDZZ=$$UP^XLFSTR(PSOFNDZZ)
IF PSOFNDZZ'="NON-VA"
SET PSOPSDIR=1
KILL PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"),PSODIR("PTST NODE")
End DoDot:1
IF PSOPSDIR
IF PSOPSUPA
SET PSODIR("DFLG")=1
IF PSOPSUPA
GOTO PTSTATX
WRITE !
DO PSTPB
GOTO PTSTATEN
+9 IF $GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
GOTO TPBSC
+10 IF X[U
IF $LENGTH(X)>1
IF '$GET(PSOEDIT)
DO JUMP
GOTO PTSTATX
+11 IF $DATA(DUOUT)!$DATA(DTOUT)
SET PSODIR("DFLG")=1
GOTO PTSTATX
+12 IF Y=-1
WRITE $CHAR(7)," Required"
GOTO PTSTATEN
+13 NEW PSOFNDX,PSOFNDXY,PSOFNDXX,PSOFNDYY
+14 SET PSOFNDXY=$GET(Y)
SET PSOFNDYY=$GET(Y(0))
+15 IF '$GET(PSOTPBFG)
IF $GET(PSOFROM)="NEW"
SET PSOFNDX=$PIECE($GET(^PS(53,+Y,0)),"^")
SET PSOFNDXX=$$UP^XLFSTR(PSOFNDX)
IF PSOFNDXX="NON-VA"
KILL PSOFNDX,PSOFNDXY,PSOFNDYY,PSOFNDXX,Y
WRITE !!,"Cannot select 'NON-VA' Rx Patient Status!",!
GOTO PTSTATEN
+16 SET Y=$GET(PSOFNDXY)
SET Y(0)=$GET(PSOFNDYY)
+17 KILL PSOFNDXY,PSOFNDYY,PSOFNDX,PSOFNDXX
+18 SET (PSODIR("PATIENT STATUS"),PSORX("PATIENT STATUS"))=+Y
+19 SET PSODIR("PTST NODE")=Y(0)
TPBSC ;
+1 IF $GET(PSOFDR)
IF $PIECE($GET(OR0),"^",17)="C"
GOTO PTSTATX
+2 LOCK +^PS(55,PSODFN):$SELECT(+$GET(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
IF '$TEST
GOTO PTSTATX
+3 SET DIE="55"
SET DR="3////"_+Y
SET DA=PSODFN
DO ^DIE
KILL DIE,DA,D0
+4 LOCK -^PS(55,PSODFN)
PTSTATX KILL DTOUT,DUOUT,X,Y,DA
+1 QUIT
SIG(PSODIR) ;
+1 IF $GET(PSOFDR)
IF $GET(PSODIR("SIG"))']""
DO SIGOK
IF $GET(SIGOK)!($GET(PSODIR("DFLG")))
GOTO SIGX
+2 KILL DIR,DIC
+3 SET DIR(0)="52,10"
+4 IF $GET(PSODRUG("SIG"))]""
SET DIR("B")=PSODRUG("SIG")
+5 IF $GET(PSODIR("SIG"))]""
SET DIR("B")=PSODIR("SIG")
+6 DO DIR
IF PSODIR("DFLG")!PSODIR("FIELD")
GOTO SIGX
+7 SET PSODIR("SIG")=Y
SET SIGOK=0
KILL SIG
SIGX KILL X,Y
+1 QUIT
QTY(PSODIR) ;
QTYA KILL DIR,DIC
+1 IF $GET(CLOZPAT)=1
SET DIR("A",1)="Patient Eligible for 14 day supply or 7 day supply with 1 refill"
+2 IF $GET(CLOZPAT)=2
SET DIR("A",1)="Patient Eligible 28 day supply or 14 day supply with 1 refill or 7 day supply with 3 refill"
+3 SET DIR(0)="52,7"
IF $GET(PSODRUG("IEN"))
SET DIR("A")="QTY ( "_$GET(PSODRUG("UNIT"))_" ) "_$SELECT($PIECE($GET(^PSDRUG(+PSODRUG("IEN"),5)),"^")]"":$PIECE(^PSDRUG(+PSODRUG("IEN"),5),"^"),1:"")
+4 KILL QTYHLD
IF $GET(PSODIR("QTY"))]""
SET QTYHLD=PSODIR("QTY")
KILL PSODIR("QTY")
+5 IF '$GET(PSOQTY)
DO QTY^PSOSIG(.PSODIR)
+6 IF '$GET(SPEED)
IF $GET(QTYHLD)
IF '$GET(PSODIR("QTY"))
SET PSODIR("QTY")=QTYHLD
+7 KILL QTYHLD
IF '$GET(PSODIR("QTY"))
KILL PSODIR("QTY")
+8 IF $GET(SPEED)
IF $GET(PSODIR("QTY"))']""
SET PSODIR("QTY")=$PIECE(^PSRX(PSORENW("OIRXN"),0),"^",7)
+9 IF $GET(PSODIR("QTY"))]""
SET DIR("B")=PSODIR("QTY")
+10 DO DIR
IF PSODIR("DFLG")!PSODIR("FIELD")
GOTO QTYX
+11 IF $GET(Y)
IF $GET(PSODRUG("MAXDOSE"))]""
IF $GET(PSODIR("DAYS SUPPLY"))
IF (Y/+PSODIR("DAYS SUPPLY")>PSODRUG("MAXDOSE"))
Begin DoDot:1
+12 WRITE !,$CHAR(7)," Greater than Maximum dose of "_PSODRUG("MAXDOSE")_" per day"
DO DAYSEN
End DoDot:1
IF $GET(PSODIR("DFLG"))
GOTO QTYX
GOTO QTYA
+13 SET PSODIR("QTY")=Y
QTYX KILL X,Y
+1 QUIT
COPIES(PSODIR) ;
+1 KILL DIR,DIC
+2 SET DIR(0)="52,10.6"
+3 SET DIR("B")=$SELECT($GET(PSODIR("COPIES"))]"":PSODIR("COPIES"),1:1)
+4 DO DIR
IF PSODIR("DFLG")!PSODIR("FIELD")
GOTO COPIESX
+5 SET PSODIR("COPIES")=Y
COPIESX KILL X,Y
+1 QUIT
DAYS(PSODIR) ;
DAYSEN KILL DIR,DIC
NEW PSORFLS
+1 ;PSO*7*266
+2 IF $DATA(PSODRUG("IEN"))
Begin DoDot:1
+3 SET PSORFLS=$SELECT($GET(PSODIR("# OF REFILLS")):PSODIR("# OF REFILLS"),1:$PIECE($GET(PSODIR("RX0")),"^",9))
+4 IF '$DATA(PSODRUG("DEA"))
SET PSODRUG("DEA")=$$GET1^DIQ(50,PSODRUG("IEN"),3,"")
End DoDot:1
+5 ; IHS/CIA/PLS - 12/05/03 - Changed 90 to 365
+6 ;S DIR(0)="N^1:"_$S($G(CLOZPAT)=2:28,$G(CLOZPAT)=1:14,$G(CLOZPAT)=0:7,1:90)
+7 SET DIR(0)="N^1:"_$SELECT($GET(CLOZPAT)=2:28,$GET(CLOZPAT)=1:14,$GET(CLOZPAT)=0:7,1:365)
+8 SET DIR("B")=$SELECT($DATA(CLOZPAT)&('$GET(PSODIR("DAYS SUPPLY"))):7,$GET(PSODIR("DAYS SUPPLY"))]"":PSODIR("DAYS SUPPLY"),$PIECE($GET(PSODIR("PTST NODE")),"^",3):$PIECE(PSODIR("PTST NODE"),"^",3),1:30)
+9 SET DIR("A")="DAYS SUPPLY"
SET DIR("?")="Enter a whole number between 1 and "_$SELECT($GET(CLOZPAT)=2:28,$GET(CLOZPAT)=1:14,$GET(CLOZPAT)=0:7,1:90)
+10 DO DIR
IF PSODIR("DFLG")!PSODIR("FIELD")
GOTO DAYSX
+11 IF $GET(Y)
IF $GET(PSODRUG("MAXDOSE"))]""
IF $GET(PSODIR("QTY"))]""
IF (+PSODIR("QTY")/Y>PSODRUG("MAXDOSE"))
WRITE !,$CHAR(7)," Greater than Maximum dose of "_PSODRUG("MAXDOSE")_" per day"
GOTO DAYSEN
+12 SET PSODIR("DAYS SUPPLY")=Y
+13 ;PSO*7*266
+14 ;IHS/MSC/PLS - 12/06/2012 - Removed check
+15 ;I $D(PSODRUG("IEN")),$G(Y),($G(Y)>$S(PSORFLS<4:90,PSORFLS<6:89,PSORFLS<12:60,1:0)) D
+16 ;.W !,$C(7),"Invalid number of REFILLS for amount of DAYS SUPPLY.",!,"REFILL EDIT FORCED." D REFILL(.PSODIR)
+17 ;.S PSODIR("FLD",9)=PSODIR("# OF REFILLS")
+18 IF $GET(PSOFROM)="NEW"
Begin DoDot:1
+19 KILL QTYHLD
IF $GET(PSODIR("QTY"))
SET QTYHLD=PSODIR("QTY")
DO QTY^PSOSIG(.PSODIR)
+20 IF $GET(QTYHLD)
IF '$GET(PSODIR("QTY"))
SET PSODIR("QTY")=QTYHLD
+21 KILL QTYHLD
IF '$GET(PSODIR("QTY"))
KILL PSODIR("QTY")
End DoDot:1
+22 IF $GET(CLOZPAT)=0
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
+23 IF $GET(CLOZPAT)=2
Begin DoDot:1
+24 IF PSODIR("DAYS SUPPLY")=28
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
+25 IF PSODIR("DAYS SUPPLY")=14
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=1
+26 IF PSODIR("DAYS SUPPLY")=7
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=3
End DoDot:1
+27 IF $GET(CLOZPAT)=1
Begin DoDot:1
+28 IF PSODIR("DAYS SUPPLY")=14
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=0
+29 IF PSODIR("DAYS SUPPLY")=7
SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=1
End DoDot:1
+30 KILL QTYHLD
IF $GET(PSODIR("QTY"))
SET QTYHLD=PSODIR("QTY")
DO QTY^PSOSIG(.PSODIR)
+31 IF $GET(QTYHLD)
IF '$GET(PSODIR("QTY"))
SET PSODIR("QTY")=QTYHLD
+32 KILL QTYHLD
IF '$GET(PSODIR("QTY"))
KILL PSODIR("QTY")
DAYSX KILL X,Y
+1 QUIT
REFILL(PSODIR) ;
+1 ;PSO*7*266
+2 IF $GET(PSODIR("PTST NODE"))=""
Begin DoDot:1
+3 NEW X,Y
+4 SET X=$GET(PSODIR("PATIENT STATUS"))
IF 'X
SET X=$PIECE(RX0,"^",3)
+5 SET DIC=53
SET DIC(0)="QXZ"
DO ^DIC
KILL DIC
+6 IF +Y
SET PSODIR("PTST NODE")=Y(0)
+7 IF '$GET(PSODIR("PATIENT STATUS"))
SET PSODIR("PATIENT STATUS")=+Y
End DoDot:1
+8 SET $PIECE(PSODIR("PTST NODE"),"^",4)=+$PIECE($GET(PSODIR("PTST NODE")),"^",4)
+9 IF $GET(OR0)
GOTO REFOR
+10 SET PSODIR("CS")=0
KILL DIR,DIC,PSOX
+11 FOR DEA=1:1
IF $EXTRACT(PSODRUG("DEA"),DEA)=""
QUIT
IF $EXTRACT(+PSODRUG("DEA"),DEA)>1
IF $EXTRACT(+PSODRUG("DEA"),DEA)<6
SET $PIECE(PSODIR("CS"),"^")=1
IF $EXTRACT(+PSODRUG("DEA"),DEA)=2
SET $PIECE(PSODIR("CS"),"^",2)=1
+12 IF PSODIR("CS")
Begin DoDot:1
+13 SET PSOX=5
SET PSOX1=$SELECT($PIECE($GET(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$PIECE($GET(PSODIR("PTST NODE")),"^",4))
SET PSOX=$SELECT(PSOX1=5:PSOX,1:PSOX1)
+14 SET PSOX=$SELECT('PSOX:0,PSODIR("DAYS SUPPLY")=90:1,1:PSOX)
SET PSDY=PSODIR("DAYS SUPPLY")
SET PSDY1=$SELECT(PSDY<60:5,PSDY'<60&(PSDY'>89):2,PSDY=90:1,1:0)
SET PSOX=$SELECT(PSOX'>PSDY1:PSOX,1:PSDY1)
End DoDot:1
+15 IF '$TEST
Begin DoDot:1
+16 ;IHS/MSC/PLS - 12/10/08 - Changed maximum refills allowed from 11 to 15
+17 ;S PSOX=11,PSOX1=$S($P($G(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$P($G(PSODIR("PTST NODE")),"^",4)),PSOX=$S(PSOX1=11:PSOX,1:PSOX1)
+18 SET PSOX=15
SET PSOX1=$SELECT($PIECE($GET(PSODIR("PTST NODE")),"^",4)>PSOX:PSOX,1:$PIECE($GET(PSODIR("PTST NODE")),"^",4))
SET PSOX=$SELECT(PSOX1=15:PSOX,1:PSOX1)
+19 ; IHS/CIA/PLS - 12/05/03 - Changed days supply value
+20 ; Checks for days supply if not less than 90 (was = 90) and
+21 ; will still allow 3 refills. VA had max of 90, IHS edited the days
+22 ; supply to allow max of 365.
+23 ;S PSDY=PSODIR("DAYS SUPPLY"),PSDY1=$S(PSDY<60:11,PSDY'<60&(PSDY'>89):5,PSDY=90:3,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
+24 ;IHS/MSC/PLS - 12/10/08
+25 ;S PSDY=+$G(PSODIR("DAYS SUPPLY")),PSDY1=$S(PSDY<60:11,PSDY<90:5,PSDY=90:3,PSDY<168:2,PSDY<365:1,1:0) S PSOX=$S(PSOX'>PSDY1:PSOX,1:PSDY1)
+26 SET PSDY=+$GET(PSODIR("DAYS SUPPLY"))
SET PSDY1=$SELECT(PSDY<60:15,PSDY<90:5,PSDY=90:3,PSDY<168:2,PSDY<365:1,1:0)
SET PSOX=$SELECT(PSOX'>PSDY1:PSOX,1:PSDY1)
End DoDot:1
+27 IF '$DATA(CLOZPAT)
IF PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")["F")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2)
Begin DoDot:1
+28 IF PSODRUG("DEA")["A"&(PSODRUG("DEA")'["B")!(PSODRUG("DEA")[1)!(PSODRUG("DEA")[2)!'$ORDER(^PSRX(+$GET(PSODIR("IRXN")),1,0))!('$GET(PSOLOKED))
Begin DoDot:2
+29 SET VALMSG="No refills allowed on "_$SELECT(PSODRUG("DEA")["F":"this drug.",1:"Narcotics.")
WRITE !,VALMSG,!
+30 IF $DATA(PSODIR("FIELD"))
SET PSODIR("FIELD")=0
SET PSODIR("# OF REFILLS")=0
+31 QUIT
End DoDot:2
QUIT
+32 ;reset refills to the # given
+33 DO RFRSET^PSODIR2
+34 QUIT
End DoDot:1
GOTO REFILLX
+35 IF $PIECE($GET(PSODIR("CS")),"^",2)=1
WRITE !,"No refills allowed on Schedule 2 drugs...",!
IF $DATA(PSODIR("FIELD"))
SET PSODIR("FIELD")=0
SET PSODIR("# OF REFILLS")=0
GOTO REFILLX
+36 IF $DATA(CLOZPAT)
SET PSOX=$SELECT($GET(CLOZPAT)=2&(PSODIR("DAYS SUPPLY")=14):1,$GET(CLOZPAT)=2&(PSODIR("DAYS SUPPLY")=7):3,$GET(CLOZPAT)=1&(PSODIR("DAYS SUPPLY")=7):1,1:0)
+37 ;PSO*7*266 make sure PSOX is greater than RFTT
+38 SET DIR(0)="N^"_$SELECT($GET(RFTT):RFTT,1:0)_":"_$SELECT(+$GET(RFTT)>PSOX:RFTT,1:PSOX)
SET DIR("A")="# OF REFILLS"
+39 SET DIR("B")=$SELECT($GET(COPY):PSODIR("# OF REFILLS"),$GET(PSODIR("N# REF"))]"":PSODIR("N# REF"),$GET(PSODIR("# OF REFILLS"))]"":PSODIR("# OF REFILLS"),$GET(PSOX1)]""&(PSOX>PSOX1):PSOX1,1:PSOX)
+40 ; IHS/CIA/PLS - 12/05/03 - Set default to zero.
+41 SET DIR("B")=0
+42 SET DIR("?")="Enter a whole number. The maximum is set by the DAYS SUPPLY field."
+43 DO DIR
IF PSODIR("DFLG")!PSODIR("FIELD")
GOTO REFILLX
+44 SET (PSODIR("N# REF"),PSODIR("# OF REFILLS"))=Y
REFILLX IF $GET(PSODIR("# OF REFILLS"))']""
SET PSODIR("# OF REFILLS")=$SELECT($GET(PSODIR("N# REF"))]"":PSODIR("N# REF"),$GET(PSOX1)]""&($GET(PSOX)>PSOX1):PSOX1,1:PSOX)
+1 KILL X,Y,PSOX,PSOX1,PSDY,PSDY1,DEA,PSOCS
+2 QUIT
+3 ;OERR CALL
REFOR ;
+1 DO REFOR^PSODIR3
+2 GOTO REFILLX
+3 QUIT
DIR ;
+1 SET (PSODIR("FIELD"),PSODIR("DFLG"))=0
+2 IF $GET(DIR(0))']""
GOTO DIRX
+3 DO ^DIR
KILL DIR,DIE,DIC,DA
DIRS ; EP - IHS/CIA/PLS - 12/23/03 - New entry point DIRS added.
+1 IF $DATA(DUOUT)!($DATA(DTOUT))!($DATA(DIROUT))
IF $LENGTH($GET(X))'>1!(Y="")
SET PSODIR("DFLG")=1
GOTO DIRX
+2 IF $DATA(DIRUT)!($DATA(DIROUT))
IF $GET(SPEED)
SET PSODIR("DFLG")=1
GOTO DIRX
+3 IF X[U
IF $LENGTH(X)>1
DO JUMP
DIRX KILL DIRUT,DTOUT,DUOUT,DIROUT
+1 QUIT
JUMP ;
+1 IF $GET(PSOEDIT)!($GET(OR0))
SET PSODIR("DFLG")=1
QUIT
+2 SET X=$PIECE(X,"^",2)
SET DIC="^DD(52,"
SET DIC(0)="QM"
DO ^DIC
KILL DIC
+3 IF Y=-1
SET PSODIR("FIELD")=PSODIR("FLD")
GOTO JUMPX
+4 IF $GET(PSONEW1)=0
DO JUMP^PSONEW1
GOTO JUMPX
+5 IF $GET(PSOREF1)=0
DO JUMP^PSOREF1
GOTO JUMPX
+6 IF $GET(PSONEW3)=0
DO JUMP^PSONEW3
GOTO JUMPX
+7 IF $GET(PSORENW3)=0
DO JUMP^PSORENW3
GOTO JUMPX
JUMPX SET X="^"_X
+1 QUIT
SIGOK ;review and decide on oerr sig
+1 IF '$ORDER(SIG(0))
SET SIGOK=0
QUIT
+2 KILL SIGOK
WRITE !,"SIG: "
+3 FOR SIG=0:0
SET SIG=$ORDER(SIG(SIG))
WRITE SIG(SIG)_" ",!?5
IF '$ORDER(SIG(SIG))
QUIT
+4 KILL DIR,DIRUT,DUOUT,DTOUT
SET DIR("B")="YES"
SET DIR(0)="Y"
SET DIR("A")="Is this SIG correct"
DO ^DIR
KILL DIR
IF $DATA(DIRUT)
SET PSODIR("DFLG")=1
KILL DIRUT,DUOUT,DTOUT
QUIT
+5 SET SIGOK=Y
IF Y
KILL PSODIR("SIG")
+6 QUIT
PSTPB ;
+1 WRITE !,"New orders entered through this option must have a Patient Status of 'NON-VA'!",!
+2 QUIT