徐海峰 毛華堅(jiān) 楊雨 李梅 趙東升
隨著醫(yī)療領(lǐng)域數(shù)據(jù)量的快速增長(zhǎng),醫(yī)療過(guò)程挖掘成為近年來(lái)新的研究熱點(diǎn),其中事件數(shù)據(jù)(event data)抽取方法是實(shí)現(xiàn)過(guò)程挖掘的基礎(chǔ)和前提[1]。醫(yī)療過(guò)程是指與患者臨床診療相關(guān)的一系列活動(dòng),如診斷、用藥、檢查和實(shí)驗(yàn)室檢查等。分析這些活動(dòng)有助于降低醫(yī)療成本,提升服務(wù)質(zhì)量,提高資源利用率。過(guò)程挖掘作為一個(gè)新興的數(shù)據(jù)科學(xué)分支,支持基于事實(shí)的流程發(fā)現(xiàn)、合規(guī)性檢查和過(guò)程改進(jìn)[2]。過(guò)程挖掘在許多研究中得到了應(yīng)用,并取得了較好的結(jié)果[3-5]。它關(guān)注于從來(lái)自一個(gè)或多個(gè)信息系統(tǒng)的事件日志(event log)中提取知識(shí)。目前,可擴(kuò)展事件流(extensible event stream,XES)是用于存儲(chǔ)和交換事件日志的國(guó)際標(biāo)準(zhǔn)格式。每個(gè)XES文檔由包含多個(gè)事件序列的案例(case)組成,每個(gè)案例和事件可以有多個(gè)屬性。然而,作為事件日志來(lái)源的醫(yī)療信息系統(tǒng)往往體系架構(gòu)并不相同。對(duì)于臨床科研或信息技術(shù)人員來(lái)說(shuō),從多個(gè)異構(gòu)數(shù)據(jù)源中提取數(shù)據(jù)并轉(zhuǎn)換為XES事件日志通常會(huì)花費(fèi)大量的時(shí)間和精力。
信息系統(tǒng)間的語(yǔ)義互操作是進(jìn)行高效、標(biāo)準(zhǔn)化數(shù)據(jù)抽取的基礎(chǔ)。為了實(shí)現(xiàn)語(yǔ)義互操作這一目標(biāo),openEHR定義了一種由原型(archetype)和參考模型(reference model)組成的兩層臨床數(shù)據(jù)建模方法,已經(jīng)成為歐洲(CEN 13606)和ISO標(biāo)準(zhǔn)[6]。該種雙模型架構(gòu)能適應(yīng)醫(yī)學(xué)知識(shí)的不斷更新,并保持底層數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的相對(duì)穩(wěn)定。openEHR的原型是針對(duì)某一臨床業(yè)務(wù)概念的最大集,模板是對(duì)原型的進(jìn)一步約束,以滿足不同業(yè)務(wù)場(chǎng)景的需要。openEHR的原型主要有4種類型:COMPOSITION,SECTION,CLUSTER和ENTRY,每種類型分別對(duì)應(yīng)著一個(gè)抽象表示的層次。根據(jù)臨床活動(dòng)特點(diǎn),每個(gè)ENTRY類型又可分為觀察、評(píng)價(jià)、指導(dǎo)、行動(dòng)4個(gè)具體的子類[7]。通過(guò)共享和重用已定義好的原型,可以實(shí)現(xiàn)醫(yī)療機(jī)構(gòu)之間的語(yǔ)義互操作[8]。隨著openEHR規(guī)范和數(shù)據(jù)平臺(tái)的不斷完善,有越來(lái)越多的信息系統(tǒng)采用openEHR標(biāo)準(zhǔn)作為臨床數(shù)據(jù)模型[9]。
由于openEHR原型能夠支持醫(yī)療業(yè)務(wù)中涉及的各種應(yīng)用流程,例如電子病歷、電子健康記錄、實(shí)驗(yàn)室檢查和影像檢查等,因此它可以涵蓋過(guò)程挖掘所需的常見(jiàn)事件(活動(dòng))。另外,openEHR所定義的原型包含了事件的概念,過(guò)程挖掘的主要目的就是分析這些事件序列的模式。因此,基于openEHR的數(shù)據(jù)建模方法非常有利于進(jìn)行過(guò)程挖掘和分析??梢酝ㄟ^(guò)將原型中的數(shù)據(jù)項(xiàng)映射到事件及其屬性來(lái)生成事件日志。另外,openEHR的基本思想是以臨床專家為主導(dǎo),由信息技術(shù)人員負(fù)責(zé)開(kāi)發(fā)相應(yīng)的軟件工具。所以,對(duì)于這些基于openEHR開(kāi)發(fā)的系統(tǒng),也應(yīng)當(dāng)支持臨床人員能夠獨(dú)立進(jìn)行數(shù)據(jù)查詢和抽取操作。
在現(xiàn)有的查詢語(yǔ)言方面,存在面向主流數(shù)據(jù)庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言(structured query language,SQL)和對(duì)象查詢語(yǔ)言(object query language,OQL),它們依賴于特定的數(shù)據(jù)模式和物理表示(如關(guān)系表)[10]。為了編寫(xiě)有效的查詢代碼,用戶必須知道特定數(shù)據(jù)庫(kù)的存儲(chǔ)模式。此外,由于這些系統(tǒng)的數(shù)據(jù)模式通常不同,即使它們存儲(chǔ)相同的數(shù)據(jù),為某一種模式編寫(xiě)的查詢語(yǔ)句通常也不能夠跨系統(tǒng)移植。另外,盡管一些面向Web的查詢語(yǔ)言(如W3C Sparql和GraphQL)沒(méi)有可移植性問(wèn)題,但它們與數(shù)據(jù)庫(kù)語(yǔ)言類似只能表達(dá)單一的語(yǔ)義層次。也就是說(shuō),它們的元數(shù)據(jù)模型只假設(shè)了實(shí)體屬性值(entity-attribute-value,EAV)。
為此,openEHR組織提出了原型查詢語(yǔ)言(archetype query language,AQL)來(lái)實(shí)現(xiàn)跨組織的數(shù)據(jù)獲取和語(yǔ)義互操作,并支持參考模型和原型等多級(jí)模型結(jié)構(gòu)。AQL作為一種描述式查詢語(yǔ)言,專門(mén)用來(lái)搜索和抽取存儲(chǔ)在基于原型構(gòu)建的信息系統(tǒng)數(shù)據(jù),并且它的語(yǔ)法獨(dú)立于信息模型、應(yīng)用程序、編程語(yǔ)言、系統(tǒng)環(huán)境和存儲(chǔ)模型[10]。AQL通過(guò)組合原型的語(yǔ)義元素和參考模型中的相應(yīng)數(shù)據(jù)結(jié)構(gòu)元素來(lái)表示查詢語(yǔ)句(SQL只是基于后者),這是其實(shí)現(xiàn)跨系統(tǒng)語(yǔ)義查詢和共享的關(guān)鍵。其次,臨床人員可以很容易地理解模板、原型和數(shù)據(jù)項(xiàng)的含義,而不必關(guān)注數(shù)據(jù)庫(kù)的表、列、數(shù)據(jù)類型等存儲(chǔ)結(jié)構(gòu)和物理實(shí)現(xiàn)。
雖然AQL支持從大量與openEHR兼容的異構(gòu)數(shù)據(jù)源中提取信息,但是目前仍缺乏易于使用的工具來(lái)提取數(shù)據(jù)并將其轉(zhuǎn)換為過(guò)程挖掘所需的日志格式。此外,臨床人員在查找數(shù)據(jù)項(xiàng)所屬的原型或模板時(shí)比較麻煩,而且他們通常難以直接編寫(xiě)AQL查詢代碼。為此,課題組設(shè)計(jì)并開(kāi)發(fā)了一個(gè)能夠自動(dòng)化生成并執(zhí)行AQL代碼的數(shù)據(jù)抽取軟件,以幫助臨床人員檢索數(shù)據(jù)項(xiàng)和定義查詢條件,實(shí)現(xiàn)從多種數(shù)據(jù)源中提取數(shù)據(jù),并將結(jié)果轉(zhuǎn)換成標(biāo)準(zhǔn)的事件日志格式,以方便后續(xù)的過(guò)程挖掘和分析。
原型定義語(yǔ)言(archetype definition language,ADL)是表達(dá)原型的形式化語(yǔ)言,它的文件組織結(jié)構(gòu)如圖1所示。其中cADL(ADL的約束形式)表示了原型中的定義部分,對(duì)象數(shù)據(jù)實(shí)例表示(object data instance notation,ODIN)用于表示語(yǔ)言、描述和術(shù)語(yǔ)部分。在ADL中,模板(template)是一類特殊的原型,通過(guò)“槽填充”來(lái)表達(dá)原型之間的組合關(guān)系。通常原型和模板可以匯編到操作模板(operational template,OPT)文件,并能夠進(jìn)一步生成下游應(yīng)用(例如模式、應(yīng)用程序接口等)以及電子病歷系統(tǒng)的操作格式[11]。
圖1 ADL的原型結(jié)構(gòu)Figure 1 The archetype structure of ADL
AQL的語(yǔ)法結(jié)合了SQL結(jié)構(gòu)語(yǔ)法和openEHR路徑表示,它由4個(gè)子句組成:SELECT、FROM、WHERE、ORDER BY。FROM子句用于指定原型庫(kù)中所有可用原型的子集。WHERE子句從定義好的子集中篩選數(shù)據(jù),只保留符合條件的數(shù)據(jù)。SELECT子句用于從前兩步匹配的數(shù)據(jù)中選擇需要返回的確切數(shù)據(jù)項(xiàng)。此外,AQL為適應(yīng)openEHR的層次結(jié)構(gòu),使用關(guān)鍵字CONTAINS表示原型之間的包含關(guān)系。AQL中的邏輯運(yùn)算符包括AND、OR、NOT和EXISTS。AQL的查詢參數(shù)可以在應(yīng)用程序或電子病歷系統(tǒng)解析。在實(shí)際應(yīng)用中,AQL查詢腳本通??梢酝ㄟ^(guò)調(diào)用庫(kù)函數(shù)或API服務(wù)執(zhí)行。例如,已有多個(gè)商業(yè)和開(kāi)源項(xiàng)目支持通過(guò)RESTful API接口執(zhí)行AQL語(yǔ)句[11]。
XES已被IEEE組織接受作為事件日志標(biāo)準(zhǔn)(1849-2016),用于實(shí)現(xiàn)事件日志和工作流的互操作[12]。目前已有許多開(kāi)源和商業(yè)軟件支持這種存儲(chǔ)結(jié)構(gòu),比如ProM (www.processmining.org)和Disco (www.fluxicon.com)等。XES的元數(shù)據(jù)結(jié)構(gòu)如圖2所示。XES文檔是一個(gè)包含由任意數(shù)量的蹤跡(trace)組成的日志。每個(gè)蹤跡描述與特定實(shí)例相關(guān)的事件順序列表,事件(event)是在業(yè)務(wù)執(zhí)行過(guò)程中的原子活動(dòng)。因?yàn)槿罩尽③欅E和事件對(duì)象只定義了文檔的結(jié)構(gòu),它們本身不包含任何具體信息,所有信息都存儲(chǔ)在事件日志的屬性中。每個(gè)日志、蹤跡和事件可以具有任意數(shù)量的屬性,也可以在擴(kuò)展部分定義新屬性。XES的5種核心屬性類型為字符串(string)、日期(date)、整數(shù)(int)、浮點(diǎn)數(shù)(float)和布爾值(boolean)[1]。
圖2 XES標(biāo)準(zhǔn)的元數(shù)據(jù)模型Figure 2 Meta-model for the XES standard
課題組設(shè)計(jì)的基于openEHR AQL的軟件主要完成兩方面工作,即數(shù)據(jù)查詢和格式轉(zhuǎn)換。數(shù)據(jù)查詢包括元數(shù)據(jù)(原型的數(shù)據(jù)項(xiàng))檢索和服務(wù)器中的具體數(shù)據(jù)查詢兩部分。為實(shí)現(xiàn)以上功能,軟件的工作流程如圖3所示。首先對(duì)原型和模板庫(kù)的元數(shù)據(jù)進(jìn)行預(yù)處理,確定其對(duì)應(yīng)關(guān)系。其次,根據(jù)用戶輸入的檢索關(guān)鍵字,找到相應(yīng)的原型和數(shù)據(jù)項(xiàng)。然后生成相應(yīng)的AQL腳本并在openEHR服務(wù)器上執(zhí)行,以返回所需的數(shù)據(jù)值。最后,將檢索到的數(shù)據(jù)轉(zhuǎn)換為XES文件格式進(jìn)行輸出。
圖3 數(shù)據(jù)抽取軟件框架Figure 3 The framework of data extracting software
目前,openEHR的臨床知識(shí)管理器(clinical knowledge manager,CKM)等公共存儲(chǔ)庫(kù)中已存在大量的原型。為幫助臨床專家快速查找到相關(guān)的原型,課題組基于openEHR發(fā)布的Java-libs[11]開(kāi)源項(xiàng)目,首先解析定義各原型(archetype)的ADL文件,提取出原型ID、父原型ID(當(dāng)原型被專業(yè)化時(shí))、臨床概念和數(shù)據(jù)元素等特征。此外,通過(guò)將ADL文件中的定義和術(shù)語(yǔ)部分相結(jié)合來(lái)確定各數(shù)據(jù)項(xiàng)的完整路徑。最后,通過(guò)解析業(yè)務(wù)系統(tǒng)所使用的OPT模板文件,得到每個(gè)模板與所包含原型的層次關(guān)系,生成一個(gè)從元素(及其屬性)到原型的樹(shù)狀結(jié)構(gòu)映射字典。
為了能夠智能地查找到所需的數(shù)據(jù)項(xiàng),課題組對(duì)輸入關(guān)鍵字基于語(yǔ)義擴(kuò)展后在完整的openEHR路徑中進(jìn)行搜索。當(dāng)用戶輸入要查詢的關(guān)鍵字時(shí),首先基于WordNet[13]提供的字典文件,使用麻省理工學(xué)院的JWI(Java WordNet Interface)接口得到相應(yīng)的同義詞列表。再測(cè)試這些擴(kuò)展后的同義詞是否包含在模板、原型或openEHR路徑中。若包含時(shí),列出所有相關(guān)的臨床信息模型,供用戶進(jìn)行準(zhǔn)確選擇。在本研究中只列出了ENTRY類別的原型,COMPOSITION等其他類別是根據(jù)模板文件中定義的原型映射關(guān)系推理得出。
由于AQL是一種基于模型的查詢語(yǔ)言,它只依賴于各原型的定義,所以其腳本生成過(guò)程可以分為3個(gè)步驟。首先根據(jù)用戶指定的原型及原型之間的層次(包含)關(guān)系來(lái)確定FROM子句。其次,根據(jù)查詢條件,比較運(yùn)算操作和具體數(shù)值,構(gòu)造出各條件表達(dá)式,然后對(duì)多個(gè)條件表達(dá)式進(jìn)行邏輯組合,得到WHERE子句。第三,根據(jù)用戶選擇的數(shù)據(jù)項(xiàng),得到相應(yīng)的openEHR路徑以生成SELECT子句。當(dāng)需要時(shí)還可以使用ORDER BY子句對(duì)返回的結(jié)果集進(jìn)行排序。
過(guò)程挖掘關(guān)注于以事件日志形式記錄的業(yè)務(wù)流程中的活動(dòng)(事件),這些活動(dòng)通常包括案例號(hào)(ID)、活動(dòng)名稱、執(zhí)行者、時(shí)間戳等屬性。AQL查詢結(jié)果的原始形式往往是二維表結(jié)構(gòu)。例如,openehpy開(kāi)源項(xiàng)目在openEHR服務(wù)器執(zhí)行AQL腳本之后返回的是數(shù)據(jù)框(DataFrame)對(duì)象。由于返回文件的格式不能直接用于過(guò)程挖掘分析,因此需要對(duì)結(jié)果進(jìn)行相應(yīng)的轉(zhuǎn)換。openXES (www.openxes.org)是一個(gè)面向XES標(biāo)準(zhǔn)[14]的開(kāi)源Java項(xiàng)目,課題組利用它來(lái)實(shí)現(xiàn)符合XES規(guī)范的讀取、寫(xiě)入和存儲(chǔ)事件日志。
為了實(shí)現(xiàn)服務(wù)器端的AQL查詢功能,需要3個(gè)準(zhǔn)備步驟。首先,從CKM下載或使用原型編輯器(ocean archetype editor)工具創(chuàng)建業(yè)務(wù)所需要的原型。其次,使用模板設(shè)計(jì)器(template designer)將原型中的元素組合并約束在模板中,以操作模板的文件格式導(dǎo)出。然后,將目標(biāo)業(yè)務(wù)系統(tǒng)所涉及的模板文件生成相應(yīng)的Java類,并將患者的電子健康記錄存儲(chǔ)為各個(gè)類的實(shí)例。目前搭建的系統(tǒng)是基于openEHR軟件開(kāi)發(fā)工具包(SDK),后端服務(wù)器采用Postgres數(shù)據(jù)庫(kù)作為持久化存儲(chǔ)層。在數(shù)據(jù)上傳到服務(wù)器完成后,可以通過(guò)openEHR REST API接口進(jìn)行遠(yuǎn)程訪問(wèn)(http://10.9.9.112:18080/ehrbase/swagger-ui.html)。
目前,中國(guó)約有1 300萬(wàn)腦卒中患者,每年約有200萬(wàn)人死于腦卒中,是導(dǎo)致我國(guó)成年人死亡和致殘的首要原因[15]。課題組以國(guó)家衛(wèi)生健康委員會(huì)腦卒中防治工程委員會(huì)卒中院內(nèi)篩查干預(yù)項(xiàng)目[16]為例,驗(yàn)證本文的技術(shù)方法,測(cè)試軟件的功能。該項(xiàng)目目標(biāo)是建立腦卒中篩查干預(yù)的國(guó)家數(shù)據(jù)標(biāo)準(zhǔn),采集卒中高危人員的篩查干預(yù)和卒中患者的治療隨訪數(shù)據(jù),構(gòu)建中國(guó)腦血管病大數(shù)據(jù)平臺(tái)(http://chinasdc.cn),評(píng)估患者的卒中風(fēng)險(xiǎn)并進(jìn)行干預(yù),從而降低我國(guó)腦卒中人群的總體發(fā)病率。該項(xiàng)目的大數(shù)據(jù)平臺(tái)基于openEHR進(jìn)行數(shù)據(jù)建模,共涉及32個(gè)模板、82個(gè)原型、999個(gè)數(shù)據(jù)項(xiàng),并通過(guò)RESTful API支持AQL調(diào)用和執(zhí)行。表1列出了卒中院內(nèi)篩查干預(yù)項(xiàng)目所使用的主要原型。該項(xiàng)目已在全國(guó)200多家卒中基地醫(yī)院和上千家基層醫(yī)療機(jī)構(gòu)開(kāi)展工作,采集了超過(guò)500萬(wàn)的人群篩查數(shù)據(jù)和60萬(wàn)卒中患者的電子病歷數(shù)據(jù),可用于測(cè)試本文提出的數(shù)據(jù)抽取方法,為醫(yī)療過(guò)程挖掘研究提供數(shù)據(jù)資源[17-18]。
表1 卒中篩查項(xiàng)目使用的原型示例Table 1 Examples of archetypes used in stroke registry programs
軟件的圖形操作界面如圖4所示,能夠支持SELECT、FROM、WHERE、ORDER BY等常用查詢操作,以及AND、OR、NOT等邏輯條件組合。用戶在點(diǎn)擊“選擇項(xiàng)目”或“設(shè)置條件”按鈕后,圖4下方的參數(shù)列表給出了查詢的相應(yīng)元素信息,以幫助生成AQL代碼。課題組在卒中院內(nèi)篩查干預(yù)項(xiàng)目的合作醫(yī)院部署了該數(shù)據(jù)抽取軟件,經(jīng)過(guò)對(duì)相關(guān)臨床研究人員簡(jiǎn)單培訓(xùn)后,他們可以使用本工具生成相應(yīng)的AQL查詢腳本,或手工輸入AQL語(yǔ)句,執(zhí)行后獲取檢索結(jié)果(圖5)。用戶還可以將查詢結(jié)果以常用的逗號(hào)分隔值(CSV)文件或轉(zhuǎn)換成XES日志格式導(dǎo)出(圖6)。
圖4 抽取工具的圖形操作程序界面Figure 4 Graphical user interface of the tool developed
圖5 AQL代碼與查詢結(jié)果Figure 5 AQL scripts and query results
圖6 部分生成的XES日志Figure 6 Generated event logs in XES format
在功能測(cè)試方面,課題組首先驗(yàn)證了該工具的擴(kuò)展查詢功能。例如,輸入關(guān)鍵字“sex”(性別)后,提示在“openEHR-EHR-ADMIN_ENTRY.person.v1”原型中的“Tree/Person Basic Info/Gender”路徑可能是用戶要搜索的數(shù)據(jù)項(xiàng),而只通過(guò)嚴(yán)格的關(guān)鍵字匹配時(shí)無(wú)法找到該結(jié)果。另外,課題組模擬了卒中院內(nèi)篩查干預(yù)項(xiàng)目在臨床研究中的3種典型查詢場(chǎng)景。該軟件能夠分別生成相應(yīng)的AQL腳本并將其提交到openEHR服務(wù)器執(zhí)行,返回查詢結(jié)果和轉(zhuǎn)換后的事件日志。
案例1:查詢所有高血壓患者編號(hào)、血壓值和檢查時(shí)間,并按檢查時(shí)間進(jìn)行排序。高血壓是指收縮壓大于等于140 mmHg(1 mmHg=133.3 Pa)或舒張壓大于等于90 mmHg。當(dāng)輸入“血壓(blood pressure)”作為關(guān)鍵詞,可以檢索到相關(guān)的原型為“openEHR-ehr-COMPOSITION.encounter.v1”和“openEHR-EHR-OBSERVATION.blood_pressure.v2”。其余操作過(guò)程如圖4和圖5所示。
案例2:查詢所有診斷為卒中的患者。在輸入“診斷(diagnosis)”后,系統(tǒng)列出了涉及的原型為“openehr-ehr-COMPOSITION.report.v1”和“openehr-ehr-EVALUATION.problem_diagnosis.v1”。原型中數(shù)據(jù)項(xiàng)和對(duì)應(yīng)屬性組成的路徑為“d/data[at0001]/items[at0002]/value/defining_code”。最后,生成的AQL語(yǔ)句如下,其中“I63”和“I64”是卒中對(duì)應(yīng)的ICD-10編碼。每個(gè)ehr_id代表一個(gè)特定的患者。返回所有符合條件的患者列于結(jié)果集中。
SELECT e/ehr_id/valueFROM EHRe CONTAINSCOMPOSITIONr[openEHR-EHR-COMPOSITION.report.v1] CONTAINSEVALUATIONd[openEHR-EHR-EVALUATION.problem_diagnosis.v1]WHERE d/data[at0001]/items[at0002]/value/defining_codematches(“I63”,”I64”)
案例3:查詢實(shí)驗(yàn)室檢驗(yàn)報(bào)告中的微生物項(xiàng)目名稱和標(biāo)本取樣時(shí)間。當(dāng)輸入“實(shí)驗(yàn)室檢查(laboratory test)”后,用戶選擇了“項(xiàng)目名稱(analyte name)”、“采集時(shí)間(collection time)”和“報(bào)告編號(hào)(uid)”3個(gè)數(shù)據(jù)項(xiàng)。這些數(shù)據(jù)項(xiàng)所屬的原型分別為“openEHR-EHR-COMPOSITION.report.v1”,“openEHR-EHR-OBSERVATION.laboratory_test_result.v1”,“openEHR-EHR-CLUSTER.laboratory_test_analyte.v1”和“openEHR-EHR-CLUSTER.specimen.v1”。這些原型相互關(guān)聯(lián)和嵌套構(gòu)成一條復(fù)雜查詢語(yǔ)句,工具生成的AQL代碼如下。
SELECT c0/items[at0024]/value/valueasF0,//項(xiàng)目名稱 c1/items[at0015]/value/valueasF1,//采集時(shí)間 c2/uid/valueasF2 //報(bào)告編號(hào)FROM EHRe CONTAINSCOMPOSITIONc2[openEHR-EHR-COMPOSITION.report.v1] CONTAINSOBSERVATIONo3[openEHR-EHR-OBSERVATION.laboratory_test_result.v1] CONTAINS(CLUSTERc0[openEHR-EHR-CLUSTER.laboratory_test_analyte.v1] and CLUSTERc1[openEHR-EHR-CLUSTER.specimen.v1])WHEREc2/name/value=MikrobiologischerBefund
除了使用自動(dòng)生成的AQL腳本之外,用戶還可以直接輸入簡(jiǎn)單查詢語(yǔ)句。例如輸入“SELECT e/ehr_id/value FROM EHR e”統(tǒng)計(jì)所有電子健康記錄的編號(hào)。以上實(shí)驗(yàn)結(jié)果表明該工具的查詢功能較全面,能夠覆蓋和支持包含時(shí)間信息的各種過(guò)程挖掘應(yīng)用場(chǎng)景。
與本文相關(guān)的研究工作主要有:Yang等[19]基于擴(kuò)展的貝葉斯網(wǎng)絡(luò)表示openEHR原型,并使用推理過(guò)程來(lái)發(fā)現(xiàn)相關(guān)的原型信息。Almeida等[20]提出了一種將openEHR存儲(chǔ)庫(kù)中的數(shù)據(jù)導(dǎo)出到標(biāo)準(zhǔn)表的方法,以方便其他軟件進(jìn)一步的數(shù)據(jù)分析。Khennou等[21]將大數(shù)據(jù)分析工具集成到基于openEHR的系統(tǒng)中,以改進(jìn)對(duì)電子健康記錄的分析過(guò)程。然而,這些研究并沒(méi)有提出一種便于臨床人員使用的信息檢索和數(shù)據(jù)抽取方法。Delussu等[22]采用openEHR的標(biāo)準(zhǔn)規(guī)范實(shí)現(xiàn)了一種可擴(kuò)展的數(shù)據(jù)訪問(wèn)層,以管理結(jié)構(gòu)化、異構(gòu)的生物醫(yī)學(xué)與臨床數(shù)據(jù)。EtherCIS(ethereal clinical information system)是一個(gè)與openEHR臨床信息表示標(biāo)準(zhǔn)相兼容的開(kāi)源平臺(tái),支持從AQL到SQL的轉(zhuǎn)換。劉駿健[23]基于AQL開(kāi)發(fā)了模板查詢語(yǔ)言(TQL),并定義了TQL的4種操作,如選擇、插入、更新和刪除。但是,這些研究并沒(méi)有針對(duì)醫(yī)療過(guò)程挖掘所需要的事件日志進(jìn)行優(yōu)化和格式轉(zhuǎn)換。本文的研究工作建立了openEHR和過(guò)程挖掘標(biāo)準(zhǔn)存儲(chǔ)格式之間的橋梁,有助于屏蔽底層數(shù)據(jù)源的異構(gòu)性。雖然開(kāi)發(fā)的軟件界面參考了EHRServer開(kāi)源項(xiàng)目,但是課題組增加了(擴(kuò)展)搜索和生成AQL代碼及格式轉(zhuǎn)換的功能。
本文提出了一種基于openEHR AQL面向過(guò)程挖掘的數(shù)據(jù)抽取和格式轉(zhuǎn)換方法,開(kāi)發(fā)了抽取轉(zhuǎn)換軟件,使臨床科研人員無(wú)需掌握實(shí)際數(shù)據(jù)庫(kù)結(jié)構(gòu),通過(guò)領(lǐng)域知識(shí)模型來(lái)查詢所需的臨床數(shù)據(jù)。課題組以卒中項(xiàng)目為例,測(cè)試驗(yàn)證了軟件的功能正確性。其優(yōu)點(diǎn)是對(duì)臨床業(yè)務(wù)人員來(lái)說(shuō)應(yīng)用簡(jiǎn)便,支持點(diǎn)擊式操作創(chuàng)建查詢腳本,能夠屏蔽底層異構(gòu)信息系統(tǒng)的操作復(fù)雜性。與使用SQL直接查詢關(guān)系數(shù)據(jù)庫(kù)的方法相比,AQL查詢的性能稍低,這需要進(jìn)一步優(yōu)化openEHR服務(wù)器的底層實(shí)現(xiàn)。本工具的另一個(gè)局限性是目前只支持對(duì)英文原型的查詢,課題組計(jì)劃利用中文知識(shí)圖譜實(shí)現(xiàn)對(duì)中文同義詞和下義詞的擴(kuò)展查詢。最后,雖然課題組的工具實(shí)現(xiàn)了構(gòu)建和執(zhí)行AQL的基本功能,但還需要增加其功能的完整性,如支持Exists、In等查詢關(guān)鍵字和算術(shù)操作,以提高對(duì)臨床科研的實(shí)用價(jià)值。