潘偉東,胡孔法
(南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院,江蘇南京 210023)
病案首頁是醫(yī)療醫(yī)院統(tǒng)計、臨床研究等重要的統(tǒng)計學(xué)信息數(shù)據(jù)來源[1],是醫(yī)院診療過程中最重要的內(nèi)容,為醫(yī)院管理、醫(yī)療質(zhì)量評價、績效考核和醫(yī)療決策提供重要依據(jù)[2],對疾病診療起著關(guān)鍵作用。住院病人的信息收集與整理非常重要[3]。研究表明,秉持客觀、真實的原則,認(rèn)真、詳實地填寫病案首頁,可為疾病的診療提供有效、可靠的參考依據(jù)[4]。在實際操作過程中,受業(yè)務(wù)能力、主客觀等因素影響,病案首頁填寫存在不同程度的質(zhì)量問題,采取積極有效的措施加以改進(jìn)迫在眉睫[5]。
《國務(wù)院辦公廳關(guān)于加強(qiáng)三級公立醫(yī)院績效考核工作的意見》(國辦發(fā)[2019]4 號)指出,要提高病案首頁質(zhì)量,“三級公立醫(yī)院要加強(qiáng)以電子病歷為核心的醫(yī)院信息化建設(shè),按照國家統(tǒng)一規(guī)定規(guī)范填寫病案首頁,加強(qiáng)臨床數(shù)據(jù)標(biāo)準(zhǔn)化、規(guī)范化管理。各地要加強(qiáng)病案首頁質(zhì)量控制和上傳病案首頁數(shù)據(jù)質(zhì)量管理,確??己藬?shù)據(jù)客觀真實。”
目前,信息技術(shù)在醫(yī)療領(lǐng)域發(fā)展迅猛,醫(yī)院信息化建設(shè)日趨完善,借助信息技術(shù)有利于加強(qiáng)醫(yī)院信息化建設(shè),妥善解決病案首頁數(shù)據(jù)質(zhì)量管理控制問題[6-7]。趙慧智等[8]以某省住院病案首頁質(zhì)量現(xiàn)狀為例提出以信息化手段探索評價住院病案首頁質(zhì)量的方法;陳瓊等[9]提出要加強(qiáng)醫(yī)院信息化建設(shè)以提升病案首頁質(zhì)量;鐘慧翔等[10]利用SQL 查詢語句精準(zhǔn)查詢數(shù)據(jù),對住院病案首頁數(shù)據(jù)的邏輯正確性和規(guī)范完整性進(jìn)行質(zhì)控,提高病案首頁質(zhì)量控制精準(zhǔn)性與高效性。以上研究借助信息技術(shù)探索了住院病案首頁質(zhì)控方法,但在數(shù)據(jù)校驗過程中仍需要大量人力。
本文系統(tǒng)整理病案首頁患者信息校驗規(guī)則,基于SpringBoot、SpringMVC、MyBatis、Shiro 等技術(shù),設(shè)計并實現(xiàn)住院病案首頁患者基本信息質(zhì)控系統(tǒng)。系統(tǒng)校驗包括實時校驗與數(shù)據(jù)庫級別校驗。實時校驗以SpringMVC 表單校驗為主要方式,同時輔以級聯(lián)、邏輯校驗等方法對用戶實施錄入與導(dǎo)入病案信息進(jìn)行校驗;數(shù)據(jù)庫級別校驗主要運(yùn)用于數(shù)據(jù)儲存至數(shù)據(jù)庫階段,將已制定的校驗規(guī)則設(shè)置為數(shù)據(jù)屬性取值范圍與關(guān)聯(lián)關(guān)系等,在數(shù)據(jù)存儲過程中對數(shù)據(jù)進(jìn)行校驗。經(jīng)過系統(tǒng)校驗,可有效提高住院病案首頁患者基本信息的數(shù)據(jù)質(zhì)量,為醫(yī)療研究工作提供可靠、有效的數(shù)據(jù),初步實現(xiàn)住院病案首頁患者基本信息質(zhì)量控制自動化。
SpringBoot 繼承了Spring 框架原有的特性,將常用的Spring、SpringMVC、data-jpa 等常用框架封裝到一起,隱藏了這些框架的整合細(xì)節(jié),實現(xiàn)高效開發(fā),并且通過集成大量的框架解決依賴包版本沖突、不穩(wěn)定等問題[11-12]。
SpringMVC 框架是典型的MVC 架構(gòu),它圍繞Servlet 設(shè)計,將請求發(fā)給控制器,然后通過模型對象、分派器來展示請求結(jié)果視圖[13]。其中核心類是DispatcherServlet[14],它是一個Servlet,頂層是Servlet 接口。
MyBatis 是一款開源的基于Java 的數(shù)據(jù)持久層框架[15],支持自定義SQL、存儲過程以及高級映射。MyBatis免除了幾乎所有的JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作[16]。MyBatis 能夠通過簡單的XML 或注解來配置和映射原始類型、接口和Java POJO(Plain Old Java Objects,普通老式Java 對象)為數(shù)據(jù)庫中的記錄[17-18]。
Shiro 是當(dāng)下最常見且易用的Java 安全框架,主要用于執(zhí)行身份驗證、授權(quán)、密碼和會話管理等操作[19]。Shiro 有3個核心組件:Subject、SecurityManager 和Realms[20]。
Subject 即當(dāng)前與系統(tǒng)交互的任何事物,SecurityMan?ager 管理Shiro 的安全操作,Realm 用于認(rèn)證和授權(quán),封裝了數(shù)據(jù)源的連接細(xì)節(jié)并在需要時提供給Shiro,配置Shiro 時至少需要指定一個Realm[21]。
住院病案首頁患者基本信息質(zhì)控系統(tǒng)旨在通過校驗患者基本信息得到規(guī)范、完整的住院病案首頁數(shù)據(jù),以提升數(shù)據(jù)質(zhì)量,便于醫(yī)療人員及科研人員分析使用。其中,制定患者基本信息校驗規(guī)則是系統(tǒng)核心需求。此外,在開發(fā)過程中還應(yīng)遵循簡潔、易用、安全、穩(wěn)定的原則,以保證系統(tǒng)用戶體驗、安全性等非功能性需求得到滿足[22]。
以住院病案首頁填寫規(guī)范為準(zhǔn)則,結(jié)合實際填寫情況,制定患者基本信息校驗規(guī)則?;颊呋拘畔⑿r炓?guī)則分為基本校驗和邏輯校驗兩大類。
基本信息校驗指對住院病案首頁中常規(guī)項目填寫規(guī)范校驗,如姓名、出生日期、年齡、國籍、新生兒出生體重、新生兒入院體重、出生地、籍貫、民族、身份證號碼、郵編等數(shù)據(jù)項。具體規(guī)則如表1 所示。
Table 1 Basic verification rules of patient information表1 患者信息基本校驗規(guī)則
患者基本信息邏輯校驗指通過各個不同的數(shù)據(jù)項之間存在的邏輯關(guān)系對數(shù)據(jù)項本身進(jìn)行校驗。具體校驗規(guī)則如表2 所示。
Table 2 Logical verification rules of patient information表2 患者信息邏輯校驗規(guī)則
本文基于B/S 架構(gòu)采用MVC 設(shè)計模式構(gòu)建住院病案首頁患者基本信息質(zhì)控系統(tǒng),系統(tǒng)架構(gòu)如圖1 所示。
Fig.1 Quality control system architecture of basic patient information on the first page of inpatient medical record圖1 住院病案首頁患者基本信息質(zhì)控系統(tǒng)架構(gòu)
其中,視圖層負(fù)責(zé)用戶與系統(tǒng)交互和界面展示,如系統(tǒng)的實時校驗界面、數(shù)據(jù)庫級別校驗反饋界面、校驗報告界面等??刂茖迂?fù)責(zé)用戶請求與業(yè)務(wù)邏輯交互。模型層負(fù)責(zé)系統(tǒng)中業(yè)務(wù)邏輯部分,本系統(tǒng)中主要負(fù)責(zé)病案數(shù)據(jù)導(dǎo)入、患者基本信息校驗、用戶與權(quán)限管理等功能。
住院病案首頁患者基本信息質(zhì)控系統(tǒng)主要包括患者基本信息校驗?zāi)K、病案數(shù)據(jù)接口模塊以及用戶與權(quán)限管理模塊,如圖2 所示。
Fig.2 Overall functional design of the quality control system for basic patient information on the first page of inpatient medical records圖2 住院病案首頁患者基本信息質(zhì)控系統(tǒng)整體功能設(shè)計
2.3.1 用戶與權(quán)限管理模塊
醫(yī)療信息的社會關(guān)注度較高,同時具有高度的隱私性,用戶使用本系統(tǒng)時需要通過登錄識別用戶權(quán)限方能正常使用。用戶與權(quán)限管理模塊分為用戶管理與權(quán)限管理兩個模塊。
用戶管理主要是由系統(tǒng)管理員對新注冊用戶的資格審核和對已有用戶的賬號、密碼、個人描述、權(quán)限等信息管理。
權(quán)限管理主要是分配相應(yīng)的權(quán)限給不同用戶[23],系統(tǒng)用戶分為3 個角色,包括填報用戶、科研用戶和系統(tǒng)管理員。填報用戶具有系統(tǒng)中錄入病案數(shù)據(jù)以及使用數(shù)據(jù)庫級別校驗和生成校驗報告等功能;科研人員具有查詢病案數(shù)據(jù)信息權(quán)限;系統(tǒng)管理員負(fù)責(zé)用戶管理權(quán)限。
2.3.2 病案數(shù)據(jù)接口模塊
在中醫(yī)住院病案首頁患者基本信息質(zhì)控系統(tǒng)中,病案首頁數(shù)據(jù)經(jīng)病案錄入流程存入數(shù)據(jù)庫。用戶在使用住院病案首頁患者基本信息質(zhì)控系統(tǒng)時,能夠直接將獲取到的住院病案首頁dbf 文件上傳至系統(tǒng)進(jìn)行解析,隨后系統(tǒng)自動校驗住院病案首頁質(zhì)量。
2.3.3 患者基本信息校驗?zāi)K
患者基本信息校驗?zāi)K分為實時校驗、數(shù)據(jù)庫級別校驗和生成校驗報告3 個部分。
實時校驗即在登錄住院病案首頁患者基本信息質(zhì)控系統(tǒng)填報病案信息時,系統(tǒng)根據(jù)已制定的校驗規(guī)則校驗實時填報的內(nèi)容并在前端頁面上及時給予反饋,以此提高病案填寫質(zhì)量。
數(shù)據(jù)庫級別校驗即抽取數(shù)據(jù)庫中住院病案首頁數(shù)據(jù),根據(jù)已制定的校驗規(guī)則對抽取出的內(nèi)容進(jìn)行校驗。一方面預(yù)防用戶繞過瀏覽器前端頁面的實時校驗;另一方面由于當(dāng)下各個住院病案首頁填報系統(tǒng)并不相同,所收集到的數(shù)據(jù)質(zhì)控程度也不同。
生成校驗報告即在住院病案首頁患者基本信息質(zhì)控系統(tǒng)數(shù)據(jù)庫級別校驗后自動生成詳細(xì)的校驗報告。報告內(nèi)容包括系統(tǒng)對每條數(shù)據(jù)校驗后得出的漏填、錯填和不規(guī)范情況,系統(tǒng)根據(jù)已制定的校驗規(guī)則生成正確、規(guī)范的填寫內(nèi)容,供病案上報人員查漏補(bǔ)缺。
住院病案首頁患者基本信息質(zhì)控系統(tǒng)的UI 基于Boot?Strap4 前端框架設(shè)計,該框架提供了各種CSS 樣式、數(shù)十種Web 組件以及JavaScript 插件,用戶可以自由靈活地調(diào)用BootStrap中的內(nèi)置樣式[24]。BootStrap4 采用12列布局方式,具有極高的兼容性,能夠根據(jù)不同尺寸的屏幕調(diào)整布局進(jìn)行適配[25]。本文在系統(tǒng)中配置BootStrap4 的相關(guān)文件并添加到相應(yīng)的前端頁面,達(dá)到對前端頁面渲染的效果。
用戶與權(quán)限管理主要由Shiro 技術(shù)實現(xiàn)。
使用Shiro 采用基于角色的訪問控制理念,在數(shù)據(jù)庫中創(chuàng)建用戶、角色、權(quán)限3 張基礎(chǔ)表,以及建立用戶與角色多對多關(guān)系、角色與權(quán)限多對多關(guān)系的2 張中間表,以此作為分配、控制用戶的權(quán)限信息。Shiro 向Realm 提供用戶的賬號和密碼,由Realm尋找用戶的權(quán)限信息并進(jìn)行認(rèn)證和授權(quán)。
導(dǎo)入病案數(shù)據(jù)dbf 文件,首先需要通過MyBatis 持久層框架對數(shù)據(jù)進(jìn)行抽取。在程序中構(gòu)建病案首頁數(shù)據(jù)的實體類,將實體類作為程序和數(shù)據(jù)庫交互的接口,由MyBatis將用戶傳入的參數(shù)作為SQL 查詢語句的篩選條件,查詢出相應(yīng)的病案首頁數(shù)據(jù),并將其導(dǎo)出為dbf 文件待使用;然后將獲取到的病案首頁dbf 文件上傳至住院病案首頁患者基本信息質(zhì)控系統(tǒng)數(shù)據(jù)庫中,再通過MyBatis 操作數(shù)據(jù)庫獲得相應(yīng)的數(shù)據(jù)進(jìn)行質(zhì)量控制。
患者基本信息校驗主要分為實時校驗、數(shù)據(jù)庫級別校驗、生成校驗報告3 個部分。
(1)實時校驗與數(shù)據(jù)庫級別校驗。實時校驗在前端頁面通過SpringMVC 的表單驗證完成。使用SpringMVC 的注解方式對需要校驗的數(shù)據(jù)項編寫校驗規(guī)則并配置驗證器,在前端頁面輸入數(shù)據(jù)時調(diào)用注解方式編寫的校驗規(guī)則即可在前端頁面進(jìn)行實時校驗。
數(shù)據(jù)庫級別校驗主要根據(jù)基本信息校驗規(guī)則通過數(shù)據(jù)表設(shè)計級聯(lián)關(guān)系、字段檢查,增加數(shù)據(jù)約束,實現(xiàn)數(shù)據(jù)存儲校驗。
(2)生成校驗報告。校驗完成后,針對每條數(shù)據(jù)得出的整份文件存在的漏填、錯填和不規(guī)范情況進(jìn)行統(tǒng)計,在前端頁面利用Echarts 的前端作圖工具生成統(tǒng)計展示。另外,通過前端頁面的高亮方式標(biāo)記漏填、錯填和不規(guī)范的數(shù)據(jù)項,并根據(jù)校驗規(guī)則補(bǔ)全漏填的數(shù)據(jù)項、生成規(guī)范的數(shù)據(jù)項形成修改意見,以便病案首頁數(shù)據(jù)后續(xù)的修正工作,提高病案首頁數(shù)據(jù)質(zhì)量。
住院病案首頁患者基本信息質(zhì)控系統(tǒng)開發(fā)完成后,利用白盒測試和黑盒測試方法對系統(tǒng)進(jìn)行測試,測試環(huán)境如下:
服務(wù)器配置:操作系統(tǒng)CentOS 7;處理器Inte(lR)Xeon(R)CPU E5-2620 0 @2.00GHz;內(nèi)存32GB;軟件環(huán)境JDK 8、Tomcat 7;數(shù)據(jù)庫MySQL 5.7。
客戶端配置:操作系統(tǒng)Windows 10;處理器Intel(R)Core(TM)i7-4790 CPU@ 3.60GHz;內(nèi)存8GB;谷歌瀏覽器。
利用白盒測試方法首先根據(jù)源代碼繪制程序流程圖,然后根據(jù)流程圖分析系統(tǒng)的代碼結(jié)構(gòu)。在確認(rèn)系統(tǒng)結(jié)構(gòu)無誤之后,利用黑盒測試方法,設(shè)計測試用例對系統(tǒng)主要功能進(jìn)行多次測試。測試項目如表3 所示。
Table 3 Test items and results表3 測試項目及結(jié)果
實際測試中,單用戶登錄系統(tǒng)響應(yīng)時間小于3s;前端頁面實時錄入、校驗以及校驗反饋的提示內(nèi)容無明顯延遲;單用戶退出系統(tǒng)響應(yīng)時間小于1s。測試結(jié)果表明,住院病案首頁患者基本信息質(zhì)控系統(tǒng)初步實現(xiàn)對住院病案首頁的自動化校驗,能夠有效提升住院病案首頁質(zhì)量。
本文在深入研究住院病案首頁數(shù)據(jù)情況后,整合了患者基本信息校驗規(guī)則,設(shè)計并開發(fā)了住院病案首頁患者基本信息質(zhì)控系統(tǒng)。該系統(tǒng)能夠輔助填報人員更規(guī)范地填寫與整理病案,對采集的病案首頁數(shù)據(jù)進(jìn)行校驗;生成校驗報告,對后續(xù)病案首頁數(shù)據(jù)規(guī)范填報提供幫助,有利于提高病案首頁數(shù)據(jù)質(zhì)量。但系統(tǒng)還存在不足,如僅根據(jù)已知的邏輯規(guī)則對住院病案首頁數(shù)據(jù)進(jìn)行校驗,校驗內(nèi)容較為簡單,對住院病案首頁潛在的、復(fù)雜的校驗規(guī)則無法進(jìn)行有效校驗。后續(xù)將利用數(shù)據(jù)挖掘方法設(shè)計住院病案首頁質(zhì)控規(guī)則發(fā)現(xiàn)算法,探索住院病案首頁中蘊(yùn)含的潛在質(zhì)量控制規(guī)則,完善住院病案首頁質(zhì)量控制規(guī)則,改善質(zhì)量控制效果。