| 1 | SCDXRT01 ;ALB/JRP - AMB CARE RETRANSMISSION;09-MAY-1996 | 
|---|
| 2 | ;;5.3;Scheduling;**44**;AUG 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | RTRNRNG ;Mark all [Deleted] Outpatient Encounters for a user specified | 
|---|
| 5 | ; date range for retransmission to the National Ambulatory Care | 
|---|
| 6 | ; Database | 
|---|
| 7 | ; | 
|---|
| 8 | ;Input  : None | 
|---|
| 9 | ;Output : None | 
|---|
| 10 | ;Note   : User is prompted for the date range to retransmit | 
|---|
| 11 | ;       : Encounters that are not contained in the Transmitted | 
|---|
| 12 | ;         Outpatient Encounter file (#409.73) can not be | 
|---|
| 13 | ;         retransmitted | 
|---|
| 14 | ;       : [Deleted] Encounters that occurred before switching to new | 
|---|
| 15 | ;         transmission format can not be retransmitted | 
|---|
| 16 | ;       : [Deleted] Encounters that occurred within the last two days | 
|---|
| 17 | ;         can not be retransmitted | 
|---|
| 18 | ; | 
|---|
| 19 | ;Declare variables | 
|---|
| 20 | N MINDT,MAXDT,SCDXSTRT,SCDXEND,HELPTXT,X,%H,%,%I | 
|---|
| 21 | N ZTSK,ZTDESC,ZTRTN,ZTIO,ZTDTH | 
|---|
| 22 | W !! | 
|---|
| 23 | ;Cut-off date for old transmission format is earliest date | 
|---|
| 24 | ; allowed for retransmission (default to 10/1/96) | 
|---|
| 25 | S MINDT=+$P($G(^SD(404.91,1,"AMB")),"^",2) | 
|---|
| 26 | S:('MINDT) MINDT=2961001 | 
|---|
| 27 | ;Today is the latest date allowed for retransmission | 
|---|
| 28 | D NOW^%DTC | 
|---|
| 29 | S MAXDT=X | 
|---|
| 30 | ;Set up help text for getting beginning and ending dates | 
|---|
| 31 | S HELPTXT("BGN")="Enter the beginning date for retransmitting encounters" | 
|---|
| 32 | S HELPTXT("END")="Enter the ending date for retransmitting encounters" | 
|---|
| 33 | ;Get beginning and ending dates | 
|---|
| 34 | S X=$$GETDTRNG^SCDXUTL1(MINDT,MAXDT,"HELPTXT(""BGN"")","HELPTXT(""END"")") | 
|---|
| 35 | ;User abort / time out | 
|---|
| 36 | Q:(X<0) | 
|---|
| 37 | W !! | 
|---|
| 38 | ;Verify that user wants to do this | 
|---|
| 39 | S SCDXSTRT=$P(X,"^",1) | 
|---|
| 40 | S SCDXEND=$P(X,"^",2) | 
|---|
| 41 | S DIR("A",1)=" " | 
|---|
| 42 | S DIR("A",2)=" " | 
|---|
| 43 | S X=(+$E(SCDXSTRT,4,5))_"/"_(+$E(SCDXSTRT,6,7))_"/"_(1700+$E(SCDXSTRT,1,3)) | 
|---|
| 44 | S DIR("A",3)="All outpatient encounters that occurred between "_X | 
|---|
| 45 | S X=(+$E(SCDXEND,4,5))_"/"_(+$E(SCDXEND,6,7))_"/"_(1700+$E(SCDXEND,1,3)) | 
|---|
| 46 | S DIR("A",4)="and "_X_" will be marked for retransmission to the" | 
|---|
| 47 | S DIR("A",5)="National Patient Care Database." | 
|---|
| 48 | S DIR("A",6)=" " | 
|---|
| 49 | S DIR("A",7)=" " | 
|---|
| 50 | S DIR("A")="Are you sure you want to do this ? " | 
|---|
| 51 | S DIR(0)="YA" | 
|---|
| 52 | D ^DIR | 
|---|
| 53 | ;Not verified / user abort / time out | 
|---|
| 54 | Q:('Y) | 
|---|
| 55 | ;Queue marking for retransmission | 
|---|
| 56 | S ZTRTN="TASKRX^SCDXRT01" | 
|---|
| 57 | S ZTDESC="Mark [Deleted] Outpatient Encounters for retransmission" | 
|---|
| 58 | S ZTDTH=$H | 
|---|
| 59 | S ZTIO="" | 
|---|
| 60 | S ZTSAVE("SCDXSTRT")=SCDXSTRT | 
|---|
| 61 | S ZTSAVE("SCDXEND")=SCDXEND | 
|---|
| 62 | K ZTSK D ^%ZTLOAD | 
|---|
| 63 | W:('$G(ZTSK)) !!,"** UNABLE TO QUEUE MARKING OF ENCOUNTERS FOR RETRANSMISSION **",!! | 
|---|
| 64 | W:($G(ZTSK)) !!,"Marking of encounters for retransmission queued as task number ",ZTSK | 
|---|
| 65 | W !! | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | TASKRX ;Mark all [Deleted] Outpatient Encounters in a given date range | 
|---|
| 69 | ; for retransmission | 
|---|
| 70 | ; | 
|---|
| 71 | ;Input  : SCDXSTRT - Date to begin marking encounters from | 
|---|
| 72 | ;                    (FileMan format) (Required) | 
|---|
| 73 | ;         SCDXEND - Date to end marking encounters at | 
|---|
| 74 | ;                   (FileMan format) (Required) | 
|---|
| 75 | ;Output : None | 
|---|
| 76 | ;Notes  : Encounters that are not contained in the Transmitted | 
|---|
| 77 | ;         Outpatient Encounter file (#409.73) can not be | 
|---|
| 78 | ;         retransmitted | 
|---|
| 79 | ;       : This entry point should be used when marking for | 
|---|
| 80 | ;         retransmission is being queued.  If queued, ZTSTOP will | 
|---|
| 81 | ;         be set accordingly. | 
|---|
| 82 | ; | 
|---|
| 83 | ;Check input | 
|---|
| 84 | Q:('$G(SCDXSTRT)) | 
|---|
| 85 | Q:('$G(SCDXEND)) | 
|---|
| 86 | ;Declare variables | 
|---|
| 87 | N JUNK | 
|---|
| 88 | ;Call module to mark entries for retransmission | 
|---|
| 89 | S JUNK=$$REXMIT(SCDXSTRT,SCDXEND) | 
|---|
| 90 | ;Set ZTSTOP accordingly | 
|---|
| 91 | S:($P(JUNK,"^",4)) ZTSTOP=1 | 
|---|
| 92 | ;Done | 
|---|
| 93 | Q | 
|---|
| 94 | ; | 
|---|
| 95 | REXMIT(STARTDT,ENDDT) ;Mark all [Deleted] Outpatient Encounters in a | 
|---|
| 96 | ; given date range for retransmission | 
|---|
| 97 | ; | 
|---|
| 98 | ;Input  : STARTDT - Date to begin marking encounters from | 
|---|
| 99 | ;                   (FileMan format) (Required) | 
|---|
| 100 | ;         ENDDT - Date to end marking encounters at (FileMan format) | 
|---|
| 101 | ;                 (Required) | 
|---|
| 102 | ;Output : Tot^Enc^Del^Stop - Number of [deleted] encounters marked for | 
|---|
| 103 | ;                            retransmission | 
|---|
| 104 | ;           Tot - Total number of encounters marked | 
|---|
| 105 | ;           Enc - Number of existing encounters marked | 
|---|
| 106 | ;           Del - Number of deleted encounters marked | 
|---|
| 107 | ;           Stop - Flag indicating if task was asked to stop | 
|---|
| 108 | ;             1 = Task was asked to stop | 
|---|
| 109 | ;             0 = Task was not asked to stop | 
|---|
| 110 | ;         0 - No encounters marked / bad input | 
|---|
| 111 | ;Notes  : Encounters that are not contained in the Transmitted | 
|---|
| 112 | ;         Outpatient Encounter file (#409.73) can not be | 
|---|
| 113 | ;         retransmitted | 
|---|
| 114 | ; | 
|---|
| 115 | ;Check input | 
|---|
| 116 | S STARTDT=+$G(STARTDT) | 
|---|
| 117 | Q:('STARTDT) | 
|---|
| 118 | S ENDDT=+$G(ENDDT) | 
|---|
| 119 | Q:('ENDDT) | 
|---|
| 120 | ;Declare variables | 
|---|
| 121 | N XMITPTR,ENCPTR,DELPTR,ENCDATE,EVNTDATE,DELCNT,ENCCNT,STOP,LOOP | 
|---|
| 122 | S STOP=0 | 
|---|
| 123 | ;Add one second before midnight to ending date | 
|---|
| 124 | S ENDDT=ENDDT+.235959 | 
|---|
| 125 | ;Find all deleted encounters that fall in date range | 
|---|
| 126 | S ENCDATE=STARTDT-.000001 | 
|---|
| 127 | S DELCNT=0 | 
|---|
| 128 | F LOOP=1:1 S ENCDATE=+$O(^SD(409.74,"B",ENCDATE)) Q:(('ENCDATE)!(ENCDATE>ENDDT))  D  Q:(STOP) | 
|---|
| 129 | .;Check for request to stop | 
|---|
| 130 | .I ('(LOOP#10)) S STOP=$$S^%ZTLOAD(DELCNT_" encounters have been marked for retransmission") Q:(STOP) | 
|---|
| 131 | .S DELPTR=0 | 
|---|
| 132 | .F  S DELPTR=+$O(^SD(409.74,"B",ENCDATE,DELPTR)) Q:('DELPTR)  D | 
|---|
| 133 | ..;Find entry in Transmitted Outpatient Encounter file | 
|---|
| 134 | ..S XMITPTR=+$O(^SD(409.73,"ADEL",DELPTR,0)) | 
|---|
| 135 | ..;Entry not found - don't retransmit | 
|---|
| 136 | ..Q:('XMITPTR) | 
|---|
| 137 | ..;Mark entry for retransmission | 
|---|
| 138 | ..D STREEVNT^SCDXFU01(XMITPTR,0) | 
|---|
| 139 | ..;Turn on transmission flag | 
|---|
| 140 | ..D XMITFLAG^SCDXFU01(XMITPTR) | 
|---|
| 141 | ..;Increment count of deleted encounters marked | 
|---|
| 142 | ..S DELCNT=DELCNT+1 | 
|---|
| 143 | ;Task was asked to stop - abort | 
|---|
| 144 | Q:(STOP) DELCNT_"^^"_DELCNT_"^1" | 
|---|
| 145 | ;Find all encounters that fall in date range | 
|---|
| 146 | S ENCCNT=0 | 
|---|
| 147 | S ENCDATE=STARTDT-.000001 | 
|---|
| 148 | F LOOP=1:1 S ENCDATE=+$O(^SCE("B",ENCDATE)) Q:(('ENCDATE)!(ENCDATE>ENDDT))  D  Q:(STOP) | 
|---|
| 149 | .;Check for request to stop | 
|---|
| 150 | .I ('(LOOP#10)) S STOP=$$S^%ZTLOAD((ENCCNT+DELCNT)_" encounters have been marked for retransmission") Q:(STOP) | 
|---|
| 151 | .S ENCPTR=0 | 
|---|
| 152 | .F  S ENCPTR=+$O(^SCE("B",ENCDATE,ENCPTR)) Q:('ENCPTR)  D | 
|---|
| 153 | ..;Find entry in Transmitted Outpatient Encounter file | 
|---|
| 154 | ..S XMITPTR=+$O(^SD(409.73,"AENC",ENCPTR,0)) | 
|---|
| 155 | ..;Entry not found - don't retransmit | 
|---|
| 156 | ..Q:('XMITPTR) | 
|---|
| 157 | ..;Mark entry for retransmission | 
|---|
| 158 | ..D STREEVNT^SCDXFU01(XMITPTR,0) | 
|---|
| 159 | ..;Turn on transmission flag | 
|---|
| 160 | ..D XMITFLAG^SCDXFU01(XMITPTR) | 
|---|
| 161 | ..;Increment count of encounters marked | 
|---|
| 162 | ..S ENCCNT=ENCCNT+1 | 
|---|
| 163 | ;Done | 
|---|
| 164 | Q (DELCNT+ENCCNT)_"^"_ENCCNT_"^"_DELCNT_"^"_STOP | 
|---|