/// <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); }
/// <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)); }
/// <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); }