source: WorldVistAEHR/trunk/r/MY_HEALTHEVET-MHV/MHV7T.m@ 841

Last change on this file since 841 was 623, checked in by George Lilly, 15 years ago

revised back to 6/30/08 version

File size: 4.9 KB
Line 
1MHV7T ;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 ;
7XMIT(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 ;
73EMAIL(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
Note: See TracBrowser for help on using the repository browser.