| 1 | RORRP023 ;HCIOFO/SG - RPC: REGISTRY COORDINATORS ; 7/16/03 11:25am
 | 
|---|
| 2 |  ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine uses the following IAs:
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; #10060        Read access (FileMan) to the file #200 (supported)
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;***** RETURNS THE LIST OF REGISTRY COORDINATORS
 | 
|---|
| 11 |  ; RPC: [ROR LIST COORDINATORS]
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ; .RESULTS      Reference to a local variable where the results
 | 
|---|
| 14 |  ;               are returned to.
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ; REGIEN        Registry IEN
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ; The ^TMP("DILIST",$J) global node is used by the procedure.
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ; Return Values:
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ; A negative value of the first "^"-piece of the RESULTS(0)
 | 
|---|
| 23 |  ; indicates an error (see the RPCSTK^RORERR procedure for more
 | 
|---|
| 24 |  ; details).
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ; Otherwise, number of coordinators is returned in the
 | 
|---|
| 27 |  ; @RESULTS@(0) and the subsequent nodes of the global array
 | 
|---|
| 28 |  ; contain the coordinators.
 | 
|---|
| 29 |  ; 
 | 
|---|
| 30 |  ; @RESULTS@(0)          Number of Coordinators
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ; @RESULTS@(i)          Coordinator's Descriptor
 | 
|---|
| 33 |  ;                         ^01: IEN
 | 
|---|
| 34 |  ;                         ^02: Name
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | RCLIST(RESULTS,REGIEN) ;
 | 
|---|
| 37 |  N IENS,RC,RORERRDL,RORMSG,TMP
 | 
|---|
| 38 |  D CLEAR^RORERR("RCLIST^RORRP023",1)
 | 
|---|
| 39 |  K RESULTS  S RESULTS=$NA(^TMP("DILIST",$J))  K @RESULTS
 | 
|---|
| 40 |  ;--- Check the parameters
 | 
|---|
| 41 |  S RC=0  D  I RC<0  D RPCSTK^RORERR(.RESULTS,RC)  Q
 | 
|---|
| 42 |  . ;--- Registry IEN
 | 
|---|
| 43 |  . I $G(REGIEN)'>0  D  Q
 | 
|---|
| 44 |  . . S RC=$$ERROR^RORERR(-88,,,,"REGIEN",$G(REGIEN))
 | 
|---|
| 45 |  . S REGIEN=+REGIEN
 | 
|---|
| 46 |  ;--- Get the list of coordinators
 | 
|---|
| 47 |  S IENS=","_REGIEN_",",TMP="@;.01E"
 | 
|---|
| 48 |  D LIST^DIC(798.114,IENS,TMP,"PU",,,,"B",,,,"RORMSG")
 | 
|---|
| 49 |  I $G(DIERR)  D  D RPCSTK^RORERR(.RESULTS,RC)  Q
 | 
|---|
| 50 |  . S RC=$$DBS^RORERR("RORMSG",-9,,,798.114,IENS)
 | 
|---|
| 51 |  ;--- Success
 | 
|---|
| 52 |  S TMP=+$G(^TMP("DILIST",$J,0))
 | 
|---|
| 53 |  K ^TMP("DILIST",$J,0)  S @RESULTS@(0)=TMP
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ;***** UPDATES THE LIST OF REGISTRY COORDINATORS
 | 
|---|
| 57 |  ; RPC: [ROR UPDATE COORDINATORS]
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ; .RESULTS      Reference to a local variable where the results
 | 
|---|
| 60 |  ;               are returned to.
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; REGIEN        Registry IEN
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ; .RCLST(       Reference to a local variable that contains
 | 
|---|
| 65 |  ;               a list of registry coordinators
 | 
|---|
| 66 |  ;   i)            User IEN (DUZ)
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; Return Values:
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ; A negative value of the first "^"-piece of the RESULTS(0)
 | 
|---|
| 71 |  ; indicates an error (see the RPCSTK^RORERR procedure for more
 | 
|---|
| 72 |  ; details).
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ; Otherwise, zero is returned in the RESULTS(0).
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | RCLUPD(RESULTS,REGIEN,RCLST) ;
 | 
|---|
| 77 |  N DA,DIK,ECNT,IEN,IENS,RC,RCL,ROOT,RORERRDL,RORFDA,RORIEN,RORMSG,TMP
 | 
|---|
| 78 |  D CLEAR^RORERR("RCLUPD^RORRP023",1)  K RESULTS
 | 
|---|
| 79 |  ;--- Check the parameters
 | 
|---|
| 80 |  S RC=0  D  I RC<0  D RPCSTK^RORERR(.RESULTS,RC)  Q
 | 
|---|
| 81 |  . ;--- Registry IEN
 | 
|---|
| 82 |  . I $G(REGIEN)'>0  D  Q
 | 
|---|
| 83 |  . . S RC=$$ERROR^RORERR(-88,,,,"REGIEN",$G(REGIEN))
 | 
|---|
| 84 |  . S REGIEN=+REGIEN
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ;--- Lock the COORDINATOR multiple
 | 
|---|
| 87 |  S IENS=","_REGIEN_","
 | 
|---|
| 88 |  S RC=$$LOCK^RORLOCK(798.114,IENS)
 | 
|---|
| 89 |  I RC  D:RC>0  D RPCSTK^RORERR(.RESULTS,RC)  Q
 | 
|---|
| 90 |  . S RC=$$ERROR^RORERR(-11,,,,"the COORDINATOR multiple")
 | 
|---|
| 91 |  ;---
 | 
|---|
| 92 |  S ROOT=$$ROOT^DILFD(798.114,IENS,1)
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ;--- Create a list of coordinators' IENs
 | 
|---|
| 95 |  S TMP=""
 | 
|---|
| 96 |  F  S TMP=$O(RCLST(TMP))  Q:TMP=""  D
 | 
|---|
| 97 |  . S IEN=+RCLST(TMP)
 | 
|---|
| 98 |  . S:$$FIND1^DIC(200,,,"`"_IEN,,,"RORMSG")>0 RCL(IEN)=""
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ;--- Delete the coordinators
 | 
|---|
| 101 |  S DIK=$$OREF^DILF(ROOT),DA(1)=REGIEN,DA=0
 | 
|---|
| 102 |  F  S DA=$O(@ROOT@(DA))  Q:DA'>0  D:'$D(RCL(DA)) ^DIK
 | 
|---|
| 103 |  ;--- Update the coordinators
 | 
|---|
| 104 |  S (ECNT,IEN)=0,IENS="?+1,"_REGIEN_","
 | 
|---|
| 105 |  F  S IEN=$O(RCL(IEN))  Q:IEN'>0  D
 | 
|---|
| 106 |  . S RORFDA(798.114,IENS,.01)=IEN
 | 
|---|
| 107 |  . S RORIEN(1)=IEN
 | 
|---|
| 108 |  . D UPDATE^DIE(,"RORFDA","RORIEN","RORMSG")
 | 
|---|
| 109 |  . I $G(DIERR)  D  S ECNT=ECNT+1  Q
 | 
|---|
| 110 |  . . S RC=$$DBS^RORERR("RORMSG",-9,,,798.114,IENS)
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  ;--- Unlock the multiple and check for errors
 | 
|---|
| 113 |  D UNLOCK^RORLOCK(798.114,","_REGIEN_",")
 | 
|---|
| 114 |  I ECNT>0  D RPCSTK^RORERR(.RESULTS,-9)  Q
 | 
|---|
| 115 |  ;--- Success
 | 
|---|
| 116 |  S RESULTS(0)=0
 | 
|---|
| 117 |  Q
 | 
|---|