public void Unbundling835ByLoop2000()
        {
            string unbundledLoop2000 = @"ISA*00*          *00*          *ZZ*ASHTB          *ZZ*01017          *040315*1005*U*00401*004075123*0*P*:~
              GS*HP*ASHTB*01017*20040315*1005*1*X*004010X091A1~
            ST*835*07504123~
              BPR*H*5.75*C*NON************20040315~
              TRN*1*A04B001017.07504*1346000128~
              DTM*405*20040308~
              N1*PR*ASHTABULA COUNTY ADAMH BD~
            N3*4817 STATE ROAD SUITE 203~
            N4*ASHTABULA*OH*44004~
              N1*PE*LAKE AREA RECOVERY CENTER *FI*346608640~
            N3*2801 C. COURT~
            N4*ASHTABULA*OH*44004~
            REF*PQ*1017~
              LX*1~
            CLP*444444*1*56.70*56.52*0*MC*0000000655555555*53~
              NM1*QC*1*FUDD*ELMER*S***MI*1333333~
              NM1*82*2*WECOVERWY SVCS*****FI*346608640~
              REF*F8*A76B04054~
              SVC*HC:H0005:HF:H9*56.70*56.52**6~
            DTM*472*20040205~
            CAS*CO*42*0.18*0~
            REF*6R*444444~
            CLP*999999*4*25.95*0*25.95*13*0000000555555555*11~
              NM1*QC*1*SAM*YOSEMITE*A***MI*3333333~
              NM1*82*2*ACME AGENCY*****FI*310626223~
              REF*F8*H57B10401~
              SVC*ZZ:M2200:HE*25.95*0**1~
            DTM*472*20021224~
            CAS*CR*18*25.95*0~
            CAS*CO*42*0*0~
            REF*6R*999999~
            CLP*888888*4*162.13*0*162.13*MC*0000000456789123*11~
              NM1*QC*1*SQUAREPANTS*BOB* ***MI*2222222~
              NM1*82*2*BIKINI AGENCY*****FI*310626223~
              REF*F8*H57B10401~
              SVC*ZZ:M151000:F0*162.13*0**1.9~
            DTM*472*20020920~
            CAS*CO*29*162.13*0*42*0*0~
            REF*6R*888888~
            CLP*111111*2*56.52*18.88*0*13*0000000644444444*53~
              NM1*QC*1*LEGHORN*FOGHORN*P***MI*7777777~
              NM1*82*2*CHICKENHAWK SVCS*****FI*346608640~
              REF*F8*A76B04054~
              SVC*HC:H0005:HF:H9*56.52*18.88**6~
            DTM*472*20031209~
            CAS*CO*42*0*0~
            CAS*OA*23*37.64*0~
            REF*6R*111111~
            CLP*121212*4*56.52*0*0*13*0000000646464640*53~
              NM1*QC*1*EXPLORER*DORA****MI*1717171~
              NM1*82*2*SWIPER AGENCY*****FI*346608640~
              REF*F8*A76B04054~
              SVC*HC:H0005:HF:H9*56.52*0**6~
            DTM*472*20031202~
            CAS*CO*42*0*0~
            CAS*OA*23*57.6*0*23*-1.08*0~
            REF*6R*121212~
            CLP*333333*1*74.61*59.69*14.92*13*0000000688888888*55~
              NM1*QC*1*BEAR*YOGI* ***MI*2222222~
              NM1*82*2*JELLYSTONE SVCS*****FI*346608640~
              REF*F8*A76B04054~
              SVC*ZZ:A0230:HF*74.61*59.69**1~
            DTM*472*20040203~
            CAS*PR*2*14.92*0~
            CAS*CO*42*0*0~
            REF*6R*333333~
            CLP*777777*25*136.9*0*0*13*0000000622222222*53~
              NM1*QC*1*BIRD*TWEETY*M***MI*4444444~
              NM1*82*2*GRANNY AGENCY*****FI*340716747~
              REF*F8*A76B03293~
              SVC*HC:H0015:HF:99:H9*136.9*0**1~
            DTM*472*20030911~
            CAS*PI*104*136.72*0~
            CAS*CO*42*0.18*0~
            REF*6R*777777~
            CLP*123456*22*-42.58*-42.58*0*13*0000000657575757*11~
              NM1*QC*1*SIMPSON*HOMER* ***MI*8787888~
              NM1*82*2*DOH GROUP*****FI*310626223~
              REF*F8*A57B04033~
              SVC*HC:H0036:GT:UK*-42.58*-42.58**-2~
            DTM*472*20040102~
            CAS*CR*141*0*0*42*0*0*22*0*0~
            CAS*OA*141*0*0~
            REF*6R*123456~
            CLP*090909*22*-86.76*-86.76*0*MC*0000000648484848*53~
              NM1*QC*1*DUCK*DAFFY*W***MI*1245849~
              NM1*82*2*ABTHSOLUTE HELP*****FI*346608640~
              REF*F8*A76B04054~
              SVC*HC:H0004:HF:H9*-86.76*-86.76**-4~
            DTM*150*20040210~
            DTM*151*20040211~
            CAS*CR*22*0*0*42*0*0~
            CAS*OA*22*0*0~
            REF*6R*090909~
            AMT*AU*86.76~
            QTY*NE*53~
            LQ*HE*MA92~
              PLB*123456*19960930*CV:9876514*-1.27~
            SE*97*07504123~
              GE*1*1~
            IEA*1*004075123~";

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._835._4010.Example1_GripElements.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "2000");
            Assert.AreEqual(1, list.Count);
            Assert.AreEqual(unbundledLoop2000, list[0].SerializeToX12(true));
            Trace.WriteLine(list[0].SerializeToX12(true));
        }
Пример #2
0
        public void FlattenUsingXmlDocument()
        {
            Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OopFactory.X12.Tests.Unit.Parsing._SampleEdiFiles.ORD._820.Example1_MortgageBankers.txt");

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(stream).First();
            string xml = interchange.Serialize();

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            FileStream fstream = new FileStream("c:\\Temp\\ORD._820.Example1.txt", FileMode.Create);
            StreamWriter writer = new StreamWriter(fstream);

            writer.WriteLine("Transaction,Creation Date,Submitter Name, Borrower Last Name, Remittance ID");
            foreach (XmlElement transaction in doc.SelectNodes("/Interchange/FunctionGroup/Transaction"))
            {
                foreach (XmlElement entity in transaction.SelectNodes("Loop[@LoopId='ENT']"))
                {
                    foreach (XmlElement remit in entity.SelectNodes("Loop[@LoopId='RMR']"))
                    {
                        writer.WriteLine("{0},{1},{2},{3},{4}",
                            transaction.SelectSingleNode("ST/ST02").InnerText,
                            transaction.SelectSingleNode("DTM[DTM01='097']/DTM02").InnerText,
                            transaction.SelectSingleNode("Loop[@LoopId='N1']/N1[N101='41']/N102").InnerText,
                            entity.SelectSingleNode("Loop[@LoopId='NM1']/NM1[NM101='BW']/NM103").InnerText,
                            remit.SelectSingleNode("RMR/RMR02").InnerText);
                    }
                }
            }
            
            writer.Close();
            fstream.Close();
            
        }
Пример #3
0
        public void UnbundleItemsFrom856Test()
        {
            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("ORD._856.Example1.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "ITEM");
            foreach (var item in list)
            {
                Trace.WriteLine("...");
                Trace.WriteLine(item.SerializeToX12(true));
            }
        }
 /// <summary>
 /// Reads a claim that has been st
 /// </summary>
 /// <param name="stream"></param>
 /// <returns></returns>
 public ClaimDocument Transform837ToClaimDocument(Stream stream)
 {
     var parser = new X12Parser();
     var interchanges = parser.ParseMultiple(stream);
     ClaimDocument doc = new ClaimDocument();
     foreach (var interchange in interchanges)
     {
         var thisDoc = Transform837ToClaimDocument(interchange);
         doc.Claims.AddRange(thisDoc.Claims);
     }
     return doc;
 }
Пример #5
0
        static void Main(string[] args)
        {
            var opts = new ExecutionOptions();
            try
            {
                opts.LoadOptions(args);
            }
            catch (ArgumentException exc)
            {
                Console.Write(exc.Message);
                return;
            }

            X12Parser parser = new X12Parser();

            foreach (var filename in Directory.GetFiles(opts.InputDirectory, opts.FilenamePattern))
            {
                FileInfo inputFile = new FileInfo(filename);
                List<Interchange> list = new List<Interchange>();
                using (FileStream fs = new FileStream(inputFile.FullName, FileMode.Open, FileAccess.Read))
                {
                    X12StreamReader reader = new X12StreamReader(fs, Encoding.UTF8);
                    X12FlatTransaction transaction = reader.ReadNextTransaction();
                    while (!string.IsNullOrEmpty(transaction.Transactions.First()))
                    {
                        string x12 = transaction.ToString();
                        var interchange = parser.ParseMultiple(x12).First();
                        if (opts.LoopId == "ST")
                            list.Add(interchange);
                        else
                        {
                            list.AddRange(parser.UnbundleByLoop(interchange, opts.LoopId));
                        }
                        transaction = reader.ReadNextTransaction();
                    }
                }
                List<Interchange> interchanges = parser.ParseMultiple(new FileStream(filename, FileMode.Open, FileAccess.Read));
                for (int i = 0; i < list.Count; i++)
                {
                    string outputFilename = String.Format(opts.FormatString, opts.OutputDirectory, inputFile.Name, i + 1, inputFile.Extension);
                    using (FileStream outputFilestream = new FileStream(outputFilename, FileMode.Create, FileAccess.Write))
                    {
                        using (StreamWriter writer = new StreamWriter(outputFilestream))
                        {
                            writer.Write(list[i].SerializeToX12(opts.IncludeWhitespace));
                            writer.Close();
                        }
                        outputFilestream.Close();
                    }
                }
            }
        }
        public void FlattenUsingXslt()
        {
            Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OopFactory.X12.Tests.Unit.Parsing._SampleEdiFiles.ORD._820.Example1_MortgageBankers.txt");

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(stream).First();
            string xml = interchange.Serialize();

            var transform = new XslCompiledTransform();
            transform.Load(XmlReader.Create(Assembly.GetExecutingAssembly().GetManifestResourceStream("OopFactory.X12.Tests.Unit.Flattening.820-XML-to-csv.xslt")));
            var writer = new StringWriter();

            transform.Transform(XmlReader.Create(new StringReader(xml)), new XsltArgumentList(), writer);
            System.Diagnostics.Trace.WriteLine(writer.GetStringBuilder().ToString());
        }
Пример #7
0
        public void ParseToXml()
        {
            string resourcePath = Convert.ToString(TestContext.DataRow["ResourcePath"]);
            Trace.WriteLine(resourcePath);
            Stream stream = GetEdi(resourcePath);

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(stream).First();
            string xml = interchange.Serialize();
#if DEBUG
            new FileStream(@"c:\Temp\" + resourcePath.Replace(".txt", ".xml"), FileMode.Create).PrintToFile(xml);
#endif
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);
            int index = 1;
            string query = GetXPathQuery(index);
            while (!string.IsNullOrWhiteSpace(query))
            {
                string expected = GetExpectedValue(index);
                XmlNode node = doc.SelectSingleNode((string)query);
                Assert.IsNotNull(node, "Query '{0}' not found in {1}.", query, resourcePath);
                Assert.AreEqual(expected, node.InnerText, "Value {0} not expected from query {1} in {2}.", node.InnerText, query, resourcePath);
                Trace.WriteLine(String.Format("Query '{0}' succeeded.", query));
                query = GetXPathQuery(++index);
            }

            if (resourcePath.Contains("_837D"))
            {
                stream = GetEdi(resourcePath);
                parser = new X12Parser(new DentalClaimSpecificationFinder());
                interchange = parser.ParseMultiple(stream).First();
                xml = interchange.Serialize();
#if DEBUG
            new FileStream(@"c:\Temp\" + resourcePath.Replace(".txt", "_837D.xml"), FileMode.Create).PrintToFile(xml);
#endif
            }

            if (resourcePath.Contains("_837I"))
            {
                stream = GetEdi(resourcePath);
                parser = new X12Parser(new InstitutionalClaimSpecificationFinder());
                interchange = parser.ParseMultiple(stream).First();
                xml = interchange.Serialize();
#if DEBUG
            new FileStream(@"c:\Temp\" + resourcePath.Replace(".txt", "_837I.xml"), FileMode.Create).PrintToFile(xml);
#endif
            }
        }
Пример #8
0
        private Stream normalParse(Stream input, Encoding encoding)
        {
            OopFactory.X12.Parsing.X12Parser parser = new OopFactory.X12.Parsing.X12Parser(throwException);
            Stream       stream = new MemoryStream();
            StreamWriter writer = new StreamWriter(stream, encoding);

            var interchanges = parser.ParseMultiple(input, encoding);

            writer.Write("<Interchanges>");
            for (int i = 0; i < interchanges.Count; i++)
            {
                var interchange = interchanges[i].Serialize();
                writer.Write(interchange.RemoveXmlDeclaration());
            }
            writer.Write("</Interchanges>");
            writer.Flush();

            stream.Position = 0;
            return(stream);
        }
Пример #9
0
        private static void MergeEdiTest()
        {
            using (Stream stream1 = Assembly.GetExecutingAssembly().GetManifestResourceStream("EdiTransform.InstitutionalClaim4010.txt"))
            {
                using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("EdiTransform.InstitutionalClaim5010.txt"))
                {
                    var parser = new X12Parser();
                    var interchange1 = parser.ParseMultiple(stream1).ToList().FirstOrDefault();
                    var interchange2 = parser.ParseMultiple(stream2).ToList().FirstOrDefault();

                    foreach (var transaction in interchange2.FunctionGroups.ToArray().First().Transactions)
                    {
                        interchange1.FunctionGroups.ToArray().First().Transactions.Add(transaction);
                    }
                    string newX12 = interchange1.SerializeToX12(true);
                    Debug.WriteLine("After passing through interchange object:");
                    Debug.WriteLine(newX12);
                }
            }
        }
Пример #10
0
        private Stream chunkParse(Stream input, Encoding encoding, int maxBatchSize)
        {
            OopFactory.X12.Parsing.X12Parser parser = new OopFactory.X12.Parsing.X12Parser(throwException);
            Stream       stream = new MemoryStream();
            StreamWriter writer = new StreamWriter(stream, encoding);

            writer.Write("<Interchanges>");
            // Break up output files by batch size
            X12StreamReader    reader = new X12StreamReader(stream, encoding);
            X12FlatTransaction currentTransactions = reader.ReadNextTransaction();
            X12FlatTransaction nextTransaction     = reader.ReadNextTransaction();
            int i = 1;

            while (!string.IsNullOrEmpty(nextTransaction.Transactions.First()))
            {
                if (currentTransactions.GetSize() + nextTransaction.GetSize() < maxBatchSize &&
                    currentTransactions.IsaSegment == nextTransaction.IsaSegment &&
                    currentTransactions.GsSegment == nextTransaction.GsSegment)
                {
                    currentTransactions.Transactions.AddRange(nextTransaction.Transactions);
                }
                else
                {
                    var interchange = parser.ParseMultiple(currentTransactions.ToString()).First().Serialize();
                    writer.Write(interchange.RemoveXmlDeclaration());
                    currentTransactions = nextTransaction;
                }
                nextTransaction = reader.ReadNextTransaction();
            }

            var finalInterchange = parser.ParseMultiple(currentTransactions.ToString()).First().Serialize();

            writer.Write(finalInterchange.RemoveXmlDeclaration());

            writer.Write("</Interchanges>");
            writer.Flush();

            stream.Position = 0;
            return(stream);
        }
 public X12EdiParsingService(bool suppressComments, ISpecificationFinder specFinder)
 {
     _parser = new X12Parser(specFinder);
 }
 public X12EdiParsingService(bool suppressComments)
 {
     _parser = new X12Parser();
     _suppressComments = suppressComments;
 }
        public void Unbundling835ByLoop2110()
        {
            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._835._4010.Example1_GripElements.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "2110");
            Assert.AreEqual(9, list.Count);
        }
        public void Unbundling835ByLoop2100()
        {
            string thirdUnbundledClaim = @"ISA*00*          *00*          *ZZ*ASHTB          *ZZ*01017          *040315*1005*U*00401*004075123*0*P*:~
              GS*HP*ASHTB*01017*20040315*1005*1*X*004010X091A1~
            ST*835*07504123~
              BPR*H*5.75*C*NON************20040315~
              TRN*1*A04B001017.07504*1346000128~
              DTM*405*20040308~
              N1*PR*ASHTABULA COUNTY ADAMH BD~
            N3*4817 STATE ROAD SUITE 203~
            N4*ASHTABULA*OH*44004~
              N1*PE*LAKE AREA RECOVERY CENTER *FI*346608640~
            N3*2801 C. COURT~
            N4*ASHTABULA*OH*44004~
            REF*PQ*1017~
              LX*1~
            CLP*888888*4*162.13*0*162.13*MC*0000000456789123*11~
              NM1*QC*1*SQUAREPANTS*BOB* ***MI*2222222~
              NM1*82*2*BIKINI AGENCY*****FI*310626223~
              REF*F8*H57B10401~
              SVC*ZZ:M151000:F0*162.13*0**1.9~
            DTM*472*20020920~
            CAS*CO*29*162.13*0*42*0*0~
            REF*6R*888888~
              PLB*123456*19960930*CV:9876514*-1.27~
            SE*22*07504123~
              GE*1*1~
            IEA*1*004075123~";

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._835._4010.Example1_GripElements.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "2100");
            Assert.AreEqual(9, list.Count);
            Assert.AreEqual(thirdUnbundledClaim, list[2].SerializeToX12(true));
            Trace.WriteLine(list[2].SerializeToX12(true));
        }
        public void UnbundleClaimsIn837FromNthTest()
        {
            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._837P._4010.FromNth.837_DeIdent_05.dat")).First();

            var list = parser.UnbundleByLoop(interchange, "2300");
            Assert.AreEqual(186, list.Count);
        }
        public void UnbundleClaimsIn837ByServiceLineTest()
        {
            string lastServiceLine = @"ISA*00*          *01*SECRET    *ZZ*SUBMITTERS.ID  *ZZ*RECEIVERS.ID   *930602*1253*^*00401*000000905*1*T*:~
              GS*HC*SENDER CODE*RECEIVER CODE*1994033*0802*1*X*004010X098A1~
            ST*837*0021~
              BHT*0019*00*0123*19981015*1023*RP~
              REF*87*004010X098~
              NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~
            PER*IC*JERRY*TE*3055552222*EX*231~
              NM1*40*2*REPRICER XYZ*****46*66783JJT~
              HL*1**20*1~
            NM1*85*2*PREMIER BILLING SERVICE*****24*587654321~
              N3*234 Seaway St~
              N4*Miami*FL*33111~
            NM1*87*2*KILDARE ASSOC*****24*581234567~
              N3*2345 OCEAN BLVD~
              N4*MIAMI*FL*33111~
            HL*2*1*22*0~
              SBR*P*18*12312-A******HM~
              NM1*IL*1*SMITH*TED****34*000221111~
            N3*236 N MAIN ST~
            N4*MIAMI*FL*33413~
            DMG*D8*19430501*M~
              NM1*PR*2*ALLIANCE HEALTH AND LIFE INSURANCE*****PI*741234~
              CLM*26462967*100***11::1*Y*A*Y*Y*C~
            DTP*431*D8*19981003~
            REF*D9*17312345600006351~
            HI*BK:0340*BF:V7389~
            NM1*82*1*KILDARE*BEN****34*112233334~
              PRV*PE*ZZ*203BF0100Y~
            NM1*77*2*KILDARE ASSOCIATES*****24*581234567~
              N3*2345 OCEAN BLVD~
              N4*MIAMI*FL*33111~
            LX*4~
              SV1*HC:86663*10*UN*1***2**N~
              DTP*472*D8*19981010~
            SE*33*0021~
              GE*1*1~
            IEA*1*000000905~";

            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._837P._4010.Spec_4.1.1_PatientIsSubscriber.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "2400");

            Assert.AreEqual(4, list.Count);
            Assert.AreEqual(lastServiceLine, list[3].SerializeToX12(true));
        }
        public void UnbundleClaimsFrom837Test()
        {
            X12Parser parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(Extensions.GetEdi("INS._837P._5010.Example1_2_And_3_Combined.txt")).First();

            var list = parser.UnbundleByLoop(interchange, "2300");
            Assert.AreEqual(3, list.Count);
            foreach (var item in list)
            {
                Trace.WriteLine("...");
                Trace.WriteLine(item.SerializeToX12(true));
            }

            Assert.AreEqual(expectedClaim1, list[0].SerializeToX12(true));
            Assert.AreEqual(expectedClaim2, list[1].SerializeToX12(true));
            Assert.AreEqual(expectedClaim3, list[2].SerializeToX12(true));
        }
Пример #18
0
 private static void UpdateEdiTest()
 {
     using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("EdiTransform.ProfessionalClaim1.txt"))
     {
         var parser = new X12Parser();
         var interchanges = parser.ParseMultiple(stream);
         var service = new ProfessionalClaimToHcfa1500FormTransformation("");
         ClaimDocument doc = service.Transform837ToClaimDocument(interchanges.First());
         var claim = doc.Claims.First();
         claim.ServiceLines[0].Procedure.ProcedureCode = "87070";
         claim.ServiceLines[1].Procedure.ProcedureCode = "99213";
         claim.BillingProvider.TaxId = "12345";
         XmlDocument newdoc = TransformClaimDocumentTo837(interchanges.First(), claim);
         string x12 = parser.TransformToX12(newdoc.OuterXml);
         var modifiedInterchange = parser.ParseMultiple(x12).First();
         string newX12 = modifiedInterchange.SerializeToX12(true);
         Debug.WriteLine("After passing through interchange object:");
         Debug.WriteLine(newX12);
     }
 }
Пример #19
0
        public void ParseAndTransformToX12()
        {
            string resourcePath = Convert.ToString(TestContext.DataRow["ResourcePath"]);  // "INS._837P._4010.Spec_4.1.1_PatientIsSubscriber.txt";
            if (!resourcePath.Contains("_0x1D"))
            {
                Trace.WriteLine(resourcePath);
                Stream stream = GetEdi(resourcePath);

                var parser = new X12Parser();
                Interchange interchange = parser.ParseMultiple(stream).First();
                string originalX12 = interchange.SerializeToX12(true);

                string xml = interchange.Serialize();
                string x12 = parser.TransformToX12(xml);

                Interchange newInterchange = parser.ParseMultiple(x12).First();
                string newX12 = newInterchange.SerializeToX12(true);

                Assert.AreEqual(originalX12, newX12);
                Trace.Write(x12);
            }
        }
Пример #20
0
        public void ParseUnicodeFile()
        {
            var fs = Assembly.GetExecutingAssembly().GetManifestResourceStream("OopFactory.X12.Tests.Unit.Parsing._SampleEdiFiles.INS._837P._5010.UnicodeExample.txt");

            X12Parser parser = new X12Parser();
            var interchange = parser.ParseMultiple(fs, Encoding.Unicode);
            Trace.Write(interchange.First().Serialize());
        }
Пример #21
0
        public void ParseModifyAndTransformBackToX12()
        {
            var stream = GetEdi("INS._270._4010.Example1_DHHS.txt");

            var parser = new X12Parser();
            Interchange interchange = parser.ParseMultiple(stream).First();
            string originalX12 = interchange.SerializeToX12(true);

            string xml = interchange.Serialize();

            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;
            doc.LoadXml(xml);

            XmlElement dmgElement = (XmlElement)(doc.GetElementsByTagName("DMG")[0]);
            dmgElement.ParentNode.RemoveChild(dmgElement);

            Console.WriteLine(doc.OuterXml);
            string x12 = parser.TransformToX12(doc.OuterXml);

            Console.WriteLine("ISA Segmemt:");
            Console.WriteLine(x12.Substring(0, 106));
            Console.WriteLine("Directly from XML:");
            Console.WriteLine(x12);

            var modifiedInterchange = parser.ParseMultiple(x12).First();

            string newX12 = modifiedInterchange.SerializeToX12(true);

            Console.WriteLine("After passing through interchange object:");
            Console.WriteLine(newX12);

            var seSegment = modifiedInterchange.FunctionGroups.First().Transactions.First().TrailerSegments.FirstOrDefault(ts => ts.SegmentId == "SE");

            Assert.IsNotNull(seSegment);
            Assert.AreEqual("0001", seSegment.GetElement(2));
            Assert.AreEqual("15", seSegment.GetElement(1));
        }
Пример #22
0
        public void ParseAndUnparse()
        {
            string resourcePath = Convert.ToString(TestContext.DataRow["ResourcePath"]);
            Trace.WriteLine(resourcePath);
            Stream stream = GetEdi(resourcePath);
            string orignalX12 = new StreamReader(stream).ReadToEnd();
            stream = GetEdi(Convert.ToString(TestContext.DataRow["ResourcePath"]));
            List<Interchange> interchanges = new X12Parser().ParseMultiple(stream);

            if (resourcePath.Contains("_811"))
                Trace.Write("");

            StringBuilder x12 = new StringBuilder();
            foreach (var interchange in interchanges)
                x12.AppendLine(interchange.SerializeToX12(true));

            Assert.AreEqual(orignalX12, x12.ToString().Trim());
            Trace.Write(x12.ToString());
        }