public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
String body = ExchangeHelper.convertToMandatoryType(exchange, String.class, inputStream);
Message message = HL7Converter.toMessage(body);
// add MSH fields as message out headers
Terser terser = new Terser(message);
exchange.getOut().setHeader("hl7.msh.sendingApplication", terser.get("MSH-3"));
exchange.getOut().setHeader("hl7.msh.sendingFacility", terser.get("MSH-4"));
exchange.getOut().setHeader("hl7.msh.receivingApplication", terser.get("MSH-5"));
exchange.getOut().setHeader("hl7.msh.receivingFacility", terser.get("MSH-6"));
exchange.getOut().setHeader("hl7.msh.timestamp", terser.get("MSH-7"));
exchange.getOut().setHeader("hl7.msh.security", terser.get("MSH-8"));
exchange.getOut().setHeader("hl7.msh.messageType", terser.get("MSH-9-1"));
exchange.getOut().setHeader("hl7.msh.triggerEvent", terser.get("MSH-9-2"));
exchange.getOut().setHeader("hl7.msh.messageControl", terser.get("MSH-10"));
exchange.getOut().setHeader("hl7.msh.processingId", terser.get("MSH-11"));
exchange.getOut().setHeader("hl7.msh.versionId", terser.get("MSH-12"));
return message;
}