【问题标题】:Constraining the use of Resources in FHIR限制 FHIR 中资源的使用
【发布时间】:2014-02-05 13:53:57
【问题描述】:

对于给定的实施方案,是否可以以资源配置文件未描述的方式限制系统内资源的使用方式。

多种场景:

 -  explicitly prohibit the use of <contained> resources
 -  explicitly prohibit the use of <modifierExtensions>
 -  explicitly prohibit the use of the narrative <text>

系统上的验证可以清楚地实现上述内容,但是是否可以在“实现一致性配置文件”上宣传这种限制?

【问题讨论】:

  • 更新了问题,因为有些问题在格式中丢失了。

标签: hl7 hl7-fhir


【解决方案1】:

配置文件没有说明一般使用哪些资源,例如“FHIR 端点或客户端支持哪些资源”,因为这将由该服务器或客户端决定。他们在一致性声明中报告了这些功能。

配置文件可以限制合作伙伴之间传递数据时所涉及的资源:例如,观察通常可以在其“主题”属性中引用患者、组、设备或位置。您可以将这些限制为一个子集,并且通过跨资源一致地执行此操作,您有效地限制了交换贸易伙伴需要“了解”他们何时使用该配置文件(并且仅该配置文件)的资源集。

我认为你的第二个子弹漏掉了一些文字,所以我不能评论那个。

规范中提到了叙事:

资源应始终包含支持人类消费的叙述作为后备。然而,在一个严格管理的交易系统中,所有系统共享一个共同的数据模型并且额外的文本是不必要的,甚至存在临床安全风险,叙述可能会被省略。”

例如,如果您查看给定资源的基本配置文件定义(查看http://www.hl7.org/implement/standards/fhir/observation.profile.xml.html),您会看到其中定义的 Observation.text 基数为 0..1,您可以将其配置为 0。 .0 在您的个人资料中明确说明。

这是一个示例配置文件,显示了其中的工具,包括 Lloyd 对使用 XPath 的建议:

<Profile xmlns="http://hl7.org/fhir" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ../../schema/profile.xsd">  
  <!-- stuff removed -->
  <structure>
    <type value="Observation"/>
    <name value="MyConstrainedObservation"/>
    <publish value="true"/>
    <!-- again, elements left out -->
    <element>
      <path value="Observation" />
      <constraint>
        <key value="shorttext" />
        <severity value="error" />
        <human value="Must be short text" />
        <xpath value="string-length(f:text) < 100" />
      </constraint>              
    </element>
    <element>
      <path value="Observation.modifierExtension"/>
      <definition>
        <min value="0" />
        <max value="0" />
      </definition>
    </element>
    <element>
      <path value="Observation.text"/>
      <definition>
        <short></short>
        <formal></formal>
        <min value="0" />
        <max value="1" />
        <condition value="shorttext" />
      </definition>
    </element>
    <!-- elements left out -->
    <element>
      <path value="Observation.subject"/>
      <definition>
        <type>
          <code value="Resource(Patient)"/>
          <aggregation value="bundled" />
          <aggregation value="referenced"/>
        </type>       
      </definition>
    </element>
    <!-- more stuff -->
  </structure>
</Profile>

此配置文件首先定义了一个限制文本长度的 XPath 约束(仅作为示例),然后将 Observation.modifierExtension 的基数限制为 0..0,从而有效地禁止了它的使用。此外,它将 Observation.subject 限制为仅引用患者(因此您可能会避免在交流中使用设备等)并指定只能引用或捆绑这些患者(在消息、文档或交易中),但不能使用 .

显然,我在这里所做的也可以使用 Observation.text 和 Observation.contained 来完成。您拥有结构(基数)和可执行(xpath)两种方式来限制您可以使用的内容。

【讨论】:

  • 我已更新问题以填补空白。就 FHIR 而言,我想要禁止的所有区域都是可选的。我的问题是如何明确声明不应使用它们。
  • 因此,对于您要禁止叙述的每个资源,您将 ResourceX.text 限制为最大基数为 0。ResourceX.modifierExtension 的同义词。您可以对 ResourceX.contained 使用相同的原则,但在约束 ResourceReferences 时会有更多的控制。首先,您需要意识到包含的资源只有在被 ResourceReference 引用时才会出现,它们不能是孤立的。其次,您可以限制 ResourceReference,使其不能引用包含的资源。如果您以这种方式约束所有 ResourceReferences,则不会出现包含的资源。
【解决方案2】:

我相信您会将此添加到您的 conformance 文档中

【讨论】:

  • 也许可以,但我看不出这将在一致性资源定义中的位置。
  • 你能完成一个场景吗?系统是什么?您是否接收或发送文件?
【解决方案3】:

在配置文件中,还可以通过使用 Profile/structure/element/definition/constraint 来约束任何这些元素。例如,要禁止对 Patient 进行叙述,您可以定义一个具有“Patient”类型结构的 Profile,并在根“Patient”元素上包含一个带有 xpath“not(f:text)”的约束

这仍然需要在每个资源的基础上完成。

另一种选择是在您的 Conformance 资源上定义一个 isModifier 扩展,该扩展声明您不支持任何资源上的 isModifier 或 text 或任何内容。虽然在实践中,这只是意味着大多数系统不知道如何读取您的一致性资源,因此根本不知道如何与您交谈。

一些建议: 请记住,任何此类限制都会极大地限制您与广泛社区进行互操作的能力,尽管它们可能适用于非常有限的环境。

使用 isModifier,人们普遍认为大多数系统会拒绝包含它们无法识别的 isModifier 的实例,因此如果您无法识别任何修饰符扩展,拒绝包含它们的实例不需要任何特殊声明 - 这是正常的行为。

对于文本,最好设置一个约束,说明必须生成叙述,而不是完全禁止它。生成的叙述可以安全地被忽略,与完全拒绝任何叙述的实例相比,您更本着 FHIR 一致性的精神这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2015-06-20
    相关资源
    最近更新 更多