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