| 1 | EASMTRP1 ;ALB/GAH - MEANS TEST DAILY EXPIRATION REPORT ; 10/10/2006 | 
|---|
| 2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**3,13,46,77**;MAR 15,2001;Build 11 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ; Interactive report generation, select date range | 
|---|
| 5 | N EDATE,ERROR,MTREC,PIEN,VARR,RCNT,ACNT,DGARRAY,SDCNT,I | 
|---|
| 6 | ; | 
|---|
| 7 | D HOME^%ZIS | 
|---|
| 8 | W @IOF | 
|---|
| 9 | ; | 
|---|
| 10 | ; Get beginning date of date range, default to TODAY | 
|---|
| 11 | W !,$CHAR(7),"Enter date range for anniversary date search" | 
|---|
| 12 | S DIR(0)="D^::EX",DIR("?")="^D HELP^%DTC",DIR("B")=$$FMTE^XLFDT(DT) | 
|---|
| 13 | S DIR("A")="   Start Date" | 
|---|
| 14 | D ^DIR K DIR | 
|---|
| 15 | Q:$D(DIRUT) | 
|---|
| 16 | S EASBEG=Y | 
|---|
| 17 | ; | 
|---|
| 18 | ; Get ending date of date range, default to TODAY | 
|---|
| 19 | S DIR(0)="D^::EX",DIR("?")="^D HELP^%DTC",DIR("B")=$$FMTE^XLFDT(DT) | 
|---|
| 20 | S DIR("A")="     End Date" | 
|---|
| 21 | D ^DIR K DIR | 
|---|
| 22 | Q:$D(DIRUT) | 
|---|
| 23 | S EASEND=Y | 
|---|
| 24 | ; | 
|---|
| 25 | S EAX=$$GET1^DIQ(713,1,5) | 
|---|
| 26 | S:EAX]"" %ZIS("B")=EAX | 
|---|
| 27 | S ZTSAVE("EASBEG")="",ZTSAVE("EASEND")="" | 
|---|
| 28 | D EN^XUTMDEVQ("BLD^EASMTRP1","EAS MT EXPIRATION RPT",.ZTSAVE,.%ZIS) | 
|---|
| 29 | Q | 
|---|
| 30 | ; | 
|---|
| 31 | QUE ; Queued report generation | 
|---|
| 32 | N ZTSAVE,ZTRTN,ZTDESC,EAX,%ZIS | 
|---|
| 33 | ; | 
|---|
| 34 | S (EASBEG,EASEND)=$$FMADD^XLFDT($$DT^XLFDT,-1) | 
|---|
| 35 | S ZTSAVE("EASBEG")="",ZTSAVE("EASEND")="" | 
|---|
| 36 | S IOP="" | 
|---|
| 37 | D EN^XUTMDEVQ("BLD^EASMTRP1","EAS MT EXPIRATION RPT",.ZTSAVE) | 
|---|
| 38 | Q | 
|---|
| 39 | ; | 
|---|
| 40 | BLD ; Build the list of MT expirations to TMP global | 
|---|
| 41 | N EASIEN,EASANV,EASLST,EASENDT,DFN,EASTMP,EASDT,EASENDT | 
|---|
| 42 | ; | 
|---|
| 43 | K ^TMP("EASEXP",$J) | 
|---|
| 44 | ; | 
|---|
| 45 | S EASENDT=$$FMADD^XLFDT(EASEND,-365) | 
|---|
| 46 | S EASANV=$$FMADD^XLFDT(EASBEG,-365,"",-1) ; Subtract 1 minute to capture the 1st day | 
|---|
| 47 | F  S EASANV=$O(^DGMT(408.31,"B",EASANV)) Q:'EASANV!(EASANV>EASENDT)  D | 
|---|
| 48 | . S EASIEN=0 | 
|---|
| 49 | . F  S EASIEN=$O(^DGMT(408.31,"B",EASANV,EASIEN)) Q:'EASIEN  D | 
|---|
| 50 | . . S DFN=$$GET1^DIQ(408.31,EASIEN,.02,"I") Q:+DFN=0 | 
|---|
| 51 | . . S EASLST=$$LST^DGMTU(DFN) | 
|---|
| 52 | . . Q:+EASLST'=EASIEN  ; Quit it this MT is not the last MT on file | 
|---|
| 53 | . . Q:$$DECEASED^EASMTUTL("",DFN)  ; Quit if patient is deceased | 
|---|
| 54 | . . Q:"N,P"[$P(EASLST,U,4)  ; Quit if MT No longer Required or Pending Adjudication | 
|---|
| 55 | . . ; Quit if Cat C, agrees to deductible and MT later the 10-5-99 | 
|---|
| 56 | . . I $P(EASLST,U,4)="C",$$GET1^DIQ(408.31,+EASLST,.11,"I"),$P(EASLST,U,2)>2991005 Q | 
|---|
| 57 | . . ;;Q:$$FUTMT^EASMTUTL("","",DFN)  ; Quit if future MT on file | 
|---|
| 58 | . . S ^TMP("EASEXP",$J,EASANV,EASIEN)=DFN_U_EASLST | 
|---|
| 59 | ; | 
|---|
| 60 | S EASTMP="^TMP(""EASEXP"","_$J_")" | 
|---|
| 61 | S EASDT("BEG")=EASBEG,EASDT("END")=EASEND | 
|---|
| 62 | D BLDSD              ; Call Scheduling API | 
|---|
| 63 | D PRT(EASTMP,.EASDT) ; Call print report | 
|---|
| 64 | K DGARRAY,SDCNT,VARR,I,^TMP($J,"SDAMA") | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | BLDSD ; | 
|---|
| 68 | N EDATE,ERROR,MTREC,PIEN,VARR,RCNT,ACNT,DGARRAY,SDCNT,I | 
|---|
| 69 | S ACNT=1,RCNT=0 | 
|---|
| 70 | S EDATE=0 F  S EDATE=$O(^TMP("EASEXP",$J,EDATE)) Q:'EDATE  D | 
|---|
| 71 | .S MTREC=0 F  S MTREC=$O(^TMP("EASEXP",$J,EDATE,MTREC)) Q:'MTREC  D | 
|---|
| 72 | ..S PIEN=+^TMP("EASEXP",$J,EDATE,MTREC) | 
|---|
| 73 | ..Q:'$D(^DPT(PIEN,0)) | 
|---|
| 74 | ..S RCNT=RCNT+1,VARR(ACNT)=$G(VARR(ACNT))_PIEN_";" | 
|---|
| 75 | ..; Group DFNs by no more than twenty records | 
|---|
| 76 | ..I RCNT>19 S ACNT=ACNT+1,RCNT=0 | 
|---|
| 77 | ; | 
|---|
| 78 | ; Call SD API by array of Patient DFNs | 
|---|
| 79 | S ERROR="" | 
|---|
| 80 | K DGARRAY | 
|---|
| 81 | S DGARRAY(1)=DT,DGARRAY("SORT")="P",DGARRAY("FLDS")="1;2" | 
|---|
| 82 | F I=1:1 Q:'$D(VARR(I))!(ERROR'="")  D | 
|---|
| 83 | .S DGARRAY(4)=VARR(I) | 
|---|
| 84 | .S SDCNT=$$SDAPI^SDAMA301(.DGARRAY) | 
|---|
| 85 | . I SDCNT>0 M ^TMP($J,"SDAMA")=^TMP($J,"SDAMA301") | 
|---|
| 86 | . I SDCNT<0 D | 
|---|
| 87 | . . S ERROR=$O(^TMP($J,"SDAMA301","")) | 
|---|
| 88 | . . S ^TMP($J,"SDAMA","ERROR")=^TMP($J,"SDAMA301",ERROR) | 
|---|
| 89 | .K ^TMP($J,"SDAMA301") | 
|---|
| 90 | Q | 
|---|
| 91 | ; | 
|---|
| 92 | PRT(EASTMP,EASDT) ; | 
|---|
| 93 | N EASANV,EASIEN,PAGE,DFN,EASP,EASABRT | 
|---|
| 94 | ; | 
|---|
| 95 | S EASANV=0,PAGE=0 | 
|---|
| 96 | D HDR(.EASDT) | 
|---|
| 97 | ; | 
|---|
| 98 | I '$D(@EASTMP) D  Q | 
|---|
| 99 | . W !!?3,">> No Means Test expirations for the selected date range." | 
|---|
| 100 | ; | 
|---|
| 101 | F  S EASANV=$O(@EASTMP@(EASANV)) Q:'EASANV  D  Q:$G(EASABRT) | 
|---|
| 102 | . S EASIEN=0 | 
|---|
| 103 | . F  S EASIEN=$O(@EASTMP@(EASANV,EASIEN)) Q:'EASIEN  D  Q:$G(EASABRT) | 
|---|
| 104 | . . S EASDAT=@EASTMP@(EASANV,EASIEN) | 
|---|
| 105 | . . D PRTLINE(EASANV,EASDAT) ; Get data and format print line | 
|---|
| 106 | . . I $E(IOST,1,2)="C-",($Y+5)>IOSL D | 
|---|
| 107 | . . . S DIR(0)="E" | 
|---|
| 108 | . . . D ^DIR K DIR | 
|---|
| 109 | . . . I 'Y S EASABRT=1 Q | 
|---|
| 110 | . . . D HDR(.EASDT) | 
|---|
| 111 | Q | 
|---|
| 112 | ; | 
|---|
| 113 | PRTLINE(EASANV,EASDAT) ; Format and print report line | 
|---|
| 114 | N DFN,EASNAME,EASTAT,EASAPT,EASF,EACL | 
|---|
| 115 | ; | 
|---|
| 116 | S DFN=$P(EASDAT,U) | 
|---|
| 117 | S EASNAME=$$GET1^DIQ(2,DFN,.01) | 
|---|
| 118 | W !,$E(EASNAME,1,20) | 
|---|
| 119 | ; | 
|---|
| 120 | D PID^VADPT6 | 
|---|
| 121 | W ?22,VA("PID") | 
|---|
| 122 | ; | 
|---|
| 123 | W ?35,$TR($$FMTE^XLFDT($$FMADD^XLFDT(EASANV,365),"2F")," ","0") | 
|---|
| 124 | S EASTAT=$P(EASDAT,U,5) | 
|---|
| 125 | W ?46,$S(EASTAT="C":"MT CPR",EASTAT="A":"MT CPE",EASTAT="R":"REQD",EASTAT="N":"NA",EASTAT="P":"PEND",EASTAT="G":"GMT CPR",1:"") | 
|---|
| 126 | ; | 
|---|
| 127 | I $D(^TMP($J,"SDAMA","ERROR")) Q | 
|---|
| 128 | D GETAPT(DFN,.EASAPT) | 
|---|
| 129 | I $D(EASAPT) D | 
|---|
| 130 | . S EACL=0 F  S EACL=$O(EASAPT(EACL)) Q:'EACL  D | 
|---|
| 131 | . . W:$G(EASF) ! | 
|---|
| 132 | . . W ?55,$E($$GET1^DIQ(44,EACL,.01),1,15)," ",$$FMTE^XLFDT(EASAPT(EACL),"2D") | 
|---|
| 133 | . . S EASF=1 | 
|---|
| 134 | ; | 
|---|
| 135 | D KVA^VADPT | 
|---|
| 136 | Q | 
|---|
| 137 | ; | 
|---|
| 138 | GETAPT(DFN,EASAPT) ; Get future appointments for patient | 
|---|
| 139 | N EASAP,EASND,EASCL | 
|---|
| 140 | Q:'$D(^TMP($J,"SDAMA",DFN)) | 
|---|
| 141 | S EASAP=0 F  S EASAP=$O(^TMP($J,"SDAMA",DFN,EASAP)) Q:'EASAP  D | 
|---|
| 142 | .S EASND=^TMP($J,"SDAMA",DFN,EASAP) | 
|---|
| 143 | .S EASCL=+$P(EASND,U,2),EASAPT(EASCL)=+EASND | 
|---|
| 144 | Q | 
|---|
| 145 | ; | 
|---|
| 146 | HDR(EASDT) ; Print report header | 
|---|
| 147 | N ERROR,LINE,SPACE,TXT,HDR,TAB | 
|---|
| 148 | ; | 
|---|
| 149 | I $E(IOST,1,2)="C-" W @IOF | 
|---|
| 150 | S TXT="Means Test Expiration Report" | 
|---|
| 151 | S SPACE=(IOM-$L(TXT))/2 | 
|---|
| 152 | S $P(HDR," ",SPACE)="",HDR=HDR_TXT | 
|---|
| 153 | W !,HDR K HDR | 
|---|
| 154 | ; | 
|---|
| 155 | S TXT="Anniversary Date(s): "_$$FMTE^XLFDT(EASDT("BEG"),"5D")_" - "_$$FMTE^XLFDT(EASDT("END"),"5D") | 
|---|
| 156 | S SPACE=(IOM-$L(TXT))/2 | 
|---|
| 157 | S $P(HDR," ",SPACE)="",HDR=HDR_TXT | 
|---|
| 158 | W !,HDR K HDR | 
|---|
| 159 | ; | 
|---|
| 160 | W !!,"Printed: "_$$FMTE^XLFDT($$NOW^XLFDT) | 
|---|
| 161 | S PAGE=$G(PAGE)+1 | 
|---|
| 162 | S TAB=IOM-8 | 
|---|
| 163 | W ?TAB,"Page "_PAGE | 
|---|
| 164 | S ERROR=$G(^TMP($J,"SDAMA","ERROR")) | 
|---|
| 165 | W:ERROR'="" !,"Appointment Error: ",ERROR | 
|---|
| 166 | ; | 
|---|
| 167 | W !,"Patient",?25,"SSN",?35,"MT Expired",?46,"Status",?57,"Future Appts" | 
|---|
| 168 | S $P(LINE,"=",IOM)="" W !,LINE | 
|---|
| 169 | Q | 
|---|