OpenClinica 用户手册/编写规则
外观
从 3.1.x 版本开始,OpenClinica 允许使用 相对路径 的规则,这些规则可以分配给给定 CRF 的每个实例。以前的版本(3.0.x 及更早版本)要求将规则分配给每个事件和 CRF,因此需要创建和测试大量分配。
- 在规则中,运算符“ne”、“eq”等和逻辑运算符“and”和“or”区分大小写(因此编写包含“AND”或“EQ”的规则会导致错误)。
- 在 Openclinica 中,在规则表达式中使用括号时存在错误 - 当“变量名称紧邻右括号”时,会发生错误“OCRERR_0006 : Syntax Error, Missing right parenthesis.”,请参阅 https://issuetracker.openclinica.com/view.php?id=4195#bugnotes
- 请注意,您不需要在规则中指定 CRF 的特定版本,可以从目标 CRF 末尾省略“_V1”,对 F_LIRAGLUTIDE_V1 的引用可以更改为 F_LIRAGLUTIDE。
- 字段之间的数字比较只能在两个字段都是数字的情况下执行 - 例如,经常包含数字的字符串字段不能与数字字段进行比较。例如,尝试使用 lte 运算符与字符串和数字字段进行比较会导致错误:“OCRERR_0001 : Logic Error, ITEM_NAME and null cannot be used with the LESS_THAN_EQUAL operator.”。
- 对于重复组项的规则,请确保在目标中指定整数行号或关键字“[ALL]”,如 创建规则文档 中所述,例如 F_BCFALLSDIARY.IG_BCFAL_FALLSDIARY[ALL].I_BCFAL_QSFALLS
规则比范围更复杂,因为每个 CRF 部分通常不止一个规则,并且可能需要单独测试,并且以多种方式测试。
在测试规则时,只有在规则触发并且在规则仍然触发的情况下按“保存”(数据未更正),才会创建差异备注。
如果在编写测试文档时注意以下事项,可以减少测试所需的时间
- 避免第二次触发规则
- 确保在第二次按“保存”时触发不同字段上的规则
如果您遵循这些指南,每次按“保存”时,都会触发并测试一个新规则。
如何操作
- 将一个部分中一个字段上的规则设置为失败,然后按“保存”。
- 更改数据以确保第一个字段上的规则不会再次触发,并更改数据以使第二个字段上的规则触发。
- 再次按“保存” - 第一个规则没有触发,因此不会创建任何差异,并且触发了第二个规则,因此该部分不会更改。
如果我们使用标准化的 CRF (标准),我们还可以为它们重复使用标准化的规则和测试。
在测试规则期间可能会看到许多错误。
当规则被触发(浏览器显示 OpenClinica 通用错误页面)但目标不正确,并且包含错误的组时,此错误将出现在 stdout_*.log 中。
java.lang.NullPointerException at org.akaza.openclinica.logic.rulerunner.RuleRunner.prepareEmailContents(RuleRunner.java:120)
例如,设置为:SE_BC1VISIT.F_BC1VISIT.IG_BC1VI_UNGROUPED.I_BC1VI_TIABLCON 而不是:SE_BC1VISIT.F_BC1VISIT.IG_BC1VI_INCLUSIONCRITERIA.I_BC1VI_TIABLCON