日期比较 - 动态查询
比较两个没有时间元素的日期问题,如果日期不符合预期,则显示动态查询。
规则说明:通知同意书的签署日期必须等于或早于在“筛选”或“基准”访问的“访问日期”字段中输入的日期。
规则表达式
//to meet the rule description criteria onstdt-compdt should be a negative value or zero (<=0)
if(dateDiffInDays(icdat,vstdt)<=0)
{
return true;
}
else
{
setQueryMessage("Date Informed Consent signed "+getDateDMYFormat(icdat,false)+" must be on or before the Visit date "+getDateDMYFormat(vstdt,false) +" .Please correct or clarify.");
return false; //Query message set dynamically. System sends query when return false condition is met
}
查询消息:签署 {infconstdt} 的通知同意日期必须等于或早于访问日期 {visitdate}。请更正或澄清。
定义
- icdat
-
从规则说明追溯至知情同意日期。
- vstdt
-
与规则说明中的访问日期相对应。
- <=
-
小于或等于运算符。根据规则说明更新运算符。
- dateDiffInDays( )
-
计算 date1 和 date2 (date1 -date2 ) 之间的天数差异,在本例中为 icdat - vstdt。
- setQueryMessage( )
-
指定作为参数传入的动态查询文本。
- getDateDMYFormat( )
-
使用 getDateDMYFormat 帮助函数以 DD-MON-YYYY 格式返回日期(包括部分日期)。
使用提示
始终使用相关的日期助手函数来比较日期,而不是直接使用比较运算符来比较变量。
验证步骤
- 使用主题进行测试,转至包含要比较的日期项的给定访视和表单,在本例中为知情同意日期 <
icdat> 和访视日期 <vstdt>。 - 如下表所示更新表单项
icdat和vstdt,并验证结果如下所示:icdatvstdt结果 10-May-2021 Null没有查询 10-May-2021 10-May-2021 没有查询 11-May-2021 10-May-2021 查询。 验证是否在“查询文本”中填充了正确的日期值。
09-May-2021 10-May-2021 没有查询 09-Jun-2021 10-May-2021 查询。 验证是否在“查询文本”中填充了正确的日期值。
11-Apr-2021 10-May-2021 没有查询 Null10-May-2021 没有查询 12-May-2021 10-May-2021 查询。 验证是否在“查询文本”中填充了正确的日期值。
12-May-2021 14-May-2021 没有查询
注:
如果表单存在于多个访视中,则重复上述步骤。
其他实例
示例 4-20 研究停止日期必须 >= 知情同意签署日期
if(dateDiffInDays(studycompdt,infdt)>=0)
{
return true;
}
else
{
setQueryMessage("Date of Study Discontinuation "+getDateDMYFormat(studycompdt,false)+" is less than Informed Consent date "+getDateDMYFormat(infdt,false)+". Please correct or clarify.");
return false;
}
查询消息:研究停止日期 {discontdate} 早于通知同意日期 {infdt}。请更正或澄清。
示例 4-21 输液日期必须等于各自访问的访视日期
if(dateDiffInDays(infudt, visdt)==0)
{
return true;
}
else
{
setQueryMessage("Date of Infusion "+getDateDMYFormat(infudt,false)+" is prior to or greater than visit date "+getDateDMYFormat(visdt,false)+". Please correct or clarify.");
return false;
}
查询消息:输液日期 {infusiondt} 早于或晚于访问日期 {visitdate}。请更正或澄清。
示例 4-22 低血糖发作的开始日期必须 >= 随机化日期
注:
低血糖事件是带有时间元素的日期问题。if(dateDiffInDays(hypodt, randdt)>=0)
{
return true;
}
else
{
setQueryMessage("Start date "+getDateDMYFormat(hypodt,false)+" is prior to date of randomisation "+getDateDMYFormat(randdt,false)+". Please correct.");
return false;
}
查询消息:开始日期早于随机化日期 ({RandDate})。请更正。
父主题:具有动态查询文本的日期