You need to enable JavaScript to run this app. FHIR Contained Resources引用规则及嵌套配置技术咨询
优惠活动
大模型
产品
解决方案
定价
更多

FHIR Contained Resources引用规则及嵌套配置技术咨询

FHIR Contained资源引用核心规则

引用嵌套Contained资源时,不存在通过代码侧元素别名、节点键名引用的机制,必须严格匹配被引用资源自身声明的id字段值,以#id值的格式完成引用。
具体规则细节:

  • 所有进入contained数组的资源,必须在自身根节点显式声明id字段,该字段值是所在contained范围内的唯一标识
  • 引用锚点的匹配范围,是从当前引用位置所在的资源层级向上,逐层级遍历所有嵌套的contained资源列表,仅识别资源自身声明的id值
  • 代码开发时给自定义类属性、数组元素起的别名/变量名,只会存在于业务代码逻辑中,不会被序列化到最终的FHIR资源JSON结构里,FHIR解析器完全无法识别这类自定义名称
  • id字段的匹配是大小写敏感的,引用值和被引用资源的id必须完全一致才能匹配成功
你提供示例中存在的问题

对照上述规则,当前生成的资源存在以下无法正常解析、不符合实现目标的问题:

  • 根资源的resourceType为TestInput,和你预期构建Basic资源的目标不一致,正式实现时需要将根资源类型调整为Basic
  • 第一个扩展字段的valueReference.reference值为#testConfiguration,但对应的嵌套TestConfiguration资源声明的id为TestConfigurationId,锚点值不匹配,解析器无法定位目标资源
  • TestConfiguration内部嵌套的DeviceDefinition资源没有显式声明id字段,TestConfiguration中definition.reference写的#definition没有对应的匹配目标,属于无效引用
  • 第二个扩展字段的valueReference.reference值为#digitalSampleId,但对应嵌套的DigitalSample资源声明的id为DigitalSampleId,存在大小写错位,匹配会失败
正确实现的调整方式
  • 逐一对所有Contained资源补充显式的id声明:比如给DeviceDefinition设置id为definition,就可以让TestConfiguration内部的#definition引用正常匹配;如果希望扩展字段引用TestConfiguration,可直接将TestConfiguration的id设置为testConfiguration,和扩展里的引用值保持一致
  • 对DigitalSample的id做统一调整:要么把资源id改成digitalSampleId,要么把扩展里的引用值改成#DigitalSampleId,保证两边完全匹配
  • 开发时注意.NET SDK的序列化逻辑不会自动把类属性名写入contained资源的id字段,需要在业务逻辑里显式给每个嵌套资源赋值id,不要依赖自动生成的名称
  • 根资源类型修正为Basic,匹配扩展挂载的目标资源要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 18:57:00