日期比较 - 动态查询

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

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

规则表达式

//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

对应于规则说明中的访问日期

<=

Less Than or Equalt To 运算符。根据规则说明更新运算符。

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})。请更正。