Beispiel #1
0
        private bool ProcessHL7Message(string filePath, ref string sendData)
        {
            string fileContent = string.Empty;

            if (!ReadFileContent(filePath, ref fileContent))
            {
                return(false);
            }
            Message notify = new Message();

            //notify.Header.Type = MessageRegistry.HL7V2_NotificationMessageType;
            notify.Header.Type = MessageRegistry.GENERIC_NotificationMessageType;
            HYS.IM.Messaging.Registry.HL7MessageHelper.SetHL7V2PayLoad(notify, fileContent);

            _publisher.Context.Log.Write("Begin sending notification to subscriber.");
            bool ret = _publisher.NotifyMessagePublish(notify);

            _publisher.Context.Log.Write("End sending notification to subscriber. Result: " + ret.ToString());

            if (ret)
            {
                sendData = HL7MessageParser.FormatResponseMessage(fileContent,
                                                                  _publisher.Context.ConfigMgr.Config.ReadHL7AckAATemplate());
            }
            else
            {
                sendData = HL7MessageParser.FormatResponseMessage(fileContent,
                                                                  _publisher.Context.ConfigMgr.Config.ReadHL7AckAETemplate());
            }

            _publisher.Context.Log.Write("End processing HL7v2 text message");
            return(ret);
        }
Beispiel #2
0
            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);
            }
Beispiel #3
0
        private void buttonGenerate_Click(object sender, EventArgs e)
        {
            string rqMessage          = this.textBoxReceive.Text;
            string rspMessageTemplate = this.textBoxSendTemplate.Text;
            string rspMessage         = HL7MessageParser.FormatResponseMessage(rqMessage, rspMessageTemplate);

            MessageBox.Show(this,
                            rspMessage,
                            this.Text,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
        }
Beispiel #4
0
        private void buttonSetValue_Click(object sender, EventArgs e)
        {
            string oldhl7msg = this.textBoxSend.Text;
            string segment   = this.textBoxSegment.Text;
            int    field     = (int)this.numericUpDownField.Value;
            string value     = this.textBoxValue.Text;
            string newhl7msg = HL7MessageParser.SetField(oldhl7msg, segment, field, value);

            //string newhl7msg = HL7MessageParser.SetSegment(oldhl7msg, segment, value);

            MessageBox.Show(this,
                            newhl7msg,
                            this.Text,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
        }
Beispiel #5
0
        private bool ProcessHL7XMLMessage(string filePath, ref string sendData)
        {
            string fileContent = string.Empty;

            if (!ReadFileContent(filePath, ref fileContent))
            {
                return(false);
            }
            string fileName = Path.GetFileName(filePath);
            string strXml   = fileContent;

            if (_transformer.TransformHL7v2ToXml(fileContent, out strXml))
            {
                _publisher.Context.Log.Write(LogType.Debug, "Transformed HL7 xml content is : \r\n" + strXml);
            }
            else
            {
                _publisher.Context.Log.Write(LogType.Error, "Transforming HL7 to xml error.");

                FileHelper.MoveFile(filePath, Path.Combine(_fialedFolder, fileName));
                _publisher.Context.Log.Write(string.Format("Moved file {0}  to {1}", fileName, _fialedFolder));
                return(false);
            }

            bool res = DispatchXMLMessage(strXml);

            if (res)
            {
                sendData = HL7MessageParser.FormatResponseMessage(fileContent,
                                                                  _publisher.Context.ConfigMgr.Config.ReadHL7AckAATemplate());
            }
            else
            {
                sendData = HL7MessageParser.FormatResponseMessage(fileContent,
                                                                  _publisher.Context.ConfigMgr.Config.ReadHL7AckAETemplate());
            }
            return(res);
        }
Beispiel #6
0
        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);
            }
        }