【问题标题】:Can a <name> tag have a @nullValue and still have text inside?<name> 标签可以有一个@nullValue 并且里面还有文本吗?
【发布时间】:2017-11-21 15:10:52
【问题描述】:

我正在处理的 CCDA 生成器的当前实现在找不到某些名称时在 &lt;name&gt; tag(在标题部分中,没有可用的 &lt;text&gt;)上打印一条消息:

<name>No information</name>

我知道表达未找到信息的正确方法是通过@nullFlavor 属性:

<name nullFlavor="NI" />

但是现在应用程序中有一个组件可以读取标签上的值并将其显示在 CCDA 文档的人类可读视图中。如果我只使用@nullflavor,则显示该名称的字段将为空,而不是“无信息”。

为了避免更改此类组件,我正在考虑添加@nullFlavor 属性仍然让消息出现:

<name nullFlavor="NI">No information</name>

我知道这在语法上是正确的,因为我已经使用 reference validator 对其进行了测试并且它通过了。我的问题是:从语义的角度来看,它有效吗?

【问题讨论】:

    标签: hl7 cda


    【解决方案1】:

    是的,它是有效的。有问题的特定规范 - v3 抽象数据类型,简单地说:

    invariant(ST x) where x.nonNull {
       x.headCharacter.notEmpty;
    };
    

    所以如果没有nullFlavor,就一定有一些内容。但不适用相反的规则;有nullFlavor就可以有内容

    【讨论】:

    • 我找到了datatype specification,上面写着invariant(ANY x) {x.nonNull.equals(x.nullFlavor.isNull);}。考虑到equals 的作用是“当且仅当”以及isNullnonNull 的定义,暗示(在语义上)如果x 具有非空nullFlavor 是正确的,那么x 被视为 null,无论 x 的组件/其他属性如何
    • 是的,无论其他组件如何,它都被视为 null。请注意,这意味着这里的 null 与 3gl 中的空指针不同
    【解决方案2】:

    虽然没有限制,但我的观点是,这不是一个好的策略。我了解您对此组件有限制,但是,当您构建 CDA 时,请务必记住,它是要与所有人共享的东西,我永远不会期望在 nullFlavor 属性中找到内容元素。

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2018-08-16
      • 1970-01-01
      • 2015-06-24
      • 2015-09-01
      相关资源
      最近更新 更多