1 | TMGSIPH4 ;TMG/kst/SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCES ;11/27/09
|
---|
2 | ;;1.0;TMG-LIB;**1**;11/27/09
|
---|
3 | ;
|
---|
4 | ;"TMG SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCE
|
---|
5 | ;"Especially functions for pulling 1 record, and all records pointing to it, from server
|
---|
6 | ;"Kevin Toppenberg MD
|
---|
7 | ;"GNU General Public License (GPL) applies
|
---|
8 | ;"11/27/09
|
---|
9 | ;
|
---|
10 | ;"=======================================================================
|
---|
11 | ;" API -- Public Functions.
|
---|
12 | ;"=======================================================================
|
---|
13 | ;"SRVRDIC(JNUM,REPLY) --get a file and value to lookup on server
|
---|
14 | ;"SRVFDIC(JNUM,FILENUM,REPLY) -- get value to lookup on server, in specified file.
|
---|
15 | ;"GETNEWFL(JNUM) -- get a novel file DD from the server (one not already present on client)
|
---|
16 | ;"GETPTIN(JNUM,FILENUM,IEN) -- as server for all pointers IN to a given record.
|
---|
17 | ;"ASKREC(JNUM,FILENUM,INOUT) --Query user for patient name, and add to ToDo list
|
---|
18 | ;"TRANSPT(JNUM) -- allow user to completely transfer 1 patient
|
---|
19 | ;"TRANSREC(JNUM) -- allow user to completely transfer 1 RECORD
|
---|
20 | ;"GETMSSNG(JNUM,FILENUM,OUTARRAY) ;Return a list of records on server, for given file, that have not been downloaded to client
|
---|
21 | ;"CHKSPUPD(JNUM) --check a pre-determined set of files for records on server that are not on client
|
---|
22 | ;"CHKUPDTE(JNUM) -- check files for records on server that are not on client.
|
---|
23 | ;"CHK1FUPD(JNUM,FILENUM,ALLRECS,TALLY) -- check 1 file for records on server that are not on client.
|
---|
24 | ;"=======================================================================
|
---|
25 | ;"Dependancies
|
---|
26 | ;"=======================================================================
|
---|
27 | ;"TMGKERN2
|
---|
28 | ;"=======================================================================
|
---|
29 | ;
|
---|
30 | SRVRDIC(JNUM,REPLY)
|
---|
31 | ;"Purpose: to get a file and value to lookup on server
|
---|
32 | ;"Input: JNUM -- The job number of the background client process
|
---|
33 | ;" REPLY -- PASS BY REFERANCE. An OUT PARAMETER.
|
---|
34 | ;"Output: REPLY is filled with reply from server (if any). Format:
|
---|
35 | ;" REPLY("FILE")=FileNumber that search was from.
|
---|
36 | ;" REPLY(1)= <first line of server reply> <-- could be 'Thinking' type messages...
|
---|
37 | ;" ...
|
---|
38 | ;" REPLY(n)= <Last line of server reply> <-- probably the line to look at if only 1 expected
|
---|
39 | ;"Result: none
|
---|
40 | NEW FILE,DIC,X,Y,VALUE
|
---|
41 | SET DIC=1,DIC(0)="MAEQ"
|
---|
42 | SET DIC("A")="Enter FILE on server to search in: "
|
---|
43 | DO ^DIC WRITE !
|
---|
44 | IF +Y'>0 SET Y=$$GETNEWFL(JNUM)
|
---|
45 | IF +Y'>0 QUIT
|
---|
46 | DO SRVFDIC(JNUM,+Y,.REPLY)
|
---|
47 | QUIT
|
---|
48 | ;
|
---|
49 | ;
|
---|
50 | SRVFDIC(JNUM,FILENUM,REPLY)
|
---|
51 | ;"Purpose: to get value to lookup on server, in specified file.
|
---|
52 | ;"Input: JNUM -- The job number of the background client process
|
---|
53 | ;" FILENUM -- The fileman file to search in.
|
---|
54 | ;" REPLY -- PASS BY REFERANCE. An OUT PARAMETER.
|
---|
55 | ;"Output: REPLY is filled with reply from server (if any). Format:
|
---|
56 | ;" REPLY("FILE")=FileNumber that search was from.
|
---|
57 | ;" REPLY(1)= <first line of server reply> <-- could be 'Thinking' type messages...
|
---|
58 | ;" ...
|
---|
59 | ;" REPLY(n)= <Last line of server reply> <-- probably the line to look at if only 1 expected
|
---|
60 | ;"Result: none
|
---|
61 | NEW FILE,DIC,X,Y,VALUE
|
---|
62 | NEW FILENAME SET FILENAME=$$FILENAME^TMGFMUT2(FILENUM)
|
---|
63 | ;"SET FILENAME=$PIECE($GET(^DIC(FILENUM,0)),"^",1)
|
---|
64 | WRITE "Enter value in ",FILENAME," to search on server for: "
|
---|
65 | READ VALUE:$GET(DTIME,3600) WRITE !
|
---|
66 | IF VALUE["^" QUIT
|
---|
67 | NEW QUERY,ERROR
|
---|
68 | KILL REPLY
|
---|
69 | SET QUERY="DO DIC|"_FILENUM_"^"_VALUE
|
---|
70 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
|
---|
71 | IF $DATA(ERROR) DO QUIT
|
---|
72 | . WRITE ERROR,!
|
---|
73 | SET REPLY("FILE")=FILENUM
|
---|
74 | QUIT
|
---|
75 | ;
|
---|
76 | ;
|
---|
77 | GETNEWFL(JNUM) ;
|
---|
78 | ;"Purpose: To get a novel file DD from the server (one not already present on client)
|
---|
79 | ;"Input: JNUM -- The job number of the background client process
|
---|
80 | ;"Output: Data dictionary for novel file my be downloaded and put into local database.
|
---|
81 | ;"Result: Returns file number, or -1 if error or abort.
|
---|
82 | NEW FILENAME,FILENUM,RESULT,I
|
---|
83 | SET RESULT=-1 ;"Default to failure
|
---|
84 | WRITE "Enter name of file to search on server for: "
|
---|
85 | READ FILENAME:$GET(DTIME,3600) WRITE !
|
---|
86 | IF (FILENAME["^")!(FILENAME="") GOTO GNFLDN
|
---|
87 | NEW QUERY,ERROR,REPLY
|
---|
88 | SET QUERY="DO DIC|1^"_FILENAME
|
---|
89 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
|
---|
90 | IF $DATA(ERROR) DO GOTO GNFLDN
|
---|
91 | . WRITE ERROR,!
|
---|
92 | . DO PRESSTOCONT^TMGUSRIF
|
---|
93 | IF $DATA(REPLY)=0 GOTO GNFLDN
|
---|
94 | SET REPLY("FILE")=1
|
---|
95 | SET I="" FOR SET I=$ORDER(REPLY(I),-1) QUIT:(I="")!(+I=I)
|
---|
96 | SET FILENUM=$GET(REPLY(I))
|
---|
97 | IF +FILENUM'>0 GOTO GNFLDN
|
---|
98 | SET QUERY="GET|^DIC("_+FILENUM_")"
|
---|
99 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
|
---|
100 | IF $DATA(ERROR) DO GOTO GNFLDN
|
---|
101 | . WRITE ERROR,!
|
---|
102 | . DO PRESSTOCONT^TMGUSRIF
|
---|
103 | DO STOREDATA^TMGSIPHU(.REPLY)
|
---|
104 | ;"---- Get and fix file header ----
|
---|
105 | SET REF=$GET(^DIC(+FILENUM,0,"GL"))
|
---|
106 | IF REF="" DO GOTO GNFLDN
|
---|
107 | . WRITE "UNABLE TO GET GLOBAL REFERENCE IN ^DIC(",FILENUM,",0,""GL"")",!
|
---|
108 | . DO PRESSTOCONT^TMGUSRIF
|
---|
109 | SET REF=REF
|
---|
110 | SET QUERY="GET|"_REF_"0)"
|
---|
111 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
|
---|
112 | IF $DATA(ERROR) DO GOTO GNFLDN
|
---|
113 | . WRITE ERROR,!
|
---|
114 | . DO PRESSTOCONT^TMGUSRIF
|
---|
115 | DO STOREDATA^TMGSIPHU(.REPLY)
|
---|
116 | SET $PIECE(@(REF_"0)"),"^",3)=$ORDER(@(REF_"""@"")"),-1) ;"most recently added rec #
|
---|
117 | SET $PIECE(@(REF_"0)"),"^",4)=$ORDER(@(REF_"""@"")"),-1) ;"supposed to be total num of recs
|
---|
118 | SET RESULT=$$DDOK^TMGSIPH1(JNUM,FILENUM) ;
|
---|
119 | GNFLDN QUIT RESULT
|
---|
120 | ;
|
---|
121 | ;
|
---|
122 | GETPTIN(JNUM,FILENUM,IEN)
|
---|
123 | ;"Purpose: as server for all pointers IN to a given record.
|
---|
124 | ;"Input: JNUM -- The job number of the background client process
|
---|
125 | ;" FILENUM -- The fileman file to consider
|
---|
126 | ;" IEN -- The record number in file. Server-side IEN
|
---|
127 | ;"Output: Data us stored in: SET ^TMG("TMGSIPH","NEEDED RECORDS","PTIN",OFILE,NEWIEN)=""
|
---|
128 | ;"Results: none.
|
---|
129 | NEW QUERY,ERROR,REPLY
|
---|
130 | SET QUERY="GET PTRS IN|"_FILENUM_"^"_IEN
|
---|
131 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
|
---|
132 | ;"REPLY -- PASS BY REFERENCE, an OUT PARAMETER. Format:
|
---|
133 | ;" REPLY(1)=FROMFILE^FROMIENS^FROMFLD
|
---|
134 | ;" REPLY(2)=FROMFILE^FROMIENS^FROMFLD etc.
|
---|
135 | IF $DATA(ERROR) DO QUIT
|
---|
136 | . WRITE ERROR,!
|
---|
137 | NEW LINE,NEWIEN
|
---|
138 | FOR LINE=1:1 QUIT:($DATA(REPLY(LINE))=0) DO
|
---|
139 | . SET NEWIEN=$PIECE(REPLY(LINE),"^",2)
|
---|
140 | . NEW OFILE SET OFILE=+REPLY(LINE)
|
---|
141 | . ;"IF NEWIEN["," QUIT ;"pointers IN from subfiles will be gotten with parent records
|
---|
142 | . IF NEWIEN["," DO
|
---|
143 | . . NEW PFILE SET PFILE=OFILE
|
---|
144 | . . FOR SET PFILE=+$GET(^DD(PFILE,0,"UP")) QUIT:PFILE=0 DO
|
---|
145 | . . . SET OFILE=OFILE_"{"_PFILE
|
---|
146 | . SET ^TMG("TMGSIPH","NEEDED RECORDS","PTIN",OFILE,NEWIEN)=""
|
---|
147 | QUIT
|
---|
148 | ;
|
---|
149 | ;
|
---|
150 | ASKREC(JNUM,FILENUM,INOUT) ;
|
---|
151 | ;"Purpose: Query user for patient name, and add to ToDo list
|
---|
152 | ;"Input: JNUM -- The job number of the background client process
|
---|
153 | ;" FILENUM -- OPTIONAL. The fileman file. If not provided, user will be asked for it.
|
---|
154 | ;" INOUT -- OPTIONAL -- Default is "PTOUT". Should be "PTIN" or "PTOUT"
|
---|
155 | ;" ... NOTE: don't use 'PTOUT' ... causes problem because of difference in node numbers...
|
---|
156 | ;"Result: none
|
---|
157 | ;"Records that are needed are stored in ^TMG("TMGSIPH","NEEDED RECORDS","PTIN",FILENUM,IEN)=""
|
---|
158 | SET INOUT=$GET(INOUT) IF INOUT'="PTIN" SET INOUT="PTOUT"
|
---|
159 | NEW ARRAY,IEN,VALUE,I,REPLY
|
---|
160 | SET FILENUM=+$GET(FILENUM)
|
---|
161 | IF FILENUM>0 DO
|
---|
162 | . DO SRVFDIC(JNUM,FILENUM,.ARRAY)
|
---|
163 | ELSE DO
|
---|
164 | . DO SRVRDIC(JNUM,.ARRAY)
|
---|
165 | . SET FILENUM=+$GET(ARRAY("FILE"))
|
---|
166 | IF $DATA(ARRAY)=0 GOTO PRDN
|
---|
167 | SET I="" FOR SET I=$ORDER(ARRAY(I),-1) QUIT:(I="")!(+I=I)
|
---|
168 | SET VALUE=$GET(ARRAY(I))
|
---|
169 | IF +VALUE'>0 GOTO PRDN
|
---|
170 | IF INOUT="PTIN" DO
|
---|
171 | . SET ^TMG("TMGSIPH","NEEDED RECORDS","PTIN",FILENUM,+VALUE)=""
|
---|
172 | ELSE DO ;".... don't use
|
---|
173 | . ;"^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM,RemotePointer,ReferToNodeToBeCorrected,Piece#OfNode)=""
|
---|
174 | . ;"SET ^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM,+VALUE)=""
|
---|
175 | WRITE $PIECE(VALUE,"^",2),!
|
---|
176 | PRDN QUIT
|
---|
177 | ;
|
---|
178 | ;
|
---|
179 | TRANSPT(JNUM)
|
---|
180 | ;"Purpose: to allow user to completely transfer 1 patient
|
---|
181 | ;"Input: JNUM -- The job number of the background client process
|
---|
182 | ;"Output: Records are downloaded and put into local database.
|
---|
183 | ;"Result: none
|
---|
184 | DO ASKREC(JNUM,2) ;"2 = PATIENT file.
|
---|
185 | NEW TMGABORT SET TMGABORT=0
|
---|
186 | NEW HASTASKS SET HASTASKS=1
|
---|
187 | FOR QUIT:(HASTASKS=0)!(TMGABORT) DO
|
---|
188 | . IF $$HANDLNEEDED^TMGSIPH3(JNUM,"PTIN",1)=-1 SET TMGABORT=1 QUIT
|
---|
189 | . IF $$HANDLNEEDED^TMGSIPH3(JNUM,"PTOUT",1)=-1 SET TMGABORT=1 QUIT
|
---|
190 | . IF $DATA(^TMG("TMGSIPH","NEEDED RECORDS","PTIN"))>0 QUIT
|
---|
191 | . IF $DATA(^TMG("TMGSIPH","NEEDED RECORDS","PTOUT"))>0 QUIT
|
---|
192 | . SET HASTASKS=0 QUIT
|
---|
193 | QUIT
|
---|
194 | ;
|
---|
195 | ;
|
---|
196 | TRANSREC(JNUM) ;
|
---|
197 | ;"Purpose: to allow user to completely transfer 1 RECORD
|
---|
198 | ;"Input: JNUM -- The job number of the background client process
|
---|
199 | ;"Output: Records are downloaded and put into local database.
|
---|
200 | ;"Result: none
|
---|
201 | NEW DIC,X,Y
|
---|
202 | NEW ARRAY,IEN,VALUE,I,REPLY,TALLY
|
---|
203 | SET DIC=1,DIC(0)="MAEQN"
|
---|
204 | DO ^DIC WRITE !
|
---|
205 | IF +Y'>0 SET Y=$$GETNEWFL(JNUM)
|
---|
206 | IF +Y'>0 GOTO TRDN
|
---|
207 | SET FILENUM=+Y
|
---|
208 | DO SRVFDIC(JNUM,FILENUM,.ARRAY)
|
---|
209 | IF $DATA(ARRAY)=0 GOTO TRDN
|
---|
210 | SET I="" FOR SET I=$ORDER(ARRAY(I),-1) QUIT:(I="")!(+I=I)
|
---|
211 | SET VALUE=$GET(ARRAY(I))
|
---|
212 | NEW IEN SET IEN=+VALUE
|
---|
213 | IF IEN'>0 GOTO TRDN
|
---|
214 | WRITE $PIECE(VALUE,"^",2),!
|
---|
215 | IF $$GETANDFIXREC^TMGSIPH3(JNUM,FILENUM,IEN,"?",.TALLY,"PTOUT")
|
---|
216 | IF $DATA(TALLY) ZWR TALLY
|
---|
217 | DO PRESSTOCONT^TMGUSRIF
|
---|
218 | ;
|
---|
219 | TRDN QUIT
|
---|
220 | ;
|
---|
221 | ;
|
---|
222 | GETMSSNG(JNUM,FILENUM,OUTARRAY) ; GetMissingRecordIENs
|
---|
223 | ;"Purpose: Return a list of records on server, for given file, that have not been downloaded to client
|
---|
224 | ;"Input: JNUM -- The job number of the background client process
|
---|
225 | ;" FILENUM -- The Fileman file number.
|
---|
226 | ;" OUTARRAY -- PASS BY REFERENCE. Prior contents erased. Format:
|
---|
227 | ;" OUTARRAY(FILENUM,RPTR)=""
|
---|
228 | ;" OUTARRAY(FILENUM,RPTR)=""
|
---|
229 | ;"Results: none
|
---|
230 | KILL OUTARRAY
|
---|
231 | NEW CT SET CT=0
|
---|
232 | NEW QUERY,ERROR,REPLY,SVRHEADER
|
---|
233 | SET QUERY="GET IEN HDR|"_FILENUM
|
---|
234 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30) ;"Should get LastIEN^TotalNumIENS
|
---|
235 | IF $DATA(ERROR) WRITE ERROR,! GOTO GMDN
|
---|
236 | SET SVRHEADER=$GET(REPLY(1)) IF SVRHEADER="" DO GOTO GMDN
|
---|
237 | . WRITE "Error getting File headers from server.",!
|
---|
238 | NEW DONE SET DONE=0
|
---|
239 | IF $GET(^TMG("TMGSIPH","RECORDS SYNC",FILENUM))=SVRHEADER DO GOTO:DONE GMDN2
|
---|
240 | . WRITE "According to Fileman headers, there are no new records added to file "_FILENUM,!
|
---|
241 | . WRITE "since last check.",!
|
---|
242 | . NEW % SET %=2
|
---|
243 | . WRITE "Do complete and thorough check again anyway" DO YN^DICN WRITE !
|
---|
244 | . SET DONE=(%'=1)
|
---|
245 | NEW FILENAME SET FILENAME=$$FILENAME^TMGFMUT2(FILENUM)
|
---|
246 | WRITE !,"Getting a list of all records on server for file ",FILENAME," (#",FILENUM,")",!
|
---|
247 | SET QUERY="GET IEN LIST|"_FILENUM
|
---|
248 | DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30) ;"Should get list of all IEN's in record on server.
|
---|
249 | IF $DATA(ERROR) WRITE ERROR,! GOTO GMDN
|
---|
250 | SET ^TMG("TMGSIPH","RECORDS SYNC",FILENUM)=SVRHEADER
|
---|
251 | NEW STIME SET STIME=$H
|
---|
252 | NEW TMGCT SET TMGCT=0
|
---|
253 | NEW SHOWPROG SET SHOWPROG=0
|
---|
254 | NEW TMGMIN,TMGMAX
|
---|
255 | NEW TMGABORT SET TMGABORT=0
|
---|
256 | NEW TMGI SET TMGI=0
|
---|
257 | FOR SET TMGI=$ORDER(REPLY(TMGI)) QUIT:(+TMGI'>0)!TMGABORT DO
|
---|
258 | . NEW VALUE SET VALUE=$GET(REPLY(TMGI)) ;"Should be IEN^.01 Value (internal format)
|
---|
259 | . NEW RPTR SET RPTR=+VALUE
|
---|
260 | . IF +$GET(^TMG("TMGSIPH","PT XLAT",FILENUM,RPTR))'>0 DO
|
---|
261 | . . IF $DATA(^TMG("TMGSIPH",".01 VALUE",FILENUM,RPTR))=0 DO
|
---|
262 | . . . SET ^TMG("TMGSIPH",".01 VALUE",FILENUM,RPTR)=$PIECE(VALUE,"^",2)
|
---|
263 | . . SET OUTARRAY(FILENUM,RPTR)=""
|
---|
264 | . . SET CT=CT+1
|
---|
265 | . . KILL REPLY(TMGI)
|
---|
266 | . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
|
---|
267 | . SET TMGCT=TMGCT+1
|
---|
268 | . IF (SHOWPROG=0),($$HDIFF^XLFDT($H,STIME,2)>5) DO ;"Turn on progress bar after 15 seconds.
|
---|
269 | . . SET SHOWPROG=1
|
---|
270 | . . SET TMGMIN=1
|
---|
271 | . . SET TMGMAX=$ORDER(REPLY(""),-1)
|
---|
272 | . IF (SHOWPROG=1),(TMGCT>200) DO
|
---|
273 | . . DO ProgressBar^TMGUSRIF(TMGI,"Comparing server vs local records in File: "_FILENUM,TMGMIN,TMGMAX,70,STIME)
|
---|
274 | . . SET TMGCT=0
|
---|
275 | GMDN WRITE !
|
---|
276 | WRITE CT," records found to be downloaded.",!
|
---|
277 | GMDN2 QUIT
|
---|
278 | ;
|
---|
279 | ;
|
---|
280 | CHKSPUPD(JNUM) ;" CHECK SPECIAL FILES FOR UPDATE
|
---|
281 | ;"Purpose: To check a pre-determined set of files for records on server that are not on client.
|
---|
282 | ;"Input: JNUM -- The job number of the background client process
|
---|
283 | ;"Output: Records my be downloaded and put into local database.
|
---|
284 | ;"Result: none
|
---|
285 | NEW FILENUM,TALLY,TMGABORT
|
---|
286 | IF $DATA(^TMG("TMGSIPH","TRACKED FILES"))=0 DO
|
---|
287 | . SET ^TMG("TMGSIPH","TRACKED FILES",8925)=1
|
---|
288 | . SET ^TMG("TMGSIPH","TRACKED FILES",120.5)=1
|
---|
289 | . SET ^TMG("TMGSIPH","TRACKED FILES",2005)=1
|
---|
290 | . SET ^TMG("TMGSIPH","TRACKED FILES",22705.5)=1
|
---|
291 | SET TMGABORT=0
|
---|
292 | SET FILENUM=0
|
---|
293 | FOR SET FILENUM=$ORDER(^TMG("TMGSIPH","TRACKED FILES",FILENUM)) QUIT:(+FILENUM'>0)!TMGABORT DO
|
---|
294 | . IF $$CHK1FUPD(JNUM,FILENUM,1,.TALLY)=-1 SET TMGABORT=1
|
---|
295 | DO AUTONEEDED^TMGSIPH3(JNUM)
|
---|
296 | IF $DATA(TALLY) ZWR TALLY
|
---|
297 | DO PRESSTOCONT^TMGUSRIF
|
---|
298 | QUIT
|
---|
299 | ;
|
---|
300 | ;
|
---|
301 | CHKUPDTE(JNUM,ALLRECS) ; "CHECK FOR UPDATE
|
---|
302 | ;"Purpose: To check files for records on server that are not on client.
|
---|
303 | ;"Input: JNUM -- The job number of the background client process
|
---|
304 | ;" ALLRECS -- OPTIONAL. Default=0. If 1, then all records are automatically selected
|
---|
305 | ;"Output: Records my be downloaded and put into local database.
|
---|
306 | ;"Result: none
|
---|
307 | NEW DIC,X,Y
|
---|
308 | NEW ARRAY,IEN,TALLY,FILENUM
|
---|
309 | SET DIC=1,DIC(0)="MAEQN"
|
---|
310 | WRITE "Enter FILE on server in which to search for new records.",!
|
---|
311 | WRITE "(If file exists on server, but not on client, enter ^)",!
|
---|
312 | DO ^DIC WRITE !
|
---|
313 | IF +Y'>0 SET Y=$$GETNEWFL(JNUM)
|
---|
314 | IF +Y'>0 GOTO CHDN
|
---|
315 | SET FILENUM=+Y
|
---|
316 | IF $$CHK1FUPD(JNUM,FILENUM,.ALLRECS,.TALLY) ;
|
---|
317 | IF $DATA(TALLY) ZWR TALLY
|
---|
318 | DO PRESSTOCONT^TMGUSRIF
|
---|
319 | ;
|
---|
320 | CHDN QUIT
|
---|
321 | ;
|
---|
322 | CHK1FUPD(JNUM,FILENUM,ALLRECS,TALLY) ;" CHECK 1 FILE FOR UPDATE
|
---|
323 | ;"Purpose: To check 1 file for records on server that are not on client.
|
---|
324 | ;"Input: JNUM -- The job number of the background client process
|
---|
325 | ;" FILENUM -- the file number to check.
|
---|
326 | ;" ALLRECS -- OPTIONAL. Default=0. If 1, then all records are automatically selected
|
---|
327 | ;" TALLY -- PASS BY REFERENCE. An array to hold progress of downloaded files.
|
---|
328 | ;"Output: Records my be downloaded and put into local database.
|
---|
329 | ;"Result: 1 if OK, -1 if abort
|
---|
330 | NEW ARRAY,IEN
|
---|
331 | NEW RESULT SET RESULT=1
|
---|
332 | SET ALLRECS=+$GET(ALLRECS)
|
---|
333 | DO GETMSSNG(JNUM,FILENUM,.ARRAY)
|
---|
334 | IF ALLRECS'=1 DO PRESSTOCONT^TMGUSRIF
|
---|
335 | IF $DATA(ARRAY)=0 GOTO CH1DN
|
---|
336 | NEW SELARRAY,OPTIONS
|
---|
337 | IF ALLRECS'=1 DO
|
---|
338 | . SET OPTIONS("HEADER")="Select Server Records Missing Locally to Download <Esc><Esc> when done."
|
---|
339 | . DO SELNEEDED^TMGSIPH3(JNUM,.SELARRAY,"ARRAY",.OPTIONS)
|
---|
340 | ELSE DO
|
---|
341 | . MERGE SELARRAY=ARRAY
|
---|
342 | NEW STIME SET STIME=$H
|
---|
343 | NEW TMGCT SET TMGCT=0
|
---|
344 | NEW SHOWPROG SET SHOWPROG=0
|
---|
345 | NEW TMGMIN,TMGMAX
|
---|
346 | NEW TMGABORT SET TMGABORT=0
|
---|
347 | NEW RPTR SET RPTR=""
|
---|
348 | FOR SET RPTR=$ORDER(SELARRAY(FILENUM,RPTR)) QUIT:(+RPTR'>0)!TMGABORT DO
|
---|
349 | . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
|
---|
350 | . NEW TMP SET TMP=$$GETANDFIXREC^TMGSIPH3(JNUM,FILENUM,RPTR,"?",.TALLY)
|
---|
351 | . IF TMP=-1 DO HNDLGAFE^TMGSIPH3(FILENUM,IEN,.TMGABORT) QUIT
|
---|
352 | . SET TMGCT=TMGCT+1
|
---|
353 | . IF (SHOWPROG=0),($$HDIFF^XLFDT($H,STIME,2)>5) DO ;"Turn on progress bar after 5 seconds.
|
---|
354 | . . SET SHOWPROG=1
|
---|
355 | . . SET TMGMIN=$ORDER(SELARRAY(FILENUM,0))
|
---|
356 | . . SET TMGMAX=$ORDER(SELARRAY(FILENUM,""),-1)
|
---|
357 | . IF (SHOWPROG=1),(TMGCT>50) DO
|
---|
358 | . . DO ProgressBar^TMGUSRIF(RPTR,"Getting Records From File: "_FILENUM,TMGMIN,TMGMAX,70,STIME)
|
---|
359 | . . SET TMGCT=0
|
---|
360 | IF $DATA(TALLY) ZWR TALLY
|
---|
361 | ;
|
---|
362 | CH1DN IF TMGABORT SET RESULT=-1
|
---|
363 | QUIT RESULT
|
---|