| 1 | VAQPUR10 ;ALB/JRP - PURGING;15JUL93 | 
|---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993 | 
|---|
| 3 | START ;START RESPONSE TIME MONITORING (TIME TO PURGE SINGLE TRANSACTION) | 
|---|
| 4 | I ($D(XRTL)) D T0^%ZOSV | 
|---|
| 5 | Q | 
|---|
| 6 | ; | 
|---|
| 7 | STOP ;STOP RESPONSE TIME MONITORING | 
|---|
| 8 | I ($D(XRT0)) S XRTN=$T(+0) D T1^%ZOSV K XRTN,XRT0 | 
|---|
| 9 | Q | 
|---|
| 10 | ; | 
|---|
| 11 | JOB ;ENTRY POINT FOR PURGING THAT HAS BEEN JOBBED | 
|---|
| 12 | ;INPUT  : VAQDATE - Earliest date allowed for transactions (FileMan) | 
|---|
| 13 | ;         VAQINTR - Interactive flag | 
|---|
| 14 | ;           If 1, write purging information to current device | 
|---|
| 15 | ;           If 0, do not write purging information (default) | 
|---|
| 16 | ;OUTPUT : None | 
|---|
| 17 | ;NOTES  : See $$PURGER^VAQPUR10 | 
|---|
| 18 | ; | 
|---|
| 19 | ;CHECK INPUT | 
|---|
| 20 | I ('$D(VAQDATE)) S ZTREQ="@" Q | 
|---|
| 21 | S:('$D(VAQINTR)) VAQINTR=0 | 
|---|
| 22 | ;DECLARE VARIABLE | 
|---|
| 23 | N JUNK | 
|---|
| 24 | ;CALL PURGER | 
|---|
| 25 | S JUNK=$$PURGER(VAQDATE,VAQINTR) | 
|---|
| 26 | S ZTREQ="@" | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | PURGER(PURDATE,DBUG) ;PURGER | 
|---|
| 30 | ;INPUT  : PURDATE - Earliest date allowed for transactions (FileMan) | 
|---|
| 31 | ;         DBUG - Debug flag | 
|---|
| 32 | ;           If 1, write purging information to current device | 
|---|
| 33 | ;           If 0, do not write purging information (default) | 
|---|
| 34 | ;OUTPUT : N - Number of transactions purged | 
|---|
| 35 | ;NOTES  : Transactions that were created on or before PURDATE will | 
|---|
| 36 | ;         be purged.  Data that is associated with the transaction | 
|---|
| 37 | ;         will also be purged. | 
|---|
| 38 | ;       : Work-load information that relates to the transaction will | 
|---|
| 39 | ;         not be purged. | 
|---|
| 40 | ;       : Transactions that are missing critical data will have their | 
|---|
| 41 | ;         purge flag set.  This allows the transaction to be purged | 
|---|
| 42 | ;         the next time the purger is run and prevents transactions | 
|---|
| 43 | ;         that are currently being worked on from being deleted. | 
|---|
| 44 | ; | 
|---|
| 45 | ;CHECK INPUT | 
|---|
| 46 | Q:('(+$G(PURDATE))) 0 | 
|---|
| 47 | S DBUG=+$G(DBUG) | 
|---|
| 48 | ;DECLARE VARIABLES | 
|---|
| 49 | N TRANPTR,PURGE,PRGCNT,ERROR,TMP,STOPJOB | 
|---|
| 50 | S ERROR="^TMP(""VAQ-PURGE"","_$J_")" | 
|---|
| 51 | K @ERROR | 
|---|
| 52 | S PRGCNT=0 | 
|---|
| 53 | S STOPJOB=0 | 
|---|
| 54 | W:(DBUG) !!,"- PDX Purger -" | 
|---|
| 55 | ;DELETE ALL TRANSACTIONS THAT HAVE PURGE FLAG SET | 
|---|
| 56 | W:(DBUG) !!!,"Deleting transactions with purge flag set" | 
|---|
| 57 | S TRANPTR="" | 
|---|
| 58 | F  S TRANPTR=$O(^VAT(394.61,"PURGE",1,TRANPTR)) Q:((TRANPTR="")!(STOPJOB))  D START D  D STOP | 
|---|
| 59 | .S STOPJOB=$$S^%ZTLOAD | 
|---|
| 60 | .Q:(STOPJOB) | 
|---|
| 61 | .S TMP=+$$DELTRAN^VAQFILE(TRANPTR) | 
|---|
| 62 | .I (TMP<0) D  Q | 
|---|
| 63 | ..S @ERROR@(TRANPTR)="Unable to delete entry" | 
|---|
| 64 | ..W:(DBUG) !,"Unable to delete entry number ",TRANPTR | 
|---|
| 65 | .S PRGCNT=PRGCNT+1 | 
|---|
| 66 | .W:(DBUG) !,"Entry number ",TRANPTR," has been deleted" | 
|---|
| 67 | ;JOB HAS BEEN STOPPED | 
|---|
| 68 | I (STOPJOB) D  Q PRGCNT | 
|---|
| 69 | .S @ERROR@("STOPPED")="" | 
|---|
| 70 | .W:(DBUG) !!!,"*** Purger has been stopped ***",!!! | 
|---|
| 71 | .;SEND ERROR BULLETIN | 
|---|
| 72 | .S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR) | 
|---|
| 73 | .K @ERROR | 
|---|
| 74 | ;CHECK ALL TRANSACTIONS FOR POSSIBLE PURGING | 
|---|
| 75 | W:(DBUG) !!!,"Checking all transactions against purge criteria" | 
|---|
| 76 | S TRANPTR=0 | 
|---|
| 77 | F  S TRANPTR=$O(^VAT(394.61,TRANPTR)) Q:((TRANPTR="")!(TRANPTR'?1.N)!(STOPJOB))  D START D  D STOP | 
|---|
| 78 | .S STOPJOB=$$S^%ZTLOAD | 
|---|
| 79 | .Q:(STOPJOB) | 
|---|
| 80 | .S PURGE=$$PRGCHK^VAQPUR11(TRANPTR,PURDATE,1) | 
|---|
| 81 | .Q:('PURGE) | 
|---|
| 82 | .I (PURGE<0) D  Q | 
|---|
| 83 | ..S @ERROR@(TRANPTR)="Could not determine if entry should be deleted" | 
|---|
| 84 | ..W:(DBUG) !,"Could not determine if entry number ",TRANPTR," should be deleted" | 
|---|
| 85 | .I ((+PURGE)=2) D  Q | 
|---|
| 86 | ..S TMP=$P(PURGE,"^",2) | 
|---|
| 87 | ..I (TMP=0) W:(DBUG) !,"Purge flag was not set for entry number ",TRANPTR S @ERROR@(TRANPTR)="Did not set purge flag" Q | 
|---|
| 88 | ..I (TMP=1) W:(DBUG) !,"Purge flag has been set for entry number ",TRANPTR Q | 
|---|
| 89 | ..I (TMP=-1) W:(DBUG) !,"Purge flag could not be set for entry number ",TRANPTR S @ERROR@(TRANPTR)="Could not set purge flag" | 
|---|
| 90 | .S TMP=+$$DELTRAN^VAQFILE(TRANPTR) | 
|---|
| 91 | .I (TMP<0) D  Q | 
|---|
| 92 | ..S @ERROR@(TRANPTR)="Unable to delete entry" | 
|---|
| 93 | ..W:(DBUG) !,"Unable to delete entry number ",TRANPTR | 
|---|
| 94 | .S PRGCNT=PRGCNT+1 | 
|---|
| 95 | .W:(DBUG) !,"Entry number ",TRANPTR," has been deleted" | 
|---|
| 96 | ;JOB HAS BEEN STOPPED | 
|---|
| 97 | I (STOPJOB) D  Q PRGCNT | 
|---|
| 98 | .S @ERROR@("STOPPED")="" | 
|---|
| 99 | .W:(DBUG) !!!,"*** Purger has been stopped ***",!!! | 
|---|
| 100 | .;SEND ERROR BULLETIN | 
|---|
| 101 | .S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR) | 
|---|
| 102 | .K @ERROR | 
|---|
| 103 | W:(DBUG) !!!,"- Done -",!!! | 
|---|
| 104 | ;SEND ERROR BULLETIN IF NOT IN DEBUG MODE | 
|---|
| 105 | S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR) | 
|---|
| 106 | K @ERROR | 
|---|
| 107 | Q PRGCNT | 
|---|