核心功能
- 完整的双向 EDI X12 与 XML 文档处理,支持所有事务集
- 交换头和功能组头的验证与生成
- 支持 997/999 功能确认(ACK)及自动路由
- 提供 HIPAA 合规性所需的 SNIP 验证等高级功能
概览
接收 X12 报文时,X12 端口会验证 X12 交互头部并将 X12 报文转换为 XML。这是一个非常有用的准备步骤,因为 XML 是 用于处理工作流中数据的主要格式。X12 端口自动读取输入文件以确定与报文相匹配的 X12 Schema,然后根据该 Schema 解析报文。 生成 X12 报文时,X12 端口将 XML 文件转化为符合 X12 语法规则的 X12 报文,并应用此端口配置的 X12 交换头信息。这对于创建 X12 报文非常重要,此步骤发生在 XML 数据已在工作流其他位置完成获取和转换之后。可以通过在端口的测试指示符设置中选择 Test Data 来跳过交换头验证。
先决条件
开始之前,请确保已为需要处理的文档类型安装了正确的 Schema。X12 端口本身支持以下 Schema 定义:00401、00403 和 00501。可以在 安装目录的app_data/x12_schemas 目录中找到它们。如果需要不同的 Schema,可以从 官网 免费下载其他 Schema 文件。
下载并解压 zip 存档后,将整个文件夹放入 app_data/x12_schemas 目录下适当命名的子目录中。
端口配置
本节包含所有可配置的端口属性。设置选项卡
转换配置
与端口核心操作相关的设置。EDI 交易伙伴
交换头配置
与 X12 文档的交换头相关的设置。生成文档时,这些设置将作为交换头应用到生成的文档中。解析文档时,交换头设置用于验证传入文档。ACK
与生成和请求确认相关的设置。示例文件选项卡
高级设置选项卡
EDI 分隔符
指定哪些字符作为元素、段等的分隔符。交换头配置
与 X12 交换头相关的其他设置。功能组配置
与 X12 文档的功能组头相关的设置。这些可选标识符可以帮助对类似的交换进行分组或促进组织中的子寻址。高级设置
先前类别中未包含的设置。消息
日志
其他
EDI 交易伙伴选项卡
自动化选项卡
自动化设置
与端口自动处理文件有关的设置。性能
告警选项卡
SLA 选项卡
转换格式
以下各节详细介绍了将 X12 转换为 XML 的过程,以及将 XML 转换为 X12 的过程。X12 转换为 XML
将转换类型设置为 X12 转换为 XML 指示端口将传入的 X12 文档解析为 XML。端口首先读取文档”交换”和”功能组”部分的所有头部信息,并根据配置的端口设置验证它们(除非测试指示符设置为 Test Data)。然后,端口解析文档中使用的特定 X12 Schema,并从磁盘上的x12_schemas 文件夹加载 Schema(其他 Schema 文件可从官网免费下载)。使用该 Schema,端口生成表示文档 X12 结构的 XML,使用文档中的值填充 XML,并以 XML 注释或 XML 元素属性(基于生成描述为的值)的形式为每个值提供上下文。
要使用一组测试 X12 文档查看此过程,请导航到 X12 端口的交易选项卡(将转换类型设置为 X12 转换为 XML)并选择更多 > 创建测试文件。发票、采购订单、采购订单确认和发货通知的 X12 文档会自动生成并放置在交易目录中。端口处理这些测试文件后,导航到交易选项卡以查看生成的 XML。
一旦 X12 报文被转换成 XML,数据就可以通过多种方式进行转换和操作。通常,X12 数据需要存储在数据库或其他后端应用系统中。因为 使用 XML 来表示这些后端系统中的插入,所以存储 X12 数据就变成了简单地将一个 XML 结构映射到另一个 XML 的问题。通常是用可视化设计器驱动 XML Map 端口。
XML 转换为 X12
将转换类型设置为 XML 转换为 X12 指示端口根据文档的 XML 表示形式生成 X12 文档。端口根据从 XML 解析的数据构建 X12 消息后,会根据配置的端口设置添加功能组和交换头部。 要使用一组测试 XML 文件查看此过程,请导航到 X12 端口的交易选项卡(将转换类型设置为 XML 转换为 X12)并选择更多 > 创建测试文件。发票、采购订单、采购订单确认和发货通知的 XML 文件将自动生成并放置在交易目录中。端口处理这些测试文件后,导航到交易选项卡以查看生成的 X12 文档。打印视图
与 XML Map 端口配合使用
上传测试文件
X12 ACK
以下章节详细介绍了三种 X12 ACK,以及 期待、处理和生成 ACK 的方式。交换 ACK、997 和 999
TA1 是一种普遍接受的交换确认形式。这表明双方之间已经发生了数据交换,尽管不一定交换了具体报文。这作为接收方发给发件人的收据,表明接收方已成功收到 EDI 消息,但未指定在处理消息内容时是否存在任何问题。 997(版本 4010)、997(版本 5010)或 999 确认被视为功能性 ACK,即单个消息(例如发票或采购订单)已被接受的确认。这些是根据双方的双向协议生成的。期待 ACK、处理 ACK 和生成 ACK
期待 ACK
X12 端口在 XML 转换为 X12 模式下运行时,可以进行配置,以便可以要求交换和功能确认。在”设置”选项卡的 ACK 部分中选中 TA1 ACK 或 功能 ACK 时,端口将保持传输的”Pending ACK”状态,直到返回并处理相应的 ACK。这意味着端口状态可用于确定收件人是否已确认他们收到了交换。 下图显示了从发票文档期待 ACK 时涉及的逻辑流程:
处理 ACK
在典型的工作流中,X12 ACK 将到达以 X12 转换为 XML 模式运行的 X12 端口。可以将该 X12 端口配置为自动将所有收到的 ACK 路由到最初生成被确认文档的 X12 端口。在流画布上,可以通过将 X12 转换为 XML 模式下 X12 端口底部的灰色点拖动到 XML 转换为 X12 模式下的 X12 端口上,来可视化配置 X12 端口之间的 ACK 路由。 一旦 XML 转换为 X12 模式下的 X12 端口接收到路由的 ACK,会将 ACK 与原始消息进行匹配,并将其状态从 “Pending ACK” 更新为 “Sent”。生成 ACK
当处于 X12 转换为 XML 模式的 X12 端口收到一条消息并生成相应的 XML 时,它可以自动为收到的消息生成确认。为此,请在”设置”选项卡的 ACK 部分中启用 TA1 ACK 和/或Functional ACK expected。必须将这些确认路由到另一个 X12 端口(处于 XML 转换为 X12 模式)以最终确定 ACK。ACK 路由到的端口将应用交换头部,并将 ACK 传递到工作流中的下一个端口,就像其他 X12 消息一样。要适当路由 ACK,请将 X12 转换为 XML 模式下 X12 端口底部边缘的灰色点拖动到 XML 转换为 X12 模式下的 X12 端口上。 下图显示了为收到的发票文档创建 ACK 时涉及的逻辑流程:
主从层次结构:转换 HLLoop
在 EDI 文档中,大多数层次结构关系由 EDI 段的顺序表示。但一些 EDI 结构,例如 HLLoop(见于_预先装运通知_或 X12 856s 中)不遵循此约定,而是将层次结构关系嵌入到 EDI 元素数据本身中,这使得将 EDI 数据转换为 XML 时保留这些层次关系变得困难。 X12 端口通过高级选项卡高级设置中的嵌套主从细节循环设置支持在 HLLoop 中保留层次结构关系。启用后,端口将解析 HLLoop 段中的元素,以确定哪些段”属于”层次关系中的其他段。这些层次结构关系在输出的 XML 中反映为”父子关系”。换句话说,此设置将 EDI 内容隐含的层次结构转换为 XML 结构表示的层次结构。 本节将简要说明如何在 HLLoop 数据中编码层次结构,以及在启用嵌套主从细节循环时如何将此层次结构转换为 XML。HLLoop 层次结构
所有 HL 段均具有两个有助于建立层次结构的值:- ID 值,它标识当前的 HL 段(此值存储在 HL01 或 HL 段中的第一个元素中)
- 父 ID 值,标识当前 HL 段的层次结构父级(此值存储在 HL02 或 HL 段中的第二个元素中)
HLLoop 示例
为了进一步阐明 HLLoop 数据中的层次结构关系,请使用以下 EDI 代码段作为样本输入(仅以 HL 开头的行与确定数据层次结构相关;其余段被包括在内以更紧密地代表实际的 EDI 数据):- 第一个 HL 段的 HL01(ID)的值为 “1”
- 第二个 HL 段的 HL02(父 ID)的值也为 “1”
将 HLLoop 层次结构转换为 XML
启用嵌套主从细节循环时,X12 端口会自动处理 HL 层次结构到 XML 层次结构的转换。端口从 EDI 输入中解析 HL01 和 HL02 元素值,并确保 XML 元素正确嵌套(缩进)在代表其父元素的元素内。 查看 HL 层次结构如何转换为 XML 层次结构,启用嵌套主从细节循环时,将从上面的示例 HL 数据生成以下 XML 输出:宏
示例
X12 操作
除了 提供的操作之外,端口还可以提供将功能扩展到 Script 中的操作。这些端口操作可以像任何其他 Script 操作一样调用,但必须通过connector.rsc 端点调用,并且必须包含身份验证令牌。
下面列出了 X12 端口特定功能的操作。
x12Scan
从 X12 文档的标题中扫描标题值。必须的参数
- file:X12 文件的路径。
可选的参数
- format:文件格式。默认值为 ‘X12’。
输出属性
- InterchangeSenderIdQualifier:发送方 ID(ISA05)限定符。
- InterchangeSenderId:发送方 ID(ISA06)。
- InterchangeReceiverIdQualifier:接收方 ID(ISA07)限定符。
- InterchangeReceiverId:接收方 ID(ISA08)。
- InterchangeControlNumber:唯一标识 EDI 交换的值(ISA13)。
- FunctionalGroupSenderId:功能组配置中发送方 ID(GS02)。
- FunctionalGroupReceiverId:功能组配置中接收方 ID(GS03)。
- DocumentType:文件类型或交易集标识符代码(ST01)。
- StandardVersion:此交换中使用的 X12 标准的主要版本(例如 00401、00501)。
常见错误
以下列出了常见错误,以及原因和建议的解决方案。错误:找不到 Schema 文件([schema 主要版本] [schema 文档类型])
原因 解析 X12 文件时,首先在文件中扫描 EDI 版本和文档类型,以确定在解析过程中使用哪种 Schema。该应用程序包含一组广泛的 JSON 格式的 X12 Schema,存储在应用程序目录的schemas 文件夹中(紧邻 data 文件夹)。
此错误表明应用程序找不到与文件报告的主要版本和文档类型相匹配的 Schema 文件。
如果错误消息中缺少 [schema major version] 值或 [schema document type] 值,则表明 EDI 文档不包含主要版本或文档类型。
否则,这表明 随附的 Schema 定义集中未包含相应的 Schema。
解决
如果 EDI 文件不包含 Schema 主版本或文档类型,请与交易伙伴(或 EDI 文档的其他来源)联系,告知他们这些值必须包含在消息头部中。
否则,请从免费下载页面获取合适的 Schema 版本。下载 Schema 文件夹并将其放置在以下位置之一:
- 在磁盘上的 Schema 文件夹内(例如
<ConnectorDirectory>/Resources/Schemas/) - 如果一个 Schema 被多个端口使用,建议使用如下文件夹结构:
<ApplicationDirectory>/schemas/<type>_schemas/<major version>。在此示例中,<type>应为x12。
错误:第 [line number] 行中标记为 [segment name] 的段在指定 Schema([schema 主要版本] [schema 文档类型])中不处于有效位置。这可能表示输入文件包含顺序错误的段。
原因 解析 X12 文件时,首先在文件中扫描 EDI 版本和文档类型,以确定在解析过程中使用哪种 Schema。该应用程序包含一组广泛的 JSON 格式的 X12 Schema,存储在根安装目录的www\app_data 文件夹中。
此错误表明解析器在文件中遇到的 EDI 段与相关文档 Schema 中定义的段的顺序不匹配。这可能表明几个不同的问题:
- 交易伙伴生成的 EDI 文件有误
- EDI 文件由不同于文件中指示的 Schema 版本生成
- EDI 文件由自定义 Schema 生成
- 在磁盘上的 Schema 文件夹内(例如
<ConnectorDirectory>/Resources/Schemas/) - 如果一个 Schema 被多个端口使用,建议使用如下文件夹结构:
<ApplicationDirectory>/schemas/<type>_schemas/<major version>。在此示例中,<type>应为x12。
- 手动编辑适当的 EDI Schema 文件(在上面的文件路径中找到),以调整段顺序,使其与交易伙伴的 EDI 文件匹配。错误消息指示文件中段与 Schema 定义不同的行。跟踪段顺序的 JSON 定义,直到找到差异为止,然后对 JSON 中的段重新排序以匹配交易伙伴提供的文件。
- 与交易伙伴联系了解 EDI 文件情况。确认文件是根据文件中报告的主要版本生成的,并说明未识别文件中段的顺序。