【发布时间】:2012-10-17 14:15:02
【问题描述】:
当我有一个示例 CCD 时,我应该使用:
-
一个 XSD 架构并得出结论,我有一个有效的 CCD。
或
我使用其他一些(非基于模式的)方法。 (除了有效的 XML 文档之外的 UML 模型规则。)
还有ccd.xsd这样的东西吗?即使它只是部分指导我创建一个有效的 CCD。
【问题讨论】:
标签: xml validation hl7 ccd
当我有一个示例 CCD 时,我应该使用:
一个 XSD 架构并得出结论,我有一个有效的 CCD。
或
我使用其他一些(非基于模式的)方法。 (除了有效的 XML 文档之外的 UML 模型规则。)
还有ccd.xsd这样的东西吗?即使它只是部分指导我创建一个有效的 CCD。
【问题讨论】:
标签: xml validation hl7 ccd
快速回答您的问题:
答:有一个 XSD 模式,但只是为了确保文档是否是有效的 CDA 文档(这意味着它只验证 CDA RIM,而不是 CCD 实施指南)
B: 不基于模式的方法是使用 schematron,并且 ccd.sch 确实随 HL7 提供的标准一起提供。这是验证其为有效 CCD 文档的最佳方式。
C:据我所知,没有 ccd.xsd 这样的东西。
背景
这里有一些关于如何从 HL7 获取 CCD 标准的背景和说明。获取标准还会为您提供 CDA.xsd 和 CCD.sch 用于文件验证。
CCD 是从 CDA RIM 派生的特定实现。 CCD 和 CDA 都是由 HL7 维护的标准。 CCD 目前是 HL7 的“Section 1”类型标准。
完整的标准可以从 HL7 网站下载。完整标准是免费下载的完整标准 - 尽管您可能必须注册到该站点(也是免费的)。 http://www.hl7.org/implement/standards/product_brief.cfm?product_id=6
因为我不知道你们还有什么其他资源可用,所以我将只使用可以从 HL7 网站获得的支持文件。
验证 CCD 文档有两层。首先,您必须验证以确保文档是有效的 CDA 文件,然后您必须验证以确保它遵循 CCD 实施指南中概述的实施约束。
为确保它是有效的 CDA 文件,完整的 CCD 规范下载附带了一个 CDA.xsd 架构。
该标准还附带一个 schematron 文件,以将其验证为 CCD 文档。
在 schematron 验证器和实施指南之间存在分歧的不太可能的情况下,请始终使用实施指南。
首字母缩略词
CCD - 护理文件的连续性
CDA – 临床文档架构
RIM – 参考信息模型
作为补充链接,可以在这里找到一个非常方便的 CCD 文档验证在线工具:https://www.lantanagroup.com/validator/
【讨论】:
更推荐使用选项 A,它涉及使用具有特定 CCD 架构源的 DocumentBuilder 解析 XML 文档,然后检查验证错误。我建议查看SchematronValidator 项目中的 XMLValidation 类; validXMLUsingXSD(...) 方法执行您所描述的操作。有几个地方可以找到有效 CCD XML 的 XSD,但如果您不知道从哪里开始,您可以在 Microsoft HealthVault 找到大多数用于 CDA/CCR 架构的 XSD。还有一些其他方法可以使用 schematron 规则来进一步验证您的 CCD 文档(请参阅 NIST 的有意义的使用验证器)。
您正在执行的代码将类似于下面的 sn-p,其中 schemaLocation 是您的 XSD 文件位置。 ErrorHandler 将存储任何验证错误。
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
docFactory.setNamespaceAware(true);
docFactory.setValidating(true);
docFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
docFactory.setAttribute(JAXP_SCHEMA_SOURCE, schemaLocation);
docFactory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = null;
try {
builder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
return null;
}
builder.setErrorHandler(handler);
Document doc = null;
try {
doc = builder.parse(xml);
} catch (SAXException e) {
System.out.println("Message is not valid XML.");
handler.addError("Message is not valid XML.", null);
e.printStackTrace();
} catch (IOException e) {
System.out.println("Message is not valid XML. Possible empty message.");
handler.addError("Message is not valid XML. Possible empty message.", null);
e.printStackTrace();
}
return doc;
【讨论】:
我意识到这是一个很老的问题,但我也想加两分钱。
cdatools.org 有一些用于验证 CDA 文档的好工具。由于您正在创建 CCD,因此验证过程将是相同的。
此外,the cdatools infocenter 提供有关不同文件及其要求的精彩信息。
【讨论】:
老问题,但我仍然认为我会回答它,因为我最近一直在寻找解决这个问题的方法并最终进行了大量研究。
我尝试使用 Everest API,它有一个内置 API 来验证各种 HL7 文档。如果您生成了有效的文档,这是在代码中测试的好方法。
NIST 提供了一个 Web 服务(以及一个示例客户端!),可用于(再次在您的代码中)验证 CCD/CCDA 等文档。
如果您只需要手动验证生成的文档,那么 NIST 有 another 一个。
希望对你有帮助……
【讨论】: