1 | XQCHK2 ; OAK-BP/BDT - Internal APIs to check Keys for options; 5/20/08
|
---|
2 | ;;8.0;KERNEL;**427,503**;Jul 10, 1995;Build 2
|
---|
3 | ;;"Per VHA Directive 2004-038, this routine should not be modified".
|
---|
4 | Q
|
---|
5 | ;; These Internal Kernel APIs are using in the routine XQCHK
|
---|
6 | ;; to check Keys for options
|
---|
7 | ;;
|
---|
8 | CHCKL(XQCY0,XQDUZ) ;Entry point for checking all Locks for an option
|
---|
9 | ;; XQCY0 is $P(^XUTL("XQO",XQDIC,"^",%XQOP),"^",2,99)
|
---|
10 | ;; XQDUZ is IEN of user
|
---|
11 | ;; Return XQRT: Zero or 1^Key found that user needed for the option
|
---|
12 | S XQCY0=$G(XQCY0)
|
---|
13 | N XQI,XQY,XQX,XQRT,XQK S (XQRT,XQX)=0
|
---|
14 | ;check Key for the option; p457
|
---|
15 | S XQY=$P(XQCY0,"^"),XQX=$$GETIEN(XQY)
|
---|
16 | I +XQX S XQK=$$GET1^DIQ(19,XQX,3)
|
---|
17 | I $G(XQK)'="",'$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK Q XQRT
|
---|
18 | ;loop through higher menu options.
|
---|
19 | S XQY=$P(XQCY0,"^",5)
|
---|
20 | F XQI=1:1 S XQX=$P(XQY,",",XQI) Q:'XQX D
|
---|
21 | . I +XQX S XQK=$$GET1^DIQ(19,XQX,3) I XQK'="",'$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK Q
|
---|
22 | Q XQRT
|
---|
23 | ;
|
---|
24 | CHCKRL(XQCY0,XQDUZ) ;Entry point for checking all Reversed Locks for an option
|
---|
25 | ;; XQCY0 is $P(^XUTL("XQO",XQDIC,"^",%XQOP),"^",2,99)
|
---|
26 | ;; XQDUZ is IEN of user
|
---|
27 | ;; Return XQRT: Zero or 1^Reversed Key found that user has
|
---|
28 | S XQCY0=$G(XQCY0)
|
---|
29 | N XQI,XQY,XQX,XQRT,XQK S (XQRT,XQX)=0
|
---|
30 | ;check Reversed Key for the option; p457
|
---|
31 | S XQY=$P(XQCY0,"^"),XQX=$$GETIEN(XQY)
|
---|
32 | I +XQX S XQK=$$GET1^DIQ(19,XQX,3.01)
|
---|
33 | I $G(XQK)'="",$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK Q XQRT
|
---|
34 | ;loop through higher menu options.
|
---|
35 | S XQY=$P(XQCY0,"^",5)
|
---|
36 | F XQI=1:1 S XQX=$P(XQY,",",XQI) Q:'XQX D
|
---|
37 | . I +XQX S XQK=$$GET1^DIQ(19,XQX,3.01) I XQK'="",$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK Q
|
---|
38 | Q XQRT
|
---|
39 | ;
|
---|
40 | GETIEN(XQNAME) ;get IEN for an option; 457
|
---|
41 | ;; XQNAME is name of an option
|
---|
42 | ;; Retrun XQIEN: Null or IEN if existed
|
---|
43 | N XQIEN S XQIEN=""
|
---|
44 | I $G(XQNAME)="" Q XQIEN
|
---|
45 | I '$D(^DIC(19,"B",XQNAME)) Q XQIEN
|
---|
46 | S XQIEN=$O(^DIC(19,"B",XQNAME,XQIEN))
|
---|
47 | Q XQIEN
|
---|
48 | ;
|
---|
49 | CHKTOPL(XQIEN,XQDUZ) ;Check Lock for the top level of the secondary options
|
---|
50 | ;this need to be called to check the top level first when check the
|
---|
51 | ;Locks for lower menu option because the 6th piece of ^XUTL does not
|
---|
52 | ;contain the IEN of the top menu option.
|
---|
53 | N XQRT,XQK S XQRT=0
|
---|
54 | I XQIEN'=+$G(XQIEN) Q XQRT
|
---|
55 | S XQK=$$GET1^DIQ(19,XQIEN,3)
|
---|
56 | I $G(XQK)'="",'$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK
|
---|
57 | Q XQRT
|
---|
58 | ;
|
---|
59 | CHKTOPRL(XQIEN,XQDUZ) ;Check Reversed Lock the top level of the secondary options
|
---|
60 | ;this need to be called to check the top level first when check the
|
---|
61 | ;Reversed Locks for lower menu option because the 6th piece of ^XUTL does not
|
---|
62 | ;contain the IEN of the top menu option.
|
---|
63 | N XQRT,XQK S XQRT=0
|
---|
64 | I XQIEN'=+$G(XQIEN) Q XQRT
|
---|
65 | S XQK=$$GET1^DIQ(19,XQIEN,3.01)
|
---|
66 | I $G(XQK)'="",$D(^XUSEC(XQK,XQDUZ)) S XQRT=1_"^"_XQK
|
---|
67 | Q XQRT
|
---|