/// <summary> /// Builds an ACK or NACK message for this message /// </summary> /// <param name="code">ack code like AA, AR, AE</param> /// <param name="isNack">true for generating a NACK message, otherwise false</param> /// <param name="errMsg">error message to be sent with NACK</param> /// <returns>An ACK or NACK message if success, otherwise null</returns> private Message createAckMessage(string code, bool isNack, string errMsg) { var response = new StringBuilder(); if (this.MessageStructure != "ACK") { var dateString = MessageHelper.LongDateWithFractionOfSecond(DateTime.Now); var msh = this.SegmentList["MSH"].First(); var delim = this.Encoding.FieldDelimiter; response.Append("MSH").Append(this.Encoding.AllDelimiters).Append(delim).Append(msh.FieldList[4].Value).Append(delim).Append(msh.FieldList[5].Value).Append(delim) .Append(msh.FieldList[2].Value).Append(delim).Append(msh.FieldList[3].Value).Append(delim) .Append(dateString).Append(delim).Append(delim).Append("ACK").Append(delim).Append(this.MessageControlID).Append(delim) .Append(this.ProcessingID).Append(delim).Append(this.Version).Append(this.Encoding.SegmentDelimiter); response.Append("MSA").Append(delim).Append(code).Append(delim).Append(this.MessageControlID).Append((isNack ? delim + errMsg : string.Empty)).Append(this.Encoding.SegmentDelimiter); } else { return(null); } try { var message = new Message(response.ToString()); message.ParseMessage(); return(message); } catch { return(null); } }
/// <summary> /// Builds a negative ack for this message /// </summary> /// <param name="code">ack code like AR, AE</param> /// <param name="errMsg">error message to be sent with ACK</param> /// <returns>A NACK message if success, otherwise null</returns> public Message getNACK(string code, string errMsg) { string ackMsg; if (this.MessageStructure != "ACK") { var dateString = MessageHelper.LongDateWithFractionOfSecond(DateTime.Now); var msh = this.SegmentList["MSH"].First(); var delim = this.Encoding.FieldDelimiter; ackMsg = "MSH" + this.Encoding.AllDelimiters + delim + msh.FieldList[4].Value + delim + msh.FieldList[5].Value + delim + msh.FieldList[2].Value + delim + msh.FieldList[3].Value + delim + dateString + delim + msh.FieldList[7].Value + delim + "ACK" + delim + this.MessageControlID + delim + this.ProcessingID + delim + this.Version + this.Encoding.SegmentDelimiter; ackMsg += "MSA" + delim + code + delim + this.MessageControlID + delim + errMsg + this.Encoding.SegmentDelimiter; } else { return(null); } try { var nack = new Message(ackMsg); nack.ParseMessage(); return(nack); } catch { return(null); } }
/// <summary> /// Builds an ACK or NACK message for this message /// </summary> /// <param name="code">ack code like AA, AR, AE</param> /// <param name="isNack">true for generating a NACK message, otherwise false</param> /// <param name="errMsg">error message to be sent with NACK</param> /// <returns>An ACK or NACK message if success, otherwise null</returns> private Message createAckMessage(string code, bool isNack, string errMsg) { string response; if (this.MessageStructure != "ACK") { var dateString = MessageHelper.LongDateWithFractionOfSecond(DateTime.Now); var msh = this.SegmentList["MSH"].First(); var delim = this.Encoding.FieldDelimiter; response = "MSH" + this.Encoding.AllDelimiters + delim + msh.FieldList[4].Value + delim + msh.FieldList[5].Value + delim + msh.FieldList[2].Value + delim + msh.FieldList[3].Value + delim + dateString + delim + delim + "ACK" + delim + this.MessageControlID + delim + this.ProcessingID + delim + this.Version + this.Encoding.SegmentDelimiter; response += "MSA" + delim + code + delim + this.MessageControlID + (isNack ? delim + errMsg : string.Empty) + this.Encoding.SegmentDelimiter; } else { return(null); } try { var message = new Message(response); message.ParseMessage(); return(message); } catch { return(null); } }
public void AddSegmentMSH(string sendingApplication, string sendingFacility, string receivingApplication, string receivingFacility, string security, string messageType, string messageControlID, string processingID, string version) { var dateString = MessageHelper.LongDateWithFractionOfSecond(DateTime.Now); var delim = this.Encoding.FieldDelimiter; string response = "MSH" + this.Encoding.AllDelimiters + delim + sendingApplication + delim + sendingFacility + delim + receivingApplication + delim + receivingFacility + delim + dateString + delim + security + delim + messageType + delim + messageControlID + delim + processingID + delim + version + this.Encoding.SegmentDelimiter; var message = new Message(response); this.AddNewSegment(message.DefaultSegment("MSH")); }