| 1 | PPPPURG ;ALB/GGP,DAD - ppp logfile purge routine ;03/13/92
 | 
|---|
| 2 |  ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**2,5,21**;APR 7,1995
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; purge any log entrys which are earlier than (today-days retained)
 | 
|---|
| 6 |  ; days  =days retained
 | 
|---|
| 7 |  ; pdate =purge date in fileman format (purge before this day)
 | 
|---|
| 8 |  ; date  =date of current record
 | 
|---|
| 9 | LOG ;
 | 
|---|
| 10 |  N PURGE,BOGUS,DAYS,PDATE,DATE,X,Y,DIR,Y
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  S DIR(0)="YA",DIR("A")="Purge entries in PPP LOG file: ",DIR("B")="NO"
 | 
|---|
| 13 |  S DIR("?")="Enter yes to purge out entries in file." D ^DIR
 | 
|---|
| 14 |  I Y D  Q
 | 
|---|
| 15 |  .D LOG1 W !!,"RETAINED LAST "_$G(DAYS)_" DAYS, PURGED "_$G(PURGE)_" RECORDS.",!!,"PPP LOG file unchanged"
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | LOG1 ; -- purges entries from log file
 | 
|---|
| 19 |  S PURGE=0
 | 
|---|
| 20 |  S BOGUS=$$LOGEVNT^PPPMSC1(1019,"LOG1_PPPPURG")
 | 
|---|
| 21 |  ; write log 'purge started'
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  S DAYS=$P($G(^PPP(1020.1,1,0)),"^",11),X1=DT,X2=-DAYS+1 D C^%DTC S PDATE=X
 | 
|---|
| 24 |  ;W !,PDATE
 | 
|---|
| 25 | LOOP ;
 | 
|---|
| 26 |  ;loop through date in 'c'->date index
 | 
|---|
| 27 |  S DATE="" FOR X=0:0 D  Q:DATE=""
 | 
|---|
| 28 |  .S DATE=$O(^PPP(1020.4,"C",DATE))  Q:DATE=""
 | 
|---|
| 29 |  .S DA=""
 | 
|---|
| 30 |  .;
 | 
|---|
| 31 |  .; loop thru rec with same date, check date/delete
 | 
|---|
| 32 |  .;
 | 
|---|
| 33 |  .F Y=0:0 D  Q:DA=""
 | 
|---|
| 34 |  ..S DA=$O(^PPP(1020.4,"C",DATE,DA))  Q:DA=""
 | 
|---|
| 35 |  ..I (DATE<PDATE) D
 | 
|---|
| 36 |  ...S DIK="^PPP(1020.4,"
 | 
|---|
| 37 |  ...;W !,"PURGING= ",DA
 | 
|---|
| 38 |  ...D ^DIK S PURGE=PURGE+1
 | 
|---|
| 39 | EXIT ;
 | 
|---|
| 40 |  ;write # of days retained, and # of records purged from logfile
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  S BOGUS=$$LOGEVNT^PPPMSC1(1020,"_PPPPURG","RETAINED LAST "_$G(DAYS)_" DAYS, PURGED "_$G(PURGE)_" RECORDS.")
 | 
|---|
| 43 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | XREF ;
 | 
|---|
| 47 |  ; purge any xref entrys which are earlier than (today-days retained)
 | 
|---|
| 48 |  ; days  =days retained
 | 
|---|
| 49 |  ; pdate =purge date in fileman format (purge before this day)
 | 
|---|
| 50 |  ; date  =date of current record
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  N PURGE,BOGUS,DAYS,PDATE,DATE,X,Y,DIR,Y
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  S DIR(0)="YA",DIR("A")="Purge entries in PPP FOREIGN FACILITY XREF file: ",DIR("B")="NO"
 | 
|---|
| 55 |  S DIR("?")="Enter yes to purge out entries in file." D ^DIR
 | 
|---|
| 56 |  I Y D  Q
 | 
|---|
| 57 |  .D XREF1
 | 
|---|
| 58 |  .W !!,"RETAINED LAST "_$G(DAYS)_" DAYS, PURGED "_$G(PURGE)_" RECORDS."
 | 
|---|
| 59 |  W !!,"PPP FOREIGN FACILITY XREF file unchanged"
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | XREF1 ; -- purges other facility Xref
 | 
|---|
| 63 |  S PURGE=0
 | 
|---|
| 64 |  S BOGUS=$$LOGEVNT^PPPMSC1(1021,"XREF1_PPPPURG")
 | 
|---|
| 65 |  ; WRITE LOG 'XREF PURGE STARTED'
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  S DAYS=$P($G(^PPP(1020.1,1,0)),"^",12)
 | 
|---|
| 68 |  ; CALCULATE PURGE DATE
 | 
|---|
| 69 |  S X1=DT,X2=-DAYS+1
 | 
|---|
| 70 |  D C^%DTC S PDATE=X
 | 
|---|
| 71 |  ;W !,PDATE
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 | XREFLOOP ;
 | 
|---|
| 74 |  ;DAVE B (PPP*1*21)
 | 
|---|
| 75 |  ;Loop through "D" xref
 | 
|---|
| 76 |  K DATE,PURGE
 | 
|---|
| 77 | 1 S DATE=$S('$D(DATE):$O(^PPP(1020.2,"D",0)),1:$O(^PPP(1020.2,"D",DATE))) G KLLQ:DATE'>0 S IFN=0
 | 
|---|
| 78 |  I DATE>PDATE G 1
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | 2 S IFN=$O(^PPP(1020.2,"D",DATE,IFN)) G 1:IFN'>0
 | 
|---|
| 81 |  S DATA=$G(^PPP(1020.2,IFN,0))
 | 
|---|
| 82 |  S DATA1=$G(^PPP(1020.2,IFN,1))
 | 
|---|
| 83 |  S PATDFN=$S($P($G(DATA),"^")="":0,1:$P($G(DATA),"^"))
 | 
|---|
| 84 |  S POV=$S($P($G(DATA),"^",2)="":0,1:$P($G(DATA),"^",2))
 | 
|---|
| 85 |  K ^PPP(1020.2,"ARPOV",POV,PATDFN,IFN)
 | 
|---|
| 86 |  K ^PPP(1020.2,"APOV",PATDFN,POV,IFN)
 | 
|---|
| 87 |  S DA=IFN,DIK="^PPP(1020.2," D ^DIK S PURGE=$G(PURGE)+1 G 2
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | KLLQ K DATE,DATA,DATA1,PATDFN,POV,IFN Q
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | XREFEXIT ;
 | 
|---|
| 92 |  ;write # of days retained, and # of records purged from xref
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  S BOGUS=$$LOGEVNT^PPPMSC1(1022,"_PPPPURG","RETAINED LAST "_$G(DAYS)_" DAYS, PURGED "_$G(PURGE)_" RECORDS.")
 | 
|---|
| 95 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | SETUP1 ;queues background job to purge logfile data
 | 
|---|
| 98 |  D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("B")="NOW",%DT("A")="QUEUE JOBS TO RUN AT WHAT TIME: " D ^%DT S PSOQTIME=Y I $D(DTOUT)!(Y=-1) W !,"Try again later",! G OUT
 | 
|---|
| 99 |  S ZTIO="",ZTRTN="LOG1^PPPPURG",ZTDTH=PSOQTIME,ZTDESC="PPP PURGE LOGFILE DATA" D ^%ZTLOAD
 | 
|---|
| 100 | OUT K Y,X,PSOQTIME,%DT
 | 
|---|
| 101 |  Q
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 | SETUP2 ;queues background job to purge xref data
 | 
|---|
| 104 |  D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("B")="NOW",%DT("A")="QUEUE JOBS TO RUN AT WHAT TIME: " D ^%DT S PSOQTIME=Y I $D(DTOUT)!(Y=-1) W !,"Try again later",! G OUT2
 | 
|---|
| 105 |  S ZTIO="",ZTRTN="XREF1^PPPPURG",ZTDTH=PSOQTIME,ZTDESC="PPP PURGE FORIEGN FACILITY XREF" D ^%ZTLOAD
 | 
|---|
| 106 | OUT2 K Y,X,PSOQTIME,%DT
 | 
|---|
| 107 |  Q
 | 
|---|