1 | EASMTRP3 ; ALB/GAH - MEANS TEST ANV DATES BY APPT DATE ; 10/10/2006
|
---|
2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**3,15,46,64,77**;MAR 15,2001;Build 11
|
---|
3 | ;
|
---|
4 | QUE ; Que off the appointment list search by MT anniversary date
|
---|
5 | N EASDT,ZTSAVE
|
---|
6 | ;
|
---|
7 | S DIR(0)="DAO^DT::EX"
|
---|
8 | S DIR("B")="TODAY",DIR("A")="Run report for date: ",DIR("?")="^D HELP^%DTC"
|
---|
9 | D ^DIR K DIR
|
---|
10 | Q:$D(DIRUT)
|
---|
11 | S EASDT=Y
|
---|
12 | ;
|
---|
13 | S ZTSAVE("EASDT")=""
|
---|
14 | D EN^XUTMDEVQ("EN^EASMTRP3","EAS MT DUE BY APPOINTMENT RPT",.ZTSAVE)
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | EN ; Main entry point for appointment list by MT anniversary date
|
---|
18 | N EASSC,ERROR,PAGE,ACNT,RCNT,DGARRAY,I,CLARR,SDCNT,DGADDF,DGMSGF,DGREQF
|
---|
19 | K ^TMP("EASAP",$J)
|
---|
20 | S PAGE=1,^TMP("EASAP",$J,"APDT")=EASDT
|
---|
21 | ;
|
---|
22 | ; Build Array of Valid Clinic IENs
|
---|
23 | S ACNT=1,(RCNT,EASSC)=0 F S EASSC=$O(^SC(EASSC)) Q:'EASSC D
|
---|
24 | .Q:'$D(^SC(EASSC,0))
|
---|
25 | .Q:$P(^SC(EASSC,0),U,3)'="C"
|
---|
26 | .S RCNT=RCNT+1,CLARR(ACNT)=$G(CLARR(ACNT))_EASSC_";"
|
---|
27 | .; Group Clinic IENs by no more than thirty
|
---|
28 | .I RCNT>29 S ACNT=ACNT+1,RCNT=0
|
---|
29 | ;
|
---|
30 | ; Call SD API by array of Clinic IENs
|
---|
31 | S DGARRAY(1)=EASDT_";"_EASDT,DGARRAY("FLDS")="1;3"
|
---|
32 | F I=1:1 Q:'$D(CLARR(I)) D
|
---|
33 | .S DGARRAY(2)=CLARR(I)
|
---|
34 | .S SDCNT=$$SDAPI^SDAMA301(.DGARRAY)
|
---|
35 | . I SDCNT>0 M ^TMP($J,"SDAMA")=^TMP($J,"SDAMA301")
|
---|
36 | . I SDCNT<0 D
|
---|
37 | . . S ERROR=$O(^TMP($J,"SDAMA301",""))
|
---|
38 | . . S ^TMP($J,"SDAMA",CLARR(I))=^TMP($J,"SDAMA301",ERROR)
|
---|
39 | .K ^TMP($J,"SDAMA301")
|
---|
40 | D LOOP,PRINT
|
---|
41 | K DGARRAY,CLARR,I,^TMP($J,"SDAMA")
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | LOOP ; Loop through a clinic's appointment list
|
---|
45 | N DFN,EASANV,EASAPT
|
---|
46 | ;
|
---|
47 | S EASSC=0 F S EASSC=$O(^TMP($J,"SDAMA",EASSC)) Q:'EASSC D
|
---|
48 | .; Check for retrieval error
|
---|
49 | .I $D(^TMP($J,"SDAMA",EASSC))=1 S ^TMP("EASAP",$J,"CLN",EASSC)=^TMP($J,"SDAMA",EASSC) Q
|
---|
50 | .S DFN=0 F S DFN=$O(^TMP($J,"SDAMA",EASSC,DFN)) Q:'DFN D
|
---|
51 | ..S EASAPT=0 F S EASAPT=$O(^TMP($J,"SDAMA",EASSC,DFN,EASAPT)) Q:'EASAPT D
|
---|
52 | ...; Quit if appointment has been cancelled
|
---|
53 | ...Q:$P($P(^TMP($J,"SDAMA",EASSC,DFN,EASAPT),U,3),";")["C"
|
---|
54 | ...S LASTMT=$$LST^DGMTU(DFN) ; Get patient's last Means test
|
---|
55 | ...; Quit if means test is no longer required or pending
|
---|
56 | ...Q:"^N^P^"[(U_$P(LASTMT,U,4)_U)
|
---|
57 | ...; Quit if means test is not required by DGMTR (EAS*1.0*64)
|
---|
58 | ...I $P(LASTMT,U,4)'="R" S (DGADDF,DGMSGF)=1 D EN^DGMTR I '$G(DGREQF) Q
|
---|
59 | ...; Quit if Cat C, agreed to pay deduct. and MT was after 10/5/1999
|
---|
60 | ...I $P(LASTMT,U,4)="C",$$GET1^DIQ(408.31,+LASTMT,.11,"I"),$P(LASTMT,U,2)>2991005 Q
|
---|
61 | ...; Quit if a Future Dated MT is on file
|
---|
62 | ...Q:$$FUT^DGMTU(DFN)
|
---|
63 | ...; If appt dt is later than anniversary dt, add veteran to list.
|
---|
64 | ...S EASANV=$P(LASTMT,U,2)
|
---|
65 | ...S:$P(LASTMT,U,4)'="R" EASANV=$$FMADD^XLFDT(EASANV,365)
|
---|
66 | ...I EASDT'<EASANV S ^TMP("EASAP",$J,"CLN",EASSC,DFN,EASAPT)=""
|
---|
67 | Q
|
---|
68 | ;
|
---|
69 | PRINT ; Print Report
|
---|
70 | N EACLN,ERROR,DFN,LASTMT,VA,ANVDT,PAGE,EASABRT,APDT,XX
|
---|
71 | ;
|
---|
72 | I '$D(^TMP("EASAP",$J,"CLN")) D Q
|
---|
73 | . S PAGE=1 S XX=$$HDR("")
|
---|
74 | . W !!?3,"No MT Anniversary dates found for this appointment date."
|
---|
75 | ;
|
---|
76 | W !
|
---|
77 | S (EACLN,ERROR)=0
|
---|
78 | F S EACLN=$O(^TMP("EASAP",$J,"CLN",EACLN)) Q:'EACLN D Q:$G(EASABRT)!ERROR
|
---|
79 | . S PAGE=1 S EASABRT=$$HDR(EACLN) Q:$G(EASABRT)
|
---|
80 | . I $D(^TMP("EASAP",$J,"CLN",EACLN))=1 S ERROR=1 W !,^TMP("EASAP",$J,"CLN",EACLN) Q
|
---|
81 | . S DFN=0
|
---|
82 | . F S DFN=$O(^TMP("EASAP",$J,"CLN",EACLN,DFN)) Q:'DFN D Q:$G(EASABRT)
|
---|
83 | . . S LASTMT=$$LST^DGMTU(DFN),ANVDT=$P(LASTMT,U,2)
|
---|
84 | . . I $P(LASTMT,U,4)'="R",ANVDT>0 S ANVDT=$$FMADD^XLFDT(ANVDT,365)
|
---|
85 | . . W !?3,$$GET1^DIQ(2,DFN,.01)
|
---|
86 | . . D PID^VADPT6
|
---|
87 | . . W ?30,VA("BID") K VA
|
---|
88 | . . W ?38,$S(ANVDT>0:$$FMTE^XLFDT(ANVDT),1:"")
|
---|
89 | . . S APDT=0
|
---|
90 | . . F S APDT=$O(^TMP("EASAP",$J,"CLN",EACLN,DFN,APDT)) Q:'APDT D Q:$G(EASABRT)
|
---|
91 | . . . W ?55,$$FMTE^XLFDT(APDT,"2P"),!
|
---|
92 | . . . I ($Y+5)>IOSL S EASABRT=$$HDR(EACLN)
|
---|
93 | ;
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | HDR(EASCLN) ; Report Header
|
---|
97 | N TAB,LINE,CLINIC,RSLT
|
---|
98 | ;
|
---|
99 | S RSLT=0
|
---|
100 | I $E(IOST,1,2)="C-" D I RSLT Q RSLT
|
---|
101 | . S DIR(0)="E"
|
---|
102 | . D ^DIR K DIR
|
---|
103 | . I 'Y S RSLT=1
|
---|
104 | ;
|
---|
105 | W @IOF
|
---|
106 | S CLINIC=$S(EASCLN>0:$$GET1^DIQ(44,EASCLN,.01),1:"")
|
---|
107 | W "Means Test Expiration Report by Appt Date "_$S(CLINIC]"":"for "_CLINIC,1:"")
|
---|
108 | W !!,"For Appointment Date: ",$$FMTE^XLFDT(^TMP("EASAP",$J,"APDT"))
|
---|
109 | W !,"Print Date: ",$$FMTE^XLFDT($$NOW^XLFDT)
|
---|
110 | S TAB=IOM-10
|
---|
111 | W ?TAB,"Page "_PAGE
|
---|
112 | S PAGE=PAGE+1
|
---|
113 | ;
|
---|
114 | W !!?30,"Last",?38,"Anniversary",?55,"Appointment"
|
---|
115 | W !?3,"Name",?30,"Four",?38,"Date",?55,"Time"
|
---|
116 | S $P(LINE,"=",IOM)="" W !,LINE,!
|
---|
117 | ;
|
---|
118 | Q 0
|
---|
119 | ;
|
---|
120 | PAUSE ;
|
---|
121 | Q
|
---|