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

如何为FHIR AdverseEvent添加多个患者(Hl7.Fhir.STU3 C#)

FHIR STU3 AdverseEvent关联多个患者的解决方案

先明确:原生FHIR STU3的AdverseEvent不支持多subject

FHIR STU3标准定义里,AdverseEvent的subject字段是单一引用类型,只能关联一个患者(或其他主体)。如果业务需要关联多个患者,有两种合规的实现方式:


方案1:自定义扩展字段

如果没有特定的自定义Profile约束,可以通过扩展来存储多个患者引用:

C#代码(Fhirly实现)

// 1. 添加多个患者到contained集合
var patient1 = new Patient { Id = Guid.NewGuid().ToString() };
var patient2 = new Patient { Id = Guid.NewGuid().ToString() };
adverseEvent.Contained.Add(patient1);
adverseEvent.Contained.Add(patient2);

// 2. 创建存储多患者的自定义扩展
var multipleSubjectsExt = new Extension
{
    Url = "https://your-org-url/extensions/multiple-adverse-event-subjects",
    Value = new FhirList
    {
        Entry = new List<ResourceReference>
        {
            new ResourceReference($"#{patient1.Id}"),
            new ResourceReference($"#{patient2.Id}")
        }
    }
};

// 3. 将扩展附加到AdverseEvent
adverseEvent.Extension.Add(multipleSubjectsExt);

对应JSON结构示例

{
    "resourceType": "AdverseEvent",
    "meta": {
        "profile": [
            "https://psims-uat.azure-api.net/taxonomy/fhir/StructureDefinition/patient-safety-adverse-event-5"
        ]
    },
    "contained": [
        {
            "resourceType": "Patient",
            "id": "6f084956-eab3-4fda-b12d-6dbd74f2beb5",
            "extension": [
                {
                    "url": "https://psims-uat.azure-api.net/taxonomy/fhir/StructureDefinition/patient-information-5",
                    "extension": [/* 患者详情 */]
                }
            ]
        },
        {
            "resourceType": "Patient",
            "id": "fb3f330b-6cb7-4e27-ab99-df7fe1b06693",
            "extension": [
                {
                    "url": "https://psims-uat.azure-api.net/taxonomy/fhir/StructureDefinition/patient-information-5",
                    "extension": [/* 患者详情 */]
                }
            ]
        }
    ],
    "extension": [
        {
            "url": "https://your-org-url/extensions/multiple-adverse-event-subjects",
            "valueList": {
                "entry": [
                    {"reference": "#6f084956-eab3-4fda-b12d-6dbd74f2beb5"},
                    {"reference": "#fb3f330b-6cb7-4e27-ab99-df7fe1b06693"}
                ]
            }
        }
    ],
    "subject": {"reference": "#6f084956-eab3-4fda-b12d-6dbd74f2beb5"}
    /* 其他AdverseEvent字段 */
}

方案2:遵循自定义Profile的扩展规则

你使用的自定义Profile(https://psims-uat.azure-api.net/taxonomy/fhir/StructureDefinition/patient-safety-adverse-event-5)可能已经扩展了AdverseEvent,支持多subject:

  • 先查看该Profile的定义,如果它将subject的 cardinality设为0..*(多值),那么Fhirly生成的类应该会有类似Subjects的集合属性
  • 代码示例(假设存在Subjects集合):
adverseEvent.Contained.Add(patient1);
adverseEvent.Contained.Add(patient2);
adverseEvent.Subjects.Add(new ResourceReference($"#{patient1.Id}"));
adverseEvent.Subjects.Add(new ResourceReference($"#{patient2.Id}"));

重要提醒

  • 不要直接修改原生subject字段为多值,这会违反FHIR STU3标准,导致资源无法被合规的FHIR服务器解析
  • 优先确认自定义Profile是否支持多患者关联,这是最规范的实现方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:58:10