医院信息管理系统
来源:广州软件开发 编辑:广州软件开发公司 日期:2017-05-19
1背景及意义
1.1目的与要求
随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。几乎所有医院也都已经在使用计算机管理数据的机制,大大减少了医院医药管理的工作量。该课程设计要求设计一个医药销售的数据库管理系统,数据库中要求包含用户的基本信息,药品基本信息,员工资本信息,供应商基本信息,以及客户信息表。要方便用户进行医药管理,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
1.2设计环境
① Microsoft SQL Server 2000
② VS2010
2.需求分析
2.1 系统功能要求设计
根据以上对医院管理系统的分析,一个完整的医院管理系统应包括如下图所示的几大功能:

各模块实现的功能分别是:
1、“病人信息”主要是病人登记,出院办理,登记病人信息包括建立病人的主索引信息,分配病人的ID号,确保病人信息的惟一性,可选择输入病人姓名、挂号类别(普诊号、专家号等)及就诊科室等信息。另外可以对病人的信息重新录入,修改,查询查看病人的缴费情况,出院办理等。
2、“管理员信息”用于管理使用该软件的管理员账号。包括姓名、性别、电话、 注册日期。主要功能有注册新的管理员,修改管理员密码,用户注销,系统退出。
3、“退药入库”主要负责对病人分配药品以及退回药品重新入库。
4、“药房信息”主要管理药品的相关信息,包括供应商基本信息、药品基本信息、采购计划、应付款管理、药品入库、药品出库、药品盘点、药品报损、底线报警、有效期提醒。对库存药品进行统计查询。
5、“收费管理”用于对病人计费,统计病人各种费用,对病人账户扣费处理。
6、“处方管理”主要用于记录对病人的处方,包括用药,病情等。
2.2 业务描述
某医院信息管理系统大体可以分成六大模块, 一是病人信息模块,里面应该包含病人编号,病人姓名,性别,身份证号,出生年月,地址,电话,病情,科室编号,医生编号,确诊日期,是否交费等;二退药入库模块, 里面应该包含药品编号,病人编号,药品名称,回收数量剩余库存量等;三管理员信息模块,里面应该包含账号,密码,姓名,性别,出生年月,注册时间等;四药房信息模块,里面应该包含药房编号等;五收费管理模块,里面应该包含病人计费,统计病人费用,病人账户扣费处理等;六处方管理模块,里面应该包含病人编号,姓名,病情,处方信息等。
2.3 数据流图
数据流图1 医院管理系统0层图

医院管理系统1层图(病人就诊住院管理)
医院管理系统1层图(药房管理)
2.4数据字典(DD)
绘制DFD,只是对数据处理和彼此之间的联系进行了说明。为进一步明确数据的详细内容和数据加工过程,应将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工,通过数据字典描述清楚,以便于此后系统设计的进行。这就需要开发人员编写详细的数据字典,来描述系统开发过程的细节。
下面列出本系统中的的数据字典。
表1 病人信息表
功能名称:病人信息表 |
存储位置:病人信息 |
存储组织:一个病人一条记录 |
主键:病人编号 |
数据元素 |
数据采集方式 |
说明 |
patientnum(病人编号) |
人工输入 |
主键,必须输入 |
patientname(病人姓名) |
人工输入 |
必须输入 |
patientbirthday(病人出生年月) |
人工输入 |
|
patientID(病人身份证号) |
人工输入 |
|
patientaddress(病人地址) |
人工输入 |
|
patienttelephone(病人电话) |
人工输入 |
|
patientsex(病人性别) |
人工输入 |
|
state(病人病情) |
人工输入 |
|
administrativenum(科室编号) |
人工输入 |
|
docnum(医生编号) |
人工输入 |
|
CertainTime(确诊日期) |
人工输入 |
|
whether(是否交费) |
人工输入 |
|
表2 住院信息表
功能名称:住院信息表 |
存储位置:住院信息 |
存储组织:一个病人一条记录 |
主键:病人编号 |
数据元素 |
数据采集方式 |
说明 |
patientnum(病人编号) |
人工输入 |
主键,必须输入 |
HospitalID(住院号) |
人工输入 |
|
BedNum(床号) |
人工输入 |
|
HospitalTime(住院日期) |
人工输入 |
|
CureMoney(每日治疗费) |
人工输入 |
|
LiveMoney(住院费) |
自动采集 |
|
depositmoney(账户余额) |
自动采集 |
|
表3 药品库存表
功能名称:药品库存表 |
存储位置:药品库存 |
存储组织:一个药品一条记录 |
主键:药品编号 |
数据元素 |
数据采集方式 |
说明 |
MedicineID(药品编号) |
人工输入 |
主键,必须输入 |
MedicineName(药品名称) |
人工输入 |
|
medicinenumber(药品数量) |
人工输入 |
|
store(药品库存量) |
自动采集 |
|
SupplierID(供应商编号) |
自动采集 |
|
ProduceTime(药品生产日期) |
人工输入 |
|
EffectTime(药品有效期) |
人工输入 |
|
medicinemoney(药品单价) |
人工输入 |
|
type(药品类型) |
人工输入 |
|
表4 药品采购表
功能名称:药品采购表 |
存储位置:药品采购 |
存储组织:一个病人一条记录 |
主键:药品编号 |
数据元素 |
数据采集方式 |
说明 |
MedicineID(药品编号) |
人工输入 |
主键,必须输入 |
SupplyMedicine(所供药品) |
人工输入 |
|
Suppliername(供应商姓名) |
人工输入 |
|
Suppliertelephone(供应商电话) |
人工输入 |
|
Supplieraddress(供应商地址) |
人工输入 |
|
SupplyMedicine(所供药品) |
人工输入 |
|
Purchase(药品采购单号) |
人工输入 |
|
Purchasecount(采购数量) |
人工输入 |
|
money(采购单价) |
人工输入 |
|
type(药品类型) |
人工输入 |
|
表5 药品发放表
功能名称:药品发放表 |
存储位置:药品发放 |
存储组织:一个病人一条记录 |
主键:病人编号 |
数据元素 |
数据采集方式 |
说明 |
MedicineName(药品名称) |
人工输入 |
|
MedicineID(药品编号) |
人工输入 |
主键,必须输入 |
medicinenumber(发放数量) |
人工输入 |
|
RemainVetent(剩余库存量) |
自动采集 |
|
表6 药品回收表
功能名称:药品回收表 |
存储位置:药品回收 |
存储组织:一个药品一条记录 |
主键:药品编号 |
数据元素 |
数据采集方式 |
说明 |
MedicineID(药品编号) |
人工输入 |
主键,必须输入 |
MedicineName(药品名称) |
自动采集 |
|
Returnnumber(回收数量) |
人工输入 |
|
RemainVetent(剩余库存量) |
自动采集 |
|
表7科室信息表
功能名称:科室信息表 |
存储位置:科室 |
存储组织:一间科室一条记录 |
主键:科室编号 |
数据元素 |
数据采集方式 |
说明 |
administrativenum(科室编号) |
人工输入 |
主键,必须输入 |
administrativename(科室名称) |
人工输入 |
|
patientnum(就诊人数) |
自动采集 |
|
表8 医生信息表
功能名称:医生信息表 |
存储位置:医生信息 |
存储组织:一位医生一条记录 |
主键:医生编号 |
数据元素 |
数据采集方式 |
说明 |
Docnum(医生编号) |
人工输入 |
主键,必须输入 |
administrativenum(科室编号) |
人工输入 |
|
docname(医生姓名) |
人工输入 |
|
docsex(医生性别) |
人工输入 |
|
docage(医生年龄) |
人工输入 |
|
3.概念模型设计
由需求分析的结果可知,本系统设计的实体包括:
(1)管理员:账号,密码,姓名,性别,出生年月,注册时间
(2)病人:病人编号,病人姓名,性别,身份证号,出生年月,地址,电话,病情,科室编号,医生编号,确诊日期,是否交费
(3)药品: 药品编号,药品名称,药品数量,药品库存量,供应商编号,药品生产日期,药品有效期,药品单价,药品类型
(4)科室: 科室编号,科室名称,就诊人数
(5)病房: 病房编号
(6)医生: 医生编号,科室编号,医生姓名,医生性别,医生年龄
这些实体间的联系包括:
1. 一个管理员可以负责登记多个病人信息,一个病人信息由一个管理员负责登记。
2. 一个医生可以管理多个病人,一个病人只由一个医生管理。
3. 病人和退药之间存在多对多的联系。
4. 一个病人可以拿多种药,一种药可以分配给多个病人。
5. 一个病人可以入住一个病房,一个病房可以分配给多个病人。
6. 一个医生从属一个科室,一个科室可以有多名医生
4 逻辑结构设计
4.1由系统E—R图转化而得到的关系模式如下:
(1)管理员(账号,密码,姓名,性别,出生年月,注册时间);
(2)病人(病人编号,病人姓名,性别,身份证号,出生年月,地址,电话,病情,科室编号,医生编号,确诊日期,是否交费),主键为病人编号。
(3)药品(药品编号,药品名称,药品数量,药品库存量,供应商编号,药品生产日期,药品有效期,药品单价,药品类型)主键为药品编号。
(4)退药(药品编号,病人编号,药品名称,回收数量剩余库存量)主键为病人编号,药品编号。外键,病人编号。
(5)出库(药品编号,病人编号,药品名称,分发数量,剩余库存量)主键为药品编号,病人编号,外键,药品编号,病人编号。
(6)住院登记(病人编号,住院号,床号,出院日期,每日诊疗费,住院费,账户余额)主键为病人编号,外键病人编号。
(7)病房(病房编号,病人编号)主键为病房编号,病人编号,外键病人编号。
(8)医生(医生编号,科室编号,医生姓名,医生性别,医生年龄)主键为医生编号。
(9)科室(科室编号,科室名称,就诊人数)主键为科室编号。
4.2 确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。
4.3 确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该医院信息管理系统的数据量小,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。
5 物理结构设计
5.1 选定环境
① Microsoft SQL Server 2008
② VS2010
5.2 索引
主键充当索引。
6 数据库的实施与维护
6.1 数据库的实施:
CREATE TABLE [dbo].[admin](
[name] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[password] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[username] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[sex] [bit] NULL,
[phone] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[registertime] [datetime] NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[administrative](
[administrativeid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[administrativename] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[docino](
[docnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[administrativenum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[docname] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[docsex] [bit] NULL,
[docage] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[liveino](
[patientnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[hospitalid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[bednum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[hospitalime] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[curemoney] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[livemoney] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[deposimoney] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[medicineinvent](
[medicineid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[medicinename] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[medicinenum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[store] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[supplierid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[producetime] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[efficttime] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[price] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[type] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[outmedicine](
[medicinename] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[medicineid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[medicinenumber] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[remainvent] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[patienino](
[patientnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientname] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientbirthday] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientID] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientaddress] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientphone] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientsex] [bit] NULL,
[state] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[administrativenum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[docnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[patienino2](
[patientnum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[patientname] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[chufang] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[bingqing] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[purchasemedcine](
[medicineid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[supplymedicine] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[suppliername] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[supplierphone] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[supplieraddress] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[purchase] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[purchasenumber] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[price] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[type] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
CREATE TABLE [dbo].[returnmedicine](
[medicineid] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[medicinename] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[returnnumber] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
) ON [PRIMARY]
6.2数据库的维护
当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在sqlserver中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。当然也可以利用其他各种方法进行数据维护。
7.系统运行情况及用户界面
八.课程设计的过程、体会及建议
通过对数据库这门课程的学习以及平时的上机训练,我们已经基本掌握了设计数据库的相关知识和技术。这次期末我们小组所选课题为某医院的信息管理系统。该课程设计是对我们这个学期所学知识的考察,同时也是一个挑战。这其中包括最初基本表的设计和需求分析,以及E-R图设计和最后的数据库实施,每做一步都要上机运行一遍,仔细检查是否存在问题,尽力使系统达到预期的目的,成为一个可以运用到实践中的真实可靠的系统。我们组共有五名成员。大家分工明确,各司其职,重要部分大家努力合作,共同探讨,从小部分着手,逐步把系统完善。最终通过大家的共同努力,我们完成了本次课程设计。这不仅使我们完成了设计,更重要的是让我们懂得了团队合作的重要性,以及集体力量的强大。
通过此次的课程设计,我们深深的明白了相互合作的重要性,也体会到了共同交流的重要性,更体会到了知识的重要性,学习是一个没有止境的方向,我们要让自己时刻保持好学的心态,时刻懂得学习的重要性。一个有知识的人,永远不会老。
相关阅读