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