1 /* 2 * Created on 16-Apr-2004 3 */ 4 package ca.uhn.hl7v2.protocol; 5 6 import java.util.List; 7 8 import ca.uhn.hl7v2.HL7Exception; 9 import ca.uhn.hl7v2.model.Message; 10 import ca.uhn.hl7v2.parser.Parser; 11 12 /** 13 * <p>A convenient way for the initiator of a message exchange to send a 14 * message to a remote server and await the response in the same thread.</p> 15 * 16 * <p>Acknowledgements, threading, and accept-level retries are handled by 17 * an associated <code>Processor</code>.</p> 18 * 19 * <p>Recall that acknowledgement requirements are specified in MSH fields 15 20 * and 16 (see HL7 v2.5 chapter 2), so the sender has control. If no response is 21 * needed, and you would like this call to return right away, specify that no 22 * acknowledgements are required.</p> 23 * 24 * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a> 25 * @version $Revision: 1.1 $ updated on $Date: 2007-02-19 02:24:38 $ by $Author: jamesagnew $ 26 */ 27 public interface Initiator { 28 29 /** 30 * Encodes a message, sends it to a remote system, awaits the response, 31 * parses it, and returns it. The response may be null if the message doesn't 32 * require an application-level acknowledgement. 33 * 34 * @param theMessage the message to send to the remote system 35 * @return the response from the remote system 36 */ 37 Message../../ca/uhn/hl7v2/model/Message.html#Message">Message sendAndReceive(Message theMessage) throws HL7Exception; 38 39 /** 40 * @return the <code>Parser</code> that is used to encode outbound messages 41 * and parse inbound ones. It may be of interest to set certain parameters 42 * of this parser, for example whether to use XML encoding. 43 */ 44 Parser getParser(); 45 46 /** 47 * @return the <code>Processor</code> instance that is used to perform the message 48 * exchange 49 */ 50 Processor getUnderlyingProcessor(); 51 52 /** 53 * @return the list of fields that will be included as metadata when a <code>Message</code> 54 * is converted to a <code>Transportable</code>. Each field is a <code>Terser</code> 55 * path (type String). 56 */ 57 List<String> getMetadataFields(); 58 59 }