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