FindMatchingRepeatingFormWithinRange( )

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

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

这是一个聚集函数。如果目标位于重复表单上,则为每个表单实例运行规则。

语法

FindMatchingRepeatingFormWithinRange('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-50 如果存在 a) 开始日期在 2020 年 1 月 1 日到 2020 年 3 月 1 日之间且 b) 症状 = "headache" 的任何实例,则引发查询

// Given 5 repeating form instances with items "onsetStart", "onsetEnd" and "itmSymptom":
if (FindMatchingRepeatingFormWithinRange('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"