PSOERPR2 ;BIRM/MFR - eRx Holding Queue Preferences - Single Patient Queue ;08/29/22
;;7.0;OUTPATIENT PHARMACY;**700,746**;DEC 1997;Build 106
;
EN ; - Entry Point
N DIR,DIRUT,DIROUT,PSOPRIEN,DA,X,Y
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
;
S (PSOCHNG,PSOQUIT)=0 D FULL^VALM1 W !
;
; - Reset user/division preferences
I $D(^PS(52.35,PSOPRIEN,"SPV",DUZ)) D
. D DISPLAY
. S DIR("A")=" Delete this saved default view? "
. S DIR(0)="YA",DIR("B")="NO" D ^DIR I $D(DIRUT)!$D(DIROUT) S PSOQUIT=1 Q
. I Y=1 D DELETE,LOAD
. W !
I PSOQUIT Q
;
LKBKD ; - Look Back Days
K DIR,DIRUT,DIROUT,SAVEX,X,Y
S DIR(0)="52.352,1",DIR("B")=PSOLKBKD
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"LKBKD")
W $S(X>0:" DAYS",1:" (TODAY'S)") S PSOLKBKD=X
D CHANGED("LKBKD",PSOLKBKD)
;
SRTBY ; - Sort By
K DIR,DIRUT,DIROUT,X,Y
S DIR(0)="52.352,2",DIR("B")=PSOSRTBY
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"SRTBY")
S PSOSRTBY=Y D CHANGED("SRTBY",PSOSRTBY)
;
ORDER ; - Sort Order
K DIR,DIRUT,DIROUT,X,Y
S DIR(0)="52.352,3",DIR("B")=PSORDER
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"ORDER")
S PSORDER=Y D CHANGED("ORDER",PSORDER)
;
DETDP ; - Display Details
K DIR,DIRUT,DIROUT,X,Y
S DIR(0)="52.352,4",DIR("B")=$S(PSODETDP:"YES",1:"NO")
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"DETDP")
S PSODETDP=Y D CHANGED("DETDP",PSODETDP)
;
GRPCS ; - Group By CS/Non-CS
K DIR,DIRUT,DIROUT,X,Y
S DIR(0)="52.352,5",DIR("B")=$S(PSOCSGRP:"YES",1:"NO")
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"GRPCS")
S PSOCSGRP=Y D CHANGED("GRPCS",PSOCSGRP)
;
ALLST ; - Display All Statuses
K DIR,DIRUT,DIROUT,X,Y
S DIR(0)="52.352,6",DIR("B")=$S(PSOALLST:"YES",1:"NO")
D ^DIR I $D(DIRUT)!$D(DIROUT) G @$$GOTO(X,"ALLST")
S PSOALLST=Y D CHANGED("ALLST",PSOALLST)
;
EXIT ; Exit
; - Save view?
I $G(PSOCHNG) D
. W ! S DIR(0)="YA",DIR("B")="NO",DIR("A")="Save as your default view? "
. D ^DIR I $D(DIRUT)!$D(DIROUT)!(Y=0) Q
. D SAVE
;
S VALMBCK="R"
;
END Q
;
DISPLAY ; - Displays the current view
N LN,PSOPRIEN,PRFDAT,PREFS
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
;
I $D(^PS(52.35,PSOPRIEN,"SPV",DUZ)) D
. D GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","IE","PRFDAT")
. M PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
. W !?5,"Your saved default view:"
. S $P(LN,"-",24)="" W !?5,LN
. W !?5,"LOOK BACK DAYS : ",$G(PREFS(1,"E"))," DAYS"
. W !?5,"SORT BY : ",$G(PREFS(2,"E"))
. W !?5,"SORT ORDER : ",$G(PREFS(3,"E"))
. W !?5,"DISPLAY DETAILS : ",$G(PREFS(4,"E"))
. W !?5,"GROUP BY CS/NON-CS : ",$G(PREFS(5,"E"))
. W !?5,"INCLUDE ALL STATUSES: ",$G(PREFS(6,"E"))
. W !
Q
;
GOTO(INPUT,HOME) ; - Directed up-arrow
N GOTO,TAG,TRGT
I $P(INPUT,"^",2)="" S PSOQUIT=1 Q "EXIT"
;
S TRGT=$P(INPUT,"^",2)
S TAG("LOOK BACK DAYS")="LKBKD"
S TAG("SORT BY")="SRTBY"
S TAG("SORT ORDER")="ORDER"
S TAG("DISPLAY DETAILS")="DETDP"
S TAG("GROUP BY STATUS")="GRPCS"
S TAG("INCLUDE ALL STATUSES")="ALLST"
;
S GOTO=HOME
S TAG="" F S TAG=$O(TAG(TAG)) Q:TAG="" I $E(TAG,1,$L(TRGT))=TRGT S GOTO=TAG(TAG) Q
I GOTO=HOME W " ??",$C(7)
;
Q GOTO
;
LOAD ; Loading Factory/Division/User preferences for Single Patient View
;Output: PSOLKBKD - Look Back Days
; PSOSRTBY - Sort By
; PSORDER - Sort Order ("A":Asc,"D":Desc)
; PSODETDP - Display Details (1:ON/0:OFF)
; PSOCSGRP - Group by Status (1:ON/0:OFF)
; PSOALLST - Include All Statuses (1:ON/0:OFF)
; - 'Factory' Defaults
I $G(RESETLBD)!'$G(PSOLKBKD)!($G(PSOSTFLT)="WP") D
. S PSOLKBKD=365
. I $$GET1^DIQ(59,PSOSITE,10.2) S PSOLKBKD=$$GET1^DIQ(59,PSOSITE,10.2)
S PSOSRTBY="RE",PSORDER="A",PSOALLST=0,(PSOCSGRP,PSODETDP)=0
;
N PSOPRIEN
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
;
; - User's preferences
I $D(^PS(52.35,PSOPRIEN,"SPV",DUZ,0)) D SET Q
;
Q
;
CHANGED(FIELD,VALUE) ; - Sets PSOCHNG so the list can be refreshed
; FIELD - Field to be checked if was changed/edited
; VALUE - New Value for the field
I $G(PSOCHNG) Q
;
N PSOPRIEN,PRFDAT,PREFS
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
; - Saved User's preferences
D GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","IE","PRFDAT")
M PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
;
I FIELD="LKBKD",VALUE'=$G(PREFS(1,"I")) S PSOCHNG=1 Q
I FIELD="SRTBY",VALUE'=$G(PREFS(2,"I")) S PSOCHNG=1 Q
I FIELD="ORDER",VALUE'=$G(PREFS(3,"I")) S PSOCHNG=1 Q
I FIELD="DETDP",VALUE'=$G(PREFS(4,"I")) S PSOCHNG=1 Q
I FIELD="GRPCS",VALUE'=$G(PREFS(5,"I")) S PSOCHNG=1 Q
I FIELD="ALLST",VALUE'=$G(PREFS(6,"I")) S PSOCHNG=1 Q
;
Q
;
SET ; Sets Preferences Variables
N PSOPRIEN,PRFDAT,PREFS
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
D GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","I","PRFDAT")
M PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
I $G(PSOSTFLT)'="WP",$G(RESETLBD) S X=$G(PREFS(1,"I")) I X'="" S PSOLKBKD=X
S X=$G(PREFS(2,"I")) I X'="" S PSOSRTBY=X
S X=$G(PREFS(3,"I")) I X'="" S PSORDER=X
S X=$G(PREFS(4,"I")) I X'="" S PSODETDP=X
S X=$G(PREFS(5,"I")) I X'="" S PSOCSGRP=X
S X=$G(PREFS(6,"I")) I X'="" S PSOALLST=X
Q
;
SAVE ; - Saves User's Preferences
N DIE,DR,DA,PSOPRIEN
;
S PSOPRIEN=+$O(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0)) I 'PSOPRIEN Q
;
W !!,"Saving..."
;
I '$D(^PS(52.35,PSOPRIEN,"SPV",DUZ,0)) D
. N %,DIC,DR,DA,X,DINUM,DLAYGO,DD,DO
. S DIC="^PS(52.35,"_PSOPRIEN_",""SPV"","
. S DA(1)=PSOPRIEN,(DINUM,X)=DUZ,DIC(0)=""
. K DD,DO D FILE^DICN K DD,DO
;
S DR="1///"_PSOLKBKD_";2///"_PSOSRTBY_";3///"_PSORDER
S DR=DR_";4///"_PSODETDP_";5///"_PSOCSGRP_";6///"_PSOALLST
;
S DIE="^PS(52.35,"_PSOPRIEN_",""SPV"",",DA(1)=PSOPRIEN,DA=DUZ
D ^DIE H 1 W "OK!" H .5
Q
;
DELETE ; - Deletes user/division preferences
N DIK,DA,DIE,DR
;
W !!,"Deleting..."
;
S DIK="^PS(52.35,"_PSOPRIEN_",""SPV"",",DA(1)=PSOPRIEN,DA=DUZ
D ^DIK H 1 W "OK!"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOERPR2 6170 printed Dec 13, 2024@02:27:49 Page 2
PSOERPR2 ;BIRM/MFR - eRx Holding Queue Preferences - Single Patient Queue ;08/29/22
+1 ;;7.0;OUTPATIENT PHARMACY;**700,746**;DEC 1997;Build 106
+2 ;
EN ; - Entry Point
+1 NEW DIR,DIRUT,DIROUT,PSOPRIEN,DA,X,Y
+2 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+3 ;
+4 SET (PSOCHNG,PSOQUIT)=0
DO FULL^VALM1
WRITE !
+5 ;
+6 ; - Reset user/division preferences
+7 IF $DATA(^PS(52.35,PSOPRIEN,"SPV",DUZ))
Begin DoDot:1
+8 DO DISPLAY
+9 SET DIR("A")=" Delete this saved default view? "
+10 SET DIR(0)="YA"
SET DIR("B")="NO"
DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
SET PSOQUIT=1
QUIT
+11 IF Y=1
DO DELETE
DO LOAD
+12 WRITE !
End DoDot:1
+13 IF PSOQUIT
QUIT
+14 ;
LKBKD ; - Look Back Days
+1 KILL DIR,DIRUT,DIROUT,SAVEX,X,Y
+2 SET DIR(0)="52.352,1"
SET DIR("B")=PSOLKBKD
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"LKBKD")
+4 WRITE $SELECT(X>0:" DAYS",1:" (TODAY'S)")
SET PSOLKBKD=X
+5 DO CHANGED("LKBKD",PSOLKBKD)
+6 ;
SRTBY ; - Sort By
+1 KILL DIR,DIRUT,DIROUT,X,Y
+2 SET DIR(0)="52.352,2"
SET DIR("B")=PSOSRTBY
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"SRTBY")
+4 SET PSOSRTBY=Y
DO CHANGED("SRTBY",PSOSRTBY)
+5 ;
ORDER ; - Sort Order
+1 KILL DIR,DIRUT,DIROUT,X,Y
+2 SET DIR(0)="52.352,3"
SET DIR("B")=PSORDER
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"ORDER")
+4 SET PSORDER=Y
DO CHANGED("ORDER",PSORDER)
+5 ;
DETDP ; - Display Details
+1 KILL DIR,DIRUT,DIROUT,X,Y
+2 SET DIR(0)="52.352,4"
SET DIR("B")=$SELECT(PSODETDP:"YES",1:"NO")
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"DETDP")
+4 SET PSODETDP=Y
DO CHANGED("DETDP",PSODETDP)
+5 ;
GRPCS ; - Group By CS/Non-CS
+1 KILL DIR,DIRUT,DIROUT,X,Y
+2 SET DIR(0)="52.352,5"
SET DIR("B")=$SELECT(PSOCSGRP:"YES",1:"NO")
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"GRPCS")
+4 SET PSOCSGRP=Y
DO CHANGED("GRPCS",PSOCSGRP)
+5 ;
ALLST ; - Display All Statuses
+1 KILL DIR,DIRUT,DIROUT,X,Y
+2 SET DIR(0)="52.352,6"
SET DIR("B")=$SELECT(PSOALLST:"YES",1:"NO")
+3 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)
GOTO @$$GOTO(X,"ALLST")
+4 SET PSOALLST=Y
DO CHANGED("ALLST",PSOALLST)
+5 ;
EXIT ; Exit
+1 ; - Save view?
+2 IF $GET(PSOCHNG)
Begin DoDot:1
+3 WRITE !
SET DIR(0)="YA"
SET DIR("B")="NO"
SET DIR("A")="Save as your default view? "
+4 DO ^DIR
IF $DATA(DIRUT)!$DATA(DIROUT)!(Y=0)
QUIT
+5 DO SAVE
End DoDot:1
+6 ;
+7 SET VALMBCK="R"
+8 ;
END QUIT
+1 ;
DISPLAY ; - Displays the current view
+1 NEW LN,PSOPRIEN,PRFDAT,PREFS
+2 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+3 ;
+4 IF $DATA(^PS(52.35,PSOPRIEN,"SPV",DUZ))
Begin DoDot:1
+5 DO GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","IE","PRFDAT")
+6 MERGE PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
+7 WRITE !?5,"Your saved default view:"
+8 SET $PIECE(LN,"-",24)=""
WRITE !?5,LN
+9 WRITE !?5,"LOOK BACK DAYS : ",$GET(PREFS(1,"E"))," DAYS"
+10 WRITE !?5,"SORT BY : ",$GET(PREFS(2,"E"))
+11 WRITE !?5,"SORT ORDER : ",$GET(PREFS(3,"E"))
+12 WRITE !?5,"DISPLAY DETAILS : ",$GET(PREFS(4,"E"))
+13 WRITE !?5,"GROUP BY CS/NON-CS : ",$GET(PREFS(5,"E"))
+14 WRITE !?5,"INCLUDE ALL STATUSES: ",$GET(PREFS(6,"E"))
+15 WRITE !
End DoDot:1
+16 QUIT
+17 ;
GOTO(INPUT,HOME) ; - Directed up-arrow
+1 NEW GOTO,TAG,TRGT
+2 IF $PIECE(INPUT,"^",2)=""
SET PSOQUIT=1
QUIT "EXIT"
+3 ;
+4 SET TRGT=$PIECE(INPUT,"^",2)
+5 SET TAG("LOOK BACK DAYS")="LKBKD"
+6 SET TAG("SORT BY")="SRTBY"
+7 SET TAG("SORT ORDER")="ORDER"
+8 SET TAG("DISPLAY DETAILS")="DETDP"
+9 SET TAG("GROUP BY STATUS")="GRPCS"
+10 SET TAG("INCLUDE ALL STATUSES")="ALLST"
+11 ;
+12 SET GOTO=HOME
+13 SET TAG=""
FOR
SET TAG=$ORDER(TAG(TAG))
if TAG=""
QUIT
IF $EXTRACT(TAG,1,$LENGTH(TRGT))=TRGT
SET GOTO=TAG(TAG)
QUIT
+14 IF GOTO=HOME
WRITE " ??",$CHAR(7)
+15 ;
+16 QUIT GOTO
+17 ;
LOAD ; Loading Factory/Division/User preferences for Single Patient View
+1 ;Output: PSOLKBKD - Look Back Days
+2 ; PSOSRTBY - Sort By
+3 ; PSORDER - Sort Order ("A":Asc,"D":Desc)
+4 ; PSODETDP - Display Details (1:ON/0:OFF)
+5 ; PSOCSGRP - Group by Status (1:ON/0:OFF)
+6 ; PSOALLST - Include All Statuses (1:ON/0:OFF)
+7 ; - 'Factory' Defaults
+8 IF $GET(RESETLBD)!'$GET(PSOLKBKD)!($GET(PSOSTFLT)="WP")
Begin DoDot:1
+9 SET PSOLKBKD=365
+10 IF $$GET1^DIQ(59,PSOSITE,10.2)
SET PSOLKBKD=$$GET1^DIQ(59,PSOSITE,10.2)
End DoDot:1
+11 SET PSOSRTBY="RE"
SET PSORDER="A"
SET PSOALLST=0
SET (PSOCSGRP,PSODETDP)=0
+12 ;
+13 NEW PSOPRIEN
+14 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+15 ;
+16 ; - User's preferences
+17 IF $DATA(^PS(52.35,PSOPRIEN,"SPV",DUZ,0))
DO SET
QUIT
+18 ;
+19 QUIT
+20 ;
CHANGED(FIELD,VALUE) ; - Sets PSOCHNG so the list can be refreshed
+1 ; FIELD - Field to be checked if was changed/edited
+2 ; VALUE - New Value for the field
+3 IF $GET(PSOCHNG)
QUIT
+4 ;
+5 NEW PSOPRIEN,PRFDAT,PREFS
+6 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+7 ; - Saved User's preferences
+8 DO GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","IE","PRFDAT")
+9 MERGE PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
+10 ;
+11 IF FIELD="LKBKD"
IF VALUE'=$GET(PREFS(1,"I"))
SET PSOCHNG=1
QUIT
+12 IF FIELD="SRTBY"
IF VALUE'=$GET(PREFS(2,"I"))
SET PSOCHNG=1
QUIT
+13 IF FIELD="ORDER"
IF VALUE'=$GET(PREFS(3,"I"))
SET PSOCHNG=1
QUIT
+14 IF FIELD="DETDP"
IF VALUE'=$GET(PREFS(4,"I"))
SET PSOCHNG=1
QUIT
+15 IF FIELD="GRPCS"
IF VALUE'=$GET(PREFS(5,"I"))
SET PSOCHNG=1
QUIT
+16 IF FIELD="ALLST"
IF VALUE'=$GET(PREFS(6,"I"))
SET PSOCHNG=1
QUIT
+17 ;
+18 QUIT
+19 ;
SET ; Sets Preferences Variables
+1 NEW PSOPRIEN,PRFDAT,PREFS
+2 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+3 DO GETS^DIQ(52.352,DUZ_","_PSOPRIEN_",","1;2;3;4;5;6","I","PRFDAT")
+4 MERGE PREFS=PRFDAT(52.352,DUZ_","_PSOPRIEN_",")
+5 IF $GET(PSOSTFLT)'="WP"
IF $GET(RESETLBD)
SET X=$GET(PREFS(1,"I"))
IF X'=""
SET PSOLKBKD=X
+6 SET X=$GET(PREFS(2,"I"))
IF X'=""
SET PSOSRTBY=X
+7 SET X=$GET(PREFS(3,"I"))
IF X'=""
SET PSORDER=X
+8 SET X=$GET(PREFS(4,"I"))
IF X'=""
SET PSODETDP=X
+9 SET X=$GET(PREFS(5,"I"))
IF X'=""
SET PSOCSGRP=X
+10 SET X=$GET(PREFS(6,"I"))
IF X'=""
SET PSOALLST=X
+11 QUIT
+12 ;
SAVE ; - Saves User's Preferences
+1 NEW DIE,DR,DA,PSOPRIEN
+2 ;
+3 SET PSOPRIEN=+$ORDER(^PS(52.35,"B","ERX HOLDING QUEUE PREFERENCES",0))
IF 'PSOPRIEN
QUIT
+4 ;
+5 WRITE !!,"Saving..."
+6 ;
+7 IF '$DATA(^PS(52.35,PSOPRIEN,"SPV",DUZ,0))
Begin DoDot:1
+8 NEW %,DIC,DR,DA,X,DINUM,DLAYGO,DD,DO
+9 SET DIC="^PS(52.35,"_PSOPRIEN_",""SPV"","
+10 SET DA(1)=PSOPRIEN
SET (DINUM,X)=DUZ
SET DIC(0)=""
+11 KILL DD,DO
DO FILE^DICN
KILL DD,DO
End DoDot:1
+12 ;
+13 SET DR="1///"_PSOLKBKD_";2///"_PSOSRTBY_";3///"_PSORDER
+14 SET DR=DR_";4///"_PSODETDP_";5///"_PSOCSGRP_";6///"_PSOALLST
+15 ;
+16 SET DIE="^PS(52.35,"_PSOPRIEN_",""SPV"","
SET DA(1)=PSOPRIEN
SET DA=DUZ
+17 DO ^DIE
HANG 1
WRITE "OK!"
HANG .5
+18 QUIT
+19 ;
DELETE ; - Deletes user/division preferences
+1 NEW DIK,DA,DIE,DR
+2 ;
+3 WRITE !!,"Deleting..."
+4 ;
+5 SET DIK="^PS(52.35,"_PSOPRIEN_",""SPV"","
SET DA(1)=PSOPRIEN
SET DA=DUZ
+6 DO ^DIK
HANG 1
WRITE "OK!"
+7 QUIT