findMatching2SFormWithinRange( )

查找由行 ID 标识的双部分表单的重复部分的实例,该实例与作为搜索关键字提供的项值匹配。搜索可以基于搜索关键字或日期范围。

  • 不能将下拉列表、单选按钮或复选框值用作函数参数或目标。
  • 前两个参数应始终为日期范围。此后可以提供其他搜索关键字。
  • 此函数还考虑日期为 null 的条目。
    如果任何重复表单实例的开始日期或结束日期为空,则系统假设一个日期,以便成功执行日期范围重叠检查:
    • 如果开始日期为 null,则系统假定其为 01-Jan-0001。
    • 如果结束日期为 null,则假定结束日期为 01-Dec-3099。
  • 如果某个变量设计为保存部分日期,则以相同的部分日期格式为该参数提供值。您可以采用以下格式使用部分日期:
    • <dd-mmm-yyyy hh:mm>
    • <dd-mmm-yyyy hh>
    • <dd-mmm-yyyy>
    • <mmm-yyyy>
    • <yyyy>

这是聚合函数。在目标位于两部分表单的重复部分的情况下,将为每个实例运行规则。

语法

findMatching2SFormWithinRange('startDateVariable',startDateValue, 'endDateVariable', endDateValue, 'variable1', value1, 'variable2', value2, ...)

参数

注:

允许在规则表达式的其他位置重用传递到此函数的变量,但是您必须使用单引号将变量添加为参数。
参数 必填/可选 说明
startDateVariable 必需 重复表单上的日期项,用作要评估的日期范围的开始日期。
startDateValue 必需 日期范围的开始日期的日期值。这必须以字符串格式提供,必须进行硬编码,不能是规则变量:
  • 必须在字符串 'Date(dd-mmm-yyyy hh:mm:ss)' 中提供日期。
  • 您可以采用以下格式使用部分日期:
    • <dd-mmm-yyyy hh:mm>
    • <dd-mmm-yyyy hh>
    • <dd-mmm-yyyy>
    • <mmm-yyyy>
    • <yyyy>
  • 必须在字符串 'Time(hh:mm:ss)' 中提供时间。
  • 可以采用以下格式使用部分时间:
    • <hh:mm>
    • <hh>
endDateVariable 必需 重复表单上的日期项,用作要评估的日期范围的结束日期。
endDateValue 必需 日期范围的结束日期的日期值。

请考虑与 startDateValue 段落中的要求相同。

variable(s) 可选 要搜索的项变量,使用单引号传入。
value(s) 可选 搜索给定变量的值。这些变量必须是硬编码的,不能是规则变量。

返回值

表示找到匹配值的实例的索引的编号 ( >0 )。
  • 如果找到多个实例,则仅返回第一个索引。
  • 如果未找到匹配项,则返回 -1

注:

在日期中,UNK 值被视为与任何其他值匹配。例如:'Date(01-Feb-2022)''Date(20-Feb-2022)' 都视为 UNK-Feb-2022 日期值的条目匹配项。

示例

示例 3-69 如果存在日期变量在给定范围内且存在任何其他与之匹配的给定条件的任何实例,则引发查询

// Given 5 repeating form instances with items "onsetStart", "onsetEnd" and "itmSymptom"
//Raises query if symptom = "headache" AND onSet date is between Jan 1 2020 and March 1 2020 
if (findMatching2SFormWithinRange('onsetStart', 'Date(01-JAN-2020)', 'onsetEnd', 'Date(01-MAR-2020)', 'itmSymptom', "headache") > 0) {
  return false;
} else {
  return true;
}
 
// Fires query if any of the 5 instances contain onset dates between Jan 1 2020 - March 1 2020 AND itmSymptom = "headache"



//if rule variable (datetimeVar) is datetime componentif (findMatching2SFormWithinRange(2, 'onsetStart', 'Date(01-JAN-2020)', 'onsetEnd', 'Date(01-MAR-2020)', 'datetimeVar', 'Date(10-Jun-2010 11:12:15)') > 0) {  
return false;
} else {  
return true;
}    

//if rule variable (timeVar) is time componentif (findMatching2SFormWithinRange(2, 'onsetStart', 'Date(01-JAN-2020)', 'onsetEnd', 'Date(01-MAR-2020)', 'timeVar', 'Time(11:12:15)') > 0) {
return false;
} else {  
return true;
}