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