医院收费管理系统设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
医务收费系统
随着我国医疗卫生体制改革的深化,计算机技术与应用的发展,计算机信息化管理已成为各医院提高生存力,加强管理,增加效益的重要保障,作为一般高校的后勤医务室亦不例外。
高校医务收费系统的主要目标是支持医务室的日常收入账务处理业务,减轻事务处理人员的劳动强度,合理地记录和管理这些账务信息,从而提高整个医务室的工作效率和工作质量。
本章以某高校医务收费系统为实例,详细讲述整个医务收费系统的实施过程,需求分析、系统框架、系统建模、数据库建模、程序实现、系统维护等方面展开分析。
A.1系统分析
需求分析是成功实施一个管理信息系统的基础,只有弄清楚客户的需求,才能真正开发出满足客户需求的管理信息系统,也才能够让整个系统真正发挥其相应的作用。
该环节是系统开发过程的最初阶段,围绕整个开发的指导思想和开发目标,对校医务室的整个记账收费过程和需求进行总的分析和概括。
接下来就针对某高校医务收费系统的总体需求做分析。
可能有些医院在某些管理方面有其特殊的需求,读者在实际开发过程中,可以在本系统需求分析中继续完善。
A.1.1 系统总体功能需求
在经过对学校医院正常运行的流程进行详细了解与分析后,一个功能完善的医务收费系统必须包括以下几个子系统:
(1)操作人员管理系统。
这个管理系统包括用户的注册、用户密码的修改、用户权限的设置、更换操作人员4个功能模块组成。
操作人员管理系统主要是用来管理对该软件进行操作的工作人员,同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员赋予不同的权限,满足了不同人员对该软件的需求。
(2)基本人员管理系统。
这个管理系统包括编辑查询人员、批处理人员信息、学生数据导入、医生信息维护和医药费率调整5个功能模块。
基本人员管理系统用来对基本人员数据、医生数据进行统一
612
集中的管理,为其他几个管理系统提供基本信息,以提高工作效率。
(3)收费管理系统。
这个管理系统包括药费数据输入、打印日报表、打印日明细表、打印月报表、打印月明细报表、打印年报表、报表查询、帐单查询8个功能模块。
收费管理系统主要为系统输入数据,并根据所输入的数据进行汇总,统计打印各种报表。
同时该子系统还提供报表和账单的查询,用户可以很方便的对各项数据和报表进行查询。
(4)系统维护。
这个管理信息系统包括数据备份、数据还原、计算器、导出每月数据4个功能模块。
系统设置中的功能模块用来补充医务收费系统的一些辅助功能。
综上所述,系统总体的功能需求可用图A-1简要表示。
图A-1 系统总体功能需求框图
A.1.2 操作人员管理系统
操作人员管理系统包括的具体功能模块可以用图A-2说明。
操作人员管理系统包括权限管理、更换用户、修改密码和修改用户等功能。
1.权限管理
权限管理功能图如图A-3所示。
图A-2 操作人员管理系统包括的功能模块需求框图 图A-3 权限管理的功能框图
此功能主要是面向管理人员对操作人员的操作进行管理,满足不同层次的人员对系统不同的需求,使得系统的敏感数据不公开,同时实现了系统的安全性。
在进入系统的时候,系统根据操作人员的权限自动判断操作人员是否可以对该项功能进行操作等。
医务收费系统
操作人员管理系统
基本人员管理系统
收费管理
系统维护
权限管理
更换用户
修改密码
修改用户
操作人员管理
增加用户
删除用户
修改权限
权限管理
613
(1)增加用户的需求分析,如图A-4所示。
图A-4 增加用户的需求分析
(2)删除用户需求分析,如图A-5所示。
图A-5 删除用户需求分析
(3)更换用户。
由于该软件的操作人员并非惟一,当另一个操作员在同一台机器上需对系统进行操作时,就需要该操作人员重新登陆,获得该操作人员的权限后,再对系统进行操作。
这样可以方便多用户对系统进行操作。
(4)修改密码用户名,如图A-6所示。
图A-6 修改密码功能
这两项功能可以集成到权限管理中,满足用户对用户名和密码的修改。
不定期的对系统密码进行修改,能够减少密码的泄露,提高系统的安全性。
A.1.3 基本人员管理系统
这个管理系统包括的具体功能模块需求可以用图A-7说明。
图A-7 基本人员管理系统包括的功能模块需求框图
基本人员管理
编辑查询人员
批处理人员信息
学生数据导入
医生信息维护
医药费率调整
1.编辑查询人员
某学院校医院是内部对全校教职工、在校学生、退休人员和统筹人员进行门诊治疗的机构。
随着学校规模的不断发展,公费医疗对象不断增加,为了合理的记录各类人员的门诊信息,准确地对进行公费医疗数据的复杂人员的信息进行处理,此模块即产生了。
在管理信息系统中,代码是人与计算机的共同语言,是着人与计算机沟通的桥梁。
采用代码,可以使数据表达式标准化,简化程序,加快输入,减少出错,提高处理速度。
在本系统中,由于人员类型繁多,人数多的特点。
人员代码采用8位代码表示。
如99222024,第1位表示学生,其余表示学生学号,具体形式如表A-1。
表A-1 人员编码
2.批处理人员信息
伴随着国家政策的改变,公费对象的定额和补偿金都将发生改变,为了快速地对所有数据进行修改,本系统提供了批处理模块。
同时该模块也提供了删除毕业生数据的功能,是集成了处理人员基本信息功能的模块。
3.学生数据导入
由于高校扩招,每年学生人数在不断的上升,如果手工进行学生数据的输入,肯定很繁琐,同时效率也很低。
而且目前的高校招生大多采才用网上招生,肯定有学生基本信息的数据库,通过该模块可以很好的利用这些数据,同时减少了重复劳动和输入过程中所出现的错误。
4.医生信息维护
对某高校校医院的医生数据进行增加、删除、修改等,以适应校医院医生数据的改变。
同时医生信息的改变也会影响收费系统中数据的改变。
5.医药费率调整
根据国家的政策,适当的对该公费医疗的费率进行修改和调整。
该功能的变化会对数据的录入产生影响,因此该功能是数据输入的基础。
B.1.4 收费管理系统
这个管理系统包括的具体功能模块需求框图如图A-8所示。
614
615
图A-8 收费管理系统包括的功能模块需求框图
收费管理是该系统的核心内容,它负责数据的输入和输出,并对数据进行汇总、统计等操作,打印出符合需求的它总报表。
同时该模块也提供了查询功能,用户可以自由的查询每日报表和每月报表,清楚地掌握当日或当月校医院的经营情况。
1.药费数据输入
药费数据输入模块完成病员看病时一些基本信息的登记,病员从医生处获得处方后,交由交费人员进行数据的输入。
数据输入人员只需进行人员编号、医药费用的输入即可,其他的都由系统提供数据供操作人员进行选择。
这样不但提高了工作效率,而且减少了输入过程中因人为导致的错误的发生。
2.报表打印管理
报表打印管理的功能需求框图如图A-9所示。
图B-9 报表打印管理的功能需求框图
报表打印功能模块也是收费管理系统中的核心,该模块主要实现了日报表、日明细表、月报表、月明细表和年明细表的打印功能。
日报表和月报表分别是对每日数据和每月数据进行汇总、统计而生成的,日明细表、月明细表和年明细表则是分别对每日数据、每月数据和每年数据进行汇总而生成,它们并不对原始数据进行处理。
3.账单查询
账单查询如图A-10所示。
图A-10 账单查询功能
药费数据输入
报表打印
账单查询
报表查询
收费管理
打印日报表
报表打印
打印月报表
打印日明细表
打印月明细表
打印年明细表
616
为了方便管理人员,提高工作效率,系统提供了账单查询功能,用户可以按多种查询方式对数据库中的账单信息进行查询,比如:某月某病员的就诊情况、某月某医生的工作情况等。
4.报表查询
报表查询功能如图A-11所示。
图A-11 报表查询功能
该功能完成对日报表和月报表的任意查询,并得到类似于日报表和月报表格式的结果,能够让用户
A.1.5 系统维护
系统维护包括的具体功能模块需求框图如图A-12所示。
图A-12 系统维护包括的功能模块需求框图
系统维护包括数据备份、数据还原、系统计算器和导出每月数据等功能模块,基本满足了系统运行时所需的功能。
(1)数据恢复功能需求。
该功能将数据库数据表备份成数据库文件,再进行二次备份将其备份到U 盘或其他计算机上,便于在一些无法避免数据破坏的情况下通过数据恢复功能恢复数据,以减小损失。
(2)数据恢复功能需求。
该功能实现从备份数据库中将数据导入到工作数据库中。
(3)系统计算器功能需求。
该功能实现打开操作系统提供计算器,用它可以进行一些简单的计费操作,方便用户进行计费操作。
系统维护
数据备份
数据还原
系统计算器
导出每月数据
617
A.2 UML 系统建模
对于本例,主要使用UML 中的用例图、时序图和协作图来进行系统分析,帮助开发人员了解系统功能与系统流程。
A.2.1 UML 用例视图描述
首先确定医务收费系统中的角色。
1.角色(Actors )的确定
在医务收费系统中,可以归纳出来的主要问题是: (1)病人要看病;
(2)挂号操作员提供挂号服务; (3)医生提供病人看病服务;
(4)收费操作员提供门诊病人划价收费服务,并将信息输入到系统; (5)取药员负责取药给病人;
(6)住院登记操作员提供住院登记服务,并将信息输入到系统; (7)系统维护员提供系统相关的维护服务。
由于医生与病人打交道,给病人诊断病情、开药方等服务,并没有直接与系统发生交互,与系统的交互是通过划价收费操作员来进行的,因此可以将医生与划价收费操作员这两个对象用一个操作员的角色代替,即认为划价收费操作员在所有病人看病的过程中直接向病人提供服务,并根据服务业务流程对系统进行操作。
这样不妨碍系统的功能实现。
同样,取药操作员并没有直接和系统发生交互,可以不用一个单独的角色。
从以上的分析中,可以创建以下角色: (1)病人; (2)挂号操作员; (3)收费操作员; (4)药品管理员; (5)系统维护员。
在Rational Rose
的Use Case View 中建立角色如图A-13所示。
图A-13 在Use Case View 中创建角色
618
2.创建用例(Use Cases)
医院信息系统根据业务流程可以分为以下的几个用例: (1)病人挂号; (2)挂号服务; (3)病人看病; (4)病人交费取药; (5)病人按处方配药; (6)收费操作员划价扣费配药; (7)分发药品; (8)维护基本信息; (9)用户注册; (10)登录验证。
在Rational Rose 的Use Case View 中创建用例(Use Cases)如图A-14所示。
图A-14 在Use Case View 中创建用例
3.创建角色(Actor)与用例(Use Case)关系图
Actor 和Use Case 之间存在的关联关系通常涉及到Actor 和Use Case 之间的通信关联关系。
(1)病人的Use Cases 关系图如图B-15所示。
图A-15 病人的用例关系图
(2)挂号操作员的Use Cases 关系图如图A-16所示。
( )
病人交费取药 (from User Cases )
病人看病
(from User Cases )
619
图A-16 挂号操作员的用例关系图
(3)收费操作员用例的Use Cases 关系图如图A-17所示。
图A-17 收费操作员用例关系图
(4)药品管理员的Use Cases 关系图如图A-18所示。
图A-18 药品管理员的用例关系图
(5)系统维护员的Use Cases 关系图如图A-19所示。
图A-19 系统维护员的用例关系图
挂号操作员 (from Actors )
挂号服务 (from User Cases )
(from Actors )
(from User Cases )
(
(from User Cases )
登录验证
(from User Cases )
系统维护员 (from Actors )
(from User Cases )
620
A.2.2 UML 时序与协作视图描述
下面介绍收费系统中的时序图及协作图。
(1)病人看病过程时序图如图B-20所示。
图A-20 病人看病过程时序图
(2)病人看病过程协作图如图A-21所示。
图B-21 病人看病过程协作图
A.2.3 数据库设计
本系统采用SQL Server 2000作为后台数据库,由于数据库表比较多,以下只列出了几个比较重要的数据表,详细的数据库建模请参看所附光盘的“F_MIS.sql ”文件。
(1)描述收费单信息的表。
描述门诊收费单信息的表格一共分为5个,即收费表(feiyong )、收费日报表5
(feiyong_rpt)、医生表(doctor)、人员信息表(rmk)和类别表(leibie)。
使用Powerdesigner 定义这5个表的字段,以及每个表的主键等如图A-22所示。
图A-22 描述收费单信息的表
(2)其他数据库表。
其他数据库表包括:软件用户信息表User_load、编号计数表Count等,这里就不一一列举了。
本例使用的后端数据库是客户/服务器型数据库SQL Server 2000。
单机版文件共享型数据库ACCESS可以跳过此配置。
在SQL Server 2000的企业管理器中新建一个数据库,命名为Y AOFEI,然后打开SQL Server 2000的查询分析器,输入数据库表、视图和存储过程的全部SQL语句后执行,有关数据库的后台工作就已经建立。
以上的SQL语句已经保存为文件,也可以用查询分析器直接运行一下本例源程序目录下SQL目录里的F_MIS.sql文件来建立数据库,不需要在企业管理器新建数据库表。
在本系统中由于报表是由功能强大的水晶报表所制作,所以需对ODBC数据源进行设置,具体操作在第1章有详细的说明。
创建的ODBC数据源名称为“YAOFEI”。
A.3系统实现
A.3.1 系统设计概况
本程序是一个较完整的应用程序,能够实现医务收费管理的相关功能。
为了能够让读者了解本程序,首先列举出本程序包含的所有窗体和模块。
具体程序窗体信息如下。
mainform(程序的主窗体):程序的主窗体,方便用户进行各种功能操作。
frmlogin(用户登录窗体):为了提高软件操作安全性,用户进入系统前,需要进行身份验证,用户通过此窗口输入个人信息用以验证身份,并从用户表中获得用户的操作权限,为权限管理提供服务。
frmsq(用户授权、增加和删除窗体):该窗体将用户修改和授权集成在一起,方便管理员增加用户后对该用户进行授权。
frmqueryperson(人员基本信息的查询、修改窗体):该窗体主要实现对公费医疗对象的基本信息进行操作,包括增加、删除、修改等。
frmdoctor(医务人员登记窗体):用于管理校医院各个科室下医务人员的情况,可以进行录入、修改、删除操作;
frmlrsj(数据录入窗体):根据病人的处方进行数据输入,该窗体是整个系统的核心,能够执行数据的修改、查询、打印等功能。
frmquerybook(查询报表窗体):该功能是为了更好地查询日报表和月报表,并方便管理层对实时数据的掌握。
同时用户也可以方便的进行报表数据的查询。
frmquerycheck(查询帐单窗体):该窗体为了查询具体数据,统计某位医生某个月的会诊数据或是某位病员某个月的就诊情况,是对查询报表窗体的补充。
frmdataback(数据备份、还原窗体):为了提高系统数据的安全性,可将数据备份到U 盘或其他主机的硬盘上。
如果遇到系统数据损坏的情况,利用该窗体对备份的数据进行还原操作,使系统能够正常运行。
以上介绍的是程序的重要窗体,用户登陆窗体来进行更换用户的操作,这样大大减少了窗体的使用数量。
还有一个重要部分即模块文件,如下。
全局模块(Global.bas):主要是在数据库的连接、报表打印时所进行的数据操作,以及基本的通用函数的定义和实现、全局变量的定义等。
数据备份(databack.bas):为frmdataback的实现提供服务,它提供了基本的API函数的声明和调用、变量的定义等。
读者在阅读下面的具体程序以前,最好弄清楚每个窗体的大概功能,这对了解整个程序的开发实施是非常有益的,要弄清楚一个比较完整的商业系统是需要花一定时间的。
接下来就是针对重要模块和代码进行的分析。
在后面的具体程序实现中,由于篇幅的限制,并不一定对所有的代码都进行详细的分析,而是针对关键的模块和技术进行说名,其他代码都在本书的附赠光盘中。
A.3.2 系统主界面实现
本程序采用流行的界面设计技术,符合商业化软件设计的要求。
采用菜单、工具栏、状态条相结合的方法,使用户能够在主界面上快速的进入自己想要的程序模块,具体的程序运行主界面如图B-23所示。
在图B-23中很容易看清楚整个程序的结构,用户也可以很方便的从菜单和工具栏各小项功能模块及工具栏很快的进入各个模块。
图A-23 程序运行主界面
窗体设计包括菜单栏设计、工具栏设计、状态条设计,下面就分别进行简单的说明。
1.菜单栏设计
进入菜单编辑器,设计界面如图A-24所示。
图A-24 菜单编辑器
某些菜单命令的右边标有组合键,称为该命令的快捷键,可以不打开菜单而直接按快捷键来执行此命令。
为命令选项增加快捷键(Shortcut Key),可在菜单编辑器中的“快捷键(S)”列表框中为该命令项分配一个。
列表中一个快捷键只能被分配一次,否则系统会拒绝接受。
为了让用户迅速地在菜单中找到要执行的命令项,有必要对菜单中相关的命令用分隔条(Separate Bar)进行分组例如文件菜单中,把有关打印输出的一组命令:“页面设置”、“打印预览”、“打印”等用分隔条醒目地进行分隔。
这只要在需要进行分组的命令之间插入一个特殊的命令条,将该命令条的“标题”插入“-”,而“名称”任意,因为程序中一般不会引用此命令的名称。
2.工具栏设计
组合工具栏设计需要两个控件配合使用,一个是工具栏控件(Toolbar1),另一个是图像列表控件(ImageList1)。
ImageList1控件用来保存各种图片,使其显示在工具栏中(具体的程序界面,读者朋友可以打开本书附赠光盘中的源代码查看)。
工具栏设计界面如图A-25所示。
图A-25 工具栏的设计界面
在工具条位置单击鼠标右键,在弹出的窗体中选择“按钮”来添加按钮,在样式中,选择“3-tbrSeparator”添加分隔条。
在本例中创建5个按钮和4个分隔条。
3.状态条控件设计
StatusBar 控件由若干个面板构成,主要用来显示应用程序的运行状态。
它既可以节省界面空间又可包含丰富的信息。
例如,显示数据库表的有关情况(记录总数,以及当前记录在数据库中的位置等),显示关于RichTextBox控件的文本和字体状态的信息,显示键盘的状态(如Caps Lock 或Number Lock),显示当前日期或时间等。
其设计界面如图A-26所示。
图A-26 状态条控件设计界面
4.核心代码分析
主窗体的代码不是很复杂,主要是对各个功能的导航和显示状态条导航信息,具体有菜单点击处理程序、工具条快捷按钮处理程序、状态度显示处理程序。
程序说明:主窗体代码;
程序模块名称:mainform.frm;
重要控件:Toolbar、状态栏StatusBar、图像列表Imagelist、CrystalReport控件。
(1)菜单处理代码。
由于系统涉及到权限问题,因此每次进行菜单处理程序前,应该对该用户的权限进行检查,判断该用户是否具有该项操作的权利。
其具体实现如下所示:
'作为检查操作员使用权限的函数,该函数通过截取user_load表中的ql_flag字段来
判断该操作员所具有的权限和使用范围
'ql_flag字段的设置
Public Function check_qx(qx_flag As String, i As Integer) As Boolean Dim temp As Integer
If qx_flag <> "" Then
temp = Mid(qx_flag, i, 1)
If temp = 0 Then
MsgBox "您无权限使用该功能!", vbOKOnly + vbExclamation, "注意了:)"
check_qx = False
Else
check_qx = True
End If
Else
MsgBox "未经管理员授权,您无权限使用所有功能!", vbOKOnly + vbExclamation, "注意了:)"
check_qx = False
End If
End Function
检查权限后,如果该用户拥有该项权限的话,则进入菜单处理程序:
Private Sub sjlr_Click()
'调用函数判断是否拥有权限使用各种功能
t = check_qx(czry_flag, 6)
If t = True Then …如果用户拥有该权限,则进入菜单处理程序,否则出现警告信息。
mainform.StatusBar1.Panels(1).Text = "状态:药费输入"
frmlrsj.Show
End If
End Sub
(2)工具栏处理代码。
工具栏上的快捷按钮用来打开医务收费系统软件中某个特定的窗体。
通过工具栏,用
户可以方便地直接打开经常使用的功能,工具栏的实现代码示例如下:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Key …判断所按下的工具栏按钮的名称
Case "query" …如果是查询编辑人员
t = check_qx(czry_flag, 1) …检查当前用户是否拥有操作权限
If t = True Then
mainform.StatusBar1.Panels(1).Text = "状态:查询编辑人员"
frmqueryperson.Show …显示frmqueryperson窗体
End If
Case "input" …如果是数据输入
t = check_qx(czry_flag, 6) …检查当前用户是否拥有操作权限
If t = True Then
mainform.StatusBar1.Panels(1).Text = "状态:药费输入"
frmlrsj.Show …显示frmlrsj窗体
End If
Case "drdc" …如果是每月数据导出
t = check_qx(czry_flag, 17) …检查当前用户是否拥有操作权限
If t = True Then
mainform.StatusBar1.Panels(1).Text = "状态:每月数据导出"
frmimport.Show vbModal …显示frmimport窗体
End If
Case "book" …如果是查询报表
t = check_qx(czry_flag, 13) …检查当前用户是否拥有操作权限
If t = True Then
mainform.StatusBar1.Panels(1).Text = "状态:查询报表"
frmquerybook.Show …显示frmquerybook窗体
End If
Case "exit" …如果是退出
End …退出系统
End Select
End Sub
(3)状态栏处理代码。
状态栏主要是为了提示用户所做的操作,其代码分散在各个菜单项和工具栏按钮的程序处理事件中,示例如下:
Private Sub sysjsq_Click() …单击系统计算器菜单项
mainform.StatusBar1.Panels(1).Text="状态:系统计算器"…显示状态:系统计算器 Shell "calc.exe", vbNormalFocus …显示操作系统所带的计数器
End sub
以上介绍了主窗体的主要代码,在该窗体中,主要是对界面及程序导航进行设计,没
有涉及到具体的数据库设计,在后面的窗体分析中主要是数据库的设计,以及其他数据库的设计。
A.3.3 操作人员管理
操作人员管理系统主要是用来管理对该软件进行操作的工作人员,同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员给予不同的权限,满足了不同人员对该软件的需求。
为了方便集中管理数据库表和数据源,我们把数据库的连接放到Global.bas模块中,应用ADO接口技术直接和SQL Server 2000数据库服务器建立连接。
具体实现代码如下:
Public Sub condatabase()
Set cn = New ADODB.Connection
cn.Provider = "sqloledb"
cn.Properties("Data Source").Value = "SQLServerName"
'建立与SQLServer的连接
cn.Properties("Initial Catalog").Value = "DataBaseName" '数据库的名称 cn.Properties("Integrated Security").Value = "SSPI"
cn.open
End Sub
1.操作人员维护模块
操作人员维护模块的运行界面如图A-27所示。
图A-27 操作人员维护模块的运行界面
界面设计主要是利用了树型控件来实现的,读者可以参考前面章节。
程序说明:操作人员管理窗体代码;
程序模块名称:frmsq;
重要控件:TreeView、图像列表Imagelist等;
相关数据库表:user_load。
下面学习窗体的核心代码。