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