コード例 #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);
        }
コード例 #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);
            }
コード例 #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);
        }
コード例 #4
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);
        }