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