REDCap跨项目共享‘请勿联系’列表及自动邮件配置问询
REDCap跨项目自动邮件触发条件设置问题
需求背景
我想让REDCap实例里所有使用问卷的项目,在自动邮件中纳入「请勿联系」列表。目前计划创建一个专属问卷项目(项目1),包含两个字段:
- 邮箱字段,变量名
primary_email - 退订原因字段,复选框类型,含多个选项
核心问题
能不能在无关的项目2中设置自动问卷邀请时,添加**「邮箱不在项目1的primary_email字段中」**的触发条件?我推测需要用到SQL,但不确定该把代码部署在哪里,自己写了一段SQL代码如下:
SELECT CASE WHEN a.value IS NOT NULL THEN 1 ELSE 0 END FROM ( SELECT DISTINCT value FROM redcap_data WHERE project_id = '9999' AND field_name = 'primary_email' ) AS a, ( SELECT DISTINCT value FROM redcap_data WHERE project_id = '7777' AND field_name = 'main_email' ) AS b WHERE a.value = b.value;
可行方案与部署说明
1. 功能可行性
完全可以实现这个需求,REDCap的**自动触发条件(Auto Trigger Conditions)**支持自定义SQL逻辑来跨项目校验数据。
2. SQL代码优化
你提供的SQL可以调整得更简洁高效,改用存在性判断避免笛卡尔积问题,逻辑更清晰:
SELECT CASE WHEN EXISTS ( SELECT 1 FROM redcap_data optout WHERE optout.project_id = '9999' AND optout.field_name = 'primary_email' AND optout.value = (SELECT value FROM redcap_data p2 WHERE p2.project_id = '7777' AND p2.field_name = 'main_email' AND p2.record_id = [record_id]) ) THEN 0 ELSE 1 END AS trigger_condition
这段代码逻辑:检查当前项目2的main_email是否在项目1的退订列表中,存在则返回0(不触发邮件),不存在则返回1(触发邮件)。
3. 部署位置
在项目2的自动邮件触发设置里操作:
- 进入项目2的「自动邀请/提醒」配置页面
- 找到「触发条件(Trigger Condition)」区域,选择**「使用自定义SQL查询」**选项
- 粘贴优化后的SQL代码,替换
9999(项目1ID)、7777(项目2ID)、main_email(项目2邮箱字段名)为实际值 - 保存配置后,系统会在触发自动邮件前执行这段SQL,返回1时才会发送邮件
4. 注意事项
- 确保REDCap实例允许跨项目访问数据,普通项目管理员可能需要联系系统管理员开启权限
- 测试时创建测试记录,验证邮件是否会根据邮箱是否在退订列表中正确触发或跳过
- 定期清理项目1的退订数据,避免SQL查询效率下降
内容的提问来源于stack exchange,提问作者Vivek-Prakash-US
相关产品推荐
相关产品推荐

