跳轉到內容

OpenClinica 使用者手冊/使用 Excel 寫規則

來自華夏公益教科書

如果您要編寫多個規則,並且不想設定規則設計器應用程式,則可以使用 Excel 2010 中提供的 xml 工具來簡化操作。這種方法利用了 OpenClinica 的 xsd 模式來驗證規則 xml 檔案,從而指導 Excel 提供一個用於處理規則 xml 資料的介面。

這種方法最適合 DiscrepancyNote 或 EmailAction 規則操作型別,因為它們沒有可重複的子節點。但是,這兩種操作型別是最常見的,處理大量規則是使用這種方法的主要原因。它還限於每個目標一個規則操作,因為 OpenClinica 規則驗證器要求具有相同目標的 RuleRefs 必須分組在同一個 RuleAssignment 節點中。一個用於在 Excel 所需格式(沒有分組)和 OpenClinica 所需格式(分組)之間轉換的 xsl 變換 可以在此處找到

對於其他操作型別,每個子節點(通常是一組 DestinationProperty 節點)都需要寫為單獨的規則分配,因為 Target 和 RuleRef OID 需要與規則操作節點位於同一表中。這是否會對 OpenClinica 行為產生任何負面影響尚未經過測試,主要是因為為每種操作型別建立單獨的規則定義更容易維護,即使這意味著偶爾會有一些重複的規則定義。

準備 XSD 檔案

[編輯 | 編輯原始碼]
  1. 複製 tomcat/openclinica.data/rules/rules.xsd 檔案(或者從 原始檔 中獲取)。
  2. 將 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>

準備電子表格

[編輯 | 編輯原始碼]
將 OpenClinica 規則分配節點對映到電子表格的圖片
將 OpenClinica 規則定義節點對映到電子表格的圖片
  1. 建立一個新的空白 Excel 電子表格
  2. 轉到“開發工具”選項卡並找到“XML”組(如果選項卡不存在,請轉到“檔案”->“選項”->“自定義功能區”並勾選“開發工具”)。
  3. 點選“源”。
  4. 在“XML 源”視窗中,點選“XML 對映”。
  5. 點選“新增”。
  6. 從之前的步驟中選擇已編輯的 rules.xsd 檔案。
  7. 在“多個根”視窗中,選擇 RuleImport 作為根節點。
  8. 點選“確定”。
  9. 現在應該在“XML 源”視窗中顯示一個 RuleImport_Map 樹。
  10. Ctrl+點選選擇 Target-value、RuleRef-OID 和所需的 Action 節點。
  11. 將所選內容拖放到電子表格上,這將建立一個表。
  12. 選擇 RuleDef 節點。
  13. 將其拖放到電子表格上,至少留出一個列空間。這將建立第二個表。

現在電子表格上應該有兩個表,一個用於 RuleAssignment 詳細資訊,一個用於 RuleDef 詳細資訊。這些表可以獨立排序/過濾,並且行數可以不同。最重要的是,為了使 OpenClinica 的規則有效,每個 RuleAssignment 都需要引用一個 RuleDef。

編寫新規則

[編輯 | 編輯原始碼]

根據需要在兩個表中輸入規則詳細資訊(請參閱此華夏公益教科書中的其他文章以獲取相關提示)。準備好上傳到 OpenClinica 時,在“開發工具”選項卡中的“XML”組中,點選“匯出”併為 xml 檔案選擇一個檔名。如果對映正確完成,匯出的 xml 檔案將以正確的格式進行上傳。

如果需要,Excel 可以在匯出步驟中根據 xsd 模式驗證規則資料。在“開發工具”選項卡中的“XML”組中,點選“對映屬性”,然後在匯出之前勾選“驗證匯入和匯出時的資料是否符合模式”。驗證步驟將發現結構性問題,例如資料型別錯誤(布林欄位必須為小寫 'true' 或 'false' 等)或缺少必填欄位。驗證步驟不會檢查內容,例如規則表示式、規則目標等,因為從 xsd 的角度來看,它們可以是任何字串(但這會在上傳到 OpenClinica 時進行檢查)。

編輯現有規則

[編輯 | 編輯原始碼]

可以將從 OpenClinica 下載的現有規則 xml 檔案匯入到按上述方式設定的電子表格中。在“開發工具”選項卡中的“XML”組中,點選“匯入”,然後選擇要處理的規則 xml 檔案。規則詳細資訊將填充對映的表。

如果匯入的規則檔案中包含未對映到電子表格的操作型別,則規則定義節點將顯示,但這些未對映型別的規則操作節點將不會顯示,因為沒有為它們建立列。但是,可以按照上述方式進行對映。

華夏公益教科書