1 | EAS1071A ;ALB/PJH - ESR and HEC Messaging ; 11/27/07 3:01pm
|
---|
2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**71**;15-MAR-01;Build 18
|
---|
3 | ;
|
---|
4 | ;PROTOCOL FILE access through DBIA 3173
|
---|
5 | ;
|
---|
6 | TAG(RETURN,MODE) ; Called from EAS ESR MESSAGING RPC (triggered from HEC)
|
---|
7 | N STOP
|
---|
8 | S STOP=0
|
---|
9 | ;Enable ESR
|
---|
10 | I MODE=1 D EN1(.RETURN) D:STOP RESET(.RETURN) Q
|
---|
11 | ;Set ESR as system of record
|
---|
12 | I MODE=2 D QRY(.RETURN,"ESR") D:STOP QRY(.RETURN,"HEC") Q
|
---|
13 | ;Remove HEC
|
---|
14 | I MODE=3 D EN^EAS1071B(.RETURN) D:STOP RESET^EAS1071B(.RETURN) Q
|
---|
15 | ;Remove ESR
|
---|
16 | I MODE=4 D RESET(.RETURN) D:STOP EN1(.RETURN) Q
|
---|
17 | ;Set HEC as system of record
|
---|
18 | I MODE=5 D QRY(.RETURN,"HEC") D:STOP QRY(.RETURN,"ESR") Q
|
---|
19 | ;Enable HEC
|
---|
20 | I MODE=6 D RESET^EAS1071B(.RETURN) Q
|
---|
21 | ;
|
---|
22 | S RETURN="-1^RPC Called with invalid MODE parameter"
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | EN1(ARR) ;Enable ESR messaging
|
---|
26 | ;
|
---|
27 | N ADDR,PORT,STATION,TCPDATA,SLLN,VER,DA,FILE,RET,ERROR
|
---|
28 | ;
|
---|
29 | S:MODE=1 ARR="ESR messaging NOT enabled"
|
---|
30 | ;
|
---|
31 | ; Get site's Station #
|
---|
32 | S STATION=$P($$SITE^VASITE,"^",3)
|
---|
33 | ;
|
---|
34 | ;Activate EAS ESR event driver server protocols
|
---|
35 | D PROTOCOL Q:STOP
|
---|
36 | ;Update VAMC event driver protocols (outgoing)
|
---|
37 | D DRIVERS(STATION) Q:STOP
|
---|
38 | ;Set production IP address and port on Logical Links
|
---|
39 | D SETLL16 Q:STOP
|
---|
40 | ;
|
---|
41 | S:MODE=1 ARR="ESR messaging enabled"
|
---|
42 | ;
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | SETLL16 ;Update Sending Logical Link
|
---|
46 | ;
|
---|
47 | N ADDR,PORT,SHUTDOWN,SLLN,RET
|
---|
48 | ;
|
---|
49 | ;Production Install
|
---|
50 | I $$PROD^XUPROD D Q:STOP
|
---|
51 | .S PORT=8090 ;Vitria production port#
|
---|
52 | .S ADDR=$$IPLIVE ;ESR production (from dental package)
|
---|
53 | .S SHUTDOWN="" ;Shutdown LLP set to No
|
---|
54 | .;Abort if no IP address found for production account
|
---|
55 | .I ADDR="" D ABORT1 Q
|
---|
56 | ;Test/development account values to null
|
---|
57 | E S PORT="",ADDR="00.0.000.00",SHUTDOWN=1
|
---|
58 | ;Update value in logical link file
|
---|
59 | S SLLN="LLESROUT",RET=$$LL16(SLLN,ADDR,PORT,SHUTDOWN)
|
---|
60 | I +RET<0 D ABORT2(RET,"ESR Send Link:"_SLLN)
|
---|
61 | Q
|
---|
62 | ;
|
---|
63 | ;
|
---|
64 | PROTOCOL ;Remove Disable Text from EAS ESR server protocols
|
---|
65 | ;
|
---|
66 | N RESULT,SIEN,V,N,N1,LNCNT,LINE,PROTRET,NAM
|
---|
67 | S NAM="EAS ESR"
|
---|
68 | F S NAM=$O(^ORD(101,"B",NAM)) Q:NAM'["EAS ESR" D Q:STOP
|
---|
69 | . Q:NAM'["SERVER" Q:NAM["QRY-Z10" Q:NAM["QRY-Z11"
|
---|
70 | . S RESULT=$$EDP(NAM,"")
|
---|
71 | . I +RESULT<0 D ABORT2(RESULT,"Event Driver:"_NAM)
|
---|
72 | ;
|
---|
73 | Q
|
---|
74 | ;
|
---|
75 | DRIVERS(STATION) ;Add EAS ESR client to VAMC event driver
|
---|
76 | ;
|
---|
77 | N ERROR,FILE,IEN101,LINE,LNCNT,RETURN,SIEN101,SNAM
|
---|
78 | S LNCNT=1
|
---|
79 | F S LINE=$T(PROTDAT+LNCNT) Q:$P(LINE,";",3)="END" D Q:STOP
|
---|
80 | .S NAM="VAMC "_STATION_" "_$P(LINE,";",3)_" SERVER"
|
---|
81 | .S IEN101=$O(^ORD(101,"B",NAM,0))
|
---|
82 | .I +IEN101=0 D Q
|
---|
83 | ..S ERROR="IEN OF RECORD TO BE UPDATED NOT FOUND"
|
---|
84 | ..S RETURN=-1_"^"_ERROR
|
---|
85 | ..D ABORT2(RETURN,"Event Driver:"_NAM)
|
---|
86 | .;
|
---|
87 | .;Client Protocol
|
---|
88 | .S SNAM="EAS ESR "_STATION_" "_$P(LINE,";",3)_" CLIENT"
|
---|
89 | .S SIEN101=$O(^ORD(101,"B",SNAM,0))
|
---|
90 | .I +SIEN101=0 D Q
|
---|
91 | ..S ERROR="IEN OF RECORD TO BE UPDATED NOT FOUND"
|
---|
92 | ..S RETURN=-1_"^"_ERROR
|
---|
93 | ..D ABORT2(RETURN,"Subscriber:"_SNAM)
|
---|
94 | .;Skip if already present
|
---|
95 | .I $D(^ORD(101,IEN101,775,"B",SIEN101)) D Q
|
---|
96 | ..D WARN(NAM,SNAM)
|
---|
97 | ..S LNCNT=LNCNT+1
|
---|
98 | .;Add subscriber to event driver
|
---|
99 | .S RETURN=$$SUBSCR(IEN101,SIEN101)
|
---|
100 | .I +RETURN<0 D ABORT2(RETURN,"driver with Subscriber:"_SNAM) Q
|
---|
101 | .S LNCNT=LNCNT+1
|
---|
102 | ;
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | WARN(EDP,SP) ;Display Warning Message
|
---|
106 | ;
|
---|
107 | N ARR
|
---|
108 | ;
|
---|
109 | S ARR(1)="===================================================="
|
---|
110 | S ARR(2)="= WARNING ="
|
---|
111 | S ARR(3)="===================================================="
|
---|
112 | S ARR(4)="When updating "_EDP
|
---|
113 | S ARR(5)="===================================================="
|
---|
114 | S ARR(5)="**"_SP_" is already defined**"
|
---|
115 | ;
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | ABORT1 ;Warning and mail message in case of no IP address
|
---|
119 | ;
|
---|
120 | S STOP=1
|
---|
121 | S ARR(1)="===================================================="
|
---|
122 | S ARR(2)="= ABORTED ="
|
---|
123 | S ARR(3)="===================================================="
|
---|
124 | S ARR(4)="No IP address for VIE was found on the system"
|
---|
125 | S ARR(5)="The IP address must be entered on the LLESROUT"
|
---|
126 | S ARR(6)="logical link (file #870) before ESR transmissions"
|
---|
127 | S ARR(7)="can begin"
|
---|
128 | Q
|
---|
129 | ;
|
---|
130 | ABORT2(ERRMSG,SUBJ) ;Display Install Error message and set STOP
|
---|
131 | ;
|
---|
132 | S STOP=1
|
---|
133 | S ARR(1)="===================================================="
|
---|
134 | S ARR(2)="= ABORTED ="
|
---|
135 | S ARR(3)="===================================================="
|
---|
136 | S ARR(4)="When updating "_SUBJ
|
---|
137 | S ARR(5)="===================================================="
|
---|
138 | S ARR(5)="**ERROR MSG: "_$P(ERRMSG,"^",2)
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | LL16(LLNAME,TCPADDR,TCPPORT,SHUTDOWN) ;Update Logical Link Port and Address
|
---|
142 | ;
|
---|
143 | N FILE,DATA,RETURN,DEFINED,ERROR,DA,DGENDA
|
---|
144 | S FILE=870
|
---|
145 | S IEN870=$O(^HLCS(870,"B",LLNAME,0))
|
---|
146 | I 'IEN870 D Q RETURN
|
---|
147 | . S ERROR="IEN OF RECORD TO BE UPDATED NOT FOUND"
|
---|
148 | . S RETURN=-1_"^"_ERROR
|
---|
149 | ;
|
---|
150 | S DATA(400.01)=TCPADDR ;TCP/IP ADDRESS
|
---|
151 | S DATA(400.02)=TCPPORT ;TCP/IP PORT
|
---|
152 | S DATA(4.5)=1 ;AUTOSTART
|
---|
153 | S DATA(14)=SHUTDOWN ;SHUTDOWN LLP
|
---|
154 | ;
|
---|
155 | S RETURN=$$UPD^DGENDBS(FILE,IEN870,.DATA,.ERROR)
|
---|
156 | S:ERROR'=""!(+RETURN=0) RETURN=-1_"^"_ERROR
|
---|
157 | ;
|
---|
158 | Q RETURN
|
---|
159 | ;
|
---|
160 | EDP(PNAME,DTXT) ;Remove Disable Text from Event Driver Protocols
|
---|
161 | ;
|
---|
162 | N DATA,FILE,DGENDA,RETURN,ERROR,DA
|
---|
163 | S FILE=101
|
---|
164 | ; If already exists then skip
|
---|
165 | S IEN101=$O(^ORD(101,"B",PNAME,0))
|
---|
166 | I 'IEN101 D Q RETURN
|
---|
167 | . S ERROR="IEN OF RECORD TO BE UPDATED NOT FOUND"
|
---|
168 | . S RETURN=-1_"^"_ERROR
|
---|
169 | ;
|
---|
170 | S DATA(2)=DTXT
|
---|
171 | S RETURN=$$UPD^DGENDBS(FILE,IEN101,.DATA,.ERROR)
|
---|
172 | I ERROR'=""!(+RETURN=0) S RETURN=-1_"^"_ERROR
|
---|
173 | ;
|
---|
174 | Q RETURN
|
---|
175 | ;
|
---|
176 | SUBSCR(IEN101,SIEN101) ;Add client to event driver as a subscriber
|
---|
177 | ;
|
---|
178 | N DATA,DGENDA,ERROR,FILE,RETURN
|
---|
179 | S DGENDA(1)=IEN101
|
---|
180 | S FILE=101.0775
|
---|
181 | S DATA(.01)=SIEN101
|
---|
182 | S RETURN=$$ADD^DGENDBS(FILE,.DGENDA,.DATA,.ERROR)
|
---|
183 | S:ERROR'=""!(+RETURN=0) RETURN=-1_"^"_ERROR
|
---|
184 | ;
|
---|
185 | Q RETURN
|
---|
186 | ;
|
---|
187 | IPLIVE() ;Get IP address for production system
|
---|
188 | ;
|
---|
189 | ;Search for DENTVHLAAC logical link
|
---|
190 | S IENS=$$FIND1^DIC(870,"","X","DENTVHLAAC","","","ERR")
|
---|
191 | ;If not found return null IP address
|
---|
192 | I 'IENS Q ""
|
---|
193 | ;Otherwise return TCP/IP ADDRESS
|
---|
194 | Q $$GET1^DIQ(870,IENS_",",400.01)
|
---|
195 | ;
|
---|
196 | RESET(ARR) ;Disable or Remove ESR protocols
|
---|
197 | N DA,DIK,ERROR,IEN101,LINE,LCT,NAM
|
---|
198 | N PREFHEC,PREFESR,SIEN101,SNAM,STOP,SITE
|
---|
199 | ;
|
---|
200 | I MODE=4 S ARR="ESR messaging NOT disabled"
|
---|
201 | ;
|
---|
202 | ; Get site's Station #
|
---|
203 | S SITE=$P($$SITE^VASITE,"^",3)
|
---|
204 | S PREFHEC="VAMC "_SITE_" "
|
---|
205 | S PREFESR="EAS ESR "_SITE_" "
|
---|
206 | S STOP=0
|
---|
207 | ;
|
---|
208 | I $$SOR^EAS1071C(PREFESR,PREFHEC) D Q
|
---|
209 | .S ARR="Unable to disable messaging, ESR is SOR"
|
---|
210 | ;
|
---|
211 | ;Disable to Vista to ESR servers
|
---|
212 | S NAM="EAS ESR"
|
---|
213 | F S NAM=$O(^ORD(101,"B",NAM)) Q:NAM'["EAS ESR" D Q:STOP
|
---|
214 | .Q:NAM'["SERVER" Q:NAM["QRY-Z10" Q:NAM["QRY-Z11"
|
---|
215 | .;Insert disable text
|
---|
216 | .S RESULT=$$EDP(NAM,"ESR-to-Site Messaging Inactive")
|
---|
217 | .I +RESULT<0 D ABORT2(RESULT,"Event Driver:"_NAM)
|
---|
218 | ;
|
---|
219 | ;Remove ESR client subscriber protocols from shared servers
|
---|
220 | F LCT=1:1 S LINE=$T(PROTDAT+LCT) Q:$P(LINE,";",3)="END" D Q:STOP
|
---|
221 | .S NAM=PREFESR_$P(LINE,";",3)_" CLIENT"
|
---|
222 | .S SIEN101=$O(^ORD(101,"B",NAM,0))
|
---|
223 | .I +SIEN101=0 D Q
|
---|
224 | ..S ERROR="IEN OF RECORD TO BE UPDATED NOT FOUND"
|
---|
225 | ..S RETURN=-1_"^"_ERROR
|
---|
226 | ..D ABORT2(RETURN,"Event Driver:"_NAM)
|
---|
227 | .;If this is a SUBSCRIBER remove from SERVER
|
---|
228 | .I $O(^ORD(101,"AB",SIEN101,0)) D REMOVE(SIEN101,NAM)
|
---|
229 | ;
|
---|
230 | ;
|
---|
231 | I MODE=4,'STOP S ARR="ESR messaging disabled"
|
---|
232 | Q
|
---|
233 | ;
|
---|
234 | REMOVE(CLIENT,CNAM) ;Remove clients from server
|
---|
235 | N DA,DIK,SERV,SNAM,SUB
|
---|
236 | S SERV=0
|
---|
237 | F S SERV=$O(^ORD(101,"AB",CLIENT,SERV)) Q:'SERV D
|
---|
238 | .S SUB=0,SNAM=$P($G(^ORD(101,SERV,0)),U)
|
---|
239 | .F S SUB=$O(^ORD(101,"AB",CLIENT,SERV,SUB)) Q:'SUB D
|
---|
240 | ..S DA(1)=SERV,DA=SUB,DIK="^ORD(101,"_DA(1)_",775," D ^DIK
|
---|
241 | Q
|
---|
242 | ;
|
---|
243 | PROTDAT ;
|
---|
244 | ;;ORU-Z07
|
---|
245 | ;;ORU-Z09
|
---|
246 | ;;ORF-Z07
|
---|
247 | ;;END
|
---|
248 | ;
|
---|
249 | QRY(ARR,SYS) ;Switch system of record (moves QRY-Z10/Z11 Protocols)
|
---|
250 | ;
|
---|
251 | N PREFHEC,PREFESR,RESULT,SIEN,SITE,V,N,N1,LNCNT,LINE,PROTRET,NAM
|
---|
252 | ; Get site's Station #
|
---|
253 | S SITE=$P($$SITE^VASITE,"^",3)
|
---|
254 | S PREFHEC="VAMC "_SITE_" "
|
---|
255 | S PREFESR="EAS ESR "_SITE_" "
|
---|
256 | S STOP=0,ARR="SOR unchanged"
|
---|
257 | ;
|
---|
258 | N ERROR,PREF,RETURN
|
---|
259 | ;System being made SOR
|
---|
260 | S PREF=$S(SYS="HEC":PREFHEC,1:PREFESR)
|
---|
261 | ;Check messaging is settup for system being added
|
---|
262 | I '$$Z07^EAS1071C(PREF,PREFHEC) D Q
|
---|
263 | .S ERROR="MESSAGING NOT ENABLED FOR "_SYS
|
---|
264 | .S RETURN=-1_"^"_ERROR
|
---|
265 | .D ABORT2(RETURN,SYS_" as system of record")
|
---|
266 | .S STOP=0
|
---|
267 | ;
|
---|
268 | I SYS="ESR" D Q
|
---|
269 | .;Disable HEC Z10/Z11 protocols
|
---|
270 | .D UNLINK^EAS1071C(PREFHEC) Q:STOP
|
---|
271 | .;Enable ESR Z10/Z11 protocols
|
---|
272 | .D LINK^EAS1071C Q:STOP
|
---|
273 | .;Return message
|
---|
274 | .S ARR="ESR set as SOR"
|
---|
275 | ;
|
---|
276 | I SYS="HEC" D Q
|
---|
277 | .;Disable ESR Z10/Z11 protocols
|
---|
278 | .D UNLINK^EAS1071C(PREFESR) Q:STOP
|
---|
279 | .;Enable HEC Z10/Z11 protocols
|
---|
280 | .D LINK^EAS1071C Q:STOP
|
---|
281 | .;Return message
|
---|
282 | .S ARR="HEC set as SOR"
|
---|
283 | Q
|
---|