[613] | 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
|
---|