[613] | 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
|
---|