[896] | 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 | ; |
---|