| 1 | EASMTL10 ;MIN/TCM ALB/SCK,AMA - AUTOMATED MEANS TEST LETTERS - RERUN LETTERS ; 7/17/01 | 
|---|
| 2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**3,15,28,80**;Mar 15, 2001;Build 1 | 
|---|
| 3 | ; | 
|---|
| 4 | RERUN ;  Main entry point to rerun a processing date | 
|---|
| 5 | N EASDDD,EASLOC,EATYP,XX | 
|---|
| 6 | ; | 
|---|
| 7 | D:'$G(IOF) HOME^%ZIS | 
|---|
| 8 | W @IOF | 
|---|
| 9 | F XX=1:1:7 W !?2,$P($T(NOTICE+XX),";;",2) | 
|---|
| 10 | ; | 
|---|
| 11 | Q:'$$FILTER(.EASLOC)  ; Select Filter action, quit on uparrow | 
|---|
| 12 | Q:'$$LTRTYPE(.EATYP)  ; Select type of letter to reprint, quit on uparrow | 
|---|
| 13 | Q:'$$ASKDT(EATYP,.EASDDD)  ; Select date to reprint letters from, quit on uparrow | 
|---|
| 14 | D QUE1 | 
|---|
| 15 | Q | 
|---|
| 16 | ; | 
|---|
| 17 | FILTER(EASLOC) ; Filter by Patient Preferred Location | 
|---|
| 18 | ; Input:  None | 
|---|
| 19 | ; | 
|---|
| 20 | ; Output: EASLOC  -1 if an error occurred | 
|---|
| 21 | ;                  0 if not filtering by location | 
|---|
| 22 | ;                nnn IEN of filtered facility in the INSTITUTION File | 
|---|
| 23 | ; | 
|---|
| 24 | ;         RESULT   1 if result of function Ok | 
|---|
| 25 | ;                  0 if user enters "^" or exits | 
|---|
| 26 | ; | 
|---|
| 27 | N DIR,DIRUT | 
|---|
| 28 | ; | 
|---|
| 29 | S EASLOC=-1 | 
|---|
| 30 | I $$GET1^DIQ(713,1,8,"I") D  Q:$D(DIRUT) 0 | 
|---|
| 31 | . S DIR(0)="YAO",DIR("A")="Filter letters by Preferred Facility? " | 
|---|
| 32 | . S DIR("B")="NO" | 
|---|
| 33 | . S DIR("?")="Enter 'YES' to limit letters to a specific Facility or 'NO' to print all letters" | 
|---|
| 34 | . D ^DIR K DIR | 
|---|
| 35 | . Q:$D(DIRUT) | 
|---|
| 36 | . I 'Y S EASLOC=0 Q | 
|---|
| 37 | . S DIR(0)="P^EAS(713,1,2,:QEM" | 
|---|
| 38 | . S EASLOC=$$FACNUM^EASMTL6 | 
|---|
| 39 | E  D | 
|---|
| 40 | . S EASLOC=0 | 
|---|
| 41 | Q 1 | 
|---|
| 42 | ; | 
|---|
| 43 | ASKDT(EATYP,EASDDD) ; Ask for processing date to look for letters | 
|---|
| 44 | ; Input   EATYP    Type of letter to be reprinted | 
|---|
| 45 | ; | 
|---|
| 46 | ; Output  EASDDD   Selected processing date for type of letter | 
|---|
| 47 | ;                  to be reprinted | 
|---|
| 48 | ; | 
|---|
| 49 | ;         RESULT   1 if result of function Ok | 
|---|
| 50 | ;                  0 if user enters "^" or exits | 
|---|
| 51 | ; | 
|---|
| 52 | N EASDT,RSLT,EAX,EASOFST | 
|---|
| 53 | ; | 
|---|
| 54 | S RSLT=0 | 
|---|
| 55 | AGN S EASDT=$$GETDT | 
|---|
| 56 | G:EASDT<0 ASKQ | 
|---|
| 57 | ; | 
|---|
| 58 | S EASOFST=$S(EATYP=2:30,EATYP=4:60,1:0) | 
|---|
| 59 | S EAX=$$FMADD^XLFDT(EASDT,-EASOFST,0,0,-1) | 
|---|
| 60 | S EAX=$O(^EAS(713.2,"AD",EAX)) | 
|---|
| 61 | I 'EAX D  G AGN | 
|---|
| 62 | . W !!,"No valid processing date could be found for ",$S(EATYP=2:30,EATYP=4:0,1:60),"-day letters for ",$$FMTE^XLFDT(EASDT),"." | 
|---|
| 63 | . W !,"Please select another date." | 
|---|
| 64 | ; | 
|---|
| 65 | W !!,"To re-print "_$S(EATYP=2:30,EATYP=4:0,1:60)_"-day letters for "_$$FMTE^XLFDT(EASDT) | 
|---|
| 66 | W !,"the Search/Processing date of "_$$FMTE^XLFDT(EAX)_" will be used." | 
|---|
| 67 | ;EAS*1.0*80 -- to avoid confusion, changed "ALL" to "all valid" | 
|---|
| 68 | W !,"Please note: all valid "_$S(EATYP=2:30,EATYP=4:0,1:60)_"-day letters for this processing date will print" | 
|---|
| 69 | ; | 
|---|
| 70 | S DIR(0)="YAO" | 
|---|
| 71 | S DIR("?")="Enter 'YES' to use the "_$$FMTE^XLFDT(EAX)_" date.  Enter 'NO' to select a different date." | 
|---|
| 72 | S DIR("A")="Do you wish to use this date? " | 
|---|
| 73 | S DIR("B")="YES" | 
|---|
| 74 | D ^DIR K DIR | 
|---|
| 75 | I $D(DIRUT) G ASKQ | 
|---|
| 76 | I 'Y G AGN | 
|---|
| 77 | ; | 
|---|
| 78 | S EASDDD=EAX | 
|---|
| 79 | S RSLT=1 | 
|---|
| 80 | ASKQ Q RSLT | 
|---|
| 81 | ; | 
|---|
| 82 | GETDT() ; | 
|---|
| 83 | N DIR,DIRUT | 
|---|
| 84 | ; | 
|---|
| 85 | S DIR(0)="DAO^:DT:EP" | 
|---|
| 86 | S DIR("?")="Select the date for the letters you wish to re-print." | 
|---|
| 87 | S DIR("A")="Enter re-print date: " | 
|---|
| 88 | D ^DIR K DIR | 
|---|
| 89 | S:$D(DIRUT) Y=-1 | 
|---|
| 90 | Q +Y | 
|---|
| 91 | ; | 
|---|
| 92 | LTRTYPE(EATYP) ;  Ask for a specific type of letter to print | 
|---|
| 93 | ; Input           None | 
|---|
| 94 | ; | 
|---|
| 95 | ; Output  EATYP    Type of letter to reprint | 
|---|
| 96 | ;                  1 - 60-day letter | 
|---|
| 97 | ;                  2 - 30-day letter | 
|---|
| 98 | ;                  4 - 0-day letter | 
|---|
| 99 | ; | 
|---|
| 100 | ;         RESULT   1 if result of function Ok | 
|---|
| 101 | ;                  0 if user enters "^" or exits | 
|---|
| 102 | ; | 
|---|
| 103 | N DIR,DIRUT | 
|---|
| 104 | ; | 
|---|
| 105 | S DIR(0)="SO^1:60-Day;2:30-Day;4:0-Day" | 
|---|
| 106 | S DIR("A")="Select letter type",DIR("A",1)="" | 
|---|
| 107 | S DIR("?")="Select the type of letter to re-print " | 
|---|
| 108 | D ^DIR K DIR | 
|---|
| 109 | Q:$D(DIRUT) 0 | 
|---|
| 110 | S EATYP=+Y | 
|---|
| 111 | Q 1 | 
|---|
| 112 | ; | 
|---|
| 113 | QUE1 ;  Queue off the print job | 
|---|
| 114 | K IOP,IO("Q") | 
|---|
| 115 | N POP  ;EAS*1.0*80 | 
|---|
| 116 | ; | 
|---|
| 117 | S %ZIS="QP",%ZIS("B")=$$GET1^DIQ(713,1,5) | 
|---|
| 118 | D ^%ZIS K %ZIS | 
|---|
| 119 | Q:POP | 
|---|
| 120 | I $D(IO("Q")) D QUEIT Q | 
|---|
| 121 | D EN1 | 
|---|
| 122 | D ^%ZISC | 
|---|
| 123 | Q | 
|---|
| 124 | ; | 
|---|
| 125 | QUEIT ; | 
|---|
| 126 | N ZTRTN,ZTDESC,EASX,ZTSAVE,ZTSK,ZTDTH,ZTQUEUED | 
|---|
| 127 | ; | 
|---|
| 128 | S ZTRTN="EN1^EASMTL10" | 
|---|
| 129 | S ZTDESC="EAS MT LETTERS REPRINT" | 
|---|
| 130 | F EASX="EASDDD","EATYP","EASLOC" S ZTSAVE(EASX)="" | 
|---|
| 131 | S ZTDTH="NOW" | 
|---|
| 132 | ; | 
|---|
| 133 | D ^%ZTLOAD | 
|---|
| 134 | I $D(ZTSK)[0 W !!?5,"Reprint canceled" | 
|---|
| 135 | E  W !!?5,"Letters queued, [",ZTSK,"]" | 
|---|
| 136 | D HOME^%ZIS | 
|---|
| 137 | Q | 
|---|
| 138 | ; | 
|---|
| 139 | EN1 ;  Queued entry point for letter rerun | 
|---|
| 140 | N EASIEN,EASABRT,EASTMP | 
|---|
| 141 | ; | 
|---|
| 142 | S EASTMP="^TMP(""EASRP"",$J)" | 
|---|
| 143 | K @EASTMP | 
|---|
| 144 | ; | 
|---|
| 145 | I '$D(ZTQUEUED) W !,"...Gathering letters to re-print..." | 
|---|
| 146 | D BLD(EATYP,EASLOC,EASDDD,EASTMP) | 
|---|
| 147 | I '$D(ZTQUEUED),'$D(@EASTMP) D  Q | 
|---|
| 148 | . W !?3,$CHAR(7),">> No letters found to reprint for these parameters.",! | 
|---|
| 149 | D PRINT(EASTMP,EATYP) | 
|---|
| 150 | K @EASTMP | 
|---|
| 151 | Q | 
|---|
| 152 | ; | 
|---|
| 153 | PRINT(EASTMP,EATYP) ; | 
|---|
| 154 | N EASIEN,EASABRT | 
|---|
| 155 | ; | 
|---|
| 156 | U IO | 
|---|
| 157 | S EASIEN=0 | 
|---|
| 158 | F  S EASIEN=$O(@EASTMP@(EASIEN)) Q:'EASIEN  D  Q:$G(EASABRT) | 
|---|
| 159 | . D LETTER^EASMTL6A(EASIEN,EATYP) | 
|---|
| 160 | . I '$D(IO("Q")),$E(IOST,1,2)="C-" D | 
|---|
| 161 | . . S DIR(0)="E" | 
|---|
| 162 | . . D ^DIR K DIR | 
|---|
| 163 | . . S:'Y EASABRT=1 | 
|---|
| 164 | Q | 
|---|
| 165 | ; | 
|---|
| 166 | BLD(EATYP,EASLOC,EASDDD,EASTMP) ;  Sort letters for processing date in groups by type | 
|---|
| 167 | N EASIEN,EASPTR,DFN,EASLTR | 
|---|
| 168 | ; | 
|---|
| 169 | S EASIEN=0 | 
|---|
| 170 | F  S EASIEN=$O(^EAS(713.2,"AD",EASDDD,EASIEN)) Q:'EASIEN  D | 
|---|
| 171 | . ; Begin Checks | 
|---|
| 172 | . S EASPTR=$$GET1^DIQ(713.2,EASIEN,2,"I") | 
|---|
| 173 | . S DFN=$$GET1^DIQ(713.1,EASPTR,.01,"I") | 
|---|
| 174 | . ;; Filter by site, Quit if filter not met | 
|---|
| 175 | . I +$G(EASLOC)>0 Q:$$GET1^DIQ(2,DFN,27.02,"I")'=+EASLOC | 
|---|
| 176 | . Q:'$$THRSHLD^EASMTL6(EATYP,EASIEN)  ; Quit if letter threshold not met | 
|---|
| 177 | . Q:$D(^EAS(713.2,"AC",1,EASIEN))  ; Quit if MT has been returned | 
|---|
| 178 | . Q:$D(^EAS(713.1,"AP",1,EASPTR))  ; Quit if prohibit flag set | 
|---|
| 179 | . Q:$$CHECKMT^EASMTUTL(EASPTR,EASIEN)  ; Quit if MT no longer required | 
|---|
| 180 | . Q:$$FUTMT^EASMTUTL(EASIEN)  ; Quit if future MT on file | 
|---|
| 181 | . Q:$$DECEASED^EASMTUTL(EASIEN)  ; Quit if patient deceased | 
|---|
| 182 | . I $$CHKADR^EASMTL6A(EASPTR),EATYP'=3 Q  ; Quit if bad address | 
|---|
| 183 | . ;EAS*1.0*80 -- copied User Enrollee check from BLD^EASMTL6 | 
|---|
| 184 | . N EASUE S EASUE=$$UESTAT^EASUER(DFN) | 
|---|
| 185 | . Q:(EASUE'=1)  ; Quit if User Enrollee site is not this facility | 
|---|
| 186 | . S @EASTMP@(EASIEN)=EATYP | 
|---|
| 187 | Q | 
|---|
| 188 | ; | 
|---|
| 189 | SINGLE ;  Rerun a single letter | 
|---|
| 190 | N Y,DIR,DIRUT,EASPTR,DFN,EASIEN,ZTSAVE,EASLOC,IOP,EAX,PRNOVRD | 
|---|
| 191 | ; | 
|---|
| 192 | ASKPAT ;  Select patient to reprint a letter for | 
|---|
| 193 | S DIR(0)="PAO^713.1:EMZ" | 
|---|
| 194 | S DIR("A")="Select PATIENT: " | 
|---|
| 195 | S DIR("?")="Select Patient Letter status entry to reprint" | 
|---|
| 196 | D ^DIR K DIR | 
|---|
| 197 | Q:$D(DIRUT) | 
|---|
| 198 | S EASPTR=+Y ; Ptr to file 713.1 | 
|---|
| 199 | S DFN=+Y(0) | 
|---|
| 200 | Q:'DFN | 
|---|
| 201 | ; | 
|---|
| 202 | I $D(^EAS(713.1,"AP",1,EASPTR)) D  Q | 
|---|
| 203 | . W !!?4,$CHAR(7),"The Prohibit flag is set for this patient" | 
|---|
| 204 | I $$DECEASED^EASMTUTL("",DFN) D  Q | 
|---|
| 205 | . W !!?4,$CHAR(7),"Patient is deceased" | 
|---|
| 206 | ; | 
|---|
| 207 | ASKLTR ;  Select LETTER STATUS file entry | 
|---|
| 208 | S DIR(0)="P^713.2:EMZ" | 
|---|
| 209 | S DIR("?",1)="Select Processing Date: " | 
|---|
| 210 | S DIR("A")="Select the letter processing date for this patient" | 
|---|
| 211 | S DIR("S")="I $P(^(0),U,2)=EASPTR" ; Set screen for selected patient | 
|---|
| 212 | D ^DIR K DIR | 
|---|
| 213 | Q:$D(DIRUT) | 
|---|
| 214 | S EASIEN=+Y | 
|---|
| 215 | ; | 
|---|
| 216 | I $$GET1^DIQ(713.2,EASIEN,4,"I") D  Q | 
|---|
| 217 | . W !!?4,$CHAR(7),"A Means Test has already been returned by this patient" | 
|---|
| 218 | ; | 
|---|
| 219 | I $$CHECKMT^EASMTUTL(EASPTR,EASIEN) D  Q | 
|---|
| 220 | . W !!?4,$CHAR(7),"Patient's Means Test is no longer required" | 
|---|
| 221 | ; | 
|---|
| 222 | ASKTYP ; Allow only letters already sent to be reprinted | 
|---|
| 223 | N EASSC,EAX | 
|---|
| 224 | ; | 
|---|
| 225 | F EAX=6,4,"Z" D | 
|---|
| 226 | . I $P(^EAS(713.2,EASIEN,EAX),U,3) D | 
|---|
| 227 | . . I EAX=6 S EASSC=$G(EASSC)_"1:60-Day;" | 
|---|
| 228 | . . I EAX=4 S EASSC=$G(EASSC)_"2:30-Day;" | 
|---|
| 229 | . . I EAX="Z" S EASSC=$G(EASSC)_"4:0-Day" | 
|---|
| 230 | I $G(EASSC)']""  D  Q | 
|---|
| 231 | . W !!?4,$CHAR(7),"There are no letters to re-print for this patient" | 
|---|
| 232 | ; | 
|---|
| 233 | S DIR(0)="SO^"_EASSC,DIR("A")="Select letter type" | 
|---|
| 234 | S DIR("?")="Select letter type to re-print" | 
|---|
| 235 | D ^DIR K DIR | 
|---|
| 236 | Q:$D(DIRUT) | 
|---|
| 237 | S EATYP=+Y | 
|---|
| 238 | ; | 
|---|
| 239 | QUE2 ;  Que off print letter | 
|---|
| 240 | S ZTSAVE("EASIEN")="",ZTSAVE("EASPTR")="",ZTSAVE("EATYP")="",ZTSAVE("EASLOC")="" | 
|---|
| 241 | D EN^XUTMDEVQ("EN2^EASMTL10","EAS MT RERUN SINGLE LETTER",.ZTSAVE) | 
|---|
| 242 | Q | 
|---|
| 243 | ; | 
|---|
| 244 | EN2 ;  Queued entry point to re-run a single letter | 
|---|
| 245 | ; | 
|---|
| 246 | D LETTER^EASMTL6A(EASIEN,EATYP) | 
|---|
| 247 | Q | 
|---|
| 248 | ; | 
|---|
| 249 | LIST ;  List last processing dates for the Letter Status file | 
|---|
| 250 | N EAX | 
|---|
| 251 | ; | 
|---|
| 252 | W !!,"Available Processing Dates:" | 
|---|
| 253 | S EAX=0 | 
|---|
| 254 | F  S EAX=$O(^EAS(713.2,"AD",EAX)) Q:'EAX  D | 
|---|
| 255 | . W !?6,$$FMTE^XLFDT(EAX,"2D") | 
|---|
| 256 | Q | 
|---|
| 257 | ; | 
|---|
| 258 | NOTICE ; | 
|---|
| 259 | ;;Means Test Letters are indexed by the date on which the MT Letter search | 
|---|
| 260 | ;;occurred and is dependent on the frequency the search job is run at your | 
|---|
| 261 | ;;site.  When you select the reprint date for a letter, the software will | 
|---|
| 262 | ;;try to determine the appropriate search (processing) date required to print | 
|---|
| 263 | ;;the desired letters.  If the letters printed are not the desired letters, | 
|---|
| 264 | ;;you may need to try a later date. | 
|---|
| 265 | ;; | 
|---|