| 1 | DVBCUTL6 ;ALB/GTS-AMIE C&P APPT LINK DISPLAY SUBRTNS ; 10/20/94  1:45 PM | 
|---|
| 2 | ;;2.7;AMIE;**1**;Apr 10, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | ;** NOTICE: This routine is part of an implementation of a Nationally | 
|---|
| 5 | ;**         Controlled Procedure.  Local modifications to this routine | 
|---|
| 6 | ;**         are prohibited per VHA Directive 10-93-142 | 
|---|
| 7 | ; | 
|---|
| 8 | ;** Version Changes | 
|---|
| 9 | ;   2.7 - New routine (Enhc 13) | 
|---|
| 10 | ; | 
|---|
| 11 | LKHDOUT ;** Link MGNT screen hdr | 
|---|
| 12 | W @IOF | 
|---|
| 13 | W "AMIE/C&P Appointment Link Management",!!,"Current appointment links" | 
|---|
| 14 | W !,"Clinic",?32,"Date/Time",?51,"Status",! | 
|---|
| 15 | Q | 
|---|
| 16 | ; | 
|---|
| 17 | EXMOUT(LPDA) ;** Output exam | 
|---|
| 18 | W !!,"Exam: ",$P(^DVB(396.6,$P(^DVB(396.4,LPDA,0),U,3),0),U,2) | 
|---|
| 19 | W !,"Clinic",?32,"Date/Time",?49,"Status" | 
|---|
| 20 | Q | 
|---|
| 21 | ; | 
|---|
| 22 | EXMDISP(REQDA) ;** Output Open/Completed exams | 
|---|
| 23 | D EXMHD | 
|---|
| 24 | N DVBADA,DVBASTAT | 
|---|
| 25 | S DVBADA="" | 
|---|
| 26 | F  S DVBADA=$O(^DVB(396.4,"C",REQDA,DVBADA)) Q:(DVBADA=""!($D(DTOUT)!$D(DUOUT)))  DO | 
|---|
| 27 | .I $D(^DVB(396.4,DVBADA,0)) DO | 
|---|
| 28 | ..S DVBASTAT=$P(^DVB(396.4,DVBADA,0),U,4) | 
|---|
| 29 | ..D EXAMLST^DVBCUTA4(DVBADA,DVBASTAT) | 
|---|
| 30 | Q | 
|---|
| 31 | ; | 
|---|
| 32 | EXMHD ;** Exam header | 
|---|
| 33 | W @IOF | 
|---|
| 34 | N DVBALN | 
|---|
| 35 | S Y=$P(^DVB(396.3,REQDA,0),U,5) | 
|---|
| 36 | X ^DD("DD") | 
|---|
| 37 | W !!,"AMIE exams on 2507 request for: ",$P(^DPT($P(^DVB(396.3,REQDA,0),U,1),0),U,1) | 
|---|
| 38 | W !,"2507 Request Date Reported to MAS: ",Y | 
|---|
| 39 | S $P(DVBALN,"-",80)="" | 
|---|
| 40 | W !,DVBALN | 
|---|
| 41 | W !!,"Exam:",?40,"Status:" | 
|---|
| 42 | K Y | 
|---|
| 43 | Q | 
|---|
| 44 | ; | 
|---|
| 45 | APPTSEL(DVBADFN,APPTTYPE,REQDA,STRTDT,ENDDT) ;Select appt | 
|---|
| 46 | ;** APPTTYPE = appt type to select | 
|---|
| 47 | ;** STRTDT,ENDDT = selected date range | 
|---|
| 48 | ; | 
|---|
| 49 | ;** APPTSEL creates ^TMP = appt's of APPTTYPE in date range | 
|---|
| 50 | ;** ^TMP=appt dte-ext ^ Clinic-ext ^ Status-ext ^ appt dte-int | 
|---|
| 51 | W @IOF | 
|---|
| 52 | N TMPDA | 
|---|
| 53 | S STRTDT=STRTDT-.1,TMPDA=1 | 
|---|
| 54 | S:+STRTDT<0 STRTDT=0 | 
|---|
| 55 | S:'$D(ENDDT) ENDDT="" | 
|---|
| 56 | S:ENDDT="" ENDDT=9999999 | 
|---|
| 57 | K STATUS,STATVAR | 
|---|
| 58 | I $D(^DPT(DVBADFN,"S")) DO | 
|---|
| 59 | .F  S STRTDT=$O(^DPT(DVBADFN,"S",STRTDT)) Q:(STRTDT=""!(STRTDT>ENDDT))  DO | 
|---|
| 60 | ..I $P(^DPT(DVBADFN,"S",STRTDT,0),U,16)=APPTTYPE DO | 
|---|
| 61 | ...S TMPDA=TMPDA+1 | 
|---|
| 62 | ...S DA=DVBADFN,DA(2.98)=STRTDT,DR="1900",DR(2.98)=".01",DIC=2 | 
|---|
| 63 | ...S DIQ="DVBAARY" K ^UTILITY("DIQ",$J) | 
|---|
| 64 | ...D EN^DIQ1 K ^UTILITY("DIQ",$J) | 
|---|
| 65 | ...S Y=STRTDT X ^DD("DD") | 
|---|
| 66 | ...S STATVAR=$$STATUS^SDAM1(DVBADFN,STRTDT,$P(^DPT(DVBADFN,"S",STRTDT,0),U,1),^DPT(DVBADFN,"S",STRTDT,0)) | 
|---|
| 67 | ...S STATUS=$P(STATVAR,";",3) | 
|---|
| 68 | ...S ^TMP("DVBC",$J,TMPDA)=Y_"^"_DVBAARY(2.98,STRTDT,.01)_"^"_STATUS_"^"_STRTDT | 
|---|
| 69 | ...K DVBAARY(2.98),Y,STATUS,STATVAR | 
|---|
| 70 | D ARYDISP | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | ARYDISP ;** Display appts for selection | 
|---|
| 74 | ;** run APPTSEL before ARYDISP | 
|---|
| 75 | ; | 
|---|
| 76 | ;** DVBAAPT returned (= selected ^TMP node) | 
|---|
| 77 | ; | 
|---|
| 78 | K DA,DR,DIC,DIQ | 
|---|
| 79 | I '$D(DVBAMORE) N DVBAMORE | 
|---|
| 80 | I '$D(TMPDA) N TMPDA | 
|---|
| 81 | W !!!,"Select an appointment to link to the 2507 request",! | 
|---|
| 82 | W !,?1,"1",?4,"Display Current C&P Appointment Links" | 
|---|
| 83 | S ^TMP("DVBC",$J,1)="" | 
|---|
| 84 | F TMPDA=2:1 Q:'$D(^TMP("DVBC",$J,TMPDA))  DO | 
|---|
| 85 | .W !,?1,TMPDA,?4,$P(^TMP("DVBC",$J,TMPDA),U,1) | 
|---|
| 86 | .W ?23,$E($P(^TMP("DVBC",$J,TMPDA),U,2),1,22) | 
|---|
| 87 | .W:$D(^DVB(396.95,"AB",REQDA,$P(^TMP("DVBC",$J,TMPDA),U,4))) ?47,"*CL" | 
|---|
| 88 | .W ?51,$E($P(^TMP("DVBC",$J,TMPDA),U,3),1,27) | 
|---|
| 89 | .S DVBAMORE=$O(^TMP("DVBC",$J,TMPDA)) | 
|---|
| 90 | .I +DVBAMORE'>0 D SELAPT | 
|---|
| 91 | .I (+DVBAMORE>0)&(TMPDA#5=0) D SELAPT | 
|---|
| 92 | S DVBAAPT="" | 
|---|
| 93 | I $D(Y) DO | 
|---|
| 94 | .S DVBAAPT=^TMP("DVBC",$J,+Y) | 
|---|
| 95 | .K ^TMP("DVBC",$J,+Y) | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | SELAPT ;** Select Appt | 
|---|
| 99 | W ! | 
|---|
| 100 | S DIR("A",1)="ENTER '^' TO STOP, OR" | 
|---|
| 101 | S DIR("A")="CHOOSE 1-"_TMPDA_": " | 
|---|
| 102 | S DIR(0)="NOA^1:"_TMPDA_"^I X["".""!('$D(^TMP(""DVBC"",$J,+Y))) K X" | 
|---|
| 103 | S DIR("?",1)="Select an appointment by entering its associated number." | 
|---|
| 104 | S DIR("?",2)=" *CL following Clinic means the appointment date is the" | 
|---|
| 105 | S DIR("?",2)=DIR("?",2)_" Current Date for" | 
|---|
| 106 | S DIR("?",3)=" an existing link." | 
|---|
| 107 | S DIR("?",4)="Enter '1' to see the current links to this 2507." | 
|---|
| 108 | S DIR("?")="Select from the numbers listed." | 
|---|
| 109 | D ^DIR | 
|---|
| 110 | I $D(DTOUT)!($D(DUOUT)) S TMPDA=9999,DVBAOUT="" | 
|---|
| 111 | S:+Y>1 TMPDA=9999 | 
|---|
| 112 | W:+Y'>0 ! | 
|---|
| 113 | I +Y=1 DO | 
|---|
| 114 | .W @IOF | 
|---|
| 115 | .D LNKARY^DVBCUTA3(REQDA,DVBADFN) | 
|---|
| 116 | .D LNKLIST^DVBCUTA3 | 
|---|
| 117 | .S:TMPDA'>5 TMPDA=TMPDA-1 | 
|---|
| 118 | .S:(TMPDA>5&(TMPDA#5=0)) TMPDA=TMPDA-5 | 
|---|
| 119 | .S:(TMPDA>5&(TMPDA#5'=0)) TMPDA=TMPDA-1 | 
|---|
| 120 | .D REFRSH^DVBCUTA4(TMPDA) | 
|---|
| 121 | .K Y | 
|---|
| 122 | I $D(Y),(+Y'>0) K Y | 
|---|
| 123 | K DIR,DTOUT,DUOUT | 
|---|
| 124 | Q | 
|---|
| 125 | ; | 
|---|
| 126 | LINKINF(REQDA,CURRAPT) ;** Display Link info | 
|---|
| 127 | N LINKNODE,LINKDA,INITDTE,ORIGDTE,VETDTE | 
|---|
| 128 | S LINKDA="" | 
|---|
| 129 | S LINKDA=$O(^DVB(396.95,"AB",REQDA,CURRAPT,LINKDA)) | 
|---|
| 130 | S LINKNODE=^DVB(396.95,LINKDA,0) | 
|---|
| 131 | S INITDTE=$P(LINKNODE,U,1) | 
|---|
| 132 | S ORIGDTE=$P(LINKNODE,U,2) | 
|---|
| 133 | S VETDTE=$P(LINKNODE,U,5) | 
|---|
| 134 | I INITDTE'=CURRAPT DO | 
|---|
| 135 | .K Y | 
|---|
| 136 | .S Y=INITDTE | 
|---|
| 137 | .X ^DD("DD") | 
|---|
| 138 | .W !,"Initial Appt: ",?36,Y | 
|---|
| 139 | I ORIGDTE'=CURRAPT DO | 
|---|
| 140 | .K Y | 
|---|
| 141 | .S Y=ORIGDTE | 
|---|
| 142 | .X ^DD("DD") | 
|---|
| 143 | .W !,"Clock Stop Appt: ",?36,Y | 
|---|
| 144 | I VETDTE'=""&(VETDTE'=CURRAPT) DO | 
|---|
| 145 | .K Y | 
|---|
| 146 | .S Y=VETDTE | 
|---|
| 147 | .X ^DD("DD") | 
|---|
| 148 | .W !,"Last Veteran requested Appointment: ",?36,Y | 
|---|
| 149 | K Y | 
|---|
| 150 | S Y=CURRAPT | 
|---|
| 151 | X ^DD("DD") | 
|---|
| 152 | W !,"Current Appt: ",?36,Y | 
|---|
| 153 | K Y | 
|---|
| 154 | Q | 
|---|