如何在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
相关产品推荐
相关产品推荐

