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

Dotnet中FHIR Bundle按Resource.Effective过滤的日期对比问题咨询

解决方案

你遇到的问题核心是HL7 FHIR的FhirPath查询语法要求日期对比的两个操作数类型必须一致,你之前的写法均未满足该规则,因此触发报错。

正确实现方式

方案1:使用FhirPath日期字面量语法

FhirPath中以@开头、符合ISO 8601格式的内容会被自动识别为日期类型,不需要加单引号,示例代码如下:

// 先将.NET DateTime转为符合ISO 8601规范的日期字符串
string filterDate = new DateTime(2016, 1, 1).ToString("yyyy-MM-dd");
// 拼接查询时给日期值加@前缀,标识为FhirPath日期类型
var filteredResources = res.Select($"entry.resource.where(effective >= @{filterDate})");

方案2:显式转换字符串为日期类型

如果需要保留字符串传参的写法,可以调用FhirPath内置的toDateTime()方法,手动将字符串转为日期类型,示例代码如下:

string filterDateStr = new DateTime(2016, 1, 1).ToString("yyyy-MM-dd");
var filteredResources = res.Select($"entry.resource.where(effective >= '{filterDateStr}'.toDateTime())");

此前尝试失败的原因

  • 尝试1:单引号包裹的2016-01-01被识别为String类型,和effective字段的DateTime类型不匹配,无法直接对比
  • 尝试2:.NET DateTime默认ToString()输出的是本地化格式的字符串,仍然被识别为String类型,同样存在类型不匹配问题
  • 尝试3:去掉单引号后,DateTime默认ToString()输出的内容包含/、空格等不符合FhirPath语法的字符,直接导致查询编译失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:36:04