1、 摘 要医院管理系统是典型的管理信息系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备,易使用等特点.计算机化的医院信息系统已成为现代化医院运营必不可少的基础设施与技术支撑环境。就好象一个现代化医院的成功运行离不开功能完整,美观舒适的建筑物,技术娴熟的医护人员,性能齐全,高精尖的医疗设备一样,它也离不开计算机化的医院信息系统。经过分析如此情况,我们使用VB ,数据库等开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先
2、在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统. 关键词:原型法 面向对象 数据一致性 数据窗口 医院管理系统 目录第一章 绪 论121 开发环境23.1 系统的初步调查53.3系统总体流程图7第四章 系统设计841 模块设计84. 2 功能模块843 数据流图944 数据库设计945 系统界面设计13系统主界面13用户管理界面14药品管理界面19挂号界面21划价界面23第五章 心得体会26参 考 文 献27第一章 绪 论 随着社会化大生产的不断扩大和社会对产品多样化的需求,人们越来越重视信息在生产经营及企业管理中的作用,并把它当做企业
3、的一种极其重要的资源,人们称之为“信息资源”,信息资源的处理已经成为当今世界上一项主要的社会活动。同样,在医疗系统中也不例外,其中加强对门诊信息的管理,一方面能更好为病人服务,另一方面能加强对医院效益的监控。 本世纪以来,由于社会生产力的迅速发展和科学技术的突飞猛进,人们进行信息交流的深度和广度不断增加,管理所需要的信息量急剧增长,同时对信息的处理要求及时、准确,这导致了传统的信息处理方法和手段已不能适应现代管理的需要;电子计算机的诞生和在信息处理中的应用,标志着一个崭新时代“信息时代”的开始,它使企业管理现代化成为可能。课题目的 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正
4、是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了更好管理门诊信息信息而设计的。 当前,医院作为病人就诊的地方,有许多信息需要处理和管理。现今,有很多门诊信息都是初步开始使用,甚至尚未使用计算机进行信息处理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于医历等很多信息都是用人工计算、手抄进行。数据信息处理工作量大,
5、容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。 数据处理手工操作,工作量大,出错率高,出错后不易更改。基于这此问题,我认为有必要建立一个医院管理系统,使医院管理工作规范化,系统化,程序化,避免医院管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改医院情况。开发门诊管理系统的现实意义:现在我国的多数诊所或小型医院的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。 归纳起来,好处大约有以下几点:1 可以存储以往的门诊信息,安全
6、、高效;2 只需一到二名信息录入员即可操作系统,节省大量人力;3 可以迅速查到所需信息。第二章、相关技术介绍21 开发环境本系统采用面向对象的软件开发方法,以Microsoft公司的可视开发环境Visual Basic 6.0作为主要开发工具,使用Microsoft Access 2000作为关系数据库,并在VB编程语言中采用ADO 数据库编程模型,配合功能强大的SQL查询语言实现建立关系数据库,访问数据库,对数据库的更新,较好地实现了预定的需求功能。2.1.1 Visual Basic 6.0开发环境Visual Basic 6.0是一种可视化、面向对象和采用事件驱动方式的结构化高级程序设计
7、语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高、且功能强大。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发出Windows环境功能强大、图形界面丰富的应用软件系统。总的来看,Visual Basic有以下主要特点:1.可视化编程 Visual Basic提供了可视化设计工具,把Windows界面设计复杂性“封装”起来,开发人员不必为界面设计而编写大量程
8、序代码,只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。Visual Basic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。2.面向对象的程序设计在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而Visual Basic则是应用面向对象的程序设计方法(OOP),把程序和数据封装起作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,Visual Basic自动生成对象的
9、程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。3.事件驱动编程机制Visual Basic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。例如,命令按钮是一个对象,用户单击该按钮时,将产生一个“单击”事件,而产生该事件时将执行一段程序,用来实现指定的操作。在用Visual Basic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程,这些过程分别面向不同的对象,由用户操作引发某个事件来驱动执行某特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作。这样可以方便编程人员、提高效率。4.访问数据库
10、Visual Basic系统具有很强的数据库管理功能。利用数据控件和数据库管理窗口,可以直接建立或处理Microsoft Access格式的数据库,并提供强大的数据存储和检索功能。同时,Visual Basic还能直接编辑和访问其他外部数据。Visual Basic提供开放式数据连接(Open DataBase Connectivity),即ODBC功能,它可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQL Server、Oracle等。在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问Server上的数据库,并提供了简单的面向对象的库操作指令、多用户数据库访问的加
11、锁机制和网络数据库的SQL的编程技术,为单机上运行的数据库提供了SQL网络接口,以便在分布式环境中快速而有效地实现客户服务器方案。Visual Basic 6.0 是专门为Microsoft的32位操作系统设计的,可用来建立32位的应用程序。在Windows9x、WindowsNT或Windows2000环境下,用Visual Basic 6.0的编译器可以自动生成32位应用程序。这样的应用程序在32位操作系统下运行,速度更快,更安全,并且更适合在多任务环境下运行。2.1.2 Microsoft Access与 ADO作为应用程序与OLE DB连接的桥梁,ActiveX Data Object
12、s (ADO)为Visual Basic 6.0 下开发的应用程序访问本地或远程数据库提供了有效的手段。Microsoft ActiveX Data Objects (ADO) 主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO 支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。在VB中,可以使用开发环境提供的ADO控件,数据库访问方法,对ACCESS中建立的关系数据库简单快捷的进行访问。2.1.3 SQL查询语言及使用SQL语言是结构化语言(Structure Query Language)的缩写,是一种用于数据库查询和编程的语言,已经成为关系型数据库普遍使用的标
13、准,使用这种标准数据库语言对程序设计和数据库的维护都带来了极大的方便,广泛地应用于各种数据查询。VB和其他的应用程序包括Access、Foxpro、Orcale、SQL Server等都支持SQL语言。SQL语言的常用操作有:建立数据库数据表(CREATE TABLE),如本系统中的学生及成绩备份就用到该语句;从数据库中筛选一个记录集(SELECT),这是最常用的一个语句,功能强大,能有效地对数据库中一个或多个数据表中的数据进行访问,并兼有排序、分组等功能;在数据表中添加一个记录(INSERT);删除符合条件的记录(DELETE);更改符合条件的记录(UPDATE); VB中的数据库操作对象都
14、提供了对SQL语句的支持。其一般的用法是以VB的各种控件接收用户对数据库访问的请求,在事件响应程序代码中将其转换成对数据库的SQL查询语句,并以字符串的形式存在,然后将其传递给相应的数据库操作对象,最终完成对数据库的访问。第三章 系统分析3.1 系统的初步调查3.1.1 系统的初步调查系统的初步调查目标是在可行性分析的基础上进一步对原有系统进行的调查和分析,弄清原有管理信息系统的运行状况,发现其薄弱环节,找出要解决问题的实质,确保新系统比原系统更加有效、可靠。具体内容包括:管理业务状况的调查分析、数据流程的调查分析。调查之后,绘制出医院信息管理系统的业务流程图, 查询结果医院信管理系统系统管理
15、人员一般用户 用户设置 设计要求 表单维护 统计结果图3.1.13.1.2 系统逻辑模型的提出 为了实现管理信息系统的计算机化,仅仅用业务流程图形象地描述信息的流动和存储还远远不够,还要进一步调查分析舍去物质流,抽象出信息流,绘制出数据流程图,并对各种数据的属性和各项处理功能进行详细分析。系统分析的主要成果是系统的逻辑模型。本系统主要是以数据流图、数据字典为主要描述工具来勾画系统的概貌。3.1.3 数据流图 数据流图(Data Flow Diagram),是描述系统逻辑模型的主要工具之一,它是在对系统的业务流程图进行分析的基础上用少数几种符号综合地反映出信息在系统中的流动、存储和处理等情况,并
16、能将信息处理功能和彼此之间的联系,自上而下,逐层分解,从逻辑上精确地描述出系统应具有的数据加工功能、数据输入输出、数据存储、数据来源和去向等项目。 用户信息表药品管理操作员用户信息管理用户信息药品类别信息划价药品信息表划价信息管理划价信息用户信息收费信息管理药品收费信息表 图 3. 1. 3 3.1.4 数据字典3.2系统功能调查数据字典(Data Dictionary),是数据流图(DFD)上所有成分的定义和解释的文字集合。它是系统分析阶段的重要文档,它的作用是将数据流图中全部数据流及其组成部分的数据元素、数据存储、数据加工外部项等,通过数据字典描述清楚,以便于以后系统设计时使用。3.2.1
17、 医院管理信息系统的功能 基础数据维护:对用户信息的管理药品管理:主要对药品类别、药品类型及药品信息的管理 挂号:病人就医的主流程之一,为每一个病人分配一个号码 划价:计算药品的价格,主要包括中药、西药、中成药等 门诊收费:对各项收费进行汇总,如中药、西药、中成药等 查询:对挂号信息、收费信息进行查询3.2.2 基础数据管理医院设置:门诊信息药房信息:药品信息常用基础数据:药品价格,药品数量,挂号,医师费等3.2.3 系统维护功能用户管理:包括新增用户、删除用户、修改用户密码等。数据库备份:数据操作数据初始化:初始化系统数据3.3系统总体流程图用户信息表药品管理操作员用户信息管理用户信息药品类
18、别信息划价药品信息表划价信息管理划价信息用户信息收费信息管理药品收费信息表图3.3 系统总体流程图第四章 系统设计41 模块设计 本系统主要针对医院管理,主要有如下功能模块:基础数据维护:对用户信息的管理药品管理:主要对药品类别、药品类型及药品信息的管理 挂号:病人就医的主流程之一,为每一个病人分配一个号码 划价:计算药品的价格,主要包括中药、西药、中成药等 门诊收费:对各项收费进行汇总,如中药、西药、中成药等 查询:对挂号信息、收费信息进行查询4. 2 功能模块管理信息系统设计阶段的主要目的是将系统分析阶段所提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技
19、术)方案。具体要求对系统进行功能分解,不断下去,直到分解成含义明确,功能单一的单元功能模块,从而绘制出系统的功能模块图,即HIPO图。此管理信息系统的HIPO图如下门诊收费管理查询收费划价挂号基础数据药品管理挂号查询收费查询类别设定药品管理最低库存科室管理医师管理43 数据流图用户信息表药品管理操作员用户信息管理用户信息药品类别信息划价药品信息表划价信息管理划价信息用户信息收费信息管理药品收费信息表 图4.3.1 数据流图44 数据库设计数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信
20、息需求。1、概念结构设计在数据库设计中,先要对系统分析所得的数据字典中的数据存储进行分析,然后得出系统的关系模式,可以采用实体联系图(简称ER图)的方法进行数据结构的描述。ER图由实体、属性、联系三部分组成。ER图的有关符号说明如下:3.5.1.4散件实体编号名称日期其它来源散件实体属性联系ID帐号密码用户图 4.3.1 用户E-R图ID单位名称说明药品单位 图 4.3.2 药品单位E-R图ID类型名称说明药品类型 图4.3.3 药品类型E-R图ID科室名称说明科室 图4.3.4 科室E-R图ID医师名称说明医师 图4.3.4 医师E-R图编号药品编码药品名称有效期型号规格药品 图4.3.5
21、药品E-R图实体间主要关系如下:病人 药品药品划价挂号门诊收费属于医师 图4.3.6 实体间主要关系图 2、物理结构设计物理结构设计的原则如下:(1)尽可能的减少数据冗余和重复。(2)结构设计与操作设计相结合。(3)数据结构具有相对的稳定性。基于以上设计原则,本系统设计了一个数据库,包含基本信息表(如药品、医师、科室等)及几个实体联系建模后的表(如划价信息表、收费信息表等)。为了加快系统访问的速度把这些表放在一个数据库中。本系统中相关数据库表结构设计举例如下:1、 用户表(p_user)编号字段名称字段类型字段说明1ID数值ID2用户名文本用户名3密码文本密码2、 药品单位(med_dw)编号
22、字段名称字段类型字段说明1ID数值ID2单位名称文本单位名称3单位名称文本单位名称4单位名称文本单位名称5单位名称文本单位名称6单位名称文本单位名称3、 药品类型表(med_type)编号字段名称字段类型字段说明1ID数值ID2类型名称文本类型名称3类型名称文本类型名称4、 科室表(med_ks)编号字段名称字段类型字段说明1ID数值ID2科室名称文本科室名称3科室名称文本科室名称4科室名称文本科室名称5、 药品划价表(hj_t)编号字段名称字段类型字段说明1ID数值ID2药品编码文本药品编码3药品名称日期药品名称4型号规格文本型号规格5数量数值数量6应付款数值应付款7挂号ID数值挂号ID6、
23、 药品划价汇总表(hj)编号字段名称字段类型字段说明1ID数值ID2类型文本类型3应收款数值应收款4挂号ID数值挂号ID7、 门诊收费表(hj_aa)编号字段名称字段类型字段说明1ID数值ID2收费项目文本收费项目3应付款数值应付款4挂号ID数值挂号ID8、 门诊收费汇总表(hj_a)编号字段名称字段类型字段说明1ID数值ID2类型文本类型3应收款数值应收款4挂号ID数值挂号ID45 系统界面设计 系统主界面 在此系统中,充分考虑到人们的使用习惯,利用了菜单对系统中功能进行分类列举,用使对系统的使用,通过菜单即能完成,这样使得主界面简洁,易于使用。另一方面,对当前使用的某一功能选项对应的窗口,
24、以模式的方式进行工作,使得在同一窗口,仅能打开某一类功能的窗口,也在一定程度上减轻了用户的使用难度。系统的主界面如下:窗体和控件的属性见表主窗体及控件属性设置控件属性属性取值 Frmmainnamefrmmaincaption门诊收费管理系统startuppositoncenterscreen statusbarnamestatusbar1Panels( 1 )XbrTextPanels( 2 )SrDatePanels( 3 )SbrTime用户管理界面此界面为本系统中,较常用的一种界面结构。主要由最上方的工具条,中间的现有数据显示区及下方的新增内容区。 在系统细节,主要采用了一个ADO.r
25、ecordset对象,当增加保存时,使用了其addnew及post方法;当删除某一行数据时,使用了其Delete,post方法。用户管理窗体的界面如下图示窗体用一个表格控件msf1exgrid,一个工具条控件too1bar,两个标签控件table组成。各控件的属性如下表 用户管理窗体中各个控件的属性设置 控件 属性 属性取值 FormnameFrm用户管理caption用户管理startUpPositonCenterScreen Too1barNameToo1bar1Appeatance1-3DBorderstyle1-ccfixedSngleIndex 1增加Index 2删除Index 3
26、修改Index 4退出 MSFlexridgNameDatagrid滚动条( S )3-Both选定模式( M )1-By Row允许用户调整大小( U )3-BothLable1Caption用户名Lable2Caption密码主要实现代码如下: Private Sub Form_Load()Call ExcuteSql(rec_user, select * from p_user)Call ShowInfo(rec_user, flexb)End SubPublic Sub ShowInfo(ByVal rs As ADODB.Recordset, ByVal searchList As
27、MSHFlexGrid)On Error Resume NextDim SumFields, i, jSumFields = rs.Fields.Count 该表的字段总数searchList.Clear 清空列表,防止增加或修改调用时重复显示searchList.BackColor = &HC0FFFF 设置网格背景颜色searchList.Cols = SumFields 设置网格列数searchList.Row = 0With searchList .FillStyle = flexFillSingle .ScrollTrack = True .AllowUserResizing = f
28、lexResizeColumns .FixedRows = 1 .FixedCols = 0 .SelectionMode = flexSelectionByRowEnd With设置第一行的各列标题For i = 0 To SumFields - 1 searchList.Col = i searchList.TextMatrix(0, i) = rs.Fields(i).Name searchList.ColAlignmentFixed(i) = 3 searchList.BackColor = &H8000000FNext i设置第一行的各列标题文字格式For i = 0 To SumF
29、ields - 1 searchList.Col = i searchList.CellAlignment = 4 searchList.CellFontBold = True searchList.CellForeColor = vbBlue j = TextWidth(rs.Fields(i).DefinedSize) * 8 设置标题宽度,防止部分长文字不显示 If j searchList.ColWidth(i) Then searchList.ColWidth(i) = j End IfNext i循环开始-显示所有符合条件记录rs.MoveLastsearchList.Rows =
30、 rs.RecordCount + 1 其中标题占一行rs.MoveFirstsearchList.Row = 0While Not rs.EOF searchList.Row = searchList.Row + 1 增加一行,用于写入内容 For i = 0 To SumFields - 1 searchList.Col = i If searchList.Col = 0 Then searchList.CellBackColor = &H8000000F End If searchList.CellAlignment = 4 读入内容 If Not IsNull(rs.Fields(i)
31、.Value) Then searchList.Text = rs.Fields(i).Value Else searchList.Text = End If Next i rs.MoveNextWend循环结束-显示所有符合条件记录End SubPrivate Sub tblOperator_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Key Case add Call Form3.setType(add) Form3.Show vbModal Case modify Call Form3.setTyp
32、e(modify) Form3.Show vbModal Case exit Unload Me Case delete rec_user.Delete rec_user.Update End Select Call ShowInfo(rec_user, flexb)End SubPrivate Sub flexb_DblClick()If Not rec_user.EOF ThenDim f As New Form3Call f.setType(modify)f.Show vbModalCall ShowInfo(rec_user, flexb)End IfEnd SubPrivate Su
33、b flexb_SelChange() Dim strID, strFind Call GetFlexGridFirstColValue(flexb, strID) If strID Empty Then strFind = ID= & Trim(strID) If Not (rec_user.EOF And rec_user.BOF) Then rec_user.MoveFirst rec_user.Find (strFind) 实时的移动记录 Debug.Print Move to & strID End If End IfEnd Sub药品管理界面本界面,主要实现对药品信息的管理,如药品
34、编码、药品名称、型号规格、有效期等.能进行完备的药品编辑操作。各控件的属性如下表 药品管理窗体中各个控件的属性设置 控件 属性 属性取值 FormnameFrm药品管理caption药品管理startUpPositonCenterScreen Too1barNameToo1bar1Appeatance1-3DBorderstyle1-ccfixedSngleIndex 1增加Index 2删除Index 3修改Index 4退出 MSFlexridgNameDatagrid滚动条( S )3-Both选定模式( M )1-By Row允许用户调整大小( U )3-BothLable 1Capt
35、ion药品编码Lable 2Caption药品名称Lable 3Caption型号规格Lable 4Caption单位Lable 5Caption单价Lable 6Caption库存量Lable 7Caption有效期主要代码如下:Private Sub tblOperator_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Key Case add Call Form13.setType(add) Form13.Show vbModal Case modify Call Form13.setType(mod
36、ify) Form13.Show vbModal Case exit Unload Me Case delete rec_med.Delete rec_med.Update End Select Call ShowInfo(rec_med, flexb)End SubPrivate Sub flexb_DblClick()If Not rec_med.EOF ThenDim f As New Form13Call f.setType(modify)f.Show vbModalCall ShowInfo(rec_med, flexb)End IfEnd SubPrivate Sub flexb_
37、SelChange() Dim strID, strFind Call GetFlexGridFirstColValue(flexb, strID) If strID Empty Then strFind = ID= & Trim(strID) If Not (rec_med.EOF And rec_med.BOF) Then rec_med.MoveFirst rec_med.Find (strFind) 实时的移动记录 Debug.Print Move to & strID End If End IfEnd Sub挂号界面挂号是系统主要流程的第一步,它的主要功能是为病人人分配一个唯一的编号
38、,在以后的流程中,这个编号即挂的号为划价、收费的基础。在具体的实现中,在医师输入框后,放置了一命令按钮,方便用户快速的查找医师的信息。医师的信息也是以后查询医师的业绩的主要标识.挂号窗体中放置了一个组合框控件,两个命令按钮,三个标签和两个文本框。各控件的属性见下表 挂号窗体控件属性表 控件属性属性取值 FormNameFrm挂号Caption挂号startUpPsitonCenterScreenTextBoxName医师TextBoxName挂号费ComboBoxNameCmb类型 CommandButton NameCmdSaveCaption保存CommandButtonNameCmdCa
39、ncelCaption退出Lable1Caption类型Lable2Caption医师Lable3Caption挂号费主要代码如下: Private Sub Command1_Click()Dim c_gl As StringIf Trim(Text1) = ThenText1.SetFocusEnd IfIf t_ = add And Text1.Text init Thenc_gl = Now()c_gl = Replace(c_gl, -, )c_gl = Replace(c_gl, :, )c_gl = Replace(c_gl, , )Call ExcuteSql(rec_gh, select * from med_gl)If rec_gh.State = adStateOpen Thenrec_gh.AddNewrec_gh.Fields(类型) = Trim(Combo1.Text)rec_gh.Fields(医师ID) = Trim(Text1)rec_gh.Fields(挂号费) = Trim(Text3)rec_gh.Fields(编号) = Trim(c_gl)rec_gh.UpdateMsgBox (你的挂号号码: & c_gl)Text1 =