首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MDHT从CCDA文件中读取<text>节点值

如何使用MDHT从CCDA文件中读取<text>节点值
EN

Stack Overflow用户
提问于 2013-04-25 14:22:56
回答 1查看 2.6K关注 0票数 2

我正在使用MDHT解析CCDA文件的xml值。但我无法读取值Non-contributory表单<text> <paragraph>Non-contributory</paragraph></text>。考虑以下xml内容:

家族史

代码语言:javascript
复制
  <component>
    <section>
      <!--  Family history section template  -->
      <templateId root="2.16.840.1.113883.10.20.22.2.15"/>
      <code code="10157-6" displayName="Family History" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
      <title>FAMILY HISTORY</title>
      <text>
        <paragraph>Non-contributory</paragraph>
      </text>
    </section>
  </component>

`

如有任何网址或参考资料,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-12-25 09:09:07

您不需要解析文本元素。CCDA文档中的文本元素用于使其具有可读性。各节的条目元素中也将显示相同的值。

编辑:下面的代码可能会有所帮助

代码语言:javascript
复制
    package org.openhealthtools.mdht.uml.cda.consol.tests;

import java.io.FileInputStream;
import java.util.Stack;

import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.util.FeatureMap.Entry;
import org.eclipse.emf.ecore.xml.type.AnyType;
import org.openhealthtools.mdht.uml.cda.ClinicalDocument;
import org.openhealthtools.mdht.uml.cda.StrucDocText;
import org.openhealthtools.mdht.uml.cda.consol.AllergiesSection;
import org.openhealthtools.mdht.uml.cda.consol.ConsolPackage;
import org.openhealthtools.mdht.uml.cda.consol.ContinuityOfCareDocument;
import org.openhealthtools.mdht.uml.cda.util.CDAUtil;
import org.openhealthtools.mdht.uml.cda.util.ValidationResult;

public class Main {
    public static void main(String[] args) throws Exception {
        ConsolPackage.eINSTANCE.eClass(); // static package registration

        ClinicalDocument clinicalDocument = CDAUtil.load(
            new FileInputStream("samples/CCD.sample.xml"), (ValidationResult) null);
        if (clinicalDocument instanceof ContinuityOfCareDocument) {
            ContinuityOfCareDocument ccd = (ContinuityOfCareDocument) clinicalDocument;

            AllergiesSection allergiesSection = ccd.getAllergiesSection();

            StrucDocText text = allergiesSection.getText();
            traverse(text.getMixed());
        }

    }

    private static void traverse(FeatureMap root) {
        Stack<FeatureMap> stack = new Stack<FeatureMap>();
        stack.push(root);
        while (!stack.isEmpty()) {
            FeatureMap featureMap = stack.pop();
            for (int i = featureMap.size() - 1; i >= 0; i--) {
                Entry entry = featureMap.get(i);
                if (entry.getEStructuralFeature() instanceof EReference) {
                    System.out.println(entry.getEStructuralFeature().getName() + " {");
                    AnyType anyType = (AnyType) entry.getValue();
                    traverseAttributes(anyType.getAnyAttribute());
                    stack.push(anyType.getMixed());
                } else {
                    if (entry.getValue() != null) {
                        String value = entry.getValue().toString();
                        if (value.trim().length() > 0) {
                            System.out.println(" " + value + " }");
                        }
                    } else {
                        System.out.println(" }");
                    }
                }
            }
        }
    }

    private static void traverseAttributes(FeatureMap anyAttribute) {
        for (Entry entry : anyAttribute) {
            System.out.println("attr name: " + entry.getEStructuralFeature().getName() + ", attr value: " +
                    entry.getValue().toString());
        }
    }
}

//此代码的控制台输出为:

代码语言:javascript
复制
table {
attr name: border, attr value: 1
attr name: width, attr value: 100%
tbody {
thead {
tr {
th {
th {
th {
 Substance }
 Reaction }
 Status }
tr {
tr {
tr {
td {
td {
td {
 Penicillin }
content {
attr name: ID, attr value: reaction1
 Hives }
 Active }
td {
td {
td {
 Aspirin }
content {
attr name: ID, attr value: reaction2
 Wheezing }
 Active }
td {
td {
td {
 Codeine }
content {
attr name: ID, attr value: reaction3
 Nausea }
 Active }

参考文献:链接

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16217339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档