王 杰 錢旦敏 婁 帥 何德福 韋玉芳 董建成*
1(南通大學醫學信息系 江蘇 南通 226001) 2(江蘇中康軟件有限責任公司 江蘇 南通 226001)
住院醫師規范化培訓是醫學畢業生接受繼續醫學教育的重要組成部分,目的是為各級醫療機構培養具有良好的職業道德、扎實的醫學理論知識和臨床技能,能獨立、規范承擔本專業常見疾病診療工作的臨床醫師。住院醫師規范化培訓效果的好壞也是檢驗一個醫院醫療水平高低的一項重要因素,對醫院的發展密切相關。
住院醫師規范化培訓管理工作涉及到的醫療數據具有瑣碎、繁雜的特點,由于醫學教育背景不同、醫院科室設置、醫院流程的差異,不同醫院在具體培訓管理上也無法避免存有差異[1]。為了規范培訓內容,保證培訓質量,利用信息化手段進行管理成為必然趨勢。
隨著大數據理念的出現,醫療行業迎來了大數據潮流,而醫療數據已經具備了大數據的基本特征:數據量大、數據種類多、價值高、價值密度低、產生快、處理快[2-3]。在系統的設計與開發階段,結合大數據“4V”特點,使得系統能夠承載多用戶的高并發讀寫,達到快速處理、快速響應的目標。為了存儲不同結構、體積大的數據,本系統部分模塊采用流行的非關系型數據庫MongoDB進行存儲,使系統擁有存儲海量數據的能力,在安全性、可靠性、擴展性和資源重復利用率上更勝一籌[4-5],為日后大數據研究與應用奠定基礎。
在我國,自1921年開始實行住院醫師培訓。2013年,伴隨著七部委發布的相關指導意見,標志著住院醫師規范化培訓在我國全面啟動。2014年8月在全國范圍內啟動第一批住培基地認定工作。不久,國家住院醫師規范化培訓管理信息系統建立,該系統整合了國家級和省級兩個平臺,使得國家和省級單位能夠全面掌握醫師培訓情況。截至2015年,半數以上省市已逐步建立滿足地方需求的住院醫師規范化培訓系統。然而,由于各個地方住培系統不統一,使得頂層信息系統難以高效地統籌各地方子系統,給國家級住培系統整合全國住院醫師培訓資源帶來一定的困難[6]。
在美國,全國已有上千家醫院接受住院醫師培訓,其管理制度和信息系統的運用不斷完善。在日本,醫院信息化建設開展得比較早,20世紀70年代末就率先提出了共享的醫院信息系統。在歐共體也開展了類似的“歐洲健康信息網絡戰略計劃”[7]。由于國外醫院信息化發展較早,積累了大量的經驗,技術相對成熟先進,從而為住院醫師規范化培訓系統的實現與應用奠定了良好的基礎。
無論是國家住院醫師規范化培訓管理信息系統還是各個培訓基地的住培系統都尚未采用非關系型數據庫進行存儲,而是采用傳統的關系型數據庫進行數據保存。醫療數據不僅量大而且結構復雜,在這數據急劇增長的“大數據時代”,傳統的關系型數據庫表現出明顯的缺陷:性能弱、靈活性和可擴展性差[8]。
在系統功能上,國家住院醫師規范化培訓管理信息系統在題庫管理和輪轉排班管理上尚有欠缺。
針對以上不足,基于大數據的住院醫師規范化培訓系統在部分模塊已采用流行的Nosql進行存儲,滿足大數據時代的需求。在系統功能上,新增題庫管理模塊和輪轉排班模塊,使得系統更加健壯和自動化。
在滿足國家和省級住培系統功能結構基礎上,本系統角色主要分為四類:住院醫師、指導醫師、專業基地負責人和管理人員。不同角色擁有不同的職責,相互關聯,相互協調,共同維持住院醫師培訓的信息化管理。
住院醫師進行規范化培訓時,需每日上報工作量,經指導醫師審核通過后計入培訓檔案。住院醫師日常管理還包括輪轉信息的填寫,病例上報,操作技能上報,教學、科研等情況上報,填寫問卷調查表(出科評價表),參加考試考核、申請出科等。其功能用例圖如圖1所示。

圖1 住院醫師用例圖
指導醫師即每個科室的管理人員,也就是帶教老師,應當嚴格按照住院醫師規范化培訓內容與標準的要求實施培訓工作,認真負責地指導和教育培訓對象。其最主要任務是負責住院醫師的日常考核和出科考核,出科考核原則上應當在培訓對象出科前完成,并由專業基地審核其真實性和有效性。指導醫師的功能需求包括:日常考核、出科考核、預約信息、問卷查看(出科評價表的查看)、知識庫學習、學員基本信息管理(包括個人信息、相關科室的學習情況)、出科審核、學員每日工作量審核等。其功能用例圖如圖2所示。

圖2 指導醫師用例圖
培訓基地由符合條件的專業基地組成。專業基地由本專業科室牽頭,會同相關科室制訂和落實本專業培訓對象的具體培訓計劃,實施輪轉培訓,并對培訓全過程進行嚴格質量管理。培訓基地、專業基地應當定期向所在地省級衛生計生行政部門或其指定的行業組織、單位報告培訓工作情況,接受檢查指導。其功能需求包括:學員信息管理、學員考核審核、學員輪轉記錄查看、預約信息等。功能用例圖如圖3所示。

圖3 專業基地負責人用例圖
醫院管理員擁有較多的管理權限,其功能需求包括:住院醫師規范化培訓管理相關文件材料的發布、學員錄取、學員信息管理、考核管理、基地申報、賬號審核、預約信息審核、輪轉排班等。其功能用例圖如圖4所示。

圖4 管理員用例圖
標準化:嚴格按照國家衛生計生委辦公廳關于印發《住院醫師規范化培訓基地認定標準(試行)》和《住院醫師規范化培訓內容與標準(試行)》等材料實施開發。
個性化:在國家級和省級住培系統結構標準的基礎上,醫院可根據自身的實際情況提出合理的需求進行個性化設計開發。
智能化:住院醫師規范化培訓系統實現了對培訓過程的智能化管理,在題庫訓練、輪轉安排、考試考核、統計分析等模塊上通過程序自動完成,易錯地方設有智能化提示等。
目前,常見的系統體系結構有C/S(客戶機/服務器)和B/S(瀏覽器/服務器)兩種。B/S結構隨著互聯網技術的興起而出現,主要優勢體現在:① 具有強大的數據操作和事務處理能力。② B/S體系維護方便,易于擴展。③ 適用于分布式集群系統,支持多層應用架構,更有利于大數據的研究[9]。
本系統采用流行的B/S體系結構,如圖5所示。無論是住院醫師、指導醫師、專業基地負責人還是管理人員,可以隨時隨地查看信息,作出重要指示。

圖5 系統體系結構示意圖
在技術架構方面,采用功能上可擴展、接口安全開放的松耦合架構,確保系統能夠適應各種應用環境,穩步運行。本系統以微軟.NET Framework 4.5為平臺,采用ASP.NET MVC5框架,將數據、業務、展現進行有效分離[10]。本系統架構是在三層的基礎上進行多層架構面向接口設計,各層之間通過依賴注入實現解耦,體現了系統設計的開閉原則。系統架構如圖6所示。

圖6 系統架構圖
數據訪問驅動層:本系統采用微軟官方ORM實體框架Entity Framework,簡稱EF,是一種基于關系型數據庫的數據存儲,提高軟件開發效率,有著僅僅通過改變配置就可以做到跨數據庫的能力。其中知識庫學習模塊,由于數據量巨大,數據結構復雜,包括:文本、圖片、音頻、視頻等多種格式,傳統的關系型數據庫在可靠性和性能方面越來越無能為力[11]。而日志管理模塊是一個完整醫療信息系統的重要組成部分,面對海量的日志信息,傳統的關系型數據庫顯得力不從心。為了減輕Web系統的巨大壓力,保證網站的可用性、增強網站性能、提升用戶體驗,知識庫學習和日志管理模塊已采用異步編程,結合C#官方MongoDB驅動,利用非關系型數據庫MongoDB進行實現。
數據訪問接口層和業務邏輯接口層:分別為DAL(數據訪問實現層)和BLL(業務邏輯實現層)提供接口規范、約束,實現多態,降低耦合。為了提高網站并發處理能力,提高應用程序執行速度、響應速度,采用異步編程模型,在數據訪問接口層定義公共的倉儲操作接口,供數據訪問層繼承使用。其中方法名稱以Async結尾并以泛型Task作為返回值。核心代碼如下:
Task
Task
Task DeleAsync(Expression
Task DeleAsync(TKey id);
Task DeleAsync(T entity);
Task
Task
Task> QueryAllAsync();
Task> QueryAllAsync(Expression
Task
Task
Task
Task
Task
Task
展現層:采用MVC框架進行分層開發,使得控制更加靈活,頁面更加干凈,復雜的項目更加容易維護,減少項目間的耦合[12]。通過MVC中Controller調用業務邏輯層的方法進行數據處理,進而通過View將數據在頁面展示。
各層之間調用不能任意相互調用,具有一定的規則。即展現層通過Controller層利用接口調用業務邏輯層的具體業務方法,業務邏輯層通過接口調用數據訪問層的核心代碼,服務器端做出響應返回數據,然后按照相反順序將數據結果在展現層呈現出來。多層架構的優點是依賴接口編程,結構清晰、安全性高、易于維護和擴展。
在國家級住培系統功能基礎上,按照國家級的數據標準、接口規范,以信息安全為切入點[6],設計出可與國家級住培系統對接的滿足醫院業務需求的住院醫師規范化培訓系統。主要功能模塊包括:住院醫師管理模塊、培訓基地管理模塊、帶教師資管理模塊、考試考核管理模塊、統計分析模塊、公共信息管理模塊、系統維護模塊。系統整體功能結構如圖7所示。

圖7 系統整體功能結構示意圖
3.4.1系統主要功能設計
住院醫師規范化培訓系統是在國家級住培系統的基礎上,開發的一套功能齊全的軟件。其中新增的題庫管理模塊實現靈活組題,可供學員隨時進行題庫訓練和日常考核。知識庫學習模塊采用流行的非關系型數據庫MongoDB存儲,提高多用戶并發訪問時的查詢效率,結合專業知識創建索引,提高查詢準確度。輪轉排班模塊利用排班算法將管理員從繁雜的手動排班中解放出來,使系統更加智能化、人性化。日志管理模塊包括系統日志和異常日志,系統每天都會產生大量的日志信息,為了對海量日志數據能夠進行高效分析和存儲,發掘隱藏在日志數據中的用戶訪問規律和模式,該模塊采用MongoDB進行存儲,利用其中的數據聚合工具MapReduce來實現數據的統計處理[13-14]。
1) 題庫管理模塊設計隨著醫院教學要求的提高,傳統的利用人工組卷不僅效率低下,而且工作量大、易出錯,浪費大量的人力物力,難以適應現代化的教學需求。管理員利用該系統可進行試題的批量導入,學員進行題庫訓練或日常考核時,系統可進行隨機組卷,靈活組題。
系統中設有五種題型,分別為:單選題、多選題、判斷題、名詞解釋和問答題,試題選項和答案均存于相應的表中。學員進行題庫訓練時,題型包括單選、多選和判斷題,系統可自動組卷改卷。以單選題為例,系統會自動從庫中隨機抽取50道單選題,將試題題目、選項以及答案以json的數據格式返回至前臺頁面。學員考試結束后,系統會以鍵值對key-value的形式將題號和答案保存至庫中,可供學員日后查看學習。其中單選題抽取核心代碼如下:
string code=CommonFunc.FilterSpecialString(Common-Func.SafeGetStringFromObj(Request[″code″]));
//獲取科目代碼,判斷內科還是外科
var OptionList = OptionService.QueryAllAsync(u=>u.SubjectCode==code).OrderBy(u=>Guid.NewGuid()).Take(50);
//隨機取50道相應科目下的單選題
return Json(OptionList,JsonRequestBehavior.AllowG-et);
//結果以json格式返回
2) 知識庫學習模塊設計住院醫師在輪轉過程中可以通過知識庫學習進行知識積累與管理,但面對浩瀚的知識數據,如何進行信息的定位與準確檢索變得尤為重要。本系統采用Lucene.NET全文檢索開發包,基于盤古分詞的詞庫分詞算法,實現培訓知識庫的快速搜索功能,底層數據庫采用MongoDB,可對圖片、音頻、視頻等大文件數據進行存儲。多用戶查詢時,能夠高效、快速地返回結果。相比較于傳統關系型數據庫,不僅提高了檢索速度,而且提高了檢索的準確度。
3) 輪轉排班管理模塊設計當培訓人數較多時,輪轉排班成為培訓管理的難點。大量住院醫師的輪轉排班既要符合個人培訓計劃,又要滿足臨床科室的工作安排。該系統通過特定的算法完成學員的自動排班,既減輕人工排班的工作量,減少排班差錯,又有利于臨床工作的安排[1]。本系統輪轉排班模塊包括:輪轉科室管理、指導醫師分配、學員輪轉分配和查看輪轉排班四個模塊。
首先對專業基地下的輪轉科室進行設置,完畢后進入指導醫師分配模塊,對該專業基地下的所有指導老師進行科室分配。接著進行學員輪轉分配,該模塊包括兩步:生成輪轉方案和分配學員。在輪轉方案生成之前,應先設置該專業輪轉開始時間和結束時間并對專業下輪轉的科室順序進行調整,最后保存輪轉方案。其中輪轉方案生成核心代碼如下:
function Generate() {
…
var RotaryBeginTime = (″#RotaryBeginTime″).val();
//獲取輪轉開始時間
var RotaryEndTime = (″#RotaryEndTime″).val();
//獲取輪轉結束時間
var strHtml = ″…″;
//用于拼接html代碼
for (var n = 0; n < (″#selectRight option″).length; n++) {
//根據調整好的輪轉科室數循環產生tr標簽
strHtml += ″
for (var j = 0; j < (″#selectRight option″).length; j++) {
//根據調整好的輪轉科室數循環產生td標簽
var k;
for (var i = 0; i < jsonRes.length; i++) {//jsonRes為專業基地下設置好的輪轉科室相關數據
if ((″#selectRight option:eq(″ + j + ″)″).val()== jsonRes[i].DeptCode) {
//調整好順序的輪轉科室與專業基地下設置好的輪轉科
//室一致時執行以下代碼
k = i;
//根據輪轉開始時間、結束時間和jsonRes值對輪轉方
//案下相關字段進行計算賦值
…
}
}
RotaryBeginTime = countNextTime(RotaryBeginTime, jsonRes[k].RealTime);
//計算下一個科室的輪轉開始時間
}
strHtml +=″...″;
//拼接html標簽,并綁定value值用于保存
}
strHtml += ″…″;
$(″#RotaryScheme″).append(strHtml);
//將拼接好的html標簽加載到前端顯示
}
4) 日志管理模塊設計日志管理模塊是一個完整醫療信息系統的重要組成部分,用戶每次訪問系統將產生海量的日志數據。通過對日志數據進行有效的數據挖掘,將為優化網站結構、發掘用戶訪問規律提供有用信息。本系統日志管理模塊包括系統日志和異常日志兩部分,住院醫師規范化培訓系統實現了基于MongoDB的日志系統,由原來利用傳統關系型數據庫的日志管理轉變成高效、可進一步分析利用的日志管理。
3.4.2系統主要功能介紹
1) 題庫管理模塊介紹學員進行題庫訓練或日常考核時,根據需求選擇訓練科目進行答題。進入答題系統后,系統開始計時,并在規定時間內強制收卷,也可提前交卷。訓練過程中,若學員因中途有事可暫停答題。答題結束后,系統自動給出評分和錯題解析并生成近10次訓練成績的統計圖表,學員也可進行錯題打印,以便日后復習。題庫訓練界面如圖8所示。

圖8 圖庫訓練界面
2) 知識庫學習模塊介紹培訓知識庫模塊包括基本檢索和高級檢索。如用戶檢索關于“diabetic foot(糖尿病足)”的相關知識時,頁面會顯示所有關于糖尿病足的知識內容,系統可針對不同主題詞查看特定內容。如圖9所示。

圖9 知識庫學習界面
3) 輪轉排班管理模塊介紹輪轉排班管理使得學員排班更加智能化和自動化。系統對特定專業基地下的各個科室輪轉時間、是否必輪等進行設置,設置好后管理員即可對專業基地下的指導醫師和學員進行分配,實現學員科室輪轉安排。輪轉科室管理界面如圖10所示。

圖10 輪轉科室管理界面
4) 日志管理模塊介紹用戶登錄系統時會產生大量的系統日志,系統異常出錯時,亦會產生異常日志信息。住院醫師規范化培訓管理系統能夠自動收集日志信息,為今后日志分析、大數據研究奠定基礎。系統異常日志列表如圖11所示。

圖11 異常日志列表界面
住院醫師規范化培訓系統基于.NET平臺的ASP.NET MVC5技術實現,采用面向接口多層架構設計,并運用依賴注入進行各層間的解耦,提高開發效率,系統升級與維護更加容易。在住院醫師規范化培訓系統中,針對數據量大、數據結構復雜、需高并發讀寫的模塊,采用流行的NoSQL數據庫MongoDB進行開發與實現。如知識庫學習和日志管理模塊,以便滿足將來數據挖掘和大數據分析的需要。在國家和省級住培系統基礎上,除了實現基本功能外,拓展新增題庫管理和輪轉排班管理模塊,學員可隨時進行題庫訓練,指導醫師可隨時進行日常考核。在輪轉排班上,本系統解放了傳統的手工排班,運用成熟的輪轉排班算法實現對學員輪轉管理。在編程模型上,采用C#最新語法async/await進行異步編程,提高系統響應速度和執行速度。
住院醫師規范化培訓系統的應用是醫院信息化發展的必然趨勢,目標是通過對系統的使用,提高住院醫師培訓質量和醫院管理效率,從而將住院醫師整體培訓認證工作達到科學、高效、規范的效果。
[1] 黃慮,周穎杰,邵強,等.住院醫師規范化培訓信息管理平臺建設[J].現代醫院管理,2016,14(5):79-82.
[2] 汪鵬,吳昊,羅陽,等.醫療大數據應用需求分析與平臺建設構想[J].中國醫院管理,2015,35(6):40-42.
[3] Dimitrov D V.Medical Internet of Things and Big Data in Healthcare[J].Healthcare Informatics Research,2016,22(3):156.
[4] 鐘麟,員建廈.一種基于MongoDB的大數據管理架構[J].計算機與網絡,2016,42(5):62-64.
[5] Wang X,Chen H,Wang Z.Research on Improvement of Dynamic Load Balancing in MongoDB[C]//IEEE,International Conference on Dependable,Autonomic and Secure Computing.IEEE Computer Society,2013:124-130.
[6] 孟群,邢昊,李岳峰.國家住院醫師規范化培訓管理信息系統設計與實施[J].中國衛生信息管理雜志,2015(5):466-472.
[7] 白芙蓉.住院醫師培訓信息管理系統的設計與實現[D].成都:電子科技大學,2013.
[8] Corbellini A,Mateos C,Zunino A,et al.Persisting big-data:The NoSQL landscape[J].Information Systems,2017,63:1-23.
[9] 賀建峰,寶媛媛,張俊,等.基于B/S模式的醫學實驗室信息平臺(LIS)的設計與實現[J].計算機應用與軟件,2016,33(3):83-86.
[10] Guo C,Zhu K,Zongguo M A.The Design of B2B E-commerce System Based on MVC Model and J2EE[J].Management Science & Engineering,2010,4(4):113.
[11] 申德榮,于戈,王習特,等.支持大數據管理的NoSQL系統研究綜述[J].軟件學報,2013(8):1786-1803.
[12] 楊靜,華頌文,趙麗萍.基于JavaEE傷口門診患者信息采集系統的設計與實現[J].計算機應用與軟件,2017,34(2):142-146.
[13] Lü Q,Xie W.A Real-Time Log Analyzer Based on MongoDB[J].Applied Mechanics & Materials,2014,571-572:497-501.
[14] 曾強,繆力,秦拯.面向大數據處理的Hadoop與MongoDB整合技術研究[J].計算機應用與軟件,2016,33(2):21-24.