[613] | 1 | HDISVM02 ;;CT/GRR SEND MESSAGE ; 02 Mar 2005 4:25 PM
|
---|
| 2 | ;;1.0;HEALTH DATA & INFORMATICS;**6**;Feb 22, 2005
|
---|
| 3 | ;
|
---|
| 4 | SNDXML(ARRY,SRVR,HDISINP,SYSPTR) ;Send XML document to server
|
---|
| 5 | ; Input: ARRY - Array containing XML document (closed root)
|
---|
| 6 | ; SRVR - 1 = VUID Server, 2 = Status Update Server
|
---|
| 7 | ; HDISINP - Array containing additional info (closed root) (optional)
|
---|
| 8 | ; @HDISINP@(variable) = Value
|
---|
| 9 | ; @HDISINP@(array,subscript) = Value
|
---|
| 10 | ; @HDISINP@(array,subscript_1,subscript_2,...) = Value
|
---|
| 11 | ;
|
---|
| 12 | ; Example:
|
---|
| 13 | ; @HDISINP@("TEST1")=1
|
---|
| 14 | ; @HDISINP@("TEST2")=2
|
---|
| 15 | ; @HDISINP@("TEST2","SUB1")="2A"
|
---|
| 16 | ; @HDISINP@("TEST3","SUB1","SUB2")="3B"
|
---|
| 17 | ;
|
---|
| 18 | ; Results in the following variables/arrays being set:
|
---|
| 19 | ; TEST1=1
|
---|
| 20 | ; TEST2=2
|
---|
| 21 | ; TEST2("SUB1")="2A"
|
---|
| 22 | ; TEST3("SUB1","SUB2")="3B"
|
---|
| 23 | ; SYSPTR - Pointer to HDIS System file (optional)
|
---|
| 24 | ; If passed, the destination information is obtained
|
---|
| 25 | ; from the HDIS Parameter file entry for the referenced
|
---|
| 26 | ; system. By default, the destination information is
|
---|
| 27 | ; pulled from the HDIS Parameter entry for the current
|
---|
| 28 | ; system (which contains the destination information for
|
---|
| 29 | ; the centrally located server)
|
---|
| 30 | ;Output: None
|
---|
| 31 | ; XML document sent to Data Standardization server option
|
---|
| 32 | ; at given MailMan domain
|
---|
| 33 | ;
|
---|
| 34 | I ARRY=""!(SRVR="") Q "0^Required parameter missing"
|
---|
| 35 | I SRVR'=1&(SRVR'=2) Q "0^SRVR Parameter invalid"
|
---|
| 36 | N SUBJECT,HDITO,HDINSTR,HDIXMZ,SERVER,SRVTYP,MAXLIN,SRVROPT
|
---|
| 37 | S SYSPTR=+$G(SYSPTR)
|
---|
| 38 | I 'SYSPTR K SYSPTR I '$$CURSYS^HDISVF07(.SYSPTR) Q "0^Unable to determine current system"
|
---|
| 39 | ;Get location information for VUID Server
|
---|
| 40 | I SRVR=1 D
|
---|
| 41 | .S SERVER=$$GETVLOC^HDISVF02(SYSPTR)
|
---|
| 42 | .S SRVTYP=$$GETVCON^HDISVF02(SYSPTR)
|
---|
| 43 | .S SRVROPT=$$GETVSRV^HDISVF02(SYSPTR)
|
---|
| 44 | ;Get location information for Status Server
|
---|
| 45 | I SRVR=2 D
|
---|
| 46 | .S SERVER=$$GETSLOC^HDISVF03(SYSPTR)
|
---|
| 47 | .S SRVTYP=$$GETSCON^HDISVF03(SYSPTR)
|
---|
| 48 | .S SRVROPT=$$GETSSRV^HDISVF03(SYSPTR)
|
---|
| 49 | ;Instantiate variables included in input array
|
---|
| 50 | I $G(HDISINP)]"" D
|
---|
| 51 | .N ROOT,RSCNT,NODE,NSCNT,TROOT
|
---|
| 52 | .S ROOT=$$OREF^DILF(HDISINP)
|
---|
| 53 | .S RSCNT=$QL(HDISINP)
|
---|
| 54 | .S NODE=HDISINP
|
---|
| 55 | .F S NODE=$Q(@NODE) Q:(NODE="")!(NODE'[ROOT) I $D(@NODE)#2 D
|
---|
| 56 | ..S NSCNT=$QL(NODE)
|
---|
| 57 | ..I (NSCNT-RSCNT)=1 S @$QS(NODE,NSCNT)=$G(@NODE) Q
|
---|
| 58 | ..S TROOT=$QS(NODE,RSCNT+1)_"("_$P(NODE,",",RSCNT+2,NSCNT)
|
---|
| 59 | ..S @TROOT=$G(@NODE)
|
---|
| 60 | ;Set message subject
|
---|
| 61 | I $G(SUBJECT)="" S SUBJECT="XML FORMATTED DATA FROM "_$P($$SITE^VASITE(),"^",2)
|
---|
| 62 | ;Set message sender
|
---|
| 63 | S HDINSTR("FROM")="Data Standardization Toolset"
|
---|
| 64 | ;Set recipient list (includes server option on target server)
|
---|
| 65 | N HDITO
|
---|
| 66 | I SERVER="" S HDITO("S."_SRVROPT)=""
|
---|
| 67 | I SERVER'="" S HDITO("S."_SRVROPT_"@"_SERVER)=""
|
---|
| 68 | ;Send message to target server
|
---|
| 69 | D SENDMSG^XMXAPI(DUZ,SUBJECT,ARRY,.HDITO,.HDINSTR,.HDIXMZ)
|
---|
| 70 | I $G(XMERR) D
|
---|
| 71 | .;Error sending message - log error text
|
---|
| 72 | .D ERR2XTMP^HDISVU01("HDI-XM","Message sending",$NA(^TMP("XMERR",$J)))
|
---|
| 73 | .K XMERR,^TMP("XMERR",$J)
|
---|
| 74 | Q 1
|
---|
| 75 | ;
|
---|