几周以来我就是 REDCap 14.0.16 用户。我正在计划针对不同年龄段(例如 30 至 60 岁)的人进行一项研究。
为了防止意外地将参与者纳入年龄范围之外,我使用了两个变量:评估日期 [doa] 和出生日期 [dob]。这个想法是从评估日期减去 30 年和 60 年,分别设定允许的最长和最短出生日期。 两个日期均以日期 (D-M-Y) 格式进行验证,因此验证表达式的结果必须返回日期值,否则会出现警告“无法验证您提供的值,因为它不符合预期的格式。必需的格式:日期(日-月-年)”。
有什么办法可以防止引入超出年龄范围的参与者吗?如果可以,我该怎么办?
我尝试在最小值和最大值字段中使用特殊函数,但检索到“所需格式”错误(因为是同样的问题,我只包含最小值)。 Datediff 返回时间差,因此不起作用。 我尝试过“与日期或日期时间值一起使用的函数”,即日、月和年,试图减去评估日期的年龄。
由于上述所有方法都失败了,我尝试了验证字段中的操作标签,尽管我没想到会起作用,因为它们放错了位置。
由于它不起作用,我尝试连接表达式,因为我期望行为应该与手动输入日期相同。
这里有两种可能的解决方案:
[dob]!='' AND (datediff([dob], '[doa]', 'y') < 30 OR datediff([dob], '[doa]', 'y') > 60)
。每当用户尝试注册 30 岁以下或 60 岁以上的人时,这都会自动创建警告。还包括检查以确保出生日期字段不为空。但是,数据质量规则仍然可以通过用户的选择手动覆盖,如果存在计划的协议偏差,这可能会很有用。minimum
和maximum
验证范围接受管道变量来设置动态范围限制。因此,您可以创建单独的变量(可以选择使用 @HIDDEN
操作标签对用户隐藏它们)来存储这些最小和最大范围。例如,min_dob
将是一个独立的文本字段,旨在存储 @CALCDATE
操作标签的值。然后,您可以将最小验证范围设置为[min_dob]
。然后对最大验证范围重复相同的过程,例如,创建一个 [max_dob]
变量。