日期比较 - 动态查询

比较两个没有时间元素的日期问题,如果日期不符合预期,则显示动态查询。

规则说明:通知同意书的签署日期必须等于或早于在“筛选”或“基准”访问的“访问日期”字段中输入的日期。

规则表达式

//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 格式返回日期(包括部分日期)。

返回值

布尔值

返回 truefalse。当满足返回 false 条件时,系统会引发查询。

使用提示

始终使用相关的日期助手函数来比较日期,而不是直接使用比较运算符来比较变量。

验证步骤

  1. 使用主题进行测试,转至包含要比较的日期项的给定访视和表单,在本例中为知情同意日期 <icdat> 和访视日期 <vstdt>。
  2. 如下表所示更新表单项 icdatvstdt,并验证结果如下所示:
    icdat vstdt 结果
    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 没有查询
    Null 10-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})。请更正。