From 46d1c5f5e1e223e8c27ed184533f73c5b501ddaa Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Fri, 10 Jun 2022 22:54:52 +0530 Subject: [PATCH 01/10] Update XMLParser.cs Added a property which include the Long Name in Encoded XML --- src/NHapi.Base/Parser/XMLParser.cs | 48 ++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src/NHapi.Base/Parser/XMLParser.cs b/src/NHapi.Base/Parser/XMLParser.cs index 795500864..63a6e3ec0 100644 --- a/src/NHapi.Base/Parser/XMLParser.cs +++ b/src/NHapi.Base/Parser/XMLParser.cs @@ -61,6 +61,9 @@ public abstract class XMLParser : ParserBase private static readonly Regex NameSpaceRegex = new Regex(@$"xmlns(.*)=""{NameSpace}""", RegexOptions.Compiled); + /// includeLongNameInEncodedXML. + public bool includeLongNameInEncodedXML = false; + protected XMLParser() { } @@ -371,6 +374,11 @@ public virtual bool Encode(ISegment segmentObject, XmlElement segmentElement, Pa continue; } + if (includeLongNameInEncodedXML && reps[j] is AbstractType rep) + { + newNode.SetAttribute("LongName", rep.Description); + } + try { segmentElement.AppendChild(newNode); @@ -731,17 +739,17 @@ private bool Encode(IType datatypeObject, XmlElement datatypeElement, ParserOpti var hasData = false; // TODO: consider using a switch statement - if (datatypeObject is Varies) + if (datatypeObject is Varies varies) { - hasData = EncodeVaries((Varies)datatypeObject, datatypeElement, parserOptions); + hasData = EncodeVaries(varies, datatypeElement, parserOptions); } - else if (datatypeObject is IPrimitive) + else if (datatypeObject is IPrimitive primitive) { - hasData = EncodePrimitive((IPrimitive)datatypeObject, datatypeElement); + hasData = EncodePrimitive(primitive, datatypeElement); } - else if (datatypeObject is IComposite) + else if (datatypeObject is IComposite composite) { - hasData = EncodeComposite((IComposite)datatypeObject, datatypeElement, parserOptions); + hasData = EncodeComposite(composite, datatypeElement, parserOptions); } return hasData; @@ -859,20 +867,28 @@ private bool EncodeComposite(IComposite datatypeObject, XmlElement datatypeEleme { var name = MakeElementName(datatypeObject, i + 1); var newNode = datatypeElement.OwnerDocument.CreateElement(name, NameSpace); + var componentHasValue = Encode(components[i], newNode, parserOptions); - if (componentHasValue) + if (!componentHasValue) { - try - { - datatypeElement.AppendChild(newNode); - } - catch (Exception e) - { - throw new DataTypeException("DOMException encoding Composite: ", e); - } + continue; + } - hasValue = true; + if (includeLongNameInEncodedXML && components[i] is AbstractType component) + { + newNode.SetAttribute("LongName", component.Description); + } + + try + { + datatypeElement.AppendChild(newNode); } + catch (Exception e) + { + throw new DataTypeException("DOMException encoding Composite: ", e); + } + + hasValue = true; } return hasValue; From eaf923d8ffbb6e75263328798eb2ecca06ed1e69 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Mon, 13 Jun 2022 21:58:18 +0530 Subject: [PATCH 02/10] Update XMLParser.cs Make 'includeLongNameInEncodedXML' private. Make this field 'private' and encapsulate it in a 'public' property. Comments for ignoring error --- src/NHapi.Base/Parser/XMLParser.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/NHapi.Base/Parser/XMLParser.cs b/src/NHapi.Base/Parser/XMLParser.cs index 63a6e3ec0..c3408218d 100644 --- a/src/NHapi.Base/Parser/XMLParser.cs +++ b/src/NHapi.Base/Parser/XMLParser.cs @@ -61,8 +61,8 @@ public abstract class XMLParser : ParserBase private static readonly Regex NameSpaceRegex = new Regex(@$"xmlns(.*)=""{NameSpace}""", RegexOptions.Compiled); - /// includeLongNameInEncodedXML. - public bool includeLongNameInEncodedXML = false; + /// _includeLongNameInEncodedXML. + private bool _includeLongNameInEncodedXML = false; protected XMLParser() { @@ -73,6 +73,12 @@ protected XMLParser(IModelClassFactory factory) { } + public bool IncludeLongNameInEncodedXML + { + get { return _includeLongNameInEncodedXML; } + set { _includeLongNameInEncodedXML = value; } + } + /// /// Gets the preferred encoding of this Parser. /// @@ -374,7 +380,7 @@ public virtual bool Encode(ISegment segmentObject, XmlElement segmentElement, Pa continue; } - if (includeLongNameInEncodedXML && reps[j] is AbstractType rep) + if (_includeLongNameInEncodedXML && reps[j] is AbstractType rep) { newNode.SetAttribute("LongName", rep.Description); } @@ -874,7 +880,7 @@ private bool EncodeComposite(IComposite datatypeObject, XmlElement datatypeEleme continue; } - if (includeLongNameInEncodedXML && components[i] is AbstractType component) + if (_includeLongNameInEncodedXML && components[i] is AbstractType component) { newNode.SetAttribute("LongName", component.Description); } From ccbe2aa3fc279c3616a064209394d28139d20b74 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Tue, 14 Jun 2022 23:05:56 +0530 Subject: [PATCH 03/10] Update XMLParser.cs Removed this initialization to '_includeLongNameInEncodedXML' --- src/NHapi.Base/Parser/XMLParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHapi.Base/Parser/XMLParser.cs b/src/NHapi.Base/Parser/XMLParser.cs index c3408218d..b3a08b786 100644 --- a/src/NHapi.Base/Parser/XMLParser.cs +++ b/src/NHapi.Base/Parser/XMLParser.cs @@ -62,7 +62,7 @@ public abstract class XMLParser : ParserBase private static readonly Regex NameSpaceRegex = new Regex(@$"xmlns(.*)=""{NameSpace}""", RegexOptions.Compiled); /// _includeLongNameInEncodedXML. - private bool _includeLongNameInEncodedXML = false; + private bool _includeLongNameInEncodedXML; protected XMLParser() { From d49b73c5661f894691df59a2ab25fb5a0016414a Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Fri, 8 Jul 2022 23:30:49 +0530 Subject: [PATCH 04/10] Moved IncludeLongNameInEncodedXml to ParserOptions Moved IncludeLongNameInEncodedXml to ParserOptions, instead of public property. --- src/NHapi.Base/Parser/DefaultXMLParser.cs | 2 +- src/NHapi.Base/Parser/ParserOptions.cs | 4 ++++ src/NHapi.Base/Parser/XMLParser.cs | 13 ++----------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/NHapi.Base/Parser/DefaultXMLParser.cs b/src/NHapi.Base/Parser/DefaultXMLParser.cs index 02c2d4169..3d4d28e31 100644 --- a/src/NHapi.Base/Parser/DefaultXMLParser.cs +++ b/src/NHapi.Base/Parser/DefaultXMLParser.cs @@ -46,7 +46,7 @@ public DefaultXMLParser(IModelClassFactory modelClassFactory) /// Test harness. [STAThread] - public static new void Main(string[] args) + public new static void Main(string[] args) { if (args.Length != 1) { diff --git a/src/NHapi.Base/Parser/ParserOptions.cs b/src/NHapi.Base/Parser/ParserOptions.cs index 57ea1e756..7fc2b1edd 100644 --- a/src/NHapi.Base/Parser/ParserOptions.cs +++ b/src/NHapi.Base/Parser/ParserOptions.cs @@ -12,6 +12,7 @@ public ParserOptions() InvalidObx2Type = null; UnexpectedSegmentBehaviour = UnexpectedSegmentBehaviour.AddInline; NonGreedyMode = false; + IncludeLongNameInEncodedXml = false; DisableWhitespaceTrimmingOnAllXmlNodes = false; XmlNodeNamesToDisableWhitespaceTrimming = new HashSet(StringComparer.Ordinal); PrettyPrintEncodedXml = true; @@ -129,6 +130,9 @@ public ParserOptions() /// public bool NonGreedyMode { get; set; } + /// _includeLongNameInEncodedXML. + public bool IncludeLongNameInEncodedXml { get; set; } + /// /// /// If set to , the is configured to treat all whitespace diff --git a/src/NHapi.Base/Parser/XMLParser.cs b/src/NHapi.Base/Parser/XMLParser.cs index b3a08b786..f9169ddfb 100644 --- a/src/NHapi.Base/Parser/XMLParser.cs +++ b/src/NHapi.Base/Parser/XMLParser.cs @@ -61,9 +61,6 @@ public abstract class XMLParser : ParserBase private static readonly Regex NameSpaceRegex = new Regex(@$"xmlns(.*)=""{NameSpace}""", RegexOptions.Compiled); - /// _includeLongNameInEncodedXML. - private bool _includeLongNameInEncodedXML; - protected XMLParser() { } @@ -73,12 +70,6 @@ protected XMLParser(IModelClassFactory factory) { } - public bool IncludeLongNameInEncodedXML - { - get { return _includeLongNameInEncodedXML; } - set { _includeLongNameInEncodedXML = value; } - } - /// /// Gets the preferred encoding of this Parser. /// @@ -380,7 +371,7 @@ public virtual bool Encode(ISegment segmentObject, XmlElement segmentElement, Pa continue; } - if (_includeLongNameInEncodedXML && reps[j] is AbstractType rep) + if (parserOptions.IncludeLongNameInEncodedXml && reps[j] is AbstractType rep) { newNode.SetAttribute("LongName", rep.Description); } @@ -880,7 +871,7 @@ private bool EncodeComposite(IComposite datatypeObject, XmlElement datatypeEleme continue; } - if (_includeLongNameInEncodedXML && components[i] is AbstractType component) + if (parserOptions.IncludeLongNameInEncodedXml && components[i] is AbstractType component) { newNode.SetAttribute("LongName", component.Description); } From e5604e550ce2df31d1f4da648c81c6030bb99b17 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Mon, 11 Jul 2022 22:08:07 +0530 Subject: [PATCH 05/10] Added Comments Removed unused methods Added summary for new variable --- src/NHapi.Base/Parser/ParserOptions.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/NHapi.Base/Parser/ParserOptions.cs b/src/NHapi.Base/Parser/ParserOptions.cs index 7fc2b1edd..5f76e6596 100644 --- a/src/NHapi.Base/Parser/ParserOptions.cs +++ b/src/NHapi.Base/Parser/ParserOptions.cs @@ -130,7 +130,18 @@ public ParserOptions() /// public bool NonGreedyMode { get; set; } - /// _includeLongNameInEncodedXML. + /// + /// Gets or Sets flag which allows the Description attribute [LongName] to be added in encoded xml with counter position. + /// + /// + /// + /// 1 + /// 2 + /// ]]> + /// + /// + /// The default value is . public bool IncludeLongNameInEncodedXml { get; set; } /// From b765173e0ec0e4095cc9856fabe21c6422971ffe Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Tue, 19 Jul 2022 22:45:49 +0530 Subject: [PATCH 06/10] change new position change new position --- src/NHapi.Base/Parser/DefaultXMLParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHapi.Base/Parser/DefaultXMLParser.cs b/src/NHapi.Base/Parser/DefaultXMLParser.cs index 3d4d28e31..02c2d4169 100644 --- a/src/NHapi.Base/Parser/DefaultXMLParser.cs +++ b/src/NHapi.Base/Parser/DefaultXMLParser.cs @@ -46,7 +46,7 @@ public DefaultXMLParser(IModelClassFactory modelClassFactory) /// Test harness. [STAThread] - public new static void Main(string[] args) + public static new void Main(string[] args) { if (args.Length != 1) { From fc93df4e19d7e8c5265e49c2f3aa90267b6cf115 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Tue, 26 Jul 2022 23:01:12 +0530 Subject: [PATCH 07/10] Added Testcase Added Testcase for IncludeLongNameInEncodedXML. Test Method for Encode Test Method for Parser --- tests/NHapi.NUnit/Parser/XMLParserTests.cs | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/NHapi.NUnit/Parser/XMLParserTests.cs b/tests/NHapi.NUnit/Parser/XMLParserTests.cs index c8056098b..2a581dda8 100644 --- a/tests/NHapi.NUnit/Parser/XMLParserTests.cs +++ b/tests/NHapi.NUnit/Parser/XMLParserTests.cs @@ -374,6 +374,37 @@ public void Encode_AdtA01_CanBeParsedAgain() Console.WriteLine(decodedMessage.ToString()); } + [Test] + public void IncludeLongNameInEncodedXML_EncodingOptions() + { + var message = @"MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|201902271130||ADT^A01|68371142|P|2.3 + EVN|A01|201902271130|201902271130"; + + var expectedEncodedMessage = @"|^~\&KISsystemZTMNIDAklinikserverHL7Proxy201902271130ADTA0168371142P2.3A01201902271130201902271130"; + + var parser = new PipeParser(); + var options = new ParserOptions { IncludeLongNameInEncodedXml = true }; + + var parsed = parser.Parse(message, options); + var encodedMessage = parser.Encode(parsed, options); + + Assert.AreEqual(expectedEncodedMessage, encodedMessage); + } + + [Test] + public void IncludeLongNameInEncodedXML_ParserOptions() + { + var message = @"MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|201902271130||ADT^A01|68371142|P|2.3 + EVN|A01|201902271130|201902271130"; + + var parser = new PipeParser(); + var options = new ParserOptions { IncludeLongNameInEncodedXml = true }; + + var parsed = parser.Parse(message, options); + + Assert.AreEqual("201902271130", ((NHapi.Model.V23.Message.ADT_A01)parsed).EVN.DateTimePlannedEvent.TimeOfAnEvent.Value); + } + private static void SetMessageHeader(IMessage msg, string messageCode, string messageTriggerEvent, string processingId) { var msh = (ISegment)msg.GetStructure("MSH"); From ee46677d25be2f3d84bc8855a0b5a9687c25aad0 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Thu, 4 Aug 2022 21:54:25 +0530 Subject: [PATCH 08/10] Casting issue fix with new message Casting issue fix with new message --- tests/NHapi.NUnit/Parser/XMLParserTests.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/NHapi.NUnit/Parser/XMLParserTests.cs b/tests/NHapi.NUnit/Parser/XMLParserTests.cs index 2a581dda8..f5d3755e2 100644 --- a/tests/NHapi.NUnit/Parser/XMLParserTests.cs +++ b/tests/NHapi.NUnit/Parser/XMLParserTests.cs @@ -394,15 +394,19 @@ public void IncludeLongNameInEncodedXML_EncodingOptions() [Test] public void IncludeLongNameInEncodedXML_ParserOptions() { - var message = @"MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|201902271130||ADT^A01|68371142|P|2.3 - EVN|A01|201902271130|201902271130"; + var message = + "MSH|^~\\&|MILL|EMRY|MQ|EMRY|20150619155451||ADT^A08|Q2043855220T2330403781X928163|P|2.3||||||8859/1\r" + + "EVN|A08|20150619155451\r" + + "PID|1|935307^^^EUH MRN^MRN^EH01|25106376^^^TEC MRN~1781893^^^CLH MRN~935307^^^EUH MRN~5938067^^^EMPI|1167766^^^CPI NBR^^EXTERNAL~90509411^^^HNASYSID~10341880^^^HNASYSID~50627780^^^HNASYSID~5938067^^^MSG_CERNPHR|Patient^Test^Test^^^^Cur_Name||19400101|F||WHI|123 ENDOFTHE RD^UNIT 123^ATLANTA^GA^40000^USA^HOME^^||5555555555^HOME~6666666666^YAHOO@YAHOO.COM^EMAIL|6666666666^BUS|ENG|M|OTH|12345665161^^^EUH FIN^FIN NBR^EH01|123454103|GA123450071||Non-Hispanic|||0|\"\"|\"\"|\"\"||N"; var parser = new PipeParser(); var options = new ParserOptions { IncludeLongNameInEncodedXml = true }; var parsed = parser.Parse(message, options); + var adtA01 = parsed as ADT_A01; // a08 is mapped to a01 + Assert.IsNotNull(adtA01); - Assert.AreEqual("201902271130", ((NHapi.Model.V23.Message.ADT_A01)parsed).EVN.DateTimePlannedEvent.TimeOfAnEvent.Value); + Assert.AreEqual("19400101", adtA01.PID.DateOfBirth.TimeOfAnEvent.Value); } private static void SetMessageHeader(IMessage msg, string messageCode, string messageTriggerEvent, string processingId) From 8e0a1c12ab213ce1181d9e6dc08922d0f3633309 Mon Sep 17 00:00:00 2001 From: Laxmi Lal Menaria Date: Fri, 5 Aug 2022 22:08:28 +0530 Subject: [PATCH 09/10] removed not supported property removed not supported property in every versions. --- tests/NHapi.NUnit/Parser/XMLParserTests.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/NHapi.NUnit/Parser/XMLParserTests.cs b/tests/NHapi.NUnit/Parser/XMLParserTests.cs index f5d3755e2..01d566eed 100644 --- a/tests/NHapi.NUnit/Parser/XMLParserTests.cs +++ b/tests/NHapi.NUnit/Parser/XMLParserTests.cs @@ -404,9 +404,8 @@ public void IncludeLongNameInEncodedXML_ParserOptions() var parsed = parser.Parse(message, options); var adtA01 = parsed as ADT_A01; // a08 is mapped to a01 - Assert.IsNotNull(adtA01); - - Assert.AreEqual("19400101", adtA01.PID.DateOfBirth.TimeOfAnEvent.Value); + + Assert.IsNotNull(adtA01); } private static void SetMessageHeader(IMessage msg, string messageCode, string messageTriggerEvent, string processingId) From 6054823325a87251859dc82686402551c202def3 Mon Sep 17 00:00:00 2001 From: Jake Aitchison Date: Fri, 14 Oct 2022 16:08:23 +0100 Subject: [PATCH 10/10] Refactor test name to better describe the test. --- tests/NHapi.NUnit/Parser/XMLParserTests.cs | 62 +++++++++++++--------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/tests/NHapi.NUnit/Parser/XMLParserTests.cs b/tests/NHapi.NUnit/Parser/XMLParserTests.cs index 01d566eed..952b9b267 100644 --- a/tests/NHapi.NUnit/Parser/XMLParserTests.cs +++ b/tests/NHapi.NUnit/Parser/XMLParserTests.cs @@ -229,6 +229,27 @@ public void Parse_EncodedMessageIsModifiedWithEscapeSequence_IsParsedCorrectly() Assert.AreEqual($"\\H\\{obx5Value}\\.br\\{obx5Value}\\N\\", parsedObx5Value); } + [Test] + public void Parse_MessageContainsLongNameAttributes_ParsedAsExpected() + { + // Arrange + var message = "|^~\\&MILLEMRYMQEMRY20150619155451ADTA08Q2043855220T2330403781X928163P2.38859/1A08201506191554511935307EUH MRNMRNEH0125106376TEC MRN1781893CLH MRN935307EUH MRN5938067EMPI1167766CPI NBREXTERNAL90509411HNASYSID10341880HNASYSID50627780HNASYSID5938067MSG_CERNPHRPatientTestTestCur_Name19400101FWHI123 ENDOFTHE RDUNIT 123ATLANTAGA40000USAHOME5555555555HOME6666666666YAHOO@YAHOO.COMEMAIL6666666666BUSENGMOTH12345665161EUH FINFIN NBREH01123454103GA123450071Non-Hispanic0\"\"\"\"\"\"N"; + var expectedMessageControlId = "Q2043855220T2330403781X928163"; + var expectedDob = "19400101"; + + var parser = new DefaultXMLParser(); + + // Act + var parsed = parser.Parse(message); + + var adtA01 = parsed as ADT_A01; // a08 is mapped to a01 + + // Assert + Assert.IsNotNull(adtA01); + Assert.AreEqual(expectedMessageControlId, adtA01.MSH.MessageControlID.Value); + Assert.AreEqual(expectedDob, adtA01.PID.DateOfBirth.TimeOfAnEvent.Value); + } + [Test] public void Encode_OmdO03_CorrectlyHandlesEscaping() { @@ -345,6 +366,7 @@ public void Encode_GenericMessage_WorksAsExpected(string version) // Arrange var xmlParser = new DefaultXMLParser(); var type = GenericMessage.GetGenericMessageClass(version); + var expectedElementName = $"GenericMessageV{version.Replace(".", string.Empty)}"; var constructor = type.GetConstructor(new[] { typeof(IModelClassFactory) }); var message = (IMessage)constructor?.Invoke(new object[] { new DefaultModelClassFactory() }); @@ -354,7 +376,7 @@ public void Encode_GenericMessage_WorksAsExpected(string version) // Assert Assert.IsNotNull(document); - Assert.AreEqual($"GenericMessageV{version.Replace(".", string.Empty)}", document.DocumentElement?.LocalName); + Assert.AreEqual(expectedElementName, document.DocumentElement?.LocalName); Assert.IsNotNull(xmlParser.Encode(message)); } @@ -374,38 +396,26 @@ public void Encode_AdtA01_CanBeParsedAgain() Console.WriteLine(decodedMessage.ToString()); } - [Test] - public void IncludeLongNameInEncodedXML_EncodingOptions() + [Test] + public void Encode_WithParserOption_IncludeLongNameInEncodedXMLIsTrue_ResultContainsLongNameAttribute() { - var message = @"MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|201902271130||ADT^A01|68371142|P|2.3 - EVN|A01|201902271130|201902271130"; + // Arrange + var message = "MSH|^~\\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|201902271130||ADT^A01|68371142|P|2.3\r" + + "EVN|A01|201902271130|201902271130"; - var expectedEncodedMessage = @"|^~\&KISsystemZTMNIDAklinikserverHL7Proxy201902271130ADTA0168371142P2.3A01201902271130201902271130"; + var expectedEncodedMessage = @"|^~\&KISsystemZTMNIDAklinikserverHL7Proxy201902271130ADTA0168371142P2.3A01201902271130201902271130"; var parser = new PipeParser(); - var options = new ParserOptions { IncludeLongNameInEncodedXml = true }; + var xmlParser = new DefaultXMLParser(); + var options = new ParserOptions { IncludeLongNameInEncodedXml = true, PrettyPrintEncodedXml = false }; - var parsed = parser.Parse(message, options); - var encodedMessage = parser.Encode(parsed, options); + var parsed = parser.Parse(message); - Assert.AreEqual(expectedEncodedMessage, encodedMessage); - } - - [Test] - public void IncludeLongNameInEncodedXML_ParserOptions() - { - var message = - "MSH|^~\\&|MILL|EMRY|MQ|EMRY|20150619155451||ADT^A08|Q2043855220T2330403781X928163|P|2.3||||||8859/1\r" - + "EVN|A08|20150619155451\r" - + "PID|1|935307^^^EUH MRN^MRN^EH01|25106376^^^TEC MRN~1781893^^^CLH MRN~935307^^^EUH MRN~5938067^^^EMPI|1167766^^^CPI NBR^^EXTERNAL~90509411^^^HNASYSID~10341880^^^HNASYSID~50627780^^^HNASYSID~5938067^^^MSG_CERNPHR|Patient^Test^Test^^^^Cur_Name||19400101|F||WHI|123 ENDOFTHE RD^UNIT 123^ATLANTA^GA^40000^USA^HOME^^||5555555555^HOME~6666666666^YAHOO@YAHOO.COM^EMAIL|6666666666^BUS|ENG|M|OTH|12345665161^^^EUH FIN^FIN NBR^EH01|123454103|GA123450071||Non-Hispanic|||0|\"\"|\"\"|\"\"||N"; - - var parser = new PipeParser(); - var options = new ParserOptions { IncludeLongNameInEncodedXml = true }; + // Act + var encodedMessage = xmlParser.Encode(parsed, options); - var parsed = parser.Parse(message, options); - var adtA01 = parsed as ADT_A01; // a08 is mapped to a01 - - Assert.IsNotNull(adtA01); + // Assert + Assert.AreEqual(expectedEncodedMessage, encodedMessage); } private static void SetMessageHeader(IMessage msg, string messageCode, string messageTriggerEvent, string processingId)