| 1 | TMGSIPH5 ;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 |  ;"Utility functions for working with transfers on client
 | 
|---|
| 6 |  ;"Kevin Toppenberg MD
 | 
|---|
| 7 |  ;"GNU General Public License (GPL) applies
 | 
|---|
| 8 |  ;"11/27/09
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;"=======================================================================
 | 
|---|
| 11 |  ;" API -- Public Functions.
 | 
|---|
| 12 |  ;"=======================================================================
 | 
|---|
| 13 |  ;"EXAMNEED(JNUM,INOUT) -- User selects records, and then this displays who needs records.
 | 
|---|
| 14 |  ;"SHOWNEED(JNUM,GETARRAY) -- show selected records
 | 
|---|
| 15 |  ;"CHCK1NEED(FILENUM,RPTR,INOUT) --show who is needing one requested record
 | 
|---|
| 16 |  ;"GL2FILE(CREF,FNAME)  -- Return filenumber based on global reference.
 | 
|---|
| 17 |  ;"KILLNEED(JNUM,INOUT) --allow user to kill needed needed pointers.
 | 
|---|
| 18 |  ;"PREVIEW(JNUM,INOUT) --allow user view server record before downloading and installing
 | 
|---|
| 19 |  ;"DELREC -- Allow user to del record and remove record that it has been previously downloaded.
 | 
|---|
| 20 |  ;"DEL1REC(FILENUM,LPTR) -- allow deletion of given record and that it has been downloaded.
 | 
|---|
| 21 |  ;"
 | 
|---|
| 22 |  ;"=======================================================================
 | 
|---|
| 23 |  ;"Dependancies
 | 
|---|
| 24 |  ;"=======================================================================
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;"=======================================================================
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 | EXAMNEED(JNUM,INOUT) ;
 | 
|---|
| 29 |         ;"Purpose:User selects records, and then this displays who needs records.
 | 
|---|
| 30 |         ;"Input: JNUM -- The job number of the background client process
 | 
|---|
| 31 |         ;"       INOUT -- OPTIONAL -- Default is "PTOUT".  Should be "PTIN" or "PTOUT"
 | 
|---|
| 32 |         ;"Results: None
 | 
|---|
| 33 |         ;
 | 
|---|
| 34 |         NEW GETARRAY
 | 
|---|
| 35 |         SET INOUT=$GET(INOUT) IF INOUT'="PTIN" SET INOUT="PTOUT"
 | 
|---|
| 36 |         NEW OPTIONS
 | 
|---|
| 37 |         SET OPTIONS("HEADER")="Select File(s) to EXAMINE. Press <ESC><ESC> when Done."
 | 
|---|
| 38 |         DO ASKNEEDED^TMGSIPH3(JNUM,.GETARRAY,INOUT,.OPTIONS)
 | 
|---|
| 39 |         IF $DATA(GETARRAY)=0 GOTO WNDN
 | 
|---|
| 40 |         IF $$SHOWNEED(JNUM,.GETARRAY)  ;"Ignore aborts
 | 
|---|
| 41 | WNDN    QUIT
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | SHOWNEED(JNUM,GETARRAY)
 | 
|---|
| 45 |         ;"Purpose: To show selected records
 | 
|---|
| 46 |         ;"Input: JNUM
 | 
|---|
| 47 |         ;"       GETARRAY -- PASS BY REFERENCE.  Array as created by ASKNEEDED^TMGSIPH4
 | 
|---|
| 48 |         ;"           GETARRAY(FileNum,RecordNum)=""
 | 
|---|
| 49 |         ;"Results: 1 if OK, -1 if abort
 | 
|---|
| 50 |         NEW RESULT SET RESULT=1
 | 
|---|
| 51 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 52 |         NEW FILENUM SET FILENUM=0
 | 
|---|
| 53 |         NEW STIME SET STIME=$H
 | 
|---|
| 54 |         NEW TALLY
 | 
|---|
| 55 |         NEW TMGCT SET TMGCT=1
 | 
|---|
| 56 |         NEW SHOWPROG SET SHOWPROG=0
 | 
|---|
| 57 |         FOR  SET FILENUM=$ORDER(GETARRAY(FILENUM)) QUIT:(FILENUM="")!(TMGABORT=1)  DO
 | 
|---|
| 58 |         . QUIT:($$DDOK^TMGSIPH1(JNUM,FILENUM)'=1)
 | 
|---|
| 59 |         . QUIT:($$PREPXREF^TMGSIPH1(JNUM,FILENUM)'=1)
 | 
|---|
| 60 |         . NEW TMGMAX SET TMGMAX=-1
 | 
|---|
| 61 |         . NEW IEN SET IEN=""
 | 
|---|
| 62 |         . FOR  SET IEN=$ORDER(GETARRAY(FILENUM,IEN),-1) QUIT:(IEN="")!(TMGABORT=1)  DO
 | 
|---|
| 63 |         . . IF TMGMAX=-1 SET TMGMAX=IEN
 | 
|---|
| 64 |         . . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
 | 
|---|
| 65 |         . . SET TMGCT=TMGCT+1
 | 
|---|
| 66 |         . . IF $$CHCK1NEED(FILENUM,IEN,INOUT)=-1 DO  QUIT
 | 
|---|
| 67 |         . . . NEW % SET %=1
 | 
|---|
| 68 |         . . . WRITE "ABORT" DO YN^DICN WRITE !
 | 
|---|
| 69 |         . . . IF %'=2 SET TMGABORT=1
 | 
|---|
| 70 |         . . IF (SHOWPROG=0),(($PIECE($H,",",2)-$PIECE(STIME,",",2))>15) SET SHOWPROG=1
 | 
|---|
| 71 |         . . IF SHOWPROG,(TMGCT#10=0) DO
 | 
|---|
| 72 |         . . . WRITE #
 | 
|---|
| 73 |         . . . DO ProgressBar^TMGUSRIF(TMGCT,"Progress: "_TMGCT,0,TMGMAX,70,STIME)
 | 
|---|
| 74 |         . . . IF $DATA(TALLY) WRITE ! ZWR TALLY
 | 
|---|
| 75 |         DO PRESSTOCONT^TMGUSRIF
 | 
|---|
| 76 |         IF ($GET(TMGPTCABORT)=1)!(TMGABORT) SET RESULT=-1
 | 
|---|
| 77 |         QUIT RESULT
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | CHCK1NEED(FILENUM,RPTR,INOUT) ;
 | 
|---|
| 81 |         ;"Purpose: To show who is needing one requested record
 | 
|---|
| 82 |         ;"Input: FILENUM -- The file number to compare.
 | 
|---|
| 83 |         ;"       RPTR -- The IEN of the record that was wanted from the server.
 | 
|---|
| 84 |         ;"       INOUT -- OPTIONAL -- Default is "PTOUT".  Should be "PTIN" or "PTOUT"
 | 
|---|
| 85 |         ;"NOTE:  Gobal ^TMG("TMGSIPH","NEEDED RECORDS","PTOUT") used, with format as below:
 | 
|---|
| 86 |         ;"             ^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM,RemotePointer,RefToNodeToBeCorrected,INFO)=""
 | 
|---|
| 87 |         ;"                      INFO=DataPiece^PointedToFile^PointedToReference^IENDepth^[V]
 | 
|---|
| 88 |         ;"       As pointers are resolved, the entries will be KILLED from the above global
 | 
|---|
| 89 |         ;"
 | 
|---|
| 90 |         ;"Results: 1 for OK, -1 for abort
 | 
|---|
| 91 |         ;"
 | 
|---|
| 92 |         NEW RESULT SET RESULT=1
 | 
|---|
| 93 |         SET FILENUM=+$GET(FILENUM) QUIT:(FILENUM'>0)
 | 
|---|
| 94 |         NEW FNAME SET FNAME=$PIECE($GET(^DIC(FILENUM,0)),"^",1)
 | 
|---|
| 95 |         SET RPTR=+$GET(RPTR)
 | 
|---|
| 96 |         SET LPTR=+$GET(LPTR)
 | 
|---|
| 97 |         NEW REF SET REF=""
 | 
|---|
| 98 |         FOR  SET REF=$ORDER(^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM,RPTR,REF)) QUIT:(REF="")!(RESULT=-1)  DO
 | 
|---|
| 99 |         . NEW INFO SET INFO=""
 | 
|---|
| 100 |         . FOR  SET INFO=$ORDER(^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM,RPTR,REF,INFO)) QUIT:(INFO="")!(RESULT=-1)  DO
 | 
|---|
| 101 |         . . NEW PCE SET PCE=+INFO
 | 
|---|
| 102 |         . . NEW IENDEPTH SET IENDEPTH=$PIECE(INFO,"^",4)
 | 
|---|
| 103 |         . . NEW QNUM SET QNUM=$QLENGTH(REF)-(IENDEPTH*2)   ;"e.g. ^TIU(8925,IEN,0), or e.g. ^PS(52.11,IEN,2,IEN2,0),  ^PS(52.11,IEN,2,IEN2,0,IEN3,3)
 | 
|---|
| 104 |         . . NEW GL SET GL=$$QSUBS^TMGSIPHU(REF,QNUM)
 | 
|---|
| 105 |         . . NEW FRFNAME SET FRFNAME="??"
 | 
|---|
| 106 |         . . NEW PFROMFIL SET PFROMFIL=$$GL2FILE(GL,.FRFNAME)
 | 
|---|
| 107 |         . . NEW PFROMREC SET PFROMREC=$QSUBSCRIPT(REF,QNUM+1)
 | 
|---|
| 108 |         . . NEW LOC SET LOC=$QSUBSCRIPT(REF,$QLENGTH(REF))
 | 
|---|
| 109 |         . . NEW FLD SET FLD=$$GETFLD^TMGSIPHU(PFROMFIL,LOC,PCE)
 | 
|---|
| 110 |         . . WRITE !,"Needed Record: FILE ",FILENUM," [",FNAME,"]; #",RPTR," [",$$GET01FLD^TMGSIPH3(JNUM,FILENUM,RPTR),"] ",!
 | 
|---|
| 111 |         . . WRITE "Needed by: FILE: ",PFROMFIL," [",FRFNAME,"]; #",PFROMREC,"; FLD: ",+FLD," [",$PIECE(FLD,"^",2),"]",!
 | 
|---|
| 112 |         . . NEW TOSHOW,FLD SET FLD=0
 | 
|---|
| 113 |         . . FOR  SET FLD=$ORDER(^DD(PFROMFIL,FLD)) QUIT:(+FLD'>0)  DO
 | 
|---|
| 114 |         . . . NEW INFO SET INFO=$PIECE($GET(^DD(PFROMFIL,FLD,0)),"^",2)
 | 
|---|
| 115 |         . . . QUIT:(INFO'["P")
 | 
|---|
| 116 |         . . . NEW AFILE SET AFILE=+$PIECE(INFO,"P",2) QUIT:(AFILE'=2) ;"2 = PATIENT file
 | 
|---|
| 117 |         . . . SET TOSHOW(FLD)=""
 | 
|---|
| 118 |         . . IF $DATA(TOSHOW) DO
 | 
|---|
| 119 |         . . . WRITE "Name of patient in this record as follows:",!
 | 
|---|
| 120 |         . . . DO DumpRec2^TMGDEBUG(PFROMFIL,PFROMREC,0,.TOSHOW)
 | 
|---|
| 121 |         . . NEW % SET %=2
 | 
|---|
| 122 |         . . WRITE "View current local record needing record" DO YN^DICN WRITE !
 | 
|---|
| 123 |         . . IF %=-1 SET RESULT=-1 QUIT
 | 
|---|
| 124 |         . . IF %=1 DO
 | 
|---|
| 125 |         . . . DO DumpRec2^TMGDEBUG(PFROMFIL,PFROMREC)
 | 
|---|
| 126 |         . . . WRITE !
 | 
|---|
| 127 |         . . . DO PRESSTOCONT^TMGUSRIF
 | 
|---|
| 128 |         . . . IF $GET(TMGPTCABORT)=1 SET RESULT=-1
 | 
|---|
| 129 |         ;
 | 
|---|
| 130 |         QUIT RESULT
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | GL2FILE(CREF,FNAME) ;
 | 
|---|
| 134 |         ;"Purpose: Return filenumber based on global reference.
 | 
|---|
| 135 |         ;"Input: CREF -- closed reference of root of file.
 | 
|---|
| 136 |         ;"       FNAME -- OPTIONAL.  PASS BY REFERENCE.  Filled with filename, if found.
 | 
|---|
| 137 |         ;"Results: Filenumber, or 0 if problem
 | 
|---|
| 138 |         NEW RESULT SET RESULT=0
 | 
|---|
| 139 |         NEW NODE0 SET NODE0=$GET(@CREF@(0)) GOTO:(NODE0="") G2FDN
 | 
|---|
| 140 |         SET FNAME=$PIECE(NODE0,"^",1)
 | 
|---|
| 141 |         SET RESULT=+$PIECE(NODE0,"^",2)
 | 
|---|
| 142 | G2FDN   QUIT RESULT
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | KILLNEED(JNUM,INOUT) ;
 | 
|---|
| 146 |         ;"Purpose: To allow user to kill needed needed pointers.
 | 
|---|
| 147 |         ;"Input: JNUM -- The job number of the background client process
 | 
|---|
| 148 |         ;"       INOUT -- OPTIONAL -- Default is "PTOUT".  Should be "PTIN" or "PTOUT"
 | 
|---|
| 149 |         ;"Results: None
 | 
|---|
| 150 |         ;
 | 
|---|
| 151 |         NEW GETARRAY,FILENUM,IEN,STIME,TMGCT,SHOWPROG,TALLY,QUERY,ERROR
 | 
|---|
| 152 |         SET INOUT=$GET(INOUT) IF INOUT'="PTIN" SET INOUT="PTOUT"
 | 
|---|
| 153 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 154 |         NEW OPTIONS
 | 
|---|
| 155 |         SET OPTIONS("HEADER")="Select File(s) to REMOVE NEEDED FROM. Press <ESC><ESC> when Done."
 | 
|---|
| 156 |         DO ASKNEEDED^TMGSIPH3(JNUM,.GETARRAY,INOUT,.OPTIONS)
 | 
|---|
| 157 |         IF $DATA(GETARRAY)=0 GOTO WNDN
 | 
|---|
| 158 |         WRITE !,"NOTE: If the selected records are removed from the needed list,",!
 | 
|---|
| 159 |         WRITE "then all the records pointing to this needed record will be left",!
 | 
|---|
| 160 |         WRITE "with NULL pointers.  THIS CAN NOT BE UNDONE.",!
 | 
|---|
| 161 |         WRITE "It is recommended that the individual records be EXAMINED",!
 | 
|---|
| 162 |         WRITE "to better understand the linkages before deletion.",!
 | 
|---|
| 163 |         WRITE "If you don't know what you are doing,then don't proceed.",!,!
 | 
|---|
| 164 |         NEW % SET %=1
 | 
|---|
| 165 |         WRITE "EXAMINE records first" DO YN^DICN WRITE !
 | 
|---|
| 166 |         IF %=-1 GOTO KNDN
 | 
|---|
| 167 |         IF %=1 IF $$SHOWNEED(JNUM,.GETARRAY)=-1 GOTO KNDN
 | 
|---|
| 168 |         SET %=2
 | 
|---|
| 169 |         WRITE "PROCEED WITH DELETION FROM NEEDED LIST" DO YN^DICN WRITE !
 | 
|---|
| 170 |         IF %'=1 GOTO KNDN
 | 
|---|
| 171 |         SET FILENUM=0
 | 
|---|
| 172 |         SET STIME=$H
 | 
|---|
| 173 |         SET TMGCT=1,SHOWPROG=0
 | 
|---|
| 174 |         FOR  SET FILENUM=$ORDER(GETARRAY(FILENUM)) QUIT:(FILENUM="")!(TMGABORT=1)  DO
 | 
|---|
| 175 |         . NEW TMGMAX SET TMGMAX=-1
 | 
|---|
| 176 |         . NEW IEN SET IEN=""
 | 
|---|
| 177 |         . FOR  SET IEN=$ORDER(GETARRAY(FILENUM,IEN),-1) QUIT:(IEN="")!(TMGABORT=1)  DO
 | 
|---|
| 178 |         . . IF TMGMAX=-1 SET TMGMAX=IEN
 | 
|---|
| 179 |         . . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
 | 
|---|
| 180 |         . . SET TMGCT=TMGCT+1
 | 
|---|
| 181 |         . . DO UNNEEDPTR^TMGSIPHU(FILENUM,IEN,0,.TALLY)
 | 
|---|
| 182 |         . . IF (SHOWPROG=0),(($PIECE($H,",",2)-$PIECE(STIME,",",2))>15) SET SHOWPROG=1
 | 
|---|
| 183 |         . . IF SHOWPROG,(TMGCT#10=0) DO
 | 
|---|
| 184 |         . . . WRITE #
 | 
|---|
| 185 |         . . . DO ProgressBar^TMGUSRIF(TMGCT,"Progress: "_TMGCT,0,TMGMAX,70,STIME)
 | 
|---|
| 186 |         . . . IF $DATA(TALLY) WRITE ! ZWR TALLY
 | 
|---|
| 187 |         DO PRESSTOCONT^TMGUSRIF
 | 
|---|
| 188 | KNDN    QUIT
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  ;
 | 
|---|
| 191 | PREVIEW(JNUM,INOUT) ;
 | 
|---|
| 192 |         ;"Purpose: To allow user view server record before downloading and installing
 | 
|---|
| 193 |         ;"Input: JNUM -- The job number of the background client process
 | 
|---|
| 194 |         ;"       INOUT -- OPTIONAL -- Default is "PTOUT".  Should be "PTIN" or "PTOUT"
 | 
|---|
| 195 |         ;"Results: None
 | 
|---|
| 196 |         ;
 | 
|---|
| 197 |         NEW GETARRAY,FILENUM,IEN,STIME,TMGCT,SHOWPROG,TALLY,QUERY,ERROR
 | 
|---|
| 198 |         SET INOUT=$GET(INOUT) IF INOUT'="PTIN" SET INOUT="PTOUT"
 | 
|---|
| 199 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 200 |         NEW OPTIONS
 | 
|---|
| 201 |         SET OPTIONS("HEADER")="Select File(s) to PREVIEW. Press <ESC><ESC> when Done."
 | 
|---|
| 202 |         DO ASKNEEDED^TMGSIPH3(JNUM,.GETARRAY,INOUT,.OPTIONS)
 | 
|---|
| 203 |         IF $DATA(GETARRAY)=0 GOTO PVDN
 | 
|---|
| 204 |         NEW SHOWEMPTY
 | 
|---|
| 205 |         NEW % SET %=2
 | 
|---|
| 206 |         WRITE "Display Empty Fields" DO YN^DICN WRITE !
 | 
|---|
| 207 |         IF %=-1 GOTO PVDN
 | 
|---|
| 208 |         SET SHOWEMPTY=(%=1)
 | 
|---|
| 209 |         SET FILENUM=0
 | 
|---|
| 210 |         SET STIME=$H
 | 
|---|
| 211 |         SET TMGCT=1,SHOWPROG=0
 | 
|---|
| 212 |         FOR  SET FILENUM=$ORDER(GETARRAY(FILENUM)) QUIT:(FILENUM="")!(TMGABORT=1)  DO
 | 
|---|
| 213 |         . NEW TMGMAX SET TMGMAX=-1
 | 
|---|
| 214 |         . NEW IEN SET IEN=""
 | 
|---|
| 215 |         . FOR  SET IEN=$ORDER(GETARRAY(FILENUM,IEN),-1) QUIT:(IEN="")!(TMGABORT=1)  DO
 | 
|---|
| 216 |         . . IF TMGMAX=-1 SET TMGMAX=IEN
 | 
|---|
| 217 |         . . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
 | 
|---|
| 218 |         . . SET TMGCT=TMGCT+1
 | 
|---|
| 219 |         . . SET QUERY="DUMP REC|"_FILENUM_"^"_IEN_"^"_SHOWEMPTY
 | 
|---|
| 220 |         . . DO MSGCLIENT^TMGKERN2(JNUM,QUERY,.REPLY,.ERROR,30)
 | 
|---|
| 221 |         . . IF $DATA(ERROR) DO  QUIT
 | 
|---|
| 222 |         . . . WRITE ERROR,!
 | 
|---|
| 223 |         . . . SET TMGABORT=1
 | 
|---|
| 224 |         . . NEW TMGI SET TMGI=""
 | 
|---|
| 225 |         . . FOR  SET TMGI=$ORDER(REPLY(TMGI)) QUIT:(TMGI="")  DO
 | 
|---|
| 226 |         . . . WRITE REPLY(TMGI),!
 | 
|---|
| 227 |         . . IF (SHOWPROG=0),(($PIECE($H,",",2)-$PIECE(STIME,",",2))>15) SET SHOWPROG=1
 | 
|---|
| 228 |         . . IF SHOWPROG,(TMGCT#10=0) DO
 | 
|---|
| 229 |         . . . WRITE #
 | 
|---|
| 230 |         . . . DO ProgressBar^TMGUSRIF(TMGCT,"Progress: "_TMGCT,0,TMGMAX,70,STIME)
 | 
|---|
| 231 |         . . . IF $DATA(TALLY) WRITE ! ZWR TALLY
 | 
|---|
| 232 |         DO PRESSTOCONT^TMGUSRIF
 | 
|---|
| 233 | PVDN    QUIT
 | 
|---|
| 234 |  ;
 | 
|---|
| 235 |  ;
 | 
|---|
| 236 | CHKPTIN(JNUM) ;
 | 
|---|
| 237 |         ;"Purpose: to check for pointers in to files/records already downloaded.
 | 
|---|
| 238 |         ;"Input: JNUM -- The job number of the background client process
 | 
|---|
| 239 |         ;"Results: None
 | 
|---|
| 240 |         NEW TMGARRAY,TMGSEL
 | 
|---|
| 241 |         NEW FILENUM SET FILENUM=0
 | 
|---|
| 242 |         FOR  SET FILENUM=$ORDER(^TMG("TMGSIPH","DOWNLOADED",FILENUM)) QUIT:(FILENUM'>0)  DO
 | 
|---|
| 243 |         . NEW DISPSTR SET DISPSTR="Check for pointers IN to file #"_FILENUM_" ("
 | 
|---|
| 244 |         . SET DISPSTR=DISPSTR_$PIECE($GET(^DIC(FILENUM,0)),"^",1)_")"
 | 
|---|
| 245 |         . SET TMGARRAY(DISPSTR)=FILENUM
 | 
|---|
| 246 |         NEW HEADER SET HEADER="Select File(s) to Check for POINTERS IN. Press <ESC><ESC> when Done."
 | 
|---|
| 247 |         DO Selector^TMGUSRIF("TMGARRAY","TMGSEL",HEADER)
 | 
|---|
| 248 |         ;
 | 
|---|
| 249 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 250 |         NEW IDX SET IDX=""
 | 
|---|
| 251 |         FOR  SET IDX=$ORDER(TMGSEL(IDX)) QUIT:(IDX="")!TMGABORT  DO
 | 
|---|
| 252 |         . SET FILENUM=$GET(TMGSEL(IDX)) QUIT:FILENUM=""
 | 
|---|
| 253 |         . SET TMGABORT=($$CHK1PTIN(JNUM,FILENUM)'=1)
 | 
|---|
| 254 |         ;
 | 
|---|
| 255 |         WRITE !
 | 
|---|
| 256 |         DO PRESSTOCONT^TMGUSRIF;
 | 
|---|
| 257 |         QUIT
 | 
|---|
| 258 |  ;
 | 
|---|
| 259 |  ;
 | 
|---|
| 260 | CHK1PTIN(JNUM,FILENUM) ;
 | 
|---|
| 261 |         ;"Purpose: To cycle through all local records that have been downloaded and manuall
 | 
|---|
| 262 |         ;"         check on server for pointers in, and que checks if needed.
 | 
|---|
| 263 |         ;"Input: JNUM -- The job number of the background client process
 | 
|---|
| 264 |         ;"       FILENUM -- The file to process.
 | 
|---|
| 265 |         ;"Results: 1 if OK -1 if error/abort
 | 
|---|
| 266 |         NEW RESULT SET RESULT=1
 | 
|---|
| 267 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 268 |         NEW TMGCT SET TMGCT=999
 | 
|---|
| 269 |         NEW STIME SET STIME=$H
 | 
|---|
| 270 |         NEW TMGMIN SET TMGMIN=$ORDER(^TMG("TMGSIPH","DOWNLOADED",FILENUM,0))
 | 
|---|
| 271 |         NEW TMGMAX SET TMGMAX=$ORDER(^TMG("TMGSIPH","DOWNLOADED",FILENUM,""),-1)
 | 
|---|
| 272 |         NEW LPTR SET LPTR=0
 | 
|---|
| 273 |         FOR  SET LPTR=$ORDER(^TMG("TMGSIPH","DOWNLOADED",FILENUM,LPTR)) QUIT:(+LPTR'>0)!TMGABORT  DO
 | 
|---|
| 274 |         . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
 | 
|---|
| 275 |         . NEW RPTR SET RPTR=+$GET(^TMG("TMGSIPH","DOWNLOADED",FILENUM,LPTR))
 | 
|---|
| 276 |         . QUIT:(RPTR'>0)
 | 
|---|
| 277 |         . DO GETPTIN^TMGSIPH4(JNUM,FILENUM,RPTR)
 | 
|---|
| 278 |         . SET TMGCT=TMGCT+1
 | 
|---|
| 279 |         . IF TMGCT>25 DO
 | 
|---|
| 280 |         . . DO ProgressBar^TMGUSRIF(LPTR,"Checking pointers IN to file #"_FILENUM,TMGMIN,TMGMAX,70,STIME)
 | 
|---|
| 281 |         . . SET TMGCT=0
 | 
|---|
| 282 |         IF TMGABORT SET RESULT=-1
 | 
|---|
| 283 |         QUIT RESULT
 | 
|---|
| 284 |  ;
 | 
|---|
| 285 |  ;
 | 
|---|
| 286 | DELREC;
 | 
|---|
| 287 |         ;"Purpose: To allow a user to delete a record on the client, and remove record that it has
 | 
|---|
| 288 |         ;"         been previously downloaded. This will allow it to be downloaded again.
 | 
|---|
| 289 |         WRITE !,"Select a downloaded record to delete from this client.",!
 | 
|---|
| 290 |         WRITE "NOTE: All pointer to this record will be deleted.",!
 | 
|---|
| 291 |         NEW X,Y,DIC,FILENUM,RESULT
 | 
|---|
| 292 |         SET DIC=1,DIC(0)="MAEQ"
 | 
|---|
| 293 |         DO ^DIC WRITE !
 | 
|---|
| 294 |         IF +Y>0 DO
 | 
|---|
| 295 |         . SET FILENUM=+Y
 | 
|---|
| 296 |         . NEW % SET %=2
 | 
|---|
| 297 |         . WRITE "DELETE *ALL* RECORDS IN FILE"
 | 
|---|
| 298 |         . DO YN^DICN WRITE !
 | 
|---|
| 299 |         . IF %=1 IF $$DELALL(FILENUM) QUIT
 | 
|---|
| 300 |         . IF %=-1 QUIT
 | 
|---|
| 301 |         . SET DIC=FILENUM
 | 
|---|
| 302 |         . DO ^DIC WRITE !
 | 
|---|
| 303 |         . IF +Y'>0 QUIT
 | 
|---|
| 304 |         . SET RESULT=$$DEL1REC(FILENUM,+Y)
 | 
|---|
| 305 |         . IF +RESULT=-1 DO
 | 
|---|
| 306 |         . . WRITE $PIECE(RESULT,"^",2),!
 | 
|---|
| 307 |         . ELSE  DO
 | 
|---|
| 308 |         . . WRITE "Record deleted, and all pointers to record have been removed.",!
 | 
|---|
| 309 |         . DO PRESSTOCONT^TMGUSRIF
 | 
|---|
| 310 |         QUIT
 | 
|---|
| 311 |  ;
 | 
|---|
| 312 |  ;
 | 
|---|
| 313 | DELALL(FILENUM)
 | 
|---|
| 314 |         ;"Purpose: To allow deletion of all records in file on the client, and remove the
 | 
|---|
| 315 |         ;"         notation that it has been downloaded.
 | 
|---|
| 316 |         ;"Input: FILENUM -- Filenumber to delete
 | 
|---|
| 317 |         ;"Result: 1 = OK,   -1^Message if error
 | 
|---|
| 318 |         SET FILENUM=$GET(FILENUM)
 | 
|---|
| 319 |         NEW RESULT SET RESULT=1
 | 
|---|
| 320 |         NEW % SET %=2
 | 
|---|
| 321 |         WRITE "Are you CERTAIN you want to delete ALL records in file ",FILENUM
 | 
|---|
| 322 |         DO YN^DICN WRITE !
 | 
|---|
| 323 |         IF %'=1 SET RESULT="-1^USER ABORTED" GOTO DADN
 | 
|---|
| 324 |         NEW TMGCT SET TMGCT=0
 | 
|---|
| 325 |         NEW TMGABORT SET TMGABORT=0
 | 
|---|
| 326 |         NEW STIME SET STIME=$H
 | 
|---|
| 327 |         NEW REF SET REF=$GET(^DIC(FILENUM,0,"GL"))
 | 
|---|
| 328 |         IF REF="" DO  GOTO DADN
 | 
|---|
| 329 |         . SET RESULT="-1^INVALID FILENUM: "_FILENUM
 | 
|---|
| 330 |         SET REF=$$CREF^DILF(REF)
 | 
|---|
| 331 |         SET TMGMIN=$ORDER(@REF@(0))
 | 
|---|
| 332 |         SET TMGMAX=$ORDER(@REF@("@"),-1)
 | 
|---|
| 333 |         NEW TMGIEN SET TMGIEN=0
 | 
|---|
| 334 |         FOR  SET TMGIEN=$ORDER(@REF@(TMGIEN)) QUIT:(+TMGIEN'>0)!TMGABORT  DO
 | 
|---|
| 335 |         . SET TMGABORT=$$UserAborted^TMGUSRIF() QUIT:(TMGABORT=1)
 | 
|---|
| 336 |         . IF TMGCT>100 DO
 | 
|---|
| 337 |         . . DO ProgressBar^TMGUSRIF(TMGIEN,"Deleting local records in file "_FILENUM,TMGMIN,TMGMAX,70,STIME)
 | 
|---|
| 338 |         . . SET TMGCT=0
 | 
|---|
| 339 |         . SET TMGCT=TMGCT+1
 | 
|---|
| 340 |         . SET RESULT=$$DEL1REC(FILENUM,TMGIEN,1)
 | 
|---|
| 341 |         . IF +RESULT=-1 SET TMGABORT=1
 | 
|---|
| 342 |         IF 'TMGABORT DO
 | 
|---|
| 343 |         . KILL ^TMG("TMGSIPH","PT XLAT",FILENUM)
 | 
|---|
| 344 |         . KILL ^TMG("TMGSIPH","RECORDS SYNC",FILENUM)
 | 
|---|
| 345 | DADN    QUIT RESULT
 | 
|---|
| 346 |  ;
 | 
|---|
| 347 |  ;
 | 
|---|
| 348 | DEL1REC(FILENUM,LPTR,FORCE);
 | 
|---|
| 349 |         ;"Purpose: To allow deletion of a record on the client, and record that it has been downloaded.
 | 
|---|
| 350 |         ;"Input: FILENUM -- Filenumber to delete
 | 
|---|
| 351 |         ;"       LPTR -- Record number (IEN) on client to delete
 | 
|---|
| 352 |         ;"       FORCE -- OPTIONAL.  If 1, then will delete even if not prev downloaded
 | 
|---|
| 353 |         ;"Result: 1 = OK,   -1^Message if error
 | 
|---|
| 354 |         NEW RESULT SET RESULT=1
 | 
|---|
| 355 |         IF $GET(FORCE)=1 GOTO D1L1
 | 
|---|
| 356 |         NEW ISDNLOAD SET ISDNLOAD=($DATA(^TMG("TMGSIPH","DOWNLOADED",FILENUM,LPTR))'=0)
 | 
|---|
| 357 |         IF 'ISDNLOAD DO  GOTO D1RDONE
 | 
|---|
| 358 |         . SET RESULT="-1^Record doesn't seem to have been downloaded. A local record was probably used instead."
 | 
|---|
| 359 | D1L1    NEW OPTION
 | 
|---|
| 360 |         SET OPTION(FILENUM,LPTR)=0
 | 
|---|
| 361 |         DO QTMVPTR^TMGFMUT(.OPTION)
 | 
|---|
| 362 |         NEW DIE,DR,DA
 | 
|---|
| 363 |         SET DIE=FILENUM
 | 
|---|
| 364 |         SET DR=".01///@"
 | 
|---|
| 365 |         SET DA=LPTR
 | 
|---|
| 366 |         DO ^DIE
 | 
|---|
| 367 |         NEW RPTR SET RPTR=+$GET(^TMG("TMGSIPH","DOWNLOADED",FILENUM,LPTR))
 | 
|---|
| 368 |         KILL ^TMG("TMGSIPH","DOWNLOADED",FILENUM,LPTR)
 | 
|---|
| 369 |         KILL ^TMG("TMGSIPH","PT XLAT",FILENUM,RPTR)
 | 
|---|
| 370 | D1RDONE QUIT RESULT
 | 
|---|
| 371 |  ;
 | 
|---|
| 372 |  ; | 
|---|