如何验证CCD HL7文档?

use*_*rJT 4 xml validation hl7 ccd

以CCD为例,应该使用:

  1. 一个XSD模式,并得出结论,我有一个有效的CCD。

    要么

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

有没有这样的事情ccd.xsd?即使只是部分指导我创建有效的CCD。

Eri*_*ric 5

快速回答您的问题:

答:有一个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/

  • 欢迎使用堆栈溢出。通常,链接答案不被接受。但是,此问题已经吸引了许多工具建议答案(该站点上通常也不接受)。我认为您没有理由不赞成。我对所讨论的技术不熟悉,无法验证任何答案,因此我将其保留。 (2认同)

Set*_*lan 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;
Run Code Online (Sandbox Code Playgroud)