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

求助:REDCap生成筛选日期不匹配参与者报告的方法

REDCap筛选同一事件下日期不匹配参与者的解决方案

原代码问题分析

你之前写的day([date1]) <> day([date2]) <> day([date3]) <> day([date4])逻辑错误,REDCap的表达式会按顺序计算:先判断day([date1]) <> day([date2])得到布尔值(1或0),再用这个值和day([date3])比较,完全不是“所有日期天数值不全一致”的判断逻辑,所以得不到预期结果。

高效解决方案(适用于10个变量)

不用写所有两两组合的判断,直接利用最小值与最大值比较的思路:如果所有日期的最小值等于最大值,说明全一致;反之则存在不匹配。

1. 精确到完整日期(年/月/日)判断

如果需要判断**整个日期(含年月)**是否不一致(比如08-23和08-25属于不匹配,08-23和09-23也属于不匹配),用date()函数提取纯日期部分(自动忽略时间),再取min和max比较:

min(date([date1]), date([date2]), date([date3]), date([date4]), date([date5]), date([date6]), date([date7]), date([date8]), date([date9]), date([date10])) <> max(date([date1]), date([date2]), date([date3]), date([date4]), date([date5]), date([date6]), date([date7]), date([date8]), date([date9]), date([date10]))

2. 仅判断日期的“天”数值

如果只需要判断天的数字是否不一致(比如08-23和09-23视为天数值一致,不会被筛选),把date()换成day()即可:

min(day([date1]), day([date2]), day([date3]), day([date4]), day([date5]), day([date6]), day([date7]), day([date8]), day([date9]), day([date10])) <> max(day([date1]), day([date2]), day([date3]), day([date4]), day([date5]), day([date6]), day([date7]), day([date8]), day([date9]), day([date10]))

针对你的示例验证

  • 参与者1的日期转成date()后为:2024-08-23、2024-08-23、2024-08-23、2024-08-25,min=2024-08-23,max=2024-08-25,两者不等,会被筛选出来。
  • 参与者2的所有date()结果都是2024-09-02,min=max,不会被筛选。

空值处理(可选)

如果部分日期变量可能为空,且你希望仅当所有日期都填写且存在不匹配时才筛选,可以在前面加非空判断:

not(isempty([date1])) and not(isempty([date2])) and ... and not(isempty([date10])) and min(date([date1]), ...) <> max(date([date1]), ...)

如果允许部分空值,只要已填写的日期存在不匹配就筛选,直接用min/max的表达式即可,REDCap的聚合函数会自动忽略空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:03:23