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