将 XML 转换为 X12 和 X12 转换为 XML 的最佳方法

Posted

技术标签:

【中文标题】将 XML 转换为 X12 和 X12 转换为 XML 的最佳方法【英文标题】:Best way to convert XML to X12 and X12 to XML 【发布时间】:2010-10-01 17:58:19 【问题描述】:

正在寻找将 XML 转换为 X12(270 - 医疗资格请求)然后将 X12 响应(271 - 资格响应)转换回 XML 的工具/库。这将嵌入到服务器应用程序中(将考虑任何目标语言)。我曾想过编写自己的 X12 解析器和生成器,但这个项目很可能会扩展到其他 X12 事务,我想找到一个可扩展的解决方案。

【问题讨论】:

【参考方案1】:

我遇到了这个: OopFactory X12 解析器 - https://x12parser.codeplex.com/releases/view/106524

难以置信。源代码结构良好,一切都建立在第一次打开的基础上,甚至还有单元测试。

拉入我的项目,它转换了我尝试过的所有文件。

它包含一个可以运行的命令行 exe - 但作为一个 .Net 用户,这个库确实令人印象深刻。

-更新-

简短的版本可以归结为这样的:

var fstream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
var parser = new X12Parser();
var interchange = parser.ParseMultiple(fstream).First();
var x12Xml = interchange.Serialize();

【讨论】:

也考虑使用它。您是否提取了二进制文件或源代码?例如,您如何完成构建 x12 270 资格请求? 更新了我的帖子,艾萨克 所以您使用OopFactory 解析您收到的x12 文件;不是为了生成x12 发送出去? 另外,您没有提到:您是构建源代码还是使用二进制文件? 我使用了二进制文件,这是正确的 - 我只是在读取 x12 文件。我很确定这些库也允许从包含的类中生成 x12。【参考方案2】:

我最终创建了自己的 XML x12 转换工具。我遇到了一些商业产品(其中一个来自 EtaSoft,值得一试,因为他们的文档很好),但最终本土解决方案的优势太大了。

我确实使用了来自X12::Parser 的配置文件作为 X12 解析器的基础,基本上将配置文件转换为代码,并消除了管理配置文件的开销和错误处理,这些配置文件在理论上几乎永远不会改变。

【讨论】:

【参考方案3】:

我可以谈论的一个你应该不惜一切代价避免的产品是 EcMap。在我自己在 EDI 部门的工作中已经有大约一年的使用经验,我可以说我很少看到一个应用程序的界面设计得更差(也许 Lotus Notes 除外)、更混乱的用户文档和绝对荒谬的许可计划。它本质上是按 CPU 授权的(CPU 是指核心,所以如果你有一个新的四核 CPU,你真的会很兴奋),根据我听到的最后一个报价,每个许可证超过 10K。

【讨论】:

【参考方案4】:

看pyx12。

它包括 X12 到 XML 和 XML 到 X12 的脚本。

为什么选择 Python?因为您经常需要自定义 X12 文档来处理付款人和提供者之间允许的差异。

【讨论】:

我在某处(不记得在哪里)看到 pyx12 没有得到很好的支持,并且代码和/或映射很复杂。你真的用过pyx12吗?如果有,您对它的印象如何? 博客条目:homepage.mac.com/s_lott/iblog/architecture/C465799452/…、homepage.mac.com/s_lott/iblog/architecture/C465799452/…、homepage.mac.com/s_lott/iblog/architecture/C465799452/… X12 是复杂的。 pyx12 可以很好地应对复杂性。反正我自己滚了。但我研究了他们的代码,看看他们做了什么以及为什么。 “被微弱的赞美诅咒”这个表达似乎适用于此。你的代码呢——有发布它的计划吗? 结果如何?我在同一条船上。谢谢!【参考方案5】:

这里是使用pyx12 写入 XML 文件的示例

import pyx12.x12n_document
fd_source = "/path/to/edi/file"
output_file = "result.xml"
with open(output_file, 'w') as fd_xml:
    result = pyx12.x12n_document.x12n_document(param=param, src_file=fd_source,
                                               fd_997=None, fd_html=None, fd_xmldoc=fd_xml, xslt_files=None)

【讨论】:

param 传递的内容是什么?

以上是关于将 XML 转换为 X12 和 X12 转换为 XML 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

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

任何人翻译 X12 271 医疗保健响应 [关闭]

EDI 格式

将ASCII TEXT转换为二进制

PAT-BCD解密

如何用多项式 x16 + x12 + x5 + 1 计算 CRC 16