RedCap中datediff函数含'today'需手动更新:系统还是用户问题?
RedCap计算字段未自动更新剩余到期天数的问题解决
问题场景
- 使用RedCap跟踪部门临时岗位的到期日期,计算剩余天数的公式为:
datediff('today',[appt_end_date],'d',true) - 必须每日手动在数据质量应用中点击
fix calcs now才能更新计算结果,每遗漏一天,结果就会偏差1天,比如3天未操作后计算值会差3天
疑问解答
这不是用户操作问题,是RedCap常规计算字段的默认设计特性:常规计算字段仅在记录被创建或编辑时触发计算,不会随着系统日期(today)的变化自动每日刷新。也就是说,只要记录没有被修改,计算值就会停留在上次计算的结果,不会自动跟进日期更新。
解决办法
- 切换为自动计算字段:
创建字段时选择「Auto-calculated Field」类型(而非常规的Calculated Field),这类字段会通过系统每日定时任务自动重新计算,无需手动触发刷新,公式可以直接沿用原有的datediff('today',[appt_end_date],'d',true)。 - 定时自动刷新计算值:
如果无法切换字段类型,可以通过RedCap API编写脚本,定时调用计算刷新接口(API参数使用content=calc),实现每日自动执行fix calcs now的功能;或者联系机构的RedCap管理员,配置系统级定时任务来批量刷新计算字段。 - 前端实时计算替代方案:
若不需要将剩余天数存储到数据库,可在表单中添加文本字段,通过HTML或逻辑分支实现打开记录时实时计算显示剩余天数,这种方式不会产生存储值偏差的问题。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

