基于.net平台的医疗报销系统的设计和实现

时间:2022-10-18 05:03:19

基于.net平台的医疗报销系统的设计和实现

摘要:通过对医疗报销系统的业务流程分析,根据系统总体设计、功能设计,给出了医疗报销系统的解决方案,并利用存储过程优化了系统对数据库的访问。该方案有较强的实用性和通用性,为类似系统的设计和开发提供了思路和方法。

关键词:医疗报销;解决方案;存储过程

中图分类号:TP393文献标识码: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 引言

公费医疗费用的报销和管理是许多单位的重要工作之一,但是,传统的公费医疗报销采用手工的方式来管理,不但效率低下,容易出错,年终的查询、统计和汇总等工作更是工作量巨大。为了提高公费医疗报销的效率,采用信息技术无疑是一个好的选择。为此,我们设计了一个在.net平台下运行的公费医疗报销系统。

金陵科技学院医务室每个月有大量的医疗费用报销单据需要处理和上报财务处,同时,每年还要汇总出每位教工的医疗报销费用的数据和全校的数据,发放给各位教工,同时还需要向市公费医疗管理中心上报。

校医务室原来的工作方式为:把每月报销的数据存储到Excel文件中,这样,随着报销的数据越来越多,Excel文件也越来越多,这种采用文件的方式往往不便于对数据的管理和维护。其次,每年要出统计结果和向公费医疗管理中心上报汇总数据时,往往要人工进行大量重复性的统计和汇总的工作。这样的工作方式不仅效率低下,还容易出现错误,也不不便于对数据的管理与维护。所以,医务室需要开发一个软件系统,这个软件系统要能完成这样一些功能,第一,能高效完成医疗报销数据录入和维护。第二,并能方便查询和修改,统计和汇总医疗报销数据。第三,能对全校教工的信息和部门的信息进行维护,因为学校人员常会流动,部门也会变动。第四,能方便的打印各种数据的报表和统计汇总的报表。

2 系统分析

本文以金陵科技学院公费医疗的报销为分析对象。本校公费医疗的报销主要分为门诊费用、住院费用和校内费用三个部分,其中门诊费用主要包括西药费用、中药费用、治疗费用、检查费用和其它费用五项,住院费用和校内费用都只有一项。人员方面,学校有很多部门,每个部门有很多人员,人员会在部门之间流动或进出,所有本系统还要对人员实现高效的管理。

最后,系统还要实现对能够对每个人员和全校的医疗费用做查询,汇总和统计的功能。

对于使用此公费医疗的用户,我们可以分两类:管理员和操作员,管理员具有一切权限,而操作员只具有录入公费医疗报销数据的权限。

3 数据库设计

3.1 表设计

结合以上分析,我们可以设计如下的数据库,数据库名为medical,其中包括6张表(图1~图6)。

其中,每个表的编号字段为自动编号类型,种子初始值为1,步长为1。门诊表、住院表和校内表的外键为“人员编号”字段,和人员表中的“人员编号”字段是级联更新和级联删除的关系。同样,部门表和人员表中的“部门编号”字段也是主外键的关系。

每个表中的费用字段都保留两位小数,这样,我们的报销费用就可以精确到人民币中的“分”了。部门表和人员表中的“pinyin”字段用于存储相应的部门名称和人员姓名中的的每个汉字的首字母,这样设计的主要目的为了在录入报销数据时选择选择相应的报销人员时节省时间,操作员只需输入部门或人员名称的某几个字母,系统就可以很快定位到相应的人员。学校有上千人,能快速定位到想要找的人员,无疑可以提高我们的录入效率。这也是本系统设计的一个亮点所在。

3.2 存储过程的设计

为了提高数据库操作的效率和降低编程阶段的对数据库操作的编程的复杂性,本系统把对数据库的操作都设计成存储过程。这样把对数据库的操作独立出来的好处是,有利于程序的通用性和可维护性,如果以后要更改一些业务逻辑,只需要更改相应的存储过程就可以了,而不必更改我们的编程代码或少量更改。

实现个人费用汇总功能的存储过程的主要代码为:

CREATE PROCEDURE [dbo].[p9] @d1 smalldatetime,@d2 smalldatetime

AS

select 人员编号, MAX(姓名) AS 姓名, sum(门诊总费用)as 门诊总费用,sum(校内总费用) as 校内总费用, sum(住院总费用) as 住院总费用,sum(总费用) as 总费用

from

(SELECT 人员.人员编号, MAX(姓名) AS 姓名, SUM(西药费用 + 中药费用 + 治疗费用 + 检查费用 + 其它费用) AS 门诊总费用, 0 AS 校内总费用, 0 AS 住院总费用, SUM(西药费用 + 中药费用 + 治疗费用 + 检查费用 + 其它费用) AS 总费用

FROM 人员, 门诊

WHERE 人员.人员编号 = 门诊.人员编号 and (门诊.报销时间 between @d1 and @d2)

GROUP BY 人员.人员编号

UNION

SELECT 人员.人员编号, MAX(姓名) AS 姓名, 0 AS 门诊总费用, SUM(校内费用) AS 校内总费用, 0 AS 住院总费用, SUM(校内费用) AS 总费用

FROM 人员, 校内

WHERE 人员.人员编号 = 校内.人员编号 and(校内.报销时间 between @d1 and @d2)

GROUP BY 人员.人员编号

UNION

SELECT 人员.人员编号, MAX(姓名) AS 姓名, 0 AS 门诊总费用, 0 AS 校内总费用,

SUM(住院费用) AS 住院总费用, SUM(住院费用) AS 总费用

FROM 人员, 住院

WHERE 人员.人员编号 = 住院.人员编号 and(住院.报销时间 between @d1 and @d2)

GROUP BY 人员.人员编号

) a

group by a.人员编号

GO

实现其它汇总功能和统计功能的存储过程采用类似的设计。

4 系统实现

本公费医疗报销系统主要实现了如下几个方面的功能:

1) 登录功能

首先,我们需要设计一个登录公费医疗报销系统的登录窗体。窗体设计如图7。

初始的管理员用户名和密码都是admin,登录后可以修改密码。如果登录的身份是操作员,将只能使用录入数据的功能。 如果是管理员,登录后可以添加操作员账号。

登录成功之后,我们就可以打开公费报销系统的主界面,如图8所示。

其他功能模块的实现分别对应主界面上的一个按钮,点击相应的按钮,就可以打开相应的窗口。其他主要功能还有:

2) 录入功能

登录成功之后,点击“录入数据”,可以录入报销的医疗费用数据,有三类数据:门诊费用,校内费用,住院费用。我们可以通过输入部门或姓名的拼音首字母查询到某部门中的某人,选择好报销的时间和类型,就可以录入相应的数据,其中门诊费用中至少要有一项费用不为0。输入一项报销数据后点击保存按钮保存数据。

3) 数据查询功能

查询数据模块可按条件查询某个教工或全校教工的门诊、校内、住院的医疗报销费用数据。如下图查询出所有教工校内费用的报销数据。

4) 数据统计功能

数据统计主要有两方面功能,第一个功能:统计全校或个人的门诊费用中的各项费用的总计和门诊的总计。第二个功能:分别统计在职人员和非在职人员的各项费用的总计。

5) 数据汇总功能

主要实现汇总某个时间范围内某位教工或全部教工的门诊费用、校内费用、住院费用和总费用。

6) 人员数据维护

可以对全校教工的基本信息进行维护,提示:可以为每位教工设置相应姓名的拼音首字母,如下图所示。这样在录入数据是直接输入拼音首字母就可以快速查询到此人,这样提高录入数据的效率。

7) 部门数据维护

对全校的部门信息进行维护,同样可以为部门指定拼音首字母。

8) 用户数据维护

此模块可以对使用该软件的用户进行维护,用户分为管理员和操作员两类。操作员只能录入数据,管理员可以使用本软件所有功能。

9) 修改登录密码

此模块可以修改当前登录本软件的用户自己的密码。

5 代码设计

要完成以上功能,基本都要对数据库进行操作,所以专门设计了一个对数据库对数据库的操作的类dataop.cs,所有对数据库的操作都是通过这个类来实现的,例如,对数据库的更新操作的主要代码为:

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 总结和展望

受医务室委托,信息技术学院为医务室开发了一个公费医疗管理系统。该系统采用Visual C# 2005和Microsoft Sql server 2000开发。实行了医务室要求的绝大部分功能。从2006年6月开始交付使用。从而大大提高了公费医疗数据维护的工作效率,减轻了相关工作人员的负担,起到了良好的效果。

主要存在的问题:

金陵科技学院现在三校区办学,由于开发的这个软件属于单机版本,所有校区的数据需要汇总到一个校区进行录入和处理,给工作带来了不便。基于医务室以上需求,未来会开发一个高效、安全的基于网络的公费医疗管理系统。

参考文献:

[1] Robinson S,Nagel C. C#高级编程[M].李敏波,译.北京:清华大学出版社,2005.

[2] 宋昆.SQL Server 数据库开发实例解析[M].北京:机械工业出版社,2006.

[3] 李律松,马传宝.Visual C#+SQL Server 数据库开发与实例[M].北京:清华大学出版社,2006.

上一篇:基于Agent考试系统模型的构建 下一篇:基于ASP技术的网上选课系统的设计与实现