潘傳紅+雷保倉+馮樂+何斌
[摘要] SQL語言可以快速、準確、高效地查詢醫院各項工作所需信息,能更好地為醫院管理與決策提供服務。利用SQL語句查詢醫院以電子病歷為核心的數字化信息;相對于人工統計,大大提高了工作效率;還可利用SQL語句挖掘數據庫中龐大數據之間的關系,發揮核心數據的最大效能,這也是信息管理人員必備的技能。
[關鍵詞] 電子病歷;SQL語言;醫院統計
[中圖分類號] R195 [文獻標識碼] C [文章編號] 1673-9701(2014)25-0111-03
醫院信息化對于醫院適應我國醫療衛生體制改革、加強現代化管理具有重要的意義[1]。隨著HIS(Hospital Information System)系統[2]的強制推行使用以及LIS(Laboratory Information Management System)系統[3]和PACS(Picture Archiving and Communication Systems)系統[4]的普及應用[5],電子病歷發展到今天,在醫療工作中起著越來越重要的作用,對于醫療機構和患者均具有重要的意義和價值。利用網絡及數據庫技術有機整合醫院業務信息和管理信息,實現醫院電子病歷的信息的傳輸、存儲、利用、共享,并且實現了醫院內部資源最有效地利用和業務流程最大限度地優化,高度完善了醫院信息體系[6]。在醫院信息系統環境下,信息管理人員的任務是針對醫院各方面的管理工作,通過對數據庫中原始信息的匯總統計,提供反映醫院各方面運行情況的各種報表,滿足各種類型的數據查詢和統計要求。本文針對頻率較高的查詢統計要求,說明怎樣使用查詢語句SQL(Structured Query Language)[7,8]對數據庫中的數據進行查詢和統計。
指令的第一行告訴SQL處理器是一個希望從某數據庫中檢索信息的SELECT語句。select_list參數指定了我們想要查詢信息的類型。第二行的FROM子句定義了我們要查詢的數據庫表的名稱,而WHERE子句則使我們能夠限定返回結果集的數據記錄所要滿足的特殊條件[condition(s)]。最后兩個子句是該語句的一些高級特性。
1 查詢單表語句
例如:
查看所有的住院患者信息,不管這個患者是否在院出院
Select * from PATS_VISIT;
查看當前正在住院的患者信息
Select * from PATS_IN_HOSPITAL。
2 使用where子句設置查詢條件
2.1 過濾不需要的數據行
例如:查詢住院號為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字符串常數。可使用百分號%、下劃線_、方括號[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 常用函數在數據查詢中的使用
3.1 顯示某一字段中不同的值
select語句使用all或distinct選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為all。使用distinct選項時,對于所有重復的數據行在select返回的結果集合中只保留一行。
例如:統計2013年11月份入院患者的數目
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 統計函數count、sum、avg、max、min等
count對一列中的值計算個數,count(*)計算記錄個數,sum求某一列值的總和(這一列的類型必須是數值型的),avg求某一列值的平均值(這一列的類型也必須是數值型的),max求某一列值中的最大值, min求某一列值中的最小值。endprint
例如:統計一個住院號為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 查詢多表語句
根據SQL語法,通過連接運算符可以實現多個表查詢。連接可以在Select語句的FROM子句或Where子句中建立,在FROM子句中指出連接時有助于將連接操作與Where子句中的搜索條件區分開來。
例如:查詢醫院所有科室在2013年11月份的出院患者人數
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 在網絡環境下,醫院信息管理[9]工作將起著越來越重要的作用,SQL是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。隨著醫院系統建設的進一步深化,統計工作中信息化應用程度的進一步加深,通過查詢挖掘信息化數據,可以為醫院的決策支持系統提供支持。從醫院信息管理系統中,能夠提取出與決策和管理相關的信息,為決策提供參考。用現有的數據信息總結出醫院的發展規律,幫助院領導展望醫院的發展前景[10]。信息化的發展,對信息管理人員提出了更高的要求,除了會使用基本的查詢功能,還要求具有相對較高級的數據查詢知識,特別需要對一些非常規性的統計報表進行查詢,這時我們可以通過SQL語言查詢解決,從而提高統計工作效率,更好地為醫院管理服務[11]。 5 小結 本文重點介紹了SQL中的select語句的統計功能及其使用方法,select語句是SQL語言中最重要也是最復雜的語句[12],其他SQL語句在形式上大都可以看作是select語句在某種形式上的變換,只是在進行功能處理時有所不同。因此,處理好select語句的詞法分析、語法分析以及生成相關數據結構是解決所有SQL語句的關鍵[13]。掌握SQL語句將極大地提高信息管理人員的工作效率,緩解信息管理工作強度,不僅成為信息管理人員查詢統計的有力工具,還可以成為軟件開發的有力武器。 [參考文獻] [1] 王立波,王季,田甜,等. 淺談我國醫院信息化的現狀和發展趨勢[J]. 吉林醫學,2013,1(34):195-197. [2] 孔琳. 基于HIS的數據倉庫構建及多維分析[J]. 醫學信息雜志, 2011,32(11):6-8. [3] 陳紹明,洪建. 實驗室信息管理系統在醫院信息系統中的應用[J]. 臨床醫學工程,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語句實現對醫院電子病歷進行查詢的幾點體會[J]. 中外健康文摘,2012, 6(9):63-65. [6] 陳紅,戚建偉,龔偉偉. 淺談醫院信息化建設[J]. 醫院管理論壇,2010,12(8):83. [7] 馬軍,李玉林. SQL語言與數據操作技術大全[M].北京:電子工業出版社,2008. [8] 景慎德. SQL查詢優化的策略與技巧[J]. 福建電腦,2009, (10):168-170. [9] 羅曉文. SQL語言在醫院統計查詢中的運用研究[J]. 管理觀察,2011,3(422):167-168. [10] 王為. 醫院信息化系統分析[J]. 中國醫藥指南,2009, 16(9):289. [11] 陳立富,張寓景,李婷,等. 深化醫院信息管理系統應用的思考[J]. 解放軍醫院管理雜志,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] 唐常杰,相利民,熊嵐,等. 數據庫管理系統設計與實現[M]. 北京:電子工業出版社,1993:199-262. (收稿日期:2014-02-28)