This appendix provides the contents of the X12OTDErrors.xsd file, which is the XML schema file the validation output string conforms to and also includes a sample of validation output XML. For more information, refer to ASC X12 Validation Support and performValidation. This appendix also contains a sample for identifying segment IDs using local codes.
This appendix. contains the following topics:
<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Tony (TechLeader) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="X12OTDErrors"> <xs:annotation> <xs:documentation>Validation Errors from an X12 OTD validation</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="X12ICError" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="X12FGError" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="X12TSError" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="X12DataError" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="X12ICError"> <xs:annotation> <xs:documentation>Interchange Envelope Validation Error Structure. For TA1 generations</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="InteContNumb" type="xs:string"/> <xs:element name="InteContDate" type="xs:string"/> <xs:element name="InteContTime" type="xs:string"/> <xs:element name="InteNoteCode" type="xs:string"/> <xs:element name="ICErrorDesc" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="X12FGError"> <xs:annotation> <xs:documentation>Functional Group Envelope Validation Error Structure. For AK1AK9 generations</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="FuncIdenCode" type="xs:string"/> <xs:element name="GrouContNumb" type="xs:string"/> <xs:element name="NumbOfTranSetsIncl" type="xs:string"/> <xs:element name="FuncGrouSyntErroCode" type="xs:string"/> <xs:element name="FGErrorDesc" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="X12TSError"> <xs:annotation> <xs:documentation>Transaction Set Envelope Validation Error Structure. For AK2AK5 generations</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="TranSetIdenCode" type="xs:string"/> <xs:element name="TranSetContNumb" type="xs:string"/> <xs:element name="TranSetSyntErroCode" type="xs:string"/> <xs:element name="TSErrorDesc" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="X12DataError"> <xs:annotation> <xs:documentation>Transaction Set (excluding envelopes) Validation Error Structure. For AK3AK4 generations</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Level" type="xs:short" minOccurs="0"/> <xs:element name="SegmIDCode" type="xs:string"/> <xs:element name="SegmPosiInTranSet" type="xs:int"/> <xs:element name="LoopIdenCode" type="xs:string" minOccurs="0"/> <xs:element name="SegmSyntErroCode" type="xs:short" minOccurs="0"/> <xs:element name="ElemPosiInSegm" type="xs:short"/> <xs:element name="CompDataElemPosiInComp" type="xs:short" minOccurs="0"/> <xs:element name="DataElemRefeNumb" type="xs:string" minOccurs="0"/> <xs:element name="DataElemSyntErroCode" type="xs:short"/> <xs:element name="CopyOfBadDataElem" type="xs:string" minOccurs="0"/> <xs:element name="RepeatIndex" type="xs:short" minOccurs="0"/> <xs:element name="ErrorCode" type="xs:int"/> <xs:element name="ErrorDesc" type="xs:string" minOccurs="0"/> <xs:element name="Severity" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> |
<X12OTDErrors> <X12ICError> <InteContNumb>000000001</InteContNumb> <InteContDate>041102</InteContDate> <InteContTime>1441</InteContTime> <InteNoteCode>021</InteNoteCode> <ICErrorDesc>Invalid Number of Included Groups Value</ICErrorDesc> </X12ICError> <X12FGError> <FuncIdenCode>PO</FuncIdenCode> <GrouContNumb>1</GrouContNumb> <NumbOfTranSetsIncl>2</NumbOfTranSetsIncl> <FuncGrouSyntErroCode>5</FuncGrouSyntErroCode> </X12FGError> <X12FGError> <FuncIdenCode>PO</FuncIdenCode> <GrouContNumb>1</GrouContNumb> <NumbOfTranSetsIncl>2</NumbOfTranSetsIncl> <FuncGrouSyntErroCode>4</FuncGrouSyntErroCode> <FGErrorDesc>Number of Included Transaction Sets Does Not Match Actual Count</FGErrorDesc> </X12FGError> <X12TSError> <TranSetIdenCode>850</TranSetIdenCode> <TranSetContNumb>0001</TranSetContNumb> <TranSetSyntErroCode>4</TranSetSyntErroCode> <TSErrorDesc>Number of Included Segments Does Not Match Actual Count</TSErrorDesc> </X12TSError> <X12DataError> <Level>1</Level> <SegmIDCode>MEA</SegmIDCode> <SegmPosiInTranSet>21</SegmPosiInTranSet> <LoopIdenCode/> <SegmSyntErroCode>8</SegmSyntErroCode> <ElemPosiInSegm>4</ElemPosiInSegm> <DataElemRefeNumb>C001</DataElemRefeNumb> <DataElemSyntErroCode>10</DataElemSyntErroCode> <ErrorCode>15025</ErrorCode> <ErrorDesc>MEA_4 at 21: [Syntax rule E-Exclusion: One or None] Exclusion condition violated because E0412</ErrorDesc> <Severity>ERROR</Severity> </X12DataError> <X12DataError> <Level>1</Level> <SegmIDCode>N4</SegmIDCode> <SegmPosiInTranSet>195</SegmPosiInTranSet> <LoopIdenCode>N1</LoopIdenCode> <SegmSyntErroCode>8</SegmSyntErroCode> <ElemPosiInSegm>7</ElemPosiInSegm> <DataElemRefeNumb>1715</DataElemRefeNumb> <DataElemSyntErroCode>10</DataElemSyntErroCode> <CopyOfBadDataElem>CNT</CopyOfBadDataElem> <ErrorCode>15025</ErrorCode> <ErrorDesc>N1_N4_7 at 195 [CNT]: [Syntax rule E-Exclusion: One or None] Exclusion condition violated because E0207</ErrorDesc> <Severity>ERROR</Severity> </X12DataError> </X12OTDErrors> |
This is an example of a customized definition of a X12 transaction set 814 of v4010. The .SETS section of the SEF file is:
.SETS 814=^[ST,M][BGN*8,M][.CUR]{:>1+5[.FA1]+1[FA2,M,>1]}{:>1+4[N1*12@192]+10[.N2, ,2][N3*5,,2][N4*23][.PER*1,,>1][.REF,,>1][.DTM,,>1]}{:>1-60[N1*5@58]+10[.N2, ,2][.N3,,2][.N4][.PER,,>1][.REF,,>1][.DTM,,>1]}{:>1-60[N1*5@151]+10[.N2,,2][ .N3,,2][.N4][.PER,,>1][.REF,,>1][.DTM,,>1]}{:>1-60[N1*13@51]+10[.N2,,2][.N3, ,2][.N4][.PER,,>1][.REF,,>1][.DTM,,>1]}^{:>1[LIN*4@176][ASI*1@14][REF*9@172, ,>1]+0[REF*9,,>1][REF*10@200,,>1][.REF*10@181,,>1][REF*12@177,,>1][REF*12@18 2,,>1][REF*10@178,,>1]+10[DTM*6@76,,>1][.CUR@17][.AMT*1@82,,>1]+0[.AMT*1@81, ,>1][.AMT*1@80,,>1][.AMT*1@79,,>1][.AMT*1@18,,>1]+10[.PM]{:>1+5[.FA1]+1[FA2, M,>1]}{:>1+4[NM1*3]+10[.N2,,2][.N3,,2][.N4][.PER,,>1][REF*14@87,,>1]+0[REF*1 4@86,,>1][REF*10@93,,>1][REF*10@88,,>1][REF*10@92,,>1][REF*10@169,,>1][REF*1 5@179,,>1][REF*16@89,,>1]+10[DTM*10@28,,>1]}}[SE,M] |
The same definition may also be viewed in a third—party application such as EDISIM 5.0 (see figure Figure A–1). Multiple N1 segments as well as REF segments are customized so that they are adjacent to each other in a tandem fashion. Local codes for these adjacent segments must be used for parsing a message. Therefore, the Segment IDs Using Local Codes field must have a N1,REF value (a list of segment IDs separated by commas).