Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VAQPUR10

VAQPUR10.m

Go to the documentation of this file.
VAQPUR10 ;ALB/JRP - PURGING;15JUL93
 ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
START ;START RESPONSE TIME MONITORING (TIME TO PURGE SINGLE TRANSACTION)
 I ($D(XRTL)) D T0^%ZOSV
 Q
 ;
STOP ;STOP RESPONSE TIME MONITORING
 I ($D(XRT0)) S XRTN=$T(+0) D T1^%ZOSV K XRTN,XRT0
 Q
 ;
JOB ;ENTRY POINT FOR PURGING THAT HAS BEEN JOBBED
 ;INPUT  : VAQDATE - Earliest date allowed for transactions (FileMan)
 ;         VAQINTR - Interactive flag
 ;           If 1, write purging information to current device
 ;           If 0, do not write purging information (default)
 ;OUTPUT : None
 ;NOTES  : See $$PURGER^VAQPUR10
 ;
 ;CHECK INPUT
 I ('$D(VAQDATE)) S ZTREQ="@" Q
 S:('$D(VAQINTR)) VAQINTR=0
 ;DECLARE VARIABLE
 N JUNK
 ;CALL PURGER
 S JUNK=$$PURGER(VAQDATE,VAQINTR)
 S ZTREQ="@"
 Q
 ;
PURGER(PURDATE,DBUG) ;PURGER
 ;INPUT  : PURDATE - Earliest date allowed for transactions (FileMan)
 ;         DBUG - Debug flag
 ;           If 1, write purging information to current device
 ;           If 0, do not write purging information (default)
 ;OUTPUT : N - Number of transactions purged
 ;NOTES  : Transactions that were created on or before PURDATE will
 ;         be purged.  Data that is associated with the transaction
 ;         will also be purged.
 ;       : Work-load information that relates to the transaction will
 ;         not be purged.
 ;       : Transactions that are missing critical data will have their
 ;         purge flag set.  This allows the transaction to be purged
 ;         the next time the purger is run and prevents transactions
 ;         that are currently being worked on from being deleted.
 ;
 ;CHECK INPUT
 Q:('(+$G(PURDATE))) 0
 S DBUG=+$G(DBUG)
 ;DECLARE VARIABLES
 N TRANPTR,PURGE,PRGCNT,ERROR,TMP,STOPJOB
 S ERROR="^TMP(""VAQ-PURGE"","_$J_")"
 K @ERROR
 S PRGCNT=0
 S STOPJOB=0
 W:(DBUG) !!,"- PDX Purger -"
 ;DELETE ALL TRANSACTIONS THAT HAVE PURGE FLAG SET
 W:(DBUG) !!!,"Deleting transactions with purge flag set"
 S TRANPTR=""
 F  S TRANPTR=$O(^VAT(394.61,"PURGE",1,TRANPTR)) Q:((TRANPTR="")!(STOPJOB))  D START D  D STOP
 .S STOPJOB=$$S^%ZTLOAD
 .Q:(STOPJOB)
 .S TMP=+$$DELTRAN^VAQFILE(TRANPTR)
 .I (TMP<0) D  Q
 ..S @ERROR@(TRANPTR)="Unable to delete entry"
 ..W:(DBUG) !,"Unable to delete entry number ",TRANPTR
 .S PRGCNT=PRGCNT+1
 .W:(DBUG) !,"Entry number ",TRANPTR," has been deleted"
 ;JOB HAS BEEN STOPPED
 I (STOPJOB) D  Q PRGCNT
 .S @ERROR@("STOPPED")=""
 .W:(DBUG) !!!,"*** Purger has been stopped ***",!!!
 .;SEND ERROR BULLETIN
 .S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR)
 .K @ERROR
 ;CHECK ALL TRANSACTIONS FOR POSSIBLE PURGING
 W:(DBUG) !!!,"Checking all transactions against purge criteria"
 S TRANPTR=0
 F  S TRANPTR=$O(^VAT(394.61,TRANPTR)) Q:((TRANPTR="")!(TRANPTR'?1.N)!(STOPJOB))  D START D  D STOP
 .S STOPJOB=$$S^%ZTLOAD
 .Q:(STOPJOB)
 .S PURGE=$$PRGCHK^VAQPUR11(TRANPTR,PURDATE,1)
 .Q:('PURGE)
 .I (PURGE<0) D  Q
 ..S @ERROR@(TRANPTR)="Could not determine if entry should be deleted"
 ..W:(DBUG) !,"Could not determine if entry number ",TRANPTR," should be deleted"
 .I ((+PURGE)=2) D  Q
 ..S TMP=$P(PURGE,"^",2)
 ..I (TMP=0) W:(DBUG) !,"Purge flag was not set for entry number ",TRANPTR S @ERROR@(TRANPTR)="Did not set purge flag" Q
 ..I (TMP=1) W:(DBUG) !,"Purge flag has been set for entry number ",TRANPTR Q
 ..I (TMP=-1) W:(DBUG) !,"Purge flag could not be set for entry number ",TRANPTR S @ERROR@(TRANPTR)="Could not set purge flag"
 .S TMP=+$$DELTRAN^VAQFILE(TRANPTR)
 .I (TMP<0) D  Q
 ..S @ERROR@(TRANPTR)="Unable to delete entry"
 ..W:(DBUG) !,"Unable to delete entry number ",TRANPTR
 .S PRGCNT=PRGCNT+1
 .W:(DBUG) !,"Entry number ",TRANPTR," has been deleted"
 ;JOB HAS BEEN STOPPED
 I (STOPJOB) D  Q PRGCNT
 .S @ERROR@("STOPPED")=""
 .W:(DBUG) !!!,"*** Purger has been stopped ***",!!!
 .;SEND ERROR BULLETIN
 .S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR)
 .K @ERROR
 W:(DBUG) !!!,"- Done -",!!!
 ;SEND ERROR BULLETIN IF NOT IN DEBUG MODE
 S:('DBUG) TMP=$$PURGE^VAQBUL07(ERROR)
 K @ERROR
 Q PRGCNT