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