閻玉婷,李雨紅,鄭水飛
(江西中醫藥大學計算機學院,南昌 330004)
中醫藥是我國重要的衛生、經濟、科技、文化和生態資源,傳承創新發展中醫藥是新時代中國特色社會主義事業的重要內容[1]。隨著中成藥使用規模的不斷擴增,藥品說明書不明確、用藥不規范、安全性評價體系不完善等問題逐漸顯現,且目前針對中成藥多背景數據而建立的數據庫和應用系統較少,很多中成藥信息得不到及時的更新,不同數據之間的關系也難以得到很好的挖掘利用,這一定程度上給患者的健康安全帶來隱患,導致用藥不良事件的發生[2]。
基于此,本文構建中成藥多背景數據協作共享與可視化系統,旨在通過中成藥數據資源協作共享及可視化方式增強中成藥數據管理,降低中成藥不良反應發生率,實現信息交流與共享,積極為中成藥使用規范化和中醫藥行業發展提供服務。
中醫藥信息資源所涉及的范圍與學科越來越廣泛,海量的中醫藥數據通過互聯網、各類醫療終端設備等渠道產生,圍繞這些數據的采集、分析、應用而展開的研究也日益豐富。為了實現面向用戶臨床與科研需求,建立多學科、多類型的個性化、特色化中醫藥信息數據存儲與研究利用,更好地服務于讀者和用戶[3],中醫藥信息科研工作者們一直以來都想要尋找便捷、有效的方式來對這些信息資源進行管理,來實現數據資源的有效利用。
目前,我國已經建立了一些中醫藥科技文獻數據庫和中醫藥事實型數據庫[4],這些數據庫是我國中醫藥信息數字化的成果,為中成藥的應用和研究提供了有力支撐。但這些數據庫也存在以下問題:一是數據內容單一化明顯,具體表現為數據來源主要是醫院信息科和相關研究機構,且這些數據大多是屬于同一類型,如中成藥本身具有的屬性:藥品名稱、成分、主治等,缺乏流通信息,如廣告招商等。二是數據獲取和更新不及時,目前中成藥數據信息的標準化水平不一,導致數據清洗復雜程度增加,工作量增大,進而降低了數據更新的及時性。三是數據展示直觀性不好,數據的呈現方式主要是表格和列表,難以對數據進行直觀的理解和分析。
在計算機分類科學中,利用人眼的感知能力對數據進行交互的可視化表達以增強認知的技術,稱為可視化[5]。可視化不僅僅是對海量數據的簡單描述,也能通過數據挖掘技術,整合各類資源,幫助人們挖掘到不可見或難以直接顯示的數據關系,從而提高數據分析、決策的能力以及數據價值轉化的效率。隨著數據可視化在中醫藥領域的研究、探討、應用日益增多,暴露出的問題也隨之增多,主要為以下幾個方面:①不同領域可視化的表示方法各不相同,難以提出規范性的可視化方法;②隨著數據網的復雜程度越來越高,單一的可視化方法難以表現出數據的內在特性與價值;③中醫藥數據之間多存在強關聯,不同的處理方式、顯示程度會導致可視化結果不明顯[6]。基于此,許多學者嘗試對可視化進行研究和探索,例如:肖永飛[7]提出了醫學數據三維可視化交互的解決方案;李正等[8]對中藥制藥過程中運用的數據集成、數據挖掘與可視化技術進行了具體的探討。
在此基礎上,本文論述了如何利用Python爬蟲技術和PostgreSQL 數據庫,構建涵蓋中成藥基礎信息、技術與標準、流通廣告、行業政策等多背景的動態數據庫,同時結合ECharts 可視化技術探究數據價值、展示數據關系,以期改善中成藥多背景信息孤立現象,為領域專家進一步研究提供數據服務支持。
基于前期的實踐調研和文獻查閱進行系統需求分析,利用爬蟲技術從互聯網獲取中成藥相關數據,對數據進行實體識別、屬性提取、整理分析,存入對象關系型數據庫PostgreSQL,構建中成藥多背景動態數據庫;同時采用數據挖掘等技術對數據關系進行多維度探討,最后利用具有良好擴展性和兼容性的Flask 框架和ECharts 技術實現數據的增刪改查、批量導入導出和可視化等功能。系統具體實現流程如圖1所示。

圖1 系統具體實現流程
根據系統功能需求分析,將數據整理識別出12 個實體,并為每個實體提取相應的屬性,以期提高數據的標準化和規范化。系統主要實體間聯系E-R 圖如圖2 所示,系統主要實體的屬性見表1。

表1 系統主要實體的屬性表

圖2 系統主要實體間聯系E-R圖
系統在用戶信息表中專門設置“用戶權限”屬性,只有擁有相應權限的賬號,才能對系統進行操作,以期解決中成藥數據庫建設過程中出現的數據庫完整性、安全性和隱私保護問題。用戶權限與功能對應圖如圖3所示。

圖3 用戶權限與功能對應圖
本文采用“前端頁面+Flask 框架后端+PostgreSQL 數據庫”的架構設計,系統具有較強的擴展性和可維護性。前端主要應用HTML、CSS、JavaScript 設計Web 前端頁面,包括主頁、登錄/注冊、中成藥、藥典數據、藥品招標、相關政策等頁面。中成藥數據動態采集與可視化系統的實現分為前端和后端兩個部分。后端則是使用Python 語言連接數據庫,與前端進行數據交互,審核和響應用戶的操作,實現中成藥數據的分頁展示、增刪改查、批量導入導出等功能。系統架構和交互流程如圖4所示,系統頁面結構設計如圖5所示。

圖5 系統頁面結構設計
2.3.1 數據增刪改查模塊設計
系統在每個中成藥數據共享頁面都提供了查詢功能,用戶既可以進行模糊查詢,也可以針對某一信息進行精確查詢,以便用戶更快捷地獲取信息。該系統每一個頁面提供的查詢字段不同,是通過相關性分析和熱度分析篩選出對用戶而言更有價值的字段,在保證數據有用性的同時,也使系統簡潔美觀,從而提高用戶的使用體驗。一般用戶和科研工作者可以登錄系統查詢中成藥的處方、功能主治、注意事項等中成藥相關技術指標,中成藥生產商則可以對藥品廣告、批準文號、招標信息等流通信息進行查詢。
系統在為用戶提供中成藥多背景數據共享的同時,還允許用戶之間相互協作,共同完善數據庫系統內的數據資源。但為了保障數據庫系統內數據的安全性和系統運行時的穩定性,增加數據、刪除數據、修改數據功能只對權限用戶進行開放,游客用戶和普通用戶無權進行此類操作。
(1)添加數據功能:該功能可以幫助用戶將來源不同的數據資源整合為可用的數據集,為用戶提供更加便捷和高效的數據協作共享服務,用戶在輸入對應的字段后即可完成對單條數據的增加。
(2)刪除數據功能:中成藥數據有著較強的時效性,系統中存儲的數據可能會隨著時間的推移而變得過時或者出現重復存儲的情況,用戶可以使用刪除數據功能來釋放存儲空間,降低數據冗余。當用戶點擊刪除時,系統會彈出確認提示框,點擊“確認”按鈕后即可完成刪除操作。
(3)修改數據功能:當用戶發現某條數據有細微差錯或流通信息有滯納性時,可以使用該功能對該數據進行修改和更新。用戶點擊某條數據的“編輯”按鈕后,系統將彈出該條數據內容編輯框,用戶可以對相應字段進行更改,點擊更新即可完成對數據的修改。
2.3.2 數據批量導入導出模塊設計
為了提高對數據的處理效率,減少手動輸入數據的錯誤率,系統提供了批量導入數據和批量導出數據的功能。用戶點擊“上傳文件”按鈕,在彈出的文件選擇框中選擇已根據字段整理好的Excel 文件,再點擊“批量導入”按鈕即可完成大量數據的寫入。這使得用戶不必一條條添加數據,大大節省了時間,提升了協作效率。同時,用戶也可以根據需求批量導出數據。用戶可以對整個數據庫進行下載,也可以先對數據進行條件檢索,然后點擊“導出數據”按鈕將檢索結果以Excel 的格式保存到本地電腦,便于對數據進行分發和研究。同樣因為考慮到數據安全和系統穩定性,該部分功能也只面向權限用戶開放。
2.3.3 數據可視化與應用模塊設計
數據可視化可以將數據之間潛在的關系以圖表的形式形象直觀地展示出來,幫助用戶從不同的角度分析和研究數據,使其更好地理解和發現數據的規律和趨勢。因此,該系統將爬取到的中成藥大數據進行清洗與整合,將有價值的藥品數據用不同的ECharts 圖表展示出來,為用戶提供可視化服務。同時,對中成藥成分和說明書進行挖掘,分析中成藥中含有的有毒成分、用法用量、不良反應等數據,構建中成藥知識圖譜,實現對中成藥的風險預警,幫助用戶做出更安全的用藥決策。
(1)查詢數據:當用戶在頁面輸入相應的檢索條件時,系統通過request()方法獲取前端表單傳來的各字段內容,連接數據庫,通過‘SELECT * FROM’查詢語句實現對數據的檢索,最后使用render_template()方法將數據傳到前端頁面完成數據的查詢。
(2)添加數據:系統將通過request()方法獲取用戶在彈出的數據添加框中填寫各字段信息,再在后端定義常量來接收這些數據,通過比對數據庫,查詢是否已存在該條數據,如果不存在,就將數據存入數據庫并將其更新到系統頁面,否則添加失敗。系統添加數據功能頁面如圖6所示。

圖6 系統添加數據功能頁面
(3)刪除數據:用戶進行刪除操作時,系統將會彈出一個確認框以供確認,有效地防止用戶因操作不當而誤刪數據的情況。如果用戶確認刪除該條數據,系統后端將調用相應的remove()方法完成對數據的刪除。
(4)修改數據:當用戶需要對某條數據進行修改時,可以在彈出的數據修改框中修改數據內容并點擊“更新數據”按鈕,前端將數據傳給后端相應的update()方法進行處理,再將處理結果存儲到數據庫,同時傳回前端對系統頁面進行更新,從而完成對數據的修改。
批量導入數據功能主要使用Python 語言的xlrd類庫實現。當用戶點擊“上傳文件”按鈕把Excel 文件信息傳遞給系統,后端將接收到文件并通過for 循環完成對文檔的掃描讀取,最后使用insert into 語句將數據存入對應的數據表中。系統批量導入數據功能頁面如圖7所示。

圖7 系統批量導入數據功能頁面
批量導出數據功能主要使用Python 語言的xlwt 類庫實現,當用戶點擊“導出數據”按鈕后,響應頭會將文件類型傳遞給瀏覽器,系統后端使用Workbook()方法創建Excel文件,最后通過for 循環和write()方法將數據寫入單元格,完成數據的批量導出。
ECharts 是一款基于JavaScript 的數據可視化圖表庫,提供直觀生動、可交互、可個性化定制的數據可視化圖表。它能夠兼容絕大部分主流瀏覽器,可以跨平臺流暢運行,并且具備千億級數據可視化渲染能力[9]。同時ECharts 還支持各種圖表相互組合[10],有助于解決因可視化方法單一而難以表現數據的內在特性與價值的問題。
本系統通過對數據關系的挖掘,選取了用戶感興趣的部分,如特殊性藥材信息、中成藥保護品種信息、中成藥廣告信息、中成藥熱詞進行可視化展示,頁面詳情如圖8所示。

圖8 系統可視化圖表頁面詳情
(1)特殊性藥材毒性分析:采用餅狀圖展示不同毒性的中藥材的數量和占比,用戶可以點擊“查看詳情”,進一步查詢不同級別含有毒性藥材制藥量的相關分析。
(2)中成藥保護品種劑型:采用柱狀圖展示中成藥保護品種的劑型分布。
(3)全國中成藥廣告分布:以中國地圖為載體,以省份為統計單位,用深淺不同的顏色表示該省份的中成藥廣告數量,用戶可以非常直觀地了解中成藥廣告分布情況。
(4)中成藥保護終止日期:將柱狀圖和折線圖結合起來,從多維度展示到達終止日期的中成藥保護品種的數量的逐年變化趨勢。
(5)中成藥熱詞詞云:詞語字體越大,索引熱度就越高,可以進一步反映當下中成藥研究熱點。
3.4.1 構建中成藥知識圖譜
知識圖譜是在互聯網大數據背景下產生的一種新穎的知識管理與服務模式,能夠捕捉并呈現事物之間的關聯關系,可以將瑣碎零散的知識片段連接起來[11]。知識圖譜能將多背景的領域概念整合起來,更好地反映中成藥數據中尚未發現的關聯性和規律性,為解決中醫藥領域的“知識孤島”問題提供了理想的技術手段[12]。同時,知識圖譜能夠為用戶提供全面、準確的中成藥數據支持,幫助用戶進行用藥決策,提高用藥決策的準確性和效率。
構建知識圖譜最主要的一個步驟就是把數據從不同的數據源中抽取出來,然后按一定的規則加入到知識圖譜中,即知識抽取。本文選取中成藥名稱作為實體結點,以成分、功能主治、用法用量、不良反應和禁忌為一級屬性結點,并以其相應的內容作為二級屬性結點,運用ECharts 建立中成藥知識圖譜。以“驚風散”為例,通過知識圖譜可以發現驚風散主治腹脹、積食、小兒急驚風等病癥,會出現惡心、嘔吐、便溏等不良反應。“驚風散”知識圖譜如圖9 所示。同時,我們用不同的顏色將實體結點和一級屬性結點予以區分,并且在知識圖譜左上角設置了“自定義展示內容”的功能,以解決知識圖譜關聯過多結點而影響展示效果的問題[13]。

圖9 “驚風散”知識圖譜
3.4.2 中成藥知識圖譜可視化應用
本系統以《中華人民共和國藥典(2020版)》[14]收錄的83 種有毒中藥(以半數致死量(LD50)分級法[15]為依據)建立“大毒”“有毒”“小毒”列表,將用戶輸入的中成藥的成分與三個列表分別進行遍歷對比,得到有毒成分,實現中成藥成分安全性風險分析功能。同時,將中成藥說明書中的注意事項從數據庫中提取出來,結合前文構建的中成藥知識圖譜,將數據展示到頁面,從而建立中成藥風險預警模塊。用戶可以使用該模塊來檢索某中成藥的有毒成分以及服用該藥時的注意事項,還可以通過知識圖譜的形式了解其成分、功能主治、用法用量等信息。“驚風散”的風險預警界面如圖10所示。

圖10 “驚風散”的風險預警界面
本文講述了中成藥多背景數據協作共享與可視化系統的設計與實現,在調查和分析國內外研究現狀的基礎之上,運用Python 爬蟲技術采集中成藥大數據,對數據進行實體識別、屬性提取、整理分析,并將其存入PostgreSQL 數據庫,構建包括中成藥政策、技術與流通等多背景的數據庫。通過使用Python 輕量級框架Flask 設計實現系統增刪改查等相關功能,應用HTML 頁面框架、CSS頁面樣式、JavaScript等技術進行前端頁面設計。同時,為了深度挖掘探討中成藥數據之間的潛在映射關系,除了使用ECharts 可視化圖表對數據進行基礎展示之外,還構建了風險預警知識圖譜,使人們對中成藥的成分、用法用量、服用禁忌有更清晰的了解,從而降低中成藥不良反應事件的發生率。目前,本文設計實現的系統仍然存在著不足和缺陷,在后續研究中將繼續從以下三個方面深入研究:
(1)增強系統數據覆蓋面。目前本系統數據庫中尚無中成藥生產廠家、市場銷售等相關數據,后續將通過爬蟲技術從互聯網中收集或依靠用戶的協作共享來建立該部分數據的數據庫,進一步提高數據庫的完整性。
(2)優化數據庫系統結構。隨著數據量的增加,后續將嚴格按照數據規范化理論對數據庫進行優化,控制數據冗余,避免異常操作,提高系統的穩定性、數據庫的安全性,更好地確保數據庫中數據的有效性和一致性。
(3)深入探究數據隱藏關聯。目前系統風險預警模塊尚且只能進行有毒成分的檢測以及簡單的知識圖譜檢索,未能深度分析有毒成分與中成藥規格用量和不良反應之間的關系。后期將繼續挖掘中成藥相關數據,豐富優化風險預警知識圖譜,不斷提高中成藥用藥的安全性,促進中成藥現代化、信息化發展。