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

如何扩展FHIR类?Python扩展Patient类报错求助

解决FHIR Patient类扩展时的Pydantic字段错误

你遇到的问题根源是FHIR的Patient类基于Pydantic的BaseModel实现,而BaseModel默认会严格校验对象的所有属性——只有在模型中显式声明过的字段才能被赋值,直接在__init__里添加未定义的validDia会触发字段校验失败。

下面提供两种可行的解决思路:

方法1:显式声明扩展字段(推荐)

在子类中用Pydantic的语法声明validDia字段,这样既符合Pydantic的规范,也能保留字段类型校验:

import fhir.resources.patient as pt
from pydantic import Field

class Patient2(pt.Patient):
    # 声明validDia为必填整数字段,可根据需求修改类型或添加默认值
    validDia: int = Field(...)

# 实例化时直接传入validDia,同时支持Patient类的其他参数
newPatient = Patient2(validDia=1)
print(newPatient.validDia)

方法2:允许额外字段(适合快速临时扩展)

如果不需要对扩展字段做类型校验,可以通过配置model_config允许模型接受未声明的额外字段:

import fhir.resources.patient as pt

class Patient2(pt.Patient):
    # 配置允许额外字段
    model_config = {"extra": "allow"}
    
    def __init__(self, validDia, **kwargs):
        # 先调用父类构造方法初始化Patient的原有字段
        super().__init__(**kwargs)
        # 再赋值扩展字段
        self.validDia = validDia

# 实例化示例
newPatient = Patient2(1)
print(newPatient.validDia)

注意:如果需要从JSON文件解析后添加扩展字段,建议先解析得到Patient实例,再通过上述方法转换为子类实例,或者直接给实例动态添加属性(需确保模型允许额外字段)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:15:53