public static MessagePair GetMessagePair(string recieveMessage, List <SampleTemplate> templateList) { DateTime dtBegin = DateTime.Now; MessagePair p = new MessagePair(); p.IncomingMessageContent = recieveMessage; p.IncomingMessageType = HL7MessageParser.GetField(recieveMessage, "MSH", 9).Replace("^", "_"); SampleTemplate matchTemplate = null; SampleTemplate commonTemplate = null; foreach (SampleTemplate t in templateList) { string msgType = t.GetIncomingMessageType(); if (msgType == "ANY") { commonTemplate = t; } if (p.IncomingMessageType == msgType) { matchTemplate = t; break; } } if (matchTemplate == null) { matchTemplate = commonTemplate; } if (matchTemplate == null) { Program.Context.Log.Write(LogType.Error, string.Format("Cannot find match acknowledgment message template for message {0} \r\n{1}", p.IncomingMessageType, p.IncomingMessageContent)); p.OutgoingMessageType = "AE"; p.OutgoingMessageContent = HL7MessageParser.FormatResponseMessage (p.IncomingMessageContent, HL7MessageTemplates.ErrorResponse); } else { p.Template = matchTemplate; p.OutgoingMessageType = matchTemplate.GetOutgoingMessageType(); p.OutgoingMessageContent = HL7MessageParser.FormatResponseMessage (p.IncomingMessageContent, matchTemplate.GetTemplate()); } DateTime dtEnd = DateTime.Now; p.ProcessingTime = dtEnd.Subtract(dtBegin); return(p); }
private void buttonGetValue_Click(object sender, EventArgs e) { string hl7msg = this.textBoxSend.Text; string segment = this.textBoxSegment.Text; int field = (int)this.numericUpDownField.Value; string value = HL7MessageParser.GetField(hl7msg, segment, field); //string value = HL7MessageParser.GetSegment(hl7msg, segment); this.textBoxValue.Text = value; MessageBox.Show(this, value, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); }
private bool ProcessHL7Message(string receiveData, ref string sendData) { try { _entity.Context.Log.Write("Begin processing HL7v2 text message"); string hl7msgType = HL7MessageParser.GetField(receiveData, "MSH", 9); _entity.Context.Log.Write("Dispatching message according to message type: " + hl7msgType); if (hl7msgType.IndexOf("QBP") >= 0) { Message req = new Message(); //req.Header.Type = MessageRegistry.HL7V2_QueryRequestMessageType; req.Header.Type = MessageRegistry.GENERIC_RequestMessageType; HYS.IM.Messaging.Registry.HL7MessageHelper.SetHL7V2PayLoad(req, receiveData); Message rsp; _entity.Context.Log.Write("Begin sending request to responser."); bool ret = _entity.NotifyMessageRequest(req, out rsp); _entity.Context.Log.Write("End sending request to responser. Result: " + ret.ToString()); _entity.Context.ConfigMgr.Config.DumpMessage(req, receiveData, false, ret); if (ret) { sendData = HYS.IM.Messaging.Registry.HL7MessageHelper.GetHL7V2PayLoad(rsp); return(true); } else { sendData = ""; return(false); } } else { Message notify = new Message(); //notify.Header.Type = MessageRegistry.HL7V2_NotificationMessageType; notify.Header.Type = MessageRegistry.GENERIC_NotificationMessageType; HYS.IM.Messaging.Registry.HL7MessageHelper.SetHL7V2PayLoad(notify, receiveData); _entity.Context.Log.Write("Begin sending notification to subscriber."); bool ret = _entity.NotifyMessagePublish(notify); _entity.Context.Log.Write("End sending notification to subscriber. Result: " + ret.ToString()); _entity.Context.ConfigMgr.Config.DumpMessage(notify, receiveData, false, ret); //if (ret) //{ // sendData = HL7MessageParser.FormatResponseMessage(receiveData, // _entity.Context.ConfigMgr.Config.ReadHL7AckAATemplate()); //} //else //{ // sendData = HL7MessageParser.FormatResponseMessage(receiveData, // _entity.Context.ConfigMgr.Config.ReadHL7AckAETemplate()); //} string xsltFileName = ret ? HL7InboundConfig.PublishingSuccessXSLTFileName : HL7InboundConfig.PublishingFailureXSLTFileName; string reqXml = null; string rspXml = null; sendData = ""; ret = false; if (_transformer.TransformHL7v2ToXml(receiveData, out reqXml)) { if (_entity.Context.ConfigMgr.Config.XSLTTransform(reqXml, ref rspXml, xsltFileName, _entity.Context.ConfigMgr.Config.InboundMessageDispatching.GenerateResponseXmlMLLPPayloadWithXSLTExtensions) && (!string.IsNullOrEmpty(rspXml))) { if (_transformer.TransformXmlToHL7v2(rspXml, out sendData) && (!string.IsNullOrEmpty(sendData))) { sendData = sendData.Replace("\r\n", "\r"); ret = true; } else { _entity.Context.Log.Write(LogType.Error, "Transform outgoing XML to outgoing HL7v2 text failed.\r\n" + rspXml); } } else { _entity.Context.Log.Write(LogType.Error, "Transform incoming XML to outgoing XML failed.\r\n" + reqXml); } } else { _entity.Context.Log.Write(LogType.Error, "Transform incoming HL7v2 text to incoming XML failed."); } _entity.Context.Log.Write("End processing HL7v2 text message. Result: " + ret.ToString()); return(ret); } } catch (Exception err) { _entity.Context.Log.Write(err); return(false); } }