| 1 | EAS155PT ;ALB/SCK - PATCH 55 USER ENROLLEE MT LETTER CLEANUP ; 9-AUG-04 | 
|---|
| 2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**55**;Mar 15, 2004 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | CHECK ; | 
|---|
| 7 | N CURSTN,CURSITE,PRNT,PTYP | 
|---|
| 8 | N MSG,XMDUZ,XMSUB,XMTEXT,XMY,XX | 
|---|
| 9 | ; | 
|---|
| 10 | S XMSUB="EAS*1*55 PARENT CHECK" | 
|---|
| 11 | S XMDUZ="EAS*1*55" | 
|---|
| 12 | S XMY(.5)="",XMY(DUZ)="" | 
|---|
| 13 | S XMTEXT="MSG(" | 
|---|
| 14 | ; | 
|---|
| 15 | S CURSITE=$P($$SITE^VASITE,U,3) | 
|---|
| 16 | S CURSTN=$$STA^XUAF4(CURSITE) | 
|---|
| 17 | S PRNT=$$PRNT^XUAF4(CURSITE) | 
|---|
| 18 | S PTYP=$$GET1^DIQ(4,+PRNT,13) | 
|---|
| 19 | ; | 
|---|
| 20 | S MSG(1)="Current Site: "_CURSITE | 
|---|
| 21 | S MSG(2)="Current Station: "_$$GET1^DIQ(4,CURSTN,.01)_" ("_CURSTN_")" | 
|---|
| 22 | S MSG(3)="Parent Facility: "_$P(PRNT,U,3) | 
|---|
| 23 | S MSG(4)="Parent Type: "_PTYP | 
|---|
| 24 | S MSG(5)="" | 
|---|
| 25 | I PTYP="HCS" D | 
|---|
| 26 | . S MSG(6)="Because your parent facility type is ""HCS"", it's recommended that you run" | 
|---|
| 27 | . S MSG(7)="the MT Letter cleanup at this time.  Please refer to the patch for directions" | 
|---|
| 28 | E  D | 
|---|
| 29 | . S MSG(6)="Your parent facility type does not appear to be of type ""HCS"". " | 
|---|
| 30 | . S MSG(7)="It is not recommended that you run the MT letter cleanup at this time" | 
|---|
| 31 | . S MSG(8)="If you are experiencing problems with the MT Letters, please contact EVS." | 
|---|
| 32 | D MES^XPDUTL(.MSG) | 
|---|
| 33 | D ^XMD | 
|---|
| 34 | ; | 
|---|
| 35 | Q | 
|---|
| 36 | ; | 
|---|
| 37 | EN ; Que off the background task | 
|---|
| 38 | N ZTRTN,ZTDESC,ZTSK,ZTIO,ZTDH,MSG,ZTSAVE | 
|---|
| 39 | ; | 
|---|
| 40 | W !,"Preparing to run the EAS*1*55 MT Letters Cleanup" | 
|---|
| 41 | W !,"After the cleanup, you will be sent a MailMan summary of the cleanup" | 
|---|
| 42 | W !,"statistics.  You will also be asked to select a printer to send the" | 
|---|
| 43 | W !,"detailed results to.  This report could be quite lengthy.  Please " | 
|---|
| 44 | W !,"DO NOT run the report to your screen!",! | 
|---|
| 45 | D ^%ZIS | 
|---|
| 46 | S ZTRTN="LETTERS^EAS155PT" | 
|---|
| 47 | S ZTDH=$$NOW^XLFDT | 
|---|
| 48 | S ZTSAVE("DUZ")="" | 
|---|
| 49 | S ZTDESC="EAS155 MT LETTER CLEANUP FOR UE STATUS" | 
|---|
| 50 | D ^%ZTLOAD | 
|---|
| 51 | I $D(ZTSK) W !!?5,"Task: "_ZTSK_" Queued." | 
|---|
| 52 | D HOME^%ZIS | 
|---|
| 53 | Q | 
|---|
| 54 | ; | 
|---|
| 55 | LETTERS ; Reflag those MT letters which need to be updated for UE Status update | 
|---|
| 56 | N EASIEN,EASPTR,EASDFN,EASLTR,EASCNT,XX | 
|---|
| 57 | ; | 
|---|
| 58 | K ^TMP("EAS155P",$J) | 
|---|
| 59 | S ^TMP("EAS155P",$J,"START")=$H,^TMP("EAS155P",$J,"COUNT")=0,^TMP("EAS155P",$J,"NOCHANGE")=0 | 
|---|
| 60 | ; | 
|---|
| 61 | F XX="60D","30D","0D","OFF" S EASCNT(XX)=0 | 
|---|
| 62 | S EASIEN=0 | 
|---|
| 63 | F  S EASIEN=$O(^EAS(713.2,"AC",0,EASIEN)) Q:'EASIEN  D | 
|---|
| 64 | . S EASPTR=$$GET1^DIQ(713.2,EASIEN,2,"I") | 
|---|
| 65 | . Q:$D(^EAS(713.1,"AP",1,EASPTR))  ; Quit if Letter Prohibit Flag set | 
|---|
| 66 | . Q:$$DECEASED^EASMTUTL(EASIEN)  ; Quit if patient deceased | 
|---|
| 67 | . ; ** Safety check for bad patient pointers in 713.1 | 
|---|
| 68 | . Q:$$GET1^DIQ(713.2,EASIEN,2)']"" | 
|---|
| 69 | . D TESTLTR(EASIEN) | 
|---|
| 70 | ; | 
|---|
| 71 | S ^TMP("EAS155P",$J,"END")=$H | 
|---|
| 72 | D MAIL | 
|---|
| 73 | D REPORT | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | TESTLTR(EASIEN) ; Test letter conditions | 
|---|
| 77 | N NODE6,NODE4,NODEZ,IENS,FDA,FIN | 
|---|
| 78 | ; | 
|---|
| 79 | S ^TMP("EAS155P",$J,"COUNT")=^TMP("EAS155P",$J,"COUNT")+1 | 
|---|
| 80 | ; Piece 1: Threshold date, Piece 2: Flag-to-print, Piece 3: Letter Printed?, Piece 4: Date printed | 
|---|
| 81 | S NODE6=$G(^EAS(713.2,EASIEN,6)) | 
|---|
| 82 | S NODE4=$G(^EAS(713.2,EASIEN,4)) | 
|---|
| 83 | S NODEZ=$G(^EAS(713.2,EASIEN,"Z")) | 
|---|
| 84 | ; | 
|---|
| 85 | ; Check 1, check if letters have been completely turned off, No flags to print and no letters printed.  Turn back on most appropriate letter. | 
|---|
| 86 | I '$P(NODE6,U,3),'$P(NODE4,U,3),'$P(NODEZ,U,3) D  Q:$G(FIN) | 
|---|
| 87 | . I '$P(NODE6,U,2),'$P(NODE4,U,2),'$P(NODEZ,U,2) D | 
|---|
| 88 | . . I $P(NODEZ,U)<DT D  Q | 
|---|
| 89 | . . . S EASCNT("0D")=EASCNT("0D")+1 | 
|---|
| 90 | . . . S ^TMP("EAS155P",$J,"0D",EASIEN)="" | 
|---|
| 91 | . . . S FDA(1,713.2,EASIEN_",",18)="YES" | 
|---|
| 92 | . . . S FDA(1,713.2,EASIEN_",",9)="NO" | 
|---|
| 93 | . . . S FDA(1,713.2,EASIEN_",",12)="NO",FIN=1 | 
|---|
| 94 | . . . D FILE^DIE("E","FDA(1)") | 
|---|
| 95 | . . I $P(NODE4,U)<DT D  Q | 
|---|
| 96 | . . . S EASCNT("30D")=EASCNT("30D")+1 | 
|---|
| 97 | . . . S ^TMP("EAS155P",$J,"30D",EASIEN)="" | 
|---|
| 98 | . . . S FDA(1,713.2,EASIEN_",",12)="YES" | 
|---|
| 99 | . . . S FDA(1,713.2,EASIEN_",",9)="NO" | 
|---|
| 100 | . . . S FDA(1,713.2,EASIEN_",",18)="NO",FIN=1 | 
|---|
| 101 | . . . D FILE^DIE("E","FDA(1)") | 
|---|
| 102 | . . S EASCNT("60D")=EASCNT("6OD")+1 | 
|---|
| 103 | . . S ^TMP("EAS155P",$J,"60D",EASIEN)="" | 
|---|
| 104 | . . S FDA(1,713.2,EASIEN_",",9)="YES" | 
|---|
| 105 | . . S FDA(1,713.2,EASIEN_",",12)="NO" | 
|---|
| 106 | . . S FDA(1,713.2,EASIEN_",",18)="NO",FIN=1 | 
|---|
| 107 | . . D FILE^DIE("E","FDA(1)") | 
|---|
| 108 | ; | 
|---|
| 109 | ; Check 2, check if 60d ltrs have not been printed, but 30d ltrs are flagged to print. | 
|---|
| 110 | I '$P(NODE6,U,3)&($P(NODE4,U,2))&($P(NODE4,U,1)>DT) D  Q:$G(FIN) | 
|---|
| 111 | . S EASCNT("60D")=EASCNT("60D")+1 | 
|---|
| 112 | . S ^TMP("EAS155P",$J,"60D",EASIEN)="" | 
|---|
| 113 | . S FDA(1,713.2,EASIEN_",",9)="YES" | 
|---|
| 114 | . S FDA(1,713.2,EASIEN_",",12)="NO" | 
|---|
| 115 | . D FILE^DIE("E","FDA(1)") | 
|---|
| 116 | . S FIN=1 | 
|---|
| 117 | ; | 
|---|
| 118 | ; Check 3, if the 60d ltr has been printed AND the 30d ltr has not AND the | 
|---|
| 119 | ; 0d ltr is flagged to print. | 
|---|
| 120 | I $P(NODE6,U,3)&('$P(NODE4,U,3))&($P(NODEZ,U,2))&($P(NODEZ,U,1)>DT) D  Q:$G(FIN) | 
|---|
| 121 | . S EASCNT("30D")=EASCNT("30D")+1 | 
|---|
| 122 | . S ^TMP("EAS155P",$J,"30D",EASIEN)="" | 
|---|
| 123 | . S FDA(1,713.2,EASIEN_",",12)="YES" | 
|---|
| 124 | . S FDA(1,713.2,EASIEN_",",18)="NO" | 
|---|
| 125 | . D FILE^DIE("E","FDA(1)") | 
|---|
| 126 | . S FIN=1 | 
|---|
| 127 | ; | 
|---|
| 128 | ; Check 4, if the 30d ltr has been printed and the 0d has not AND is not flagged. | 
|---|
| 129 | I $P(NODE4,U,3)&('$P(NODEZ,U,3))&('$P(NODEZ,U,2)) D  Q | 
|---|
| 130 | . S EASCNT("0D")=EASCNT("0D")+1 | 
|---|
| 131 | . S ^TMP("EAS155P",$J,"0D",EASIEN)="" | 
|---|
| 132 | . S FDA(1,713.2,EASIEN_",",18)="YES" | 
|---|
| 133 | . D FILE^DIE("E","FDA(1)") | 
|---|
| 134 | ; | 
|---|
| 135 | S ^TMP("EAS155P",$J,"NOCHANGE")=^TMP("EAS155P",$J,"NOCHANGE")+1 | 
|---|
| 136 | Q | 
|---|
| 137 | ; | 
|---|
| 138 | UPD(FDA) ;  Update file entry | 
|---|
| 139 | N ERR | 
|---|
| 140 | ; | 
|---|
| 141 | D FILE^DIE("E","FDA(1)","ERR") | 
|---|
| 142 | Q | 
|---|
| 143 | ; | 
|---|
| 144 | MAIL ; | 
|---|
| 145 | N MSG,XMDUZ,XMSUB,XMTEXT,XMY,XX | 
|---|
| 146 | ; | 
|---|
| 147 | S (XMDUZ,XMSUB)="EAS*1*55 CLEANUP" | 
|---|
| 148 | S XMY(.5)="",XMY(DUZ)="" | 
|---|
| 149 | S XMTEXT="MSG(" | 
|---|
| 150 | S MSG(10)="Begin: "_$$HTE^XLFDT(^TMP("EAS155P",$J,"START")) | 
|---|
| 151 | S MSG(20)="End:   "_$$HTE^XLFDT(^TMP("EAS155P",$J,"END")) | 
|---|
| 152 | S MSG(30)="Processing Time: "_$$HDIFF^XLFDT(^TMP("EAS155P",$J,"END"),^TMP("EAS155P",$J,"START"),3) | 
|---|
| 153 | S MSG(31)="" | 
|---|
| 154 | S MSG(35)="   Turned Off:    "_EASCNT("OFF") | 
|---|
| 155 | S MSG(40)="60-Day Letters:   "_EASCNT("60D") | 
|---|
| 156 | S MSG(50)="30-Day Letters:   "_EASCNT("30D") | 
|---|
| 157 | S MSG(60)=" 0-Day Letters:   "_EASCNT("0D") | 
|---|
| 158 | S MSG(65)="" | 
|---|
| 159 | S MSG(70)="No action required: "_^TMP("EAS155P",$J,"NOCHANGE") | 
|---|
| 160 | D ^XMD | 
|---|
| 161 | Q | 
|---|
| 162 | ; | 
|---|
| 163 | REPORT ; | 
|---|
| 164 | N EAX,PAGE,EANAME,EASIEN,EASLTR | 
|---|
| 165 | ; | 
|---|
| 166 | U IO | 
|---|
| 167 | S (PAGE,EAX)=0 | 
|---|
| 168 | F EASLTR="60D","30D","0D" D | 
|---|
| 169 | . D HDR | 
|---|
| 170 | . I EASCNT(EASLTR)'>0 D  Q | 
|---|
| 171 | . . W !!,"There were no letters reset for this letter type" | 
|---|
| 172 | . S EASIEN=0 | 
|---|
| 173 | . F  S EASIEN=$O(^TMP("EAS155P",$J,EASLTR,EASIEN)) Q:EASIEN']""  D | 
|---|
| 174 | . . W !,$$GET1^DIQ(713.2,EASIEN,2),?35,EASIEN,?55,$$GET1^DIQ(713.2,EASIEN,.01) | 
|---|
| 175 | . . I ($Y+6)>IOSL D HDR | 
|---|
| 176 | D FTR | 
|---|
| 177 | Q | 
|---|
| 178 | ; | 
|---|
| 179 | HDR ; | 
|---|
| 180 | N DDASH,LINE,PART1,PART2,SPACE | 
|---|
| 181 | ; | 
|---|
| 182 | W @IOF | 
|---|
| 183 | S PAGE=PAGE+1 | 
|---|
| 184 | W !,"Patch EAS*1*55 MT Letter Cleanup Results" | 
|---|
| 185 | S PART1="Run Date: "_$$FMTE^XLFDT(DT) | 
|---|
| 186 | S PART2="Page: "_PAGE | 
|---|
| 187 | S SPACE=IOM,SPACE=SPACE-($L(PART1)+$L(PART2)) | 
|---|
| 188 | S $P(LINE," ",SPACE)="" | 
|---|
| 189 | W !,PART1,LINE,PART2 | 
|---|
| 190 | W !!,$S(EASLTR="60D":"60-Day",EASLTR="30D":"30-Day",EASLTR="0D":"0-Day",1:"")," Letters for the following Veterans have been reset" | 
|---|
| 191 | W !?5,"Name",?35,"File 713.2 IEN",?55,"Processing Date" | 
|---|
| 192 | S $P(DDASH,"=",IOM)="" W !,DDASH | 
|---|
| 193 | Q | 
|---|
| 194 | ; | 
|---|
| 195 | FTR ; | 
|---|
| 196 | W !!!!?5,"60-Day Letters:   "_EASCNT("60D") | 
|---|
| 197 | W !?5,"30-Day Letters:   "_EASCNT("30D") | 
|---|
| 198 | W !?5," 0-Day Letters:   "_EASCNT("0D") | 
|---|
| 199 | Q | 
|---|