Dotnet - 按 Resource.Effective 过滤 FHIR 包
Dotnet - Filtering a FHIR Bundle by Resource.Effective
我一直在尝试通过 'Effective' 属性执行资源过滤,但在过去的几个小时里我似乎 运行 一直在兜圈子,我想知道是否有人可以给我一个处理这个。我们一直使用的过滤方式是'Select('query'),如下图。 (res 是 Bundle 类型)
这个有效:
var selectedResource = res.Select("entry.resource.where(id = '" + resourceId + "')").FirstOrDefault();
这个有效:
var filteredResources = res.Select("entry.resource.ofType(" + resourceType + ")");
这不起作用:(在 QuickWatch 上执行以下代码)
尝试 #1
描述 - 试图与解释为字符串的“2016-01-01”进行比较
res.Select("entry.resource.where(effective>='2016-01-01')"), results
“运算符 '>=' 的调用失败:无法将 2016-08-31T06:57:24-04:00(类型 Hl7.Fhir.ElementModel.Types.DateTime)与 2016-01-01(类型 Hl7.Fhir.ElementModel.Types.String), 因为类型不同。"
尝试#2
描述 - 保留引号 (' '),但将内部的值更改为实际的 DateTime 初始化
res.Select("entry.resource.where(effective>='"+new DateTime(2016,1,1)+"')"), results
“调用运算符 '>=' 失败:无法将 2016-08-31T06:57:24-04:00(Hl7.Fhir.ElementModel.Types.DateTime 类型)与 01/01/2016 00:00:00 进行比较(类型 Hl7.Fhir.ElementModel.Types.String),因为类型不同。"
尝试 #3
描述 - 前一个但没有引号 (' ') - 预计被视为字符串
res.Select("entry.resource.where(effective>="+new DateTime(2016,1,1)+")")
"编译失败:解析失败:意外'(';预期输入结束(第 1 行,第 21 列);最近消耗:urce.where"
有人知道如何让这个日期比较起作用吗?
请告诉我是否有任何进一步的信息可以帮助您分析问题。
提前致谢!
亲切的问候,
自动对焦
这在 firely-net-sdk 的讨论帖中得到了回答:https://github.com/FirelyTeam/firely-net-sdk/discussions/1924。
引用:
DateTime 文字以 @ 开头。另请参阅 FhirPath 规范:http://hl7.org/fhirpath/#datetime
所以试着写这样的表达式:
res.Select("entry.resource.where(effective >= @2016-01-01)");
我一直在尝试通过 'Effective' 属性执行资源过滤,但在过去的几个小时里我似乎 运行 一直在兜圈子,我想知道是否有人可以给我一个处理这个。我们一直使用的过滤方式是'Select('query'),如下图。 (res 是 Bundle 类型)
这个有效:
var selectedResource = res.Select("entry.resource.where(id = '" + resourceId + "')").FirstOrDefault();
这个有效:
var filteredResources = res.Select("entry.resource.ofType(" + resourceType + ")");
这不起作用:(在 QuickWatch 上执行以下代码)
尝试 #1
描述 - 试图与解释为字符串的“2016-01-01”进行比较
res.Select("entry.resource.where(effective>='2016-01-01')"), results
“运算符 '>=' 的调用失败:无法将 2016-08-31T06:57:24-04:00(类型 Hl7.Fhir.ElementModel.Types.DateTime)与 2016-01-01(类型 Hl7.Fhir.ElementModel.Types.String), 因为类型不同。"
尝试#2
描述 - 保留引号 (' '),但将内部的值更改为实际的 DateTime 初始化
res.Select("entry.resource.where(effective>='"+new DateTime(2016,1,1)+"')"), results
“调用运算符 '>=' 失败:无法将 2016-08-31T06:57:24-04:00(Hl7.Fhir.ElementModel.Types.DateTime 类型)与 01/01/2016 00:00:00 进行比较(类型 Hl7.Fhir.ElementModel.Types.String),因为类型不同。"
尝试 #3
描述 - 前一个但没有引号 (' ') - 预计被视为字符串
res.Select("entry.resource.where(effective>="+new DateTime(2016,1,1)+")")
"编译失败:解析失败:意外'(';预期输入结束(第 1 行,第 21 列);最近消耗:urce.where"
有人知道如何让这个日期比较起作用吗?
请告诉我是否有任何进一步的信息可以帮助您分析问题。
提前致谢!
亲切的问候, 自动对焦
这在 firely-net-sdk 的讨论帖中得到了回答:https://github.com/FirelyTeam/firely-net-sdk/discussions/1924。
引用: DateTime 文字以 @ 开头。另请参阅 FhirPath 规范:http://hl7.org/fhirpath/#datetime
所以试着写这样的表达式:
res.Select("entry.resource.where(effective >= @2016-01-01)");