限制在FHIR中使用资源

时间:2014-02-05 13:53:58

标签: hl7 hl7-fhir

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

许多场景:

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

对系统的验证可以清楚地实现上述内容,但是,如果说“实施一致性配置文件”,是否就此限制做广告?

3 个答案:

答案 0 :(得分:1)

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

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

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

该规范讲述了叙事:

  

资源应该总是包含叙述,以支持人类消费作为后备。但是,在严格管理的交易系统中,所有系统共享一个共同的数据模型,并且不需要额外的文本或甚至是临床安全风险,可以省略叙述。“

例如,如果查看给定资源的基本配置文件定义(请查看http://www.hl7.org/implement/standards/fhir/observation.profile.xml.html),您会看到在其中使用基数0..1定义了Observation.text,您可以将其分析为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)意味着限制你可以使用的内容。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

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

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

至于文本,最好放置一个约束,说明必须生成叙述而不是完全禁止它。生成的叙事可以被安全地忽略,你更多地遵循FHIR一致性的精神,而不是拒绝任何叙述的实例。