Quantcast
Channel: x12parser Wiki Rss Feed
Viewing all 80 articles
Browse latest View live

New Comment on "837 Claim Parser Usage"

$
0
0
try { FileStream my837File = new FileStream(@"c:\temp\837\837 demo.txt", FileMode.Open, FileAccess.Read); OopFactory.X12.Parsing.X12Parser parser = new OopFactory.X12.Parsing.X12Parser(); OopFactory.X12.Hipaa.Claims.Services.ClaimTransformationService claimTransformationService = new OopFactory.X12.Hipaa.Claims.Services.ClaimTransformationService(); OopFactory.X12.Hipaa.Claims.ClaimDocument claimDocument = claimTransformationService.Transform837ToClaimDocument(my837File); OopFactory.X12.Hipaa.Claims.Services.ClaimFormTransformationService claimFormTransformationService = new OopFactory.X12.Hipaa.Claims.Services.ClaimFormTransformationService( new ProfessionalClaimToHcfa1500FormTransformation(@"C:\Downloads\837\CodePlex\Release 2.3.4 binaries\Release\HCFA1500_Red.gif"), new InstitutionalClaimToUB04ClaimFormTransformation(@"C:\Downloads\837\CodePlex\Release 2.3.4 binaries\Release\UB04_Red.gif"), new ProfessionalClaimToHcfa1500FormTransformation(@"C:\Downloads\837\CodePlex\Release 2.3.4 binaries\Release\HCFA1500_Red.gif")); XmlDocument foDocument = new XmlDocument(); string foXml = claimFormTransformationService.TransformClaimDocumentToFoXml(claimDocument); foDocument.LoadXml(foXml); var driver = Fonet.FonetDriver.Make(); FileStream outputFile = new FileStream(@"c:\Temp\837\837 demo.pdf", FileMode.Create, FileAccess.Write); driver.Render(foDocument, outputFile); } catch (Exception ex) { }

Updated Wiki: Sql Server Database Integration

$
0
0

See also:

Database Schema

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:


X12Schema.png

Table Purpose:

  • Container: keeps all Int or BigInt identities for the Interchange, FunctionalGroup, TransactionSet and Loop tables.
  • Revision - allows for edits of the X12 and keeping track of comments related to those edits.  A record of 0 is added by default to represent the initial load of all X12.
  • Interchange, FunctionalGroup, TransactionSet, Loop, Segment - this is the database realization of the Interchange model into a relational model.  All segments are shown as they were in the x12 message in the Segment column of the Segment table.
  • N1, ... - these are the indexed segment tables specified in the IndexedSegment configuration values.  It uses the X12 specification for each segment to define the table.  Because of this, there is the potential that something in the segment was not parsable.  It may either get truncated or was not parsable to the segment specification's data type.  These are errors in the X12, but this will be noted in the log file of the ImportX12 app.  The original segment will always remain as a string in the Segment column of the Segment table.

ImportX12 Configuration

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.

  • schema - schema of the Interchange, FunctionalGroup, TransactionSet, Loop, Segment tables and any indexed segment tables.  If you are using a schema other than "dbo" make sure that you create it first in your target database.  The ImportX12 app will create tables, but will expect the schema to already exist.
  • containerSchema - schema of the common tables: Container and Revision
  • ThrowExceptionOnSyntaxErrors - indicates whether an exception should be thrown on.  When the value is false an warning will be sent through the ParsingWarning event instead.
    • Hierarchical Parent Id references that don't exist, if false, than the HL will be treated as a top level HL without a parent
    • Segments that don't occur in the transaction set's specification, if false, the segment will parsed as a segment of the current loop where it was found.
  • IndexedSegments - a comma delimited list of X23 segment IDs that you would like to have as individual tables.  The specification of that segment ID will be used to determine how many element columns to create and of which data type. For example, if you are parsing 837 health claims you would use the list "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,OI,PAT,PER,PRV,PS1,PWK,QTY,RAS,REF,SBR,SV1,SV2,SV3,SV4,SV5,SV6,SV7,SVD,TOO,UR". See Transaction Set Configuration for a full list.
  • ParseDirectory - the directory to search for X12 files
  • ParseSearchPattern - the file search pattern to filter files for parsing with the ParseDirectory
  • ArchiveDirectory - the directory to move each file the parses and imports successfully.
  • FailureDirectory - the directory to move any file that fails to parse or load.  If the Interchange record was written, the HasErrors column will be set to true on failed files.

Schema Configuration

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:

  1. You want each client's data in a separate schema so their data will never co-mingle and each client does not suffer performance issues because another client has a large amount of records.
  2. You want to separate your X12 into inbound and outbound messages.
  3. You want to set separate security on different schemas for different users in your environment so they only access what they need to know, since most X12 contains Personally Identifiable Information.

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.


Revision Feature

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.

Updated Wiki: Sql Server Database Integration

$
0
0

See also:

Database Schema

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:


X12Schema.png

Table Purpose:

  • Container: keeps all Int or BigInt identities for the Interchange, FunctionalGroup, TransactionSet and Loop tables.
  • Revision - allows for edits of the X12 and keeping track of comments related to those edits.  A record of 0 is added by default to represent the initial load of all X12.
  • X12CodeList - This will contain the lookup values for any elements in a segment that has been Indexed into a separate table.
  • Interchange, FunctionalGroup, TransactionSet, Loop, Segment - this is the database realization of the Interchange model into a relational model.  All segments are shown as they were in the x12 message in the Segment column of the Segment table.
  • NM1, N1, N3 ... - these are the indexed segment tables specified in the IndexedSegment configuration values.  It uses the X12 specification for each segment to define the table.  Because of this, there is the potential that something in the segment was not parsable.  It may either get truncated or was not parsable to the segment specification's data type.  These are errors in the X12, but this will be noted in the log file of the ImportX12 app.  The original segment will always remain as a string in the Segment column of the Segment table.
  • ParsingError - because the indexed tables are typed into decimal and datetime when relevant, this table will contain any errors translating the target data type or any errors exceeding the max length of a string element.  The errorId will be recorded in the indexed segment table.   The original Segment table will always contain the original value from the x12 file.

ImportX12 Configuration

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.

  • schema - schema of the Interchange, FunctionalGroup, TransactionSet, Loop, Segment tables and any indexed segment tables.  If you are using a schema other than "dbo" make sure that you create it first in your target database.  The ImportX12 app will create tables, but will expect the schema to already exist.
  • containerSchema - schema of the common tables: Container and Revision
  • ThrowExceptionOnSyntaxErrors - indicates whether an exception should be thrown on.  When the value is false an warning will be sent through the ParsingWarning event instead.
    • Hierarchical Parent Id references that don't exist, if false, than the HL will be treated as a top level HL without a parent
    • Segments that don't occur in the transaction set's specification, if false, the segment will parsed as a segment of the current loop where it was found.
  • IndexedSegments - a comma delimited list of X23 segment IDs that you would like to have as individual tables.  The specification of that segment ID will be used to determine how many element columns to create and of which data type. For example, if you are parsing 837 health claims you would use the list "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,OI,PAT,PER,PRV,PS1,PWK,QTY,RAS,REF,SBR,SV1,SV2,SV3,SV4,SV5,SV6,SV7,SVD,TOO,UR". See Transaction Set Configuration for a full list.
  • ParseDirectory - the directory to search for X12 files
  • ParseSearchPattern - the file search pattern to filter files for parsing with the ParseDirectory
  • ArchiveDirectory - the directory to move each file the parses and imports successfully.
  • FailureDirectory - the directory to move any file that fails to parse or load.  If the Interchange record was written, the HasErrors column will be set to true on failed files.

Schema Configuration

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:

  1. You want each client's data in a separate schema so their data will never co-mingle and each client does not suffer performance issues because another client has a large amount of records.
  2. You want to separate your X12 into inbound and outbound messages.
  3. You want to set separate security on different schemas for different users in your environment so they only access what they need to know, since most X12 contains Personally Identifiable Information.

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.


Revision Feature

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.

Updated Wiki: SqlTransactionRepository class

$
0
0

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.

SqlTransactionRepository Class Diagram

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.
SqlTransactionRepository.png

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.


SqlReadOnlyTransactionRepository Methods

GetTransactionSets

RepoTransactionSet.png

 

GetTransactionSetSegments

GetTransactionSetSegments accepts the following arguments:

  • transactionSetID = the Id from the TransactionSet table, this can also be obtained by searching for transactions using the GetTransactionSets method and specifying filter criteria with the RepoTransactionSetSearchCriteria.
  • revisionId - the revisionId of the the transaction, use Int32.MaxValue to get the latest revision.
  • includeControlSegments - will add the ISA,GS,GE and IEA segments to the segments returned.

It will return a List<RepoSegment<T>> which is shown below:

RepoSegment.png

 

GetLoops

RepoLoop.png

 

GetTransactionSegments

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.


SqlTransactionRepository Methods

Save

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.

SaveRevision

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.

New Comment on "Parsing an 837 Transaction"

$
0
0
Thanks very much its really very very helpful

Updated Wiki: Transaction Set Configuration

$
0
0

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 CodeFunction Group CodeNameSegments Used
100PGInsurance Plan DescriptionAM1, AMT, BGN, BLI, C3, COM, DTP, III, LIN, MSG, N1, N2, N3, N4, NM1, PER, PID, PO1, QTY, REF, SE, SI, SPA, ST
101NLName and Address ListsBGN, COM, DTM, IN2, LX, N1, N9, NX2, REF, SE, SPA, ST
102ACAssociated DataBDS, OOI, ORI, REF, SE, ST
103ABAbandoned Property FilingsAMT, 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
104SAAir Shipment InformationACS, 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
105BFBusiness Entity FilingsAMT, 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
106MHMotor Carrier Rate ProposalAT5, 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
107MCRequest for Motor Carrier Rate ProposalAT5, AT9, BGN, CA1, CUR, G62, GY, ID4, IV1, LX, MCT, MI1, MS2, N1, N2, N3, N4, PER, PR, SE, ST, SV
108MKResponse to a Motor Carrier Rate ProposalBGN, BLR, CA1, G62, LC1, N1, N2, N3, N4, PER, SE, ST
109VEVessel Content DetailsB4, DTM, N9, Q2, R4, SE, SG, ST, V9
110IAAir Freight Details and InvoiceACS, 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
111IFIndividual Insurance Policy and Client InformationAM1, 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
112PQProperty Damage ReportAMT, BGN, C3, CID, DTP, HL, III, K2, LM, MEA, MS1, MSG, N2, N3, N4, N9, NM1, PCT, PER, QTY, SE, SLN, ST, SUP, TXI
113CLElection Campaign and Lobbyist ReportingAWD, BGN, DTM, EMS, G86, HL, LQ, MTX, N1, N2, N3, N4, N9, NM1, NX2, PAM, PCT, PDL, PER, PWK, QTY, SE, ST, TPB
120VCVehicle Shipping OrderBVP, DTM, G62, N1, N2, N3, N4, REF, SE, ST, VC, VC1
121VSVehicle ServiceBVS, CGS, DEL, DTM, G62, N7, REF, SE, ST, V1, VC
124VDVehicle DamageAMT, 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
125MRMultilevel Railcar Load DetailsBMM, G62, N7, SE, ST, VC
126VAVehicle Application AdviceBVA, L7, SE, ST, V1, VAD
127VBVehicle Baying OrderBVB, G62, SE, SFC, ST, VC
128DIDealer InformationDH, DN, K1, N1, N2, N3, N4, PER, R9, SE, ST
129VHVehicle Carrier Rate UpdateG62, RT, RT1, SE, ST, VR
130EDStudent 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
131AKStudent Educational Record (Transcript) AcknowledgmentBGN, IN2, N1, QTY, REF, SE, ST, SUM
132HUHuman Resource InformationAIN, 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
133CWEducational Institution RecordAMT, 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
135SLStudent Aid Origination RecordAMT, 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
138TTEducational Testing and Prospect Request and ReportATV, 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
139SLStudent Loan Guarantee ResultAMT, BGN, DB, DTP, ENT, GR, IDB, IN2, LM, LQ, QTY, SE, ST
140WAProduct RegistrationAMT, BGN, CUR, DTM, ITA, ITD, LIN, LM, LQ, LX, N1, N2, N3, N4, N9, PER, PID, PSC, QTY, REF, SE, SLN, SSS, ST, TXI
141WAProduct Service Claim ResponseAMT, BGN, CUR, DTM, LX, MSG, N1, N2, N3, N4, N9, PCS, PER, QTY, RC, REF, SE, ST, TDS
142WAProduct Service ClaimAMT, 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
143WAProduct Service NotificationBGN, CID, CUR, DTM, ITA, LIN, LOC, MSG, N1, N2, N3, N4, N9, PER, PID, PRR, PRT, PWK, QTY, REF, REP, SE, SLN, ST
144LTStudent Loan Transfer and Status VerificationBGN, DB, DMG, DTP, ENT, GR, IDB, IN2, LV, N3, N4, REF, SE, ST
146RYRequest for Student Educational Record (Transcript)BGN, DMG, ERP, IN1, IN2, IND, N1, N2, N3, N4, NTE, PER, REF, SE, SSE, SST, ST
147RZResponse to Request for Student Educational Record (Transcript)AAA, BGN, IN1, IN2, N1, N2, N3, N4, NTE, PER, PWK, REF, SE, ST
148IJReport of Injury, Illness or IncidentACT, 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
149NTNotice of Tax Adjustment or AssessmentAMT, BGN, DTM, FGS, IN2, MSG, N1, N2, N3, N4, PCT, PER, REF, SE, ST, TDS, TFS, TIA
150TNTax Rate NotificationAMT, BGN, DTP, FGS, MTX, N1, N2, N3, N4, PER, QTY, SE, ST, TFS, TRS
151TAElectronic Filing of Tax Return Data AcknowledgmentAMT, BTA, BTI, DTM, FGS, PBI, QTY, REF, SE, ST, TFS, TIA
152GRStatistical Government InformationBGN, DTM, GRI, ICH, N1, N2, N3, N4, N9, NTE, PAM, PER, QTY, SE, ST
153CBUnemployment Insurance Tax Claim or Charge InformationAMT, BTI, CHB, DPN, DTM, MSG, N1, N2, N3, N4, NM1, PAM, PCT, PER, REF, SE, ST
154UCSecured Interest FilingAMT, BGN, CDS, CED, DAD, DTM, LIN, LS1, N1, N2, N3, N4, N9, NM1, NTE, PAM, PER, PID, PO3, SE, ST, TAX, TXI
155BCBusiness Credit ReportACD, 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,
157NPNotice of Power of AttorneyBGN, DTM, HL, IN2, N1, N2, N3, N4, NM1, PER, REF, SE, SPY, ST
158TJTax Jurisdiction SourcingASI, BGN, DTP, LX, N1, NX2, PPA, SE, ST, TA
159MPMotion Picture Booking ConfirmationAMT, BGN, CUR, DTP, G63, LQ, LUI, LX, MEA, MSG, N1, N4, N9, PCT, QTY, REF, SE, ST, THE
160SJTransportation Automatic Equipment IdentificationAEI, AES, BAX, DTM, EI, LQ, MEA, N9, QTY, SE, ST, TSI, YNQ
161TRTrain SheetBTS, DTM, FAC, H3, N9, NM1, PER, PWK, SE, ST, V9
163ASTransportation Appointment Schedule InformationB13, B2A, G05, G61, G62, H3, H6, L11, N1, N2, N3, N4, N7, OID, S5, SDQ, SE, ST
170ERRevenue Receipts StatementBOX, DTM, LX, N1, PER, REF, SE, ST, THE
175FCCourt and Law Enforcement NoticeAMT, 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
176FCCourt SubmissionAMT, 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
179EPEnvironmental Compliance ReportingAMT, 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
180ANReturn Merchandise Authorization and NotificationAMT, 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
185RDRoyalty Regulatory ReportAMT, ASI, ASM, BGN, DTP, LE, LM, LQ, LS, LX, MEA, N1, N2, N3, N4, NTE, PCT, PER, PID, QTY, REF, SE, ST
186UWInsurance Underwriting Requirements ReportingACT, 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
187AEPremium Audit Request and ReturnAD1, 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
188ECEducational Course InventoryCSE, CSU, DTP, ERP, MSG, N1, N2, N3, N4, PER, REF, SE, ST
189AFApplication for Admission to Educational InstitutionsAMT, 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
190SVStudent Enrollment VerificationAMT, BGN, DEG, DMG, DTP, ENR, ENT, ERP, FOS, IN2, LQ, N1, N2, N3, N4, NTE, PER, SE, SES, SST, ST, SUM
191SDStudent Loan Pre-Claims and ClaimsAMT, BGN, DB, DEF, DMA, DMG, DTP, ENR, ENT, GR, IN1, IN2, N3, N4, PER, REF, SE, SLI, ST, YNQ
194GTGrant or Assistance ApplicationAMT, 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
195LAFederal Communications Commission (FCC) License ApplicationAMT, BGN, CRC, DTM, LIE, LM, LQ, MEA, MSG, N1, N2, N3, N4, NTE, PER, PO1, PWK, QTY, REF, SE, ST
196PKContractor Cost Data ReportingAMT, BCM, BSD, CAL, CLI, CRT, DTM, DTP, G61, HL, MEA, MSG, N1, N2, N3, N4, PCT, PD, PDD, PID, QTY, REF, RPA, SE, ST
197TOReal Estate Title EvidenceAMT, 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
198MELoan Verification InformationACT, 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
199TOReal Estate Settlement InformationAMT, 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
200MEMortgage Credit ReportAAA, 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
201MEResidential Loan ApplicationACT, 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
202MJSecondary Mortgage Market Loan DeliveryAIN, 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
203MGSecondary Mortgage Market Investor ReportAMT, BGN, DTM, DTP, INT, IRA, LQ, LX, MPP, N1, N2, N3, N4, NX2, PER, PRC, QTY, REF, RLT, SE, ST, YNQ
204SMMotor Carrier Load TenderAT5, 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
205MNMortgage NoteAMT, 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
206MGReal Estate InspectionAIN, 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
210IMMotor Carrier Freight Details and InvoiceB3, 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
211BLMotor Carrier Bill of LadingAT1, 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
212TMMotor Carrier Delivery Trailer ManifestAT7, AT8, AT9, ATA, B2A, BLR, G61, G62, L11, LX, M7, MAN, MS1, MS2, N1, N2, N3, N4, OID, Q7, SDQ, SE, ST, TSD
213MIMotor Carrier Shipment Status InquiryB11, C3, G61, K2, L10, N1, N2, N3, N4, REF, SE, ST
214QMTransportation Carrier Shipment Status MessageAT5, AT7, AT8, B10, G62, K1, L11, LX, M7, MAN, MS1, MS2, MS3, N1, N2, N3, N4, OID, Q7, SDQ, SE, ST
215UPMotor Carrier Pickup ManifestACS, 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
216PUMotor Carrier Shipment Pickup NotificationAT5, G61, K2, N1, N2, N3, N4, PRF, PUN, SE, ST, TEM
217FGMotor Carrier Loading and Route GuideBLR, G61, GY, L11, LE, LS, LX, N1, N3, N4, RST, SE, ST, SV
219ABLogistics Service RequestAMT, 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
220AHLogistics Service ResponseAMT, 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
222CECartage Work AssignmentAT3, 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
223MQConsolidators Freight Bill and InvoiceAT8, B10, B2A, B3A, CSD, L1, L11, LE, LS, LX, M7, N1, N2, N3, N4, N7, OID, SDQ, SE, ST
224MAMotor Carrier Summary Freight Bill ManifestCF1, CF2, L11, SE, ST
225MYResponse to a Cartage Work AssignmentL11, SCP, SE, ST
227TUTrailer Usage ReportBLR, G61, G62, L11, M7, N1, N2, N3, N4, N7, NTE, SE, ST, TRL
228ENEquipment Inspection ReportBGN, DTM, EQD, L11, M7, MEA, N1, N3, N4, N9, NA, NM1, NTE, PER, Q5, SE, ST, W2
240MZMotor Carrier Package StatusAT7, BGN, BIN, CD3, EFI, L11, LE, LS, LX, MAN, MS2, N1, N2, N3, N4, NM1, NTE, Q7, SE, ST
242DSData Status TrackingBGN, DTP, HL, IIS, IRP, MSG, N1, QTY, REF, SE, ST, STS
244PNProduct Source InformationBGN, BSF, CID, COM, DTM, N1, N2, NM1, NX2, PID, SE, ST
245MEReal Estate Tax Service ResponseAMT, ASM, BGN, DTP, HL, INC, LN, MLA, N2, N3, N4, NM1, NX1, NX2, PDE, PDS, PER, PTS, REF, SE, ST, TA, TDT, TIA, TII
248SUAccount Assignment/Inquiry and Service/StatusACT, AIN, AMT, BAL, BHT, DMG, DTP, EMS, HL, INT, N2, N3, N4, NM1, PER, REF, SE, ST, STC
249ATAnimal Toxicological DataADI, ADT, ANI, AOC, AOI, AOL, AOR, ARC, AST, ATR, BGN, G61, GDP, GID, GRP, MSG, N1, N2, N3, N4, NTE, REF, SE, ST, STP
250PVPurchase Order Shipment Management DocumentBGN, DTM, FOB, G05, H3, L11, N1, N2, N3, N4, PRF, SE, SSD, ST
251CPPricing SupportAMT, BGN, CUR, DTM, G61, LX, MTX, N1, N2, N3, N4, NTE, PCT, PD, PDD, PID, PL, PO1, PPL, QTY, REF, SE, SPI, ST
252IEInsurance Producer AdministrationACT, 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
255UIUnderwriting Information ServicesACT, 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
256PEPeriodic CompensationADX, AM1, AMT, BLI, BLN, BSC, CUR, DMG, DTP, ENT, III, MSG, N1, N2, N3, N4, N9, NM1, PER, QTY, REF, RPA, SE, ST
259MGResidential Mortgage Insurance Explanation of BenefitsAMT, AWD, BGN, DFI, DTM, FIS, III, INT, MSG, N1, N2, N3, N4, N9, PCT, PER, QTY, REF, SE, ST
260MGApplication for Mortgage Insurance BenefitsAMT, BGN, CSI, DFI, DTP, FCL, FIS, INT, MIR, MSG, N1, N2, N3, N4, NM1, NTE, PCT, PER, REC, REF, SE, ST
261MEReal Estate Information RequestAM1, 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
262MEReal Estate Information ReportAIN, 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
263MEResidential Mortgage Insurance Application ResponseBGN, G63, LX, MIC, MIR, N1, N9, PCT, REF, SE, ST, TXI
264MGMortgage Loan Default StatusAMT, BGN, DFI, DTM, DTP, INT, LE, LS, LX, MIS, MRC, MSG, N1, N2, N3, N4, PER, QTY, REC, REF, SE, SOM, ST, YNQ
265TOReal Estate Title Insurance Services OrderAMT, 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
266MGMortgage or Property Record Change NotificationAMT, API, BGN, CRC, DTP, INT, LX, N1, N2, N3, N4, N9, NM1, NTE, PCT, PER, PID, QTY, REF, SE, ST, VEH
267ADIndividual Life, Annuity and Disability ApplicationACT, 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,
268PFAnnuity ActivityACT, 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
269HVHealth Care Benefit Coordination VerificationAAA, BGN, CLP, DTP, N1, N2, N3, N4, NM1, PER, REF, SE, ST, SVC, TRN
270HSEligibility, Coverage or Benefit InquiryAMT, BHT, DMG, DTP, EQ, HI, HL, III, INS, MPI, N2, N3, N4, NM1, PDP, PDR, PER, PRV, REF, SE, ST, TRN, VEH
271HBEligibility, Coverage or Benefit InformationAAA, 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
272LNProperty and Casualty Loss NotificationAMT, 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
273IDInsurance/Annuity Application StatusACT, 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
274PWHealthcare Provider InformationAAA, 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
275PIPatient InformationBDS, BGN, CAT, DMG, DTM, DTP, HI, IN1, LX, N3, N4, NM1, NX1, OOI, PER, PID, PRV, REF, SE, ST, STC, SVC, TRN
276HRHealth Care Claim Status RequestAMT, BHT, DMG, DTP, HL, N2, N3, N4, NM1, PAT, PER, REF, SBR, SE, ST, SVC, TOO, TRN
277HNHealth Care Information Status NotificationAMT, BHT, DMG, DTP, HL, N1, N2, N3, N4, NM1, PAT, PER, PWK, QTY, REF, SBR, SE, ST, STC, SVC, TOO, TRN
278HIHealth Care Services Review InformationAAA, 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
280VIVoter Registration InformationBGN, BIN, CRC, DTM, EFI, ICH, IN1, IN2, MEA, N1, N2, N3, N4, NX1, NX2, PER, PWK, REF, SE, ST
283TETax or Fee Exemption CertificationAMT, BGN, DTM, IN2, INI, LQ, LX, MSG, N1, N2, N3, N4, NM1, PER, PID, QTY, REF, SE, ST, TC2, TXI, YNQ
284IHCommercial Vehicle Safety ReportsAMT, 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
285CVCommercial Vehicle Safety and Credentials Information ExchangeAMT, 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
286KMCommercial Vehicle CredentialsAMT, 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
288WIWage DeterminationAMT, BGN, CRC, DTM, LM, LQ, LX, N1, N2, N3, N4, NTE, PER, QTY, REF, SE, ST
290COCooperative Advertising AgreementsAMT, ASM, CMA, CRC, DOS, MI, N1, N2, N3, N4, NTE, PAI, PER, QTY, SE, ST
300ROReservation (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
301ROConfirmation (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
303ROBooking Cancellation (Ocean)B1, SE, ST, V9, Y5, Y6
304SOShipping InstructionsB2, 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
309AQCustoms ManifestCII, 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
310IOFreight 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
311SOCanada Customs InformationB2A, 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
312IOArrival 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
313QOShipment Status Inquiry (Ocean)B4, N1, N9, SE, ST
315QOStatus Details (Ocean)B4, DTM, N9, Q2, R4, SE, SG, ST, V9
317SODelivery/Pickup OrderG61, G62, H1, L0, L5, N1, N2, N3, N4, N9, SE, ST, TD5
319SOTerminal InformationBA2, CD1, SE, ST
322SOTerminal Operations and Intermodal Ramp ActivityDTM, 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
323SOVessel Schedule and Itinerary (Ocean)DTM, K1, R4, SE, ST, V1, V9
324SOVessel Stow Plan (Ocean)DTM, ED, H1, H3, M7, N7, N9, NA, R4, SE, ST, V1, V4, W09
325SOConsolidation of Goods In ContainerB12, 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
326SOConsignment Summary ListDTM, G1, MBL, N7, N9, R4, SE, ST, V1, VC
350AUCustoms Status InformationBA1, K1, M7, M10, M7A, N7, N9, NM1, P4, SE, ST, V9, VEH, VID, X4
352AVCustoms Carrier General Order StatusK1, M10, M14, P4, SE, ST
353AXCustoms Events Advisory DetailsCM, K1, M10, M15, M7A, MEA, P4, SE, ST, V1, V2
354AYCustoms Automated Manifest Archive StatusM10, P4, SE, ST, X01, X02
355AZCustoms Acceptance/RejectionCII, 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
356BACustoms Permit to Transfer RequestM10, M20, P4, SE, ST
357BBCustoms In-Bond InformationLX, M10, M12, M13, M21, N1, N9, P4, SE, ST
358BDCustoms Consist InformationCII, DMA, DMG, M7, M10, M13, MBL, N3, N4, N9, NM1, P4, REF, SE, ST, VEH, VID, X1
359BGCustoms Customer Profile ManagementAAA, CII, CPM, DMA, DMG, N3, N4, NM1, PER, REF, SE, ST, VEH, VID
361SOCarrier Interchange Agreement (Ocean)CI, K1, N1, SE, ST
362OCCargo Insurance Advice of ShipmentAMT, BGN, CUR, DTP, L5, LQ, N1, N2, NX2, PCT, QTY, R1, R4, REF, SE, ST, V1
404SRRail Carrier Shipment InformationBL, 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
410IRRail Carrier Freight Details and InvoiceB3B, 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
412TBTrailer or Container Repair BillingAMT, CUR, DTM, DTP, III, IT1, MEA, N1, N2, N3, N4, PER, R11, R12, R13, REF, SE, ST
414CRRail Carhire SettlementsCHR, CIC, CTC, CUR, CV, CYC, LEQ, LX, PI, PRI, REF, SE, ST
417WBRail Carrier Waybill InterchangeBL, 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
418ICRail Advance Interchange ConsistBAX, 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
419SRAdvance Car DispositionE6, SE, ST, W3, W5
420CHCar Handling InformationE6, E8, SE, ST
421ISEstimated Time of Arrival and Car SchedulingD9, 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
422DMEquipment OrderBCQ, D9, DTM, F9, GA, LE, LQ, LS, LX, N1, N3, N4, N7, N9, NTE, PER, PI, QTY, R2, SCR, SE, ST, YNQ
423RLRail Industrial Switch ListBGN, 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
424SBRail Carrier Services SettlementAMT, BSW, CI, CUR, D9, DTM, ED, F9, MEA, N1, N2, N3, N4, NM1, NTE, PER, SE, ST, SWC, SWD, SWR
425WTRail Waybill RequestD9, F9, SE, ST, ZT
426RWRail Revenue WaybillBL, 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
429RURailroad Retirement ActivityNTE, RU1, RU2, RU3, SE, ST
431RMRailroad Station Master FileDTM, N1, N4, REF, SE, SMB, SMO, SMR, SMS, ST
432RXRail DeprescriptionBGN, BLR, CIC, DRT, DTM, LQ, LX, N9, QTY, SE, ST
433RHRailroad Reciprocal Switch FileBGN, CD, DTM, N1, PI, SE, SMS, ST
434RJRailroad Mark Register Update ActivityBRR, DTM, N1, N2, N3, N4, PER, SE, ST
435RKStandard Transportation Commodity Code MasterCRC, DTM, LEP, LFH, LH2, LH3, LH4, LQ, LX, MSG, N9, SE, SID, ST
436LILocomotive InformationK3, LFI, N7, SE, ST
437RVRailroad Junctions and Interchanges ActivityBJF, DTM, JCT, JS, SE, SID, ST
440WRShipment WeightsBW, G4, G5, SE, ST
451EVRailroad Event ReportCLR, ED, ER, ES, IC, NA, SE, ST
452PLRailroad Problem Log Inquiry or AdviceBGP, DTP, N1, N9, NTE, SE, ST
453STRailroad Service Commitment AdviceAPR, CT, DTP, ISC, ISD, LX, N1, OD, PI, PR, R2, SE, SHR, SR, SSC, ST
455PBRailroad Parameter Trace RegistrationBLR, BTC, D9, DTP, ED, F9, LX, N1, N4, N9, PRM, SE, ST, V9
456EIRailroad Equipment Inquiry or AdviceD9, 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
460TPRailroad Price Distribution Request or ResponseCD, DK, FK, GY, LX, N3, N4, PER, PI, PR, PT, R9, R2B, R2C, RAB, RD, REN, RS, SA, SB, SC, SE, SS, ST
463TPRail Rate ReplyDK, LQ, NTE, REN, SE, ST
466TPRate RequestDK, PI, PR1, PR2, REN, SE, ST
468TPRate Docket Journal LogDK, JL, K1, PI, REN, SE, ST
470RBRailroad ClearanceAMT, BGN, D9, F9, H3, L4, L5, L10, LET, LX, MEA, N1, N2, N3, N4, N7, N9, NTE, PER, R2, SE, ST
475SNRail Route File MaintenanceBGN, DTM, PER, R9, RDD, SE, ST
485TPRatemaking ActionDK, FK, MC, PRI, RA, SA, SC, SE, ST, SW
486TPRate Docket ExpirationDR, PI, REN, SA, SE, ST
490TPRate Group DefinitionCD, DK, GH, GY, N3, N4, PER, PI, PR, PT, REN, SE, ST, TT
492TPMiscellaneous RatesDK, DM, PRI, SC, SE, ST
494TPRail Scale RatesCD, DK, GY, LX, N4, PI, PR, PT, R9, R2B, R2C, RAB, RD, REN, SA, SCL, SE, SS, ST
500MMMedical Event ReportingBGN, CTT, DMG, DTM, HL, LIN, LM, LQ, MEA, MTX, N2, N3, N4, NM1, PER, PID, PWK, QTY, REF, SE, ST, TRN
501WGVendor Performance ReviewAMT, BGN, CRT, DTP, LE, LM, LQ, LS, MEA, N1, N2, N3, N4, NTE, PCT, PER, QTY, REF, SE, SPR, ST
503PHPricing HistoryAMT, BGN, CS, DTM, FOB, LE, LIN, LM, LQ, LS, N1, N2, N3, N4, NTE, PCT, PER, PID, QTY, REF, SE, ST
504CCClauses and ProvisionsBGN, DTP, LM, LQ, MSG, N1, N2, N3, N4, PER, REF, SE, ST
511RNRequisitionBR, 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
517MVMaterial Obligation ValidationBR, DD, FA1, FA2, G61, G62, GF, LM, LQ, N1, N2, N3, N4, N9, QTY, SE, ST
521AOIncome or Asset OffsetAD1, AMT, BGN, BPR, CDS, CUR, DTM, IN2, MSG, N1, N2, N3, N4, NM1, NTE, PAM, PER, REF, SE, ST, TRN
527MDMaterial Due-In and ReceiptAMT, 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
536LRLogistics ReassignmentBR, 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
540ESNotice of Employment StatusBGN, DTM, EMS, ENT, HD, IN2, N1, N2, N3, N4, NM1, PAM, PER, REF, SE, ST, YNQ
561D4Contract AbstractAMT, 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
567D3Contract Completion StatusAMT, BC, CS, G61, G62, LM, LQ, N1, N2, N3, N4, N9, NTE, SE, ST
568D5Contract Payment Management ReportAMT, BAL, BGN, CS, CTT, DTM, FA1, FA2, LM, LQ, LX, N1, N2, N3, N4, N9, PER, QTY, REF, RTE, SE, ST
601SECustoms Export Shipment InformationBA1, DTM, L13, M12, MAN, N1, N2, N3, N4, P5, REF, SE, ST, V5, VEH, VID, X1, YNQ
603EOTransportation Equipment RegistrationBGN, DTM, LQ, MEA, N1, N2, N3, N4, N9, N21, PER, SE, ST, VEH, YNQ
620EXExcavation CommunicationBGN, DTM, EXI, LIE, LM, LQ, MEA, MSG, MTX, N1, N2, N3, N4, NX2, PER, PPA, REF, SE, ST
625WLWell InformationBGN, CID, DTP, HL, LIE, LM, LQ, MEA, MTX, N1, N2, N3, N4, PER, PID, PPA, QTY, REF, SE, ST, YNQ
650MOMaintenance Service OrderAMT, BGN, CLI, COM, DTM, HL, LIN, LM, LQ, MEA, MTX, N1, N2, N3, N4, NM1, PCT, PER, QTY, REF, RPA, SE, SPI, ST, YNQ
715GLIntermodal Group Loading PlanBGN, GR2, GR4, GR5, N4, N7, R4, REF, SE, ST, V1
753RFRequest for Routing InstructionsAT8, BGN, CMC, G62, L11, LX, N1, N2, N3, N4, OID, PER, SE, ST, USI, YNQ
754RGRouting InstructionsAT9, 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
805CPContract Pricing ProposalAMT, BCP, CB1, CBS, CUR, DTM, G61, HL, JIL, LIN, LX, MTX, N1, N2, N3, N4, N9, PD, PDD, PL, REF, SE, SPI, ST
806PJProject Schedule ReportingAMT, BPP, CAL, DTM, MLS, MTX, N1, N2, N3, N4, NM1, PAM, PCT, PER, PID, QTY, REF, RPA, RSC, SE, ST, TID
810INInvoiceAMT, 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,
811CIConsolidated Service Invoice/StatementAMT, 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,
812CDCredit/Debit AdjustmentAMT, BCD, CDD, CUR, DTM, FA1, FA2, FOB, ITD, LIN, LM, LQ, N1, N2, N3, N4, N9, N11, PCT, PER, PO4, SAC, SE, SHD, ST
813TFElectronic Filing of Tax Return DataBPR, BTI, DTM, FGS, IN2, MSG, N1, N2, N3, N4, PER, REF, SE, ST, TFS, TIA, TRN
814GEGeneral Request, Response or ConfirmationAMT, ASI, AWD, BGN, CUR, DTM, FA1, FA2, LCD, LIN, LM, LQ, MTX, N1, N2, N3, N4, N9, NM1, PER, PM, QTY, REF, SE, ST
815CSCryptographic Service MessageCSB, CSC, CSM, DTP, SE, ST
816OROrganizational RelationshipsASI, BHT, CAL, DTM, HL, LQ, N1, N2, N3, N4, PER, QTY, REF, SE, ST
818RPCommission Sales ReportAMT, BSC, CUR, DTM, LIN, N3, N4, N11, NM1, PID, REF, SAL, SCD, SE, ST
819JBJoint Interest Billing and Operating Expense StatementAMT, BOS, CTT, CUR, DTM, ITA, ITD, JID, JIL, MEA, MSG, N1, N2, N3, N4, PER, PID, PSA, QTY, REF, SE, ST, TDS
820RAPayment Order/Remittance AdviceADX, 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
821FRFinancial Information ReportingACT, 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
822AAAccount AnalysisACT, ADJ, BGN, BLN, CTP, CUR, DTM, ENT, LX, N1, N2, N3, N4, PER, RTE, SE, SER, ST
823LBLockboxADX, 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
824AGApplication AdviceAMT, BGN, CTX, DTM, LM, LQ, N1, N2, N3, N4, NM1, NTE, OTI, PER, QTY, RED, REF, SE, ST, TED
826TITax Information ExchangeBTI, DTM, FGS, IN2, N1, N2, N3, N4, PER, REF, SE, ST, TFS, TIA, YNQ
827FRFinancial Return NoticeCUR, DTM, N2, N3, N4, NM1, PER, REF, RIC, SE, ST, TRN
828DADebit AuthorizationAMT, BAU, CTT, DAD, N1, N2, N3, N4, NM1, PER, REF, SE, ST
829PYPayment Cancellation RequestAMT, DTM, PCR, QTY, REF, SE, ST, TRN
830PSPlanning Schedule with Release CapabilityATH, 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,
831CTApplication Control TotalsAMT, BGN, DTM, N9, QTY, SE, ST, TRN
832SCPrice/Sales CatalogAAA, 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,
833MEMortgage Credit Report OrderACT, 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
834BEBenefit Enrollment and MaintenanceACT, 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
835HPHealth Care Claim Payment/AdviceAMT, 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
836RQProcurement NoticesAMT, 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
837HCHealth Care ClaimAMT, 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
838TDTrading Partner ProfileAMT, 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
839PKProject Cost ReportingAMT, BCS, BSD, CAL, CFT, CLI, DLV, DTM, MSG, N1, N2, N3, N4, PAM, PCT, PER, QTY, REF, RPA, SE, ST
840RQRequest for QuotationADV, 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
841SPSpecifications/Technical InformationAMT, 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
842NCNonconformance ReportAMT, 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
843RRResponse to Request for QuotationADV, 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
844CFProduct Transfer Account AdjustmentAMT, BAA, CON, CTT, CUR, DTM, LIN, MEA, N1, N2, N3, N4, N9, NTE, PAD, PER, PID, QTY, RCD, REF, SE, SII, SSS, ST, UIT
845PAPrice Authorization Acknowledgment/StatusAMT, 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
846IBInventory Inquiry/AdviceBIA, 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
847MXMaterial ClaimAMT, BHT, CTP, CTT, CUR, DTM, HL, LIN, MEA, N1, N2, N3, N4, NTE, PER, PID, PKG, QTY, REF, SAC, SE, SHP, ST
848MSMaterial Safety Data SheetBMS, CID, DTM, LIN, LX, MEA, MSG, MSS, N1, N2, N3, N4, NTE, PER, PID, PKG, REF, SD1, SE, ST, STA, TD4, TMD
849CFResponse to Product Transfer Account AdjustmentAAA, AMT, BRC, CON, CTT, CUR, DTM, LIN, MEA, N1, N2, N3, N4, NTE, PAD, PER, PID, QTY, RCD, REF, SE, SSS, ST, UIT
850POPurchase OrderADV, 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,
851LSAsset ScheduleAMT, BLS, CTP, CTT, CUR, DTM, ITA, LIN, LS1, MSG, N1, N2, N3, N4, N9, PAM, PER, PID, PO3, SE, ST, TAX, TXI
852PDProduct Activity DataAMT, CTP, CTT, CUR, DTM, FOB, G95, LIN, N1, N2, N3, N4, N9, PAL, PER, PO4, QTY, SAC, SDQ, SE, ST, TD5, XPO, XQ, ZA
853RIRouting and Carrier InstructionBGN, CTT, FK, G62, MEA, N1, N2, N3, N4, NTE, PER, REF, SE, ST, TD3, TD4, TD5
854DDShipment Delivery Discrepancy InformationBDD, G07, G61, G62, K1, L11, LE, LS, LX, N1, N2, N3, N4, Q8, SE, ST
855PRPurchase Order AcknowledgmentACK, 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,
856SHShip Notice/ManifestAT9, 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,
857BSShipment and Billing NoticeBHT, 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
858SIShipment InformationAXL, 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
859FBFreight InvoiceB3, 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
860PCPurchase Order Change Request - Buyer InitiatedADV, 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,
861RCReceiving Advice/Acceptance CertificateBRA, 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
862SSShipping ScheduleBSS, 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
863RTReport of Test ResultsBTR, 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
864TXText MessageBMG, DTM, MIT, MSG, MTX, N1, N2, N3, N4, PER, REF, SE, ST
865CAPurchase Order Change Acknowledgment/Request - Seller InitiatedACK, 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
866SQProduction SequenceBSS, CTT, DTM, FOB, LIN, MEA, N1, N2, N3, N4, OQS, PER, PID, QTY, REF, SE, SLN, ST, UIT
867PTProduct Transfer and Resale ReportAMT, 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
868MTElectronic Form StructureDAI, DDI, DMI, E01, E03, E10, E13, E20, E22, E24, E30, E34, E40, E41, MSG, QTY, SE, ST
869RSOrder Status InquiryBSI, CTT, DD, DTM, FA1, FA2, GF, HL, LIN, LM, LQ, MEA, N1, N2, N3, N4, NTE, PER, PID, PRF, QTY, REF, SE, ST
870RSOrder Status ReportBSR, 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
872MEResidential Mortgage Insurance ApplicationAMT, 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
873CUCommodity Movement ServicesAMT, BGN, CS, DTM, DTP, LCD, LQ, MEA, N1, N3, N4, N9, PER, QTY, REF, SE, SLN, ST
874CQCommodity Movement Services ResponseBGN, CS, DTM, III, LCD, N1, N3, N4, N9, PER, REF, SE, SLN, ST
875OGGrocery Products Purchase OrderG23, G50, G61, G62, G66, G68, G69, G70, G72, G73, G76, N1, N2, N3, N4, N9, NTE, QTY, SE, SLN, ST
876OGGrocery Products Purchase Order ChangeG23, G61, G62, G66, G68, G69, G70, G72, G73, G76, G92, N1, N2, N3, N4, N9, NTE, QTY, SE, SLN, ST
877CJManufacturer Coupon Family Code StructureBGN, DTM, ENT, G28, G69, LIN, N1, SE, ST
878QGProduct Authorization/De-authorizationCTP, G21, G22, G62, G69, G72, N1, N2, N3, N4, PID, SE, ST
879QGPrice InformationG20, G22, G26, G28, G36, G40, G43, G46, G61, G62, G69, G91, G93, N1, N2, N3, N4, N9, NTE, SAC, SE, ST
880GPGrocery Products InvoiceAMT, 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
881CNManufacturer Coupon Redemption DetailAMT, BGN, G01, G72, G73, LIN, LQ, LX, N1, N2, N3, N4, N9, PER, QTY, REF, SE, ST
882IGDirect Store Delivery Summary InformationG23, G25, G31, G33, G47, G48, G49, G61, G72, G73, N1, N2, N3, N4, N9, SE, ST
883DFMarket Development Fund AllocationAMT, BMA, G43, G61, G62, G95, LIN, LX, N1, QTY, SE, ST, UIT
884MFMarket Development Fund SettlementAMT, BAL, BMP, G61, N1, N9, NTE, QTY, SE, ST
885UARetail Account CharacteristicsDTM, ENT, G13, G18, G29, G30, G53, LM, LQ, N1, N2, N3, N4, N9, PER, RDI, SE, SPR, ST
886UBCustomer Call ReportingCRC, CTP, DTM, ENT, G28, G29, G32, G35, G37, N1, PER, QTY, SE, ST
887CNCoupon NotificationAMT, BGN, DTM, G11, G12, G14, G15, G28, G43, G51, LIN, N1, N2, N3, N4, N9, PCT, PER, QTY, SE, ST
888QGItem MaintenanceBGN, 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
889QGPromotion AnnouncementG22, G23, G42, G43, G45, G46, G51, G61, G62, G69, G94, G95, LX, N1, N2, N3, N4, N9, NTE, QTY, SE, ST
890D4Contract & Rebate Management TransactionAMT, 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
891UDDeduction Research ReportADX, AMT, BGN, ENT, N1, N9, PER, REF, SE, ST
893AMItem Information RequestB2A, DTM, G39, G43, G69, N1, N2, N3, N4, RCR, REF, SE, ST
894DXDelivery/Return Base RecordDTM, G22, G23, G72, G82, G83, G84, G85, G86, LE, LS, MTX, N9, SE, SLN, ST
895DXDelivery/Return Acknowledgment or AdjustmentG22, G23, G72, G84, G85, G86, G87, G88, G89, LE, LS, SE, ST
896QGProduct Dimension MaintenanceG43, G61, G62, ID1, ID2, ID3, N1, N2, N3, N4, N9, NTE, SE, ST
920GCLoss or Damage Claim - General CommoditiesCUR, F01, F02, F04, F05, F09, G61, G62, L11, M7, MAN, N1, N3, N4, NTE, Q7, SE, ST
924GCLoss or Damage Claim - Motor VehicleF01, F02, F07, F12, F6X, SE, ST
925GCClaim TracerF02, F10, SE, ST
926GCClaim Status Report and Tracer ReplyF11, F13, F14, SE, ST, TRN
928AIAutomotive Inspection DetailBIX, ID, SE, ST, TI, VC
940OWWarehouse Shipping OrderAMT, 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,
943ARWarehouse Stock Transfer Shipment AdviceG61, G62, G69, N1, N2, N3, N4, N9, NTE, PER, SE, ST, W03, W04, W06, W10, W20, W27, W28
944REWarehouse Stock Transfer Receipt AdviceG08, G61, G62, G69, LX, MAN, N1, N2, N3, N4, N9, NTE, PAL, PER, SE, ST, TD1, W07, W08, W13, W14, W17, W18, W20
945SWWarehouse Shipping AdviceAMT, 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
947AWWarehouse Inventory Adjustment AdviceAMT, CS, FA1, FA2, G61, G62, G69, LM, LQ, LX, N1, N2, N3, N4, N9, NTE, PER, SE, ST, W15, W19
980 Functional Group TotalsBT1, SE, ST
990GFResponse to a Load TenderB1, L11, SE, ST
993NRSecured Receipt or AcknowledgmentAK1, AK2, APE, S4A, SE, SPE, ST, SVA
996FTFile TransferBGF, K3, SE, ST
997FAFunctional AcknowledgmentAK1, AK2, AK3, AK4, AK5, AK9, SE, ST
998ALSet CancellationSE, ST, ZD
999FAImplementation AcknowledgmentAK1, AK2, AK9, CTX, IK3, IK4, IK5, SE, ST

Updated Wiki: Documentation

$
0
0

Out-of-the-Box Usage:

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:

TokenDescription
{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:

  • To unbundle 837 files into individual claims, use loop ID 2300
  • To unbundle 835 files into individual remittance EOBs, use loop ID 2100
  • If the resulting X12 file is "unreadable" by an EDI application try turning off the whitespace option (see fifth argument)

For further technical explanation of the unbundle feature, see Unbundling an X12 file by Loop ID.

Usage as development tool:

Supported Transaction Sets:

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.

Other Discussions

Other Useful Tools

New Comment on "Unbundling an X12 file by Loop ID"

$
0
0
Are HL-01 and HL-02 updated when the file is split by loop 2300? For example second file would start from HL*1**20*1~ instead of HL*4**20*1~ Thanks

New Comment on "X12 Interchange Model"

$
0
0
When might some instruction on how to modify or create a new X12 document make it to this page?

New Comment on "Documentation"

New Comment on "X12 Interchange Model"

$
0
0
@dstrubhar - Would you like me to provide some documentation on how to create a 270 as an example? Perhaps a reverse engineer of the code above? Also - would you be open to another developer on your project?

New Comment on "X12 Interchange Model"

$
0
0
#dstrubhar - Would you like me to provide some documentation on how to create a 270 as an example? Perhaps a reverse engineer of the code above? Also - would you be open to another developer on your project?

Updated Wiki: Temporary Post Used For Theme Detection (44e7db33-4759-44c8-aa0f-f53b59b9d53b - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

$
0
0

This is a temporary post that was not deleted. Please delete this manually. (2699eb23-2039-4185-ac4d-c4593fafe12c - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring inquiry = @"ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *020816*1144*U*00401*000000031*1*T*:~
    GS*HS*901234572000*908887732000*20070816*1615*31*X*005010X279~
    ST*270*1234*005010X279~
    BHT*0022*13*10001234*20060501*1319~
    HL*1**20*1~
    NM1*PR*2*ABC COMPANY*****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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

image

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring inquiry = @"ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *020816*1144*U*00401*000000031*1*T*:~
    GS*HS*901234572000*908887732000*20070816*1615*31*X*005010X279~
    ST*270*1234*005010X279~
    BHT*0022*13*10001234*20060501*1319~
    HL*1**20*1~
    NM1*PR*2*ABC COMPANY*****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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

image

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.


Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring inquiry = @"ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *020816*1144*U*00401*000000031*1*T*:~
    GS*HS*901234572000*908887732000*20070816*1615*31*X*005010X279~
    ST*270*1234*005010X279~
    BHT*0022*13*10001234*20060501*1319~
    HL*1**20*1~
    NM1*PR*2*ABC COMPANY*****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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

image

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring inquiry = @"ISA*00*          *00*          *01*9012345720000  *01*9088877320000  *020816*1144*U*00401*000000031*1*T*:~
    GS*HS*901234572000*908887732000*20070816*1615*31*X*005010X279~
    ST*270*1234*005010X279~
    BHT*0022*13*10001234*20060501*1319~
    HL*1**20*1~
    NM1*PR*2*ABC COMPANY*****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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

image

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring 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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

image

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring 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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

privatestring 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~";

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Updated Wiki: X12 Interchange Model

$
0
0

X12 Interchange Model

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:

  1. Read an existing X12 file without the use of the XML transformations.
  2. Load an existing X12 file and make modifications without disturbing any segments that you do not explicit change.
  3. Create a new X12 document using a built in or custom transaction specification.


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.

ParsingModel.png

Let's look at how to use these objects with some code samples to work with the following 270 Eligibility Inquiry x12:

INTERCHANGE
ISA *00 **00 **01 *9012345720000*01 *9088877320000*020816 *1144 *U *00401 *000000031 *1 *T *:~
FUNCTION GROUP
GS *HS *901234572000 *908887732000 *20070816 *1615 *31 *X *005010X279~
TRANSACTION
ST *270 *1234 *005010X279~
BHT *0022 *13 *10001234 *20060501 *1319~
Information Source Level
HL *1 * *20 *1~
Information Source Name
NM1 *PR *2 *ABC COMPANY * * * * *PI *842610001~
Information Receiver Level
HL *2 *1 *21 *1~
Information Receiver Name
NM1 *1P *2 *BONE AND JOINT CLINIC * * * * *SV *2000035~
Subscriber Level
HL *3 *2 *22 *0~
TRN *1 *93175-012547 *9877281234~
Subscriber Name
NM1 *IL *1 *SMITH *ROBERT * * * *MI *11122333301~
DMG *D8 *19430519~
DTP *291 *D8 *20060501~
Subscriber Eligibility or Benefit Inquiry
EQ *30~
SE *13 *1234~
GE *1 *31~
IEA *1 *000000031~

Reading an existing X12 file

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.

privatestring 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]
publicvoid Read270Test()
{
    X12Parser parser = newX12Parser();
    Interchange interchange = parser.Parse(newMemoryStream(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."); }

 

Modifying an existing X12 file

See the test  ParseModifyAndTransformBackToX12 for an example of code to modify an existing file.

Creating a new X12 document

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 testCreate270Test in the next release with the test code given above -Read270Test)

privatestring 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~";

 

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)

image

 

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)

image

 

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)

image

 

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):

image

 

To create the HL2 level (Information Receiver)

image

 

For the HL3 Level (Member/Subscriber):

image

 

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.

Viewing all 80 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>