如何验证CCD HL7文档?

时间:2012-10-17 14:15:02

标签: xml validation hl7 ccd

当我有一个示例CCD时,我应该使用:

  1. XSD架构并得出结论我有一个有效的CCD。

  2. 我使用其他一些(非基于模式的)方法。 (除了有效的XML文档之外的UML模型规则。)

  3. 甚至有ccd.xsd这样的事情吗?即使它只是部分指导我创建一个有效的CCD。

4 个答案:

答案 0 :(得分:4)

快速回答您的问题:

A:有一个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的“第1节”型标准。

可以从HL7网站下载完整标准。完整标准是完全标准是免费下载 - 虽然您可能必须注册到该网站(也免费)。 http://www.hl7.org/implement/standards/product_brief.cfm?product_id=6

因为我不知道您有哪些其他资源,我将只使用可从HL7网站获取的支持文件。

验证CCD文档时有两层。首先,您必须进行验证以确保文档是有效的CDA文件,然后您必须进行验证以确保其遵循“CCD实施指南”中概述的实施约束。

为了确保它是有效的CDA文件,有一个CDA.xsd架构附带完整的CCD规范下载。

该标准还附带了一个schematron文件,可将其验证为CCD文档。

在schematron验证器和“实施指南”之间存在分歧的不太可能的情况下,请始终使用“实施指南”。


<强>缩略语

CCD - 护理文件的连续性

CDA - 临床文档架构

RIM - 参考信息模型

作为补充链接,可在此处找到一个非常方便的CCD文档验证在线工具:https://www.lantanagroup.com/validator/

答案 1 :(得分:3)

更推荐使用选项A,其中包括使用具有特定CCD模式源的DocumentBuilder解析XML文档,然后检查验证错误。我建议查看SchematronValidator项目中的XMLValidation类; validXMLUsingXSD(...)方法执行您所描述的内容。有几个地方可以找到有效CCD XML的XSD,但是如果你不知道从哪里开始,你可以在Microsoft HealthVault找到大多数用于CDA / CCR模式的XSD。还有一些其他方法可以使用schematron规则来进一步验证您的CCD文档(请参阅NIST的有意义的使用验证器)。

您正在执行的操作的代码将类似于下面的代码段,其中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;

答案 2 :(得分:2)

我意识到这是一个非常古老的问题,但我想加上我的两分钱。

cdatools.org有一些很好的工具可用于验证CDA文档。由于您正在创建CCD,验证过程将是相同的。

此外,the cdatools infocenter提供了有关不同文档及其要求的精彩信息。

答案 3 :(得分:0)

老问题,但我仍然认为我会回答它,因为我最近正在寻找这个问题的解决方案,最终做了大量的研究。

我尝试使用具有内置API的Everest API来验证各种HL7文档。如果您生成了有效的文档,这是在代码中进行测试的好方法。

NIST提供了一个web服务(以及一个样本客户端!),可以在你的代码中再次使用它来验证CCD / CCDA等文件。

如果您只需要手动验证生成的文档,那么NIST就会another一个。

我希望它有所帮助...