趙新 王火劍
摘 要:目前實現醫(yī)療數據合規(guī)控費的監(jiān)控系統(tǒng)大多采用傳統(tǒng)命令式編碼實現,其中將業(yè)務規(guī)則邏輯與業(yè)務系統(tǒng)進行捆綁。當業(yè)務規(guī)則邏輯或規(guī)則知識庫發(fā)生變更時,則需要研發(fā)人員重新修改編碼,且非研發(fā)人員無法靈活地進行規(guī)則編輯維護。為解決上述問題,引入Jboss的KIE可視化配置管理系統(tǒng),業(yè)務專家可通過該系統(tǒng)自定義編輯規(guī)則文件,并引用Drools規(guī)則引擎對規(guī)則文件進行解析。因此,只需維護規(guī)則文件即可,而無需采用傳統(tǒng)命令式編碼實現業(yè)務規(guī)則,減少了系統(tǒng)開發(fā)與維護工作量。業(yè)務系統(tǒng)調用Drools規(guī)則引擎進行校驗、解析規(guī)則文件,并與醫(yī)療數據進行匹配碰撞,從而實現了規(guī)則邏輯和業(yè)務系統(tǒng)解耦,避免了醫(yī)療政策變化對業(yè)務系統(tǒng)的影響,增強了系統(tǒng)適用性與靈活性。
關鍵詞:Drools;規(guī)則引擎;可視化;醫(yī)療數據合規(guī)
DOI:10. 11907/rjdk. 182781 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2019)007-0163-04
Application of Drools Rule Engine in Medical Data Compliance System
ZHAO Xin1,WANG Huo-jian2
(1. Run Technologies CO., LTD.,Beijing 100096,China;
2. Network Security Corps of Zhejiang Public Security Bureau, Hangzhou 310000,China)
Abstract: At present, most of the monitoring systems for implementing medical data compliance control fees are implemented by traditional imperative coding, in which business rule logic and business system bundles are implemented.When the business rule logic or rule knowledge base changes, the R&D personnel need to re-edit the code implementation, and non-R&D personnel cannot flexibly perform rule editing and maintenance. In order to solve the above problems, JBoss' Drools rule engine and KIE visual configuration management system are cited. The business experts can visualize the custom editing rule logic and rule knowledge base, and develop the rule logic without hard coding, which reduces the development and maintenance of the system. The business system calls the Drools rule engine to check and parse the rules file, and the medical data is matched and collided, thereby realizing the decoupling of the rule logic and the business system, avoiding the influence of the medical policy change on the business system, and enhancing the applicability of the system and flexibility.
Key Words: Drools;rule engine;visualization;medical data compliance
作者簡介:趙新(1987-),女,北京銳安科技有限公司數據分析師,研究方向公安大數據分析。
0 引言
醫(yī)保部門通過制定大量業(yè)務規(guī)則進行醫(yī)?;鸬膶徍丝刭M,以減少醫(yī)?;鸬牟缓侠碇С觯岣呋鹗褂寐?。如今很多信息技術已應用于醫(yī)院醫(yī)保的精細化管理中[1]。本文的醫(yī)療數據合規(guī)審核系統(tǒng)主要依托規(guī)則庫對醫(yī)療機構上傳的結算單數據進行逐單逐項審核,以實現醫(yī)保結算單審核的自動化處理,縮小人工抽檢范圍與審核盲區(qū),降低人工抽審工作量,從而減少人工成本,并提高審單準確性與工作效率。
目前有很多學者與機構對醫(yī)保審核系統(tǒng)進行了研究[2],已有較為成熟的產品在各大醫(yī)院得到應用,并取得顯著成效[3]。但目前醫(yī)療合規(guī)智能系統(tǒng)規(guī)則是通過硬編碼實現的,每個規(guī)則都需要單獨開發(fā)實現。其中規(guī)則邏輯與業(yè)務系統(tǒng)捆綁,當業(yè)務規(guī)則改變或新增業(yè)務規(guī)則時,則需要重新梳理邏輯,開發(fā)或修改代碼,不易于系統(tǒng)維護。所以本文采用JBOSS開源的Drools 規(guī)則引擎,并引入drools的KIE可視化配置管理系統(tǒng)對原系統(tǒng)進行優(yōu)化。目前Drools規(guī)則引擎已發(fā)展相當成熟,并廣泛應用于企業(yè)營銷[6]、物聯網[7]、制造業(yè)[8]、金融保險[9]等領域。引進drools規(guī)則引擎的優(yōu)勢主要有以下幾方面:①業(yè)務規(guī)則與系統(tǒng)解耦。將規(guī)則從系統(tǒng)中剝離,從原有代碼轉變?yōu)橐?guī)則文本文件,Drools引擎提供了規(guī)則知識庫的組織管理方式;②規(guī)則知識庫可視化與自定義設置。在規(guī)則知識庫中可以靈活修改或新增規(guī)則邏輯及規(guī)則明細;③規(guī)則流程化管理。Drools引擎集成流程引擎JBPM,可以通過組織不同規(guī)則及執(zhí)行順序,形成業(yè)務工作流;④規(guī)則編制方式多樣化。KIE框架提供了電子表格、導向規(guī)則表、商業(yè)過程等高級別編制方式,業(yè)務人員與用戶可以參與規(guī)則編制過程;⑤簡化應用系統(tǒng)開發(fā)。無需進行編碼開發(fā)規(guī)則的邏輯實現,且規(guī)則可視化維護完成后直接編譯發(fā)布即可,無需重啟應用系統(tǒng),從而減少了系統(tǒng)開發(fā)的編碼量與維護成本。
1 Drools規(guī)則引擎
Drools是JBoss公司開發(fā)的一款基于Java語言、開源的規(guī)則引擎。該規(guī)則引擎從業(yè)務層中獨立出一套處理業(yè)務邏輯的API接口,從而實現了規(guī)則邏輯與業(yè)務系統(tǒng)的完全解耦。
本文使用Drools6.5版本,規(guī)則引擎執(zhí)行過程為:推理引擎(Interface Engine)加載解析規(guī)則文件(Production Memory),然后加載匹配數據(Working Memory),調用ReteOO算法進行匹配,得出匹配結果,其匹配規(guī)則的生命周期由Agenda進行管理。Drools規(guī)則解析過程如圖1所示。
2 KIE可視化配置管理
Drools引擎提供了可視化配置編輯管理的KIE系統(tǒng),可按照規(guī)則引擎支持的規(guī)則文件格式維護所需的知識庫,從而將規(guī)則知識庫從業(yè)務系統(tǒng)中剝離。知識庫主要涉及以下幾個方面:
(1)審核數據模型。定義規(guī)則所用的審核數據模型,將模型的jar包導入KIE系統(tǒng)。系統(tǒng)解析jar包,在定義規(guī)則時,可動態(tài)使用審核數據模型中的對象及對象屬性。
(2)規(guī)則文件。規(guī)則文件可以是.drl、xls、brl或.gdst文件。其中,常用的描述文件是.drl和 xls 文件,而 xls 文件更直觀且易于維護,更容易被業(yè)務人員理解。因本文的醫(yī)保規(guī)則是規(guī)則邏輯+規(guī)則知識數據,所以使用導向性決策表(.dgst)定義規(guī)則。該規(guī)則文件支持模板+數據的格式,且可以可視化地選擇數據模型對象及對象屬性,并編輯規(guī)則條件,如in、not in、<=、>=、!=等條件。對于較復雜的規(guī)則邏輯,可使用編寫腳本的方式將Java代碼直接嵌入規(guī)則文件中。
業(yè)務專家人員可自定義新增業(yè)務規(guī)則,如新增“限老年人用藥”規(guī)則,并可對已有監(jiān)控規(guī)則中的具體明細條目進行編輯,如新增、修改、刪除某些限老年人使用的藥品項目。規(guī)則從系統(tǒng)中解耦,從原有代碼轉變?yōu)橐?guī)則文本文件,研發(fā)人員無需硬編碼實現規(guī)則邏輯,從而減少了開發(fā)與維護工作量。
(3)工作流。KIE可視化配置界面使用JBPM6實現規(guī)則流程編輯,在規(guī)則定義時,必須增加ruleflow-group屬性列用于流程編排。編排工作流時,用戶可自定義所需的監(jiān)控規(guī)則及規(guī)則執(zhí)行順序,從而滿足不同場景的應用要求。如在重點關注某類疾病的場景中,可將該類疾病的部分規(guī)則進行組合使用。
3 系統(tǒng)應用
3.1 系統(tǒng)設計
項目目前采用組件模式開發(fā),所以對JBOSS提供的KIE框架進行二次開發(fā),封裝成通用業(yè)務規(guī)則引擎,并在通用的基礎上封裝偏向不同業(yè)務的規(guī)則引擎組件。系統(tǒng)框架分為以下四層,如圖2所示。
圖2 醫(yī)療數據合規(guī)系統(tǒng)框架
(1)應用系統(tǒng)層。應用系統(tǒng)層通過spring bean集成業(yè)務規(guī)則引擎組件,主要功能為定義監(jiān)控審核任務,并通過配置規(guī)則引擎需要的參數,啟動規(guī)則引擎組件服務,注入醫(yī)療業(yè)務數據,如就診信息、結算信息、處方信息等。
(2)業(yè)務規(guī)則引擎組件層。 業(yè)務規(guī)則引擎組件在通用引擎提供技術的基礎上,將應用系統(tǒng)數據轉化成具體業(yè)務模型數據。業(yè)務規(guī)則引擎拆分數據中的元素,分別插入規(guī)則引擎,例如從審核實體里拆分Person、TreatInfo、SettleInfo、Hospital、Doctor以及診療信息里的處方,分別插入規(guī)則引擎作為Fact,審核模型如圖3所示。
圖3 Drools規(guī)則引擎審核數據模型
(3)通用引擎組件層。封裝KIE API、多線程處理模型、消息隊列模型與異常模型以供業(yè)務規(guī)則引擎組件使用,該組件層面向KieSession知識庫,規(guī)則流程使用Kie框架API,也體現了項目面向流程開發(fā)的原則。
該組件層對KieSession進行封裝,在收到需審核的數據后,需要主動調用fireAllRules方法執(zhí)行工作流中編輯的所有規(guī)則。Drools規(guī)則引擎對規(guī)則文件進行解析,加載醫(yī)療模型數據,Drools推理引擎調用ReteOO算法執(zhí)行匹配規(guī)則,輸出匹配結果。
(4)第三方引擎層。引用JBOSS KIE框架提供的API。
3.2 數據流向
醫(yī)療數據合規(guī)系統(tǒng)數據流向如圖4所示。
(1)應用系統(tǒng)加載醫(yī)保系統(tǒng)數據,構造審核實體數據單元。以某人的某次就診結算信息為單元,封裝就診信息、結算信息、醫(yī)囑信息、處方信息等,將數據注入到業(yè)務規(guī)則引擎配置的消息通道。
(2)業(yè)務規(guī)則引擎組件從配置的消息通道中讀入數據。
圖4 數據流向
(3)將業(yè)務模型數據轉換成引擎能識別的審核數據元素。啟動相應審核流程,將審核數據元素注入到通用引擎提供的API中。
(4)Drools引擎接收數據輸入,初始化kieSession,動態(tài)加載KIE發(fā)布的業(yè)務規(guī)則和工作流,或靜態(tài)加載生成的業(yè)務規(guī)則jar包。規(guī)則引擎完成工作流啟動,解釋業(yè)務規(guī)則,對審核數據元素進行處理,并根據業(yè)務規(guī)則作出相應決策。
(5)審核流程完成后通知應用系統(tǒng)審核完成,并返回審核結果,即醫(yī)療數據是否合規(guī),若違規(guī),則進行違規(guī)提醒。
3.3 規(guī)則審核示例
以“限兒童規(guī)則”為例,主要流程如下:
(1)業(yè)務規(guī)則定義“限兒童規(guī)則”,KIE可視化配置示例如圖5所示。
其中每一行配置一條規(guī)則,每一列為該條規(guī)則的邏輯條件。業(yè)務專家人員可在“編輯器”->“決策表”功能里可視化地自定義編輯規(guī)則邏輯,如再添加一個科室條件等。同時可以點擊“添加行”,增加一條限兒童使用的規(guī)則明細。該規(guī)則的邏輯實現及知識庫數據無需研發(fā)人員在業(yè)務系統(tǒng)中進行編碼開發(fā),只需按圖5示例配置規(guī)則文件,即可實現規(guī)則邏輯、數據與業(yè)務系統(tǒng)解耦。
(2)定義業(yè)務應用場景,編輯jbpm6工作流,此例中將“限兒童規(guī)則”添加到工作流。審核任務將執(zhí)行該業(yè)務應用場景的工作流,并加載該工作流配置的所有規(guī)則文件。
(3)審核模型信息?;颊邚埲?,32歲,北醫(yī)三院門診就診,診斷結果為“風寒感冒”,醫(yī)囑處方中包含 “康泰克”、“銀翹解毒片”、“小兒止咳顆粒(編碼340200038)”等,對張三此次就診情況封裝審核模型,將審核模型注入Drools引擎。
(4)Drools規(guī)則引擎解析工作流中配置的“限兒童規(guī)則”文件,并加載張三患者的就診模型數據,將兩者進行匹配碰撞。匹配到張三大于18歲,且處方中包含“小兒止咳顆粒(編碼340200038)”藥品,則該處方醫(yī)療數據違規(guī),輸出匹配結果“直接扣款,扣款金額xx元,處方違規(guī)”,以及提醒信息:“小兒止咳顆粒只能用于18歲以下兒童”。
(5)Drools引擎審核完成,將步驟(4)中的審核結果返回業(yè)務應用系統(tǒng),審核任務結束。
3.4 Drools優(yōu)化
在實時監(jiān)控審核任務執(zhí)行情況時,發(fā)現內存使用率持續(xù)超過了90%。因Drools引擎是基于RETEOO算法的,而該算法是通過犧牲空間換取時間,在形成匹配網絡時保留了中間結果,易造成內存溢出,故需要進行JVM內存優(yōu)化,并且運行完規(guī)則引擎后需調用dispose方法釋放內存[19]。
4 結語
對于規(guī)則頻繁發(fā)生變化的情況,業(yè)務領域專家可根據行業(yè)政策、知識等及時調整規(guī)則文件,而無需進行硬編碼實現。調整完規(guī)則文件后可進行動態(tài)發(fā)布,業(yè)務系統(tǒng)更新加載新發(fā)布的規(guī)則知識庫,無需重啟應用即可快速響應需求變更。
該規(guī)則引擎亦存在一些不足,除內存消耗較大外,其對于某些特殊場景的規(guī)則實現比較復雜,無法通過配置完成,需要編寫Drools語法腳本,不便于業(yè)務人員維護。在使用決策表規(guī)則文件時,若規(guī)則中捆綁知識數據過多,將使可視化配置系統(tǒng)加載渲染速度較慢,且在業(yè)務系統(tǒng)調用引擎進行規(guī)則匹配時,匹配效率不高。
由此可以看出,Drools規(guī)則引擎可應用于任何與商業(yè)規(guī)則、業(yè)務規(guī)則,甚至數據清洗規(guī)則相關的場景,且隨著規(guī)則引擎工具的不斷發(fā)展與完善,其在實際項目工程中的應用將越來越廣泛。
參考文獻:
[1] 吳旭東,陳慶瑩,宮明. 現代信息技術在醫(yī)院醫(yī)保精細化管理中的應用[J]. 實用醫(yī)藥雜志,2017,34(1):83-86.
[2] 王芬芬,朱超雷,陳磊,等. 醫(yī)保智能審核系統(tǒng)設計[J]. 解放軍醫(yī)院管理雜志,2016,23(10):928-931,968.
[3] 范玉改,李大奇. 醫(yī)保智能審核系統(tǒng)的應用與成效分析[J]. 中國醫(yī)院,2017,21(5):60-62.
[4] 尚爾路.? 規(guī)則自動生成技術研究及其在醫(yī)保審核中的應用[D]. 成都:電子科技大學,2017.
[5] 繆姝妹,劉云,景慎旗,等. 基于ODM規(guī)則引擎的CDS醫(yī)療監(jiān)控平臺建設探討[J]. 中國衛(wèi)生信息管理雜志,2018,15(5):592-596.
[6] 張樂. 基于規(guī)則引擎Drools的企業(yè)營銷系統(tǒng)的設計與實現[D]. 南京:東南大學,2016.
[7] 池深啟. 輕量級規(guī)則引擎Drools在物聯網平臺中的應用研究[D]. 杭州:浙江工業(yè)大學,2017.
[8] 牛凱. 規(guī)則引擎Drools在制造業(yè)J2EE系統(tǒng)中的應用研究[J]. 成組技術與生產現代化,2014,31(2):7-13.
[9] 余昀錦. 保險行業(yè)中Drools規(guī)則引擎的研究與應用[D]. 北京:北京郵電大學,2014.
[10] 陶曉俊,朱敏. 基于規(guī)則引擎的企業(yè)服務開發(fā)模式[J]. 計算機技術與發(fā)展,2008(2):115-118.
[12] THU E E,NWE N. Transforming model oriented program into Android source code based on Drools rule engine[J]. Journal of Computer & Communications,2017,5(3):49-59.
[13] 張淵,夏清國. 基于Rete算法的JAVA規(guī)則引擎[J]. 科學技術與工程,2006(11):1548-1550.
[14] 童毅. 規(guī)則引擎中模式匹配算法及規(guī)則引擎應用的研究[D]. 北京:北京郵電大學,2010.
[15] 黃穎.? 基于規(guī)則引擎的合同歸并生產解決方案[C]. 全國冶金自動化信息網2018年會論文集,2018.
[16] KINYUA J,WEPPENAAR D V,VERMAAK H. An intelligent maintenance management system based on multi-agent systems and the Drools planner[C]. Wuhan:International Conference on Computational Intelligence & Industrial Application,2010.
[17] 藍雯飛,邢志寶,強小利. 一種Drools規(guī)則引擎封裝模型及其實現[J]. 中南民族大學學報:自然科學版,2015,34(3):95-99.
[18] 湯冬冬. 基于Drools的分布式業(yè)務規(guī)則引擎的設計與實現[D]. 大連:大連理工大學,2016.
[19] 劉金龍. drools規(guī)則引擎模式匹配效率優(yōu)化研究及實現[D]. 成都:西南交通大學,2007.
(責任編輯:黃 ?。?/p>