OpenClinica 使用者手冊/使用 Excel 寫規則
如果您要編寫多個規則,並且不想設定規則設計器應用程式,則可以使用 Excel 2010 中提供的 xml 工具來簡化操作。這種方法利用了 OpenClinica 的 xsd 模式來驗證規則 xml 檔案,從而指導 Excel 提供一個用於處理規則 xml 資料的介面。
這種方法最適合 DiscrepancyNote 或 EmailAction 規則操作型別,因為它們沒有可重複的子節點。但是,這兩種操作型別是最常見的,處理大量規則是使用這種方法的主要原因。它還限於每個目標一個規則操作,因為 OpenClinica 規則驗證器要求具有相同目標的 RuleRefs 必須分組在同一個 RuleAssignment 節點中。一個用於在 Excel 所需格式(沒有分組)和 OpenClinica 所需格式(分組)之間轉換的 xsl 變換 可以在此處找到。
對於其他操作型別,每個子節點(通常是一組 DestinationProperty 節點)都需要寫為單獨的規則分配,因為 Target 和 RuleRef OID 需要與規則操作節點位於同一表中。這是否會對 OpenClinica 行為產生任何負面影響尚未經過測試,主要是因為為每種操作型別建立單獨的規則定義更容易維護,即使這意味著偶爾會有一些重複的規則定義。
- 複製 tomcat/openclinica.data/rules/rules.xsd 檔案(或者從 原始檔 中獲取)。
- 將 RuleRef 元素和所有 RuleRefType 元素的 'maxOccurs="unbounded"' 更改為 'maxOccurs="1"'(下面顯示相關程式碼片段)。這使 Excel 能夠以正確格式匯出資料。否則,Excel 將拒絕匯出並抱怨資料是“列表的列表”。
<xs:element name="RuleAssignment" type="RuleAssignmentType"/>
<xs:complexType name="RuleAssignmentType"><xs:sequence>
<xs:element ref="Target"/>
<xs:element ref="RuleRef" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="RuleRef" type="RuleRefType"/>
<xs:complexType name="RuleRefType">
<xs:sequence>
<xs:element ref="DiscrepancyNoteAction" minOccurs="0" maxOccurs="1"/>
<xs:element ref="EmailAction" minOccurs="0" maxOccurs="1"/>
<xs:element ref="ShowAction" minOccurs="0" maxOccurs="1"/>
<xs:element ref="HideAction" minOccurs="0" maxOccurs="1"/>
<xs:element ref="InsertAction" minOccurs="0" maxOccurs="1"/>
<xs:element ref="EventAction" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attributeGroup ref="RuleRefAttributeType"/>
</xs:complexType>
- 建立一個新的空白 Excel 電子表格
- 轉到“開發工具”選項卡並找到“XML”組(如果選項卡不存在,請轉到“檔案”->“選項”->“自定義功能區”並勾選“開發工具”)。
- 點選“源”。
- 在“XML 源”視窗中,點選“XML 對映”。
- 點選“新增”。
- 從之前的步驟中選擇已編輯的 rules.xsd 檔案。
- 在“多個根”視窗中,選擇 RuleImport 作為根節點。
- 點選“確定”。
- 現在應該在“XML 源”視窗中顯示一個 RuleImport_Map 樹。
- Ctrl+點選選擇 Target-value、RuleRef-OID 和所需的 Action 節點。
- 將所選內容拖放到電子表格上,這將建立一個表。
- 選擇 RuleDef 節點。
- 將其拖放到電子表格上,至少留出一個列空間。這將建立第二個表。
現在電子表格上應該有兩個表,一個用於 RuleAssignment 詳細資訊,一個用於 RuleDef 詳細資訊。這些表可以獨立排序/過濾,並且行數可以不同。最重要的是,為了使 OpenClinica 的規則有效,每個 RuleAssignment 都需要引用一個 RuleDef。
根據需要在兩個表中輸入規則詳細資訊(請參閱此華夏公益教科書中的其他文章以獲取相關提示)。準備好上傳到 OpenClinica 時,在“開發工具”選項卡中的“XML”組中,點選“匯出”併為 xml 檔案選擇一個檔名。如果對映正確完成,匯出的 xml 檔案將以正確的格式進行上傳。
如果需要,Excel 可以在匯出步驟中根據 xsd 模式驗證規則資料。在“開發工具”選項卡中的“XML”組中,點選“對映屬性”,然後在匯出之前勾選“驗證匯入和匯出時的資料是否符合模式”。驗證步驟將發現結構性問題,例如資料型別錯誤(布林欄位必須為小寫 'true' 或 'false' 等)或缺少必填欄位。驗證步驟不會檢查內容,例如規則表示式、規則目標等,因為從 xsd 的角度來看,它們可以是任何字串(但這會在上傳到 OpenClinica 時進行檢查)。
可以將從 OpenClinica 下載的現有規則 xml 檔案匯入到按上述方式設定的電子表格中。在“開發工具”選項卡中的“XML”組中,點選“匯入”,然後選擇要處理的規則 xml 檔案。規則詳細資訊將填充對映的表。
如果匯入的規則檔案中包含未對映到電子表格的操作型別,則規則定義節點將顯示,但這些未對映型別的規則操作節點將不會顯示,因為沒有為它們建立列。但是,可以按照上述方式進行對映。