潘傳紅+雷保倉+馮樂+何斌
[摘要] SQL語言可以快速、準確、高效地查詢醫(yī)院各項工作所需信息,能更好地為醫(yī)院管理與決策提供服務(wù)。利用SQL語句查詢醫(yī)院以電子病歷為核心的數(shù)字化信息;相對于人工統(tǒng)計,大大提高了工作效率;還可利用SQL語句挖掘數(shù)據(jù)庫中龐大數(shù)據(jù)之間的關(guān)系,發(fā)揮核心數(shù)據(jù)的最大效能,這也是信息管理人員必備的技能。
[關(guān)鍵詞] 電子病歷;SQL語言;醫(yī)院統(tǒng)計
[中圖分類號] R195 [文獻標識碼] C [文章編號] 1673-9701(2014)25-0111-03
醫(yī)院信息化對于醫(yī)院適應(yīng)我國醫(yī)療衛(wèi)生體制改革、加強現(xiàn)代化管理具有重要的意義[1]。隨著HIS(Hospital Information System)系統(tǒng)[2]的強制推行使用以及LIS(Laboratory Information Management System)系統(tǒng)[3]和PACS(Picture Archiving and Communication Systems)系統(tǒng)[4]的普及應(yīng)用[5],電子病歷發(fā)展到今天,在醫(yī)療工作中起著越來越重要的作用,對于醫(yī)療機構(gòu)和患者均具有重要的意義和價值。利用網(wǎng)絡(luò)及數(shù)據(jù)庫技術(shù)有機整合醫(yī)院業(yè)務(wù)信息和管理信息,實現(xiàn)醫(yī)院電子病歷的信息的傳輸、存儲、利用、共享,并且實現(xiàn)了醫(yī)院內(nèi)部資源最有效地利用和業(yè)務(wù)流程最大限度地優(yōu)化,高度完善了醫(yī)院信息體系[6]。在醫(yī)院信息系統(tǒng)環(huán)境下,信息管理人員的任務(wù)是針對醫(yī)院各方面的管理工作,通過對數(shù)據(jù)庫中原始信息的匯總統(tǒng)計,提供反映醫(yī)院各方面運行情況的各種報表,滿足各種類型的數(shù)據(jù)查詢和統(tǒng)計要求。本文針對頻率較高的查詢統(tǒng)計要求,說明怎樣使用查詢語句SQL(Structured Query Language)[7,8]對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢和統(tǒng)計。
指令的第一行告訴SQL處理器是一個希望從某數(shù)據(jù)庫中檢索信息的SELECT語句。select_list參數(shù)指定了我們想要查詢信息的類型。第二行的FROM子句定義了我們要查詢的數(shù)據(jù)庫表的名稱,而WHERE子句則使我們能夠限定返回結(jié)果集的數(shù)據(jù)記錄所要滿足的特殊條件[condition(s)]。最后兩個子句是該語句的一些高級特性。
1 查詢單表語句
例如:
查看所有的住院患者信息,不管這個患者是否在院出院
Select * from PATS_VISIT;
查看當前正在住院的患者信息
Select * from PATS_IN_HOSPITAL。
2 使用where子句設(shè)置查詢條件
2.1 過濾不需要的數(shù)據(jù)行
例如:查詢住院號為111111的患者
Select * from PATS_VISIT where PATIENT_ID= 111111;
查詢住院號為111111患者的病歷的臨床路徑
Select * from EMR_CP_PATIENT_NODE where PATIENT_ID=111111
Select * from EMR_CP_PATIENT_NODE_DOCTOR where PATIENT_ID=111111
Select * from EMR_CP_PATIENT_NODE_NURSE where PATIENT_ID=111111
Select * from EMR_CP_PATIENT_NODE_ORDER where PATIENT_ID=111111。
2.2 like與通配符
like謂語的一般形式為:字段名[not]like字符串常數(shù)??墒褂冒俜痔?、下劃線_、方括號[9]。
例如:查詢出院第一診斷為肝硬化的患者信息
select PATS_VISIT.PATIENT_ID,PATS_VISIT.VISIT_ID,PATS_VISIT.ADMISSION_DATE_TIME,PATS_ VISIT.DISCHARGE_DATE_TIME,PATS_VISIT.INDEN TITY,PATS_VISIT.CHARGE_TYPE,PATS_VISIT. TOTAL_COSTS,DIAGNOSIS.DIAGNOSIS_DESC from PATS_VISIT, DIAGNOSIS where (PATS_VISIT.PATIENT_ID=DIAGNOSIS.PATIENT_ID)and(PATS_ VISIT. VISIT_ID=DIAGNOSIS.VISIT_ID)and(DIAGNOSIS.DIAGNOSIS_TYPE=‘3)and(DIAGNOSIS.DIAGNOSIS_NO=‘1)and(DIAGNOSIS.DIAGNOSIS_DESC like‘%肝硬化%)。
3 常用函數(shù)在數(shù)據(jù)查詢中的使用
3.1 顯示某一字段中不同的值
select語句使用all或distinct選項來顯示表中符合條件的所有行或刪除其中重復(fù)的數(shù)據(jù)行,默認為all。使用distinct選項時,對于所有重復(fù)的數(shù)據(jù)行在select返回的結(jié)果集合中只保留一行。
例如:統(tǒng)計2013年11月份入院患者的數(shù)目
select distinct(IDENTITY) from PATS_VISIT where ADM ISSION_DATE_TIME>=‘2013-11-01 00:00:00and ADMISSION_DATE_TIME<‘2013-12-01 00:00:00。
3.2 統(tǒng)計函數(shù)count、sum、avg、max、min等
count對一列中的值計算個數(shù),count(*)計算記錄個數(shù),sum求某一列值的總和(這一列的類型必須是數(shù)值型的),avg求某一列值的平均值(這一列的類型也必須是數(shù)值型的),max求某一列值中的最大值, min求某一列值中的最小值。endprint
例如:統(tǒng)計一個住院號為111111患者第1次住院的總費用
select sum(TOTAL_COSTS) from PATS_VISIT where PATIENT_ID=‘111111and VISIT_ID=‘1。
例如: 查詢一個住院號為111111患者最高的一筆費用
select max(TOTAL_COSTS) from PATS_VISIT where PATIENT_ID=‘111111。
4 查詢多表語句
根據(jù)SQL語法,通過連接運算符可以實現(xiàn)多個表查詢。連接可以在Select語句的FROM子句或Where子句中建立,在FROM子句中指出連接時有助于將連接操作與Where子句中的搜索條件區(qū)分開來。
例如:查詢醫(yī)院所有科室在2013年11月份的出院患者人數(shù)
select PATS_VISIT.PATIENT_ID,PATS_VISIT.VISIT_ID,PATS_VISIT.ADMISSION_DATE_TIME,PATS_ VISIT. DISCHARGE_DATE_TIME,PATS_VISIT.INDEN TITY,PATS_VISIT.CHARGE_TYPE,PATS_VISIT.TOTAL_COSTS,DIAGNOSIS.DIAGNOSIS_DESCfrom PATS_ VISIT,DIAGNOSIS where (PATS_VISIT.PATIENT_ID=DIAGNOSIS.PAselect DEPT_DICT.DEPT_NAME,count (PAT_VI SIT.PATIENT_ID)from DEPT_DICT,PAT_VISIT where(DEPT_DICT.DEPT_CODE=PAT_VIS IT.DEPT_ DISCHARGE_FROM)and(PAT_VISIT.DISCHAGRE_ DATE_TIME>=‘2013-11-01 00:00:00)and (PAT_ VISIT. DISCHAGRE_DATE_TIME<‘2013-12-01 00:00:00) group by DEPT_DICT.DEPT_NAME。
查詢未提交的電子病歷的情況
Select PATIENT_ID,ADMISSION_DATE_TIME,DISC HARGE_DATE_TIME,DEPT_ADMISSION_TO,DEPT_ DISCHARGE_FROM,DOCTOR_IN_CHARGE,MR_DO CTOR_PART_STATUSfrom PAT_VISIT WHERE DEPT_ DISCHARGE_FROM IS NOT NULL AND DISCHAR GE DAGE_TIME IS NOT NULL AND MR_DOCTOR_ PART_STATUS<3 AND DISCHARGE_DATE_TIME 在網(wǎng)絡(luò)環(huán)境下,醫(yī)院信息管理[9]工作將起著越來越重要的作用,SQL是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。隨著醫(yī)院系統(tǒng)建設(shè)的進一步深化,統(tǒng)計工作中信息化應(yīng)用程度的進一步加深,通過查詢挖掘信息化數(shù)據(jù),可以為醫(yī)院的決策支持系統(tǒng)提供支持。從醫(yī)院信息管理系統(tǒng)中,能夠提取出與決策和管理相關(guān)的信息,為決策提供參考。用現(xiàn)有的數(shù)據(jù)信息總結(jié)出醫(yī)院的發(fā)展規(guī)律,幫助院領(lǐng)導(dǎo)展望醫(yī)院的發(fā)展前景[10]。信息化的發(fā)展,對信息管理人員提出了更高的要求,除了會使用基本的查詢功能,還要求具有相對較高級的數(shù)據(jù)查詢知識,特別需要對一些非常規(guī)性的統(tǒng)計報表進行查詢,這時我們可以通過SQL語言查詢解決,從而提高統(tǒng)計工作效率,更好地為醫(yī)院管理服務(wù)[11]。 5 小結(jié) 本文重點介紹了SQL中的select語句的統(tǒng)計功能及其使用方法,select語句是SQL語言中最重要也是最復(fù)雜的語句[12],其他SQL語句在形式上大都可以看作是select語句在某種形式上的變換,只是在進行功能處理時有所不同。因此,處理好select語句的詞法分析、語法分析以及生成相關(guān)數(shù)據(jù)結(jié)構(gòu)是解決所有SQL語句的關(guān)鍵[13]。掌握SQL語句將極大地提高信息管理人員的工作效率,緩解信息管理工作強度,不僅成為信息管理人員查詢統(tǒng)計的有力工具,還可以成為軟件開發(fā)的有力武器。 [參考文獻] [1] 王立波,王季,田甜,等. 淺談我國醫(yī)院信息化的現(xiàn)狀和發(fā)展趨勢[J]. 吉林醫(yī)學(xué),2013,1(34):195-197. [2] 孔琳. 基于HIS的數(shù)據(jù)倉庫構(gòu)建及多維分析[J]. 醫(yī)學(xué)信息雜志, 2011,32(11):6-8. [3] 陳紹明,洪建. 實驗室信息管理系統(tǒng)在醫(yī)院信息系統(tǒng)中的應(yīng)用[J]. 臨床醫(yī)學(xué)工程,2011,2(18):296-297. [4] LUO M,PENG CL,WANG XL,et al. Initial application of picture archiving and communication system and its benefit analysis[J]. Chinese Medical Journal,2004,117(10):1582-1585. [5] 臧國華,張侃懷,趙雄秀,等. 利用SQL語句實現(xiàn)對醫(yī)院電子病歷進行查詢的幾點體會[J]. 中外健康文摘,2012, 6(9):63-65. [6] 陳紅,戚建偉,龔偉偉. 淺談醫(yī)院信息化建設(shè)[J]. 醫(yī)院管理論壇,2010,12(8):83. [7] 馬軍,李玉林. SQL語言與數(shù)據(jù)操作技術(shù)大全[M].北京:電子工業(yè)出版社,2008. [8] 景慎德. SQL查詢優(yōu)化的策略與技巧[J]. 福建電腦,2009, (10):168-170. [9] 羅曉文. SQL語言在醫(yī)院統(tǒng)計查詢中的運用研究[J]. 管理觀察,2011,3(422):167-168. [10] 王為. 醫(yī)院信息化系統(tǒng)分析[J]. 中國醫(yī)藥指南,2009, 16(9):289. [11] 陳立富,張寓景,李婷,等. 深化醫(yī)院信息管理系統(tǒng)應(yīng)用的思考[J]. 解放軍醫(yī)院管理雜志,2007,14(2):112-114. [12] Melton J. A flurry of activity in the SQL standards world[J]. Database Programming & Design,1995,8(11):61-63. [13] 唐常杰,相利民,熊嵐,等. 數(shù)據(jù)庫管理系統(tǒng)設(shè)計與實現(xiàn)[M]. 北京:電子工業(yè)出版社,1993:199-262. (收稿日期:2014-02-28)