自动调查邀请中的 REDCap 条件逻辑 - 预定邀请的日期不变

问题描述 投票:0回答:1

红帽帮助!!

我正在尝试触发在指定日期 3 个月后发送的调查问卷(这对于我的所有研究参与者来说都是不同的 - 我将在 date_insulation_completed 字段中输入日期)。我还需要参与者完成他们的基线调查,并且我需要选中一个表示绝缘已完成的框。

enter image description here

我的问题是 - 如果我更改指定的 data_insulation_completed 字段,逻辑是否应该自动刷新与此新日期一致 - 即,如果绝缘原定于明天完成,但现在由于延迟将在一周后完成,这将是 3 个月调查循环日期也会发生变化 - 我点击了“发送邀请之前确保逻辑仍然正确”,但是当我用不同的日期对此进行测试时,预计发出的预定邀请的日期不会从最初的预定日期发生变化。

希望这是有道理的!

非常感谢任何帮助!

triggers redcap invitation
1个回答
0
投票

ASI 触发后,其发送日期是固定的,无法以编程方式更新(您可以从调查邀请日志中手动更改它,单击铅笔图标并输入新日期)。通过使用基于日期字段发送的选项,当记录满足其他逻辑(步骤 2 中的条件)时,REDCap 将查找该字段的值,并根据您定义的偏移量安排电子邮件。因此,如果日期随后发生变化,ASI 不会发生变化。

有两种方法可以解决这个问题:

1.确保仅当 [date_insulation_completed] 具有正确值时才触发 ASI

这取决于您的设置,但如果您可以在逻辑中引用某些内容,并且该内容仅在更新

[date_insulation_completed]
字段时才为真,则将该逻辑合并到步骤 2 中。在您的情况下,它可能会更简单。

在你现有的逻辑中,你有

[insulation_complete]='1'
。您在上面提到,这是您在参与者安排 ASI 之前勾选的字段。如果您等到
[date_insulation_completed]
日期确认后再检查
[insulation_complete]
字段,您应该会得到您想要的行为。

2.将 ASI 配置为在 [date_insulation_completed] 与今天日期之间的时间间隔为 90 天时触发

在 REDCap 引入“在 [日期字段] 之后/之前发送 X 天”选项之前,这就是我们过去必须配置发送日期与过去其他日期字段相关的 ASI 的方式。但由于其工作方式略有不同,所以更可控。

将步骤 2 中的逻辑更新为以下内容:

[insulation_complete]='1' AND datediff([date_insulation_completed], 'today', 'd', true) >= 89

然后更改步骤 3 以在您选择的时间“第二天”发送提醒。

datediff 函数将导致 REDCap 每天(事实上每 4 小时)检查此警报的逻辑,看看它是否为真。它将在 [date_insulation_completed] 日期后 89 天变为真,并且由于每天都会重新检查,因此它对该日期字段的更新很敏感。

然后,在其成立的那天,ASI 被触发,其日期将被确定为您在步骤 3 中选择的时间的第二天。

此设置更难测试。您可能需要将延迟设置为 1 天而不是 89 天,这样您就不必等待 3 个月才能获得测试记录,却发现应该是 88 天。我会手动将 [date_insulation_completed] 日期设置为过去 87 天,然后只需等待一两天。

为什么不在 datediff 中使用 90 天并立即发送?

由于 REDCap 每四个小时检查一次 datediff 逻辑,因此第一次检查将在 [date_insulation_completed] 以来第 89 天的午夜到 4:00 之间进行。如果您使用“立即发送”选项,参与者将在相当糟糕的时间收到电子邮件。因此,前一天触发 ASI,然后使用第二天发送的选项,可以让您设置精确的时间。

为什么 >=89 而不仅仅是 =89?

为什么将大于或等于与 datediff 一起使用?如果您使用

=
,那么您还必须选中“确保发送前逻辑仍然正确”选项un,因为 REDCap 将继续每四个小时检查一次逻辑,如果它变得不正确,它将删除ASI。如果您等待第二天发送,就会发生这种情况。换句话说,
datediff(...) = 89
恰好在某一天为真,而
>=89
在那一天以及此后的每一天都为真。

© www.soinside.com 2019 - 2024. All rights reserved.