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