1 | MHV7T ;WAS/GPM - HL7 TRANSMITTER ; [8/22/05 11:54pm]
|
---|
2 | ;;1.0;My HealtheVet;;Aug 23, 2005
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | Q
|
---|
6 | ;
|
---|
7 | XMIT(REQ,XMT,ERR,DATAROOT,HL) ;Build and Transmit HL7 message
|
---|
8 | ; Builds and sends the desired HL7 message based on the mode and
|
---|
9 | ; builder passed in XMT. If the builder requires other information
|
---|
10 | ; to build the message, it can be passed as additional subscripts of
|
---|
11 | ; XMT or REQ. REQ is used for request or query related parameters,
|
---|
12 | ; XMT for transmission and control related parameters.
|
---|
13 | ;
|
---|
14 | ; The message builder sent in XMT("BUILDER") is called to build the
|
---|
15 | ; desired message.
|
---|
16 | ;
|
---|
17 | ; An immediate mode response is indicated by XMT("MODE") of I, and
|
---|
18 | ; sent on the current interface as an original mode acknowledgement.
|
---|
19 | ;
|
---|
20 | ; A deferred mode response is indicated by XMT("MODE") of D, and
|
---|
21 | ; sent on the interface associated with XMT("PROTOCOL") as an
|
---|
22 | ; enhanced mode application acknowledgement.
|
---|
23 | ;
|
---|
24 | ; A message may be initiated by using the deferred mode settings.
|
---|
25 | ; Synchronous messages cannot be initiate with this API.
|
---|
26 | ;
|
---|
27 | ; Integration Agreements:
|
---|
28 | ; 2161 : INIT^HLFNC2
|
---|
29 | ; 2164 : GENERATE^HLMA
|
---|
30 | ; 2165 : GENACK^HLMA1
|
---|
31 | ;
|
---|
32 | ; Input:
|
---|
33 | ; REQ - Request parameters and Message ID of original message
|
---|
34 | ; XMT - Transmission parameters
|
---|
35 | ; XMT("MODE") - Priority or mode of the transmission
|
---|
36 | ; XMT("PROTOCOL") - Protocol for deferred transmissions
|
---|
37 | ; XMT("BUILDER") - Name/tag of message builder routine
|
---|
38 | ; XMT("HLMTIENS") - Original message IEN - Immediate mode
|
---|
39 | ; ERR - Caret delimited error string
|
---|
40 | ; segment^sequence^field^code^ACK type^error text
|
---|
41 | ; DATAROOT - Global root of data array
|
---|
42 | ; HL - HL7 package array variable
|
---|
43 | ;
|
---|
44 | ; Output: HL7 Message Transmitted
|
---|
45 | ;
|
---|
46 | N MSGROOT,HLRSLT,HLP
|
---|
47 | I XMT("MODE")="D" D ;Deferred mode
|
---|
48 | . D LOG^MHV7U("TRANSMIT","DEFERRED MODE","S",0)
|
---|
49 | . K HL
|
---|
50 | . D INIT^HLFNC2(XMT("PROTOCOL"),.HL)
|
---|
51 | . I $G(HL) S ERR=HL D LOG^MHV7U("PROTOCOL INIT FAIL",ERR,"S",0) Q
|
---|
52 | . D LOG^MHV7U("PROTOCOL INIT","DONE "_XMT("MODE"),"S",0)
|
---|
53 | . S MSGROOT="^TMP(""HLS"",$J)"
|
---|
54 | . D @(XMT("BUILDER")_"(MSGROOT,.REQ,ERR,DATAROOT,.HL)")
|
---|
55 | . D LOG^MHV7U("BUILD "_$P(XMT("BUILDER"),"^"),MSGROOT,"I",0)
|
---|
56 | . D GENERATE^HLMA(XMT("PROTOCOL"),"GM",1,.HLRSLT,"",.HLP)
|
---|
57 | . K @MSGROOT
|
---|
58 | . D LOG^MHV7U("TRANSMIT "_$P(XMT("BUILDER"),"^"),.HLRSLT,"M",0)
|
---|
59 | . Q
|
---|
60 | ;
|
---|
61 | I XMT("MODE")="I" D ;Immediate mode
|
---|
62 | . D LOG^MHV7U("TRANSMIT","IMMEDIATE MODE","S",0)
|
---|
63 | . S MSGROOT="^TMP(""HLA"",$J)"
|
---|
64 | . D @(XMT("BUILDER")_"(MSGROOT,.REQ,ERR,DATAROOT,.HL)")
|
---|
65 | . D LOG^MHV7U("BUILD "_$P(XMT("BUILDER"),"^"),MSGROOT,"I",0)
|
---|
66 | . D GENACK^HLMA1(HL("EID"),XMT("HLMTIENS"),HL("EIDS"),"GM",1,.HLRSLT)
|
---|
67 | . K @MSGROOT
|
---|
68 | . D LOG^MHV7U("TRANSMIT "_$P(XMT("BUILDER"),"^"),.HLRSLT,"M",0)
|
---|
69 | . Q
|
---|
70 | D LOG^MHV7U("TRANSMIT","COMPLETE","S",0)
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | EMAIL(REQ,XMT,ERR,DATAROOT,HL) ;Build and Transmit HL7 message
|
---|
74 | ; Builds and sends the desired HL7 message via email.
|
---|
75 | ; This will only be used until the MHV server can establish normal
|
---|
76 | ; HL7 receivers.
|
---|
77 | ;
|
---|
78 | ; If the builder requires other information to build the message, it
|
---|
79 | ; can be passed as additional subscripts of XMT or REQ. REQ is used
|
---|
80 | ; for request or query related parameters, XMT for transmission and
|
---|
81 | ; control related parameters.
|
---|
82 | ;
|
---|
83 | ; The message builder sent in XMT("BUILDER") is called to build the
|
---|
84 | ; desired message.
|
---|
85 | ;
|
---|
86 | ; Integration Agreements:
|
---|
87 | ; 2161 : INIT^HLFNC2, MSH^HLFNC2
|
---|
88 | ; 10070 : ^XMD
|
---|
89 | ;
|
---|
90 | ; Input:
|
---|
91 | ; REQ - Request parameters and Message ID of original message
|
---|
92 | ; XMT - Transmission parameters
|
---|
93 | ; XMT("PROTOCOL") - Protocol for deferred transmissions
|
---|
94 | ; XMT("BUILDER") - Name/tag of message builder routine
|
---|
95 | ; XMT("SAF") - Sending Facility
|
---|
96 | ; XMT("EMAIL") - Email Address to use
|
---|
97 | ; ERR - Caret delimited error string
|
---|
98 | ; segment^sequence^field^code^ACK type^error text
|
---|
99 | ; DATAROOT - Global root of data array
|
---|
100 | ; HL - HL7 package array variable
|
---|
101 | ;
|
---|
102 | ; Output: HL7 Message Transmitted
|
---|
103 | ;
|
---|
104 | N MSGROOT,MID,MSH,CNT
|
---|
105 | N TEXT,XMDUN,XMDUZ,XMTEXT,XMROU,XMSTRIP,XMSUB,XMY,XMZ,XMDF,XMMG
|
---|
106 | D LOG^MHV7U("TRANSMIT","EMAIL","S",0)
|
---|
107 | K HL
|
---|
108 | D INIT^HLFNC2(XMT("PROTOCOL"),.HL)
|
---|
109 | I $G(HL) S ERR=HL D LOG^MHV7U("PROTOCOL INIT FAIL",ERR,"S",0) Q
|
---|
110 | D LOG^MHV7U("PROTOCOL INIT","DONE EMAIL","S",0)
|
---|
111 | S MSGROOT="^TMP(""MHV7TEM"",$J)"
|
---|
112 | D @(XMT("BUILDER")_"(MSGROOT,.REQ,ERR,DATAROOT,.HL)")
|
---|
113 | D LOG^MHV7U("BUILD "_$P(XMT("BUILDER"),"^"),MSGROOT,"I",0)
|
---|
114 | S MID=+$H_"-"_$P($H,",",2)
|
---|
115 | S HL("SAF")=XMT("SAF")
|
---|
116 | D MSH^HLFNC2(.HL,MID,.MSH)
|
---|
117 | S XMDF="",(XMDUN,XMDUZ)="My HealtheVet Package"
|
---|
118 | S XMY(XMT("EMAIL"))=""
|
---|
119 | S XMSUB=XMT("SAF")_" MHV PACKAGE MESSAGE"
|
---|
120 | S XMTEXT="TEXT("
|
---|
121 | S TEXT(1)=MSH
|
---|
122 | F CNT=1:1 Q:'$D(@MSGROOT@(CNT)) S TEXT(CNT+1)=@MSGROOT@(CNT)
|
---|
123 | D ^XMD
|
---|
124 | K @MSGROOT
|
---|
125 | I $D(XMMG) D LOG^MHV7U("EMAIL TRANSMIT","FAILURE: "_XMMG,"S",0) Q
|
---|
126 | D LOG^MHV7U("EMAIL TRANSMIT","SUCCESS: "_XMZ,"S",0)
|
---|
127 | Q
|
---|