PSGTAP ;BIR/CML3-SEND PICK LIST TO TRAVENOL'S ATC 212 (DRIVER) ; 05 May 98 / 10:25 AM
;;5.0; INPATIENT MEDICATIONS ;**10**;16 DEC 97
;
EN ;
D ENCV^PSGSETU I $D(XQUIT) Q
;
ASK ;
R !!,"Select WARD GROUP or PICK LIST: ",X:DTIME W:'$T $C(7) S:'$T X="^" G:"^"[X OUT I X=+X D NL G:'$D(X) ASK I Y D EN1 G ASK
I X?1."?" W !!?2,"Select a Ward Group for which a pick list has been run that you wish to send",!,"to the ATC.",!?2,"You may also directly select a Pick List by number, which prints in the upper",!,"left corner of each pick list." G ASK
K DIC S DIC="^PS(57.5,",DIC(0)="EIMQZ",DIC("S")="I $P(^(0),""^"",2)=""P""" D ^DIC K DIC I Y S PSGPLWG=+Y,PSGPLGF="A" D AD I $D(X) F D ^PSGPLG Q:'PSGPLG D EN1 Q:OK
G ASK
;
OUT ;
D ENKV^PSGSETU K A,BLKS,C,D,DAT,DIC,G,I1,I2,ND,O,P,PID,PL,PN,PND,PSGIOP,PSGPLG,PSGPLGF,PSGPLWG,PSGPLWGN,PSGSPD,Q,QUIT,R,S,ST,T,TM,W
Q
;
EN1 ;
S OK=0 I '$$LOCK^PSGPLUTL(PSGPLG,"PSGTAP") W $C(7),!!,"This PICK LIST is currently being accessed by another task." Q
I $P($G(^PS(53.5,PSGPLG,0)),"^",12) S PSGID=$P(^(0),"^",12),PSGOD=$$ENDTC^PSGMI(PSGID) D I Y<1 D EN2 Q
.W !! S DIR(0)="Y^A",DIR("A")="Pick List #"_PSGPLG_" was queued to the ATC for "_PSGOD_". Send again",DIR("B")="N" D ^DIR K DIR
S X=$G(^PS(53.5,PSGPLG,0)),Y=$O(^(0))="",X=$P(X,"^",11)&'$P(X,"^",9),%=1
I X!Y W $C(7) F W !!,"THIS PICK LIST HAS NO",$S(Y:" DATA.",1:"T RUN TO COMPLETION."),!,"Do you wish to continue" S %=2 D YN^DICN G:% EN2 W !!?2,"Enter 'YES' to send this pick list to the ATC. Enter 'NO' (or '^') to not",!,"send it."
G:%'=1 EN2 K %ZIS S %ZIS="NQ",PSGION=ION,IOP="`"_PSGIOP_";255" D ^%ZIS I POP S IOP=PSGION D ^%ZIS K IOP W $C(7),!!?10,"THE ATC MACHINE IS NOT FOUND!" G EN2
S PSGTAPR=0 I $D(^PS(53.55,PSGPLG,0)),$P(^(0),"^",2),$O(^(1,0)) F W !!,"This pick list had been previously started, but did not run to completion.",!,"Do you want to restart it where it left off" S %=0 D YN^DICN I 1 Q:% D
.W !!?2,"Enter 'YES' to restart the pick list from where it previously stopped. Enter",!,"'NO' to start this pick list from the beginning." W:%Y'?1."?" " (A response is required.)"
I G:%<0 EN2 S PSGTAPR=%=1
S X=0,X=$O(^PS(59.7,X)),PSGTIR=$S($P($G(^(X,26)),"^",2)=1:"ENQ^PSGTAP1",1:"ENQ^PSGTAP0")
K PSGTID,ZTSAVE S ZTDESC="PICK LIST TO ATC",(ZTSAVE("PSGPLG"),ZTSAVE("PSGSPD"),ZTSAVE("PSGTAPR"),ZTSAVE("PSGPLWG"))="" D ENTSK^PSGTI
I $D(ZTSK) W "...SENT!" S OK=1 I $D(ZTSK("D"))#2 S %H=ZTSK("D") D YMD^%DTC S $P(^PS(53.5,PSGPLG,0),"^",12)=X+%
;
EN2 ;
I $D(PSGPLG) D UNLOCK^PSGPLUTL(PSGPLG,"PSGTAP")
Q
;
NL ; numeric look-up
S Y=$G(^PS(53.5,X,0)) I $S('Y:1,'$P(Y,"^",2):1,1:'$D(^PS(53.5,"AB",$P(Y,"^",2),+$P(Y,"^",3),X))) S Y=0 Q
S PSGPLG=X,X=^PS(53.5,PSGPLG,0),Y=$$ENDTC^PSGMI($P(X,"^",3)),PSGPLWG=$P(X,"^",2),PSGPLWGN=$S('$D(^PS(57.5,PSGPLWG,0)):PSGPLWG_";PS(57.5,",$P(^(0),"^")]"":$P(^(0),"^"),1:PSGPLWG_";PS(57.5,"),PSGOD=$$ENDTC^PSGMI($P(X,"^",4))
W !?5,"Ward Group: ",PSGPLWGN,!?5,Y," thru ",PSGOD
;
AD ; ATC device
S X=$G(^PS(57.5,PSGPLWG,3)) I $P(X,"^",3)="" W $C(7),!!?3,"THIS WARD GROUP DOES NOT HAVE AN ATC DEVICE DESIGNATED FOR IT." K X
S:$D(X) PSGIOP=$P(X,"^",3),PSGSPD=$P(X,"^",2),Y=1 Q
PSGTAP ;BIR/CML3-SEND PICK LIST TO TRAVENOL'S ATC 212 (DRIVER) ; 05 May 98 / 10:25 AM
+1 ;;5.0; INPATIENT MEDICATIONS ;**10**;16 DEC 97
+2 ;
EN ;
+1 DO ENCV^PSGSETU
IF $DATA(XQUIT)
QUIT
+2 ;
ASK ;
+1 READ !!,"Select WARD GROUP or PICK LIST: ",X:DTIME
IF '$TEST
WRITE $CHAR(7)
IF '$TEST
SET X="^"
IF "^"[X
GOTO OUT
IF X=+X
DO NL
IF '$DATA(X)
GOTO ASK
IF Y
DO EN1
GOTO ASK
+2 IF X?1."?"
WRITE !!?2,"Select a Ward Group for which a pick list has been run that you wish to send",!,"to the ATC.",!?2,"You may also directly select a Pick List by number, which prints in the upper",!,"left corner of each pick list."
GOTO ASK
+3 KILL DIC
SET DIC="^PS(57.5,"
SET DIC(0)="EIMQZ"
SET DIC("S")="I $P(^(0),""^"",2)=""P"""
DO ^DIC
KILL DIC
IF Y
SET PSGPLWG=+Y
SET PSGPLGF="A"
DO AD
IF $DATA(X)
FOR
DO ^PSGPLG
IF 'PSGPLG
QUIT
DO EN1
IF OK
QUIT
+4 GOTO ASK
+5 ;
OUT ;
+1 DO ENKV^PSGSETU
KILL A,BLKS,C,D,DAT,DIC,G,I1,I2,ND,O,P,PID,PL,PN,PND,PSGIOP,PSGPLG,PSGPLGF,PSGPLWG,PSGPLWGN,PSGSPD,Q,QUIT,R,S,ST,T,TM,W
+2 QUIT
+3 ;
EN1 ;
+1 SET OK=0
IF '$$LOCK^PSGPLUTL(PSGPLG,"PSGTAP")
WRITE $CHAR(7),!!,"This PICK LIST is currently being accessed by another task."
QUIT
+2 IF $PIECE($GET(^PS(53.5,PSGPLG,0)),"^",12)
SET PSGID=$PIECE(^(0),"^",12)
SET PSGOD=$$ENDTC^PSGMI(PSGID)
Begin DoDot:1
+3 WRITE !!
SET DIR(0)="Y^A"
SET DIR("A")="Pick List #"_PSGPLG_" was queued to the ATC for "_PSGOD_". Send again"
SET DIR("B")="N"
DO ^DIR
KILL DIR
End DoDot:1
IF Y<1
DO EN2
QUIT
+4 SET X=$GET(^PS(53.5,PSGPLG,0))
SET Y=$ORDER(^(0))=""
SET X=$PIECE(X,"^",11)&'$PIECE(X,"^",9)
SET %=1
+5 IF X!Y
WRITE $CHAR(7)
FOR
WRITE !!,"THIS PICK LIST HAS NO",$SELECT(Y:" DATA.",1:"T RUN TO COMPLETION."),!,"Do you wish to continue"
SET %=2
DO YN^DICN
IF %
GOTO EN2
WRITE !!?2,"Enter 'YES' to send this pick list to the ATC. Enter 'NO' (or '^') to not",!,"send it."
+6 IF %'=1
GOTO EN2
KILL %ZIS
SET %ZIS="NQ"
SET PSGION=ION
SET IOP="`"_PSGIOP_";255"
DO ^%ZIS
IF POP
SET IOP=PSGION
DO ^%ZIS
KILL IOP
WRITE $CHAR(7),!!?10,"THE ATC MACHINE IS NOT FOUND!"
GOTO EN2
+7 SET PSGTAPR=0
IF $DATA(^PS(53.55,PSGPLG,0))
IF $PIECE(^(0),"^",2)
IF $ORDER(^(1,0))
FOR
WRITE !!,"This pick list had been previously started, but did not run to completion.",!,"Do you want to restart it where it left off"
SET %=0
DO YN^DICN
IF 1
IF %
QUIT
Begin DoDot:1
+8 WRITE !!?2,"Enter 'YES' to restart the pick list from where it previously stopped. Enter",!,"'NO' to start this pick list from the beginning."
IF %Y'?1."?"
WRITE " (A response is required.)"
End DoDot:1
+9 IF $TEST
IF %<0
GOTO EN2
SET PSGTAPR=%=1
+10 SET X=0
SET X=$ORDER(^PS(59.7,X))
SET PSGTIR=$SELECT($PIECE($GET(^(X,26)),"^",2)=1:"ENQ^PSGTAP1",1:"ENQ^PSGTAP0")
+11 KILL PSGTID,ZTSAVE
SET ZTDESC="PICK LIST TO ATC"
SET (ZTSAVE("PSGPLG"),ZTSAVE("PSGSPD"),ZTSAVE("PSGTAPR"),ZTSAVE("PSGPLWG"))=""
DO ENTSK^PSGTI
+12 IF $DATA(ZTSK)
WRITE "...SENT!"
SET OK=1
IF $DATA(ZTSK("D"))#2
SET %H=ZTSK("D")
DO YMD^%DTC
SET $PIECE(^PS(53.5,PSGPLG,0),"^",12)=X+%
+13 ;
EN2 ;
+1 IF $DATA(PSGPLG)
DO UNLOCK^PSGPLUTL(PSGPLG,"PSGTAP")
+2 QUIT
+3 ;
NL ; numeric look-up
+1 SET Y=$GET(^PS(53.5,X,0))
IF $SELECT('Y:1,'$PIECE(Y,"^",2):1,1:'$DATA(^PS(53.5,"AB",$PIECE(Y,"^",2),+$PIECE(Y,"^",3),X)))
SET Y=0
QUIT
+2 SET PSGPLG=X
SET X=^PS(53.5,PSGPLG,0)
SET Y=$$ENDTC^PSGMI($PIECE(X,"^",3))
SET PSGPLWG=$PIECE(X,"^",2)
SET PSGPLWGN=$SELECT('$DATA(^PS(57.5,PSGPLWG,0)):PSGPLWG_";PS(57.5,",$PIECE(^(0),"^")]"":$PIECE(^(0),"^"),1:PSGPLWG_";PS(57.5,")
SET PSGOD=$$ENDTC^PSGMI($PIECE(X,"^",4))
+3 WRITE !?5,"Ward Group: ",PSGPLWGN,!?5,Y," thru ",PSGOD
+4 ;
AD ; ATC device
+1 SET X=$GET(^PS(57.5,PSGPLWG,3))
IF $PIECE(X,"^",3)=""
WRITE $CHAR(7),!!?3,"THIS WARD GROUP DOES NOT HAVE AN ATC DEVICE DESIGNATED FOR IT."
KILL X
+2 IF $DATA(X)
SET PSGIOP=$PIECE(X,"^",3)
SET PSGSPD=$PIECE(X,"^",2)
SET Y=1
QUIT