コード例 #1
0
ファイル: PdqHandler.cs プロジェクト: shenghu/client-registry
        /// <summary>
        /// Handle HL7 message
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public NHapi.Base.Model.IMessage HandleMessage(HL7.TransportProtocol.Hl7MessageReceivedEventArgs e)
        {
            ISystemConfigurationService config = this.Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService;
            ILocalizationService        locale = this.Context.GetService(typeof(ILocalizationService)) as ILocalizationService;

            // Get the message type
            IMessage response = null;

            if (e.Message.Version == "2.5")
            {
                // Get the MSH segment
                var msh = e.Message.GetStructure("MSH") as MSH;
                switch (msh.MessageType.TriggerEvent.Value)
                {
                case "Q22":
                    response = HandlePdqQuery(e.Message as QBP_Q21, e);
                    break;

                default:
                    response = MessageUtil.CreateNack(e.Message, "AR", "201", locale.GetString("HL7201"), config);
                    break;
                }
            }

            // response still null?
            if (response == null)
            {
                response = MessageUtil.CreateNack(e.Message, "AR", "203", locale.GetString("HL7203"), config);
            }
            return(response);
        }
コード例 #2
0
        /// <summary>
        /// Handle message
        /// </summary>
        public NHapi.Base.Model.IMessage HandleMessage(HL7.TransportProtocol.Hl7MessageReceivedEventArgs e)
        {
            // Get the config service
            ISystemConfigurationService config = Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService;

            return(MessageUtil.CreateNack(e.Message, "AR", "200", "Unsupported message type", config));
        }
コード例 #3
0
ファイル: PixHandler.cs プロジェクト: shenghu/client-registry
        /// <summary>
        /// Handle a received message
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public NHapi.Base.Model.IMessage HandleMessage(HL7.TransportProtocol.Hl7MessageReceivedEventArgs e)
        {
            ISystemConfigurationService config = this.Context.GetService(typeof(ISystemConfigurationService)) as ISystemConfigurationService;
            ILocalizationService        locale = this.Context.GetService(typeof(ILocalizationService)) as ILocalizationService;

            // Get the message type
            IMessage response = null;

            try
            {
                if (e.Message.Version == "2.5" || e.Message.Version == "2.3.1")
                {
                    // Get the MSH segment
                    var terser  = new Terser(e.Message);
                    var trigger = terser.Get("/MSH-9-2");
                    Trace.TraceInformation("Message is of type {0} {1}", e.Message.GetType().FullName, trigger);

                    switch (trigger)
                    {
                    case "Q23":
                        if (e.Message is NHapi.Model.V25.Message.QBP_Q21)
                        {
                            response = HandlePixQuery(e.Message as NHapi.Model.V25.Message.QBP_Q21, e);
                        }
                        else
                        {
                            response = MessageUtil.CreateNack(e.Message, "AR", "200", locale.GetString("MSGE074"), config);
                        }
                        break;

                    case "A01":
                    case "A04":
                    case "A05":
                        if (e.Message is NHapi.Model.V231.Message.ADT_A01)
                        {
                            response = HandlePixAdmit(e.Message as NHapi.Model.V231.Message.ADT_A01, e);
                        }
                        else
                        {
                            response = MessageUtil.CreateNack(e.Message, "AR", "200", locale.GetString("MSGE074"), config);
                        }
                        break;

                    case "A08":
                        if (e.Message is NHapi.Model.V231.Message.ADT_A01)
                        {
                            response = HandlePixUpdate(e.Message as NHapi.Model.V231.Message.ADT_A01, e);
                        }
                        else if (e.Message is NHapi.Model.V231.Message.ADT_A08)
                        {
                            response = HandlePixUpdate(e.Message as NHapi.Model.V231.Message.ADT_A08, e);
                        }
                        else
                        {
                            response = MessageUtil.CreateNack(e.Message, "AR", "200", locale.GetString("MSGE074"), config);
                        }
                        break;

                    case "A40":
                        if (e.Message is NHapi.Model.V231.Message.ADT_A39)
                        {
                            response = HandlePixMerge(e.Message as NHapi.Model.V231.Message.ADT_A39, e);
                        }
                        else if (e.Message is NHapi.Model.V231.Message.ADT_A40)
                        {
                            response = HandlePixMerge(e.Message as NHapi.Model.V231.Message.ADT_A40, e);
                        }
                        else
                        {
                            response = MessageUtil.CreateNack(e.Message, "AR", "200", locale.GetString("MSGE074"), config);
                        }
                        break;

                    default:
                        response = MessageUtil.CreateNack(e.Message, "AR", "201", locale.GetString("HL7201"), config);
                        Trace.TraceError("{0} is not a supported trigger", trigger);
                        break;
                    }
                }

                // response still null?
                if (response == null)
                {
                    response = MessageUtil.CreateNack(e.Message, "AR", "203", locale.GetString("HL7203"), config);
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());
                response = MessageUtil.CreateNack(e.Message, "AR", "207", ex.Message, config);
            }

            return(response);
        }