[895] | 1 | TMGRPC1D ;TMG/kst-RPC Functions ;07/21/10
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;07/21/10
|
---|
| 3 |
|
---|
| 4 | ;"TMG RPC FUNCTIONS especially related to imaging.
|
---|
| 5 |
|
---|
| 6 | ;"Kevin Toppenberg MD
|
---|
| 7 | ;"GNU General Public License (GPL) applies
|
---|
| 8 | ;"7/21/10
|
---|
| 9 |
|
---|
| 10 | ;"=======================================================================
|
---|
| 11 | ;" RPC -- Public Functions.
|
---|
| 12 | ;"=======================================================================
|
---|
| 13 | ;"CONFIG -- Set up imaging site parameters, so that TMG-CPRS works.
|
---|
| 14 | ;"TESTCFG -- Test configuration
|
---|
| 15 | ;"=======================================================================
|
---|
| 16 | ;"PRIVATE API FUNCTIONS
|
---|
| 17 | ;"=======================================================================
|
---|
| 18 | ;"PINST1 - entry point for POST-INSTALL routine for patch TMG-CPRS-IMAGING*1.0*1
|
---|
| 19 | ;
|
---|
| 20 | ;"=======================================================================
|
---|
| 21 | ;"Dependancies: TMGKERNL,TMGUSRIF
|
---|
| 22 | ;"=======================================================================
|
---|
| 23 | ;
|
---|
| 24 | CONFIG ;
|
---|
| 25 | ;"Purpose: Set up imaging site parameters, so that TMG-CPRS works.
|
---|
| 26 | ;"Input: None
|
---|
| 27 | ;"Results: none
|
---|
| 28 | ;
|
---|
| 29 | WRITE " ------------------------------------------",!
|
---|
| 30 | WRITE " - Configuration of TMG Imaging -",!
|
---|
| 31 | WRITE " ------------------------------------------",!,!
|
---|
| 32 | ;
|
---|
| 33 | ;"First get default INSTITUTION, stored in KERNEL SYSTEM PARAMETERS file.
|
---|
| 34 | NEW %,DA,DR,DIE,DIC,X,Y,DIK
|
---|
| 35 | NEW TMGFDA,TMGMSG,TMGDIV,TMGDROP,TMGSTORE,TMGNODIV
|
---|
| 36 | NEW INSTPTR,IMGSPPTR
|
---|
| 37 | CF1 SET INSTPTR=+$PIECE($GET(^XTV(8989.3,1,"XUS")),"^",17) ;"Ptr to file $4 (Institution)
|
---|
| 38 | IF INSTPTR>0 DO GOTO CF2
|
---|
| 39 | . WRITE "Using DEFAULT INSTITUTION: ",$$GET1^DIQ(4,INSTPTR,.01),!
|
---|
| 40 | WRITE "No value for DEFAULT INSTITUTION found in field 217 in file KERNEL SYSTEM PARAMETERS",!
|
---|
| 41 | WRITE "Edit settings now to correct this"
|
---|
| 42 | SET %=1 DO YN^DICN WRITE !
|
---|
| 43 | IF %'=1 GOTO CFDN
|
---|
| 44 | SET DA=1,DR="[XUSITEPARM]",DIE=8989.3
|
---|
| 45 | DO XUDIE^XUS5 ;"Launch screenman form to edit KERNEL SYSTEM PARAMETERS.
|
---|
| 46 | GOTO CF1
|
---|
| 47 | ;
|
---|
| 48 | CF2 ;"Now get IMAGING SITE PARAMETERS for Institution Name
|
---|
| 49 | SET IMGSPPTR=+$ORDER(^MAG(2006.1,"B",INSTPTR,0))
|
---|
| 50 | IF IMGSPPTR>0 DO GOTO CF3
|
---|
| 51 | . WRITE "Using IMAGING SITE PARAMETERS IEN #",IMGSPPTR,", "
|
---|
| 52 | . WRITE $$GET1^DIQ(2006.1,IMGSPPTR,.01),!
|
---|
| 53 | WRITE "Next, a entry in IMAGING SITE PARAMENTERS file must be linked in.",!
|
---|
| 54 | WRITE "Please select entry to use, or add a new one if needed.",!
|
---|
| 55 | DO PRESSTOCONT^TMGUSRIF
|
---|
| 56 | SET DIC=2006.1,DIC(0)="MAEQL"
|
---|
| 57 | DO ^DIC WRITE !
|
---|
| 58 | IF Y>-1 SET IMGSPPTR=+Y GOTO CF2B
|
---|
| 59 | WRITE "Valid entry in IMAGING SITE PARAMETERS file not selected.",!
|
---|
| 60 | SET %=1
|
---|
| 61 | WRITE "Start over" DO YN^DICN WRITE !
|
---|
| 62 | IF %=1 GOTO CF1
|
---|
| 63 | GOTO ABORT
|
---|
| 64 | CF2B KILL TMGFDA,TMGMSG
|
---|
| 65 | SET TMGFDA(2006.1,IMGSPPTR_",",.01)=INSTPTR
|
---|
| 66 | DO FILE^DIE("K","TMGFDA","TMGMSG")
|
---|
| 67 | IF $DATA(TMGMSG("DIERR")) DO GOTO ABORT
|
---|
| 68 | . DO ShowDIERR^TMGDEBUG(.TMGMSG)
|
---|
| 69 | GOTO CF2 ;"loop back just be sure the B index is setup.
|
---|
| 70 | ;
|
---|
| 71 | CF3 ;"Now get NETWORK LOCATION stored in IMAGING SITE PARAMETERS record
|
---|
| 72 | NEW LOCPTR SET LOCPTR=+$PIECE($GET(^MAG(2006.1,IMGSPPTR,0)),"^",3)
|
---|
| 73 | IF LOCPTR>0 DO GOTO CF4
|
---|
| 74 | . WRITE "Using NETWORK LOCATION IEN #",LOCPTR,", "
|
---|
| 75 | . WRITE $$GET1^DIQ(2005.2,LOCPTR,.01),!
|
---|
| 76 | WRITE "Next, a entry in NETWORK LOCATION file must be linked in.",!
|
---|
| 77 | WRITE "Please select entry to use, or add a new one if needed.",!
|
---|
| 78 | DO PRESSTOCONT^TMGUSRIF
|
---|
| 79 | SET DIC=2005.1,DIC(0)="MAEQL"
|
---|
| 80 | IF Y>-1 SET LOCPTR=+Y GOTO CF4
|
---|
| 81 | WRITE "Valid entry in NETWORK LOCATION file not selected.",!
|
---|
| 82 | SET %=1
|
---|
| 83 | WRITE "Start over" DO YN^DICN WRITE !
|
---|
| 84 | IF %=1 GOTO CF1
|
---|
| 85 | GOTO ABORT
|
---|
| 86 | ;
|
---|
| 87 | CF4 ;"Now set up NETWORK LOCATION file.
|
---|
| 88 | WRITE !,"A NODE DIVIDER is the symbol used to separt folders in a path",!
|
---|
| 89 | WRITE "E.g. for UNIX, with a sample path of '/opt/var/me', uses '/'",!
|
---|
| 90 | WRITE "For Windows, with sample path of 'c:\temp\me', uses '\'",!
|
---|
| 91 | SET %=1,TMGNODIV=0
|
---|
| 92 | SET TMGDIV=$$GET1^DIQ(2005.2,LOCPTR,22701)
|
---|
| 93 | IF TMGDIV'="" DO
|
---|
| 94 | . WRITE "Current Node divider= '",TMGDIV,"'"
|
---|
| 95 | . SET %=2
|
---|
| 96 | . IF TMGDIV="/" WRITE " (UNIX filesystem)",!
|
---|
| 97 | . ELSE IF TMGDIV="\" WRITE " (WINDOWS filesystem)",!
|
---|
| 98 | . ELSE WRITE " (?? filesystem)",! SET %=1
|
---|
| 99 | WRITE "Do you want to specify a NODE DIVIDER" DO YN^DICN WRITE !
|
---|
| 100 | IF %=-1 GOTO ABORT
|
---|
| 101 | IF %=2 SET TMGNODIV=1 GOTO CF4A
|
---|
| 102 | ;
|
---|
| 103 | WRITE "Is the server running on a Linux/Unix box" DO YN^DICN WRITE !
|
---|
| 104 | IF %=-1 GOTO ABORT
|
---|
| 105 | IF %=1 SET TMGDIV="/"
|
---|
| 106 | ELSE SET TMGDIV="\"
|
---|
| 107 | ;
|
---|
| 108 | CF4A WRITE !,"A DROPBOX is a file folder where the server may place files for",!
|
---|
| 109 | WRITE "pick up by a client (i.e. CPRS). This folder could be on a ",!
|
---|
| 110 | WRITE "separate file system (e.g. a windows file system mounted into",!
|
---|
| 111 | WRITE "the server file system.) This is a security measure that negates",!
|
---|
| 112 | WRITE "a need for the client to have read access to the entire images",!
|
---|
| 113 | WRITE "folder. A dropbox path is only required if client is configured",!
|
---|
| 114 | WRITE "to use it.",!
|
---|
| 115 | SET %=1
|
---|
| 116 | SET TMGDROP=$$GET1^DIQ(2005.2,LOCPTR,22702)
|
---|
| 117 | IF TMGDROP'="" DO
|
---|
| 118 | . WRITE "Current DROPBOX: ",TMGDROP,!,!
|
---|
| 119 | . SET %=2
|
---|
| 120 | WRITE "Do you want to specify a DROPBOX FOLDER" DO YN^DICN WRITE !
|
---|
| 121 | IF %=-1 GOTO ABORT
|
---|
| 122 | IF %=2 SET TMGDROP="" GOTO CF4C
|
---|
| 123 | ;
|
---|
| 124 | CF4B WRITE "Enter full path of the DROPBOX is it would be accessed on the ",!
|
---|
| 125 | WRITE "server (**NOT the path that the client would use**)",!
|
---|
| 126 | READ "Enter full DROPBOX path (^ to abort): ",TMGDROP:DTIME,!
|
---|
| 127 | IF TMGDROP="^" GOTO ABORT
|
---|
| 128 | IF TMGDROP="" WRITE ! GOTO CF4A
|
---|
| 129 | IF $$IsDir^TMGKERNL(TMGDROP,TMGDIV)=1 GOTO CF4B
|
---|
| 130 | WRITE "ERROR: Path specified is not valid. Does folder exist?",!,!
|
---|
| 131 | GOTO CF4B
|
---|
| 132 | ;
|
---|
| 133 | CF4C WRITE !,"A STORE PATH is the file folder that the server will use to",!
|
---|
| 134 | WRITE "store images. This should be a complete and valid path.",!
|
---|
| 135 | SET %=1
|
---|
| 136 | SET TMGSTORE=$$GET1^DIQ(2005.2,LOCPTR,22700)
|
---|
| 137 | IF TMGSTORE'="" DO
|
---|
| 138 | . WRITE "Current image file storage path: ",TMGSTORE,!
|
---|
| 139 | . SET %=2
|
---|
| 140 | WRITE "Do you want to specify a STORE FOLDER" DO YN^DICN WRITE !
|
---|
| 141 | IF %=-1 GOTO ABORT
|
---|
| 142 | IF %=2 SET TMGSTORE="" GOTO CF4D
|
---|
| 143 | ;
|
---|
| 144 | READ "Enter store path (^ to abort): ",TMGSTORE:DTIME,!
|
---|
| 145 | IF TMGDROP="^" GOTO ABORT
|
---|
| 146 | IF TMGSTORE="" WRITE ! GOTO CF4C
|
---|
| 147 | IF $$IsDir^TMGKERNL(TMGSTORE,TMGDIV)=1 GOTO CF4D
|
---|
| 148 | WRITE "ERROR: Path specified is not valid. Does folder exist?",!,!
|
---|
| 149 | GOTO CF4C
|
---|
| 150 | ;
|
---|
| 151 | CF4D ;"Next force field 1 (PHYSICAL REFERENCE) to be same as TMGDIV
|
---|
| 152 | IF $PIECE($GET(^MAG(2005.2,LOCPTR,0)),"^",2)=TMGDIV GOTO CF4E
|
---|
| 153 | SET DIK="^MAG(2005.2,"
|
---|
| 154 | SET DA=LOCPTR
|
---|
| 155 | DO ^DIK ;"Kill prior entry. Leaves DIK and DA unchanged
|
---|
| 156 | ;"Note: Input transform doesn't allow the value I put in here.
|
---|
| 157 | SET $PIECE(^MAG(2005.2,LOCPTR,0),"^",2)=TMGDIV ;"NOTE!! Low-level write
|
---|
| 158 | SET DIK(1)=1 ;"Field 1 = PHYSICAL REFERENCE
|
---|
| 159 | DO EN^DIK ;"Reindex field, to populate crossrefences with new value.
|
---|
| 160 | ;
|
---|
| 161 | CF4E KILL TMGFDA,TMGMSG
|
---|
| 162 | IF TMGSTORE'="" SET TMGFDA(2005.2,LOCPTR_",",22700)=TMGSTORE
|
---|
| 163 | IF TMGNODIV=0 SET TMGFDA(2005.2,LOCPTR_",",22701)=TMGDIV
|
---|
| 164 | IF TMGDROP'="" SET TMGFDA(2005.2,LOCPTR_",",22702)=TMGDROP
|
---|
| 165 | IF $DATA(TMGFDA) DO FILE^DIE("K","TMGFDA","TMGMSG")
|
---|
| 166 | IF $DATA(TMGMSG("DIERR")) DO GOTO ABORT
|
---|
| 167 | . DO ShowDIERR^TMGDEBUG(.TMGMSG)
|
---|
| 168 | WRITE !,"Done with configuration.",!,!
|
---|
| 169 | DO TESTCFG
|
---|
| 170 | GOTO CFDN
|
---|
| 171 | ;
|
---|
| 172 | ABORT WRITE "Aborting configuration process.",!
|
---|
| 173 | WRITE "Try again later, using 'DO CONFIG^TMGRPC1D'",!
|
---|
| 174 | CFDN QUIT
|
---|
| 175 | ;
|
---|
| 176 | ;
|
---|
| 177 | TESTCFG ;
|
---|
| 178 | ;"Purpose: Test configuration
|
---|
| 179 | NEW LOCPTR SET LOCPTR=$$GETDEFNL^TMGRPC1C()
|
---|
| 180 | IF LOCPTR'>0 DO QUIT
|
---|
| 181 | . WRITE "ERROR: Can't find NETWORK LOCATION to use",!
|
---|
| 182 | WRITE "Storage path: ",$$GETLOCFPATH^TMGRPC1C("/"),!
|
---|
| 183 | NEW DROPPATH
|
---|
| 184 | IF $$GETDROPPATH^TMGRPC1C(LOCPTR,.DROPPATH)=-1 DO QUIT
|
---|
| 185 | . WRITE "ERROR: Unable to get Dropbox path",!
|
---|
| 186 | WRITE "Dropbox path: ",DROPPATH,!
|
---|
| 187 | QUIT
|
---|
| 188 | ;
|
---|
| 189 | PINST1 ;
|
---|
| 190 | ;"Purpose: This is an entry point for POST-INSTALL routine for patch
|
---|
| 191 | ;" TMG-CPRS-IMAGING*1.0*1
|
---|
| 192 | DO ENSUREAL^TMGRPC1B
|
---|
| 193 | DO CONFIG
|
---|
| 194 | QUIT
|
---|
| 195 | ;
|
---|