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

如何在Java中构建含_family对象的FHIR Patient资源结构?

构建带家族名扩展的FHIR Patient Java实现

目标FHIR Patient资源结构:

{
  "resourceType": "Patient",
  "name": [
    {
      "family": "Family1-Family2",
      "_family": {
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/humanname-mothers-family",
            "valueString": "Family2"
          }
        ]
      },
      "given": ["Names"]
    }
  ]
}

你之前的代码错误地将family字段替换为_family,且未正确生成扩展。核心问题是没理解FHIR结构中_family的本质——它是family字符串元素的扩展容器,对应Java库中承载family值的StringType对象的扩展集合,而非独立的字段。

正确实现代码(以HAPI FHIR库为例)

// 创建Patient实例
Patient patient = new Patient();

// 创建HumanName实例
HumanName humanName = new HumanName();

// 1. 创建承载家族名的StringType对象,设置原始值
StringType familyName = new StringType("Family1-Family2");

// 2. 构建母亲家族名扩展
Extension mothersFamilyExt = new Extension();
mothersFamilyExt.setUrl("http://hl7.org/fhir/StructureDefinition/humanname-mothers-family");
mothersFamilyExt.setValue(new StringType("Family2"));

// 3. 将扩展添加到familyName对象中
familyName.addExtension(mothersFamilyExt);

// 4. 将带扩展的StringType设置为HumanName的family元素
humanName.setFamilyElement(familyName);

// 设置Given名字
humanName.addGiven(new StringType("Names"));

// 将HumanName添加到Patient的姓名列表
patient.addName(humanName);

关键注意事项

  • 不要直接操作_family相关方法,FHIR Java库中_[元素名]对应元素类型对象(如StringType)的扩展集合,而非独立对象。
  • 必须先创建承载字段值的类型对象,给它添加扩展后,再通过set[元素名]Element()方法关联到HumanName。
  • 之前的错误在于误将_family作为设置目标,而非给承载family值的StringType添加扩展。

内容的提问来源于stack exchange,提问作者Raúl Pérez Mota

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:42:35