EDI X12 版本 4010 消息 - 非复合元素可以包含子元素分隔符吗?

Posted

技术标签:

【中文标题】EDI X12 版本 4010 消息 - 非复合元素可以包含子元素分隔符吗?【英文标题】:EDI X12 version 4010 message - can non-composite elements contain sub-element separator character? 【发布时间】:2011-03-12 01:58:12 【问题描述】:

版本 4010 x12 消息支持具有复合元素的段(如 REF04),其中包含由子元素分隔符分隔的子元素。 这是一个使用 ; [分号] 作为段分隔符,* 作为元素分隔符, : [冒号] 作为子元素分隔符: REF*ACT*12345678901234*会计代码*3X:子合同编号1234567;

我的问题是:如果消息中有另一个段(例如 N1)不是复合元素并且它恰好包含子元素分隔符,那么消息应该是: a.) 接受,这意味着 N102 中的子元素分隔符(参见示例)被忽略并被视为元素数据的一部分的常规字符 b.) 被拒绝,因为子元素分隔符只能出现在复合元素内部,因此不能出现在 N1 段中。

示例(使用与上述相同的分隔符 - 请注意,冒号作为数据的一部分出现在 N102 中): N1*PE*TEST:第一方;

任何意见都会有所帮助。

【问题讨论】:

【参考方案1】:

根据您描述的情况,我会拒绝交易。它违反了 X12 标准,可能会导致大多数 EDI 翻译器或解析器出错。

X12 标准对子元素分隔符 (ISA16) 等分隔符有这样的规定:

一旦在交汇处指定 标题,分隔符不是 用于其他地方的数据元素值 在交汇处。

假设这是一个入站交易,您的贸易伙伴应采取措施确保他们发送给您的所有数据都不会包含与元素分隔符、子元素分隔符或段终止符相同的任何字符。如果子元素分隔符是一个冒号,并且在它们的数据中不能避免冒号,那么应该使用另一个子元素分隔符。

顺便说一句,我会小心使用分号作为段终止符。这是一个经常出现在数据中的字符(例如地址、产品描述等)。

一开始可能看起来很困难,但从长远来看,X12 标准极大地促进了数据交换。

【讨论】:

【参考方案2】:

摘自我的 HIPAA ANSI 4010 270/271 指南(已添加重点):

这个用户 实施指南应注意 应用系统可以使用的 内的一些有效分隔符 应用程序数据。 发生次数 传输中的分隔符 数据元素中的数据可能会导致 翻译程序中的错误。 内存在星号 (*) 传输的应用程序数据是一个 可能影响的已知问题 翻译软件。翻译软件。

我从经验中知道,要让贸易伙伴更新他们的 ANSI 生成应用程序以从字段数据中过滤分隔符是很困难的。要求他们这样做确实是正确的做法。如果他们不能或不愿意,那么您可能必须在您的主要翻译前面放置某种预处理器。

【讨论】:

以上是关于EDI X12 版本 4010 消息 - 非复合元素可以包含子元素分隔符吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解 EDI 文件?

PHP EDI X12 解析

EDI X12 855 采购订单确认

EDI X12 856 是不是有官方的 XML 模式 (xsd)?

使用 C# 实现 EDI X12

关于标准EDI/B2B标准的X12标准