周思銘,何 佳
(西安思源學院,西安 710038)
提出ATERDE與AHP的數據引力混合科室分診算法和基于向量模糊化與自適應長度裁剪的混合過濾醫生推薦算法[1-2],根據患者輸入主訴癥狀、醫生擅長領域,為患者推薦與其病情相關的醫生,實現高效就醫,合理化利用醫院資源,智能導診模型如圖1所示。

圖1 智能導診模型Fig.1 Intelligent referral model
1)數據引力分類算法。引力分類算法具有良好的準確度及穩定性,可用于多種領域,其分類原理如圖2所示。

圖2 數據引力分類算法原理Fig.2 Principle of data gravity classification algorithm
2)基于ATERDE與AHP的數據引力算法。這是引力分類算法在醫療導診系統中的一種應用,根據醫生個人信息及病人就診記錄通過ATERDE算法挖掘醫生與病人之間的時序關系及規律,用AHP算法對醫生推薦結果進行深入分析及決策[3],利用醫生與患者之間的相互作用,得到精準高效的醫生推薦結果,專家根據其豐富的知識經驗利用AHP分析方法獲取病癥-專家經驗權重,根據患者數據信息利用ATERDE算法獲取客觀權重信息,利用全局數據引力算法與局部引力算法預測出最大可能推薦科室,算法流程如圖3所示。

圖3 數據引力算法流程Fig.3 Data gravity algorithm flow
采用B/S模式進行開發設計,選擇Vue搭建系統前端,使用ElementUI制作網頁,緩解前端開發的代碼壓力。后端采用Django 框架進行搭建。Django框架具有很多功能強大的第三方插件及代碼復用的特點,服務方式便利,后臺開發過程中,可以以插件形式出現并為系統提供服務。醫生推薦導診系統需具備存儲時間長、數據庫容量大的特點,故設計采用MySQL及Redis數據庫實現。
該系統的需求主要包括功能性需求與非功能性需求,其中功能性需求主要滿足醫生推薦、預約掛號、患者就醫歷史數據查詢等。非功能需求要求本系統具有可靠性、穩定性、兼容性等特征。整個系統的邏輯概念分為用戶層、邏輯層及數據層三部分,架構如圖4所示,其中用戶層滿足患者和醫生的需要進行用戶注冊、信息查詢、預約掛號、就醫診斷等。邏輯層主要滿足系統的邏輯結構,進行用戶信息管理、醫院科室管理、醫生導診服務等。服務層主要滿足患者數據的存儲、數據文件的調用及歷史數據的保存。

圖4 系統邏輯概念Fig.4 System logic concept
數據流如圖5所示。就診人在使用系統時需提前進行注冊,完善相關信息,填寫病狀信息或就醫記錄,向系統發出掛號信息。該系統根據相關信息進行智能推薦,完成就醫流程。

圖5 數據流Fig.5 Data flow
基于ATERDE與AHP的數據引力算法智能導診系統的E-R圖如圖6所示。通過后臺管理就診人和醫生,就診人需提交個人信息,包括姓名、身份證號、年齡、性別、聯系方式,醫生提交個人簡介、職稱、擅長領域、科室,系統根據就診人的需求及癥狀信息智能推薦醫生,完成就醫流程。

圖6 智能導診系統的E-R圖Fig.6 E-R diagram of intelligent guidance system
智能導診系統主要由用戶注冊、預約掛號、智能導診、醫生推薦、醫生診斷、藥品管理、掛號繳費等部分組成,每個模塊有相應的子模塊。其中用戶注冊為就診人根據系統指導完成信息填報及相關操作。預約掛號提供提前掛號服務,就診人根據系統推薦選擇合適的醫生進行掛號。智能導診根據就診人的狀況完成科室推薦及相關醫生查詢。醫生推薦是在智能導診完成后,系統根據ATERDE與AHP的數據引力算法實現醫生推薦。醫生診斷是醫生對患者的癥狀信息進行診斷、醫囑等。藥品管理是醫生根據患者病情開藥,后臺管理員也可對藥品庫存進行管理及調配。掛號繳費是為患者自動生成掛號、藥品繳費信息,方便繳費并生成電子病例,為下次就診提供參照。其時序圖如圖7所示。

圖7 時序圖Fig.7 Sequence chart
基于ATERDE和AHP數據引力分類算法的醫生推薦導診系統科室推薦部分主要完成就診人系統填寫,系統根據用戶信息顯示就診科室及醫生信息。其核心代碼如下:
classDepartmentRecommendation:
def__init__(self,department_data):
self.department_data=department_data
defrecommend_department(self,symptoms):
department_scores={}
fordepartment,attributesinself.department_data.items():
score=0
forattribute,weightinattributes.items():
ifattributeinsymptoms:
score+=weight
department_scores[department=score
recommended_department=max(department_scores,key=department_scores.get)
returnrecommended_department
根據就診人填寫的相關信息,醫生進行醫囑及藥品推薦,系統根據醫生填寫記錄完成診費計算,生成問診記錄。其核心代碼如下:
classDoctorRecommendation:
def__init__(self,doctor_data):
self.doctor_data=doctor_data
defrecommend_doctor(self,department):
ifdepartmentinself.doctor_data:
returnself.doctor_data[department]
else:
return“Nodoctorsavailableforthisdepartment.”
用戶管理模塊主要完成對就診人及醫生的信息管理,可以看到科室管理、醫生管理、藥品管理、患者管理四個側邊欄。其核心代碼如下:
classUserManagement:
defadd_user(self,user_id,name,age):
self.users[user_id] = {“name”:name,“age”:age}
defget_user_info(self,user_id):
ifuser_idinself.users:
returnself.users[user_id]
else:
return“Usernotfound.”
為了進一步檢驗系統的可行性,采用黑盒測試系統的基本功能模塊,采用白盒測試系統結構的完整性,對系統登錄、信息監測、基本功能模塊等內容進行測試,測試內容如表1所示。系統測試可驗證用戶身份信息,檢驗系統是否具有較強的信息檢索功能及信息測試功能,以保證信息在各個模塊傳輸中的完整性,使系統實現最優性能。

表1 主要測試說明Tab.1 Main test description
為了檢驗測試的完整性,對科室推薦模塊進行用戶性別、年齡、癥狀等信息測試,點擊科室推薦按鈕,得出5條測試數據,如表2所示,每條測試數據包含就診人的年齡、性別等信息,經分析表明推薦結果合理,系統設計符合要求。

表2 系統測試結果Tab.2 System test result
該系統可提升臨床診斷的準確性及效率,為醫生提供有力的決策支持。