王 翔 陸 琴
1 蘇州瑞華骨科醫院信息處,215000 江蘇 蘇州; 2 蘇州瑞華骨科醫院病案管理辦公室,215000 江蘇 蘇州
近年來,我國醫院對于信息化的發展越來越重視,建成智慧醫院已成為各醫院發展的目標,中國醫院將會走向全新的時代。這個偉大變革的背后不僅僅是實現醫院系統信息化和智能化,更重要的是最大限度地挖掘信息系統所產生的海量數據。而數據的挖掘離不開工具,SQL作為一種適用于關系數據庫的結構化語言,不僅允許用戶與數據庫相互作用,而且還具有數據定義、數據檢索、數據更新、訪問控制、數據共享等功能[1]。這使得SQL語言與醫院信息系統完美結合,推動著醫院往智慧醫院的方向不斷前進。本文通過一些實例,介紹針對各部門提出的臨時性報表需求,采用SQL語句響應需求并完美解決。
依據等級醫院評審實施細則中危重病人數據的統計,在沒有現成系統產出報表的情況下,可選擇SQL中的SELECT語句進行統計。SELECT語句是SQL語句中最常用的語句。SELECT 語句的一般形式如下:
SELECT select_list(字段)
FROM source(數據表名)
WHERE condition(s)(一個或多個限制條件)
SELECT A.ZYHM住院號碼,A.BRXM病人姓名,
B.NAME出院科室,A.CYRQ出院日期
FROM BA_SYJBK A,YY_KSBMK B
WHERE A.ZYWZ=‘1’ AND
A.CYKS=B.ID AND A.CYRQ>=‘2021010100:00:00’
AND A.CYRQ<=‘2021013123:59:59’
該語句統計的是2021年1月份某院出院病人中危重病人數。統計的數據表中必須包含住院號、病人姓名、出院科別和出院日期字段, BA_SYJBK表中只有科室代碼,為實現表字段完整性,使用多表聯接的方法,分別用A代表BA_SYJBK,B代表YY_KSBMK,利用兩表中的2個主鍵進行相聯(A.CYKS=B.ID),聯接成1個表。見圖1。增加約束條件,一是A表中的ZYWZ(住院期間危重),在A表中ZYWZ字段0代表“不是危重”,1代表“危重”,所以ZYWZ=1,其為主要的約束條件;二是時間約束,按A表中的CYRQ(出院日期)字段為約束條件,統計出某個時間段內的所有數據。

圖1 首頁-科別關聯圖
統計住院病人在某一段時間內做DSA檢查所產生的費用明細。
SELECT YPMC AS物品名稱,YPDW AS物品單位,YPDJ AS物品單價,
SUM(YPSL)物品總數量,SUM(ZJE)總計
FROM ZY_BRFYMXK WHERE CZYH=‘0193’
AND QQRQ>=2021010100:00:00’AND QQRQ<=‘2021013123:59:59’
GROUP BY YPMC,YPDJ,YPDW
UNION ALL
SELECT YPMC AS物品名稱,YPDW AS物品單位,YPDJ AS物品單價,
SUM(YPSL)物品總數量,SUM(ZJE)總計
FROM ZY_BRFYMXK WHERE
(YPDM='0725' OR YPDM='0717' OR YPDM='0716')
AND QQRQ>=‘2021010100:00:00’AND QQRQ<=‘2021013123:59:59’
AND CZYH<>‘0193’
GROUP BY YPMC,YPDJ,YPDW
該語句執行后就可以統計出DSA檢查室2021年1月份產生的費用明細。各表字段對應的名稱見圖2。該統計語句中用到了UNION ALL,因一部分藥品是由DSA檢查室直接領取,另一部分藥品由護士領取,送至DSA檢查室。2種不同的統計口徑,2次統計的字段必須保持一致。使用SUM(YPSL)是將相同名稱的耗材或者藥品進行相加,SUM(ZJE)則是將相同物品總金額進行相加。GROUP BY語句用于結合合計函數,根據1個或多個列對結果集進行分組。該語句中對相同物品名稱進行了過濾分組,最終合并為1張表,完成了數據的統計。

圖2 費用明細庫字段表示圖
因新冠疫情影響,核酸檢測成為醫院重要的日常工作,對于核酸被檢測人員數量的統計也是非常重要的。它是從一線獲取的重要戰時報告,也是醫院和政府決策的重要依據。
SELECT C.SFRQ,A.HZXM,B.YPMC,D.SFZH,D.SEX
FROM SF_MZCFK A,SF_MZCFMXK B ,SF_BRJSK C ,SF_BRXXK D
WHERE A.XH=B.CFXH
AND A.JSSJH=C.SJH
AND C.BLH=D.BLH
AND C.YBJSZT=‘2’
AND C.SFRQ BETWEEN ‘20200716’ AND‘20200723’+‘24’
AND B.YPDM IN(‘907786’,‘907788’,‘907830’,‘907832’,‘907834’)
AND B.YLSJ=‘80’
ORDER BY C.SFRQ
該統計語句屬于多表聯接,各表中都有主鍵與其他表一一對應,最終從各表中選擇自己想要的字段,組成1個新的表。見圖3。C表中的YBJSZT(醫保結算狀態)0=未結算,2=結算。SFRQ使用了“BETWEEN…AND…”,也可以使用“SFRQ>=’日期’ AND SFRQ<=’日期’”。B表中的YPDM在語句中已將所有的核酸檢測收費小項目都一一列舉。最終使用ORDER BY 讓統計數據按照SFRQ進行排列。

圖3 門診處方結算關聯圖
為了提高服務質量,規范出院流程,院領導提出在病人出院前一天下午16:30前醫生需下達明日出院醫囑,并在次日10:00前將病人出院相關資料送至收費處,病人結完賬可直接攜帶相關資料離開醫院,簡化流程,提高滿意度。為了更有效地對其進行管控,院領導要求信息處對明日出院醫囑進行統計,由于周期比較長,信息處選擇制作成外掛報表,便于生成固定表格,供院領導實時查詢。
CREATE PROC USP_ZY_MRCYYZTJ
@TJ VARCHAR(12)
AS
SET NOCOUNT ON
DECLARE @KSRQ CHAR(16),@JSRQ CHAR(16)
SELECT @KSRQ = CONVERT(VARCHAR(100),GETDATE(),112)+'00:00:00'
SELECT @JSRQ = CONVERT(VARCHAR(100),GETDATE(),112)+'16:30:00'
CREAT TABLE #TEMP1
(
KSMC VARCHAR(64),
KZRMC VARCHAR(64)
)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘手外一科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘手外二科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘手外三科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘手外四科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘手外五科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘足踝一科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘足踝二科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘小兒骨科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘創傷骨科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘脊柱外科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘婦產科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘普通外科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘神經外科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘神經內科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘消化內科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘內科’,‘XX’)
INSERT #TEMP1 (KSMC ,KZRMC) VALUES (‘ICU’,‘XX’)
SELECT
C.KSMC 科別,
D.KZRMC 科主任,
C.YSXM 組主任,A.CWDM 床位號,A.HZXM 患者姓名,C.BLH 住院號,
A.LRRQ 錄入日期 FEOM
[172.168.3.7].[CISDB].[DBO].[CPOE_LSYZK] A,[172.168.3.7].[CISDB].[DBO].[CPOE_BRSYK] C , #TEMP1 D
WHERE A.YPMC=‘明日出院’ AND A.SYXH=C.SYXH AND C.KSMC=D.KSMC
AND A.LRRQ>=@KSRQ AND A.LRRQ<=@JSRQ
AND A.YZZT IN (0,1,2) ORDER BY C.KSMC,C.YSXM,A.LRRQ ASC
DROP TABLE #TEMP1
該語句中創建了存儲過程,便于以外掛報表的形式進行統計。首先定義時間字段,設定當天0:0至當天下午16:30的時間范圍。創建一張臨時表#TEMP1,報表中需包含科主任姓名和科別字段,用INSERT語句向臨時表中插入數據。再用SELECT 語句進行多表聯接。語句中用[172.168.3.7].[CISDB].[DBO].[CPOE_LSYZK] 表示數據表,是跨服務器的表示方法,[172.168.3.7]代表服務器,[CISDB]代表數據庫,[DBO]數據庫的默認用戶,[CPOE_LSYZK]代表數據表。表之間的主鍵聯接依據見圖4。限制條件中YZZT 0=待審核,1=審核,2=執行,3=取消(DC),4=停止。ASC是按升序對統計的數據進行排列,最后刪除臨時表。

圖4 首頁-醫囑關聯圖
醫院管理決策、臨床與科研等工作都離不開信息支撐。雖然信息系統中的統計功能可以滿足大部分的數據需求,但依然會存在一些特殊需求無法滿足,這種情況下可以運用SQL語句完成數據采集及分析工作。
SQL語句使用簡單,即使是非計算機專業人員,通過簡單培訓也能很快上手完成查詢操作。在醫院信息數據統計工作中應用SQL語句,能快速響應醫院數據統計需求,為臨床、科研、管理和醫院服務提供助力[2]。