LEXDD1 ;ISL/KER - Display Defaults ;04/21/2014
;;2.0;LEXICON UTILITY;**80**;Sep 23, 1996;Build 10
;
; Global Variables
; ^DIC(49) ICR 10093
;
; External References
; $$GET1^DIQ ICR 2056
; HOME^%ZIS ICR 10086
; ^%ZIS ICR 10086
; ^%ZISC ICR 10089
; ^%ZTLOAD ICR 10063
; ^DIR ICR 10026
;
SHOW ; Show user defaults
W @IOF
N LEXMODE,LEXUSER,LEXSERV
SELUSR ; Select user/user group
K LEXD,LEXMODE
W !!,"Show User Defaults for"
W !!," 1: All users with defaults"
W !," 2: A Single User"
W !," 3: Users in a Service",!
BYUSR ; Get response to user/user group
K ZTSAVE S LEXMODE=$$USR G:LEXMODE[U SHOWQ
I LEXMODE=1 D G SELUSR
. S ZTRTN="ALL^LEXDD1" D DEV,HOME^%ZIS
I LEXMODE=2 D G:+($G(LEXDUZ))'<1 SELUSR
. W ! S LEXDUZ=$$USER^LEXDM4,LEXDUZ=+LEXDUZ
. I +LEXDUZ'<1 D
. . S ZTRTN="ONE^LEXDD1"
. . S ZTSAVE("LEXDUZ")=""
. . D DEV,HOME^%ZIS
I LEXMODE=3 D G SELUSR
. W ! S LEXSERV=$$SERV^LEXDM4
. I +LEXSERV>0 D
. . S ZTRTN="SERV^LEXDD1"
. . S ZTSAVE("LEXSERV")=""
. . D DEV,HOME^%ZIS
G SHOWQ
Q
DEV ; Request a device
N LEXCNT,LEXLC,LEXC S (LEXCNT,LEXLC)=0,LEXC=""
S (ZTSAVE("LEXC"),ZTSAVE("LEXCNT"),ZTSAVE("LEXLC"))=""
N %ZIS,IOP S %ZIS="PQ" D ^%ZIS Q:POP I $D(IO("Q")) D QUE Q
NOQUE ; Local display
W @IOF D @ZTRTN,^%ZISC K ZTSAVE Q
QUE ; Queue task to a selected device
N %,ZTDESC,ZTDTH,ZTIO,ZTSK Q:'$D(ZTRTN) K IO("Q")
S ZTDESC="Lexicon Defaults",ZTIO=ION,ZTDTH=$H
D ^%ZTLOAD
W !,$S($D(ZTSK):"Request Queued",1:"Request Cancelled"),!
K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE D ^%ZISC
Q
ALL ; Display for all users
N LEXUSR,LEXDUZ,LEXITLE
S LEXUSR=""
S LEXITLE="Lexicon User Defaults (all users with defaults)"
W !,LEXITLE W:IOST["P-" !! S LEXLC=$S(IOST["P-":LEXLC+3,1:LEXLC+1)
F S LEXUSR=$O(^LEXT(757.2,"AUD",LEXUSR)) Q:LEXUSR="" D
. N LEXDUZ S LEXDUZ=0
. F S LEXDUZ=$O(^LEXT(757.2,"AUD",LEXUSR,LEXDUZ)) Q:+LEXDUZ=0 D
. . I +LEXDUZ'<1 D
. . . S LEXOK=$$DEF I LEXOK D BUILD^LEXDD2 S LEXCNT=LEXCNT+1
I +LEXCNT=0 D
. W !!,"No users found with defaults set."
D ^%ZISC I $D(ZTQUEUED) S ZTREQ="@"
Q
ONE ; Display for one user
Q:+($G(LEXDUZ))<1 N LEXITLE,LEXOK,LEXNM
S LEXITLE="Lexicon User Defaults (Single User)"
W !,LEXITLE W:IOST["P-" !! S LEXLC=$S(IOST["P-":LEXLC+3,1:LEXLC+1)
S LEXNM=$$GET1^DIQ(200,+($G(LEXDUZ)),.01)
I LEXDUZ'<1,$L(LEXNM) D
. S LEXOK=$$DEF I LEXOK D BUILD^LEXDD2 S LEXCNT=LEXCNT+1
. I 'LEXOK D
. . I LEXNM'="" D
. . . N LEXNAME S LEXNAME=LEXNM
. . . S LEXNAME=$$FL^LEXDD4(LEXNAME)
. . . W !,LEXNAME," has no defaults set",!
. . I LEXNM="" D
. . . W !,"User has no defaults set",!
I LEXDUZ'<1,'$L(LEXNM) D
. W !,"User not found",!
D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
Q
SERV ; Display for users in a Service
Q:'$D(LEXSERV) N LEXITLE,LEXNM,LEXSV
S LEXSERV=+LEXSERV
S LEXITLE="Lexicon User Defaults in a Single Service ("_$P(^DIC(49,LEXSERV,0),U,1)_")"
W !,LEXITLE W:IOST["P-" !! S LEXLC=$S(IOST["P-":LEXLC+3,1:LEXLC+1)
S LEXUSR=""
F S LEXUSR=$O(^LEXT(757.2,"AUD",LEXUSR)) Q:LEXUSR="" D
. N LEXDUZ S LEXDUZ=0
. F S LEXDUZ=$O(^LEXT(757.2,"AUD",LEXUSR,LEXDUZ)) Q:+LEXDUZ=0 D
. . I +LEXDUZ'<1 D
. . . N LEXUSV S LEXUSV=$$GET1^DIQ(200,+($G(LEXDUZ)),29,"I")
. . . I LEXUSV=LEXSERV D
. . . . S LEXOK=$$DEF I LEXOK D BUILD^LEXDD2 S LEXCNT=LEXCNT+1
I +LEXCNT=0 D
. W !!,"No users found with defaults set in the ",$P(^DIC(49,LEXSERV,0),U,1)," service."
D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
Q
SHOWQ ; Quit SHOW
I IOST["P-" D ^%ZISC
K ZTSAVE,ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTSK,X,Y
K DIR,DIC,DIC("S"),%,%ZIS,POP,IOP
K LEX,LEXA,LEXAP,LEXAPID,LEXC,LEXCNT,LEXCTR,LEXCTX,LEXD
K LEXDATA,LEXDICS,LEXDUZ,LEXFIL,LEXFN,LEXI,LEXIEN,LEXITL
K LEXITLE,LEXT,LEXLC,LEXLN,LEXMODE,LEXNAME,LEXOK,LEXSERV
K LEXSHOW,LEXSPC,LEXSTLN,LEXSTR,LEXSUB,LEXUSER,LEXUSR
Q
DEF(X) ; Based on DUZ determines if there are defaults defined
S X=0 Q:+($G(LEXDUZ))=0 X N LEXAPID,LEXIEN S LEXAPID=0
; Defaults by Application
F S LEXAPID=$O(^LEXT(757.2,"ADEF",LEXAPID)) Q:+LEXAPID=0!(X) D Q:X
. S LEXIEN=0 F S LEXIEN=$O(^LEXT(757.2,"ADEF",LEXAPID,LEXIEN)) Q:+LEXIEN=0!(X) D Q:X
. . S:$L($G(^LEXT(757.2,LEXIEN,200,LEXDUZ,1))) X=1 Q:X
. . S:$L($G(^LEXT(757.2,LEXIEN,200,LEXDUZ,2))) X=1 Q:X
. . S:$L($G(^LEXT(757.2,LEXIEN,200,LEXDUZ,3))) X=1 Q:X
. . S:$L($G(^LEXT(757.2,LEXIEN,200,LEXDUZ,4))) X=1 Q:X
Q X
USR(X) ; Get response for user type/group
N Y,DTOUT,DUOUT,DIRUT,DIROUT
S DIR("A")="Select (1-3): ",DIR("B")=2
S DIR("?")="Answer must be from 1 to 3"
S DIR(0)="NAO^1:3:0" D ^DIR
S X=$S($D(DTOUT)!(X[U)!(X=""):U,1:X) K DIR Q X
LEXDD1 ;ISL/KER - Display Defaults ;04/21/2014
+1 ;;2.0;LEXICON UTILITY;**80**;Sep 23, 1996;Build 10
+2 ;
+3 ; Global Variables
+4 ; ^DIC(49) ICR 10093
+5 ;
+6 ; External References
+7 ; $$GET1^DIQ ICR 2056
+8 ; HOME^%ZIS ICR 10086
+9 ; ^%ZIS ICR 10086
+10 ; ^%ZISC ICR 10089
+11 ; ^%ZTLOAD ICR 10063
+12 ; ^DIR ICR 10026
+13 ;
SHOW ; Show user defaults
+1 WRITE @IOF
+2 NEW LEXMODE,LEXUSER,LEXSERV
SELUSR ; Select user/user group
+1 KILL LEXD,LEXMODE
+2 WRITE !!,"Show User Defaults for"
+3 WRITE !!," 1: All users with defaults"
+4 WRITE !," 2: A Single User"
+5 WRITE !," 3: Users in a Service",!
BYUSR ; Get response to user/user group
+1 KILL ZTSAVE
SET LEXMODE=$$USR
IF LEXMODE[U
GOTO SHOWQ
+2 IF LEXMODE=1
Begin DoDot:1
+3 SET ZTRTN="ALL^LEXDD1"
DO DEV
DO HOME^%ZIS
End DoDot:1
GOTO SELUSR
+4 IF LEXMODE=2
Begin DoDot:1
+5 WRITE !
SET LEXDUZ=$$USER^LEXDM4
SET LEXDUZ=+LEXDUZ
+6 IF +LEXDUZ'<1
Begin DoDot:2
+7 SET ZTRTN="ONE^LEXDD1"
+8 SET ZTSAVE("LEXDUZ")=""
+9 DO DEV
DO HOME^%ZIS
End DoDot:2
End DoDot:1
IF +($GET(LEXDUZ))'<1
GOTO SELUSR
+10 IF LEXMODE=3
Begin DoDot:1
+11 WRITE !
SET LEXSERV=$$SERV^LEXDM4
+12 IF +LEXSERV>0
Begin DoDot:2
+13 SET ZTRTN="SERV^LEXDD1"
+14 SET ZTSAVE("LEXSERV")=""
+15 DO DEV
DO HOME^%ZIS
End DoDot:2
End DoDot:1
GOTO SELUSR
+16 GOTO SHOWQ
+17 QUIT
DEV ; Request a device
+1 NEW LEXCNT,LEXLC,LEXC
SET (LEXCNT,LEXLC)=0
SET LEXC=""
+2 SET (ZTSAVE("LEXC"),ZTSAVE("LEXCNT"),ZTSAVE("LEXLC"))=""
+3 NEW %ZIS,IOP
SET %ZIS="PQ"
DO ^%ZIS
IF POP
QUIT
IF $DATA(IO("Q"))
DO QUE
QUIT
NOQUE ; Local display
+1 WRITE @IOF
DO @ZTRTN
DO ^%ZISC
KILL ZTSAVE
QUIT
QUE ; Queue task to a selected device
+1 NEW %,ZTDESC,ZTDTH,ZTIO,ZTSK
IF '$DATA(ZTRTN)
QUIT
KILL IO("Q")
+2 SET ZTDESC="Lexicon Defaults"
SET ZTIO=ION
SET ZTDTH=$HOROLOG
+3 DO ^%ZTLOAD
+4 WRITE !,$SELECT($DATA(ZTSK):"Request Queued",1:"Request Cancelled"),!
+5 KILL ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
DO ^%ZISC
+6 QUIT
ALL ; Display for all users
+1 NEW LEXUSR,LEXDUZ,LEXITLE
+2 SET LEXUSR=""
+3 SET LEXITLE="Lexicon User Defaults (all users with defaults)"
+4 WRITE !,LEXITLE
IF IOST["P-"
WRITE !!
SET LEXLC=$SELECT(IOST["P-":LEXLC+3,1:LEXLC+1)
+5 FOR
SET LEXUSR=$ORDER(^LEXT(757.2,"AUD",LEXUSR))
IF LEXUSR=""
QUIT
Begin DoDot:1
+6 NEW LEXDUZ
SET LEXDUZ=0
+7 FOR
SET LEXDUZ=$ORDER(^LEXT(757.2,"AUD",LEXUSR,LEXDUZ))
IF +LEXDUZ=0
QUIT
Begin DoDot:2
+8 IF +LEXDUZ'<1
Begin DoDot:3
+9 SET LEXOK=$$DEF
IF LEXOK
DO BUILD^LEXDD2
SET LEXCNT=LEXCNT+1
End DoDot:3
End DoDot:2
End DoDot:1
+10 IF +LEXCNT=0
Begin DoDot:1
+11 WRITE !!,"No users found with defaults set."
End DoDot:1
+12 DO ^%ZISC
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+13 QUIT
ONE ; Display for one user
+1 IF +($GET(LEXDUZ))<1
QUIT
NEW LEXITLE,LEXOK,LEXNM
+2 SET LEXITLE="Lexicon User Defaults (Single User)"
+3 WRITE !,LEXITLE
IF IOST["P-"
WRITE !!
SET LEXLC=$SELECT(IOST["P-":LEXLC+3,1:LEXLC+1)
+4 SET LEXNM=$$GET1^DIQ(200,+($GET(LEXDUZ)),.01)
+5 IF LEXDUZ'<1
IF $LENGTH(LEXNM)
Begin DoDot:1
+6 SET LEXOK=$$DEF
IF LEXOK
DO BUILD^LEXDD2
SET LEXCNT=LEXCNT+1
+7 IF 'LEXOK
Begin DoDot:2
+8 IF LEXNM'=""
Begin DoDot:3
+9 NEW LEXNAME
SET LEXNAME=LEXNM
+10 SET LEXNAME=$$FL^LEXDD4(LEXNAME)
+11 WRITE !,LEXNAME," has no defaults set",!
End DoDot:3
+12 IF LEXNM=""
Begin DoDot:3
+13 WRITE !,"User has no defaults set",!
End DoDot:3
End DoDot:2
End DoDot:1
+14 IF LEXDUZ'<1
IF '$LENGTH(LEXNM)
Begin DoDot:1
+15 WRITE !,"User not found",!
End DoDot:1
+16 DO ^%ZISC
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+17 QUIT
SERV ; Display for users in a Service
+1 IF '$DATA(LEXSERV)
QUIT
NEW LEXITLE,LEXNM,LEXSV
+2 SET LEXSERV=+LEXSERV
+3 SET LEXITLE="Lexicon User Defaults in a Single Service ("_$PIECE(^DIC(49,LEXSERV,0),U,1)_")"
+4 WRITE !,LEXITLE
IF IOST["P-"
WRITE !!
SET LEXLC=$SELECT(IOST["P-":LEXLC+3,1:LEXLC+1)
+5 SET LEXUSR=""
+6 FOR
SET LEXUSR=$ORDER(^LEXT(757.2,"AUD",LEXUSR))
IF LEXUSR=""
QUIT
Begin DoDot:1
+7 NEW LEXDUZ
SET LEXDUZ=0
+8 FOR
SET LEXDUZ=$ORDER(^LEXT(757.2,"AUD",LEXUSR,LEXDUZ))
IF +LEXDUZ=0
QUIT
Begin DoDot:2
+9 IF +LEXDUZ'<1
Begin DoDot:3
+10 NEW LEXUSV
SET LEXUSV=$$GET1^DIQ(200,+($GET(LEXDUZ)),29,"I")
+11 IF LEXUSV=LEXSERV
Begin DoDot:4
+12 SET LEXOK=$$DEF
IF LEXOK
DO BUILD^LEXDD2
SET LEXCNT=LEXCNT+1
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+13 IF +LEXCNT=0
Begin DoDot:1
+14 WRITE !!,"No users found with defaults set in the ",$PIECE(^DIC(49,LEXSERV,0),U,1)," service."
End DoDot:1
+15 DO ^%ZISC
IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+16 QUIT
SHOWQ ; Quit SHOW
+1 IF IOST["P-"
DO ^%ZISC
+2 KILL ZTSAVE,ZTRTN,ZTDESC,ZTDTH,ZTIO,ZTQUEUED,ZTREQ,ZTSK,X,Y
+3 KILL DIR,DIC,DIC("S"),%,%ZIS,POP,IOP
+4 KILL LEX,LEXA,LEXAP,LEXAPID,LEXC,LEXCNT,LEXCTR,LEXCTX,LEXD
+5 KILL LEXDATA,LEXDICS,LEXDUZ,LEXFIL,LEXFN,LEXI,LEXIEN,LEXITL
+6 KILL LEXITLE,LEXT,LEXLC,LEXLN,LEXMODE,LEXNAME,LEXOK,LEXSERV
+7 KILL LEXSHOW,LEXSPC,LEXSTLN,LEXSTR,LEXSUB,LEXUSER,LEXUSR
+8 QUIT
DEF(X) ; Based on DUZ determines if there are defaults defined
+1 SET X=0
IF +($GET(LEXDUZ))=0
QUIT X
NEW LEXAPID,LEXIEN
SET LEXAPID=0
+2 ; Defaults by Application
+3 FOR
SET LEXAPID=$ORDER(^LEXT(757.2,"ADEF",LEXAPID))
IF +LEXAPID=0!(X)
QUIT
Begin DoDot:1
+4 SET LEXIEN=0
FOR
SET LEXIEN=$ORDER(^LEXT(757.2,"ADEF",LEXAPID,LEXIEN))
IF +LEXIEN=0!(X)
QUIT
Begin DoDot:2
+5 IF $LENGTH($GET(^LEXT(757.2,LEXIEN,200,LEXDUZ,1)))
SET X=1
IF X
QUIT
+6 IF $LENGTH($GET(^LEXT(757.2,LEXIEN,200,LEXDUZ,2)))
SET X=1
IF X
QUIT
+7 IF $LENGTH($GET(^LEXT(757.2,LEXIEN,200,LEXDUZ,3)))
SET X=1
IF X
QUIT
+8 IF $LENGTH($GET(^LEXT(757.2,LEXIEN,200,LEXDUZ,4)))
SET X=1
IF X
QUIT
End DoDot:2
IF X
QUIT
End DoDot:1
IF X
QUIT
+9 QUIT X
USR(X) ; Get response for user type/group
+1 NEW Y,DTOUT,DUOUT,DIRUT,DIROUT
+2 SET DIR("A")="Select (1-3): "
SET DIR("B")=2
+3 SET DIR("?")="Answer must be from 1 to 3"
+4 SET DIR(0)="NAO^1:3:0"
DO ^DIR
+5 SET X=$SELECT($DATA(DTOUT)!(X[U)!(X=""):U,1:X)
KILL DIR
QUIT X