| [623] | 1 | ECXPURG ;BIR/CML-Driver for Purge of DSS Data from Local Extract & Holding Files ; [ 12/03/96  5:19 PM ]
 | 
|---|
 | 2 |  ;;3.0;DSS EXTRACTS;**9,24,33,35,49**;Dec 22, 1997
 | 
|---|
 | 3 | EN ;entry point from option
 | 
|---|
 | 4 |  W @IOF,!!,"This option will allow you to purge:"
 | 
|---|
 | 5 |  W !,"1. individual or a range of DSS extracts, or"
 | 
|---|
 | 6 |  W !,"2. data that resides in the ""holding files"" for the IVP and UDP extracts."
 | 
|---|
 | 7 |  W !!,"Care must be taken for several reasons:"
 | 
|---|
 | 8 |  W !!,"-  You can purge ANY existing extract.  This includes transmitted and non-"
 | 
|---|
 | 9 |  W !,"   transmitted extracts as well as extracts that did not run to completion"
 | 
|---|
 | 10 |  W !,"   due to errors or system problems."
 | 
|---|
 | 11 |  W !,"-  Choosing a range of extracts (or a broad date range for the ""holding"
 | 
|---|
 | 12 |  W !,"   files"") could mean an excessively large number of records and be very"
 | 
|---|
 | 13 |  W !,"   CPU intensive.  Please be sure to queue this purge for off-hours and"
 | 
|---|
 | 14 |  W !,"   limit the number of extracts to be purged per a single queued session."
 | 
|---|
 | 15 |  W !,"-  The IVP and UDP ""holding"" files are intermediate files that are"
 | 
|---|
 | 16 |  W !,"   populated ""realtime"" by inpatient pharmacy activity.  These files are"
 | 
|---|
 | 17 |  W !,"   then used to generate the IVP and UDP extracts and CANNOT be recreated."
 | 
|---|
 | 18 |  W !,"   Once they are purged for a date range, extracts can no longer be"
 | 
|---|
 | 19 |  W !,"   generated for that time period."
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  K DIR W !
 | 
|---|
 | 22 |  S DIR(0)="SAM^E:Extract Files;I:IVP Holding File;U:UDP Holding File"
 | 
|---|
 | 23 |  S DIR("A")="Purge (E)xtract files, (I)VP data, or (U)DP data? "
 | 
|---|
 | 24 |  D ^DIR K DIR G:$D(DIRUT) QUIT S ECY=Y
 | 
|---|
 | 25 |  I ECY="E" D ^ECXPURG1 I $D(ECLOC) S ZTSAVE("ECLOC(")="",ZTIO="",ZTRTN="PUR1^ECXPURG",ZTDESC="DSS - Purge of Extract Files" D QUE
 | 
|---|
 | 26 |  I ECY="I" D DATES^ECXPURG1 I $D(ECBDT)&($D(ECEDT)) S (ZTSAVE("ECBDT"),ZTSAVE("ECEDT"))="",ZTIO="",ZTRTN="PUR2^ECXPURG",ZTDESC="DSS - Purge of IVP Holding File" D QUE
 | 
|---|
 | 27 |  I ECY="U" D DATES^ECXPURG1 I $D(ECBDT)&($D(ECEDT)) S (ZTSAVE("ECBDT"),ZTSAVE("ECEDT"))="",ZTIO="",ZTRTN="PUR3^ECXPURG",ZTDESC="DSS - Purge of UDP Holding File" D QUE
 | 
|---|
 | 28 | QUIT ;
 | 
|---|
 | 29 |  K %X,%Y,EC,ECBDT,ECDATE,ECDT,ECEDT,ECEX,ECFR,ECLOC,ECRC,ECTO,ECTRN,ECTYP,ECY,HDT,HI,JJ,LN,LO,PG,QFLG,SS,X,Y,ZTSK
 | 
|---|
 | 30 |  K ECXDIV
 | 
|---|
 | 31 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
 | 32 |  Q
 | 
|---|
 | 33 | QUE W $C(7),$C(7),!!?3,"<<This purge should be queued to run during non-peak hours.>>",!
 | 
|---|
 | 34 |  D ^%ZTLOAD
 | 
|---|
 | 35 |  I $D(ZTSK) W !,"Request queued as Task #",ZTSK,".",!
 | 
|---|
 | 36 |  Q
 | 
|---|
 | 37 |  ;
 | 
|---|
 | 38 | PUR1 ; entry point for queued purge job of extract files
 | 
|---|
 | 39 |  S ECDA=0 F  S ECDA=$O(ECLOC(ECDA)) Q:'ECDA  D
 | 
|---|
 | 40 |  .S ECFILE=^ECX(727,ECDA,"FILE"),ECJ=0
 | 
|---|
 | 41 |  .I ECFILE=727.827 D
 | 
|---|
 | 42 |  ..S DA(1)=1
 | 
|---|
 | 43 |  ..S DA=$O(^ECX(728,DA(1),"CBOC","B",ECDA,0))
 | 
|---|
 | 44 |  ..S DIK="^ECX(728,"_DA(1)_","_"""CBOC"""_","
 | 
|---|
 | 45 |  ..I DA'="" D ^DIK K DIK,DA
 | 
|---|
 | 46 |  .F  S ECJ=$O(^ECX(ECFILE,"AC",ECDA,ECJ)) Q:'ECJ  D
 | 
|---|
 | 47 |  ..S DIK="^ECX("_ECFILE_",",DA=ECJ D ^DIK K DIK,DA
 | 
|---|
 | 48 |  .I ECFILE=727.816 S ECFILE=727.818,ECJ=0 D
 | 
|---|
 | 49 |  ..F  S ECJ=$O(^ECX(ECFILE,"AC",ECDA,ECJ)) Q:'ECJ  D
 | 
|---|
 | 50 |  ...S DIK="^ECX("_ECFILE_",",DA=ECJ D ^DIK K DIK,DA
 | 
|---|
 | 51 |  .S ^ECX(727,ECDA,"PURG")=DT
 | 
|---|
 | 52 |  D QUIT
 | 
|---|
 | 53 |  Q
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | PUR2 ; entry point for queued purge job of IVP holding file (#728.113)
 | 
|---|
 | 56 |  F ECDT=ECBDT-1:0 S ECDT=$O(^ECX(728.113,"A",ECDT)) Q:'ECDT  Q:ECDT>ECEDT  S ECPT=0 F  S ECPT=$O(^ECX(728.113,"A",ECDT,ECPT)) Q:'ECPT  D
 | 
|---|
 | 57 |  .S ECOR=0 F  S ECOR=$O(^ECX(728.113,"A",ECDT,ECPT,ECOR)) Q:'ECOR  D
 | 
|---|
 | 58 |  ..S ECREC=0 F  S ECREC=$O(^ECX(728.113,"A",ECDT,ECPT,ECOR,ECREC)) Q:'ECREC  D
 | 
|---|
 | 59 |  ...S DIK="^ECX(728.113,",DA=ECREC D ^DIK K DIK,DA
 | 
|---|
 | 60 |  D QUIT
 | 
|---|
 | 61 |  Q
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 | PUR3 ; entry point for queued purge job of UDP holding file (#728.904)
 | 
|---|
 | 64 |  F ECDT=ECBDT-1:0 S ECDT=$O(^ECX(728.904,"A",ECDT)) Q:'ECDT  Q:ECDT>ECEDT  D
 | 
|---|
 | 65 |  .S ECREC=0 F  S ECREC=$O(^ECX(728.904,"A",ECDT,ECREC)) Q:'ECREC  D
 | 
|---|
 | 66 |  ..S DIK="^ECX(728.904,",DA=ECREC D ^DIK K DIK,DA
 | 
|---|
 | 67 |  D QUIT
 | 
|---|
 | 68 |  Q
 | 
|---|