1 | RORUTL11 ;HCIOFO/SG - ACCESS AND SECURITY UTILITIES ; 7/21/03 10:28am
|
---|
2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;***** REBUILDS THE "ACL" CROSS-REFERENCE (USER ACCESS)
|
---|
7 | ;
|
---|
8 | ; Return Values:
|
---|
9 | ; <0 Error code
|
---|
10 | ; 0 Ok
|
---|
11 | ;
|
---|
12 | RNDXACL() ;
|
---|
13 | N DA,DIK,REGIEN,ROOT
|
---|
14 | S ROOT=$$ROOT^DILFD(798.1,,1) K @ROOT@("ACL")
|
---|
15 | S REGIEN=0
|
---|
16 | F S REGIEN=$O(@ROOT@(REGIEN)) Q:'REGIEN D
|
---|
17 | . S DIK=$$ROOT^DILFD(798.118,","_REGIEN_","),DIK(1)=".01^ACL"
|
---|
18 | . S DA(1)=REGIEN D ENALL^DIK
|
---|
19 | Q 0
|
---|
20 | ;
|
---|
21 | ;***** CHECKS IF THE RPC CAN BE CALLED BY THE CURRENT USER
|
---|
22 | ;
|
---|
23 | ; RPCNAME Name of the RPC
|
---|
24 | ;
|
---|
25 | ; [REGIEN] Registry IEN
|
---|
26 | ;
|
---|
27 | ; [FLAGS] Flags that control the execution (can be combined):
|
---|
28 | ; A Administrator Only
|
---|
29 | ; I IRM Only
|
---|
30 | ;
|
---|
31 | ; Return Values:
|
---|
32 | ; <0 Error code
|
---|
33 | ; 0 Ok
|
---|
34 | ; >0 Access denied
|
---|
35 | ;
|
---|
36 | RPCHECK(RPCNAME,REGIEN,FLAGS) ;
|
---|
37 | N ACCESS,KEY,RC
|
---|
38 | Q:$G(DUZ)'>0 $$ERROR^RORERR(-40,,,,"DUZ")
|
---|
39 | S FLAGS=$G(FLAGS),REGIEN=+$G(REGIEN)
|
---|
40 | ;---
|
---|
41 | S (ACCESS,RC)=0
|
---|
42 | D Q:ACCESS 0
|
---|
43 | . I REGIEN Q:$D(^ROR(798.1,"ACL",DUZ,REGIEN))<10
|
---|
44 | . E Q:$D(^ROR(798.1,"ACL",DUZ))<10
|
---|
45 | . I FLAGS["I" Q:'$D(^XUSEC("ROR VA IRM",DUZ))
|
---|
46 | . I FLAGS["A" S RC=1,KEY="" D Q:RC
|
---|
47 | . . F S KEY=$O(^ROR(798.1,"ACL",DUZ,REGIEN,KEY)) Q:KEY="" D Q:'RC
|
---|
48 | . . . I KEY?1"ROR"1.E S:KEY["ADMIN" RC=0
|
---|
49 | . S ACCESS=1
|
---|
50 | ;---
|
---|
51 | D ACVIOLTN^RORLOG(X,$G(REGIEN),RPCNAME)
|
---|
52 | Q 1
|
---|