1 | DG53190T ; ALB/SCK - UTILITY TO CREATE RAI/MDS SUBSCRIBER PROTOCOLS ; 10-14-99
|
---|
2 | ;;5.3;Registration;**190,357,416**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | EN ;
|
---|
5 | N DGSTN,FDA,DIR,ERR,HLLP,DGDIV,DGSCN,DGTEST,DGX,DGABRT,HLAPP,HLLINK,DGABRT,I,X,Y,DGIP,DGPORT
|
---|
6 | ;
|
---|
7 | W @IOF
|
---|
8 | F I=0:1 S DGX=$P($T(TEXT+I),";;",2) Q:DGX="$END" W !,DGX
|
---|
9 | S DIR(0)="YA",DIR("B")="NO",DIR("A")="Do you wish to continue? "
|
---|
10 | S DIR("?")="Enter Yes to continue, or No to quit"
|
---|
11 | D ^DIR K DIR
|
---|
12 | Q:'Y!$D(DIRUT)
|
---|
13 | ;
|
---|
14 | F DGX="DIV","SETIP","870","771","408","101","DEM","MFU","FIN" D @DGX Q:$G(DGABRT)
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | DIV ;
|
---|
18 | W !
|
---|
19 | N DIR,DIRUT
|
---|
20 | S DIR(0)="PO^40.8:EMZ"
|
---|
21 | S DIR("A",1)="Enter the Division you are setting up the"
|
---|
22 | S DIR("A")="RAI/MDS HL7 messaging for"
|
---|
23 | S DIR("?")="Select the appropriate division to set up the HL7 messaging parameters for."
|
---|
24 | D ^DIR K DIR I $D(DIRUT)!(+Y'>0) S DGABRT=1 Q
|
---|
25 | S DGDIV=Y
|
---|
26 | S DGSTN=$$SITE^VASITE($$NOW^XLFDT,+DGDIV)
|
---|
27 | ;
|
---|
28 | W !!?4,"You have selected : ",$P(DGDIV,"^",2)
|
---|
29 | W !?4,"Station Number : ",$S(+DGSTN>0:$P(DGSTN,"^",3),1:"Undefined Station Number"),!
|
---|
30 | ;
|
---|
31 | I +DGSTN<0 D G DIV
|
---|
32 | . W !?4,"You cannot proceed with this division until the station number is"
|
---|
33 | . W !?4,"corrected. Check the STATION NUMBER TIME SENSITIVE"
|
---|
34 | . W !?4,"file to be sure this division is active today."
|
---|
35 | . W !?4,"You may select another division or quit.",!
|
---|
36 | ;
|
---|
37 | N DIR,DUOUT,DTOUT
|
---|
38 | ;
|
---|
39 | S DIR(0)="YAO",DIR("A")="Is this correct? ",DIR("B")="YES"
|
---|
40 | S DIR("?")="Enter Yes or No, Yes will select, No will cancel."
|
---|
41 | D ^DIR K DIR Q:$D(DUOUT)!($D(DTOUT))
|
---|
42 | G:'Y DIV
|
---|
43 | W !
|
---|
44 | Q
|
---|
45 | ;
|
---|
46 | SETIP ; Get IP address and port number
|
---|
47 | N ERR,RSLT,FDA,DIR,DIRUT
|
---|
48 | ;
|
---|
49 | IP S DIR(0)="FAO",DIR("A")="Enter IP address of target COTS receiver: "
|
---|
50 | S DIR("?",1)="The IP address must be in the format 'nnn.nnn.nnn.nnn' where"
|
---|
51 | S DIR("?",2)="nnn is a numeric, 1-3 numbers in length and should designate"
|
---|
52 | S DIR("?")="the static IP address for the COTS database server."
|
---|
53 | D ^DIR K DIR
|
---|
54 | Q:$D(DIRUT)
|
---|
55 | ;
|
---|
56 | G:$P(Y,".",1)'?1.3N IP
|
---|
57 | G:$P(Y,".",2)'?1.3N IP
|
---|
58 | G:$P(Y,".",3)'?1.3N IP
|
---|
59 | G:$P(Y,".",4)'?1.3N IP
|
---|
60 | S DGIP=$G(Y)
|
---|
61 | PORT ;
|
---|
62 | N DIR
|
---|
63 | S DIR(0)="FAO",DIR("A")="Enter the port number of the target COTS receiver: "
|
---|
64 | S DIR("?",1)="The port number must be a numeric value and should be"
|
---|
65 | S DIR("?")="the TCP/IP port the target COTS receiver is listening on."
|
---|
66 | D ^DIR K DIR
|
---|
67 | Q:$D(DIRUT)
|
---|
68 | ;
|
---|
69 | G:Y'?1N.N PORT
|
---|
70 | S DGPORT=$G(Y)
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | 870 ; Create HL7 Logical Link
|
---|
74 | N ERR,RSLT,FDA,DGLLP,DGLNK
|
---|
75 | ;
|
---|
76 | S DGLNK="DGRU"_$P(DGSTN,"^",3) ; Check for existing Logical Link
|
---|
77 | I $$FIND1^DIC(870,"","MX",DGLNK)>0 D Q
|
---|
78 | . W !?4,"A Logical Link for ",DGLNK," already exists."
|
---|
79 | ;
|
---|
80 | ; Set up the logical link
|
---|
81 | K FDA
|
---|
82 | S FDA(1,870,"+1,",.01)=DGLNK
|
---|
83 | S FDA(1,870,"+1,",4.5)=1
|
---|
84 | S FDA(1,870,"+1,",2)="TCP"
|
---|
85 | S FDA(1,870,"+1,",3)="NC" ;p-416
|
---|
86 | S FDA(1,870,"+1,",200.021)="R" ;added p-416
|
---|
87 | S FDA(1,870,"+1,",200.05)=20
|
---|
88 | S FDA(1,870,"+1,",200.08)=2.3
|
---|
89 | S FDA(1,870,"+1,",400.01)=DGIP
|
---|
90 | S FDA(1,870,"+1,",400.02)=DGPORT
|
---|
91 | S FDA(1,870,"+1,",400.03)="C"
|
---|
92 | S FDA(1,870,"+1,",400.04)="N" ;p-416
|
---|
93 | ;
|
---|
94 | D UPDATE^DIE("E","FDA(1)","RSLT","ERR(1)")
|
---|
95 | I $D(ERR) D Q
|
---|
96 | . W !,DGLNK,": " D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
97 | . S DGABRT=1
|
---|
98 | S HLLINK=RSLT(1)
|
---|
99 | Q
|
---|
100 | ;
|
---|
101 | 771 ; Create HL7 application
|
---|
102 | N ERR,RSLT,FDA,DGNAME
|
---|
103 | ;
|
---|
104 | ; Retrieve ien of HL7 messaging mail group
|
---|
105 | S DIC=3.8,DIC(0)="MZ",X="DGRU ADT/HL7"
|
---|
106 | D ^DIC K DIC
|
---|
107 | S DGMAIL=$G(Y(0,0))
|
---|
108 | ;
|
---|
109 | K FDA
|
---|
110 | S DGNAME="DGRU-"_$P(DGSTN,"^",2)
|
---|
111 | S:$L(DGNAME)>15 DGNAME=$E(DGNAME,1,15)
|
---|
112 | ; Check for existing HL7 Application
|
---|
113 | S HLAPP=$$FIND1^DIC(771,"","MX",DGNAME) I HLAPP>0 D Q ;p-416
|
---|
114 | . W !?4,"A HL7 Application for ",DGNAME," already exists."
|
---|
115 | ;
|
---|
116 | S FDA(1,771,"+1,",.01)=DGNAME
|
---|
117 | S FDA(1,771,"+1,",3)=$P(DGSTN,"^",3)
|
---|
118 | S FDA(1,771,"+1,",4)=DGMAIL
|
---|
119 | S FDA(1,771,"+1,",7)="USA"
|
---|
120 | ;
|
---|
121 | D UPDATE^DIE("E","FDA(1)","RSLT","ERR(1)")
|
---|
122 | I $D(ERR) D Q
|
---|
123 | . W !,DGNAME,": " D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
124 | . S DGABRT=1
|
---|
125 | S HLAPP=RSLT(1)
|
---|
126 | Q
|
---|
127 | ;
|
---|
128 | 408 ; Create subscription registry entry
|
---|
129 | N ERR,RSLT,FDA,DGSCN,DGLL,DGAP
|
---|
130 | ;
|
---|
131 | S DGSCN=$$ACT^HLSUB
|
---|
132 | I '$D(HLAPP)!('$D(HLLINK)) D Q
|
---|
133 | . W !?4,"HL7 Application data not available"
|
---|
134 | ;
|
---|
135 | S DGLL=$$GET1^DIQ(870,HLLINK,.01)
|
---|
136 | S DGAP=$$GET1^DIQ(771,HLAPP,.01)
|
---|
137 | ;
|
---|
138 | D UPD^HLSUB(DGSCN,DGLL,2,,,DGAP,.ERR)
|
---|
139 | I $D(ERR) D Q
|
---|
140 | . W !,DGSCN,": " D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
141 | . S DGABRT=1
|
---|
142 | ;
|
---|
143 | S FDA(1,40.8,+DGDIV_",",900.01)=DGSCN
|
---|
144 | ;
|
---|
145 | K ERR D FILE^DIE("","FDA(1)","ERR")
|
---|
146 | I $D(ERR) D
|
---|
147 | . W ! D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
148 | . S DGABRT=1
|
---|
149 | Q
|
---|
150 | ;
|
---|
151 | 101 ; Create subscriber protocols
|
---|
152 | N EVNT,FDA,ERR,RSLT,DGNAME,IEN,DGCLIENT
|
---|
153 | ;
|
---|
154 | S IEN=0
|
---|
155 | F EVNT="A01","A02","A03","A11","A12","A13","A21","A22","A08" D Q:$G(DGABRT)
|
---|
156 | . S IEN=IEN+1
|
---|
157 | . S DGNAME="DGRU-RAI-"_EVNT_"-"_HLAPP ;changed p-357
|
---|
158 | . ;Check for existing protocol
|
---|
159 | . I $$FIND1^DIC(101,"","MX",DGNAME)>0 D Q
|
---|
160 | . . W !?4,"A protocol for ",DGNAME," already exists."
|
---|
161 | . ;
|
---|
162 | . S FDA(1,101,"+"_IEN_",",.01)=DGNAME
|
---|
163 | . S FDA(1,101,"+"_IEN_",",1)=EVNT_" CLIENT PROTOCOL FOR "_$P(DGSTN,"^",2)
|
---|
164 | . S FDA(1,101,"+"_IEN_",",4)="subscriber"
|
---|
165 | . S FDA(1,101,"+"_IEN_",",12)="REGISTRATION"
|
---|
166 | . S DGCLIENT="DGRU-"_$P(DGSTN,"^",2)
|
---|
167 | . S:$L(DGCLIENT)>15 DGCLIENT=$E(DGCLIENT,1,15)
|
---|
168 | . S FDA(1,101,"+"_IEN_",",770.2)=DGCLIENT
|
---|
169 | . S FDA(1,101,"+"_IEN_",",770.3)="ADT"
|
---|
170 | . S FDA(1,101,"+"_IEN_",",770.4)=EVNT
|
---|
171 | . S FDA(1,101,"+"_IEN_",",770.7)="DGRU"_$P(DGSTN,"^",3)
|
---|
172 | . S FDA(1,101,"+"_IEN_",",770.11)="ADT"
|
---|
173 | . S FDA(1,101,"+"_IEN_",",771)="Q"
|
---|
174 | . S FDA(1,101,"+"_IEN_",",773.1)="YES"
|
---|
175 | . S FDA(1,101,"+"_IEN_",",773.2)="YES"
|
---|
176 | . K ERR,RSLT
|
---|
177 | . D UPDATE^DIE("E","FDA(1)","RSLT","ERR(1)")
|
---|
178 | . I +$G(RSLT(IEN))>0 D
|
---|
179 | . . S DIE=101,DR="770.95////2.3",DA=RSLT(IEN) D ^DIE K DIE
|
---|
180 | . I $D(ERR) D
|
---|
181 | .. W ! D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
182 | .. S DGABRT=1
|
---|
183 | Q
|
---|
184 | ;
|
---|
185 | DEM ;
|
---|
186 | N FDA,RSLT,ERR,DGNAME,DGCLIENT,DGTXT
|
---|
187 | ;
|
---|
188 | S DGNAME="DGRU-PATIENT-A08-"_HLAPP ;changed p-357
|
---|
189 | S FDA(1,101,"+1,",.01)=DGNAME
|
---|
190 | ; Check for existing protocol
|
---|
191 | I $$FIND1^DIC(101,"","MX",DGNAME)>0 D Q
|
---|
192 | . W !?4,"A protocol for ",DGNAME," already exists."
|
---|
193 | ;
|
---|
194 | S DGTXT="A08 DEMOGRAPHIC UPDATES CLIENT PROTOCOL FOR "_$P(DGSTN,"^",2)
|
---|
195 | S:$L(DGTXT)>62 DGTXT=$E(DGTXT,1,62)
|
---|
196 | S FDA(1,101,"+1,",1)=DGTXT
|
---|
197 | S FDA(1,101,"+1,",4)="subscriber"
|
---|
198 | S FDA(1,101,"+1,",12)="REGISTRATION"
|
---|
199 | S DGCLIENT="DGRU-"_$P(DGSTN,"^",2)
|
---|
200 | S:$L(DGCLIENT)>15 DGCLIENT=$E(DGCLIENT,1,15)
|
---|
201 | S FDA(1,101,"+1,",770.2)=DGCLIENT
|
---|
202 | S FDA(1,101,"+1,",770.3)="ADT"
|
---|
203 | S FDA(1,101,"+1,",770.4)="A08"
|
---|
204 | S FDA(1,101,"+1,",770.7)="DGRU"_$P(DGSTN,"^",3)
|
---|
205 | S FDA(1,101,"+1,",770.11)="ADT"
|
---|
206 | S FDA(1,101,"+1,",771)="Q"
|
---|
207 | S FDA(1,101,"+1,",773.1)="YES"
|
---|
208 | S FDA(1,101,"+1,",773.2)="YES"
|
---|
209 | K ERR,RSLT
|
---|
210 | D UPDATE^DIE("E","FDA(1)","RSLT","ERR(1)")
|
---|
211 | I $D(ERR) D Q
|
---|
212 | . W ! D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
213 | . S DGABRT=1
|
---|
214 | ;
|
---|
215 | I +$G(RSLT(1))>0 D
|
---|
216 | . S DIE=101,DR="770.95////2.3",DA=RSLT(1) D ^DIE K DIE
|
---|
217 | Q
|
---|
218 | ;
|
---|
219 | MFU ;
|
---|
220 | N FDA,RSLT,ERR,DGNAME,DGCLIENT,DGTXT
|
---|
221 | S DGNAME="DGRU-RAI-MFU-"_HLAPP
|
---|
222 | ; Check for existing protocol
|
---|
223 | I $$FIND1^DIC(101,"","MX",DGNAME)>0 D Q
|
---|
224 | . W !?4,"A protocol for ",DGNAME," already exists."
|
---|
225 | ;
|
---|
226 | S FDA(1,101,"+1,",.01)=DGNAME
|
---|
227 | S DGTXT="MFU CLIENT PROTOCOL FOR "_$P(DGSTN,"^",2)
|
---|
228 | S:$L(DGTXT)>62 DGTXT=$E(DGTXT,1,62)
|
---|
229 | S FDA(1,101,"+1,",1)=DGTXT
|
---|
230 | S FDA(1,101,"+1,",4)="subscriber"
|
---|
231 | S FDA(1,101,"+1,",12)="REGISTRATION"
|
---|
232 | S DGCLIENT="DGRU-"_$P(DGSTN,"^",2)
|
---|
233 | S:$L(DGCLIENT)>15 DGCLIENT=$E(DGCLIENT,1,15)
|
---|
234 | S FDA(1,101,"+1,",770.2)=DGCLIENT
|
---|
235 | S FDA(1,101,"+1,",770.3)="MFN"
|
---|
236 | S FDA(1,101,"+1,",770.4)="M01"
|
---|
237 | S FDA(1,101,"+1,",770.7)="DGRU"_$P(DGSTN,"^",3)
|
---|
238 | S FDA(1,101,"+1,",770.11)="MFN"
|
---|
239 | S FDA(1,101,"+1,",771)="Q"
|
---|
240 | S FDA(1,101,"+1,",773.1)="YES"
|
---|
241 | S FDA(1,101,"+1,",773.2)="YES"
|
---|
242 | K ERR,RSLT
|
---|
243 | D UPDATE^DIE("E","FDA(1)","RSLT","ERR(1)")
|
---|
244 | I $D(ERR) D Q
|
---|
245 | .W ! D MSG^DIALOG("WM","","",4,"ERR(1)")
|
---|
246 | .S DGABRT=1
|
---|
247 | I +$G(RSLT(1))>0 D
|
---|
248 | .S DIE=101,DR="770.95////^S X=2.3",DA=RSLT(1) D ^DIE K DIE
|
---|
249 | Q
|
---|
250 | ;
|
---|
251 | FIN ;
|
---|
252 | W !!?4,"Setup complete"
|
---|
253 | Q
|
---|
254 | ;
|
---|
255 | TEXT ;;This routine will setup the necessary HL7 messaging parameters and client
|
---|
256 | ;;protocols for the selected division for the RAI/MDS Commercial-Off-The-Shelf
|
---|
257 | ;;system. This is required in order to correctly handle the dynamic addressing
|
---|
258 | ;;used by VistA to process HL7 messages to the COTS system.
|
---|
259 | ;;
|
---|
260 | ;;THIS ROUTINE SHOULD ONLY BE EXECUTED WHEN NEW DIVISIONS USING RAI/MDS NEED TO BE INITIALIZED.
|
---|
261 | ;;
|
---|
262 | ;;$END
|
---|