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