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