摘要:通過對醫(yī)療報銷系統(tǒng)的業(yè)務(wù)流程分析,根據(jù)系統(tǒng)總體設(shè)計、功能設(shè)計,給出了醫(yī)療報銷系統(tǒng)的解決方案,并利用存儲過程優(yōu)化了系統(tǒng)對數(shù)據(jù)庫的訪問。該方案有較強的實用性和通用性,為類似系統(tǒng)的設(shè)計和開發(fā)提供了思路和方法。
關(guān)鍵詞:醫(yī)療報銷;解決方案;存儲過程
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)35-2495-03
Design and Implementation of Medicine Expense System Based on .NET
CHEN Jia-hong
(Jinling Institute of Technology,Nanjing 210001,China)
Abstract: This paper describes the business process of medicine expense system, designs system functional module, provides the solution for medicine expense,and the visit of this system to database is optimized in the stored procedure. This solution provides a way to improve other similar business processes.
Key words: Medicine expense; solution; stored procedure
1 引言
公費醫(yī)療費用的報銷和管理是許多單位的重要工作之一,但是,傳統(tǒng)的公費醫(yī)療報銷采用手工的方式來管理,不但效率低下,容易出錯,年終的查詢、統(tǒng)計和匯總等工作更是工作量巨大。為了提高公費醫(yī)療報銷的效率,采用信息技術(shù)無疑是一個好的選擇。為此,我們設(shè)計了一個在.net平臺下運行的公費醫(yī)療報銷系統(tǒng)。
金陵科技學(xué)院醫(yī)務(wù)室每個月有大量的醫(yī)療費用報銷單據(jù)需要處理和上報財務(wù)處,同時,每年還要匯總出每位教工的醫(yī)療報銷費用的數(shù)據(jù)和全校的數(shù)據(jù),發(fā)放給各位教工,同時還需要向市公費醫(yī)療管理中心上報。
校醫(yī)務(wù)室原來的工作方式為:把每月報銷的數(shù)據(jù)存儲到Excel文件中,這樣,隨著報銷的數(shù)據(jù)越來越多,Excel文件也越來越多,這種采用文件的方式往往不便于對數(shù)據(jù)的管理和維護(hù)。其次,每年要出統(tǒng)計結(jié)果和向公費醫(yī)療管理中心上報匯總數(shù)據(jù)時,往往要人工進(jìn)行大量重復(fù)性的統(tǒng)計和匯總的工作。這樣的工作方式不僅效率低下,還容易出現(xiàn)錯誤,也不不便于對數(shù)據(jù)的管理與維護(hù)。所以,醫(yī)務(wù)室需要開發(fā)一個軟件系統(tǒng),這個軟件系統(tǒng)要能完成這樣一些功能,第一,能高效完成醫(yī)療報銷數(shù)據(jù)錄入和維護(hù)。第二,并能方便查詢和修改,統(tǒng)計和匯總醫(yī)療報銷數(shù)據(jù)。第三,能對全校教工的信息和部門的信息進(jìn)行維護(hù),因為學(xué)校人員常會流動,部門也會變動。第四,能方便的打印各種數(shù)據(jù)的報表和統(tǒng)計匯總的報表。
2 系統(tǒng)分析
本文以金陵科技學(xué)院公費醫(yī)療的報銷為分析對象。本校公費醫(yī)療的報銷主要分為門診費用、住院費用和校內(nèi)費用三個部分,其中門診費用主要包括西藥費用、中藥費用、治療費用、檢查費用和其它費用五項,住院費用和校內(nèi)費用都只有一項。人員方面,學(xué)校有很多部門,每個部門有很多人員,人員會在部門之間流動或進(jìn)出,所有本系統(tǒng)還要對人員實現(xiàn)高效的管理。
最后,系統(tǒng)還要實現(xiàn)對能夠?qū)γ總€人員和全校的醫(yī)療費用做查詢,匯總和統(tǒng)計的功能。
對于使用此公費醫(yī)療的用戶,我們可以分兩類:管理員和操作員,管理員具有一切權(quán)限,而操作員只具有錄入公費醫(yī)療報銷數(shù)據(jù)的權(quán)限。
3 數(shù)據(jù)庫設(shè)計
3.1 表設(shè)計
結(jié)合以上分析,我們可以設(shè)計如下的數(shù)據(jù)庫,數(shù)據(jù)庫名為medical,其中包括6張表(圖1~圖6)。
其中,每個表的編號字段為自動編號類型,種子初始值為1,步長為1。門診表、住院表和校內(nèi)表的外鍵為“人員編號”字段,和人員表中的“人員編號”字段是級聯(lián)更新和級聯(lián)刪除的關(guān)系。同樣,部門表和人員表中的“部門編號”字段也是主外鍵的關(guān)系。
每個表中的費用字段都保留兩位小數(shù),這樣,我們的報銷費用就可以精確到人民幣中的“分”了。部門表和人員表中的“pinyin”字段用于存儲相應(yīng)的部門名稱和人員姓名中的的每個漢字的首字母,這樣設(shè)計的主要目的為了在錄入報銷數(shù)據(jù)時選擇選擇相應(yīng)的報銷人員時節(jié)省時間,操作員只需輸入部門或人員名稱的某幾個字母,系統(tǒng)就可以很快定位到相應(yīng)的人員。學(xué)校有上千人,能快速定位到想要找的人員,無疑可以提高我們的錄入效率。這也是本系統(tǒng)設(shè)計的一個亮點所在。
3.2 存儲過程的設(shè)計
為了提高數(shù)據(jù)庫操作的效率和降低編程階段的對數(shù)據(jù)庫操作的編程的復(fù)雜性,本系統(tǒng)把對數(shù)據(jù)庫的操作都設(shè)計成存儲過程。這樣把對數(shù)據(jù)庫的操作獨立出來的好處是,有利于程序的通用性和可維護(hù)性,如果以后要更改一些業(yè)務(wù)邏輯,只需要更改相應(yīng)的存儲過程就可以了,而不必更改我們的編程代碼或少量更改。
實現(xiàn)個人費用匯總功能的存儲過程的主要代碼為:
CREATE PROCEDURE [dbo].[p9] @d1 smalldatetime,@d2 smalldatetime
AS
select 人員編號, MAX(姓名) AS 姓名, sum(門診總費用)as 門診總費用,sum(校內(nèi)總費用) as 校內(nèi)總費用, sum(住院總費用) as 住院總費用,sum(總費用) as 總費用
from
(SELECT 人員.人員編號, MAX(姓名) AS 姓名, SUM(西藥費用 + 中藥費用 + 治療費用 + 檢查費用 + 其它費用) AS 門診總費用, 0 AS 校內(nèi)總費用, 0 AS 住院總費用, SUM(西藥費用 + 中藥費用 + 治療費用 + 檢查費用 + 其它費用) AS 總費用
FROM 人員, 門診
WHERE 人員.人員編號 = 門診.人員編號 and (門診.報銷時間 between @d1 and @d2)
GROUP BY 人員.人員編號
UNION
SELECT 人員.人員編號, MAX(姓名) AS 姓名, 0 AS 門診總費用, SUM(校內(nèi)費用) AS 校內(nèi)總費用, 0 AS 住院總費用, SUM(校內(nèi)費用) AS 總費用
FROM 人員, 校內(nèi)
WHERE 人員.人員編號 = 校內(nèi).人員編號 and(校內(nèi).報銷時間 between @d1 and @d2)
GROUP BY 人員.人員編號
UNION
SELECT 人員.人員編號, MAX(姓名) AS 姓名, 0 AS 門診總費用, 0 AS 校內(nèi)總費用,
SUM(住院費用) AS 住院總費用, SUM(住院費用) AS 總費用
FROM 人員, 住院
WHERE 人員.人員編號 = 住院.人員編號 and(住院.報銷時間 between @d1 and @d2)
GROUP BY 人員.人員編號
) a
group by a.人員編號
GO
實現(xiàn)其它匯總功能和統(tǒng)計功能的存儲過程采用類似的設(shè)計。
4 系統(tǒng)實現(xiàn)
本公費醫(yī)療報銷系統(tǒng)主要實現(xiàn)了如下幾個方面的功能:
1) 登錄功能
首先,我們需要設(shè)計一個登錄公費醫(yī)療報銷系統(tǒng)的登錄窗體。窗體設(shè)計如圖7。
初始的管理員用戶名和密碼都是admin,登錄后可以修改密碼。如果登錄的身份是操作員,將只能使用錄入數(shù)據(jù)的功能。 如果是管理員,登錄后可以添加操作員賬號。
登錄成功之后,我們就可以打開公費報銷系統(tǒng)的主界面,如圖8所示。
其他功能模塊的實現(xiàn)分別對應(yīng)主界面上的一個按鈕,點擊相應(yīng)的按鈕,就可以打開相應(yīng)的窗口。其他主要功能還有:
2) 錄入功能
登錄成功之后,點擊“錄入數(shù)據(jù)”,可以錄入報銷的醫(yī)療費用數(shù)據(jù),有三類數(shù)據(jù):門診費用,校內(nèi)費用,住院費用。我們可以通過輸入部門或姓名的拼音首字母查詢到某部門中的某人,選擇好報銷的時間和類型,就可以錄入相應(yīng)的數(shù)據(jù),其中門診費用中至少要有一項費用不為0。輸入一項報銷數(shù)據(jù)后點擊保存按鈕保存數(shù)據(jù)。
3) 數(shù)據(jù)查詢功能
查詢數(shù)據(jù)模塊可按條件查詢某個教工或全校教工的門診、校內(nèi)、住院的醫(yī)療報銷費用數(shù)據(jù)。如下圖查詢出所有教工校內(nèi)費用的報銷數(shù)據(jù)。
4) 數(shù)據(jù)統(tǒng)計功能
數(shù)據(jù)統(tǒng)計主要有兩方面功能,第一個功能:統(tǒng)計全校或個人的門診費用中的各項費用的總計和門診的總計。第二個功能:分別統(tǒng)計在職人員和非在職人員的各項費用的總計。
5) 數(shù)據(jù)匯總功能
主要實現(xiàn)匯總某個時間范圍內(nèi)某位教工或全部教工的門診費用、校內(nèi)費用、住院費用和總費用。
6) 人員數(shù)據(jù)維護(hù)
可以對全校教工的基本信息進(jìn)行維護(hù),提示:可以為每位教工設(shè)置相應(yīng)姓名的拼音首字母,如下圖所示。這樣在錄入數(shù)據(jù)是直接輸入拼音首字母就可以快速查詢到此人,這樣提高錄入數(shù)據(jù)的效率。
7) 部門數(shù)據(jù)維護(hù)
對全校的部門信息進(jìn)行維護(hù),同樣可以為部門指定拼音首字母。
8) 用戶數(shù)據(jù)維護(hù)
此模塊可以對使用該軟件的用戶進(jìn)行維護(hù),用戶分為管理員和操作員兩類。操作員只能錄入數(shù)據(jù),管理員可以使用本軟件所有功能。
9) 修改登錄密碼
此模塊可以修改當(dāng)前登錄本軟件的用戶自己的密碼。
5 代碼設(shè)計
要完成以上功能,基本都要對數(shù)據(jù)庫進(jìn)行操作,所以專門設(shè)計了一個對數(shù)據(jù)庫對數(shù)據(jù)庫的操作的類dataop.cs,所有對數(shù)據(jù)庫的操作都是通過這個類來實現(xiàn)的,例如,對數(shù)據(jù)庫的更新操作的主要代碼為:
public string upDateDS(DataSet myds,string tbname){try
{SqlDataAdapter da = new SqlDataAdapter(\"select * from \" + tbname, conn);
SqlCommandBuilder cb = new SqlCommandBuilder(da);da.Update(myds, tbname);
myds.AcceptChanges();
return \"操作成功!\";
}
catch(Exception ex)
{
return ex.ToString();
}
}
6 總結(jié)和展望
受醫(yī)務(wù)室委托,信息技術(shù)學(xué)院為醫(yī)務(wù)室開發(fā)了一個公費醫(yī)療管理系統(tǒng)。該系統(tǒng)采用Visual C# 2005和Microsoft Sql server 2000開發(fā)。實行了醫(yī)務(wù)室要求的絕大部分功能。從2006年6月開始交付使用。從而大大提高了公費醫(yī)療數(shù)據(jù)維護(hù)的工作效率,減輕了相關(guān)工作人員的負(fù)擔(dān),起到了良好的效果。
主要存在的問題:
金陵科技學(xué)院現(xiàn)在三校區(qū)辦學(xué),由于開發(fā)的這個軟件屬于單機版本,所有校區(qū)的數(shù)據(jù)需要匯總到一個校區(qū)進(jìn)行錄入和處理,給工作帶來了不便。基于醫(yī)務(wù)室以上需求,未來會開發(fā)一個高效、安全的基于網(wǎng)絡(luò)的公費醫(yī)療管理系統(tǒng)。
參考文獻(xiàn):
[1] Robinson S,Nagel C. C#高級編程[M].李敏波,譯.北京:清華大學(xué)出版社,2005.
[2] 宋昆.SQL Server 數(shù)據(jù)庫開發(fā)實例解析[M].北京:機械工業(yè)出版社,2006.
[3] 李律松,馬傳寶.Visual C#+SQL Server 數(shù)據(jù)庫開發(fā)與實例[M].北京:清華大學(xué)出版社,2006.