OpenClinica 使用者手冊/使用正則表示式建立時間欄位
您有時可能需要一個時間欄位。但是,OpenClinica 雖然在日期和部分日期方面非常靈活,但沒有標準的時間欄位型別。這可以透過使用正則表示式來檢查欄位中的所有條目來解決。
我們希望我們的時間欄位能夠接受 01:26 或 11:00 或 19:59 或 20:00 或 23:59 等輸入,但拒絕 88:99 或 4:6 等條目。首先,讓我們關注 20:00 之前的時間值。正則表示式為 **[0-1]\d:[0-5]\d**,這意味著:小時的第一部分是 0 或 1 ([0-1]),後面跟著一個數字 (\d),然後是冒號 (:),後面跟著分鐘,範圍從 0 到 5 ([0-5]),最後跟著一個數字 (\d)。然後是 20:00 到 23:59 之間的時間。正則表示式非常類似:**2[0-3]:[0-5]\d**,這意味著:以 2 (2) 開頭,後面跟著任何 0 到 3 之間的數字 ([0-3]),然後是冒號和分鐘,如前所述。最後,將這兩者用管道 (|) 結合起來:**[0-1]\d:[0-5]\d|2[0-3]:[0-5]\d**
在 OpenClinica 中測試正則表示式並非易事:您必須將正則表示式放入 XL 表格中並上傳。語法會被驗證,但結果不會。換句話說,您的表示式可能是正確的,但接受了錯誤的輸入或拒絕了正確的輸入。要在 OC 中檢查這一點,需要將 CRF 新增到研究事件中,然後嘗試不同的值。然後修改正則表示式,上傳新版本等,直到結果正常。幸運的是,有一些工具可以為您完成這項工作,其中之一是 http://regexpal.com/。該介面包含兩個文字區域:一個用於正則表示式,另一個用於輸入。如您在下面的螢幕截圖中看到的那樣,我在第一個欄位中複製了正則表示式,在第二個欄位中複製了我要測試的值。

與正則表示式匹配的文字字串的每一段都用黃色或藍色突出顯示,您立即可以看到該表示式執行良好。
如果您希望使用 regexpal 以類似於 OpenClinica 中使用的方式測試您的正則表示式,您可以將它們包裝在文字 "^()$" 中。
^(regexp here)$
此文字限制了正則表示式的處理方式,確保匹配佔用整行(OpenClinica 中也有類似的限制)。
因此,OpenClinica 中的正則表示式
regexp: /[0-9]/
在 regexpal 中測試時會變成這樣
^([0-9])$
這將匹配
4
但不會匹配
d4
(因為 4 不是該行上唯一的字元)
現在您可以在 XL 表格中使用正則表示式。以通常的方式新增一個專案,並使用 RESPONSE_TYPE(第 N 列)"text",使用 DATA_TYPE(第 T 列)"ST" 來表示字串。您的正則表示式位於 VALIDATION(第 V 列)中,前面是 "regexp:",並用斜槓括起來。在第 W 列中填寫您的 VALIDATION_ERROR_MESSAGE。

就這樣,您擁有了自己的時間欄位。
當您需要在 CRF 中比較時間時,必須使用數字資料。但在上述情況下,時間欄位的型別為 ST,這意味著您無法對它進行任何操作。但如果您願意犧牲時間格式,您或多或少可以做到這一點。訣竅是使用一個 REAL 型別的欄位,然後向其新增一個正則表示式。您能做到嗎?令人驚訝的是,您可以。正則表示式是在資料寫入資料庫之前使用的。
我們將使用的正則表示式是 **regexp: /|[0-1][0-9]\.[0-5][0-9]|2[0-3]\.[0-5][0-9]/**
它的工作方式與之前的正則表示式相同,但現在分隔符是一個點。由於點在正則表示式中有一定的含義,因此您必須在點前面加上一個反斜槓。現在您可以在 XL 表格中使用正則表示式。以通常的方式新增一個專案,並使用 RESPONSE_TYPE(第 N 列)"text",使用 DATA_TYPE(第 T 列)"REAL" 來表示實數。您的正則表示式位於 VALIDATION(第 V 列)中,在第 W 列中填寫您的 VALIDATION_ERROR_MESSAGE。

就這樣,您擁有了一個可以進行計算的時間欄位。