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