| 1 | TMGRPC1A ;TMG/kst-RPC Functions ;2/11/10, 6/19/10
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;2/11/10
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;"TMG RPC FUNCTIONS
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;"Copyright Kevin Toppenberg MD
 | 
|---|
| 7 |  ;"Released under GNU General Public License (GPL)
 | 
|---|
| 8 |  ;"
 | 
|---|
| 9 |  ;"=======================================================================
 | 
|---|
| 10 |  ;" RPC -- Public Functions.
 | 
|---|
| 11 |  ;"=======================================================================
 | 
|---|
| 12 |  ;"SETINIVL(RESULT,SECTION,KEY,VALUE) ;Entry point for TMG INIFILE SET
 | 
|---|
| 13 |  ;"GETINIVL(RESULT,SECTION,KEY,DEFAULT) ;Entry point for TMG INIFILE GET
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;"=======================================================================
 | 
|---|
| 16 |  ;"PRIVATE API FUNCTIONS
 | 
|---|
| 17 |  ;"=======================================================================
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;"=======================================================================
 | 
|---|
| 20 |  ;"=======================================================================
 | 
|---|
| 21 |  ;"Dependencies:
 | 
|---|
| 22 |  ;" DIC, TMGDEBUG
 | 
|---|
| 23 |  ;"=======================================================================
 | 
|---|
| 24 |  ;"=======================================================================
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | SETINIVL(RESULT,SECTION,KEY,VALUE) ;
 | 
|---|
| 27 |         ;"SCOPE: Public
 | 
|---|
| 28 |         ;"RPC that calls this: TMG INIFILE SET
 | 
|---|
| 29 |         ;"Purpose: To provide an entry point for a RPC call from a client.  The client
 | 
|---|
| 30 |         ;"         will use this instead of TIniFile object in Delphi.
 | 
|---|
| 31 |         ;"         Note: Since all data are of type string in Mumps, this will work only with strings.
 | 
|---|
| 32 |         ;"               and type casting will have to take place in client.
 | 
|---|
| 33 |         ;"Input: RESULT  -- an OUT PARAMETER.  See output below.
 | 
|---|
| 34 |         ;"       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
 | 
|---|
| 35 |         ;"       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
 | 
|---|
| 36 |         ;"       VALUE   -- String of Value to set
 | 
|---|
| 37 |         ;"Note: Because this is a shared resource, it is expected that the client will use
 | 
|---|
| 38 |         ;"      User.Name as the Section value.
 | 
|---|
| 39 |         ;"      Also, any prior value will be overwritten.
 | 
|---|
| 40 |         ;"Output: Will return RESULT="1^Success", or -1^Error Message"
 | 
|---|
| 41 |         SET RESULT="1^Success"
 | 
|---|
| 42 |         IF $GET(SECTION)="" SET RESULT="-1^No value passed for SECTION" QUIT
 | 
|---|
| 43 |         IF $GET(KEY)="" SET RESULT="-1^No value passed for KEY" QUIT
 | 
|---|
| 44 |         SET VALUE=$GET(VALUE)
 | 
|---|
| 45 |         NEW X,Y,DIC,IEN,IEN2
 | 
|---|
| 46 |         SET DIC=22710,DIC(0)="LM" ;"Find SECTION if previously added.
 | 
|---|
| 47 |         SET X=SECTION
 | 
|---|
| 48 |         DO ^DIC SET IEN=+Y
 | 
|---|
| 49 |         IF IEN'>0 DO  ;"For some reason LAYGO doesn't work when called by RPC
 | 
|---|
| 50 |         . NEW TMGFDA,TMGIEN,TMGMSG
 | 
|---|
| 51 |         . SET TMGFDA(22710,"+1,",.01)=SECTION
 | 
|---|
| 52 |         . DO UPDATE^DIE("E","TMGFDA","TMGIEN","TMGMSG")
 | 
|---|
| 53 |         . IF $DATA(TMGMSG("DIERR")) DO  QUIT
 | 
|---|
| 54 |         . . SET RESULT="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
 | 
|---|
| 55 |         . SET IEN=+$GET(TMGIEN(1))
 | 
|---|
| 56 |         IF +RESULT=-1 GOTO SIDN
 | 
|---|
| 57 |         IF IEN'>0 SET RESULT="-1^Error establishing SECTION: ["_SECTION_"]" QUIT
 | 
|---|
| 58 |         SET DA(1)=IEN,DIC(0)="LM",DIC="^TMG(22710,"_IEN_",1,"
 | 
|---|
| 59 |         SET X=KEY
 | 
|---|
| 60 |         DO ^DIC SET IEN2=+Y
 | 
|---|
| 61 |         IF IEN2'>0 DO  ;"For some reason LAYGO sometimes doesn't work when called by RPC
 | 
|---|
| 62 |         . NEW TMGFDA,TMGIEN,TMGMSG
 | 
|---|
| 63 |         . SET TMGFDA(22710.01,"+1,"_IEN_",",.01)=KEY
 | 
|---|
| 64 |         . DO UPDATE^DIE("E","TMGFDA","TMGIEN","TMGMSG")
 | 
|---|
| 65 |         . IF $DATA(TMGMSG("DIERR")) DO  QUIT
 | 
|---|
| 66 |         . . SET RESULT="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
 | 
|---|
| 67 |         . SET IEN2=+$GET(TMGIEN(1))
 | 
|---|
| 68 |         IF +RESULT=-1 GOTO SIDN
 | 
|---|
| 69 |         IF IEN2'>0 SET RESULT="-1^Error establishing KEY: ["_KEY_"]" QUIT
 | 
|---|
| 70 |         NEW TMGFDA,TMGMSG
 | 
|---|
| 71 |         IF VALUE="" SET VALUE="@"
 | 
|---|
| 72 |         SET TMGFDA(22710.01,IEN2_","_IEN_",",1)=VALUE
 | 
|---|
| 73 |         DO FILE^DIE("E","TMGFDA","TMGMSG")
 | 
|---|
| 74 |         IF $DATA(TMGMSG("DIERR")) DO  GOTO SIDN
 | 
|---|
| 75 |         . SET RESULT="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
 | 
|---|
| 76 | SIDN    QUIT
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | GETINIVL(RESULT,SECTION,KEY,DEFAULT) ;
 | 
|---|
| 80 |         ;"SCOPE: Public
 | 
|---|
| 81 |         ;"RPC that calls this: TMG INIFILE GET
 | 
|---|
| 82 |         ;"Purpose: To provide an entry point for a RPC call from a client.  The client
 | 
|---|
| 83 |         ;"         will use this instead of TIniFile object in Delphi.
 | 
|---|
| 84 |         ;"         Note: Since all data are of type string in Mumps, this will work only with strings.
 | 
|---|
| 85 |         ;"               and type casting will have to take place in client.
 | 
|---|
| 86 |         ;"Input: RESULT  -- an OUT PARAMETER.  See output below.
 | 
|---|
| 87 |         ;"       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
 | 
|---|
| 88 |         ;"       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
 | 
|---|
| 89 |         ;"       DEFAULT -- The value to be returned, if no value found.
 | 
|---|
| 90 |         ;"Note: Because this is a shared resource, it is expected that the client will use
 | 
|---|
| 91 |         ;"      User.Name as the Section value.
 | 
|---|
| 92 |         ;"      Also, any prior value will be overwritten.
 | 
|---|
| 93 |         ;"Output: Will return RESULT="1^<Value>", or -1^Error Message"
 | 
|---|
| 94 |         IF $GET(SECTION)="" SET RESULT="-1^No value passed for SECTION" QUIT
 | 
|---|
| 95 |         IF $GET(KEY)="" SET RESULT="-1^No value passed for KEY" QUIT
 | 
|---|
| 96 |         SET DEFAULT=$GET(DEFAULT)
 | 
|---|
| 97 |         NEW X,Y,DIC,IEN,IEN2
 | 
|---|
| 98 |         SET DIC=22710,X=SECTION
 | 
|---|
| 99 |         DO ^DIC SET IEN=+Y
 | 
|---|
| 100 |         IF IEN'>0 SET RESULT="1^"_DEFAULT QUIT
 | 
|---|
| 101 |         SET DA(1)=IEN,DIC="^TMG(22710,"_IEN_",1,"
 | 
|---|
| 102 |         SET X=KEY
 | 
|---|
| 103 |         DO ^DIC SET IEN2=+Y
 | 
|---|
| 104 |         IF IEN2'>0 SET RESULT="1^"_DEFAULT QUIT
 | 
|---|
| 105 |         NEW VALUE SET VALUE=$GET(^TMG(22710,IEN,1,IEN2,1),DEFAULT)
 | 
|---|
| 106 |         IF VALUE'=DEFAULT SET VALUE=$PIECE(VALUE,"^",1)
 | 
|---|
| 107 |         SET RESULT="1^"_VALUE
 | 
|---|
| 108 |         QUIT
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | CONVERT
 | 
|---|
| 112 |         ;"Purpose: A temp function to convert between the old storage method and the new.
 | 
|---|
| 113 |         ;"Data was stored in: ^TMG("INIDATA",Section,Key,Vaue)
 | 
|---|
| 114 |         NEW SECTION,KEY,VALUE
 | 
|---|
| 115 |         SET SECTION=""
 | 
|---|
| 116 |         FOR  SET SECTION=$ORDER(^TMG("INIDATA",SECTION)) QUIT:(SECTION="")  DO
 | 
|---|
| 117 |         . SET KEY=""
 | 
|---|
| 118 |         . FOR  SET KEY=$ORDER(^TMG("INIDATA",SECTION,KEY)) QUIT:(KEY="")  DO
 | 
|---|
| 119 |         . . SET VALUE=$GET(^TMG("INIDATA",SECTION,KEY))
 | 
|---|
| 120 |         . . NEW RESULT
 | 
|---|
| 121 |         . . DO SETINIVL(.RESULT,SECTION,KEY,VALUE) ;
 | 
|---|
| 122 |         . . IF +RESULT>0 KILL ^TMG("INIDATA",SECTION,KEY) QUIT
 | 
|---|
| 123 |         . . WRITE "Error trying to store SECTION=",SECTION,"; KEY=",KEY,"; VALUE=",VALUE,!
 | 
|---|
| 124 |         . . WRITE " -- ",$PIECE(RESULT,"^",2),!
 | 
|---|
| 125 |         QUIT
 | 
|---|
| 126 | ;
 | 
|---|
| 127 | ;
 | 
|---|
| 128 | INSTALL ;
 | 
|---|
| 129 |         ;"Purpose: to add the RPC's to the OPTION record OR CPRS GUI CHART
 | 
|---|
| 130 |         NEW DIC,X,Y,DA
 | 
|---|
| 131 |         SET DIC="^DIC(19,",DIC(0)="M"
 | 
|---|
| 132 |         SET X="OR CPRS GUI CHART"
 | 
|---|
| 133 |         DO ^DIC
 | 
|---|
| 134 |         IF +Y'>0 DO  QUIT
 | 
|---|
| 135 |         . WRITE "ERROR.  Unable to find [OR CPRS GUI CHART] in file OPTION (#19)",!
 | 
|---|
| 136 |         . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
 | 
|---|
| 137 |         . WRITE !
 | 
|---|
| 138 |         SET DA(1)=+Y
 | 
|---|
| 139 |         SET DIC=DIC_DA(1)_",""RPC"","
 | 
|---|
| 140 |         SET DIC(0)="ML" ;"LAYGO --> add entry if not found
 | 
|---|
| 141 |         SET X="TMG INIFILE GET"
 | 
|---|
| 142 |         DO ^DIC
 | 
|---|
| 143 |         IF +Y'>0 DO
 | 
|---|
| 144 |         . WRITE "ERROR.  Unable to add or find TMG INIFILE GET for subfile RPC in record",!
 | 
|---|
| 145 |         . WRITE "OR CPRS GUI CHART in file OPTION (#19)",!
 | 
|---|
| 146 |         . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
 | 
|---|
| 147 |         . WRITE !
 | 
|---|
| 148 |         SET X="TMG INIFILE SET"
 | 
|---|
| 149 |         DO ^DIC
 | 
|---|
| 150 |         IF +Y'>0 DO
 | 
|---|
| 151 |         . WRITE "ERROR.  Unable to add or find TMG INIFILE SET for subfile RPC in record",!
 | 
|---|
| 152 |         . WRITE "OR CPRS GUI CHART in file OPTION (#19)",!
 | 
|---|
| 153 |         . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
 | 
|---|
| 154 |         . WRITE !
 | 
|---|
| 155 |         QUIT
 | 
|---|
| 156 |  ; | 
|---|