Exemplo n.º 1
0
        public bool ProcessMessage(IPullRoute route, Message request, out Message response)
        {
            response = null;
            if (request != null &&
                request.Header != null)// &&
            //MessageRegistry.RHISPIX_RequestMessageType.EqualsTo(request.Header.Type))     // do not need validation so strict
            {
                string id = request.Header.ID.ToString();
                _context.Log.Write(string.Format("Begin processing requesting message. Request Message ID: {0}", id));

                SOAPClientControlerProcessStatus s = _controler.ProcessRequestingMessage(request, out response);

                _context.Log.Write(
                    string.Format("End processing requesting message. Request Message ID: {0}. Response Message ID: {1}. Result: {2}",
                                  id, (response != null && response.Header != null) ? response.Header.ID.ToString() : "(null)", s));
                _context.Log.Write("");

                //string Keywords = GetKeywords(request.Body.ToString());
                //SendLogMessage(string.Format("Send SOAP message {0}", s),request.Body.ToString(),Keywords);
                return(s == SOAPClientControlerProcessStatus.Success);
            }
            else
            {
                _context.Log.Write(LogType.Error, "Received requsting message failed or receive a unwanted requsting message.");
                return(false);
            }
        }
Exemplo n.º 2
0
        public bool ProcessMessage(IPullRoute route, Message request, out Message response)
        {
            response = new Message();

            try
            {
                if (request != null &&
                    request.Header != null)
                {
                    string desc = string.Format("processing message type: {0} id: {1} in thread id: {2}",
                                                request.Header.Type, request.Header.ID.ToString(), System.Threading.Thread.CurrentThread.ManagedThreadId);

                    Program.Log.Write(string.Format("Responser begin {0}", desc));
                    bool res = _controler.DispatchResponserMessage(request, out response);
                    Program.Log.Write(string.Format("Responser finish {0}. Result: {1}, {2}", desc, res,
                                                    (response != null && response.Header != null) ? response.Header.Type + ":" + response.Header.ID.ToString() : null));
                    Program.Log.Write("");

                    return(res);
                }
                else
                {
                    Program.Log.Write(LogType.Error, "Received requsting message failed or receive a unwanted requsting message.");
                    return(false);
                }
            }
            catch (Exception err)
            {
                Program.Log.Write(err);
                return(false);
            }
        }
Exemplo n.º 3
0
        private bool requester_OnMessageRequest(IPullRoute route, Message request, out Message response)
        {
            DumpHelper.DumpRequesterSendingMessage(_log, request);

            if (OnPreProcessing != null)
            {
                if (!OnPreProcessing(ref request))
                {
                    _log.Write(LogType.Warning,
                               string.Format("The pre-processing handler rejected the requesting message (ID: {0}) from going out.",
                                             (request != null) ? request.Header.ID.ToString() : "(null)"));
                    response = null;
                    return(false);
                }
            }

            response = null;
            bool res = false;

            if (route != null)
            {
                PullSenderBase s = GetPullSender(route);
                if (s != null)
                {
                    res = s.SendMessage(request, out response);
                }
            }
            else
            {
                foreach (PullSenderBase s in _channels)
                {
                    res = s.SendMessage(request, out response);
                    if (res)
                    {
                        break;
                    }
                }
            }
            if (!res)
            {
                return(res);
            }

            DumpHelper.DumpRequesterReceivingMessage(_log, response);

            if (OnPostProcessing != null)
            {
                if (!OnPostProcessing(request, ref response))
                {
                    _log.Write(LogType.Warning,
                               string.Format("The post-processing handler rejected the responsing message (ID: {0}) from coming in.",
                                             (response != null) ? response.Header.ID.ToString() : "(null)"));
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 4
0
 public PullChannelConfig FindChannel(IPullRoute route)
 {
     if (route == null)
     {
         return(null);
     }
     foreach (PullChannelConfig chn in _channels)
     {
         if (chn.ID == route.ID)
         {
             return(chn);
         }
     }
     return(null);
 }
Exemplo n.º 5
0
        private PullSenderBase GetPullSender(IPullRoute route)
        {
            if (route == null || _channels.Count < 1)
            {
                return(null);
            }

            foreach (PullSenderBase s in _channels)
            {
                if (s.Channel.ID == route.ID)
                {
                    return(s);
                }
            }

            return(null);
        }
Exemplo n.º 6
0
        public bool ProcessMessage(IPullRoute route, Message request, out Message response)
        {
            response = new Message();

            try
            {
                if (request != null &&
                    request.Header != null)
                {
                    string req;
                    string rsp;

                    switch (_context.ConfigMgr.Config.MessageProcessingType)
                    {
                    case MessageProcessType.HL7v2Text:
                    {
                        req = HL7MessageHelper.GetHL7V2PayLoad(request);
                        if (_controler.SendMLLPQuery(req, out rsp))
                        {
                            response.Header.ID   = Guid.NewGuid();
                            response.Header.Type = MessageRegistry.GENERIC_ResponseMessageType;
                            HL7MessageHelper.SetHL7V2PayLoad(response, rsp);
                            return(true);
                        }
                        else
                        {
                            _context.Log.Write(LogType.Error, "Processing requsting HL7 message failed or sending HL7 message to remote HL7 listener failed.");
                            return(false);
                        }
                    }

                    case MessageProcessType.HL7v2XML:
                    {
                        req = request.Body;
                        if (_controler.SendHL7v2XMLQuery(req, out rsp))
                        {
                            response.Header.ID   = Guid.NewGuid();
                            response.Header.Type = MessageRegistry.GENERIC_ResponseMessageType;
                            response.Body        = rsp;
                            return(true);
                        }
                        else
                        {
                            _context.Log.Write(LogType.Error, "Processing requsting XML message (transform XML to/from HL7v2 text) failed or sending HL7 message to remote HL7 listener failed.");
                            return(false);
                        }
                    }

                    default:
                    case MessageProcessType.OtherXML:
                    {
                        if (_controler.SendOtherXMLQuery(request, out response))
                        {
                            response.Header.ID   = Guid.NewGuid();
                            response.Header.Type = MessageRegistry.GENERIC_ResponseMessageType;
                            return(true);
                        }
                        else
                        {
                            _context.Log.Write(LogType.Error, "Processing requsting XML message (transform XML to/from transport schema) failed or sending HL7 message to remote HL7 listener failed.");
                            return(false);
                        }
                    }
                    }

                    ////if (MessageRegistry.HL7V2_QueryRequestMessageType.EqualsTo(request.Header.Type))
                    //if(!_context.Context.ConfigMgr.Config.EnableHL7XMLTransform)
                    //{
                    //    req = HL7MessageHelper.GetHL7V2PayLoad(request);
                    //    if (_controler.SendQuery(req, out rsp))
                    //    {
                    //        response.Header.ID = Guid.NewGuid();
                    //        //response.Header.Type = MessageRegistry.HL7V2_QueryResultMessageType;
                    //        response.Header.Type = MessageRegistry.GENERIC_ResponseMessageType;
                    //        HL7MessageHelper.SetHL7V2PayLoad(response, rsp);
                    //        return true;
                    //    }
                    //    else
                    //    {
                    //        _context.Log.Write(LogType.Error, "Processing requsting HL7 message failed or sending HL7 message to remote HL7 listener failed.");
                    //        return false;
                    //    }
                    //}
                    ////else if (MessageRegistry.HL7V2XML_QueryRequestMessageType.EqualsTo(request.Header.Type))
                    //else
                    //{
                    //    req = request.Body;
                    //    if (_controler.SendXMLQuery(req, out rsp))
                    //    {
                    //        response.Header.ID = Guid.NewGuid();
                    //        //response.Header.Type = MessageRegistry.HL7V2XML_QueryResultMessageType;
                    //        response.Header.Type = MessageRegistry.GENERIC_ResponseMessageType;
                    //        response.Body = rsp;
                    //        return true;
                    //    }
                    //    else
                    //    {
                    //        _context.Log.Write(LogType.Error, "Processing requsting XML message failed or sending HL7 message to remote HL7 listener failed.");
                    //        return false;
                    //    }
                    //}
                    ////else
                    ////{
                    ////    _context.Log.Write(LogType.Error, "Received a unwanted publishing message.");
                    ////    return false;
                    ////}
                }
                else
                {
                    _context.Log.Write(LogType.Error, "Received requsting message failed.");
                    return(false);
                }
            }
            catch (Exception e)
            {
                _context.Log.Write(e);
                return(false);
            }
        }