使用Hl7.Fhir.R4创建valueReference扩展的技术咨询
解决Hl7.Fhir.R4对接NHS ERS API时自定义扩展的构建问题
由于这个是NHS定义的STU3自定义扩展,Hl7.Fhir.R4的官方NuGet包不会提供对应的预生成模型类,你可以通过以下两种方式手动构建所需的扩展结构:
方式一:直接使用基础Extension类构建
利用R4库中自带的Extension类手动创建符合要求的扩展实例,这是最直接的方案:
// 初始化扩展对象 var searchCriteriaExt = new Extension { Url = "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-eRS-Shortlist-SearchCriteria-1", Value = new ResourceReference("#ServiceSearchCriteria-1") }; // 将扩展添加到你的转诊资源中(假设referral是你要提交的CreateReferral对应的资源实例) referral.Extension.Add(searchCriteriaExt);
方式二:自定义复用类(适合多次使用场景)
如果这个扩展需要在代码中多次使用,可以封装一个自定义类继承自Extension,简化重复代码:
public class ErsShortlistSearchCriteriaExtension : Extension { public ErsShortlistSearchCriteriaExtension(string resourceReference) { Url = "https://fhir.nhs.uk/STU3/StructureDefinition/Extension-eRS-Shortlist-SearchCriteria-1"; Value = new ResourceReference(resourceReference); } } // 使用示例 var customExt = new ErsShortlistSearchCriteriaExtension("#ServiceSearchCriteria-1"); referral.Extension.Add(customExt);
关键注意点
- 尽管该扩展的定义基于STU3,但R4的
Extension类核心结构与STU3兼容,序列化后完全符合API要求的JSON格式。 - 确保
#ServiceSearchCriteria-1对应的资源已包含在同一个请求Bundle或转诊资源的嵌套结构中,否则API会返回引用无效的错误。
内容的提问来源于stack exchange,提问作者Steve Borman
相关产品推荐
相关产品推荐

