| 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
 | 
|---|