diff --git a/.gitignore b/.gitignore index 7a45c298..2a6d4059 100644 --- a/.gitignore +++ b/.gitignore @@ -1,33 +1,222 @@ ---* -*.pdb -*.Cache +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files *.suo -*.FileListAbsolute.txt -#.gitignore -*.exe -*.manifest -*.cache -*.refresh -*/obj/Debug/* -*/obj/Release/* -*/bin/Release/* -*/bin/Debug/* -*/bin/* -*/Bin/* -*/obj/x86/* -*/bin/* -*/obj/* *.user -+* -TestResults -#*.vsmdi -#Local.testsettings -#TraceAndTestImpact.testsettings -LastTrace.log -Bin/* +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ib/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj *.log -obj/* -bin/* -*/read.1.tlog -bin -obj +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# MSBuild Binary and Structured Log +*.binlog diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..8b5d6c69 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: csharp +solution: X12.sln +mono: + - latest +install: + - nuget restore X12.sln + - nuget install NUnit.Runners -Version 3.9.0 -OutputDirectory testrunner +script: + - xbuild /p:Configuration=Release X12.sln + - mono ./testrunner/NUnit.ConsoleRunner.3.9.0/tools/nunit3-console.exe ./tests/X12.Tests.Unit/bin/Release/X12.Tests.Unit.dll \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..8d866f8d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,118 @@ +# Common Development and Distribution License (CDDL) + +## 1. Definitions. + +1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications. + +1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. + +1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. + +1.4. Executable means the Covered Software in any form other than Source Code. + +1.5. Initial Developer means the individual or entity that first makes Original Software available under this License. + +1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. + +1.7. License means this document. + +1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. + +1.9. Modifications means the Source Code and Executable form of any of the following: + A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; + B. Any new file that contains any part of the Original Software or previous Modification; or + C. Any new file that is contributed or otherwise made available under the terms of this License. + +1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License. + +1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. + +1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. + +1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. + +## 2. License Grants. + +### 2.1. The Initial Developer Grant. + +Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: + (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and + (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. + +### 2.2. Contributor Grant. + +Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: + (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and + (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. + +## 3. Distribution Obligations. + +### 3.1. Availability of Source Code. + +Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. Yo must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. + +### 3.2. Modifications. + +The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. + +### 3.3. Required Notices. + +You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. + +### 3.4. Application of Additional Terms. + +You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. + +### 3.5. Distribution of Executable Versions. + +You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. + +### 3.6. Larger Works. + +You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. + +## 4. Versions of the License. + +### 4.1. New Versions. + +Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. + +### 4.2. Effect of New Versions. + +You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. + +### 4.3. Modified Versions. + +When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. + +## 5. DISCLAIMER OF WARRANTY. + +COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +## 6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. + +## 7. LIMITATION OF LIABILITY. + +UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +## 8. U.S. GOVERNMENT END USERS. + +The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. + +## 9. MISCELLANEOUS. + +This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. + +## 10. RESPONSIBILITY FOR CLAIMS. + +As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. diff --git a/License.html b/License.html deleted file mode 100644 index aa6bc2f3..00000000 --- a/License.html +++ /dev/null @@ -1,10 +0,0 @@ - -
-1. Definitions.
1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
1.4. Executable means the Covered Software in any form other than Source Code.
1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
1.7. License means this document.
1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
1.9. Modifications means the Source Code and Executable form of any of the following:
A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
B. Any new file that contains any part of the Original Software or previous Modification; or
C. Any new file that is contributed or otherwise made available under the terms of this License.
1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
2. License Grants.
2.1. The Initial Developer Grant.
Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
2.2. Contributor Grant.
Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
3. Distribution Obligations.
3.1. Availability of Source Code.
Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. Yo must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
3.2. Modifications.
The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
3.3. Required Notices.
You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
3.4. Application of Additional Terms.
You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
3.5. Distribution of Executable Versions.
You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
3.6. Larger Works.
You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
4. Versions of the License.
4.1. New Versions.
Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
4.2. Effect of New Versions.
You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
4.3. Modified Versions.
When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
5. DISCLAIMER OF WARRANTY.
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
6. TERMINATION.
6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
7. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
8. U.S. GOVERNMENT END USERS.
The Covered Software is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
9. MISCELLANEOUS.
This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
10. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
The console application OopFactory.X12.Hipaa.ClaimParser.exe was added to the 2.2.4 Release and supports parsing 837I and 837P into a more readable XML format and to also transform the file into the known mappings on a UB-04 Institutional and CMS-1500 Professional - form as a pdf using the fo processor at FoNet.codeplex.com.
-This can be used as a standalone console application to automate the transformations, or the dlls can be combined with other interface code to transformed each unbundled claim to it's representation onto recognized forms.
-The application expects 3 arguments and 2 optional arguments:
-| Position | -Description | -Default | -
| 1st | -Input directory | -Current Directory (directory where the ClaimParser.exe resides) | -
| 2nd | -Search Pattern | -*.* | -
| 3rd | -Output directory | -Current Directory | -
| 4th | -NOXML or NOPDF | -Optional switch to suppress xml or pdf output. | -
Example command line:
-OopFactory.X12.Hipaa.ClaimParser "c:\Temp\Input" "*.*" "c:\Temp\Output"
-You can also use the dlls directly to load the claims into a claim object to manipulate directly (i.e. save to database) using an object model and skip writing out the files all together.
-The following EDI is an example from the CMS site:
--
ISA*00* *00* *27*SSSSSS *27*PPPPP *101025*1248*^*00501*000000012*0*T*>~ -GS*HC*AA*BB*20101025*2312*100000001*X*005010X222~ -ST*837*AB10*005010X222~ -BHT*0019*00*ABCDE12345*20101025*2312*CH~ -NM1*41*2*5010 SUBMITTER*****46*SSSSSS~ -PER*IC*TEST SUBMITTER*TE*4105551212~ -NM1*40*2*TEST 5010 PART B*****46*PPPPP~ -HL*1**20*1~ -NM1*85*2*MASTERS CLINIC*****XX*NNNNNNNNNN~ -N3*234 ANYSTREET LN.*SUITE 450~ -N4*DALLAS*TX*781231212~ -REF*EI*EEEEEEEEE~ -PER*IC*MASTERS CLINIC CONTACT*TE*9725551212*FX*9725551213~ -HL*2*1*22*0~ -SBR*P*18*******MB~ -NM1*IL*1*PUBLIC*JOHN*Q***MI*1111111111F~ -N3*123 BEST STREET*APT 5432~ -N4*DALLAS*TX*752401234~ -DMG*D8*19580713*M~ -NM1*PR*2*TEST 5010 PART B*****PI*PPPPP~ -N4*BALTIMORE*MD*212121212~ -CLM*PR9xxxxxx.BHT01.0001*950***22>B>1*Y*A*Y*Y~ -HI*BK>5920~ -NM1*82*1*DOE*JOHN****XX*NNNNNNNNNN~ -NM1*77*2*ANYWHERE HOSPITAL~ -N3*123 MAINSTREET~ -N4*DALLAS*TX*725121212~ -LX*1~ -SV1*HC>00873>QK*950*MJ*50***1~ -DTP*472*D8*20101025~ -REF*6R*200910060000000008H0001~ -SE*30*AB10~ -GE*1*100000001~ -IEA*1*000000012~ --
-
It will be transformed to the following XML:
--
<?xml version="1.0" encoding="utf-8"?> -<ClaimDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.oopfactory.com/2011/XSL/Hipaa"> - <Claim Version="005010X222" Type="Professional" TransactionCode="AB10" ClaimNumber="" BillTypeCode="221" PatientControlNumber="PR9xxxxxx.BHT01.0001" TotalClaimChargeAmount="950" ProviderSignatureOnFile="Y" ProviderAcceptAssignmentCode="A" BenefitsAssignmentCertificationIndicator="Y" ReleaseOfInformationCode="Y" MedicalRecordNumber="" StatementFromDate="2010-10-25" StatementToDate="2010-10-25"> - <ServiceLocationInfo Qualifier="B" FacilityCode="22" FrequencyTypeCode="1" /> - <BillingInfo> - <Provider Npi="NNNNNNNNNN" TaxId="EEEEEEEEE"> - <Name LastName="MASTERS CLINIC"> - <Type Identifier="85" Qualifier="NonPerson">Billing Provider</Type> - <Identification Qualifier="XX" Id="NNNNNNNNNN">Centers for Medicare and Medicaid Services National Provider Identifier</Identification> - </Name> - <Address City="DALLAS" StateCode="TX" PostalCode="781231212"> - <Line1>234 ANYSTREET LN.</Line1> - <Line2>SUITE 450</Line2> - </Address> - <Identification Qualifier="EI" Id="EEEEEEEEE" /> - <Contact FunctionCode="IC"> - <Name>MASTERS CLINIC CONTACT</Name> - <Number Qualifier="TE">9725551212</Number> - <Number Qualifier="FX">9725551213</Number> - </Contact> - </Provider> - </BillingInfo> - <Subscriber Gender="Male" DateOfBirth="1958-07-13" MemberId="1111111111F"> - <Name LastName="PUBLIC" FirstName="JOHN" MiddleName="Q"> - <Type Identifier="IL" Qualifier="Person">Insured or Subscriber</Type> - <Identification Qualifier="MI" Id="1111111111F">Member Identification Number</Identification> - </Name> - <Address City="DALLAS" StateCode="TX" PostalCode="752401234"> - <Line1>123 BEST STREET</Line1> - <Line2>APT 5432</Line2> - </Address> - </Subscriber> - <Payer> - <Name LastName="TEST 5010 PART B"> - <Type Identifier="PR" Qualifier="NonPerson">Payer</Type> - <Identification Qualifier="PI" Id="PPPPP">Payor Identification</Identification> - </Name> - </Payer> - <SubscriberInformation PayerResponsibilitySequenceNumberCode="P" IndividualRelationshipCode="18" ReferenceIdentification="" Name="" InsuranceTypeCode="" CoordinationOfBenefitsCode="" YesNoConditionResponseCode="" EmploymentStatusCode="" ClaimFilingIndicatorCode="MB" /> - <Diagnosis DiagnosisType="Principal" Version="ICD9" Qualifier="BK" Code="5920" Poi="Unknown" /> - <Provider Npi="NNNNNNNNNN"> - <Name LastName="DOE" FirstName="JOHN"> - <Type Identifier="82" Qualifier="Person">Rendering Provider</Type> - <Identification Qualifier="XX" Id="NNNNNNNNNN">Centers for Medicare and Medicaid Services National Provider Identifier</Identification> - </Name> - </Provider> - <Provider> - <Name LastName="ANYWHERE HOSPITAL"> - <Type Identifier="77" Qualifier="NonPerson">Service Location</Type> - <Identification Qualifier="" Id="" /> - </Name> - <Address City="DALLAS" StateCode="TX" PostalCode="725121212"> - <Line1>123 MAINSTREET</Line1> - </Address> - </Provider> - <ServiceLine LineNumber="1" Quantity="50" Unit="MJ" DiagnosisCodePointer1="1" ChargeAmount="950" ServiceDateFrom="2010-10-25" ServiceDateTo="2010-10-25"> - <PlaceOfService Code="" /> - <Procedure Qualifier="HC" ProcedureCode="00873" Modifier1="QK" /> - <Identification Qualifier="6R" Id="200910060000000008H0001" /> - <Date Qualifier="472" Date="2010-10-25T00:00:00">Service</Date> - </ServiceLine> - </Claim> -</ClaimDocument> --
-
Which will look like the following CMS-1500 form in PDF:
-If you would like to customize the mappings onto the forms (i.e. add footer information about your organization), you can extend the ProfessionalClaimToHcfa1500FormTransformation or InstitutionalClaimToUB04ClaimFormTransformation classes and override - the TransformClaimToHcfa1500 or TransformClaimToUB04 methods that define which claim elements will be rendered in which form location.
-Like many of you, I stumbled onto X12 when my employer was using it, and they introduced me to a heavy binder explaining the specification and expecting me to figure it out.
-
-The first place that I worked with X12 used something called a HIPAA accelerator which was some sort of extension you could buy to use BizTalk to parse your messages into a database. That's as much as I know about that product because it was too intimidating
- to learn how to use it that I just left it to the "professionals" to figure it out and I stayed in my lane to do the coding once it got into the proprietary database format of the company. To make a long story short that company had a knack for making everything
- it did a lot more complicated than it needed to be, not only did I not last there very long, but the company was shut down within a year after I left.
-
-I went on my merry way and thought I would never have to see those nasty X12 specs again until fate would have it that I ended up at another company that had a need to parse X12 files in the form of medical claims. All the memories came rushing back. We evaluated
- multiple solutions, some very expensive, others very messy and requiring lots of database integration (similar to the BizTalk model). It actually turned out in my favor that the solutions were so expensive, because I convinced my boss that I could do the same
- thing in 2-3 weeks and save the company tens of thousands of dollars. I was pretty confident (or naive depending on who you ask) that it could be done. There was plenty of intimidation from multiple sources (that I will not name) who thought that I shouldn't
- do it (not to mention their implication that I couldn't do it). However, I'm one of those people that once you tell me I can't do something, than you've pretty much guaranteed that it's going to take an act of Congress to stop me.
-
-So about 3 or 4 weeks later I was successful in producing a parser that could parse 837 Dental, Professional and Institutional claims and within another couple weeks I was able to load it into the propriety database of the COTS package we were using for adjudication.
- My critics weren't impressed. It wasn't until my tool was able to parse files hundreds of times faster than the tool that came with the COTS package that people started to take notice. Though again many were still not impressed. So I decided to create this
- open source version of my original X12 parser, to see how it would do in the open market against other solutions.
-
-
-What you see is not the original parser, it was weighed down by my naive understanding of X12 at the time (so my critics were half right), but I took everything that I learned from running it to ground in production for 2 years and remade it so that it could
- withstand being used for any transaction set.
Of course, in the beginning I suspect that many will use this tool because it is free, but my goal is for it to become a contender with commercial solutions and stop the tyranny of making the reading of a simple but robust messages so difficult. So here - is my core list of goals for this tool:
-Some of these goals will be met by the tool itself. Some will be met by the documentation provided on this site. I welcome any suggestions that can help achieve these goals.
-I have read many post from people who are quite frustrated at how difficult it is to read X12 and they can't see why everyone just doesn't switch to XML. A quick assessment might lead you to believe that there is too much infrastructure built around X12 - that it would be difficult to switch, but instead of accepting that argument, I actually think X12 and XML can co-exist and compliment the strengths of the other.
-
-The way these two formats can complement each other is to use X12 for external communications with your trading partners and use XML for internal communications between different components of your system. Once you are within your own domain, you don't have
- to get any one else to agree to your XML format and the XML format will be much easier to read.
I have been programming in some form since the mid 80's though I first became a professional developer in the mid 90's.
-
-
-I have always sought to simplify programming or some aspect of it throughout my career. I have taught Fundamentals of Programming as well as some other courses (VB, C, C++) at my local community colleges as well as some Software Engineering courses in Monterrey,
- Mexico. Most of my current work is in C#, though I do enjoy working in T-SQL as well.
-
-My latest inspiration is when I discovered jquery. A brilliant person,
-John Resig, chose to not accept the industry standard javascript as the way that client-side scripting had to be written. He had a vision of how programming should be. It wasn't just about the syntax. It was about how it expressed the programmer's
- intent as well as how it was implemented under the covers to take true advantage of the architecture of the internet. He stuck to what he believed and re-taught an entire industry how what they were doing was too hard and could be done simpler, cleaner and
- produce a beautiful result, visually and structurally. These are the goals that I aspire too.
In working for a small company in the healthcare industry I was recently given the task of creating a simple workflow to translate X12 837 and 835 EDI files. I immediately began researching different options. I’m sharing the results of my research - with the hope that others can benefit from it.
-I had 3 objectives the software had to meet:
-Since expense was an issue and most commercial EDI packages are quite expensive, I looked to open source first. I reviewed several open source applications capable of processing X12 files (this is by no means an exhaustive list). I considered an application - to be “actively developed” if it had a release within the past 12 months. Here are my reviews in no particular order.
-BOTS is perhaps the most well known open source EDI application (at least that’s what Google tells me), so I thought I’d start there. From the website, -
---“Bots is complete software for EDI (Electronic Data Interchange): translate and communicate. All major edi data formats are supported: edifact, x12, tradacoms, xml.”
-
Strengths
-Weaknesses
-EDIReader is also a fairly well known EDI app. It’s a java package with several command line utilities designed as examples of it’s usage. From the website:
---“EDIReader is a Java package for parsing business documents structured according to Electronic Data Interchange (EDI) standards. It supports the SAX and JAXP interfaces defined for XML, making it suitable for use in any XML-based system that allows the configuration - of a custom SAX parser.”
-
Strengths
-Weaknesses
-Pyx12 was mentioned in a couple places so I thought I’d take a look at it as well. From the website:
---“Pyx12 is a HIPAA X12 document validator and converter. It parses an ANSI X12N (Healthcare) data file and validates it against a representation of the Implementation Guidelines for a HIPAA transaction.”
-
Strengths
-Weaknesses
-I ran across HIPAATalk on sourceforge and it looked like an interesting approach to EDI transform. It didn’t exactly fit my criteria of being able to transform into XML, but storing in a database would do if I couldn’t find a decent transform to XML - app. From the website:
---“HIPAATalk - Contains stored procedures and sample DTS packages for parsing and converting X12 to flat tables and creating HIPAA-compliant X12 files.”
-
Strengths
-Weaknesses
-Mirth came up on a on a separate project having to do with HL7 messaging. Since it has X12 capability, I thought I’d look into it. From the website:
---“Mirth Connect, the Swiss Army knife healthcare integration engine. Specifically designed for HL7 message integration, Mirth provides the necessary tools for developing, testing, deploying, and monitoring interfaces.”
-
Strengths
-Weaknesses
-X12Parser showed up on a google search so I thought I’d check it out. From the website:
---“The parser allows for a specification of any X12 transaction set to create a generic X12 xml representation of the hierarchical data contained within the X12 document.”
-
Strengths
-Weaknesses
-Conclusion
-As you can imagine, since I’m writing this on the X12Parser site, that it’s ultimately what I ended up using. -
-I’ve now tested 100’s of 837/835 files through it and feel confident enough in it’s ability to put it into production use. I’m planning on integrating the X12Parser executables into an ETL workflow process (most likely -Pentaho or -Talend).
-The most common use case for using this X12 Parser is to eventually save the data to a database or to save it to a flat file to be consumed by other applications.
-The easiest way to do this and brush up on your XPath query skills is to use an XSLT. There are many ways that an XSLT can be transformed. You can run an XSLT within the Visual Studio environment and specify an Input and an Output file while debugging.
This tutorial will show you how to call the XSLT from your C# code so that you can create a console application for parsing to your specific needs. The completed project can be found - -here.
-Use any sample EDI you like. For the sake of this example, I have formatted the X12 in this example so that you can see the structure of the edi segments. It should also work just as well without the extra whitespace.
-The following example assumes that you embedded your xslt. If you choose to have an external file instead use the FileStream object instead.
-using System.Text; -using System.IO; -using System.Reflection; -using System.Xml; -using System.Xml.Xsl; -using OopFactory.X12.Parsing; -using OopFactory.X12.Parsing.Model; - -namespace MyX12.Edi835Parser -{ - class Program - { - static void Main(string[] args) - { - Stream transformStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyX12.Edi835Parser.X12-835-To-CSV.xslt"); - Stream inputStream = new FileStream(args[0], FileMode.Open, FileAccess.Read); - Stream outputFile = new FileStream(args[1], FileMode.Create, FileAccess.Write); - - X12Parser parser = new X12Parser(); - Interchange interchange = parser.Parse(inputStream); - string xml = interchange.Serialize(); - - var transform = new XslCompiledTransform(); - transform.Load(XmlReader.Create(transformStream)); - - transform.Transform(XmlReader.Create(new StringReader(xml)), new XsltArgumentList(), outputFile); - } - } -} --
<?xml version="1.0" encoding="utf-8"?> -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" -> - <xsl:output method="text" indent="yes"/> - - <xsl:template match="Interchange"> - <xsl:apply-templates select="FunctionGroup/Transaction/Loop[@LoopId='2000']/Loop[@LoopId='2100']"/> - </xsl:template> - - <xsl:template match="Loop[@LoopId='2100']" > - <xsl:variable name="trans" select="../../."/> - <xsl:variable name="payer" select="../../Loop[@LoopId='1000A']"/> - <xsl:variable name="payee" select="../../Loop[@LoopId='1000B']"/> - <xsl:variable name="payment" select="."/> - <xsl:value-of select="$trans/BPR/BPR16"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payer/N1/N102"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payee/N1/N102"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payee/N1/N104"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CLP/CLP01"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CLP/CLP02"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CLP/CLP03"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/NM1[NM101='QC']/NM103"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/NM1[NM101='QC']/NM104"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CAS[CAS01='CO']/CAS02"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CAS[CAS01='CR']/CAS02"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CAS[CAS01='OA']/CAS02"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CAS[CAS01='PI']/CAS02"/> - <xsl:value-of select="','"/> - <xsl:value-of select="$payment/CAS[CAS01='PR']/CAS02"/> - <xsl:value-of select="','"/> - <xsl:text>
</xsl:text> - </xsl:template> -</xsl:stylesheet> --
Since most transactions are very hierarchical in nature, it might be beneficial to have a separate transformation at different levels so the same information is not repeated so often.
-This is usually managed by having separate CSV files for different levels in the transaction, or having a fixed-width file with a record indicator column to indicate the expected specification of the fixed-width line.
-The expected output is as follows:
-20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,444444,1,56.70,FUDD,ELMER,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,999999,4,25.95,SAM,YOSEMITE,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,888888,4,162.13,SQUAREPANTS,BOB,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,111111,2,56.52,LEGHORN,FOGHORN,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,121212,4,56.52,EXPLORER,DORA,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,333333,1,74.61,BEAR,YOGI,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,777777,25,136.9,BIRD,TWEETY,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,123456,22,-42.58,SIMPSON,HOMER,,,,,, -20040315,ASHTABULA COUNTY ADAMH BD,LAKE AREA RECOVERY CENTER ,346608640,090909,22,-86.76,DUCK,DAFFY,,,,,, - --
The next example is very similar to the previous except there are two transformations. The first is to a flat csv file, the 2nd has the same information but is transformed into Excel's xml format so that formatting can be retained. You can download this - example -here.
-This example was an actually request from a user that was new to development but had a very tight deadline that he was expected to meet. The csv version took me about 2 hours to produce and the Excel version took me about 3 hours to produce. The - output csv looks like the following and can be open with Excel or it can be loaded with some other application into a database for further manipulation.
--
Filename, Check Sequence, Payer Name,Payee Name,Payee ID,check Date,Check $,Check/EFT Number,NPI,Patient Name,Policy/HIC Number,Acct Number,ICN,Date Of Ser From,Date Of Ser To,Procedure,Billed Amount,Allowed Amount,Deductible,Coins,Paid Amount -"835_DeIdent_02.dat","Check 1","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,0,999999999,"9999999999","XXXXX, XXXXX","","","9999999999999",01/27/2011,01/27/2011,"99999",135,99.99,,,0 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXXXXXX, XXXX","","999999999","9999999999999",04/19/2010,04/19/2010,"99999",95,99.99,,,99.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"99999",380,999.99,,,109.26 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"99999",133,99.99,,,99.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"99999",160,99.99,,,99.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"X9999",9999,9999.9,,,9999.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"X9999",9999,99.9,,,99.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"X9999",12,9.99,,,9.99 -"835_DeIdent_02.dat","Check 2","XXX - XXX X9 XXXX X","XXXXXXXXXX XXX XXXXXXXX XXX","9999999999",04/05/2011,99999.99,999999999,"9999999999","XXXXX, XXXX","","999999999","9999999999999",02/24/2011,02/24/2011,"99999",133,99.99,,,99.99 - --
The development follows similar steps as outlined above, but the XSLT will be outputing xml instead of text. The finished Excel file will be formated as follows:
-This xml is 10 times larger than the corresponding csv, so I would only use it if the end user is a person instead of another application. The following formatting was applied to this document:
-To implement the formatted Excel file you don't necessary have to learn Excel's xml format. These are the steps you should follow.
-To keep the application simple, it just looks at the extension of the output file, if it is .xml then it will produce the formatted excel file otherwise it produces a csv file.
-Since Word and Excel support xml formats, you could potentially use this technique for all of your reporting instead of having to use reporting engines that may allow you to control the format on screen, but don't always look the same when you export to - Excel. I am also a fan of using fo-xml for generating pdfs. There is an open source fo processor that works quite nicely at http://fonet.codeplex.com.
-X12Parser is a collection of simple command line console applications for transforming an X12 file.
-X12Parser.exe
-X12Parser transforms an X12 file into a more domain easily readable xml file.
-
-The 2 arguments to the command line are input filename and output filename. Only the input filename is required. If the second argument (output filename) is not present, X12Parser will use the input filename and add a ".xml" to create the output filename.
-
-Example:
-X12Parser "D:\Test.clm" "D:\Test.xml"
See Parsing an 834 Transaction or Parsing an 837 Transaction to - see an example of what the output will resemble and how to write more code to output to html or back to a formatted x12.
-UnbundleX12.exe
-UnbundleX12 separates an X12 file into multiple valid X12 files at a specified X12 loop ID. When loops are separated their header information (parent loop or segment) is retained. The SE transaction trailer segment and GE function group segment, however, - is updated to correctly reflect the number of segments in the transaction and the number of transactions in the function group so the resulting x12 is still valid.
-The 5 arguments to the command line are input filename, X12 loop ID, output directory, output filename format and include whitespace. The first 3 arguments are required. If the fourth argument is not present, UnbundleX12 will use the input filename - and add a 3 digit incrementing counter to create the output filename. If the fourth argument is specified it can use the following special tokens:
-| Token | -Description | -
| {0} | -Output directory specified on the command line | -
| {1} | -Input filename including extension | -
| {2} | -Counter incremented for every unbundled loop | -
| {3} | -File extension of input file | -
The fifth argument will toggle on or off the include whitespace option when creating the X12 file. If not specified it is set to "true". If set to "true", this option adds carriage returns and indentation to the loop structure to make it more human - readable. Note that adding whitespace may make the file unreadable with some EDI applications.
-3 argument example:
-UnbundleX12 "D:\837Test.clm" "2300" "D:\Output"
-If the 837 input file had 2 claims in it, then "837Test.clm_001.clm" and "837Test.clm_002.clm" would be created in the D:\Output directory.
-4 argument example:
-UnbundleX12 "D:\837Test.clm" "2300" "D:\837Unbundle" "{0}\{1}_Output_{2:000}{3}"
-If the 837 input file had 2 claims in it, then "837Test.clm_Output_001.clm" and "837Test.clm_Output_002.clm" would be created in the D:\Output directory.
-5 argument example:
-UnbundleX12 "D:\837Test.clm" "2300" "D:\837Unbundle" "{0}\{1}_Output_{2:000}{3}" "true"
-If the 837 input file had 2 claims in it, then "837Test.clm_Output_001.clm" and "837Test.clm_Output_002.clm" would be created in the D:\Output directory formatted with whitespace indentation.
-Unbundling Tips:
-For further technical explanation of the unbundle feature, see Unbundling an X12 file by Loop ID.
-See a full list of supported transactions here: https://x12parser.codeplex.com/wikipage?title=Transaction%20Set%20Configuration.
-To request another transaction set, please add an issue to the issue tracker http://x12parser.codeplex.com/WorkItem/Create.
-Project Description
-This is an open source .NET C# implementation of an X12 Parser.
-
-The parser allows for a specification of any X12 transaction set to create a generic X12 xml representation of the hierarchical data contained within the X12 document.
No database integration is required by design, though you can use the ImportX12 app to
-parse into a SQL Server database and skip the XML.
-
-Motivation
-The motivation for this project is to provide a quick and easy way to examine edi files without the overhead of creating databases as the target for parsed EDI files.
-
-It aims to demystify the X12 standard and make parsing it accessible to the masses, not to just very expensive parsing tools.
-It also aims to reduce the overhead of getting started with X12 parsing by not requiring any database integration to solve the problem of parsing the file.
-
-Assumptions
-The built-in specs contain all 4010 standards and some 5010 specifications, but you can inject your own if you are using a later standard or a non-public specification.
-
-See
-Parsing an 837 Transaction to see an example of the three possible output formats and their corresponding code samples.
-
-
Contributor Blogs
-
-Latest features:
See Documentation for a list of supported transaction sets.
-Though I would hope you would want to submit your specifications for inclusion in the open source (I will mention your name and company on the documentation for your contribution), there might be reasons that you might want to maintain your own specifications, - but be able to update versions of the OopFactory.X12.dll without losing your work. Some of these reasons might be:
-
-In any of the above cases you would want to be able to use your own specification that is outside the OopFactory.X12 assembly. Let's look at how that can be done. The completed solution can be downloaded
-
-here.
By default, OopFactory.X12.Parsing.X12Parser uses OopFactory.X12.Parsing.SpecificationFinder which will load the embedded XML specifications based on the version and transaction code in the GS and ST segments respectively. You selective choose to override
- which specification to use creating your own derived class of SpecificationFinder.
-
-1. Create a new console application and reference the OopFactory.X12.dll.
2. Add your custom specification. In this example I use the 997 for brievity:
--
<?xml version="1.0" encoding="utf-8" ?> -<TransactionSpecification xmlns="http://tempuri.org/X12ParserSpecification.xsd" TransactionSetIdentifierCode="997"> - <Segment SegmentId="AK1"/> - <Segment SegmentId="AK9" Trailer="true"/> - <Loop LoopId="AK2" Usage="Required" LoopRepeat="999999"> - <Name></Name> - <StartingSegment SegmentId="AK2" Usage="Required" Repeat="1"/> - <Segment SegmentId="AK5" Trailer="true"/> - <Loop LoopId="AK2/AK3" Usage="Required" LoopRepeat="999999"> - <Name>PAYER IDENTIFICATION</Name> - <StartingSegment SegmentId="AK3" Usage="Required" Repeat="1"/> - <Segment SegmentId="AK4" Usage="Required" Repeat="99"/> - </Loop> - </Loop> -</TransactionSpecification> --
The class model for the specification is as follows:
-3. Change the file properties Build Action = "Embedded Resource".
-4. Add a new class to inherit from SpecificationFinder:
--
using System; -using System.IO; -using System.Reflection; -using OopFactory.X12.Parsing; -using OopFactory.X12.Parsing.Specification; - -namespace MyCustomParser -{ - public class MySpecificationFinder : SpecificationFinder - { - public override OopFactory.X12.Parsing.Specification.TransactionSpecification FindTransactionSpec(string functionalCode, string versionCode, string transactionSetCode) - { - if (transactionSetCode == "997") - { - Stream specStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyCustomParser.My997Spec.xml"); - return TransactionSpecification.Deserialize(new StreamReader(specStream).ReadToEnd()); - } - else - return base.FindTransactionSpec(functionalCode, versionCode, transactionSetCode); - } - } -}-
-
5. Inject your custom specification finder into the X12Parser:
--
using System; -using System.IO; -using OopFactory.X12.Parsing; - -namespace MyCustomParser -{ - class Program - { - static void Main(string[] args) - { - string x12Filename = args[0]; - string outputFilename = args.Length > 1 ? args[1] : x12Filename + ".xml"; - - FileStream fs = new FileStream(x12Filename, FileMode.Open); - OopFactory.X12.Parsing.X12Parser parser = new X12Parser(new MySpecificationFinder()); - string xml = parser.Parse(fs).Serialize(); - fs.Close(); - - FileStream outputFs = new FileStream(outputFilename, FileMode.Create); - StreamWriter writer = new StreamWriter(outputFs); - writer.Write(xml); - writer.Close(); - } - } -} --
An 837 is a Claim for medical services transaction. The 837P is the most common of the 3 claim types: Dental, Professional and Institutional.
-The following example will show you how to:
-A sample 837 file that looks like this:
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ -GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ -ST*837*0021*005010X222~ -BHT*0019*00*244579*20061015*1023*CH~ -NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ -PER*IC*JERRY*TE*3055552222*EX*231~ -NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~ -HL*1**20*1~ -PRV*BI*PXC*203BF0100Y~ -NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ -N3*234 SEAWAY ST~ -N4*MIAMI*FL*33111~ -REF*EI*587654321~ -NM1*87*2~ -N3*2345 OCEAN BLVD~ -N4*MAIMI*FL*33111~ -HL*2*1*22*1~ -SBR*P**2222-SJ******CI~ -NM1*IL*1*SMITH*JANE****MI*JS00111223333~ -DMG*D8*19430501*F~ -NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ -REF*G2*KA6663~ -HL*3*2*23*0~ -PAT*19~ -NM1*QC*1*SMITH*TED~ -N3*236 N MAIN ST~ -N4*MIAMI*FL*33413~ -DMG*D8*19730501*M~ -CLM*26463774*100***11:B:1*Y*A*Y*I~ -REF*D9*17312345600006351~ -HI*BK:0340*BF:V7389~ -LX*1~ -SV1*HC:99213*40*UN*1***1~ -DTP*472*D8*20061003~ -LX*2~ -SV1*HC:87070*15*UN*1***1~ -DTP*472*D8*20061003~ -LX*3~ -SV1*HC:99214*35*UN*1***2~ -DTP*472*D8*20061010~ -LX*4~ -SV1*HC:86663*10*UN*1***2~ -DTP*472*D8*20061010~ -SE*42*0021~ -GE*1*1~ -IEA*1*000000905~ --
-This can be parsed with the following lines of C# code:
using System; -using System.IO; -using OopFactory.X12.Parsing; -using OopFactory.X12.Parsing.Model; - -public class Program -{ - FileStream fstream = new FileStream("Sample1.txt", FileMode.Open, FileAccess.Read); - var parser = new X12Parser(); - Interchange interchange = parser.Parse(fstream); - string xml = interchange.Serialize(); -} --
-The resulting output xml will look like this:
<?xml version="1.0"?> -<Interchange> - <ISA> - <!--Author Information Qualifier--> - <ISA01>00<!--No Authorization Information Present--></ISA01> - <!--Author Information--> - <ISA02> </ISA02> - <!--Security Information Qualifer--> - <ISA03>01<!--Password--></ISA03> - <!--Security Information--> - <ISA04>SECRET </ISA04> - <!--Interchange ID Qualifier--> - <ISA05>ZZ<!--Mutually Defined--></ISA05> - <!--Interchange Sender ID--> - <ISA06>SUBMITTERS.ID </ISA06> - <!--Interchange ID Qualifier--> - <ISA07>ZZ<!--Mutually Defined--></ISA07> - <!--Interchange Receiver ID--> - <ISA08>RECEIVERS.ID </ISA08> - <!--Interchange Date--> - <ISA09>030101</ISA09> - <!--Interchange Time--> - <ISA10>1253</ISA10> - <!--Inter Control Standards Identifier--> - <ISA11>^</ISA11> - <!--Inter Control Version Number--> - <ISA12>00501</ISA12> - <!--Inter Control Number--> - <ISA13>000000905</ISA13> - <!--Acknowlegment Requested--> - <ISA14>1<!--Interchange Acknowledgment Requested--></ISA14> - <!--Usage Indicator--> - <ISA15>T<!--Test Data--></ISA15> - <!--Component Element Separator--> - <ISA16> - <ISA1601 /> - <ISA1602 /> - </ISA16> - </ISA> - <FunctionGroup> - <GS> - <!--Functional Identifier Code--> - <GS01>HC<!--Health Care--></GS01> - <!--Application Sender's Code--> - <GS02>SENDER CODE</GS02> - <!--Application Receiver's Code--> - <GS03>RECEIVER CODE</GS03> - <!--Date--> - <GS04>19991231</GS04> - <!--Time--> - <GS05>0802</GS05> - <!--Group Control Number--> - <GS06>1</GS06> - <!--Responsible Agency Code--> - <GS07>X<!--Accredited Standards Committee X12--></GS07> - <!--Version/Release/Industry Identifier Code--> - <GS08>005010X222</GS08> - </GS> - <Transaction ControlNumber="0021"> - <ST> - <!--Transaction Set Identifier Code--> - <ST01>837<!--Health Care Claim--></ST01> - <!--Transaction Set Control Number--> - <ST02>0021</ST02> - <ST03>005010X222</ST03> - </ST> - <BHT> - <!--Hierarchical Structure Code--> - <BHT01>0019</BHT01> - <!--Transaction Set Purpose Code--> - <BHT02>00</BHT02> - <!--Reference Identification--> - <BHT03>244579</BHT03> - <!--Date--> - <BHT04>20061015</BHT04> - <!--Time--> - <BHT05>1023</BHT05> - <!--Transaction Type Code--> - <BHT06>CH</BHT06> - </BHT> - <Loop LoopId="1000A" Name="SUBMITTER NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>41</NM101> - <!--Entity Type Qualifier--> - <NM102>2<!--Non-Person Entity--></NM102> - <!--Name Last or Organization Name--> - <NM103>PREMIER BILLING SERVICE</NM103> - <NM104 /> - <NM105 /> - <NM106 /> - <NM107 /> - <!--Identification Code Qualifier--> - <NM108>46<!--Electronic Transmitter Identification Number (ETIN--></NM108> - <!--Identification Code--> - <NM109>TGJ23</NM109> - </NM1> - <PER> - <!--Contact Function Code--> - <PER01>IC</PER01> - <!--Name--> - <PER02>JERRY</PER02> - <!--Communication Number Qualifier--> - <PER03>TE<!--Telephone--></PER03> - <!--Communication Number--> - <PER04>3055552222</PER04> - <!--Communication Number Qualifier--> - <PER05>EX<!--Telephone Extension--></PER05> - <!--Communication Number--> - <PER06>231</PER06> - </PER> - </Loop> - <Loop LoopId="1000B" Name="RECEIVER NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>40</NM101> - <!--Entity Type Qualifier--> - <NM102>2<!--Non-Person Entity--></NM102> - <!--Name Last or Organization Name--> - <NM103>KEY INSURANCE COMPANY</NM103> - <NM104 /> - <NM105 /> - <NM106 /> - <NM107 /> - <!--Identification Code Qualifier--> - <NM108>46<!--Electronic Transmitter Identification Number (ETIN--></NM108> - <!--Identification Code--> - <NM109>66783JJT</NM109> - </NM1> - </Loop> - <HierarchicalLoop LoopId="2000A" LoopName="BILLING/PAY-TO PROVIDER HIERARCHICAL LEVEL" Id="1" ParentId=""> - <HL> - <!--Hierarchical ID Number--> - <HL01>1</HL01> - <HL02 /> - <!--Level Code--> - <HL03>20<!--Information Source--></HL03> - <!--Hierarchical Child Code--> - <HL04>1<!--Additional Subordinate HL Data Segment in This Hierarchical Structure--></HL04> - </HL> - <PRV> - <PRV01>BI</PRV01> - <PRV02>PXC</PRV02> - <PRV03>203BF0100Y</PRV03> - </PRV> - <Loop LoopId="2010AA" Name="BILLING PROVIDER NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>85</NM101> - <!--Entity Type Qualifier--> - <NM102>2<!--Non-Person Entity--></NM102> - <!--Name Last or Organization Name--> - <NM103>BEN KILDARE SERVICE</NM103> - <NM104 /> - <NM105 /> - <NM106 /> - <NM107 /> - <!--Identification Code Qualifier--> - <NM108>XX<!--Centers for Medicare and Medicaid Services Nationa--></NM108> - <!--Identification Code--> - <NM109>9876543210</NM109> - </NM1> - <N3> - <!--Address Information--> - <N301>234 SEAWAY ST</N301> - </N3> - <N4> - <!--City Name--> - <N401>MIAMI</N401> - <!--State or Provice Code--> - <N402>FL</N402> - <!--Postal Code--> - <N403>33111</N403> - </N4> - <REF> - <!--Reference Identification Qualifier--> - <REF01>EI</REF01> - <!--Reference Identification--> - <REF02>587654321</REF02> - </REF> - </Loop> - <Loop LoopId="2010AB" Name="PAY-TO ADDRESS NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>87</NM101> - <!--Entity Type Qualifier--> - <NM102>2<!--Non-Person Entity--></NM102> - </NM1> - <N3> - <!--Address Information--> - <N301>2345 OCEAN BLVD</N301> - </N3> - <N4> - <!--City Name--> - <N401>MAIMI</N401> - <!--State or Provice Code--> - <N402>FL</N402> - <!--Postal Code--> - <N403>33111</N403> - </N4> - </Loop> - <HierarchicalLoop LoopId="2000B" LoopName="SUBSCRIBER HIERARCHICAL LOOP" Id="2" ParentId="1"> - <HL> - <!--Hierarchical ID Number--> - <HL01>2</HL01> - <!--Hierarchical Parent ID Number--> - <HL02>1</HL02> - <!--Level Code--> - <HL03>22<!--Subscriber--></HL03> - <!--Hierarchical Child Code--> - <HL04>1<!--Additional Subordinate HL Data Segment in This Hierarchical Structure--></HL04> - </HL> - <SBR> - <SBR01>P</SBR01> - <SBR02 /> - <SBR03>2222-SJ</SBR03> - <SBR04 /> - <SBR05 /> - <SBR06 /> - <SBR07 /> - <SBR08 /> - <SBR09>CI</SBR09> - </SBR> - <Loop LoopId="2010BA" Name="SUBSCRIBER NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>IL<!--Insured or Subscriber--></NM101> - <!--Entity Type Qualifier--> - <NM102>1<!--Person--></NM102> - <!--Name Last or Organization Name--> - <NM103>SMITH</NM103> - <!--Name First--> - <NM104>JANE</NM104> - <NM105 /> - <NM106 /> - <NM107 /> - <!--Identification Code Qualifier--> - <NM108>MI</NM108> - <!--Identification Code--> - <NM109>JS00111223333</NM109> - </NM1> - <DMG> - <!--Date Time Period Format Qualifier--> - <DMG01>D8<!--Date Expressed in Format CCYYMMDD--></DMG01> - <!--Date Time Period--> - <DMG02>19430501</DMG02> - <!--Gender Code--> - <DMG03>F<!--Female--></DMG03> - </DMG> - </Loop> - <Loop LoopId="2010BC" Name="PAYER NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>PR<!--Payer--></NM101> - <!--Entity Type Qualifier--> - <NM102>2<!--Non-Person Entity--></NM102> - <!--Name Last or Organization Name--> - <NM103>KEY INSURANCE COMPANY</NM103> - <NM104 /> - <NM105 /> - <NM106 /> - <NM107 /> - <!--Identification Code Qualifier--> - <NM108>PI<!--Payor Identification--></NM108> - <!--Identification Code--> - <NM109>999996666</NM109> - </NM1> - <REF> - <!--Reference Identification Qualifier--> - <REF01>G2</REF01> - <!--Reference Identification--> - <REF02>KA6663</REF02> - </REF> - </Loop> - <HierarchicalLoop LoopId="2000C" LoopName="PATIENT HIERARCHICAL LOOP" Id="3" ParentId="2"> - <HL> - <!--Hierarchical ID Number--> - <HL01>3</HL01> - <!--Hierarchical Parent ID Number--> - <HL02>2</HL02> - <!--Level Code--> - <HL03>23<!--Dependent--></HL03> - <!--Hierarchical Child Code--> - <HL04>0<!--No Subordinate HL Segment in This Hiearchical Structure--></HL04> - </HL> - <PAT> - <PAT01>19</PAT01> - </PAT> - <Loop LoopId="2010CA" Name="PATIENT NAME"> - <NM1> - <!--Entity Identifier Code--> - <NM101>QC</NM101> - <!--Entity Type Qualifier--> - <NM102>1<!--Person--></NM102> - <!--Name Last or Organization Name--> - <NM103>SMITH</NM103> - <!--Name First--> - <NM104>TED</NM104> - </NM1> - <N3> - <!--Address Information--> - <N301>236 N MAIN ST</N301> - </N3> - <N4> - <!--City Name--> - <N401>MIAMI</N401> - <!--State or Provice Code--> - <N402>FL</N402> - <!--Postal Code--> - <N403>33413</N403> - </N4> - <DMG> - <!--Date Time Period Format Qualifier--> - <DMG01>D8<!--Date Expressed in Format CCYYMMDD--></DMG01> - <!--Date Time Period--> - <DMG02>19730501</DMG02> - <!--Gender Code--> - <DMG03>M<!--Male--></DMG03> - </DMG> - </Loop> - <Loop LoopId="2300" Name="CLAIM INFORMATION"> - <CLM> - <CLM01>26463774</CLM01> - <CLM02>100</CLM02> - <CLM03 /> - <CLM04 /> - <CLM05> - <CLM0501>11</CLM0501> - <CLM0502>B</CLM0502> - <CLM0503>1</CLM0503> - </CLM05> - <CLM06>Y</CLM06> - <CLM07>A</CLM07> - <CLM08>Y</CLM08> - <CLM09>I</CLM09> - </CLM> - <REF> - <!--Reference Identification Qualifier--> - <REF01>D9</REF01> - <!--Reference Identification--> - <REF02>17312345600006351</REF02> - </REF> - <HI> - <HI01> - <HI0101>BK</HI0101> - <HI0102>0340</HI0102> - </HI01> - <HI02> - <HI0201>BF</HI0201> - <HI0202>V7389</HI0202> - </HI02> - </HI> - <Loop LoopId="2400" Name="LINE COUNTER"> - <LX> - <LX01>1</LX01> - </LX> - <SV1> - <SV101> - <SV10101>HC</SV10101> - <SV10102>99213</SV10102> - </SV101> - <SV102>40</SV102> - <SV103>UN</SV103> - <SV104>1</SV104> - <SV105 /> - <SV106 /> - <SV107>1</SV107> - </SV1> - <DTP> - <!--Data/Time Qualifier--> - <DTP01>472</DTP01> - <!--Date Time Period Format Qualifier--> - <DTP02>D8<!--Date Expression in Format CCYYMMDD--></DTP02> - <!--Date Time Period--> - <DTP03>20061003</DTP03> - </DTP> - </Loop> - <Loop LoopId="2400" Name="LINE COUNTER"> - <LX> - <LX01>2</LX01> - </LX> - <SV1> - <SV101> - <SV10101>HC</SV10101> - <SV10102>87070</SV10102> - </SV101> - <SV102>15</SV102> - <SV103>UN</SV103> - <SV104>1</SV104> - <SV105 /> - <SV106 /> - <SV107>1</SV107> - </SV1> - <DTP> - <!--Data/Time Qualifier--> - <DTP01>472</DTP01> - <!--Date Time Period Format Qualifier--> - <DTP02>D8<!--Date Expression in Format CCYYMMDD--></DTP02> - <!--Date Time Period--> - <DTP03>20061003</DTP03> - </DTP> - </Loop> - <Loop LoopId="2400" Name="LINE COUNTER"> - <LX> - <LX01>3</LX01> - </LX> - <SV1> - <SV101> - <SV10101>HC</SV10101> - <SV10102>99214</SV10102> - </SV101> - <SV102>35</SV102> - <SV103>UN</SV103> - <SV104>1</SV104> - <SV105 /> - <SV106 /> - <SV107>2</SV107> - </SV1> - <DTP> - <!--Data/Time Qualifier--> - <DTP01>472</DTP01> - <!--Date Time Period Format Qualifier--> - <DTP02>D8<!--Date Expression in Format CCYYMMDD--></DTP02> - <!--Date Time Period--> - <DTP03>20061010</DTP03> - </DTP> - </Loop> - <Loop LoopId="2400" Name="LINE COUNTER"> - <LX> - <LX01>4</LX01> - </LX> - <SV1> - <SV101> - <SV10101>HC</SV10101> - <SV10102>86663</SV10102> - </SV101> - <SV102>10</SV102> - <SV103>UN</SV103> - <SV104>1</SV104> - <SV105 /> - <SV106 /> - <SV107>2</SV107> - </SV1> - <DTP> - <!--Data/Time Qualifier--> - <DTP01>472</DTP01> - <!--Date Time Period Format Qualifier--> - <DTP02>D8<!--Date Expression in Format CCYYMMDD--></DTP02> - <!--Date Time Period--> - <DTP03>20061010</DTP03> - </DTP> - </Loop> - </Loop> - </HierarchicalLoop> - </HierarchicalLoop> - </HierarchicalLoop> - <SE> - <!--Number of Included Segments--> - <SE01>42</SE01> - <!--Transaction Set Control Number--> - <SE02>0021</SE02> - </SE> - </Transaction> - <GE> - <!--Number of Transaction Sets Included--> - <GE01>1</GE01> - <!--Group Control Number--> - <GE02>1</GE02> - </GE> - </FunctionGroup> - <IEA> - <!--Number of Included Functional Groups--> - <IEA01>1</IEA01> - <!--Interchange Control Number--> - <IEA02>000000905</IEA02> - </IEA> -</Interchange> --
-In some cases you may only want to be able to see the hierarchy in the X12 without the need for it to be xml. You can use the following code snippet to add whitespace to the stream:
FileStream fstream = new FileStream("Sample1.txt", FileOpen.Open, FileAccess.Read); -var parser = new X12Parser(); -Interchange interchange = parser.Parse(fstream); -string x12 = interchange.SerializeToX12(true); --
-This will produce the following output:
-
-
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ - GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ - ST*837*0021*005010X222~ - BHT*0019*00*244579*20061015*1023*CH~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~ - HL*1**20*1~ - PRV*BI*PXC*203BF0100Y~ - NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ - N3*234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*587654321~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MAIMI*FL*33111~ - HL*2*1*22*1~ - SBR*P**2222-SJ******CI~ - NM1*IL*1*SMITH*JANE****MI*JS00111223333~ - DMG*D8*19430501*F~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - REF*G2*KA6663~ - HL*3*2*23*0~ - PAT*19~ - NM1*QC*1*SMITH*TED~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33413~ - DMG*D8*19730501*M~ - CLM*26463774*100***11:B:1*Y*A*Y*I~ - REF*D9*17312345600006351~ - HI*BK:0340*BF:V7389~ - LX*1~ - SV1*HC:99213*40*UN*1***1~ - DTP*472*D8*20061003~ - LX*2~ - SV1*HC:87070*15*UN*1***1~ - DTP*472*D8*20061003~ - LX*3~ - SV1*HC:99214*35*UN*1***2~ - DTP*472*D8*20061010~ - LX*4~ - SV1*HC:86663*10*UN*1***2~ - DTP*472*D8*20061010~ - SE*42*0021~ - GE*1*1~ -IEA*1*000000905~ --
-
If your output is to the web and you want the html to take advantage of style and tool tips, you can use the following code for a more rich output.
--
var htmlService = new X12HtmlTransformationService(new X12EdiParsingService(suppressComments: false)); - - Stream ediFile = new FileStream("c:\\5010_Example1_HealthInsurance.txt", FileMode.Open, FileAccess.Read); - - string html = htmlService.Transform(new StreamReader(ediFile).ReadToEnd()); - --
-
The divs have the following class names that will allow you to add some of your own style through css:
-Hover over a loop or qualifier to see it's meaning.
-The SQL Server Integration is provided so that you can stage all of your incoming X12 messages in a consistent format that retains the full message that was received. In most cases this will not be your "processing" system.
-
-It is best practices to keep your import simple and only expect to import the files into the database to await processing. Do your processing in a separate process that can mark the status of each transaction (i.e. create your own status/workflow table)
- so you can handle business exception processing.
-
-Depending on the skill sets of your development staff, the implementations can vary widely after that depending on how you answer the following questions:
The above questions will lead to one of two directions for implementation:
-There really isn't a right or wrong answer, but each solution can by easy or hard depending on your business constraints. Here is how the answers to questions 1 through 6 might affect your implementation:
-Though it might seem slower to process each transaction one a time, as long as it a different app from the import, this can be scaled out be having multiple independent processing consuming each transaction.
-I hope this helps you narrow down what is appropriate for your organization. Good Luck!
-See also:
-You can import your X12 into a SQL Server database by using the OopFactoryX12.ImportX12 console app. This will create the following schema in the database once you have loaded a file:
-
-
Table Purpose:
-The application has the following application settings. Just point the connection string to an empty database and all the tables, views and user-defined functions will be created on-the-fly when you import a file.
-The application allows you to configure the containerSchema separately from the schema so that you can choose to partition your x12. This can be useful in the following scenarios:
-They system is designed as an INSERT ONLY transactional database. Updates and Deletes are handled by adding revisions. The built in user-defined functions take this into account and only show the latest revision of each segment.
-In most cases you won't be doing any revisions, especially if the X12 messages represent TRUE EDI messages that came to you from a trading partner through a clearinghouse. Mistakes in the X12 should be handled by acknowledgment files that reject bad - transactions. However, there are other use cases of X12 that are not TRUE EDI. When the transaction came to you in some other format and you have a data entry system that creates X12 so that you have a common process for integrating all incoming - transactions, errors may have been introduced. In this case errors in your X12 may be your responsibility and you might want a process for creating edits of you X12. In this case you will be able to use the SaveRevision method of the SqlTransactionRepository - to make edits that will produce valid X12 for your downstream processes.
-The SqlTransactionRepository class can be used for additional control over the import of X12 into a SQL Server database. In most cases you can use the OopFactory.X12.ImportX12 console app out-of-the-box and will only need to work with the SqlReadOnlyTransactionRepository
- class.
-
-
These two classes are split apart because their a quite a number of constructor arguments you need when you are importing data that aren't needed when you are reading data. If you are not using the Revision feature, all you need outside of the OopFactory.X12.ImportX12
- app is to use the SqlReadOnlyTransactionRepository.
-
These classes have been created as generics so that you choose between using SQL's int, bigint or uniqueidentifier as your table identities, by using the class with int, long or Guid for T.
-The Container table will hold the identities for interchanges, function groups, transaction sets and for loops, so it will fill up quick, but will probably still be sufficient to use Int in many cases.
--
GetTransactionSetSegments accepts the following arguments:
-It will return a List<RepoSegment<T>> which is shown below:
--
-
A transaction is defined differently for each transaction set. The SqlTransactionRepository allows you to treat any loop in your transact set as a transaction.
-For example, an 837 health care claim would use SpecLoopId = "2300" to define a claim as a transaction. When you call GetTransactionSegments, it will unbundle the segments related to that transaction (ancestor loops and their related segments, and - all child segments). This is similare to the UnbundleX12 console app.
-The data structure returned is a list of RepoSegments with a Segment property.
-To rebuild an unbundled X12 message, call GetTransactionSegments with includeControlSegments = true, and concatenate the Segment.SegmentString with Segment.Delimiters.SegmentTerminator for the segments returned. This will give you a valid X12 message - that you can then use existing transformations to work with. See -Claim Parser for some claim transformations.
-The Save methods accepts an Interchange object which is the output of the X12Parser's PareMultiple method. You can send this directly to the Save method and it will return the Id value from the Interchange table. If you intend to do any post - processing, this Id can be sent to the GetTransactionSets or GetLoops method to identify the newly created elements that you may want to act upon.
-Database Creation
-When you call the Save method for the first time, the class will check for the expected database tables and automatically and create the necessary table, views and user-defined functions depending on your values for schema, commonSchema, and indexedSegments. - This is useful to get you started right away, but it does this check on every save.
-To bypass this, you can create a derived class with no implementation for EnsureSchema. You can use the default implementation in development to create your database objects, and then turn off EnsureSchema once you've moved to production so that it - doesn't incur the extra database hit.
-The SaveRevision methods accepts an IList<RepoSegment<T>> that it expects you got from the GetTransactionSetSegments or GetTransactionSegments methods.
-Once you have made the updates to the segments you can send it to the SaveRevision method. The save revision will insert new database entries for the segments that have actually changed. Subsequent calls to GetTransactionSetSegments and GetTransactionSegments - will only get the latest revision that is less than the RevisionId sent to either of those methods.
-Database Concurrency
-The SaveRevision method will check concurrency at the segment level. Before saving a segment change it will make sure that the RevisionID at the time that the RepoSegment was retrieved has not changed. If it has changed, it will rollback all
- changes in the revision. This will cause the Revision table to skip some ID values.
-
The following table shows the segments used in each X12 transaction. This list can be used to configure which segments to index into tables for SQL Server integration
-| Transaction Set Code | -Function Group Code | -Name | -Segments Used | -
|---|---|---|---|
| 100 | -PG | -Insurance Plan Description | -AM1, AMT, BGN, BLI, C3, COM, DTP, III, LIN, MSG, N1, N2, N3, N4, NM1, PER, PID, PO1, QTY, REF, SE, SI, SPA, ST | -
| 101 | -NL | -Name and Address Lists | -BGN, COM, DTM, IN2, LX, N1, N9, NX2, REF, SE, SPA, ST | -
| 102 | -AC | -Associated Data | -BDS, OOI, ORI, REF, SE, ST | -
| 103 | -AB | -Abandoned Property Filings | -AMT, BGN, BLN, BPR, CUR, DTM, DTP, INI, INT, LX, N1, N2, N3, N4, NM1, NTE, PCT, PDS, PER, QTY, REF, SE, SHI, ST, TC2, TRN, YNQ | -
| 104 | -SA | -Air Shipment Information | -ACS, C3, DTM, F9, FOB, G47, H1, H2, H3, L0, L1, L3, L4, L5, M1, N1, N2, N3, N4, N9, NTE, P1, PER, SE, SL1, ST, TD4, X1, X2 | -
| 105 | -BF | -Business Entity Filings | -AMT, BGN, BIN, CDS, CUR, DTM, EFI, HL, LIN, LM, LQ, LUI, LX, MTX, N2, N3, N4, NM1, NX1, NX2, PCT, PDL, PER, PWK, QTY, REF, SE, ST, TPB | -
| 106 | -MH | -Motor Carrier Rate Proposal | -AT5, AT9, BGN, BLR, CA1, CUR, G62, GY, LC1, LX, MCT, MI1, MS2, N1, N2, N3, N4, PER, PR, RTT, SE, ST, SV, TF, TFR, TS | -
| 107 | -MC | -Request for Motor Carrier Rate Proposal | -AT5, AT9, BGN, CA1, CUR, G62, GY, ID4, IV1, LX, MCT, MI1, MS2, N1, N2, N3, N4, PER, PR, SE, ST, SV | -
| 108 | -MK | -Response to a Motor Carrier Rate Proposal | -BGN, BLR, CA1, G62, LC1, N1, N2, N3, N4, PER, SE, ST | -
| 109 | -VE | -Vessel Content Details | -B4, DTM, N9, Q2, R4, SE, SG, ST, V9 | -
| 110 | -IA | -Air Freight Details and Invoice | -ACS, B3, B3A, C2, C3, G47, ITD, L0, L1, L3, L4, L5, L10, LX, N1, N2, N3, N4, N9, NTE, P1, PER, POD, R1, RMT, SE, SL1, ST, V9 | -
| 111 | -IF | -Individual Insurance Policy and Client Information | -AM1, AMT, ASI, BEN, BHT, BLI, BLN, C3, COM, DMG, DTP, HL, III, IN1, LIN, LQ, LUI, N2, N3, N4, NM1, NX1, PDL, PER, QTY, REF, RPA, SE, SPA, ST, UDA | -
| 112 | -PQ | -Property Damage Report | -AMT, BGN, C3, CID, DTP, HL, III, K2, LM, MEA, MS1, MSG, N2, N3, N4, N9, NM1, PCT, PER, QTY, SE, SLN, ST, SUP, TXI | -
| 113 | -CL | -Election Campaign and Lobbyist Reporting | -AWD, BGN, DTM, EMS, G86, HL, LQ, MTX, N1, N2, N3, N4, N9, NM1, NX2, PAM, PCT, PDL, PER, PWK, QTY, SE, ST, TPB | -
| 120 | -VC | -Vehicle Shipping Order | -BVP, DTM, G62, N1, N2, N3, N4, REF, SE, ST, VC, VC1 | -
| 121 | -VS | -Vehicle Service | -BVS, CGS, DEL, DTM, G62, N7, REF, SE, ST, V1, VC | -
| 124 | -VD | -Vehicle Damage | -AMT, AP1, BCI, BGN, C3, CRC, CTP, DAM, DL, DP, DTM, DTP, DVI, F13, ID, III, LE, LID, LM, LQ, LS, LX, MSG, N2, N3, N4, N9, NM1, PCT, PER, PID, QTY, REF, SAC, SE, ST, SUP, TXI, VAT, VEH, YNQ | -
| 125 | -MR | -Multilevel Railcar Load Details | -BMM, G62, N7, SE, ST, VC | -
| 126 | -VA | -Vehicle Application Advice | -BVA, L7, SE, ST, V1, VAD | -
| 127 | -VB | -Vehicle Baying Order | -BVB, G62, SE, SFC, ST, VC | -
| 128 | -DI | -Dealer Information | -DH, DN, K1, N1, N2, N3, N4, PER, R9, SE, ST | -
| 129 | -VH | -Vehicle Carrier Rate Update | -G62, RT, RT1, SE, ST, VR | -
| 130 | -ED | -Student Educational Record (Transcript) | -ATV, BGN, CRS, CSU, DEG, DMG, DTP, EMS, ERP, FOS, HC, HS, IMM, IN1, IN2, IND, LUI, LX, MKS, N1, N2, N3, N4, NTE, OPS, OPX, PCL, PER, RAP, REF, SBT, SE, SES, SP, SRE, SSE, SST, ST, SUM, TST | -
| 131 | -AK | -Student Educational Record (Transcript) Acknowledgment | -BGN, IN2, N1, QTY, REF, SE, ST, SUM | -
| 132 | -HU | -Human Resource Information | -AIN, BGN, CN1, COM, CON, CQ, CRS, CSU, DEG, DMG, DTP, ELV, EMS, ESI, FOS, HL, III, ISI, LQ, LUI, N1, N2, N3, N4, N9, NM1, PCT, QTY, REF, SE, SES, ST, WLD, YNQ | -
| 133 | -CW | -Educational Institution Record | -AMT, ATV, BGN, COM, DEG, DTP, EDF, ENM, ERP, FOS, HL, ISI, LQ, N1, N2, N3, N4, NM1, NTE, OPX, PCT, PPA, QTY, REF, SCT, SE, SLA, SP, ST, YNQ | -
| 135 | -SL | -Student Aid Origination Record | -AMT, BGN, DEF, DMA, DMG, DTP, ENR, ENT, FNA, GR, IDB, IN1, IN2, LM, LQ, LX, MEA, N1, N3, N4, NTE, PER, PLI, QTY, REF, SAD, SCT, SE, ST, Y6, YNQ | -
| 138 | -TT | -Educational Testing and Prospect Request and Report | -ATV, BGN, COM, DEG, DMG, DTP, EMS, ERP, FOS, IN1, IN2, IND, LUI, MSG, N1, N3, N4, PCL, PER, RAP, REF, RQS, SBT, SCA, SE, SRE, SSE, SST, ST, SUM, TST | -
| 139 | -SL | -Student Loan Guarantee Result | -AMT, BGN, DB, DTP, ENT, GR, IDB, IN2, LM, LQ, QTY, SE, ST | -
| 140 | -WA | -Product Registration | -AMT, BGN, CUR, DTM, ITA, ITD, LIN, LM, LQ, LX, N1, N2, N3, N4, N9, PER, PID, PSC, QTY, REF, SE, SLN, SSS, ST, TXI | -
| 141 | -WA | -Product Service Claim Response | -AMT, BGN, CUR, DTM, LX, MSG, N1, N2, N3, N4, N9, PCS, PER, QTY, RC, REF, SE, ST, TDS | -
| 142 | -WA | -Product Service Claim | -AMT, BGN, CID, CUR, DTM, IT1, ITA, LIN, LM, LOC, LQ, LX, MEA, MSG, N1, N2, N3, N4, N9, PER, PID, PRR, PRT, PSC, QTY, RC, REF, REP, SE, SSS, ST, TDS, TMD, TXI | -
| 143 | -WA | -Product Service Notification | -BGN, CID, CUR, DTM, ITA, LIN, LOC, MSG, N1, N2, N3, N4, N9, PER, PID, PRR, PRT, PWK, QTY, REF, REP, SE, SLN, ST | -
| 144 | -LT | -Student Loan Transfer and Status Verification | -BGN, DB, DMG, DTP, ENT, GR, IDB, IN2, LV, N3, N4, REF, SE, ST | -
| 146 | -RY | -Request for Student Educational Record (Transcript) | -BGN, DMG, ERP, IN1, IN2, IND, N1, N2, N3, N4, NTE, PER, REF, SE, SSE, SST, ST | -
| 147 | -RZ | -Response to Request for Student Educational Record (Transcript) | -AAA, BGN, IN1, IN2, N1, N2, N3, N4, NTE, PER, PWK, REF, SE, ST | -
| 148 | -IJ | -Report of Injury, Illness or Incident | -ACT, AD1, AIN, AMT, BHT, CFI, CRC, CRI, CUR, DMG, DTP, EMT, ESI, FC, GRI, HL, III, IMP, LE, LM, LN, LQ, LS, LX, N2, N3, N4, NM1, PCT, PER, PID, QTY, REF, REL, SE, ST, TPB, TXI, VEH, WS | -
| 149 | -NT | -Notice of Tax Adjustment or Assessment | -AMT, BGN, DTM, FGS, IN2, MSG, N1, N2, N3, N4, PCT, PER, REF, SE, ST, TDS, TFS, TIA | -
| 150 | -TN | -Tax Rate Notification | -AMT, BGN, DTP, FGS, MTX, N1, N2, N3, N4, PER, QTY, SE, ST, TFS, TRS | -
| 151 | -TA | -Electronic Filing of Tax Return Data Acknowledgment | -AMT, BTA, BTI, DTM, FGS, PBI, QTY, REF, SE, ST, TFS, TIA | -
| 152 | -GR | -Statistical Government Information | -BGN, DTM, GRI, ICH, N1, N2, N3, N4, N9, NTE, PAM, PER, QTY, SE, ST | -
| 153 | -CB | -Unemployment Insurance Tax Claim or Charge Information | -AMT, BTI, CHB, DPN, DTM, MSG, N1, N2, N3, N4, NM1, PAM, PCT, PER, REF, SE, ST | -
| 154 | -UC | -Secured Interest Filing | -AMT, BGN, CDS, CED, DAD, DTM, LIN, LS1, N1, N2, N3, N4, N9, NM1, NTE, PAM, PER, PID, PO3, SE, ST, TAX, TXI | -
| 155 | -BC | -Business Credit Report | -ACD, API, ASI, ASO, AWD, BBC, BGN, C3, CDS, CED, COM, CRC, DMG, DTP, EMS, FDA, HL, III, IN1, IN2, INQ, INR, ITC, LM, LOD, LQ, LUI, LX, MEA, MTX, N1, N2, N3, N4, N9, NM1, NX1, NX2, PCT, PER, PYM, PYT, | -
| 157 | -NP | -Notice of Power of Attorney | -BGN, DTM, HL, IN2, N1, N2, N3, N4, NM1, PER, REF, SE, SPY, ST | -
| 158 | -TJ | -Tax Jurisdiction Sourcing | -ASI, BGN, DTP, LX, N1, NX2, PPA, SE, ST, TA | -
| 159 | -MP | -Motion Picture Booking Confirmation | -AMT, BGN, CUR, DTP, G63, LQ, LUI, LX, MEA, MSG, N1, N4, N9, PCT, QTY, REF, SE, ST, THE | -
| 160 | -SJ | -Transportation Automatic Equipment Identification | -AEI, AES, BAX, DTM, EI, LQ, MEA, N9, QTY, SE, ST, TSI, YNQ | -
| 161 | -TR | -Train Sheet | -BTS, DTM, FAC, H3, N9, NM1, PER, PWK, SE, ST, V9 | -
| 163 | -AS | -Transportation Appointment Schedule Information | -B13, B2A, G05, G61, G62, H3, H6, L11, N1, N2, N3, N4, N7, OID, S5, SDQ, SE, ST | -
| 170 | -ER | -Revenue Receipts Statement | -BOX, DTM, LX, N1, PER, REF, SE, ST, THE | -
| 175 | -FC | -Court and Law Enforcement Notice | -AMT, BGN, CDS, CED, CRC, DMG, DTM, III, LE, LM, LQ, LS, LX, MEA, MSG, N2, N3, N4, NM1, PAM, PER, QTY, REF, SE, SPI, ST | -
| 176 | -FC | -Court Submission | -AMT, BBC, BCU, BGN, BIN, CDS, CED, CRC, DTM, EFI, FGS, LM, LQ, MSG, N2, N3, N4, NM1, PAM, PCT, PER, QTY, REF, SE, SPI, ST | -
| 179 | -EP | -Environmental Compliance Reporting | -AMT, BDS, BGN, DTM, G86, HL, III, LM, LOC, LQ, MEA, MTX, N1, N2, N3, N4, N9, NM1, NTE, OOI, PCT, PER, PWK, QTY, REF, SE, SPI, ST, TPB, YNQ | -
| 180 | -AN | -Return Merchandise Authorization and Notification | -AMT, BGN, BLI, CRC, DD, DTM, FA1, FA2, G38, GF, LM, LQ, LX, MEA, N1, N2, N3, N4, N9, NTE, PER, PID, PKG, PRF, QTY, RDR, SAC, SDQ, SE, ST, TD1, TD5 | -
| 185 | -RD | -Royalty Regulatory Report | -AMT, ASI, ASM, BGN, DTP, LE, LM, LQ, LS, LX, MEA, N1, N2, N3, N4, NTE, PCT, PER, PID, QTY, REF, SE, ST | -
| 186 | -UW | -Insurance Underwriting Requirements Reporting | -ACT, AM1, AMT, ASL, BGN, BIN, BOR, CD2, CDS, CED, CUR, DMA, DMG, DTP, EC, EFI, EMS, FH, HL, III, IN1, LE, LS, LTR, LX, MPI, MSG, N1, N3, N4, NM1, PER, PWK, QTY, REF, REL, SE, SIN, SPK, ST, TOA, TOV, U | -
| 187 | -AE | -Premium Audit Request and Return | -AD1, AMT, BAL, BGN, BIN, CRC, CUR, DMA, DMG, DTP, DVI, EFI, HL, III, ITA, LQ, LX, MEA, MSG, N1, N2, N3, N4, NM1, NX2, PCT, PDP, PDR, PDS, PER, PID, QTY, REF, SE, SI, ST, SUP, TDS, TXI, VAT, VEH | -
| 188 | -EC | -Educational Course Inventory | -CSE, CSU, DTP, ERP, MSG, N1, N2, N3, N4, PER, REF, SE, ST | -
| 189 | -AF | -Application for Admission to Educational Institutions | -AMT, ATV, BGN, COM, CRS, DEG, DMG, DTP, EMS, FOS, HC, III, IMM, IN1, IN2, IND, LE, LQ, LS, LT, LTE, LUI, LX, MSG, N1, N2, N3, N4, NTE, PCL, PDL, PER, QTY, REF, RQS, RSD, SBT, SE, SES, SRE, SSE, SST, S | -
| 190 | -SV | -Student Enrollment Verification | -AMT, BGN, DEG, DMG, DTP, ENR, ENT, ERP, FOS, IN2, LQ, N1, N2, N3, N4, NTE, PER, SE, SES, SST, ST, SUM | -
| 191 | -SD | -Student Loan Pre-Claims and Claims | -AMT, BGN, DB, DEF, DMA, DMG, DTP, ENR, ENT, GR, IN1, IN2, N3, N4, PER, REF, SE, SLI, ST, YNQ | -
| 194 | -GT | -Grant or Assistance Application | -AMT, BGN, DEG, DMG, DTM, EMS, FOS, HL, HSD, INX, K2, K3, L11, LDT, LX, MTX, N1, N2, N3, N4, N9, NM1, NTE, NX1, PAM, PCT, PD, PDD, PER, PL, PO1, PPL, PWK, QTY, REF, SE, SPI, ST, YNQ | -
| 195 | -LA | -Federal Communications Commission (FCC) License Application | -AMT, BGN, CRC, DTM, LIE, LM, LQ, MEA, MSG, N1, N2, N3, N4, NTE, PER, PO1, PWK, QTY, REF, SE, ST | -
| 196 | -PK | -Contractor Cost Data Reporting | -AMT, BCM, BSD, CAL, CLI, CRT, DTM, DTP, G61, HL, MEA, MSG, N1, N2, N3, N4, PCT, PD, PDD, PID, QTY, REF, RPA, SE, ST | -
| 197 | -TO | -Real Estate Title Evidence | -AMT, BGN, BIN, DTP, EFI, FGS, FPT, G86, IN1, IN2, LQ, LX, M1, MSG, N1, N2, N3, N4, N9, NM1, NX1, NX2, PDE, PDS, PER, PID, REF, SE, ST | -
| 198 | -ME | -Loan Verification Information | -ACT, AIN, AMT, API, BGN, CDA, DTP, EMS, FAA, IN1, IN2, MSG, N1, N2, N3, N4, NM1, NTE, NX1, NX2, PER, PEX, PRD, PWK, QTY, REF, SE, ST, YNQ | -
| 199 | -TO | -Real Estate Settlement Information | -AMT, BGN, DTM, DTP, FGS, III, IN1, IN2, LN1, LRQ, LX, N1, N2, N3, N4, NM1, NTE, NX1, NX2, PCT, PDE, PDS, PER, QTY, REF, SE, ST, YNQ | -
| 200 | -ME | -Mortgage Credit Report | -AAA, AIN, AMT, ARS, BGN, CCI, CDS, CRO, DMG, DTP, EMS, G32, IN1, IN2, INQ, LE, LS, LX, MSG, N1, N2, N3, N4, N10, NTE, NX1, NX2, PER, PPD, QTY, REF, RO, SCM, SCS, SE, SOI, ST, TBI, TLN, VAR, YNQ | -
| 201 | -ME | -Residential Loan Application | -ACT, AIN, AMT, ARS, BEP, BGN, CDA, CRC, DMG, DTP, EMS, FAA, FTH, III, IN1, IN2, LE, LIN, LRQ, LS, LX, MCD, MSG, N1, N2, N3, N4, N10, NM1, NTE, NX1, NX2, PCT, PDE, PDS, PER, PEX, PPY, QTY, REA, REF, RE | -
| 202 | -MJ | -Secondary Mortgage Market Loan Delivery | -AIN, AMT, ASM, BEP, BGN, BUY, CN1, CRC, CTT, DEX, DMG, DTP, IGI, III, IN1, IN2, INT, LN1, LUC, LX, MPP, MSG, N1, N2, N3, N4, N9, NM1, NX1, NX2, PAM, PCT, PDS, PER, PEX, PPD, PWK, QTY, REA, REF, RLD, S | -
| 203 | -MG | -Secondary Mortgage Market Investor Report | -AMT, BGN, DTM, DTP, INT, IRA, LQ, LX, MPP, N1, N2, N3, N4, NX2, PER, PRC, QTY, REF, RLT, SE, ST, YNQ | -
| 204 | -SM | -Motor Carrier Load Tender | -AT5, AT8, B2, B2A, C3, G61, G62, L3, L4, L5, L11, LAD, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHT, LX, M7, MEA, MS3, N1, N2, N3, N4, N7, N7A, N7B, NTE, OID, PER, PLD, RTT, S5, SE, ST | -
| 205 | -MN | -Mortgage Note | -AMT, BGN, CDI, CTT, DTP, III, IN1, IN2, INT, LX, MNC, N2, N3, N4, NM1, NX1, NX2, PCT, PDS, PER, QTY, REF, SE, SOM, ST, TRN, VDI, YNQ | -
| 206 | -MG | -Real Estate Inspection | -AIN, AMT, BGN, CRC, CTP, DFI, DTP, III, IN1, IN2, LN, MSG, N1, N2, N3, N4, N9, NTE, NX1, NX2, OBI, PDE, PDS, PER, PWK, QTY, REA, REC, REF, RLT, SE, SI, ST, YNQ | -
| 210 | -IM | -Motor Carrier Freight Details and Invoice | -B3, C2, C3, CD3, G62, H1, H2, H3, H6, ITD, K1, L0, L1, L3, L4, L5, L7, L9, L11, LX, M7, N1, N2, N3, N4, N7, OID, POD, R3, S5, SDQ, SE, ST | -
| 211 | -BL | -Motor Carrier Bill of Lading | -AT1, AT2, AT3, AT4, AT5, B2A, BOL, G61, G62, K1, L4, L11, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHT, LX, MAN, MS2, MS3, N1, N2, N3, N4, OID, SE, ST | -
| 212 | -TM | -Motor Carrier Delivery Trailer Manifest | -AT7, AT8, AT9, ATA, B2A, BLR, G61, G62, L11, LX, M7, MAN, MS1, MS2, N1, N2, N3, N4, OID, Q7, SDQ, SE, ST, TSD | -
| 213 | -MI | -Motor Carrier Shipment Status Inquiry | -B11, C3, G61, K2, L10, N1, N2, N3, N4, REF, SE, ST | -
| 214 | -QM | -Transportation Carrier Shipment Status Message | -AT5, AT7, AT8, B10, G62, K1, L11, LX, M7, MAN, MS1, MS2, MS3, N1, N2, N3, N4, OID, Q7, SDQ, SE, ST | -
| 215 | -UP | -Motor Carrier Pickup Manifest | -ACS, AT6, B1, C3, CD3, CGS, G61, G62, IT1, L5, L11, MAN, MS4, MS5, MS6, N1, N2, N3, N4, N10, NTE, PER, PID, R4, SE, SLN, SMD, ST, TXI, X1, X2 | -
| 216 | -PU | -Motor Carrier Shipment Pickup Notification | -AT5, G61, K2, N1, N2, N3, N4, PRF, PUN, SE, ST, TEM | -
| 217 | -FG | -Motor Carrier Loading and Route Guide | -BLR, G61, GY, L11, LE, LS, LX, N1, N3, N4, RST, SE, ST, SV | -
| 219 | -AB | -Logistics Service Request | -AMT, AT5, B9, B9A, CUR, G61, G62, G69, ITA, L3, L11, LAD, LCT, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHT, LX, MAN, MEA, MS3, N1, N2, N3, N4, N7, N7A, N7B, NTE, PER, PO4, S5, SE, ST | -
| 220 | -AH | -Logistics Service Response | -AMT, AT5, B9, B9A, G62, G69, ITA, L3, L8, L9, L11, LAD, LCD, LCT, LX, M7, MAN, MEA, MS3, N1, N2, N3, N4, N7, N7A, N7B, NTE, PER, PO4, S5, SE, ST | -
| 222 | -CE | -Cartage Work Assignment | -AT3, AT5, G61, G62, L11, LAD, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHT, LX, N1, N2, N3, N4, N7, NTE, PLC, PLD, S5, SCN, SE, ST | -
| 223 | -MQ | -Consolidators Freight Bill and Invoice | -AT8, B10, B2A, B3A, CSD, L1, L11, LE, LS, LX, M7, N1, N2, N3, N4, N7, OID, SDQ, SE, ST | -
| 224 | -MA | -Motor Carrier Summary Freight Bill Manifest | -CF1, CF2, L11, SE, ST | -
| 225 | -MY | -Response to a Cartage Work Assignment | -L11, SCP, SE, ST | -
| 227 | -TU | -Trailer Usage Report | -BLR, G61, G62, L11, M7, N1, N2, N3, N4, N7, NTE, SE, ST, TRL | -
| 228 | -EN | -Equipment Inspection Report | -BGN, DTM, EQD, L11, M7, MEA, N1, N3, N4, N9, NA, NM1, NTE, PER, Q5, SE, ST, W2 | -
| 240 | -MZ | -Motor Carrier Package Status | -AT7, BGN, BIN, CD3, EFI, L11, LE, LS, LX, MAN, MS2, N1, N2, N3, N4, NM1, NTE, Q7, SE, ST | -
| 242 | -DS | -Data Status Tracking | -BGN, DTP, HL, IIS, IRP, MSG, N1, QTY, REF, SE, ST, STS | -
| 244 | -PN | -Product Source Information | -BGN, BSF, CID, COM, DTM, N1, N2, NM1, NX2, PID, SE, ST | -
| 245 | -ME | -Real Estate Tax Service Response | -AMT, ASM, BGN, DTP, HL, INC, LN, MLA, N2, N3, N4, NM1, NX1, NX2, PDE, PDS, PER, PTS, REF, SE, ST, TA, TDT, TIA, TII | -
| 248 | -SU | -Account Assignment/Inquiry and Service/Status | -ACT, AIN, AMT, BAL, BHT, DMG, DTP, EMS, HL, INT, N2, N3, N4, NM1, PER, REF, SE, ST, STC | -
| 249 | -AT | -Animal Toxicological Data | -ADI, ADT, ANI, AOC, AOI, AOL, AOR, ARC, AST, ATR, BGN, G61, GDP, GID, GRP, MSG, N1, N2, N3, N4, NTE, REF, SE, ST, STP | -
| 250 | -PV | -Purchase Order Shipment Management Document | -BGN, DTM, FOB, G05, H3, L11, N1, N2, N3, N4, PRF, SE, SSD, ST | -
| 251 | -CP | -Pricing Support | -AMT, BGN, CUR, DTM, G61, LX, MTX, N1, N2, N3, N4, NTE, PCT, PD, PDD, PID, PL, PO1, PPL, QTY, REF, SE, SPI, ST | -
| 252 | -IE | -Insurance Producer Administration | -ACT, AM1, AMT, ASI, BGN, BIN, CDS, CED, COM, DMA, DMG, DTM, DTP, EFI, EMS, ENT, III, LIC, LIN, LX, MSG, N1, N2, N3, N4, N9, NM1, PER, PWK, REF, SE, SPA, SRE, ST, TST, UC, YNQ | -
| 255 | -UI | -Underwriting Information Services | -ACT, AM1, ASI, BGN, BIN, CD2, CN1, CUR, DMA, DMG, DTM, DTP, EFI, EMS, IND, LE, LS, LX, MSG, N2, N3, N4, NM1, NTE, NX2, PER, PO1, PWK, REC, REF, SE, ST, YNQ | -
| 256 | -PE | -Periodic Compensation | -ADX, AM1, AMT, BLI, BLN, BSC, CUR, DMG, DTP, ENT, III, MSG, N1, N2, N3, N4, N9, NM1, PER, QTY, REF, RPA, SE, ST | -
| 259 | -MG | -Residential Mortgage Insurance Explanation of Benefits | -AMT, AWD, BGN, DFI, DTM, FIS, III, INT, MSG, N1, N2, N3, N4, N9, PCT, PER, QTY, REF, SE, ST | -
| 260 | -MG | -Application for Mortgage Insurance Benefits | -AMT, BGN, CSI, DFI, DTP, FCL, FIS, INT, MIR, MSG, N1, N2, N3, N4, NM1, NTE, PCT, PER, REC, REF, SE, ST | -
| 261 | -ME | -Real Estate Information Request | -AM1, AMT, API, BGN, DTM, DTP, III, IN1, IN2, LN1, LX, N1, N2, N3, N4, NM1, NTE, NX1, NX2, PCT, PDE, PDS, PER, PEX, PWK, QTY, REA, REC, REF, SE, ST, TRN, YNQ | -
| 262 | -ME | -Real Estate Information Report | -AIN, AM1, AMT, API, BGN, CRC, CUR, DTP, III, IN1, IN2, LN2, LQ, LX, MEA, MSG, N2, N3, N4, NM1, NTE, NX1, NX2, PCT, PDE, PDS, PER, PEX, PTF, PWK, QTY, REA, REC, REF, RET, SE, SPI, ST, TRN, YNQ | -
| 263 | -ME | -Residential Mortgage Insurance Application Response | -BGN, G63, LX, MIC, MIR, N1, N9, PCT, REF, SE, ST, TXI | -
| 264 | -MG | -Mortgage Loan Default Status | -AMT, BGN, DFI, DTM, DTP, INT, LE, LS, LX, MIS, MRC, MSG, N1, N2, N3, N4, PER, QTY, REC, REF, SE, SOM, ST, YNQ | -
| 265 | -TO | -Real Estate Title Insurance Services Order | -AMT, BGN, DMG, FPT, IN1, IN2, LE, LN1, LRQ, LS, LX, MCD, MSG, N1, N2, N3, N4, NX1, NX2, PDE, PDS, PER, PRD, PWK, REF, SE, ST, TIS | -
| 266 | -MG | -Mortgage or Property Record Change Notification | -AMT, API, BGN, CRC, DTP, INT, LX, N1, N2, N3, N4, N9, NM1, NTE, PCT, PER, PID, QTY, REF, SE, ST, VEH | -
| 267 | -AD | -Individual Life, Annuity and Disability Application | -ACT, AM1, AMT, ASI, ASL, BEN, BGN, BIN, BLI, C3, CDS, CED, COM, DMA, DMG, DTM, DTP, EC, EFI, EMP, EMS, ENT, ERI, FH, HL, III, IND, INV, K2, LE, LIN, LQ, LS, LUI, LX, MPI, MSG, N1, N2, N3, N4, N9, NM1, | -
| 268 | -PF | -Annuity Activity | -ACT, AM1, AMT, ASI, BEN, BGN, BIN, BLI, C3, CON, DMG, DTM, DTP, EFI, G86, III, IT1, LIN, LX, MSG, N1, N2, N3, N4, NM1, PAM, PDL, PER, PID, PO1, REF, RPA, SE, SPA, ST | -
| 269 | -HV | -Health Care Benefit Coordination Verification | -AAA, BGN, CLP, DTP, N1, N2, N3, N4, NM1, PER, REF, SE, ST, SVC, TRN | -
| 270 | -HS | -Eligibility, Coverage or Benefit Inquiry | -AMT, BHT, DMG, DTP, EQ, HI, HL, III, INS, MPI, N2, N3, N4, NM1, PDP, PDR, PER, PRV, REF, SE, ST, TRN, VEH | -
| 271 | -HB | -Eligibility, Coverage or Benefit Information | -AAA, AMT, BHT, DMG, DTP, EB, EM, HI, HL, HSD, III, INS, LE, LIN, LQ, LS, LUI, MPI, MSG, N2, N3, N4, NM1, PCT, PDP, PDR, PER, PID, PKD, PRV, REF, SD1, SE, ST, TRN, VEH | -
| 272 | -LN | -Property and Casualty Loss Notification | -AMT, BCI, BGN, CRC, DAM, DTP, DVI, EM, ICH, III, K1, K2, LE, LID, LIE, LIN, LQ, LS, LX, MSG, N2, N3, N4, N9, NM1, NX1, PCT, PDP, PDR, PER, PIN, PKD, PWK, QTY, R1, R4, REF, SD1, SE, SI, ST, V1, VAT, VE | -
| 273 | -ID | -Insurance/Annuity Application Status | -ACT, AMT, BEN, BGN, BLI, CUR, DMA, DMG, DTP, ENT, G61, INV, K3, LIN, LQ, LX, M1, MSG, N2, N3, N4, NM1, PER, QTY, REF, REL, RPA, SE, SPA, ST, UD, UDA, V9 | -
| 274 | -PW | -Healthcare Provider Information | -AAA, ACT, AMT, API, BCI, BDS, BHT, CRC, DEG, DMG, DTM, DTP, EMS, HAD, HL, HPL, HSD, IND, LQ, LUI, LX, MTX, N1, N2, N3, N4, NM1, NX1, OOI, PDI, PER, QTY, REF, SE, ST, TPB, TRN, WS, YNQ | -
| 275 | -PI | -Patient Information | -BDS, BGN, CAT, DMG, DTM, DTP, HI, IN1, LX, N3, N4, NM1, NX1, OOI, PER, PID, PRV, REF, SE, ST, STC, SVC, TRN | -
| 276 | -HR | -Health Care Claim Status Request | -AMT, BHT, DMG, DTP, HL, N2, N3, N4, NM1, PAT, PER, REF, SBR, SE, ST, SVC, TOO, TRN | -
| 277 | -HN | -Health Care Information Status Notification | -AMT, BHT, DMG, DTP, HL, N1, N2, N3, N4, NM1, PAT, PER, PWK, QTY, REF, SBR, SE, ST, STC, SVC, TOO, TRN | -
| 278 | -HI | -Health Care Services Review Information | -AAA, BHT, CL1, CR1, CR2, CR4, CR5, CR6, CR7, CR8, CRC, DMG, DN2, DRA, DTP, HCR, HI, HL, HSD, INS, MSG, N2, N3, N4, NM1, PER, PRV, PWK, REF, SE, ST, SV1, SV2, SV3, TOO, TRN, UM | -
| 280 | -VI | -Voter Registration Information | -BGN, BIN, CRC, DTM, EFI, ICH, IN1, IN2, MEA, N1, N2, N3, N4, NX1, NX2, PER, PWK, REF, SE, ST | -
| 283 | -TE | -Tax or Fee Exemption Certification | -AMT, BGN, DTM, IN2, INI, LQ, LX, MSG, N1, N2, N3, N4, NM1, PER, PID, QTY, REF, SE, ST, TC2, TXI, YNQ | -
| 284 | -IH | -Commercial Vehicle Safety Reports | -AMT, BGN, DMA, DMG, DTM, DVI, EMS, H1, HL, III, LH2, LH3, LIE, LOD, LQ, MAN, MEA, MTX, N2, N3, N4, N9, NM1, PER, PO4, PWK, QTY, REF, SE, SRE, ST, TC2, VEH, YNQ | -
| 285 | -CV | -Commercial Vehicle Safety and Credentials Information Exchange | -AMT, BGN, DMA, DMG, DTM, DVI, H1, LE, LM, LQ, LS, MEA, N2, N3, N4, N9, N12, NM1, NTE, NX1, PCT, PER, QTY, REF, SE, SPR, SRE, ST, STA, TC2, VC1, VEH, YNQ | -
| 286 | -KM | -Commercial Vehicle Credentials | -AMT, BGN, CUR, DTM, DVI, EMS, H1, HL, LM, LQ, MEA, MSG, N2, N3, N4, N9, N12, NM1, PDL, PER, QTY, SE, SPI, ST, TC2, TD5, VEH, YNQ | -
| 288 | -WI | -Wage Determination | -AMT, BGN, CRC, DTM, LM, LQ, LX, N1, N2, N3, N4, NTE, PER, QTY, REF, SE, ST | -
| 290 | -CO | -Cooperative Advertising Agreements | -AMT, ASM, CMA, CRC, DOS, MI, N1, N2, N3, N4, NTE, PAI, PER, QTY, SE, ST | -
| 300 | -RO | -Reservation (Booking Request) (Ocean) | -B1, DTM, EA, G61, H1, H2, H3, K1, L0, L1, L4, L5, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LX, N1, N2, N3, N4, N7, N9, PER, R4, R2A, REF, SE, ST, V1, V9, W09, Y1, Y2, Y6, Y7 | -
| 301 | -RO | -Confirmation (Ocean) | -B1, DTM, EA, G61, H1, H2, H3, K1, L0, L1, L4, L5, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LX, N1, N2, N3, N4, N7, N9, PER, R4, R2A, SE, ST, V1, V9, W09, Y3, Y4, Y6 | -
| 303 | -RO | -Booking Cancellation (Ocean) | -B1, SE, ST, V9, Y5, Y6 | -
| 304 | -SO | -Shipping Instructions | -B2, B2A, C2, C8, C8C, CTP, CUR, DTM, G1, G2, G3, G61, H1, H2, H3, ISS, ITD, K1, L0, L1, L3, L4, L5, L7, L9, L11, L12, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHR, LHT, LIN, LX, M0, M1, M2, M7, M7A, MAN, ME | -
| 309 | -AQ | -Customs Manifest | -CII, DMA, DMG, DTM, H1, H2, LX, M7, M10, M11, M12, M13, MAN, N1, N3, N4, N9, N10, NM1, P4, PER, R4, REF, SE, ST, VC, VEH, VID, X1 | -
| 310 | -IO | -Freight Receipt and Invoice (Ocean) | -B3, B2A, C2, C3, C8, C8C, DTM, G3, G61, H1, H2, H3, K1, L0, L1, L3, L5, L7, L11, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LX, M0, M1, M7, N1, N2, N3, N4, N7, N9, N12, PER, PWK, QTY, R2, R4, R2A, SE, ST | -
| 311 | -SO | -Canada Customs Information | -B2A, DTM, ED, G2, K1, L0, L3, L4, L5, LX, M7, N1, N2, N3, N4, N9, NA, R4, SE, ST, V1, V2, V3, X1, X2, Y2, Y6 | -
| 312 | -IO | -Arrival Notice (Ocean) | -B3, C3, DTM, G1, G2, H1, H2, H3, K1, L0, L1, L3, L4, L5, L7, L11, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LX, M7, N1, N2, N3, N4, N7, N9, N12, PER, Q3, QTY, R2, R4, SE, ST, V1, V9, W09, Y6 | -
| 313 | -QO | -Shipment Status Inquiry (Ocean) | -B4, N1, N9, SE, ST | -
| 315 | -QO | -Status Details (Ocean) | -B4, DTM, N9, Q2, R4, SE, SG, ST, V9 | -
| 317 | -SO | -Delivery/Pickup Order | -G61, G62, H1, L0, L5, N1, N2, N3, N4, N9, SE, ST, TD5 | -
| 319 | -SO | -Terminal Information | -BA2, CD1, SE, ST | -
| 322 | -SO | -Terminal Operations and Intermodal Ramp Activity | -DTM, GR5, H1, H3, K1, L0, L3, L5, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, M7, N1, N3, N4, N7, N9, NA, PER, Q5, R4, SE, ST, V1, V4, W2, W09, Y7, ZC1 | -
| 323 | -SO | -Vessel Schedule and Itinerary (Ocean) | -DTM, K1, R4, SE, ST, V1, V9 | -
| 324 | -SO | -Vessel Stow Plan (Ocean) | -DTM, ED, H1, H3, M7, N7, N9, NA, R4, SE, ST, V1, V4, W09 | -
| 325 | -SO | -Consolidation of Goods In Container | -B12, C3, G20, H1, H2, H3, L3, L8, LIN, M7, MAN, MBL, N1, N2, N3, N4, N9, PRF, R4, SE, SN1, ST, TD1, UIT, V1, V9, W09 | -
| 326 | -SO | -Consignment Summary List | -DTM, G1, MBL, N7, N9, R4, SE, ST, V1, VC | -
| 350 | -AU | -Customs Status Information | -BA1, K1, M7, M10, M7A, N7, N9, NM1, P4, SE, ST, V9, VEH, VID, X4 | -
| 352 | -AV | -Customs Carrier General Order Status | -K1, M10, M14, P4, SE, ST | -
| 353 | -AX | -Customs Events Advisory Details | -CM, K1, M10, M15, M7A, MEA, P4, SE, ST, V1, V2 | -
| 354 | -AY | -Customs Automated Manifest Archive Status | -M10, P4, SE, ST, X01, X02 | -
| 355 | -AZ | -Customs Acceptance/Rejection | -CII, DMG, H1, H2, K1, K3, LX, M7, M10, M11, M12, M13, M14, M15, M20, M21, MBL, N1, N3, N4, N9, N10, NM1, P4, PER, R4, REF, SE, ST, VC, VEH, VID, X1 | -
| 356 | -BA | -Customs Permit to Transfer Request | -M10, M20, P4, SE, ST | -
| 357 | -BB | -Customs In-Bond Information | -LX, M10, M12, M13, M21, N1, N9, P4, SE, ST | -
| 358 | -BD | -Customs Consist Information | -CII, DMA, DMG, M7, M10, M13, MBL, N3, N4, N9, NM1, P4, REF, SE, ST, VEH, VID, X1 | -
| 359 | -BG | -Customs Customer Profile Management | -AAA, CII, CPM, DMA, DMG, N3, N4, NM1, PER, REF, SE, ST, VEH, VID | -
| 361 | -SO | -Carrier Interchange Agreement (Ocean) | -CI, K1, N1, SE, ST | -
| 362 | -OC | -Cargo Insurance Advice of Shipment | -AMT, BGN, CUR, DTP, L5, LQ, N1, N2, NX2, PCT, QTY, R1, R4, REF, SE, ST, V1 | -
| 404 | -SR | -Rail Carrier Shipment Information | -BL, BNX, BX, CD, CM, D9, DTM, E1, E4, E5, EM, F9, GA, H3, IC, IM, L0, L1, L3, L5, LE, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHR, LHT, LS, LX, M1, M3, M7, M12, MEA, N1, N2, N3, N4, N5, N7, N9, N10, NA, PE | -
| 410 | -IR | -Rail Carrier Freight Details and Invoice | -B3B, BL, C4, CD, CM, D9, DTM, F9, G4, GA, IC, IM, L0, L1, L3, L5, LX, M7, M12, MEA, N1, N2, N3, N4, N5, N7, N8, N9, NTE, PER, PI, PS, R2, R9, S1, S2, S9, SE, ST, T1, T2, T3, T6, T8, VC, X7 | -
| 412 | -TB | -Trailer or Container Repair Billing | -AMT, CUR, DTM, DTP, III, IT1, MEA, N1, N2, N3, N4, PER, R11, R12, R13, REF, SE, ST | -
| 414 | -CR | -Rail Carhire Settlements | -CHR, CIC, CTC, CUR, CV, CYC, LEQ, LX, PI, PRI, REF, SE, ST | -
| 417 | -WB | -Rail Carrier Waybill Interchange | -BL, BNX, BX, CD, CM, D9, DTM, E1, E4, E5, EM, F9, G4, GA, H3, H5, IC, IM, IMA, L0, L1, L5, LE, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LS, LX, M7, M12, MEA, N1, N2, N3, N4, N5, N7, N8, N9, N10, N8A, P | -
| 418 | -IC | -Rail Advance Interchange Consist | -BAX, DMA, DMG, IMA, LE, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LS, N1, N3, N4, NM1, PER, PS, REF, SE, ST, W1, W2, W3, W4, W5, W6 | -
| 419 | -SR | -Advance Car Disposition | -E6, SE, ST, W3, W5 | -
| 420 | -CH | -Car Handling Information | -E6, E8, SE, ST | -
| 421 | -IS | -Estimated Time of Arrival and Car Scheduling | -D9, F9, H3, H5, IC, IMA, IS1, IS2, ISC, L5, LE, LEP, LFH, LH1, LH2, LH3, LH4, LHR, LHT, LS, N1, N3, N4, N8, N9, N8A, PER, PS, R2, REF, S1, S9, SE, ST | -
| 422 | -DM | -Equipment Order | -BCQ, D9, DTM, F9, GA, LE, LQ, LS, LX, N1, N3, N4, N7, N9, NTE, PER, PI, QTY, R2, SCR, SE, ST, YNQ | -
| 423 | -RL | -Rail Industrial Switch List | -BGN, D9, DTM, F9, L5, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHR, LHT, LQ, LX, N1, N2, N3, N4, N7, N9, PER, QTY, R2, SE, ST, XD, YNQ | -
| 424 | -SB | -Rail Carrier Services Settlement | -AMT, BSW, CI, CUR, D9, DTM, ED, F9, MEA, N1, N2, N3, N4, NM1, NTE, PER, SE, ST, SWC, SWD, SWR | -
| 425 | -WT | -Rail Waybill Request | -D9, F9, SE, ST, ZT | -
| 426 | -RW | -Rail Revenue Waybill | -BL, BNX, BX, CD, CUR, D9, DTM, F9, G4, GA, H3, IC, L0, L1, L3, L5, L1A, LX, M7, MEA, N1, N2, N3, N4, N5, N7, N8, N9, N8A, NTE, PER, PI, PS, R2, R9, R2B, R2C, R2D, S1, S9, SE, ST, T1, T2, T3, T6, T8, V | -
| 429 | -RU | -Railroad Retirement Activity | -NTE, RU1, RU2, RU3, SE, ST | -
| 431 | -RM | -Railroad Station Master File | -DTM, N1, N4, REF, SE, SMB, SMO, SMR, SMS, ST | -
| 432 | -RX | -Rail Deprescription | -BGN, BLR, CIC, DRT, DTM, LQ, LX, N9, QTY, SE, ST | -
| 433 | -RH | -Railroad Reciprocal Switch File | -BGN, CD, DTM, N1, PI, SE, SMS, ST | -
| 434 | -RJ | -Railroad Mark Register Update Activity | -BRR, DTM, N1, N2, N3, N4, PER, SE, ST | -
| 435 | -RK | -Standard Transportation Commodity Code Master | -CRC, DTM, LEP, LFH, LH2, LH3, LH4, LQ, LX, MSG, N9, SE, SID, ST | -
| 436 | -LI | -Locomotive Information | -K3, LFI, N7, SE, ST | -
| 437 | -RV | -Railroad Junctions and Interchanges Activity | -BJF, DTM, JCT, JS, SE, SID, ST | -
| 440 | -WR | -Shipment Weights | -BW, G4, G5, SE, ST | -
| 451 | -EV | -Railroad Event Report | -CLR, ED, ER, ES, IC, NA, SE, ST | -
| 452 | -PL | -Railroad Problem Log Inquiry or Advice | -BGP, DTP, N1, N9, NTE, SE, ST | -
| 453 | -ST | -Railroad Service Commitment Advice | -APR, CT, DTP, ISC, ISD, LX, N1, OD, PI, PR, R2, SE, SHR, SR, SSC, ST | -
| 455 | -PB | -Railroad Parameter Trace Registration | -BLR, BTC, D9, DTP, ED, F9, LX, N1, N4, N9, PRM, SE, ST, V9 | -
| 456 | -EI | -Railroad Equipment Inquiry or Advice | -D9, EIA, ER, ES, F9, H3, H5, IC, IS1, IS2, ISC, L5, LX, N1, N4, N7, N8, N9, NA, PI, R2, S1, S9, SE, ST, VC | -
| 460 | -TP | -Railroad Price Distribution Request or Response | -CD, DK, FK, GY, LX, N3, N4, PER, PI, PR, PT, R9, R2B, R2C, RAB, RD, REN, RS, SA, SB, SC, SE, SS, ST | -
| 463 | -TP | -Rail Rate Reply | -DK, LQ, NTE, REN, SE, ST | -
| 466 | -TP | -Rate Request | -DK, PI, PR1, PR2, REN, SE, ST | -
| 468 | -TP | -Rate Docket Journal Log | -DK, JL, K1, PI, REN, SE, ST | -
| 470 | -RB | -Railroad Clearance | -AMT, BGN, D9, F9, H3, L4, L5, L10, LET, LX, MEA, N1, N2, N3, N4, N7, N9, NTE, PER, R2, SE, ST | -
| 475 | -SN | -Rail Route File Maintenance | -BGN, DTM, PER, R9, RDD, SE, ST | -
| 485 | -TP | -Ratemaking Action | -DK, FK, MC, PRI, RA, SA, SC, SE, ST, SW | -
| 486 | -TP | -Rate Docket Expiration | -DR, PI, REN, SA, SE, ST | -
| 490 | -TP | -Rate Group Definition | -CD, DK, GH, GY, N3, N4, PER, PI, PR, PT, REN, SE, ST, TT | -
| 492 | -TP | -Miscellaneous Rates | -DK, DM, PRI, SC, SE, ST | -
| 494 | -TP | -Rail Scale Rates | -CD, DK, GY, LX, N4, PI, PR, PT, R9, R2B, R2C, RAB, RD, REN, SA, SCL, SE, SS, ST | -
| 500 | -MM | -Medical Event Reporting | -BGN, CTT, DMG, DTM, HL, LIN, LM, LQ, MEA, MTX, N2, N3, N4, NM1, PER, PID, PWK, QTY, REF, SE, ST, TRN | -
| 501 | -WG | -Vendor Performance Review | -AMT, BGN, CRT, DTP, LE, LM, LQ, LS, MEA, N1, N2, N3, N4, NTE, PCT, PER, QTY, REF, SE, SPR, ST | -
| 503 | -PH | -Pricing History | -AMT, BGN, CS, DTM, FOB, LE, LIN, LM, LQ, LS, N1, N2, N3, N4, NTE, PCT, PER, PID, QTY, REF, SE, ST | -
| 504 | -CC | -Clauses and Provisions | -BGN, DTP, LM, LQ, MSG, N1, N2, N3, N4, PER, REF, SE, ST | -
| 511 | -RN | -Requisition | -BR, DD, FA1, FA2, G61, G62, G69, GF, LIN, LM, LQ, LX, MAN, MEA, N1, N2, N3, N4, N9, NTE, PO1, PWK, QTY, R4, REF, SE, ST | -
| 517 | -MV | -Material Obligation Validation | -BR, DD, FA1, FA2, G61, G62, GF, LM, LQ, N1, N2, N3, N4, N9, QTY, SE, ST | -
| 521 | -AO | -Income or Asset Offset | -AD1, AMT, BGN, BPR, CDS, CUR, DTM, IN2, MSG, N1, N2, N3, N4, NM1, NTE, PAM, PER, REF, SE, ST, TRN | -
| 527 | -MD | -Material Due-In and Receipt | -AMT, BR, CS, DD, FA1, FA2, G61, G62, G66, G69, GF, LIN, LM, LQ, N1, N2, N3, N4, N9, NTE, PO4, QTY, RCD, REF, SE, ST | -
| 536 | -LR | -Logistics Reassignment | -BR, CON, CS, CTP, DD, G61, G62, G69, HL, LDT, LIN, LM, LQ, MEA, MSG, N1, N2, N3, N4, N9, PKG, PWK, QTY, RCD, SE, ST | -
| 540 | -ES | -Notice of Employment Status | -BGN, DTM, EMS, ENT, HD, IN2, N1, N2, N3, N4, NM1, PAM, PER, REF, SE, ST, YNQ | -
| 561 | -D4 | -Contract Abstract | -AMT, BGN, CS, CTT, DTM, FA1, FA2, G61, G62, HL, ITD, LM, LQ, N1, N2, N3, N4, N9, PCT, PID, PO1, REF, RRE, SCH, SE, SLN, ST | -
| 567 | -D3 | -Contract Completion Status | -AMT, BC, CS, G61, G62, LM, LQ, N1, N2, N3, N4, N9, NTE, SE, ST | -
| 568 | -D5 | -Contract Payment Management Report | -AMT, BAL, BGN, CS, CTT, DTM, FA1, FA2, LM, LQ, LX, N1, N2, N3, N4, N9, PER, QTY, REF, RTE, SE, ST | -
| 601 | -SE | -Customs Export Shipment Information | -BA1, DTM, L13, M12, MAN, N1, N2, N3, N4, P5, REF, SE, ST, V5, VEH, VID, X1, YNQ | -
| 603 | -EO | -Transportation Equipment Registration | -BGN, DTM, LQ, MEA, N1, N2, N3, N4, N9, N21, PER, SE, ST, VEH, YNQ | -
| 620 | -EX | -Excavation Communication | -BGN, DTM, EXI, LIE, LM, LQ, MEA, MSG, MTX, N1, N2, N3, N4, NX2, PER, PPA, REF, SE, ST | -
| 625 | -WL | -Well Information | -BGN, CID, DTP, HL, LIE, LM, LQ, MEA, MTX, N1, N2, N3, N4, PER, PID, PPA, QTY, REF, SE, ST, YNQ | -
| 650 | -MO | -Maintenance Service Order | -AMT, BGN, CLI, COM, DTM, HL, LIN, LM, LQ, MEA, MTX, N1, N2, N3, N4, NM1, PCT, PER, QTY, REF, RPA, SE, SPI, ST, YNQ | -
| 715 | -GL | -Intermodal Group Loading Plan | -BGN, GR2, GR4, GR5, N4, N7, R4, REF, SE, ST, V1 | -
| 753 | -RF | -Request for Routing Instructions | -AT8, BGN, CMC, G62, L11, LX, N1, N2, N3, N4, OID, PER, SE, ST, USI, YNQ | -
| 754 | -RG | -Routing Instructions | -AT9, BGN, BLR, FOB, G62, L11, LE, LS, LX, MAN, MSI, MTX, N1, N2, N3, N4, OID, PAL, PER, PID, PKD, PKG, PO1, QTY, R4, REF, S5, SE, SMD, SN1, ST, TD1 | -
| 805 | -CP | -Contract Pricing Proposal | -AMT, BCP, CB1, CBS, CUR, DTM, G61, HL, JIL, LIN, LX, MTX, N1, N2, N3, N4, N9, PD, PDD, PL, REF, SE, SPI, ST | -
| 806 | -PJ | -Project Schedule Reporting | -AMT, BPP, CAL, DTM, MLS, MTX, N1, N2, N3, N4, NM1, PAM, PCT, PER, PID, QTY, REF, RPA, RSC, SE, ST, TID | -
| 810 | -IN | -Invoice | -AMT, BAL, BIG, CAD, CRC, CTP, CTT, CUR, DMG, DTM, FA1, FA2, FOB, INC, ISS, IT1, IT3, ITD, L7, LM, LQ, MEA, MSG, MTX, N1, N2, N3, N4, N9, NTE, PAM, PER, PID, PKG, PO4, PWK, QTY, R4, REF, SAC, SDQ, SE, | -
| 811 | -CI | -Consolidated Service Invoice/Statement | -AMT, BAL, BIG, CAD, CTT, CUR, DMG, DTM, DTP, FA1, FA2, HL, III, INC, IT1, ITA, ITD, LCD, LQ, LX, MEA, MSG, N1, N2, N3, N4, NM1, NTE, NX2, PCT, PER, PID, QTY, REF, SE, SI, SLN, ST, TCD, TDS, TRF, TXI, | -
| 812 | -CD | -Credit/Debit Adjustment | -AMT, BCD, CDD, CUR, DTM, FA1, FA2, FOB, ITD, LIN, LM, LQ, N1, N2, N3, N4, N9, N11, PCT, PER, PO4, SAC, SE, SHD, ST | -
| 813 | -TF | -Electronic Filing of Tax Return Data | -BPR, BTI, DTM, FGS, IN2, MSG, N1, N2, N3, N4, PER, REF, SE, ST, TFS, TIA, TRN | -
| 814 | -GE | -General Request, Response or Confirmation | -AMT, ASI, AWD, BGN, CUR, DTM, FA1, FA2, LCD, LIN, LM, LQ, MTX, N1, N2, N3, N4, N9, NM1, PER, PM, QTY, REF, SE, ST | -
| 815 | -CS | -Cryptographic Service Message | -CSB, CSC, CSM, DTP, SE, ST | -
| 816 | -OR | -Organizational Relationships | -ASI, BHT, CAL, DTM, HL, LQ, N1, N2, N3, N4, PER, QTY, REF, SE, ST | -
| 818 | -RP | -Commission Sales Report | -AMT, BSC, CUR, DTM, LIN, N3, N4, N11, NM1, PID, REF, SAL, SCD, SE, ST | -
| 819 | -JB | -Joint Interest Billing and Operating Expense Statement | -AMT, BOS, CTT, CUR, DTM, ITA, ITD, JID, JIL, MEA, MSG, N1, N2, N3, N4, PER, PID, PSA, QTY, REF, SE, ST, TDS | -
| 820 | -RA | -Payment Order/Remittance Advice | -ADX, AIN, AMT, ASM, ATN, BPR, CUR, DED, DMG, DTM, DTP, EMS, ENT, FA1, FA2, G53, HD, INS, INV, IT1, LOC, LX, N1, N2, N3, N4, N9, NM1, NTE, PCT, PEN, PER, PID, PYD, QTY, RDM, REF, RMR, RPA, RYL, SAC, SE | -
| 821 | -FR | -Financial Information Reporting | -ACT, AMT, AVA, B2A, BLN, CTP, CUR, DTM, ENT, FA1, FA2, FIR, LM, LQ, MSG, N1, N2, N3, N4, N9, NM1, PER, REF, RTE, SE, ST, TRN, TSU | -
| 822 | -AA | -Account Analysis | -ACT, ADJ, BGN, BLN, CTP, CUR, DTM, ENT, LX, N1, N2, N3, N4, PER, RTE, SE, SER, ST | -
| 823 | -LB | -Lockbox | -ADX, AIN, AMT, AVA, BAT, BPR, CUR, DED, DEP, DTM, DTP, G53, INV, IT1, LX, N1, N2, N3, N4, NM1, NTE, PEN, PER, QTY, REF, RMR, SAC, SE, SLN, ST, TRN, TXI, TXP | -
| 824 | -AG | -Application Advice | -AMT, BGN, CTX, DTM, LM, LQ, N1, N2, N3, N4, NM1, NTE, OTI, PER, QTY, RED, REF, SE, ST, TED | -
| 826 | -TI | -Tax Information Exchange | -BTI, DTM, FGS, IN2, N1, N2, N3, N4, PER, REF, SE, ST, TFS, TIA, YNQ | -
| 827 | -FR | -Financial Return Notice | -CUR, DTM, N2, N3, N4, NM1, PER, REF, RIC, SE, ST, TRN | -
| 828 | -DA | -Debit Authorization | -AMT, BAU, CTT, DAD, N1, N2, N3, N4, NM1, PER, REF, SE, ST | -
| 829 | -PY | -Payment Cancellation Request | -AMT, DTM, PCR, QTY, REF, SE, ST, TRN | -
| 830 | -PS | -Planning Schedule with Release Capability | -ATH, BFR, CSH, CTP, CTT, CUR, DD, DTM, FOB, FST, ITD, LDT, LIN, LM, LQ, MAN, MEA, N1, N2, N3, N4, NM1, PER, PID, PKG, PO3, PO4, PRS, PWK, QTY, REF, SAC, SDP, SDQ, SE, SHP, SLN, ST, TAX, TD1, TD3, TD4, | -
| 831 | -CT | -Application Control Totals | -AMT, BGN, DTM, N9, QTY, SE, ST, TRN | -
| 832 | -SC | -Price/Sales Catalog | -AAA, BCT, CRC, CRD, CTB, CTP, CTT, CUR, DTM, EFI, FOB, G26, G36, G39, G40, G43, G53, G54, G55, G93, ITD, LDT, LE, LFG, LIN, LM, LQ, LS, MEA, MTX, N1, N2, N3, N4, N9, PAL, PAM, PER, PID, PKG, PKL, PO1, | -
| 833 | -ME | -Mortgage Credit Report Order | -ACT, AIN, AMT, ARS, BGN, CAI, CDA, CIV, CRO, DMG, DTP, EMP, EMS, FAA, FPT, IN1, IN2, K2, LRQ, LX, MSG, N1, N2, N3, N4, N10, NX1, NX2, PER, PPY, PWK, QTY, REA, REF, SE, ST, YNQ | -
| 834 | -BE | -Benefit Enrollment and Maintenance | -ACT, AD1, AIN, AMT, BEN, BGN, COB, DMG, DSB, DTP, EC, ENT, FC, FSA, HD, HI, HLH, ICM, IDC, INS, INV, K3, LC, LE, LS, LUI, LX, N1, N2, N3, N4, NM1, NX1, PER, PLA, PM, PRV, QTY, REF, REL, RP, SE, ST | -
| 835 | -HP | -Health Care Claim Payment/Advice | -AMT, BPR, CAS, CLP, CUR, DTM, K3, LQ, LX, MIA, MOA, N1, N2, N3, N4, NM1, NTE, PER, PLB, QTY, RAS, RDM, REF, SE, ST, SVC, TOO, TRN, TS2, TS3 | -
| 836 | -RQ | -Procurement Notices | -AMT, BCO, CTB, CTP, DTM, FOB, ITD, LDT, LM, LQ, MEA, MTX, N1, N2, N3, N4, PER, PID, PO1, PO3, PWK, QTY, REF, SE, SI, SLN, ST | -
| 837 | -HC | -Health Care Claim | -AMT, BHT, CAS, CL1, CLM, CN1, CR1, CR2, CR3, CR4, CR5, CR6, CR7, CR8, CRC, CTP, CUR, DMG, DN1, DN2, DSB, DTP, FRM, HCP, HI, HL, HSD, III, IMM, K3, LIN, LQ, LUI, LX, MEA, MIA, MOA, N2, N3, N4, NM1, NTE | -
| 838 | -TD | -Trading Partner Profile | -AMT, BTP, CUR, DMG, DTM, ENE, ERI, FBB, FOB, ITD, LCD, LE, LIN, LM, LQ, LS, LX, MEA, N1, N2, N3, N4, N9, PAM, PER, PID, PLA, REQ, SE, SPI, SPR, ST, TAX, TD5, TPD, TUD, TXN | -
| 839 | -PK | -Project Cost Reporting | -AMT, BCS, BSD, CAL, CFT, CLI, DLV, DTM, MSG, N1, N2, N3, N4, PAM, PCT, PER, QTY, REF, RPA, SE, ST | -
| 840 | -RQ | -Request for Quotation | -ADV, AMT, BQT, CB1, CN1, CSH, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FOB, FST, G53, G61, INC, IT8, ITD, LDT, LIN, LM, LQ, MAN, MEA, MTX, N1, N2, N3, N4, N9, PAM, PCT, PER, PID, PKG, PO1, PO3, PO4, PWK, QT | -
| 841 | -SP | -Specifications/Technical Information | -AMT, BIN, CID, CSF, CSS, DTM, EFI, HL, LE, LIN, LOC, LS, LX, MEA, MSG, N1, N2, N3, N4, N9, NTE, PER, PID, PKD, PKG, PRR, PRS, PRT, PSD, PWK, QTY, RDT, REF, SE, SPI, SPS, ST, STA, TMD, UIT, X1, X2, X7 | -
| 842 | -NC | -Nonconformance Report | -AMT, BIN, BNR, CID, CS, DTM, EFI, FA1, FA2, HL, LIN, LM, LQ, MEA, N1, N2, N3, N4, NCA, NCD, NTE, PER, PID, PRS, PSD, PWK, QTY, RC, REF, SE, SPS, ST, STA, TMD, YNQ | -
| 843 | -RR | -Response to Request for Quotation | -ADV, AMT, BQR, CPR, CSH, CST, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FOB, FST, INC, IT8, ITD, LDT, LIN, LM, LQ, MAN, MEA, MTX, N1, N2, N3, N4, N9, PAM, PCT, PD, PDD, PER, PID, PKG, PO1, PO3, PO4, PWK, QTY | -
| 844 | -CF | -Product Transfer Account Adjustment | -AMT, BAA, CON, CTT, CUR, DTM, LIN, MEA, N1, N2, N3, N4, N9, NTE, PAD, PER, PID, QTY, RCD, REF, SE, SII, SSS, ST, UIT | -
| 845 | -PA | -Price Authorization Acknowledgment/Status | -AMT, BPA, CON, CTB, CTP, CTT, CUR, DTM, G53, ITD, LIN, MEA, N1, N2, N3, N4, NTE, PAD, PER, PID, QTY, REF, SE, SHP, SLN, SSS, ST, UIT | -
| 846 | -IB | -Inventory Inquiry/Advice | -BIA, CS, CTP, CTT, CUR, DD, DTM, G53, LDT, LE, LIN, LM, LQ, LS, MAN, MEA, N1, N2, N3, N4, PCT, PER, PID, PKG, QTY, REF, SAC, SCH, SDQ, SE, SLN, ST, UIT | -
| 847 | -MX | -Material Claim | -AMT, BHT, CTP, CTT, CUR, DTM, HL, LIN, MEA, N1, N2, N3, N4, NTE, PER, PID, PKG, QTY, REF, SAC, SE, SHP, ST | -
| 848 | -MS | -Material Safety Data Sheet | -BMS, CID, DTM, LIN, LX, MEA, MSG, MSS, N1, N2, N3, N4, NTE, PER, PID, PKG, REF, SD1, SE, ST, STA, TD4, TMD | -
| 849 | -CF | -Response to Product Transfer Account Adjustment | -AAA, AMT, BRC, CON, CTT, CUR, DTM, LIN, MEA, N1, N2, N3, N4, NTE, PAD, PER, PID, QTY, RCD, REF, SE, SSS, ST, UIT | -
| 850 | -PO | -Purchase Order | -ADV, AMT, BEG, CB1, CN1, CSH, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FA1, FA2, FOB, G61, IN2, INC, IT3, IT8, ITD, LDT, LE, LIN, LM, LQ, LS, MAN, MEA, MTX, N1, N2, N3, N4, N9, NX2, PAM, PCT, PER, PID, PKG, | -
| 851 | -LS | -Asset Schedule | -AMT, BLS, CTP, CTT, CUR, DTM, ITA, LIN, LS1, MSG, N1, N2, N3, N4, N9, PAM, PER, PID, PO3, SE, ST, TAX, TXI | -
| 852 | -PD | -Product Activity Data | -AMT, CTP, CTT, CUR, DTM, FOB, G95, LIN, N1, N2, N3, N4, N9, PAL, PER, PO4, QTY, SAC, SDQ, SE, ST, TD5, XPO, XQ, ZA | -
| 853 | -RI | -Routing and Carrier Instruction | -BGN, CTT, FK, G62, MEA, N1, N2, N3, N4, NTE, PER, REF, SE, ST, TD3, TD4, TD5 | -
| 854 | -DD | -Shipment Delivery Discrepancy Information | -BDD, G07, G61, G62, K1, L11, LE, LS, LX, N1, N2, N3, N4, Q8, SE, ST | -
| 855 | -PR | -Purchase Order Acknowledgment | -ACK, ADV, AMT, BAK, CSH, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FOB, IN2, INC, IT8, ITD, LDT, LIN, MAN, MEA, MTX, N1, N2, N3, N4, N9, NX2, PAM, PER, PID, PKG, PO1, PO3, PO4, PWK, QTY, REF, SAC, SCH, SDQ, | -
| 856 | -SH | -Ship Notice/Manifest | -AT9, BSN, CLD, CTT, CUR, DTM, DTP, ETD, FOB, GF, HL, LEP, LFH, LH1, LH2, LH3, LH4, LHE, LHR, LHT, LIN, LM, LQ, MAN, MEA, N1, N2, N3, N4, PAL, PER, PID, PKG, PO4, PRF, PWK, R4, REF, SAC, SDQ, SE, SLN, | -
| 857 | -BS | -Shipment and Billing Notice | -BHT, CTP, CUR, DTM, FA1, FA2, FOB, G05, HL, ISS, IT1, IT3, ITD, LM, LQ, LX, MAN, MEA, MTX, N1, N2, N3, N4, N9, PAL, PER, PID, PKG, PO4, PRF, SAC, SE, SLN, SN1, ST, TC2, TD1, TD3, TD4, TD5, TDS, TXI | -
| 858 | -SI | -Shipment Information | -AXL, BL, BNX, BX, C3, CD, CM, D9, E1, E4, E5, EM, F9, FA1, FA2, G62, GA, H3, H6, HL, IC, ITD, L0, L1, L3, L5, L7, L10, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHE, LHR, LHT, LP, M1, M2, M3, M7, M12, MEA, N | -
| 859 | -FB | -Freight Invoice | -B3, B3A, C3, CM, D9, F9, FOB, G4, G62, GA, H1, H2, H3, H6, IC, ITA, ITD, L0, L1, L3, L5, L7, L8, LH, LX, M1, M2, M7, MEA, N1, N2, N3, N4, N5, N7, N8, N9, NA, NTE, P1, P2, PER, POD, PS, R1, R2, R9, REF | -
| 860 | -PC | -Purchase Order Change Request - Buyer Initiated | -ADV, AMT, BCH, CB1, CN1, CSH, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FA1, FA2, FOB, G53, G61, IN2, INC, IT8, ITD, LDT, LE, LIN, LM, LQ, LS, MAN, MEA, MTX, N1, N2, N3, N4, N9, NX2, PAM, PCT, PER, PID, PKG, | -
| 861 | -RC | -Receiving Advice/Acceptance Certificate | -BRA, CTT, CUR, DTM, FA1, FA2, FOB, LIN, LM, LQ, MAN, MEA, N1, N2, N3, N4, NM1, PER, PID, PO4, PRF, RCD, REF, SAC, SE, SLN, SN1, ST, TD1, TD3, TD4, TD5 | -
| 862 | -SS | -Shipping Schedule | -BSS, CTT, DTM, FOB, FST, JIT, LIN, N1, N2, N3, N4, PER, PKG, PO4, PRS, QTY, REF, SDP, SDQ, SE, SHP, ST, TD1, TD3, TD5, UIT | -
| 863 | -RT | -Report of Test Results | -BTR, CID, DTM, HL, LIN, LM, LQ, MEA, N1, N2, N3, N4, N9, NM1, NTE, PER, PID, PO4, PSD, QTY, REF, SE, SPS, ST, STA, TMD, TSP, UIT | -
| 864 | -TX | -Text Message | -BMG, DTM, MIT, MSG, MTX, N1, N2, N3, N4, PER, REF, SE, ST | -
| 865 | -CA | -Purchase Order Change Acknowledgment/Request - Seller Initiated | -ACK, ADV, AMT, BCA, CSH, CTB, CTP, CTT, CUR, DIS, DTM, EFI, FOB, G53, IN2, INC, IT8, ITD, LDT, LIN, LM, LQ, MAN, MEA, MTX, N1, N2, N3, N4, N9, NX2, PAM, PCT, PD, PDD, PER, PID, PKG, PO3, PO4, POC, PWK | -
| 866 | -SQ | -Production Sequence | -BSS, CTT, DTM, FOB, LIN, MEA, N1, N2, N3, N4, OQS, PER, PID, QTY, REF, SE, SLN, ST, UIT | -
| 867 | -PT | -Product Transfer and Resale Report | -AMT, BPT, CTT, CUR, DD, DTM, FA1, FA2, ITA, LCD, LDT, LIN, LM, LQ, LX, MAN, MEA, N1, N2, N3, N4, N9, PER, PID, PKG, PO3, PO4, PRF, PSA, PTD, PWK, QTY, REF, SE, SII, ST, UIT | -
| 868 | -MT | -Electronic Form Structure | -DAI, DDI, DMI, E01, E03, E10, E13, E20, E22, E24, E30, E34, E40, E41, MSG, QTY, SE, ST | -
| 869 | -RS | -Order Status Inquiry | -BSI, CTT, DD, DTM, FA1, FA2, GF, HL, LIN, LM, LQ, MEA, N1, N2, N3, N4, NTE, PER, PID, PRF, QTY, REF, SE, ST | -
| 870 | -RS | -Order Status Report | -BSR, CS, CTT, CUR, DTM, HL, ISR, LM, LQ, LX, MEA, N1, N2, N3, N4, PER, PID, PKG, PO1, PO3, PRF, PWK, QTY, REF, SAC, SE, SLN, ST, TD1, TD3, TD4, TD5 | -
| 872 | -ME | -Residential Mortgage Insurance Application | -AMT, BFS, BGN, BUY, CDI, DMG, DTP, III, IN1, IN2, LN1, LRQ, LX, MCD, MIC, MSG, N1, N10, NM1, NX1, NX2, PAS, PCT, PER, PEX, PRD, PRJ, REA, REF, RES, SCM, SCS, SE, ST, VDI, YNQ | -
| 873 | -CU | -Commodity Movement Services | -AMT, BGN, CS, DTM, DTP, LCD, LQ, MEA, N1, N3, N4, N9, PER, QTY, REF, SE, SLN, ST | -
| 874 | -CQ | -Commodity Movement Services Response | -BGN, CS, DTM, III, LCD, N1, N3, N4, N9, PER, REF, SE, SLN, ST | -
| 875 | -OG | -Grocery Products Purchase Order | -G23, G50, G61, G62, G66, G68, G69, G70, G72, G73, G76, N1, N2, N3, N4, N9, NTE, QTY, SE, SLN, ST | -
| 876 | -OG | -Grocery Products Purchase Order Change | -G23, G61, G62, G66, G68, G69, G70, G72, G73, G76, G92, N1, N2, N3, N4, N9, NTE, QTY, SE, SLN, ST | -
| 877 | -CJ | -Manufacturer Coupon Family Code Structure | -BGN, DTM, ENT, G28, G69, LIN, N1, SE, ST | -
| 878 | -QG | -Product Authorization/De-authorization | -CTP, G21, G22, G62, G69, G72, N1, N2, N3, N4, PID, SE, ST | -
| 879 | -QG | -Price Information | -G20, G22, G26, G28, G36, G40, G43, G46, G61, G62, G69, G91, G93, N1, N2, N3, N4, N9, NTE, SAC, SE, ST | -
| 880 | -GP | -Grocery Products Invoice | -AMT, CAD, ENT, G01, G17, G19, G20, G23, G25, G31, G33, G61, G62, G69, G72, G73, MTX, N1, N2, N3, N4, N9, NTE, QTY, REF, SE, ST | -
| 881 | -CN | -Manufacturer Coupon Redemption Detail | -AMT, BGN, G01, G72, G73, LIN, LQ, LX, N1, N2, N3, N4, N9, PER, QTY, REF, SE, ST | -
| 882 | -IG | -Direct Store Delivery Summary Information | -G23, G25, G31, G33, G47, G48, G49, G61, G72, G73, N1, N2, N3, N4, N9, SE, ST | -
| 883 | -DF | -Market Development Fund Allocation | -AMT, BMA, G43, G61, G62, G95, LIN, LX, N1, QTY, SE, ST, UIT | -
| 884 | -MF | -Market Development Fund Settlement | -AMT, BAL, BMP, G61, N1, N9, NTE, QTY, SE, ST | -
| 885 | -UA | -Retail Account Characteristics | -DTM, ENT, G13, G18, G29, G30, G53, LM, LQ, N1, N2, N3, N4, N9, PER, RDI, SE, SPR, ST | -
| 886 | -UB | -Customer Call Reporting | -CRC, CTP, DTM, ENT, G28, G29, G32, G35, G37, N1, PER, QTY, SE, ST | -
| 887 | -CN | -Coupon Notification | -AMT, BGN, DTM, G11, G12, G14, G15, G28, G43, G51, LIN, N1, N2, N3, N4, N9, PCT, PER, QTY, SE, ST | -
| 888 | -QG | -Item Maintenance | -BGN, G22, G23, G24, G26, G36, G39, G40, G43, G46, G53, G54, G55, G61, G62, G69, G93, H1, LDT, LIN, LM, LQ, LX, MEA, N1, N2, N3, N4, N9, NTE, PAL, PID, PKG, QTY, REF, SE, SLN, ST, TD1, TD4, UIT, USI | -
| 889 | -QG | -Promotion Announcement | -G22, G23, G42, G43, G45, G46, G51, G61, G62, G69, G94, G95, LX, N1, N2, N3, N4, N9, NTE, QTY, SE, ST | -
| 890 | -D4 | -Contract & Rebate Management Transaction | -AMT, CPI, CPL, CTH, CUR, DTM, ECS, FU1, FU2, FU3, FU4, FU5, FX2, FX3, FX4, FX5, FX6, FX7, LE, LS, LX, MEA, MTX, N1, N2, N3, N4, NM1, NX1, PER, PPR, PSG, QTY, REF, SAC, SE, SEF, ST, TBP | -
| 891 | -UD | -Deduction Research Report | -ADX, AMT, BGN, ENT, N1, N9, PER, REF, SE, ST | -
| 893 | -AM | -Item Information Request | -B2A, DTM, G39, G43, G69, N1, N2, N3, N4, RCR, REF, SE, ST | -
| 894 | -DX | -Delivery/Return Base Record | -DTM, G22, G23, G72, G82, G83, G84, G85, G86, LE, LS, MTX, N9, SE, SLN, ST | -
| 895 | -DX | -Delivery/Return Acknowledgment or Adjustment | -G22, G23, G72, G84, G85, G86, G87, G88, G89, LE, LS, SE, ST | -
| 896 | -QG | -Product Dimension Maintenance | -G43, G61, G62, ID1, ID2, ID3, N1, N2, N3, N4, N9, NTE, SE, ST | -
| 920 | -GC | -Loss or Damage Claim - General Commodities | -CUR, F01, F02, F04, F05, F09, G61, G62, L11, M7, MAN, N1, N3, N4, NTE, Q7, SE, ST | -
| 924 | -GC | -Loss or Damage Claim - Motor Vehicle | -F01, F02, F07, F12, F6X, SE, ST | -
| 925 | -GC | -Claim Tracer | -F02, F10, SE, ST | -
| 926 | -GC | -Claim Status Report and Tracer Reply | -F11, F13, F14, SE, ST, TRN | -
| 928 | -AI | -Automotive Inspection Detail | -BIX, ID, SE, ST, TI, VC | -
| 940 | -OW | -Warehouse Shipping Order | -AMT, AT9, BNX, FA1, FA2, G61, G62, G66, G69, LE, LEP, LFH, LH1, LH2, LH3, LH4, LH6, LHR, LHT, LM, LQ, LS, LX, MAN, MEA, N1, N2, N3, N4, N9, NTE, PAL, PER, QTY, R2, SDQ, SE, SLN, ST, TD3, W6, W01, W05, | -
| 943 | -AR | -Warehouse Stock Transfer Shipment Advice | -G61, G62, G69, N1, N2, N3, N4, N9, NTE, PER, SE, ST, W03, W04, W06, W10, W20, W27, W28 | -
| 944 | -RE | -Warehouse Stock Transfer Receipt Advice | -G08, G61, G62, G69, LX, MAN, N1, N2, N3, N4, N9, NTE, PAL, PER, SE, ST, TD1, W07, W08, W13, W14, W17, W18, W20 | -
| 945 | -SW | -Warehouse Shipping Advice | -AMT, FA1, FA2, G61, G62, G69, G72, LE, LM, LQ, LS, LX, MAN, MEA, N1, N2, N3, N4, N9, NTE, PAL, PER, QTY, R4, SE, ST, TD1, W6, W03, W06, W10, W12, W27, W28 | -
| 947 | -AW | -Warehouse Inventory Adjustment Advice | -AMT, CS, FA1, FA2, G61, G62, G69, LM, LQ, LX, N1, N2, N3, N4, N9, NTE, PER, SE, ST, W15, W19 | -
| 980 | -- | Functional Group Totals | -BT1, SE, ST | -
| 990 | -GF | -Response to a Load Tender | -B1, L11, SE, ST | -
| 993 | -NR | -Secured Receipt or Acknowledgment | -AK1, AK2, APE, S4A, SE, SPE, ST, SVA | -
| 996 | -FT | -File Transfer | -BGF, K3, SE, ST | -
| 997 | -FA | -Functional Acknowledgment | -AK1, AK2, AK3, AK4, AK5, AK9, SE, ST | -
| 998 | -AL | -Set Cancellation | -SE, ST, ZD | -
| 999 | -FA | -Implementation Acknowledgment | -AK1, AK2, AK9, CTX, IK3, IK4, IK5, SE, ST | -
The X12 format was designed to eliminate redundant information in an effort to make the transmission as small as possible. This was historically necessary when transmissions were very expensive and carriers charged for every byte transmitted.
-
-Though this format is best for transmission it means that the information that you need for one unit of work, such as a claim, shares segments with other units.
-
-When receiving a file your system can handle the entire file as a batch by processing it and laying it out into a database with the shared segments normalized into tables. However, this can take hours on a large file and it might be useful for you to unbundle
- the file so that each discrete unit can be operated on separately. This could be helpful for the following reasons:
-The X12 Parser 2.1 will allow you to do this at any loop by specifying the LoopId. For example, the LoopId for a claim is
-"2300" and the code for unbundling an 837 would look like the following:
-
-
X12Parser parser = new X12Parser(); - Interchange interchange = parser.Parse(new FileStream("C:\\Temp\\5010_Example1,2, And 3 Combined.txt", FileMode.Open, FileAccess.Read)); - - var list = parser.UnbundleByLoop(interchange, "2300"); - foreach (var item in list) - { - Trace.WriteLine("..."); - Trace.WriteLine(item.SerializeToX12(true)); - } --
-The method UnbundleByLoop will return a List<Interchange> which you can serialize back to X12. The true arguments adds the whitespace so that you can see the hierarchical structure more clearly. Use false if you want it back to the condensed
- X12 format.
-
-An X12 file that looks like this:
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ - GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ - ST*837*0021*005010X222~ - BHT*0019*00*244579*20061015*1023*CH~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~ - HL*1**20*1~ - PRV*BI*PXC*203BF0100Y~ - NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ - N3*234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*587654321~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MAIMI*FL*33111~ - HL*2*1*22*1~ - SBR*P**2222-SJ******CI~ - NM1*IL*1*SMITH*JANE****MI*JS00111223333~ - DMG*D8*19430501*F~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - REF*G2*KA6663~ - HL*3*2*23*0~ - PAT*19~ - NM1*QC*1*SMITH*TED~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33413~ - DMG*D8*19730501*M~ - CLM*26463774*100***11:B:1*Y*A*Y*I~ - REF*D9*17312345600006351~ - HI*BK:0340*BF:V7389~ - LX*1~ - SV1*HC:99213*40*UN*1***1~ - DTP*472*D8*20061003~ - LX*2~ - SV1*HC:87070*15*UN*1***1~ - DTP*472*D8*20061003~ - LX*3~ - SV1*HC:99214*35*UN*1***2~ - DTP*472*D8*20061010~ - LX*4~ - SV1*HC:86663*10*UN*1***2~ - DTP*472*D8*20061010~ - HL*4**20*1~ - NM1*85*1*KILDARE*BEN****XX*1999996666~ - N3*1234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*123456789~ - PER*IC*CONNIE*TE*3055551234~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - HL*5*4*22*1~ - SBR*P*******CI~ - NM1*IL*1*SMITH*JANE****MI*111223333~ - DMG*D8*19430501*F~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - N3*3333OCEAN ST~ - N4*SOUTH MIAMI*FL*33000~ - REF*G2*PBS3334~ - HL*6*5*23*0~ - PAT*19~ - NM1*QC*1*SMITH*TED~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33413~ - DMG*D8*19730501*M~ - CLM*26407789*79.04***11:B:1*Y*A*Y*I*P~ - HI*BK:4779*BF:2724*BF:2780*BF:53081~ - NM1*82*1*KILDARE*BEN****XX*1999996666~ - PRV*PE*PXC*204C00000X~ - REF*G2*KA6663~ - NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - SBR*S*01*******CI~ - DMG*D8*19430501*F~ - OI***Y*P**Y~ - NM1*IL*1*SMITH*JACK****MI*T55TY666~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33111~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - LX*1~ - SV1*HC:99213*43*UN*1***1:2:3:4~ - DTP*472*D8*20051003~ - LX*2~ - SV1*HC:90782*15*UN*1***1:2~ - DTP*472*D8*20051003~ - LX*3~ - SV1*HC:J3301*21.04*UN*1***1:2~ - DTP*472*D8*20051003~ - SE*89*0021~ - ST*837*0022*005010X222~ - BHT*0019*00*0123*20061015*1023*RP~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*AHLIC*****46*66783JJT~ - HL*1**20*1~ - PRV*BI*PXC*203BF0100Y~ - NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ - N3*234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*587654321~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - HL*2*1*22*0~ - SBR*P*18*12312-A******HM~ - NM1*IL*1*SMITH*TED****MI*00221111~ - 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:B:1*Y*A*Y*I~ - DTP*431*D8*19981003~ - REF*D9*17312345600006351~ - HI*BK:0340*BF:V7389~ - NM1*77*2*KILDARE ASSOCIATES*****XX*5812345679~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - LX*1~ - SV1*HC:99213*40*UN*1***1~ - DTP*472*D8*20061003~ - LX*2~ - SV1*HC:87072*15*UN*1***1~ - DTP*472*D8*20061003~ - LX*3~ - SV1*HC:99214*35*UN*1***2~ - DTP*472*D8*20061010~ - LX*4~ - SV1*HC:86663*10*UN*1***2~ - DTP*472*D8*20061010~ - SE*41*0022~ - GE*2*1~ -IEA*1*000000905~ --
-Will unbundle it into three individual Interchange objects that can serialized back into X12 that looks the next three blocks.
-Note that not only have the claim loops been separated in a way where their header information is retained, but the SE transaction trailer segment and GE function group segment has been updated to correctly reflect the number of segments in the transaction
- and the number of transactions in the function group so the resulting x12 is still valid.
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ - GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ - ST*837*0021*005010X222~ - BHT*0019*00*244579*20061015*1023*CH~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~ - HL*1**20*1~ - PRV*BI*PXC*203BF0100Y~ - NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ - N3*234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*587654321~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MAIMI*FL*33111~ - HL*2*1*22*1~ - SBR*P**2222-SJ******CI~ - NM1*IL*1*SMITH*JANE****MI*JS00111223333~ - DMG*D8*19430501*F~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - REF*G2*KA6663~ - HL*3*2*23*0~ - PAT*19~ - NM1*QC*1*SMITH*TED~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33413~ - DMG*D8*19730501*M~ - CLM*26463774*100***11:B:1*Y*A*Y*I~ - REF*D9*17312345600006351~ - HI*BK:0340*BF:V7389~ - LX*1~ - SV1*HC:99213*40*UN*1***1~ - DTP*472*D8*20061003~ - LX*2~ - SV1*HC:87070*15*UN*1***1~ - DTP*472*D8*20061003~ - LX*3~ - SV1*HC:99214*35*UN*1***2~ - DTP*472*D8*20061010~ - LX*4~ - SV1*HC:86663*10*UN*1***2~ - DTP*472*D8*20061010~ - SE*42*0021~ - GE*1*1~ -IEA*1*000000905~ --
-
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ - GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ - ST*837*0021*005010X222~ - BHT*0019*00*244579*20061015*1023*CH~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*KEY INSURANCE COMPANY*****46*66783JJT~ - HL*4**20*1~ - NM1*85*1*KILDARE*BEN****XX*1999996666~ - N3*1234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*123456789~ - PER*IC*CONNIE*TE*3055551234~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - HL*5*4*22*1~ - SBR*P*******CI~ - NM1*IL*1*SMITH*JANE****MI*111223333~ - DMG*D8*19430501*F~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - N3*3333OCEAN ST~ - N4*SOUTH MIAMI*FL*33000~ - REF*G2*PBS3334~ - HL*6*5*23*0~ - PAT*19~ - NM1*QC*1*SMITH*TED~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33413~ - DMG*D8*19730501*M~ - CLM*26407789*79.04***11:B:1*Y*A*Y*I*P~ - HI*BK:4779*BF:2724*BF:2780*BF:53081~ - NM1*82*1*KILDARE*BEN****XX*1999996666~ - PRV*PE*PXC*204C00000X~ - REF*G2*KA6663~ - NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - SBR*S*01*******CI~ - DMG*D8*19430501*F~ - OI***Y*P**Y~ - NM1*IL*1*SMITH*JACK****MI*T55TY666~ - N3*236 N MAIN ST~ - N4*MIAMI*FL*33111~ - NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666~ - LX*1~ - SV1*HC:99213*43*UN*1***1:2:3:4~ - DTP*472*D8*20051003~ - LX*2~ - SV1*HC:90782*15*UN*1***1:2~ - DTP*472*D8*20051003~ - LX*3~ - SV1*HC:J3301*21.04*UN*1***1:2~ - DTP*472*D8*20051003~ - SE*53*0021~ - GE*1*1~ -IEA*1*000000905~ --
ISA*00* *01*SECRET *ZZ*SUBMITTERS.ID *ZZ*RECEIVERS.ID *030101*1253*^*00501*000000905*1*T*:~ - GS*HC*SENDER CODE*RECEIVER CODE*19991231*0802*1*X*005010X222~ - ST*837*0022*005010X222~ - BHT*0019*00*0123*20061015*1023*RP~ - NM1*41*2*PREMIER BILLING SERVICE*****46*TGJ23~ - PER*IC*JERRY*TE*3055552222*EX*231~ - NM1*40*2*AHLIC*****46*66783JJT~ - HL*1**20*1~ - PRV*BI*PXC*203BF0100Y~ - NM1*85*2*BEN KILDARE SERVICE*****XX*9876543210~ - N3*234 SEAWAY ST~ - N4*MIAMI*FL*33111~ - REF*EI*587654321~ - NM1*87*2~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - HL*2*1*22*0~ - SBR*P*18*12312-A******HM~ - NM1*IL*1*SMITH*TED****MI*00221111~ - 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:B:1*Y*A*Y*I~ - DTP*431*D8*19981003~ - REF*D9*17312345600006351~ - HI*BK:0340*BF:V7389~ - NM1*77*2*KILDARE ASSOCIATES*****XX*5812345679~ - N3*2345 OCEAN BLVD~ - N4*MIAMI*FL*33111~ - LX*1~ - SV1*HC:99213*40*UN*1***1~ - DTP*472*D8*20061003~ - LX*2~ - SV1*HC:87072*15*UN*1***1~ - DTP*472*D8*20061003~ - LX*3~ - SV1*HC:99214*35*UN*1***2~ - DTP*472*D8*20061010~ - LX*4~ - SV1*HC:86663*10*UN*1***2~ - DTP*472*D8*20061010~ - SE*41*0022~ - GE*1*1~ -IEA*1*000000905~ --
-
-
The X12 Parser is designed around a set of objects that get loaded with the help of an X12Parser object. Once loaded, the Interchange object can operate without any further assistance from the X12Parser.
-
-
-You can use these objects to:
-An X12 envelop starts with an Interchange surrounding a set of Function Groups surrounding a set of Transactions.
-The transactions can hold individual segments, loops or hierarchical loops. The following domain model represents these objects with the least repetition of their common characteristics.
-
-
-
-Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:
-
-
The following code sample shows loading an Interchange object from an existing X12 string.
-It then demonstrates traversing the object model to test specific elements against the expected values.
-private string inquiry = @"ISA*00* *00* *01*9012345720000 *01*9088877320000 *020816*1144*U*00401*000000031*0*T*:~ - GS*HS*901234572000*908887732000*20070816*1615*31*X*00501X092A1~ - ST*270*1234~ - BHT*0022*13*10001234*20070816*1319*00~ - HL*1**20*1~ - NM1*PR*2*ABC BILLING SERVICE*****PI*842610001~ - HL*2*1*21*1~ - NM1*1P*2*BONE AND JOINT CLINIC*****SV*2000035~ - HL*3*2*22*0~ - TRN*1*93175-012547*9877281234~ - NM1*IL*1*SMITH*ROBERT*MI****11122333301~ - DMG*D8*19430519~ - DTP*291*D8*20060501~ - EQ*30~ - SE*13*1234~ - GE*1*31~ - IEA*1*000000031~ - "; - -[TestMethod] -public void Read270Test() -{ - X12Parser parser = new X12Parser(); - Interchange interchange = parser.Parse(new MemoryStream(Encoding.ASCII.GetBytes(inquiry))); - Assert.AreEqual("9088877320000 ", interchange.InterchangeReceiverId); --
Transaction transaction = interchange.FunctionGroups.First().Transactions.First(); - Segment bht = transaction.Segments.First(); -
Assert.AreEqual("10001234", bht.GetElement(3)); - - HierarchicalLoop subscriberLoop = transaction.FindHLoop("3"); - - Loop subscriberNameLoop = subscriberLoop.Loops.First(); - - Assert.AreEqual("SMITH", subscriberNameLoop.GetElement(3), "Subscriber last name not expected."); - Assert.AreEqual("11122333301", subscriberNameLoop.GetElement(9), "Subscriber member id not expected."); - -} -
-
See the test ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.
-Some suggested reading for understanding the X12 format in general: -http://docs.oracle.com/cd/E19398-01/820-1275/agdaw/index.html
-Some suggested reading for understanding the 270 format: -http://www.anthem.com/edi/noapplication/f3/s1/t0/pw_ad086850.pdf
-Starting with an outlined version of a 270 file (This code will be included in the test -Create270Test in the next release with the test code given above - -Read270Test)
-private string inquiryOutline = @"ISA*00* *00* *01*9012345720000 *01*9088877320000 *020816*1144*U*00401*000000031*0*T*:~ - GS*HS*901234572000*908887732000*20070816*1615*31*X*00501X092A1~ - ST*270*1234~ - BHT*0022*13*10001234*20070816*1319*00~ - HL*1**20*1~ - NM1*PR*2*ABC BILLING SERVICE*****PI*842610001~ - HL*2*1*21*1~ - NM1*1P*2*BONE AND JOINT CLINIC*****SV*2000035~ - HL*3*2*22*0~ - TRN*1*93175-012547*9877281234~ - NM1*IL*1*SMITH*ROBERT*MI****11122333301~ - DMG*D8*19430519~ - DTP*291*D8*20060501~ - EQ*30~ - SE*13*1234~ - GE*1*31~ - IEA*1*000000031~ - "; --
-
First you need to create the interchange (The ISA line above).
-The following code creates this: ISA*00* *00* *01*9012345720000 *01*9088877320000 *020816*1144*U*00401*000000031*0*T*:~ - (Along with its ending code in IEA)
- --
Once the interchange is created, you need to add the Function Group to it. (This is the second line in the above example 270 text starting with GS)
-This section of code creates this: GS*HS*901234572000*908887732000*20070816*1615*31*X*00501X092A1~(Along with its ending code in GE)
- --
The next step is adding an actual transaction to the message. This is done by creating a transaction and a BHT – the header for the group of HL levels below.
-This section of code creates this: ST*270*1234~BHT*0022*13*10001234*20070816*1319*00~(Along with its ending code in SE)
- --
Now you will be adding the information for the HL levels to the BHT created above. There are 4 levels to a 270 request:
---HL1 – The information source level
-HL2 – The information receiver level
-HL3 – The subscriber level
-HL4 – The dependent level (Optional)
-
To create the HL1 level (Information Source):
- --
To create the HL2 level (Information Receiver)
- --
For the HL3 Level (Member/Subscriber):
- --
And the same process would be used for creating an HL4 (Dependent) record addition to the 270.
-Basically what you are doing is building up the document with each added hierarchal level or loop until the document is complete. -
-