| 1 | SCDXPRG0 ;ALB/JRP - ACRP PURGING;04-SEP-97 ; 19 Oct 98  1:16 PM | 
|---|
| 2 | ;;5.3;Scheduling;**128,163**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | MAIN ;Main entry point (used by option) | 
|---|
| 5 | ;Declare variables | 
|---|
| 6 | N SCDXBEG,SCDXEND,SCDXH,X | 
|---|
| 7 | N ZTSK,ZTIO,ZTDESC,ZTDTH,ZTRTN,ZTSAVE | 
|---|
| 8 | ;Get date range for purge | 
|---|
| 9 | ; Earliest purge date allowed is ACRP cut-over date | 
|---|
| 10 | S SCDXBEG=2961001 | 
|---|
| 11 | ; Latest purge date allowed is last day of month prior to previous FY | 
|---|
| 12 | ;  database close-out date | 
|---|
| 13 | S SCDXEND=$E(DT,1,3)_"0930" | 
|---|
| 14 | S SCDXEND=$S(DT>SCDXEND:SCDXEND-10000,1:SCDXEND-20000) | 
|---|
| 15 | ;Begin date help text | 
|---|
| 16 | S SCDXH("B",1)="Enter encounter date to begin purging from" | 
|---|
| 17 | S SCDXH("B",2)=" " | 
|---|
| 18 | S SCDXH("B",3)=$$FMTE^XLFDT(SCDXBEG)_" is the earliest date allowed" | 
|---|
| 19 | S SCDXH("B",4)=$$FMTE^XLFDT(SCDXEND)_" will be the latest date allowed" | 
|---|
| 20 | S SCDXH("B",5)=" " | 
|---|
| 21 | S SCDXH("B",6)="Note: The latest date allowed is the last day of the" | 
|---|
| 22 | S SCDXH("B")="      month prior to the previous Fiscal Year." | 
|---|
| 23 | ;End date help text | 
|---|
| 24 | S SCDXH("E",1)="Enter encounter date to end purging at" | 
|---|
| 25 | S SCDXH("E",2)=" " | 
|---|
| 26 | S SCDXH("E",3)=$$FMTE^XLFDT(SCDXEND)_" is the latest date allowed" | 
|---|
| 27 | S SCDXH("E",4)=$$FMTE^XLFDT(SCDXBEG)_" was the earliest date allowed" | 
|---|
| 28 | S SCDXH("E",5)=" " | 
|---|
| 29 | S SCDXH("E",6)="Note: The latest date allowed is the last day of the" | 
|---|
| 30 | S SCDXH("E")="      month prior to the previous Fiscal Year." | 
|---|
| 31 | S X=$$GETDTRNG^SCDXUTL1(SCDXBEG,SCDXEND,$NA(SCDXH("B")),$NA(SCDXH("E"))) | 
|---|
| 32 | ;User aborted - quit | 
|---|
| 33 | I (X<0) W !!,"** Purging of ACRP files not queued **",!! Q | 
|---|
| 34 | K SCDXH | 
|---|
| 35 | S SCDXBEG=+$P(X,"^",1) | 
|---|
| 36 | S SCDXEND=+$P(X,"^",2) | 
|---|
| 37 | ;Task purging | 
|---|
| 38 | S ZTDESC="Purging of ACRP files from "_$$FMTE^XLFDT(SCDXBEG,2)_" to "_$$FMTE^XLFDT(SCDXEND,2) | 
|---|
| 39 | S ZTRTN="TASK^SCDXPRG0" | 
|---|
| 40 | S ZTSAVE("SCDXBEG")=SCDXBEG | 
|---|
| 41 | S ZTSAVE("SCDXEND")=SCDXEND | 
|---|
| 42 | S ZTIO="" | 
|---|
| 43 | S ZTDTH="" | 
|---|
| 44 | S ZTSK="" | 
|---|
| 45 | D ^%ZTLOAD | 
|---|
| 46 | S ZTSK=+$G(ZTSK) | 
|---|
| 47 | ;Error tasking | 
|---|
| 48 | W:('ZTSK) !!,"** Purging of ACRP files not queued **",!! | 
|---|
| 49 | ;Tasked | 
|---|
| 50 | W:(ZTSK) !!,"Purging of ACRP files queued as task number ",ZTSK,!! | 
|---|
| 51 | ;Done | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | TASK ;Task entry point | 
|---|
| 55 | ; | 
|---|
| 56 | ;Input  : SCDXBEG - Begin date (FileMan) | 
|---|
| 57 | ;         SCDXEND - End date (FileMan) | 
|---|
| 58 | ;Output : None | 
|---|
| 59 | ;Notes  : Existance and validity of input is assumed | 
|---|
| 60 | ; | 
|---|
| 61 | ;Don't purge if task was asked to stop | 
|---|
| 62 | I ('$$S^%ZTLOAD()) D PURGE(SCDXBEG,SCDXEND) | 
|---|
| 63 | ;Done | 
|---|
| 64 | S:($D(ZTQUEUED)) ZTREQ="@" | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | PURGE(BEGDATE,ENDDATE) ;Purge ACRP files over a given date range | 
|---|
| 68 | ; | 
|---|
| 69 | ;Input  : BEGDATE - Encounter date to begin purging from (FileMan) | 
|---|
| 70 | ;                   Defaults to beginning of last fiscal year | 
|---|
| 71 | ;         ENDDATE - Encounter date to end purging at (FileMan) | 
|---|
| 72 | ;                   Defaults to end of last fiscal year | 
|---|
| 73 | ;Output : None | 
|---|
| 74 | ;Notes  : Purging affects the following files | 
|---|
| 75 | ;          - Transmitted Outpatient Encounter file (#409.73) | 
|---|
| 76 | ;          - Deleted Outpatient Encounter file (#409.74) | 
|---|
| 77 | ;          - Transmitted Outpatient Encounter Error file (#409.75) | 
|---|
| 78 | ;          - ACRP Transmission History file (#409.77) | 
|---|
| 79 | ; | 
|---|
| 80 | ;Check input | 
|---|
| 81 | S BEGDATE=+$G(BEGDATE) | 
|---|
| 82 | S:('BEGDATE) BEGDATE=+$P($$DR4FY^SCDXPRGD($$PREVFY^SCDXPRGD()),"^",1) | 
|---|
| 83 | S ENDDATE=+$G(ENDDATE) | 
|---|
| 84 | S:('ENDDATE) ENDDATE=+$P($$DR4FY^SCDXPRGD($$PREVFY^SCDXPRGD()),"^",2) | 
|---|
| 85 | ;Declare variables | 
|---|
| 86 | N TMP,DATE,ENCPTR,XMITPTR,DELPTR,ENCPRG,DELPRG | 
|---|
| 87 | ;Initialize purge counts | 
|---|
| 88 | S (ENCPRG,DELPRG)=0 | 
|---|
| 89 | ;Make begin and end dates opposing midnights | 
|---|
| 90 | S BEGDATE=$P(BEGDATE,".",1) | 
|---|
| 91 | S ENDDATE=$P(ENDDATE,".",1)_".235959" | 
|---|
| 92 | ;Loop through Outpatient Encounter file (#409.68) | 
|---|
| 93 | S DATE=BEGDATE | 
|---|
| 94 | F  S DATE=+$O(^SCE("B",DATE)) Q:(('DATE)!(DATE>ENDDATE))  D  Q:($$S^%ZTLOAD()) | 
|---|
| 95 | .S ENCPTR=0 | 
|---|
| 96 | .F  S ENCPTR=+$O(^SCE("B",DATE,ENCPTR)) Q:('ENCPTR)  D | 
|---|
| 97 | ..;Find associated entry in Transmitted Outpatient Encounter file | 
|---|
| 98 | ..S XMITPTR=+$$FINDXMIT^SCDXFU01(ENCPTR) | 
|---|
| 99 | ..Q:('XMITPTR) | 
|---|
| 100 | ..;Increment purge count | 
|---|
| 101 | ..S ENCPRG=ENCPRG+1 | 
|---|
| 102 | ..;Delete from Transmitted Outpatient Encounter file | 
|---|
| 103 | ..S TMP=$$DELXMIT^SCDXFU03(XMITPTR) | 
|---|
| 104 | ;Task asked to stop (jump to message generation) | 
|---|
| 105 | I ($$S^%ZTLOAD()) G MSG | 
|---|
| 106 | ;Loop through Deleted Outpatient Encounter file (#409.74) | 
|---|
| 107 | S DATE=BEGDATE | 
|---|
| 108 | F  S DATE=+$O(^SD(409.74,"B",DATE)) Q:(('DATE)!(DATE>ENDDATE))  D  Q:($$S^%ZTLOAD()) | 
|---|
| 109 | .S DELPTR=0 | 
|---|
| 110 | .F  S DELPTR=+$O(^SD(409.74,"B",DATE,DELPTR)) Q:('DELPTR)  D | 
|---|
| 111 | ..;Find associated entry in Transmitted Outpatient Encounter file | 
|---|
| 112 | ..S XMITPTR=+$$FINDXMIT^SCDXFU01(0,DELPTR) | 
|---|
| 113 | ..Q:('XMITPTR) | 
|---|
| 114 | ..;Increment purge count | 
|---|
| 115 | ..S DELPRG=DELPRG+1 | 
|---|
| 116 | ..;Delete from Transmitted Outpatient Encounter file | 
|---|
| 117 | ..S TMP=$$DELXMIT^SCDXFU03(XMITPTR) | 
|---|
| 118 | MSG ;Generate completion message | 
|---|
| 119 | K TMP | 
|---|
| 120 | N XMSUB,XMTEXT,XMDUZ,XMY,XMZ | 
|---|
| 121 | ;Build message text | 
|---|
| 122 | I ($$S^%ZTLOAD()) D | 
|---|
| 123 | .;Asked to stop | 
|---|
| 124 | .S TMP(1,0)="** Purging was asked to stop **" | 
|---|
| 125 | .S TMP(2,0)=" " | 
|---|
| 126 | S TMP(3,0)=(ENCPRG+DELPRG)_" entries were purged from the Transmitted Outpatient Encounter file" | 
|---|
| 127 | S TMP(4,0)="(#409.73).  "_ENCPRG_" of them pointed to entries in the Outpatient Encounter" | 
|---|
| 128 | S TMP(5,0)="file (#409.68) and "_DELPRG_" of them pointed to entries in the Deleted Outpatient" | 
|---|
| 129 | S TMP(6,0)="Encounter file (#409.74)." | 
|---|
| 130 | ;Send to current user | 
|---|
| 131 | S XMSUB="Purging of ACRP files from "_$$FMTE^XLFDT(BEGDATE,"2D")_" to "_$$FMTE^XLFDT(ENDDATE,"2D") | 
|---|
| 132 | S XMTEXT="TMP(" | 
|---|
| 133 | S XMDUZ="ACRP PURGER" | 
|---|
| 134 | S XMY(DUZ)="" | 
|---|
| 135 | D ^XMD | 
|---|
| 136 | ;Done | 
|---|
| 137 | Q | 
|---|