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