余學杰 ,金香蘭,李書珍,李曉燕,張允嶺*
(1、北京中醫(yī)藥大學信息中心,北京 100029; 2、北京中醫(yī)藥大學附屬東方醫(yī)院,北京,100078)
不同地域的多家醫(yī)院協(xié)作開展醫(yī)學研究項目,需要采集各單位的研究數據。對于多家研究單位處在不同的地理位置的協(xié)同項目,目前較為普遍的研究數據采集方法是利用計算機網絡。將研究數據收集到網絡數據庫中是利用計算機網絡采集數據的一種方式。
《中醫(yī)防治中風病技術轉化與推廣研究》項目要求對網絡采集數據進行的修改留痕,即所有原始數據和修改過的數據及修改人、修改日期等都將作為痕跡自動記錄,通過此記錄可方便地查詢到所有數據處理的痕跡。醫(yī)學研究數據庫中錄入數據的真實性、準確性是醫(yī)學研究的基本要求,數據修改留痕是研究數據的管理的必要措施。
《中醫(yī)防治中風病技術轉化與推廣研究》項目的數據錄入利用Internet的瀏覽器及ASP技術,數據存儲在網站的SQL Server 2005數據庫中。
由于網絡數據采集留痕的技術文獻資料非常少,所以對網絡數據采集如何留痕進行了研究和設計。
《中醫(yī)防治中風病技術轉讓與推廣研究》用“中風后輕度認知障礙中醫(yī)綜合干預方案病例報告表”和“中風后認知障礙社區(qū)中醫(yī)藥分層防治模式觀察表”采集患者的基本數據和醫(yī)務人員對患者近兩年治療隨訪的醫(yī)療數據。該項目要求參加研究的醫(yī)護人員往網絡數據庫中錄入病例報告數據時,采用二次錄入。兩次錄入內容存儲在不同的表內,進行兩表之間的數據核對,糾正錄入的錯誤,確保錄入數據的正確。
二次錄入設計方案是:首先將紙質原始數據錄入到數據庫的A表中,二次將紙質原始數據重復錄入到數據庫的B表中。二次錄入時邊錄入系統(tǒng)自動與一次錄入內容進行核對,與一次錄入的數據不符,系統(tǒng)提示差異信息。如果是二次錄入的錯誤,直接修改二次錄入錯誤,同時將數據、錄入時間、錄入人登記在B表指定字段保存在案,作為基準數據,不得修改。如果是一次錄入錯誤,只有將一次錄入錯誤更改后,二次錄入才可以進行。信息的修改只在A表中進行,對A表所有的修改都要記錄修改的人員、日期時間、原內容和修改后的內容。
與其它需要錄入功能的網站比較,《中醫(yī)防治中風病技術轉化與推廣研究》項目網站增加了留痕功能。實現此功能需要對網站進行整體的相應設計,并非在錄入功能的網站簡單地再疊加一項功能。“中風后輕度認知障礙中醫(yī)綜合干預方案病例報告表”和“中風后認知障礙社區(qū)中醫(yī)藥分層防治模式觀察表”的留痕設計原理是一樣的,這里僅以“中風后輕度認知障礙中醫(yī)綜合干預方案病例報告表”的留痕設計為例展開討論。網站整體流程設計如圖1,根據自動記錄修改人、修改時間和修改的數據的目標對數據庫和網頁進行了通盤的考慮和設計。
受SQL Server數據庫技術參數限制,每個對患者的各隨訪階段都需要用多個數據表存儲病例報告數據。多個數據表之間的關聯字段設置為“試驗單位”、“患者編號”和“隨訪階段”。為了記錄修改的人員,數據庫中的數據表和網頁頁面都要進行相應的設計。每個數據表A中都有記載修改情況的字段,每個數據表B都有記載錄入人和錄入日期時間的字段。
從網站流程圖可以看到,修改人員更改信息前有登錄和功能選擇的步驟,在修改人員登錄和選擇修改表格的網頁頁面編寫服務器端腳本,將“試驗單位”、“患者編號”、“隨訪階段”和“修改人員”這些選擇和錄入內容作為Session對象。HTTP協(xié)議是一種無狀態(tài)協(xié)議,利用HTTP無法跟蹤用戶,當服務器完成用戶的請求后,服務器將不能保持與用戶瀏覽器的連接,用戶在網站的多個頁面間切換時,服務器無法跟蹤用戶的訪問。ASP的Session對象的引用彌補了這個缺陷。當用戶在網站的多個頁面間切換時,Session對象會跟蹤到用戶訪問的頁面,服務器端能夠獲取用戶在網站的活動情況。Session對象是針對單個用戶的,用戶在網頁頁面間跳轉時,只能訪問自己的Session變量,無法訪問其他用戶的Session變量。Session的作用時間是從瀏覽者登錄開始,直至瀏覽者離開網站。Session對象的功能特點適合在跟蹤修改人員修改的表格時應用,這樣只要修改人員對數據表的數據進行了修改,在記載修改情況的字段中會將修改人的Session變量值作為字段值的一部分存儲在字段中,達到對修改人員留痕的目的。
圖1 網站錄入/修改的基本流程
網站設計中為修改表格功能建立了單獨的通道。修改流程與錄入流程中的網頁界面基本相同,但是其中編寫有不同的腳本程序,保證了留痕功能的實現。在修改A表的各個網頁頁面編寫腳本程序,利用腳本獲取當前日期和時間函數得到系統(tǒng)的日期和時間,只要修改人員對數據表的數據進行了修改,在記載修改情況的字段將實時獲取的系統(tǒng)時間作為字段值的部分內容存入數據表,達到對修改時間實時跟蹤的目的。
對ASP來說,可用于編寫服務器代碼的語言不止一種[2],常用的有VBScript和JavaScript。兩種腳本語言都提供了獲取系統(tǒng)日期時間的功能。在VBScript中,有獲取系統(tǒng)日期時間函數Now,在JavaScript中有獲取日期時間的對象Date[3]。腳本語言功能的支持使得修改日期時間的留痕成為了可能。
一次錄入流程中各個錄入網頁界面對于數據庫的操作都屬于插入記錄操作,與更改記錄是兩條不同的途徑。修改操作的邏輯順序在一次錄入之后,如果未進行某表格的一次錄入而操作修改,系統(tǒng)會進行錯誤提示,終止修改操作。修改流程的網頁界面對于數據庫的操作都屬于更新記錄,在字段更新內容被保存之前提取原字段信息,將原信息和修改后的信息同時存入記載修改情況字段。由于只有一個更改數據的進口,無其它途徑,修改流程中的網頁腳本程序將記錄信息變更的痕跡,修改流程中不設計對記載修改情況字段的更新,所以該字段能夠完整地保留一條記錄所有的變更。
在這樣的網站設計中,如果修改人員對某表格A中的一條記錄的若干字段進行了更改,其表格A中該條記錄的記載修改情況的字段中就會保存有“日期時間,修改人,字段名原字段值和現字段值,字段名原字段值和現字段值,……”的內容。該字段保存時采用原字段值連接當前修改內容,字段中保留了本記錄全部數據修改的痕跡。
查詢記載修改情況的字段,就會瀏覽到歷次修改人、修改日期時間、修改內容。
數據修改的留痕的管理功能必須融合在網站數據采集的通盤設計中。留痕功能涉及到錄入的表格、一次錄入的內容、與一次錄入的時間順序、登錄人員功能選擇等一系列與網站其它功能相關的環(huán)節(jié),它不可能與其它功能脫離。各種功能整體考慮、相互借用,才能實現系統(tǒng)的最優(yōu)化設計。任何系統(tǒng)都是一個有機的整體,它不是各個部分的機械組合或簡單相加,系統(tǒng)的整體功能是各要素在孤立狀態(tài)下所沒有的新質。系統(tǒng)中各要素不是孤立地存在著,每個要素在系統(tǒng)中都處于一定的位置上,起著特定的作用。要素之間相互關聯,構成了一個不可分割的整體。只有將所有采集數據的功能綜合考慮,才能實現研究數據的科學管理。
在時間跟蹤的設計中,即可獲取網站系統(tǒng)日期時間又可獲取客戶端的系統(tǒng)日期時間。如果獲取網站系統(tǒng)的日期時間,用戶修改數據后保存數據時的時間與獲取的時間會有一些時間差;如果獲取客戶端系統(tǒng)時間,可以實時記載修改人員的修改時間,但客戶端時鐘錯誤會將錯誤的時間記錄在案。目前計算機操作系統(tǒng)都具有與Internet時鐘服務器自動同步功能,在客戶端獲取日期時間,會有較好的效果,但是故意改動客戶端的日期時間,網站設計中需要防范。
利用計算機網絡采集科學研究數據,數據采集過程的留痕是可以實現的。
采集數據的網站的設計需要對各種功能的實現進行全局的考慮,才能實現整個系統(tǒng)的優(yōu)化。
《中醫(yī)防治中風病技術轉化與推廣研究》項目修改留痕的研究實現了數據采集的留痕功能,它為科研數據網絡采集管理又提供了一種監(jiān)督方法。這種方法保證了采集數據的真實性和準確性,為研究數據的嚴格管理奠定了基礎。
參考資料
[1] 張景峰.《腳本語言與動態(tài)網頁設計》,北京:中國水利水電出版社,2004年8月版,第137頁
[2] 韓延峰.《即查即用ASP+VBScript函數與對象參考手冊》,北京:人民郵電出版社,2007年7月版,第19頁
[3] 韓延峰.《即查即用JavaScript核心對象參考手冊》,北京:人民郵電出版社,2007年7月版,第101頁-第117頁
[4] 楊孔雨.《信息系統(tǒng)基礎》,北京:清華大學出版社,2010年10月版,第12頁