| 1 | DVBCUTL5 ;ALB/GTS-AMIE C&P APPT LINK USER SEL RTNS ; 10/20/94  1:00 PM | 
|---|
| 2 | ;;2.7;AMIE;;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 | REQARY ;** Create Array of 2507's for veteran | 
|---|
| 12 | ; | 
|---|
| 13 | ;** If 2507 status=DVBASTAT, set node in ^TMP("DVBC",$J) | 
|---|
| 14 | ;**  ^TMP("DVBC",$J) ordered from newest to oldest 2507 | 
|---|
| 15 | ;**  The following variables must be KILLed by the calling routine: | 
|---|
| 16 | ;**   DVBAMORE, DVBALP, DVBAOUT, DVBADTOT, DVBAPNAM,DVBADA,DVBADFN | 
|---|
| 17 | ;**   DVBADT,DVBAORD | 
|---|
| 18 | ;**  NOTE: DVBASTAT must be defined before REQARY entry | 
|---|
| 19 | S DVBACNT=0 | 
|---|
| 20 | ; | 
|---|
| 21 | ;**  If entered from INSUF^DVBCLOG or DVBCMKLK and open | 
|---|
| 22 | ;**   exam on current 2507, Set ^TMP | 
|---|
| 23 | F  S DVBADA=$O(^DVB(396.3,"B",DVBADFN,DVBADA)) Q:DVBADA=""  DO | 
|---|
| 24 | .I $P(^DVB(396.3,DVBADA,0),U,18)=DVBASTAT DO | 
|---|
| 25 | ..S DVBAOPEN=$$OPENCHK(DVBADA) I +DVBAOPEN'>0 K DVBAOPEN | 
|---|
| 26 | ..I '$D(DVBASDPR)!($D(DVBASDPR)&($D(DVBAOPEN))) DO | 
|---|
| 27 | ...K DVBAOPEN | 
|---|
| 28 | ...S DVBADT=$P(^DVB(396.3,DVBADA,0),"^",2),DVBACNT=DVBACNT+1 | 
|---|
| 29 | ...S ^TMP("DVBC",$J,9999999.999999-DVBADT,DVBADT,DVBADA)="" | 
|---|
| 30 | Q | 
|---|
| 31 | ; | 
|---|
| 32 | REQSEL ;** Select 2507 | 
|---|
| 33 | ; | 
|---|
| 34 | ;**  Loop ^TMP array, display 2507's in groups of 5 | 
|---|
| 35 | ;**  ^TMP subscripts: | 
|---|
| 36 | ;**    ^TMP("DVBC",$J,9999999.999999-2507 Request date int, | 
|---|
| 37 | ;**         Request date int, Request DA) | 
|---|
| 38 | W !!,"Select a 2507 request",! | 
|---|
| 39 | S DVBAORD="" | 
|---|
| 40 | S DVBAPNAM=$P(^DPT(DVBADFN,0),"^",1) | 
|---|
| 41 | F DVBALP=1:1 S DVBAORD=$O(^TMP("DVBC",$J,DVBAORD)) Q:DVBAORD=""  DO | 
|---|
| 42 | .S (DVBADT,DVBADA)="" | 
|---|
| 43 | .S DVBADT=$O(^TMP("DVBC",$J,DVBAORD,DVBADT)) | 
|---|
| 44 | .S DVBADA=$O(^TMP("DVBC",$J,DVBAORD,DVBADT,DVBADA)) | 
|---|
| 45 | .K Y S Y=DVBADT X ^DD("DD") | 
|---|
| 46 | .W !,?5,DVBALP,?8," ",DVBAPNAM,?40,"  Request date: ",Y | 
|---|
| 47 | .S DVBAMORE=$O(^TMP("DVBC",$J,DVBAORD)) | 
|---|
| 48 | .I +DVBAMORE'>0 D SELREQ ;**No more entries | 
|---|
| 49 | .I (+DVBAMORE>0)&(DVBALP#5=0) DO  ;**More entries exist, 5 displayed | 
|---|
| 50 | ..W !,"ENTER '^' TO STOP, OR" | 
|---|
| 51 | ..D SELREQ | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | FINDDA ;** Loop ^TMP, get 396.3 DA | 
|---|
| 55 | F DVBALP=1:1:DVBASEL S DVBAORD=$O(^TMP("DVBC",$J,DVBAORD)) DO | 
|---|
| 56 | .S (DVBADT,DVBADA)="" | 
|---|
| 57 | .S DVBADT=$O(^TMP("DVBC",$J,DVBAORD,DVBADT)) | 
|---|
| 58 | .S DVBADA=$O(^TMP("DVBC",$J,DVBAORD,DVBADT,DVBADA)) | 
|---|
| 59 | Q | 
|---|
| 60 | ; | 
|---|
| 61 | SELREQ ;** Select 2507 from ^TMP | 
|---|
| 62 | K DVBAOUT | 
|---|
| 63 | S DIR(0)="NOA^1:"_DVBALP_"^K:X[""."" X" | 
|---|
| 64 | S DIR("?")="Select a 2507 request by entering it's associated number" | 
|---|
| 65 | S DIR("A")="CHOOSE 1-"_DVBALP_": " D ^DIR | 
|---|
| 66 | I $D(DTOUT)!($D(DUOUT)) S DVBAORD="9999999.999999",DVBAOUT="" | 
|---|
| 67 | I '$D(DTOUT)&('$D(DUOUT)) S:+Y>0 DVBAORD="9999999.999999" | 
|---|
| 68 | S:$D(DTOUT) DVBADTOT="" | 
|---|
| 69 | W ! | 
|---|
| 70 | K DTOUT,DUOUT,DIR | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | OPENCHK(REQDA) ;** Check for open exam on 2507 | 
|---|
| 74 | N LPDA,QVAR | 
|---|
| 75 | S LPDA="" | 
|---|
| 76 | F  S LPDA=$O(^DVB(396.4,"C",REQDA,LPDA)) Q:'LPDA!($D(QVAR))  DO | 
|---|
| 77 | .I $P(^DVB(396.4,LPDA,0),U,4)="O" DO | 
|---|
| 78 | ..S:'$D(QVAR) QVAR=LPDA | 
|---|
| 79 | S:'$D(QVAR) QVAR="" | 
|---|
| 80 | Q +QVAR | 
|---|
| 81 | ; | 
|---|
| 82 | REQPAT() ;** Select patient who has 2507's | 
|---|
| 83 | S DIC(0)="AEMQ",DIC("A")="Select C&P Veteran Name: ",DIC="^DPT(" | 
|---|
| 84 | S DIC("S")="I $D(^DVB(396.3,""B"",+Y))" D ^DIC K DIC | 
|---|
| 85 | Q +Y | 
|---|
| 86 | ; | 
|---|
| 87 | CPPATARY(DVBADFN) ;** Set ^TMP of 2507's for vet | 
|---|
| 88 | ; | 
|---|
| 89 | ;**  ^TMP array ordered newest to oldest | 
|---|
| 90 | ;**  DVBACNT to be killed by calling routine | 
|---|
| 91 | N REQDA,REQDT | 
|---|
| 92 | S DVBACNT=0 | 
|---|
| 93 | S REQDA="" | 
|---|
| 94 | F  S REQDA=$O(^DVB(396.3,"B",DVBADFN,REQDA)) Q:REQDA=""  DO | 
|---|
| 95 | .I +$P(^DVB(396.3,REQDA,0),U,2)>0,($P(^DVB(396.3,REQDA,0),U,18)'="N") DO | 
|---|
| 96 | ..I $P(^DVB(396.3,REQDA,0),U,18)'="" DO | 
|---|
| 97 | ...S REQDT=$P(^DVB(396.3,REQDA,0),"^",2),DVBACNT=DVBACNT+1 | 
|---|
| 98 | ...S ^TMP("DVBC",$J,9999999.999999-REQDT,REQDT,REQDA)="" | 
|---|
| 99 | Q | 
|---|
| 100 | ; | 
|---|
| 101 | NO2507 ;** 2507 not selected, error | 
|---|
| 102 | S DIR("A",1)="You have not selected a 2507 request to link a C&P appointment to." | 
|---|
| 103 | S DIR("A",2)="This is required to continue processing with the AMIE link management option." | 
|---|
| 104 | S DIR("A",3)=" " | 
|---|
| 105 | S DIR(0)="FAO^1:1",DIR("A")="Hit Return to continue." D ^DIR K DIR,X,Y | 
|---|
| 106 | Q | 
|---|
| 107 | ; | 
|---|
| 108 | SDEVTSPC(DVBAPCE) ;**Return piece of 'S' node in Sched event | 
|---|
| 109 | N DVBASPCV | 
|---|
| 110 | S DVBASPCV="" | 
|---|
| 111 | S:($D(^TMP("SDEVT",$J,SDHDL,1,"DPT",0,"AFTER"))) DVBASPCV=$P(^TMP("SDEVT",$J,SDHDL,1,"DPT",0,"AFTER"),U,DVBAPCE) | 
|---|
| 112 | Q DVBASPCV | 
|---|
| 113 | ; | 
|---|
| 114 | SDEVTXST() ;** Check ^TMP("SDEVT",$J) existence | 
|---|
| 115 | Q $D(^TMP("SDEVT",$J,SDHDL,1,"DPT",0,"AFTER")) | 
|---|
| 116 | ; | 
|---|
| 117 | SDORGST() ;** Return value of SD Event originating process | 
|---|
| 118 | N DVBAVAR | 
|---|
| 119 | S DVBAVAR="" | 
|---|
| 120 | Q $O(^TMP("SDEVT",$J,SDHDL,DVBAVAR)) | 
|---|
| 121 | ; | 
|---|