You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于FHIR Basic资源扩展自定义人体模型StructureDefinition的技术问询

基于Basic资源扩展的StructureDefinition实现方案

1. 核心思路

因为FHIR没有直接支持动态键值对的原生字段,我们可以通过可重复的复合扩展来实现需求:基于Basic资源扩展,添加固定的title字段,再定义一个能重复的attribute扩展,每个扩展实例包含key和value两个子字段(value支持多类型适配未知属性)。

2. 顶层StructureDefinition(生物力学模型资源)

先定义扩展后的Basic资源结构,通过切片(slice)区分不同扩展类型:

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="BiomechanicalModel"/>
  <url value="http://your-project-domain/StructureDefinition/BiomechanicalModel"/>
  <name value="BiomechanicalModel"/>
  <status value="active"/>
  <kind value="resource"/>
  <abstract value="false"/>
  <type value="Basic"/>
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Basic"/>
  <derivation value="constraint"/>
  
  <differential>
    <element id="Basic">
      <path value="Basic"/>
      <short value="生物力学人体模型"/>
      <definition value="患者运动传感器数据生成的预计算生物力学模型"/>
    </element>
    
    <!-- 约束:必填的title扩展 -->
    <element id="Basic.extension:title">
      <path value="Basic.extension"/>
      <sliceName value="title"/>
      <min value="1"/>
      <max value="1"/>
      <type>
        <code value="Extension"/>
        <profile value="http://your-project-domain/StructureDefinition/bio-model-title"/>
      </type>
    </element>
    
    <!-- 约束:可重复的attributes扩展 -->
    <element id="Basic.extension:attributes">
      <path value="Basic.extension"/>
      <sliceName value="attributes"/>
      <min value="0"/>
      <max value="*"/>
      <type>
        <code value="Extension"/>
        <profile value="http://your-project-domain/StructureDefinition/bio-model-attribute"/>
      </type>
    </element>
  </differential>
</StructureDefinition>

3. 子扩展定义

3.1 bio-model-title(模型标题扩展)

存储可读标题的简单字符串扩展:

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="bio-model-title"/>
  <url value="http://your-project-domain/StructureDefinition/bio-model-title"/>
  <name value="BioModelTitle"/>
  <status value="active"/>
  <kind value="complex-type"/>
  <type value="Extension"/>
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/>
  <derivation value="constraint"/>
  
  <differential>
    <element id="Extension">
      <path value="Extension"/>
      <short value="模型标题"/>
      <definition value="生物力学模型的可读名称,如'深蹲动作生物力学分析模型'"/>
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/>
      <min value="1"/>
      <type>
        <code value="string"/>
      </type>
    </element>
  </differential>
</StructureDefinition>

3.2 bio-model-attribute(键值对属性扩展)

这是动态属性的核心,包含key和value两个子扩展:

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="bio-model-attribute"/>
  <url value="http://your-project-domain/StructureDefinition/bio-model-attribute"/>
  <name value="BioModelAttribute"/>
  <status value="active"/>
  <kind value="complex-type"/>
  <type value="Extension"/>
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/>
  <derivation value="constraint"/>
  
  <differential>
    <element id="Extension">
      <path value="Extension"/>
      <short value="模型属性"/>
      <definition value="生物力学模型的动态键值对"/>
    </element>
    <element id="Extension.extension:key">
      <path value="Extension.extension"/>
      <sliceName value="key"/>
      <min value="1"/>
      <max value="1"/>
      <type>
        <code value="Extension"/>
        <profile value="http://your-project-domain/StructureDefinition/bio-model-attribute-key"/>
      </type>
    </element>
    <element id="Extension.extension:value">
      <path value="Extension.extension"/>
      <sliceName value="value"/>
      <min value="1"/>
      <max value="1"/>
      <type>
        <code value="Extension"/>
        <profile value="http://your-project-domain/StructureDefinition/bio-model-attribute-value"/>
      </type>
    </element>
  </differential>
</StructureDefinition>

3.2.1 bio-model-attribute-key(属性键扩展)

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="bio-model-attribute-key"/>
  <url value="http://your-project-domain/StructureDefinition/bio-model-attribute-key"/>
  <name value="BioModelAttributeKey"/>
  <status value="active"/>
  <kind value="complex-type"/>
  <type value="Extension"/>
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/>
  <derivation value="constraint"/>
  
  <differential>
    <element id="Extension">
      <path value="Extension"/>
      <short value="属性键"/>
      <definition value="生物力学属性名称,如'膝关节最大屈曲角度'"/>
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/>
      <min value="1"/>
      <type>
        <code value="string"/>
      </type>
    </element>
  </differential>
</StructureDefinition>

3.2.2 bio-model-attribute-value(属性值扩展)

支持多类型适配未知属性,可根据需求添加更多类型(如Quantity带单位):

<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="bio-model-attribute-value"/>
  <url value="http://your-project-domain/StructureDefinition/bio-model-attribute-value"/>
  <name value="BioModelAttributeValue"/>
  <status value="active"/>
  <kind value="complex-type"/>
  <type value="Extension"/>
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension"/>
  <derivation value="constraint"/>
  
  <differential>
    <element id="Extension">
      <path value="Extension"/>
      <short value="属性值"/>
      <definition value="生物力学属性的取值,支持多类型"/>
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]"/>
      <min value="1"/>
      <type>
        <code value="string"/>
      </type>
      <type>
        <code value="decimal"/>
      </type>
      <type>
        <code value="integer"/>
      </type>
      <type>
        <code value="boolean"/>
      </type>
    </element>
  </differential>
</StructureDefinition>

4. 示例资源

最终的FHIR实例示例(JSON格式):

{
  "resourceType": "Basic",
  "meta": {
    "profile": ["http://your-project-domain/StructureDefinition/BiomechanicalModel"]
  },
  "id": "bio-squat-001",
  "extension": [
    {
      "url": "http://your-project-domain/StructureDefinition/bio-model-title",
      "valueString": "标准深蹲动作生物力学模型"
    },
    {
      "url": "http://your-project-domain/StructureDefinition/bio-model-attribute",
      "extension": [
        {
          "url": "http://your-project-domain/StructureDefinition/bio-model-attribute-key",
          "valueString": "膝关节最大屈曲角度"
        },
        {
          "url": "http://your-project-domain/StructureDefinition/bio-model-attribute-value",
          "valueDecimal": 128.3
        }
      ]
    },
    {
      "url": "http://your-project-domain/StructureDefinition/bio-model-attribute",
      "extension": [
        {
          "url": "http://your-project-domain/StructureDefinition/bio-model-attribute-key",
          "valueString": "动作标准度"
        },
        {
          "url": "http://your-project-domain/StructureDefinition/bio-model-attribute-value",
          "valueBoolean": true
        }
      ]
    }
  ]
}

关键注意点

  • 用**切片(slice)**确保FHIR验证器能识别不同扩展类型,避免扩展混淆
  • 动态键值对通过重复bio-model-attribute扩展实现,每个实例对应一组key-value
  • value字段的多类型选择可根据实际生物力学数据需求调整,比如增加Quantity类型存储带单位的物理量

内容的提问来源于stack exchange,提问作者com98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:05:32