数据库课设医院门诊收费系统设计报告

摘 要

随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。目前社会正处于健保发展方兴未艾的时代,各医疗院所莫不兢兢业业地改善本身的体制或管理方式,所以应越来越严格的规范;在此背景下,本文论述了医院管理系统(重点论述门诊收费子系统)的设计实现。通过对各种数据库管理系统的模型分析,结合医院门诊的实际需求,采用C/S(客户端/服务器) 模式,说明了医院管理系统的开发过程及各种技术细节。本系统是适应时代发展的需要,提高管理的效率而开发设计的。

医院管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备, 易使用等特点。

因此本人结合医院门诊收费系统的要求,对MS SQL Server2000数据库管理系统、SQL 语言原理将对数据库应用系统开发医院门诊收费系统进行了简明的介绍,并分析了开发医院管理系统所应进行的工作; 对数据库的设计和SQL 语言的使用进行了系统分析,为深入理解数据库应用打下了基础; 学习了具体的开发工具Delphi 7.0,对其数据库组件,SQL 语言在Delphi 中的应用等数据库编程关键技术进行了系统的介绍;除此还分析了医院管理系统的应用需求,按照数据库设计理论一步一步地给出了系统需求说明书、局部ER 图、全局ER 图、系统关系模式,子模式,利用MS SQ Server2000建立了数据库;进行了具体的程序设计,具体划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了多条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能,医院信息系统(HIS )是一套通用性很强的商业软件。本人负责的门诊划价子系统是针对一般医院的业务处理而开发的,主要用于门诊部的划价和信息生成。 关键字:HIS ,软件工程,模块化数据库,SQL 语言,数据库组件

目 录

1.引言 . ...................................................................................................................................... 1 2. 需求分析阶段 . ..................................................................................................................... 2

2.1 引言 ............................................................................................................................. 2 2.2 需求分析阶段的目标与任务 ....................................................................................... 2

2.2.1处理对象 . ................................................................................................... 2 2.2.2处理功能及要求 ........................................................................................ 3 2.2.3. 安全性和完整性要求 . ............................................................................... 3

2.3 需求分析阶段成果 ...................................................................................................... 3 3 概念设计阶段........................................................................................................................ 6

3.1 引言 ............................................................................................................................. 6 3.2 任务与目标 . ................................................................................................................. 6 3.3 阶段结果 . ..................................................................................................................... 7 4.逻辑设计阶段........................................................................................................................ 8

4.1逻辑设计的任务和目标 . ............................................................................................... 8 4.2数据组织 . ...................................................................................................................... 8

4.2.1将E-R 图转换为关系模型 . ................................................................................ 8 4.2.2模型优化 ........................................................................................................... 9 4.2.3数据库模式定义 ................................................................................................ 9 4.2.4 用户子模式定义 ............................................................................................. 10 4.3数据处理 . .................................................................................................................... 10 5.物理设计阶段.......................................................................................................................11

5.1物理设计阶段的目标与任务 ...................................................................................... 12 5.2数据存储方面 ............................................................................... 错误!未定义书签。 5.3系统功能模块 ............................................................................... 错误!未定义书签。

5.3.1 读者基本信息的查询和更新模块 .................................... 错误!未定义书签。 5.3.2 图书基本信息的查询和更新模块 .................................... 错误!未定义书签。

6.数据库实施阶段 . ................................................................................................................. 12

6.1建立数据库、数据表、视图、索引 ........................................................................... 12

6.1.1 建立数据库 .................................................................................................... 12 6.1.2 建立数据表 .................................................................................................... 13 6.1.3 建立视图 ........................................................................................................ 14 6.1.4 建立索引 ........................................................................................................ 17 6.1.5 建立触发器 .................................................................................................... 17 6.2数据入库 . ...................................................................................... 错误!未定义书签。 6.3创建各个功能的存储过程 .......................................................................................... 17 7.系统调试和测试 . ................................................................................................................. 17

8.设计心得 ............................................................................................................................. 17 9.存在的问题及建议 .............................................................................................................. 18 致谢 .......................................................................................................................................... 19 参考文献 . .................................................................................................................................. 19 附录1 数据查看和存储过程功能的验证 . ................................................................................ 20 附录2 所有的SQL 运行语句.................................................................................................... 25 附录3 系统的运行界面 ........................................................................................................... 27

1.引言

随着科学技术的高速发展,计算机软件的需求量大幅度提升,各种专业的特殊管理、应用软件已被提上了议案,当然,与此同时,计算机软件开发越来越专业化,对设计人员的综合素质和专业知识的要求越来越高,任务也是越来越重。信息产业作为当今社会做前端的技术性行业,其科技含量是最高的;作为一个计算机专业的大学生,特别是面对我们国家现在紧缺高水平、高素质的软件人员,我们也清醒的认识到掌握好专业知识的重要性,更清楚了自己肩上的责任。

本次设计的主题是:基于C/S结构的医院门诊收费系统。本系统提供给医院门诊收费用户一个综合、全面的办公环境和工具,同时实现了大量数据信息和文档以及多媒体信息快速、有效、准确地获取、管理和传递。因此本系统是提高工作效率、规范医院门诊办公制度、方便领导决策的重要工具。

本软件主要完成门诊划价收费功能,按照软件工程的思想来完成这一设计过程,历经三个多月,在指导教师认真耐心的指导下,系统已经初步完成。由于是初次完成比较正规的且有规模的软件设计,所以难免出现一些错误和漏洞,恳请各位老师和同学批评指正。在本次设计期间,指导教师、师长们给了我们很大的鼓励和支持,在我们有困难的时候给予了我们无私的关心和帮助,在这里表示深深的感谢!

同时,也向评阅论文和参加论文答辩的老师们表示衷心的感谢!

2. 需求分析阶段

2.1 引言

一所医院的主要构成分为两个部分,一是门诊部门,二是住院部门,医院的所有日常工作都是围绕着这两大部门进行的。

门诊部门和住院部门各下设若干科室,如门诊部门下设口腔科、内科、外科、皮肤科等,住院部门下设内科、外科、骨科等,二者下设的部分科室是交叉的,各科室都有相应的医生、护士,完成所承担的医疗工作,医生又有主治医师、副主任医师、普通医师或教授、副教授、其他之分。

为了支持这两大部门的工作,医院还设置了药库、中心药房、门诊药房、制剂室、设备科、财务科、后勤仓库、门诊收费处、门诊挂号处、问讯处、住院处、检验科室、检查科室、血库、病案室、手术室,以及为医院的日常管理而设置的行政部门等。

其中,药库负责药品的贮存、发放和采购;中心药房负责住院病人的药品管理,包括根据处方及医嘱生成领药单,向药库领药,配药并把药品发给相应的病区,以及药房的库存管理和病区余药回收;门诊药房负责门诊病人的药品管理,包括根据处方,按处方内容备药、发药,向药库领药等;制剂室负责药物的配制,并提供给药库;设备科负责医院的医疗设备等的购入和维修等;财务科负责医院中一切与财务有关的业务和工作,进行医院的财务管理;后勤仓库负责医院所有后勤物品的贮存和管理;门诊收费处负责门诊病人的处方的划价和收费;门诊挂号处负责门诊病人的挂号事务;问讯处负责向有疑问的就医病人解释相关问题;住院处负责所有就医病人的住院事宜和相关管理;检验科室负责病人的各项检验,(如验血等)以及与各项检验相关的管理,药剂取用等;检查科室负责病人的各项检查(如CT 检查以及其他放射线检查等)以及与各项检查相关的管理,设备使用与维护等;血库负责医院的各种血型的血液的贮存和管理以及血液的采集;病案室负责病人病案的管理和保存;手术室负责病人的手术,手术的安排以及有关手术的相关事宜和器械,制剂,设备等的使用等;行政部门则根据其相应的工作职责进行日 常的工作,对医院进行行政方面的管理,以保证医院的医疗工作的正常进行和医院的后勤保障。

2.2 需求分析阶段的目标与任务 2.2.1处理对象

科室信息:科室ID ,科室名称 医生信息:医生姓名,性别,年龄 借阅历史信息:药品名称,买价,卖价

病人信息:病人姓名,性别,年龄,是否有婚姻 管理员信息:用户名,密码

2.2.2处理功能及要求

系统提供待开门诊处方以及各种检查检验申请单实时划价、输入、查询、修改功能。另外还提供候诊病人就医分配;按科室、人员等条件统计单据;检索病人就诊历史等可选功能。它将病人历次门诊的所有临床医疗信息通过计算机管理,并为后继系统提供划价信息,是全面实现门诊信息化管理的必备前端系统之一。

门诊系统联系物流、财务、医疗的主要信息是病人信息与处方信息。考虑到目前医院情况,门诊系统主要完成处方信息的电子化,以及和医院药房、财务系统联网。由于医生工作站的推广困难,处方信息的录入,通过划价子系统进行。

2.2.3. 安全性和完整性要求

1) 安全性要求

系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。 2) 完整性要求

系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check 约束,或者通过使用触发器和级联更新。

2.3 需求分析阶段成果

2.3.1 体会与收获

经对前面的需求调查和初步的分析,确定由计算机完成的工作时对数据进行各种管理和处理,具体的工作内容见第二部分, 由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。

2.3.3 医院的基本业务流程图

2.3.4 图书管理系统数据字典 (a )数据项:

表1.1 数据项列表

数据项编号

数据项名

数据项含义

与其它数据项的关系

DI-1 DI-2 DI-3 DI-4 DI-5 DI-6 DI-7 DI-8 DI-9 DI-24 DI-25 DI-26 DI-27 DI-28 DI-29 DI-30

NUM NAME SEX ID PRICE TOTILPrice MARRY

DI-31

存储结构

别名

编号 姓名 性别 身份证号 费用总计 自付总计 婚姻 民族 职业 工作单位 单位电话 家庭住址 宅电 邮编 科室 医疗来源 日期

Int Char Bit Char Float Float char char char char char Char Char Char Char Char Datetim e

同ReaLBID

DI-32 DI-33 DI-34

经办人 标识 医保编号

同RoomMID

char char char

(b )数据结构:

表1.2 数据结构列表

数据结 构编号

DS-1

数据结构名

数据结构 含义

属 性

NUM

流水号 医疗号

Not null Not null

DS-2

DS-3 NAME

姓名 科室 医疗类别 日期 挂号费 病历

Null Null Null Null Null Null

DS-4 ITEM

DS-5

DS-6 DATA

DS-7 PRICE

DS-8

2.3.5 处理逻辑描述

表1.3 处理逻辑列表

3 概念设计阶段

3.1 引言

本次设计开发的医院门诊收费信息系统是一套完整的医院信息系统的一部分,整个系统应既可以面向大中型医院又可针对中小型医院的专用应用系统。它几乎覆盖了医院主要管理职能和患者在医院就诊的各主要环节。我们的HIS 专用应用系统不简单地是一套计算机管理应用软件,最重要的是它符合中国实际情况,参照了现行医改政策,

结合国内与国际先进的医院管理经验,将医院的管理思想、医院各部门的业务经验以及当今计算机科学技术的完美统一起来的体现。 3.2 任务与目标

(1)选择中层数据流为切入点,通常选择实际系统中的子系统; (2)设计分E-R 图,即各子模块的E-R 图;

(3)生成初步E-R 图,通过合并方法,做到各子系统实体、属性、联系统一; (4)生成全局E-R 图,通过消除冲突等方面。

3.3 阶段结果

(1)根据不同的对象,从第3层数据流程图入手,分别画出各分E -R 图:

4.逻辑设计阶段

4.1逻辑设计的任务和目标

以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS 产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R 图转换为选用DBMS 产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R 图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。

4.2数据组织

4.2.1将E-R 图转换为关系模型

实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:

一个m :n 联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性

均转换为关系的属性,而关系的码为各实体码的组合。

一个1:n 联系可以转换为一个独立的关系模式,也可以与n 端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n 端实体的码。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合 具有相同码的关系模式可合并。

4.2.2模型优化

关系模式Doctor,BaseType,Items,Medicine ,Patient不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF.

4.2.3数据库模式定义

表2.1 BaseType表

列名

ID TypeId TypeName

数据类型

Char Char Char

可否为空

not null not null not null

编号 科室名

说明

表2.2 doctor表

列名

ID Name Sex Age DeptId Title

数据类型

Char Char Char Char Char Char

可否为空

not null not null not null not null not null

编号 姓名 性别 年龄

说明

表2.3 Medicine表

列名

MedID MedName Typeid saleprice unitid buyprice totle

数据类型

Char Char Char Char Char

Char

Char

可否为空

not null not null

not null not null

说明

药品编号 药品姓名 卖价 买价 总计

表2.4 patient表

列名

ID NAME IDnum sex age marry

数据类型

Char Char Char Char Char

可否为空

not null not null

not null

编号

说明

病人名字 性别 年龄 婚姻

表2.5 item表

列名

ItemID ITemName Total Unitid Buyprice saleprice

数据类型

Char Char Char Char Char

可否为空

not null not null not null not null not null

说明

表2.6 User表

列名

Username PWD User_Type

数据类型

Char Char Char

可否为空

not null not null not null

说明

4.2.4 用户子模式定义

表2.1 BaseType表试图

列名

ID TypeId TypeName

数据类型

Char Char Char

可否为空

not null not null not null

编号 科室名

说明

表2.2 doctor表试图

列名

ID Name Sex Age DeptId Title

数据类型

Char Char Char Char Char Char

可否为空

not null not null not null not null not null

编号 姓名 性别 年龄

说明

表2.3 Medicine表试图

列名

MedID MedName Typeid saleprice unitid buyprice totle

数据类型

Char Char Char Char Char

Char

Char

可否为空

not null not null

not null not null

说明

药品编号 药品姓名 卖价 买价 总计

表2.4 patient表试图

列名

ID NAME IDnum sex age marry

数据类型

Char Char Char Char Char

可否为空

not null not null

not null

编号

说明

病人名字 性别 年龄 婚姻

表2.5 item表试图

列名

ItemID ITemName Total Unitid Buyprice saleprice

数据类型

Char Char Char Char Char

可否为空

not null not null not null not null not null

说明

表2.6 User表试图

列名

Username PWD User_Type

数据类型

Char Char Char

可否为空

not null not null not null

说明

4.3数据处理

系统功能模块图:

5.物理设计阶段

5.1物理设计阶段的目标与任务

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:

(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构; (2)对物理结构进行评价,评价的重点是时间和空间效率。

6.数据库实施阶段

6.1建立数据库、数据表、视图、索引 6.1.1 建立数据库

CREATE DATABASE Hospital GO

6.1.2 建立数据表

(1)BaseType 表的建立: USE Hospital GO

CREATE TABLE BaseType

(Id int PRIMARY KEY IDENTITY, TypeId tinyint,

TypeName varchar(30)

) GO

(2)Doctor 表的建立: USE Hospital GO

CREATE TABLE Doctor

( Id int IDENTITY PRIMARY KEY, Name

varchar(50) NOT NULL, Sex v archar(2) NOT NULL, Age int,

DeptId int, Title varchar(50) ); GO

(3)Items 表的建立: USE Hospital GO

CREATE TABLE Items

( ItemId int IDENTITY PRIMARY KEY, ItemName varchar(50) NOT NULL, Total int, UnitId int, BuyPrice float, SalePrice float

) GO

(4)Medicine 表的建立: USE Hospital GO

CREATE TABLE Medicine

( MedId int IDENTITY PRIMARY KEY, MedName varchar(50), TypeId int, UnitId int,

BuyPrice float, --进货价格,计算利润用 SalePrice float, --售出价格 Total float,

Flag tinyint --中西药标记,0-中药;1-西药)

(5)Registration 表的建立: USE Hospital GO

CREATE TABLE Registration ( RegId

int PRIMARY KEY,

PatId int,--患者 DocId i nt, --医生名称 RegDate v archar(20), --日期 UserName varchar(20) --用户名 ) GO

(6)Users 表的建立: USE Hospital GO

CREATE TABLE Users

(UserName varchar(40) PRIMARY KEY, Pwd varchar(40) NOT NULL, User_Type tinyint NOT NULL

) GO

INSERT INTO Users Values('Admin', '888888', 1) GO

6.1.3 建立视图

(1)用于查询PayList 视图定义如下:

GO

USE Hospital

CREATE VIEW PayList_v AS

SELECT p.PayId, p.RegId,r.DocId,r.RegDate, m.MedName, b.TypeName, p.Price, m.Total, p.PNum, p.Price * p.PNum AS PSum, m.BuyPrice, (p.Price - m.BuyPrice) * p.PNum AS PEarn FROM PayItems p, Medicine m, BaseType b,Registration r

WHERE p.ItemId = m.MedId AND m.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=1 UNION

SELECT p.PayId, p.RegId,r.DocId, r.RegDate,i.ItemName, b.TypeName, p.Price, i.Total, p.PNum,

p.Price * p.PNum AS PSum, i.BuyPrice, (p.Price - i.BuyPrice) * p.PNum AS PEarn

FROM PayItems p, Items i, BaseType b,Registration r

WHERE p.ItemId = i.ItemId AND i.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=2 GO (2)用于ReportDoctor 查询的视图定义如下:

GO

CREATE VIEW ReportDoctor_v AS

SELECT d .Name AS 医生姓名, b.TypeName AS 科室名称, d .Title AS 职务, p.RegDate AS 月份,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PSum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额, (CASE WHEN p.PEarn >= 0 THEN p.PEarn ELSE 0 END) AS 纯利润 FROM BaseType b, Doctor d,

(SELECT DocId, LEFT(RegDate,7) AS RegDate, SUM(PNum) AS PNum,

SUM(PSum) AS PSum, SUM(PEarn) AS PEarn FROM PayList_v

GROUP BY DocId, LEFT(RegDate,7)) p

WHERE b.TypeId = 1 AND d.DeptId = b.Id AND d.Id = p.DocId GO (3)用于显示ReportItems 的视图定义如下:

GO

CREATE VIEW ReportItems_v

USE Hospital

USE Hospital

AS

SELECT i.ItemId AS 药品编号, i.ItemName AS 药品名称, b.TypeName AS 单位,

i.BuyPrice AS 成本价格, i.SalePrice AS 销售价格, i.Total AS 库存数量, p.RegDate AS 销售日期,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PNum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PNum >= 0 THEN (p.PSum - i.BuyPrice * p.PNum) ELSE 0 END) AS 纯利润 FROM Items i, BaseType b,

(SELECT ps.ItemId, ps.RegId, LEFT(r.RegDate,7) AS RegDate, SUM(ps.PNum) AS PNum,

SUM(ps.Price * ps.PNum) AS PSum FROM PayItems ps, Registration r

WHERE ps.PType = 2 AND ps.RegId = r.RegId GROUP BY ps.ItemId, ps.RegId, LEFT(r.RegDate,7)) p WHERE i.ItemId = p.ItemId AND i.UnitId = b.Id GO (4)用于ReportMedicine 的视图定义如下:

GO

CREATE VIEW ReportMedicine_v AS

SELECT m.MedId AS 药品编号, m.MedName AS 药品名称,

(CASE WHEN m.Flag = 1 THEN '中药' ELSE '西药' END) AS 类别, b1.TypeName AS 分类, b.TypeName AS 单位, m.BuyPrice AS 进货价格, m.SalePrice AS 销售价格, m.Total AS 库存数量, p.RegDate AS 销售日期, (CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PNum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PNum >= 0 THEN (p.PSum - m.BuyPrice * p.PNum) ELSE 0 END) AS 纯利润

FROM Medicine m, BaseType b, BaseType b1,

(SELECT ps.ItemId, ps.RegId, LEFT(r.RegDate,7) AS RegDate, SUM(ps.PNum) AS PNum,

SUM(ps.Price * ps.PNum) AS PSum FROM PayItems ps, Registration r

WHERE ps.PType = 1 AND ps.RegId = r.RegId GROUP BY ps.ItemId, ps.RegId, LEFT(r.RegDate,7)) p WHERE m.MedId = p.ItemId AND m.UnitId = b.Id AND m.TypeId = b1.Id

USE Hospital

6.1.4 建立索引

6.1.5 建立触发器

1.当删除Reader 表中某一读者基本信息时,触发Borrow 表,删除相应的记录

Use Hosptial

go

create trigger Doctor_delete

on Doctor

for delete

as

delete Name

from deleted

where Name.ID=deleted.ID

6.3创建各个功能的存储过程

系统共创建了10个存储过程,具体列表如下:

表3.1 创建的存储过程列表:

编号

P-1 存储过程名称 Doctor 信息表 定义 详见附录1-1 作用 在Book 中插入一元组

(其它表的查询、修改、删除与以上各表的存储过程定义大致相同,这里不再具体列出)

7.系统调试和测试

8.设计心得

在一个假期的时间对一个新的程序进行了解和实践然后按部就班的做出一

个属于自己的程序,并且按时完成,很不容易但是经过测试表明已有功能基本运行正常。为了适应将来医院现有流程和网络设施状况,不断进行用户需求分析和代码设计改进,在此循环的基础上不断增加功能。虽然最后做出来的程序比较简单,但是内含了多种情况下的功能,可以在适当时候根据实际情况进行选择。

不管怎么样由于时间和能力有限,只完成了一些基本的功能,还是有很多

的不成熟、不完善的地方,但毕竟是自己花了时间和经历去做的。

最后,恳请评审老师不吝赐教,提出宝贵的意见。

9.存在的问题及建议

在本次设计中事实上存在着很多很多的问题,包括一些VC 和SQL 连接的的一些细节上的东西在网上查询了很多的资料也没能弄明白和分析出来。我希望在以后的专业课程的学习中也不断的温故而知新,在很多的新问题和旧问题上得到一些突破和了解。让我能在今后的学习中得到更多的能力。

致谢

在这里,首先要感谢陈作聪老师一个学期以来对我们的细心、耐心的教导,没有您的认真督促和教育。也没有我们的今天。同样也要很感谢对我设计报告评审的老师,感谢您用您宝贵的时间为我的设计打分和提建议。总之,VC+SQL的程序的制作真的好多谢各位老师的教导。

参考文献

[1] 金宇红,孙国祥,《对发展我国HIS 技术市场的调研与思考》,中国医院管理,2000,20(12),5-6

[2] 余大昆,李义兵,《湖北省医院信息系统建设及应用情况调查分析》,医学与计算机应用,2001,14(8),459-460

[3] 王安平,李燕燕,陈季妍,《医院信息系统投资分析》,山西财政税务专科学校学报,2001,17(5),51-52

[4] 郭煜,高岍,《建设医院门诊系统的探讨》,山西电子技术,2000.5,22-24转41

[5] 俞鹤伟,牟艳华,《C/S模式下MIS 系统网络规模的分析》,华南理工大学学报(自然科学版) ,2000,28(9),82-86

[6] 何雨生,李月东等,《门诊信息系统研究》,中国医院管理,2001,21(6),42-44

[7] 黄俊刚,《浅谈医院门诊信息的计算机管理》,医疗装备,2000,13(12),14-15

[8] 林寒祈,汪忠乐等,《医院信息系统中医嘱子系统的应用与体会》,医疗装备,2001,14(2),17-17

[9] 姚和顺,《基于客户/服务器结构的门诊医生工作站的设计与实现》,现代计算机,2001.8,93-95

[10] 李易庆,《电子病案与相关信息技术》,医学与计算机应用,2001,14(7),382-382

[11] 闭思成,薛冠华,《医院信息系统药品输入编码的制定方法》,医学与计算机应用,2001,14(8),491-492

[12] 盛平,宋轶勤,宋顺林,《医院信息系统的分析与设计》,江苏理工大学学报(社会科学版) ,2000.4,15-18

[13] 杨焱,苏小刚等,《门诊信息查询模块的设计与开发》,医学与计算机应用,2001,14(7),415-416

[14] 代伟,董军等,《医院信息系统下统计基础工作的质量保证》,中国医院统计,2001,8(2),99-100

[15] (美)Michael Abbey等著; 乐嘉锦等译,SQL Server2000初学者指南》,机械工业出版社, 2000

附录1 数据查看和存储过程功能的验证

1. 基本表的数据查看(基于视图查询) :

1) 查看BaseType 表中的数据

2) 查看Doctor 表中的数据:

3) 查看Medicine 表中的数据:

4)查看Patient 表中的数据

5)查看Users 表中的数据:

6)查看PayList_v视图中的数据:

7)查看ReportDoctor_v视图的数据:

2. 触发器功能的验证:

附录3 所有的SQL 运行语句

USE Hospital

GO

CREATE TABLE BaseType

(Id int PRIMARY KEY IDENTITY,

TypeId tinyint,

TypeName varchar(30)

)

GO

USE Hospital

GO

CREATE TABLE Doctor

( Id int IDENTITY PRIMARY KEY,

Name varchar(50) NOT NULL,

Sex varchar(2) NOT NULL,

Age int,

DeptId int,

Title varchar(50)

);

GO

CREATE DATABASE Hospital

GO

USE Hospital

GO

CREATE TABLE Items

( ItemId int IDENTITY PRIMARY KEY,

ItemName varchar(50) NOT NULL,

Total int,

UnitId int,

BuyPrice float,

SalePrice float

)

GO

USE Hospital

GO

CREATE TABLE Medicine

( MedId int IDENTITY PRIMARY KEY,

MedName varchar(50),

TypeId int,

UnitId int,

BuyPrice float, --进货价格,计算利润用

SalePrice float, --售出价格

Total float,

Flag tinyint --中西药标记,0-中药;1-西药

)

GO

USE Hospital

GO

CREATE TABLE Registration

( RegId

PatId

DocId

RegDate

)

GO

USE Hospital

GO

CREATE VIEW PayList_v

AS

SELECT p.PayId, p.RegId,r.DocId,r.RegDate,

m.MedName, b.TypeName, p.Price, m.Total,

p.PNum, p.Price * p.PNum AS PSum, m.BuyPrice,

(p.Price - m.BuyPrice) * p.PNum AS PEarn

FROM PayItems p, Medicine m, BaseType b,Registration r

WHERE p.ItemId = m.MedId AND m.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=1

UNION

SELECT p.PayId, p.RegId,r.DocId, r.RegDate,i.ItemName,

b.TypeName, p.Price, i.Total, p.PNum,

p.Price * p.PNum AS PSum, i.BuyPrice, (p.Price - i.BuyPrice)

* p.PNum AS PEarn

FROM PayItems p, Items i, BaseType b,Registration r

WHERE p.ItemId = i.ItemId AND i.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=2

GO

int PRIMARY KEY, int,--患者 int, --医生名称 varchar(20), --日期 UserName varchar(20) --用户名

USE Hospital

GO

CREATE VIEW ReportDoctor_v

AS

SELECT d .Name AS 医生姓名, b.TypeName AS 科室名称, d .Title AS 职务, p.RegDate AS 月份,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量,

(CASE WHEN p.PSum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PEarn >= 0 THEN p.PEarn ELSE 0 END) AS 纯利润

FROM BaseType b, Doctor d,

(SELECT DocId, LEFT(RegDate,7) AS RegDate, SUM(PNum) AS PNum, SUM(PSum) AS PSum, SUM(PEarn) AS PEarn

FROM PayList_v

GROUP BY DocId, LEFT(RegDate,7)) p

WHERE b.TypeId = 1 AND d.DeptId = b.Id AND d.Id = p.DocId

GO

USE Hospital

GO

CREATE TABLE Users

(UserName varchar(40) PRIMARY KEY,

Pwd varchar(40) NOT NULL,

User_Type tinyint NOT NULL

)

GO

INSERT INTO Users Values('Admin', '888888', 1)

GO

附录4 系统的运行界面

(1) 系统的登陆界面

(2) 主窗体

(3)科室名称

课程设计评分表

摘 要

随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。目前社会正处于健保发展方兴未艾的时代,各医疗院所莫不兢兢业业地改善本身的体制或管理方式,所以应越来越严格的规范;在此背景下,本文论述了医院管理系统(重点论述门诊收费子系统)的设计实现。通过对各种数据库管理系统的模型分析,结合医院门诊的实际需求,采用C/S(客户端/服务器) 模式,说明了医院管理系统的开发过程及各种技术细节。本系统是适应时代发展的需要,提高管理的效率而开发设计的。

医院管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备, 易使用等特点。

因此本人结合医院门诊收费系统的要求,对MS SQL Server2000数据库管理系统、SQL 语言原理将对数据库应用系统开发医院门诊收费系统进行了简明的介绍,并分析了开发医院管理系统所应进行的工作; 对数据库的设计和SQL 语言的使用进行了系统分析,为深入理解数据库应用打下了基础; 学习了具体的开发工具Delphi 7.0,对其数据库组件,SQL 语言在Delphi 中的应用等数据库编程关键技术进行了系统的介绍;除此还分析了医院管理系统的应用需求,按照数据库设计理论一步一步地给出了系统需求说明书、局部ER 图、全局ER 图、系统关系模式,子模式,利用MS SQ Server2000建立了数据库;进行了具体的程序设计,具体划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了多条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能,医院信息系统(HIS )是一套通用性很强的商业软件。本人负责的门诊划价子系统是针对一般医院的业务处理而开发的,主要用于门诊部的划价和信息生成。 关键字:HIS ,软件工程,模块化数据库,SQL 语言,数据库组件

目 录

1.引言 . ...................................................................................................................................... 1 2. 需求分析阶段 . ..................................................................................................................... 2

2.1 引言 ............................................................................................................................. 2 2.2 需求分析阶段的目标与任务 ....................................................................................... 2

2.2.1处理对象 . ................................................................................................... 2 2.2.2处理功能及要求 ........................................................................................ 3 2.2.3. 安全性和完整性要求 . ............................................................................... 3

2.3 需求分析阶段成果 ...................................................................................................... 3 3 概念设计阶段........................................................................................................................ 6

3.1 引言 ............................................................................................................................. 6 3.2 任务与目标 . ................................................................................................................. 6 3.3 阶段结果 . ..................................................................................................................... 7 4.逻辑设计阶段........................................................................................................................ 8

4.1逻辑设计的任务和目标 . ............................................................................................... 8 4.2数据组织 . ...................................................................................................................... 8

4.2.1将E-R 图转换为关系模型 . ................................................................................ 8 4.2.2模型优化 ........................................................................................................... 9 4.2.3数据库模式定义 ................................................................................................ 9 4.2.4 用户子模式定义 ............................................................................................. 10 4.3数据处理 . .................................................................................................................... 10 5.物理设计阶段.......................................................................................................................11

5.1物理设计阶段的目标与任务 ...................................................................................... 12 5.2数据存储方面 ............................................................................... 错误!未定义书签。 5.3系统功能模块 ............................................................................... 错误!未定义书签。

5.3.1 读者基本信息的查询和更新模块 .................................... 错误!未定义书签。 5.3.2 图书基本信息的查询和更新模块 .................................... 错误!未定义书签。

6.数据库实施阶段 . ................................................................................................................. 12

6.1建立数据库、数据表、视图、索引 ........................................................................... 12

6.1.1 建立数据库 .................................................................................................... 12 6.1.2 建立数据表 .................................................................................................... 13 6.1.3 建立视图 ........................................................................................................ 14 6.1.4 建立索引 ........................................................................................................ 17 6.1.5 建立触发器 .................................................................................................... 17 6.2数据入库 . ...................................................................................... 错误!未定义书签。 6.3创建各个功能的存储过程 .......................................................................................... 17 7.系统调试和测试 . ................................................................................................................. 17

8.设计心得 ............................................................................................................................. 17 9.存在的问题及建议 .............................................................................................................. 18 致谢 .......................................................................................................................................... 19 参考文献 . .................................................................................................................................. 19 附录1 数据查看和存储过程功能的验证 . ................................................................................ 20 附录2 所有的SQL 运行语句.................................................................................................... 25 附录3 系统的运行界面 ........................................................................................................... 27

1.引言

随着科学技术的高速发展,计算机软件的需求量大幅度提升,各种专业的特殊管理、应用软件已被提上了议案,当然,与此同时,计算机软件开发越来越专业化,对设计人员的综合素质和专业知识的要求越来越高,任务也是越来越重。信息产业作为当今社会做前端的技术性行业,其科技含量是最高的;作为一个计算机专业的大学生,特别是面对我们国家现在紧缺高水平、高素质的软件人员,我们也清醒的认识到掌握好专业知识的重要性,更清楚了自己肩上的责任。

本次设计的主题是:基于C/S结构的医院门诊收费系统。本系统提供给医院门诊收费用户一个综合、全面的办公环境和工具,同时实现了大量数据信息和文档以及多媒体信息快速、有效、准确地获取、管理和传递。因此本系统是提高工作效率、规范医院门诊办公制度、方便领导决策的重要工具。

本软件主要完成门诊划价收费功能,按照软件工程的思想来完成这一设计过程,历经三个多月,在指导教师认真耐心的指导下,系统已经初步完成。由于是初次完成比较正规的且有规模的软件设计,所以难免出现一些错误和漏洞,恳请各位老师和同学批评指正。在本次设计期间,指导教师、师长们给了我们很大的鼓励和支持,在我们有困难的时候给予了我们无私的关心和帮助,在这里表示深深的感谢!

同时,也向评阅论文和参加论文答辩的老师们表示衷心的感谢!

2. 需求分析阶段

2.1 引言

一所医院的主要构成分为两个部分,一是门诊部门,二是住院部门,医院的所有日常工作都是围绕着这两大部门进行的。

门诊部门和住院部门各下设若干科室,如门诊部门下设口腔科、内科、外科、皮肤科等,住院部门下设内科、外科、骨科等,二者下设的部分科室是交叉的,各科室都有相应的医生、护士,完成所承担的医疗工作,医生又有主治医师、副主任医师、普通医师或教授、副教授、其他之分。

为了支持这两大部门的工作,医院还设置了药库、中心药房、门诊药房、制剂室、设备科、财务科、后勤仓库、门诊收费处、门诊挂号处、问讯处、住院处、检验科室、检查科室、血库、病案室、手术室,以及为医院的日常管理而设置的行政部门等。

其中,药库负责药品的贮存、发放和采购;中心药房负责住院病人的药品管理,包括根据处方及医嘱生成领药单,向药库领药,配药并把药品发给相应的病区,以及药房的库存管理和病区余药回收;门诊药房负责门诊病人的药品管理,包括根据处方,按处方内容备药、发药,向药库领药等;制剂室负责药物的配制,并提供给药库;设备科负责医院的医疗设备等的购入和维修等;财务科负责医院中一切与财务有关的业务和工作,进行医院的财务管理;后勤仓库负责医院所有后勤物品的贮存和管理;门诊收费处负责门诊病人的处方的划价和收费;门诊挂号处负责门诊病人的挂号事务;问讯处负责向有疑问的就医病人解释相关问题;住院处负责所有就医病人的住院事宜和相关管理;检验科室负责病人的各项检验,(如验血等)以及与各项检验相关的管理,药剂取用等;检查科室负责病人的各项检查(如CT 检查以及其他放射线检查等)以及与各项检查相关的管理,设备使用与维护等;血库负责医院的各种血型的血液的贮存和管理以及血液的采集;病案室负责病人病案的管理和保存;手术室负责病人的手术,手术的安排以及有关手术的相关事宜和器械,制剂,设备等的使用等;行政部门则根据其相应的工作职责进行日 常的工作,对医院进行行政方面的管理,以保证医院的医疗工作的正常进行和医院的后勤保障。

2.2 需求分析阶段的目标与任务 2.2.1处理对象

科室信息:科室ID ,科室名称 医生信息:医生姓名,性别,年龄 借阅历史信息:药品名称,买价,卖价

病人信息:病人姓名,性别,年龄,是否有婚姻 管理员信息:用户名,密码

2.2.2处理功能及要求

系统提供待开门诊处方以及各种检查检验申请单实时划价、输入、查询、修改功能。另外还提供候诊病人就医分配;按科室、人员等条件统计单据;检索病人就诊历史等可选功能。它将病人历次门诊的所有临床医疗信息通过计算机管理,并为后继系统提供划价信息,是全面实现门诊信息化管理的必备前端系统之一。

门诊系统联系物流、财务、医疗的主要信息是病人信息与处方信息。考虑到目前医院情况,门诊系统主要完成处方信息的电子化,以及和医院药房、财务系统联网。由于医生工作站的推广困难,处方信息的录入,通过划价子系统进行。

2.2.3. 安全性和完整性要求

1) 安全性要求

系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。 2) 完整性要求

系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check 约束,或者通过使用触发器和级联更新。

2.3 需求分析阶段成果

2.3.1 体会与收获

经对前面的需求调查和初步的分析,确定由计算机完成的工作时对数据进行各种管理和处理,具体的工作内容见第二部分, 由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。

2.3.3 医院的基本业务流程图

2.3.4 图书管理系统数据字典 (a )数据项:

表1.1 数据项列表

数据项编号

数据项名

数据项含义

与其它数据项的关系

DI-1 DI-2 DI-3 DI-4 DI-5 DI-6 DI-7 DI-8 DI-9 DI-24 DI-25 DI-26 DI-27 DI-28 DI-29 DI-30

NUM NAME SEX ID PRICE TOTILPrice MARRY

DI-31

存储结构

别名

编号 姓名 性别 身份证号 费用总计 自付总计 婚姻 民族 职业 工作单位 单位电话 家庭住址 宅电 邮编 科室 医疗来源 日期

Int Char Bit Char Float Float char char char char char Char Char Char Char Char Datetim e

同ReaLBID

DI-32 DI-33 DI-34

经办人 标识 医保编号

同RoomMID

char char char

(b )数据结构:

表1.2 数据结构列表

数据结 构编号

DS-1

数据结构名

数据结构 含义

属 性

NUM

流水号 医疗号

Not null Not null

DS-2

DS-3 NAME

姓名 科室 医疗类别 日期 挂号费 病历

Null Null Null Null Null Null

DS-4 ITEM

DS-5

DS-6 DATA

DS-7 PRICE

DS-8

2.3.5 处理逻辑描述

表1.3 处理逻辑列表

3 概念设计阶段

3.1 引言

本次设计开发的医院门诊收费信息系统是一套完整的医院信息系统的一部分,整个系统应既可以面向大中型医院又可针对中小型医院的专用应用系统。它几乎覆盖了医院主要管理职能和患者在医院就诊的各主要环节。我们的HIS 专用应用系统不简单地是一套计算机管理应用软件,最重要的是它符合中国实际情况,参照了现行医改政策,

结合国内与国际先进的医院管理经验,将医院的管理思想、医院各部门的业务经验以及当今计算机科学技术的完美统一起来的体现。 3.2 任务与目标

(1)选择中层数据流为切入点,通常选择实际系统中的子系统; (2)设计分E-R 图,即各子模块的E-R 图;

(3)生成初步E-R 图,通过合并方法,做到各子系统实体、属性、联系统一; (4)生成全局E-R 图,通过消除冲突等方面。

3.3 阶段结果

(1)根据不同的对象,从第3层数据流程图入手,分别画出各分E -R 图:

4.逻辑设计阶段

4.1逻辑设计的任务和目标

以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS 产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R 图转换为选用DBMS 产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R 图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。

4.2数据组织

4.2.1将E-R 图转换为关系模型

实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:

一个m :n 联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性

均转换为关系的属性,而关系的码为各实体码的组合。

一个1:n 联系可以转换为一个独立的关系模式,也可以与n 端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n 端实体的码。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合 具有相同码的关系模式可合并。

4.2.2模型优化

关系模式Doctor,BaseType,Items,Medicine ,Patient不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF.

4.2.3数据库模式定义

表2.1 BaseType表

列名

ID TypeId TypeName

数据类型

Char Char Char

可否为空

not null not null not null

编号 科室名

说明

表2.2 doctor表

列名

ID Name Sex Age DeptId Title

数据类型

Char Char Char Char Char Char

可否为空

not null not null not null not null not null

编号 姓名 性别 年龄

说明

表2.3 Medicine表

列名

MedID MedName Typeid saleprice unitid buyprice totle

数据类型

Char Char Char Char Char

Char

Char

可否为空

not null not null

not null not null

说明

药品编号 药品姓名 卖价 买价 总计

表2.4 patient表

列名

ID NAME IDnum sex age marry

数据类型

Char Char Char Char Char

可否为空

not null not null

not null

编号

说明

病人名字 性别 年龄 婚姻

表2.5 item表

列名

ItemID ITemName Total Unitid Buyprice saleprice

数据类型

Char Char Char Char Char

可否为空

not null not null not null not null not null

说明

表2.6 User表

列名

Username PWD User_Type

数据类型

Char Char Char

可否为空

not null not null not null

说明

4.2.4 用户子模式定义

表2.1 BaseType表试图

列名

ID TypeId TypeName

数据类型

Char Char Char

可否为空

not null not null not null

编号 科室名

说明

表2.2 doctor表试图

列名

ID Name Sex Age DeptId Title

数据类型

Char Char Char Char Char Char

可否为空

not null not null not null not null not null

编号 姓名 性别 年龄

说明

表2.3 Medicine表试图

列名

MedID MedName Typeid saleprice unitid buyprice totle

数据类型

Char Char Char Char Char

Char

Char

可否为空

not null not null

not null not null

说明

药品编号 药品姓名 卖价 买价 总计

表2.4 patient表试图

列名

ID NAME IDnum sex age marry

数据类型

Char Char Char Char Char

可否为空

not null not null

not null

编号

说明

病人名字 性别 年龄 婚姻

表2.5 item表试图

列名

ItemID ITemName Total Unitid Buyprice saleprice

数据类型

Char Char Char Char Char

可否为空

not null not null not null not null not null

说明

表2.6 User表试图

列名

Username PWD User_Type

数据类型

Char Char Char

可否为空

not null not null not null

说明

4.3数据处理

系统功能模块图:

5.物理设计阶段

5.1物理设计阶段的目标与任务

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:

(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构; (2)对物理结构进行评价,评价的重点是时间和空间效率。

6.数据库实施阶段

6.1建立数据库、数据表、视图、索引 6.1.1 建立数据库

CREATE DATABASE Hospital GO

6.1.2 建立数据表

(1)BaseType 表的建立: USE Hospital GO

CREATE TABLE BaseType

(Id int PRIMARY KEY IDENTITY, TypeId tinyint,

TypeName varchar(30)

) GO

(2)Doctor 表的建立: USE Hospital GO

CREATE TABLE Doctor

( Id int IDENTITY PRIMARY KEY, Name

varchar(50) NOT NULL, Sex v archar(2) NOT NULL, Age int,

DeptId int, Title varchar(50) ); GO

(3)Items 表的建立: USE Hospital GO

CREATE TABLE Items

( ItemId int IDENTITY PRIMARY KEY, ItemName varchar(50) NOT NULL, Total int, UnitId int, BuyPrice float, SalePrice float

) GO

(4)Medicine 表的建立: USE Hospital GO

CREATE TABLE Medicine

( MedId int IDENTITY PRIMARY KEY, MedName varchar(50), TypeId int, UnitId int,

BuyPrice float, --进货价格,计算利润用 SalePrice float, --售出价格 Total float,

Flag tinyint --中西药标记,0-中药;1-西药)

(5)Registration 表的建立: USE Hospital GO

CREATE TABLE Registration ( RegId

int PRIMARY KEY,

PatId int,--患者 DocId i nt, --医生名称 RegDate v archar(20), --日期 UserName varchar(20) --用户名 ) GO

(6)Users 表的建立: USE Hospital GO

CREATE TABLE Users

(UserName varchar(40) PRIMARY KEY, Pwd varchar(40) NOT NULL, User_Type tinyint NOT NULL

) GO

INSERT INTO Users Values('Admin', '888888', 1) GO

6.1.3 建立视图

(1)用于查询PayList 视图定义如下:

GO

USE Hospital

CREATE VIEW PayList_v AS

SELECT p.PayId, p.RegId,r.DocId,r.RegDate, m.MedName, b.TypeName, p.Price, m.Total, p.PNum, p.Price * p.PNum AS PSum, m.BuyPrice, (p.Price - m.BuyPrice) * p.PNum AS PEarn FROM PayItems p, Medicine m, BaseType b,Registration r

WHERE p.ItemId = m.MedId AND m.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=1 UNION

SELECT p.PayId, p.RegId,r.DocId, r.RegDate,i.ItemName, b.TypeName, p.Price, i.Total, p.PNum,

p.Price * p.PNum AS PSum, i.BuyPrice, (p.Price - i.BuyPrice) * p.PNum AS PEarn

FROM PayItems p, Items i, BaseType b,Registration r

WHERE p.ItemId = i.ItemId AND i.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=2 GO (2)用于ReportDoctor 查询的视图定义如下:

GO

CREATE VIEW ReportDoctor_v AS

SELECT d .Name AS 医生姓名, b.TypeName AS 科室名称, d .Title AS 职务, p.RegDate AS 月份,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PSum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额, (CASE WHEN p.PEarn >= 0 THEN p.PEarn ELSE 0 END) AS 纯利润 FROM BaseType b, Doctor d,

(SELECT DocId, LEFT(RegDate,7) AS RegDate, SUM(PNum) AS PNum,

SUM(PSum) AS PSum, SUM(PEarn) AS PEarn FROM PayList_v

GROUP BY DocId, LEFT(RegDate,7)) p

WHERE b.TypeId = 1 AND d.DeptId = b.Id AND d.Id = p.DocId GO (3)用于显示ReportItems 的视图定义如下:

GO

CREATE VIEW ReportItems_v

USE Hospital

USE Hospital

AS

SELECT i.ItemId AS 药品编号, i.ItemName AS 药品名称, b.TypeName AS 单位,

i.BuyPrice AS 成本价格, i.SalePrice AS 销售价格, i.Total AS 库存数量, p.RegDate AS 销售日期,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PNum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PNum >= 0 THEN (p.PSum - i.BuyPrice * p.PNum) ELSE 0 END) AS 纯利润 FROM Items i, BaseType b,

(SELECT ps.ItemId, ps.RegId, LEFT(r.RegDate,7) AS RegDate, SUM(ps.PNum) AS PNum,

SUM(ps.Price * ps.PNum) AS PSum FROM PayItems ps, Registration r

WHERE ps.PType = 2 AND ps.RegId = r.RegId GROUP BY ps.ItemId, ps.RegId, LEFT(r.RegDate,7)) p WHERE i.ItemId = p.ItemId AND i.UnitId = b.Id GO (4)用于ReportMedicine 的视图定义如下:

GO

CREATE VIEW ReportMedicine_v AS

SELECT m.MedId AS 药品编号, m.MedName AS 药品名称,

(CASE WHEN m.Flag = 1 THEN '中药' ELSE '西药' END) AS 类别, b1.TypeName AS 分类, b.TypeName AS 单位, m.BuyPrice AS 进货价格, m.SalePrice AS 销售价格, m.Total AS 库存数量, p.RegDate AS 销售日期, (CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量, (CASE WHEN p.PNum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PNum >= 0 THEN (p.PSum - m.BuyPrice * p.PNum) ELSE 0 END) AS 纯利润

FROM Medicine m, BaseType b, BaseType b1,

(SELECT ps.ItemId, ps.RegId, LEFT(r.RegDate,7) AS RegDate, SUM(ps.PNum) AS PNum,

SUM(ps.Price * ps.PNum) AS PSum FROM PayItems ps, Registration r

WHERE ps.PType = 1 AND ps.RegId = r.RegId GROUP BY ps.ItemId, ps.RegId, LEFT(r.RegDate,7)) p WHERE m.MedId = p.ItemId AND m.UnitId = b.Id AND m.TypeId = b1.Id

USE Hospital

6.1.4 建立索引

6.1.5 建立触发器

1.当删除Reader 表中某一读者基本信息时,触发Borrow 表,删除相应的记录

Use Hosptial

go

create trigger Doctor_delete

on Doctor

for delete

as

delete Name

from deleted

where Name.ID=deleted.ID

6.3创建各个功能的存储过程

系统共创建了10个存储过程,具体列表如下:

表3.1 创建的存储过程列表:

编号

P-1 存储过程名称 Doctor 信息表 定义 详见附录1-1 作用 在Book 中插入一元组

(其它表的查询、修改、删除与以上各表的存储过程定义大致相同,这里不再具体列出)

7.系统调试和测试

8.设计心得

在一个假期的时间对一个新的程序进行了解和实践然后按部就班的做出一

个属于自己的程序,并且按时完成,很不容易但是经过测试表明已有功能基本运行正常。为了适应将来医院现有流程和网络设施状况,不断进行用户需求分析和代码设计改进,在此循环的基础上不断增加功能。虽然最后做出来的程序比较简单,但是内含了多种情况下的功能,可以在适当时候根据实际情况进行选择。

不管怎么样由于时间和能力有限,只完成了一些基本的功能,还是有很多

的不成熟、不完善的地方,但毕竟是自己花了时间和经历去做的。

最后,恳请评审老师不吝赐教,提出宝贵的意见。

9.存在的问题及建议

在本次设计中事实上存在着很多很多的问题,包括一些VC 和SQL 连接的的一些细节上的东西在网上查询了很多的资料也没能弄明白和分析出来。我希望在以后的专业课程的学习中也不断的温故而知新,在很多的新问题和旧问题上得到一些突破和了解。让我能在今后的学习中得到更多的能力。

致谢

在这里,首先要感谢陈作聪老师一个学期以来对我们的细心、耐心的教导,没有您的认真督促和教育。也没有我们的今天。同样也要很感谢对我设计报告评审的老师,感谢您用您宝贵的时间为我的设计打分和提建议。总之,VC+SQL的程序的制作真的好多谢各位老师的教导。

参考文献

[1] 金宇红,孙国祥,《对发展我国HIS 技术市场的调研与思考》,中国医院管理,2000,20(12),5-6

[2] 余大昆,李义兵,《湖北省医院信息系统建设及应用情况调查分析》,医学与计算机应用,2001,14(8),459-460

[3] 王安平,李燕燕,陈季妍,《医院信息系统投资分析》,山西财政税务专科学校学报,2001,17(5),51-52

[4] 郭煜,高岍,《建设医院门诊系统的探讨》,山西电子技术,2000.5,22-24转41

[5] 俞鹤伟,牟艳华,《C/S模式下MIS 系统网络规模的分析》,华南理工大学学报(自然科学版) ,2000,28(9),82-86

[6] 何雨生,李月东等,《门诊信息系统研究》,中国医院管理,2001,21(6),42-44

[7] 黄俊刚,《浅谈医院门诊信息的计算机管理》,医疗装备,2000,13(12),14-15

[8] 林寒祈,汪忠乐等,《医院信息系统中医嘱子系统的应用与体会》,医疗装备,2001,14(2),17-17

[9] 姚和顺,《基于客户/服务器结构的门诊医生工作站的设计与实现》,现代计算机,2001.8,93-95

[10] 李易庆,《电子病案与相关信息技术》,医学与计算机应用,2001,14(7),382-382

[11] 闭思成,薛冠华,《医院信息系统药品输入编码的制定方法》,医学与计算机应用,2001,14(8),491-492

[12] 盛平,宋轶勤,宋顺林,《医院信息系统的分析与设计》,江苏理工大学学报(社会科学版) ,2000.4,15-18

[13] 杨焱,苏小刚等,《门诊信息查询模块的设计与开发》,医学与计算机应用,2001,14(7),415-416

[14] 代伟,董军等,《医院信息系统下统计基础工作的质量保证》,中国医院统计,2001,8(2),99-100

[15] (美)Michael Abbey等著; 乐嘉锦等译,SQL Server2000初学者指南》,机械工业出版社, 2000

附录1 数据查看和存储过程功能的验证

1. 基本表的数据查看(基于视图查询) :

1) 查看BaseType 表中的数据

2) 查看Doctor 表中的数据:

3) 查看Medicine 表中的数据:

4)查看Patient 表中的数据

5)查看Users 表中的数据:

6)查看PayList_v视图中的数据:

7)查看ReportDoctor_v视图的数据:

2. 触发器功能的验证:

附录3 所有的SQL 运行语句

USE Hospital

GO

CREATE TABLE BaseType

(Id int PRIMARY KEY IDENTITY,

TypeId tinyint,

TypeName varchar(30)

)

GO

USE Hospital

GO

CREATE TABLE Doctor

( Id int IDENTITY PRIMARY KEY,

Name varchar(50) NOT NULL,

Sex varchar(2) NOT NULL,

Age int,

DeptId int,

Title varchar(50)

);

GO

CREATE DATABASE Hospital

GO

USE Hospital

GO

CREATE TABLE Items

( ItemId int IDENTITY PRIMARY KEY,

ItemName varchar(50) NOT NULL,

Total int,

UnitId int,

BuyPrice float,

SalePrice float

)

GO

USE Hospital

GO

CREATE TABLE Medicine

( MedId int IDENTITY PRIMARY KEY,

MedName varchar(50),

TypeId int,

UnitId int,

BuyPrice float, --进货价格,计算利润用

SalePrice float, --售出价格

Total float,

Flag tinyint --中西药标记,0-中药;1-西药

)

GO

USE Hospital

GO

CREATE TABLE Registration

( RegId

PatId

DocId

RegDate

)

GO

USE Hospital

GO

CREATE VIEW PayList_v

AS

SELECT p.PayId, p.RegId,r.DocId,r.RegDate,

m.MedName, b.TypeName, p.Price, m.Total,

p.PNum, p.Price * p.PNum AS PSum, m.BuyPrice,

(p.Price - m.BuyPrice) * p.PNum AS PEarn

FROM PayItems p, Medicine m, BaseType b,Registration r

WHERE p.ItemId = m.MedId AND m.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=1

UNION

SELECT p.PayId, p.RegId,r.DocId, r.RegDate,i.ItemName,

b.TypeName, p.Price, i.Total, p.PNum,

p.Price * p.PNum AS PSum, i.BuyPrice, (p.Price - i.BuyPrice)

* p.PNum AS PEarn

FROM PayItems p, Items i, BaseType b,Registration r

WHERE p.ItemId = i.ItemId AND i.UnitId = b.Id AND p.RegId=r.RegId AND p.PType=2

GO

int PRIMARY KEY, int,--患者 int, --医生名称 varchar(20), --日期 UserName varchar(20) --用户名

USE Hospital

GO

CREATE VIEW ReportDoctor_v

AS

SELECT d .Name AS 医生姓名, b.TypeName AS 科室名称, d .Title AS 职务, p.RegDate AS 月份,

(CASE WHEN p.PNum >= 0 THEN p.PNum ELSE 0 END) AS 销售数量,

(CASE WHEN p.PSum >= 0 THEN p.PSum ELSE 0 END) AS 销售总额,

(CASE WHEN p.PEarn >= 0 THEN p.PEarn ELSE 0 END) AS 纯利润

FROM BaseType b, Doctor d,

(SELECT DocId, LEFT(RegDate,7) AS RegDate, SUM(PNum) AS PNum, SUM(PSum) AS PSum, SUM(PEarn) AS PEarn

FROM PayList_v

GROUP BY DocId, LEFT(RegDate,7)) p

WHERE b.TypeId = 1 AND d.DeptId = b.Id AND d.Id = p.DocId

GO

USE Hospital

GO

CREATE TABLE Users

(UserName varchar(40) PRIMARY KEY,

Pwd varchar(40) NOT NULL,

User_Type tinyint NOT NULL

)

GO

INSERT INTO Users Values('Admin', '888888', 1)

GO

附录4 系统的运行界面

(1) 系统的登陆界面

(2) 主窗体

(3)科室名称

课程设计评分表


相关文章

  • 医院市场部工作总结
  • 一.按计划制作医疗文化墙,动态展示我院名流名医:出版《学习实践科学发展观 加强以病人为中心的服务理念 推进医院管理及学科建设 当好全市医疗行业排头兵》、《齐抓公管护理质量更上新台阶 人人参与共创护理质检达标工作》文化墙。将我们广大医院员工学习科学发展观的理论化为服务为民的动力;将专家深入基层、到村镇 ...

  • 20XX年医院医保办公室主任述职报告
  • 我主要负责医院医保办公室的工作.这一年来,在院领导和同事们的支持配合下,我紧紧围绕医保工作特点和工作规律,认真履行自己的职责,集中大家的智慧和力量,扎扎实实地开展了各项工作,较好地完成了工作任务. 一.xx年的总结 我院医保工作于xx年2月底正式展开,到现在已经运行年,现将这一年的工作情况向院内作出 ...

  • 医院信息科工作职责
  • 1.在分管院长领导下,负责全院信息化建设、信息系统维护及信息资源管理等工作。 2.根据医院建设和发展的需求,协助院领导具体制定医院信息化建设的中长期规划和年度工作计划,并具体实施。 3.负责全院计算机网络建设及维护工作,制定和落实医院计算机网络与信息管理的有关规定和制度,保证医院信息系统的正常运行。 ...

  • 医院挂号述职报告
  • 各位领导、同事们,大家好: 时光转瞬即逝,紧张充实的一年已经过去了。在这一年里,我在这里工作着、学习着,在实践中不断磨练自己的工作能力,使我的业务水平得到很大的提高。这与领导的帮助和大家的支持是密不可分的,在这里我深表感谢! 作为收费员这个岗位,每天就是对着不同的面孔,面带微笑的坐在电脑前机械地重复 ...

  • 20XX年医院收费员述职报告
  • 各位领导、同事们,大家好:   时光转瞬即逝,紧张充实的一年已经过去了。在这一年里,我在这里工作着、学习着,在实践中不断磨练自己的工作能力,使我的业务水平得到很大的提高。这与领导的帮助和大家的支持是密不可分的,在这里我深表感谢!   作为收费员这个岗位,每天就是对着不同的面孔,面带微笑的坐在电脑前机 ...

  • 20XX年医院收费员述职报告范文
  • 各位领导.同事们,大家好: 时光转瞬即逝,紧张充实的一年已经过去了.在这一年里,我在这里工作着.学习着,在实践中不断磨练自己的工作能力,使我的业务水平得到很大的提高.这与领导的帮助和大家的支持是密不可分的,在这里我深表感谢! 作为收费员这个岗位,每天就是对着不同的面孔,面带微笑的坐在电脑前机械地重复 ...

  • 新型农村合作医疗调研报告
  • 加入这个优秀的团队,与众多优秀的队员一起,从策划到实践,完成了这次"有组织.有预谋"的调研活动,受益匪浅,感受良多. 前期准备工作中,我先后主要参与了选点和问卷设计的工作.由于是新接触新农合,所以在进行这些工作的同时,自己也积极地阅读有关这方面的文章和著作,以扩充自己在这方面的知 ...

  • 城市完善流行感冒监测方案
  • 为进一步完善*市流感监测网络,全面提高流感监测网络的监测质量和工作水平,及时掌握流感流行趋势、病毒变异,早期发现、报告和处理暴发疫情,依据卫生部《全国流感监测方案》特制定本方案。 一、目的 (一)监测流感活动水平和流行动态; (二)及时发现流感病毒变异并做出预警; (三)为全球及我国流感疫苗毒株的预 ...

  • 20XX年党委上半年总结
  • xx年上半年,在上级党委领导下,以邓小平理论和“xxxx”重要思想为指导,深入贯彻落实科学发展观,围绕医院中心任务和参与服务上海世博会,认真履行“两大职能”,带领广大干部、党员和群众圆满地完成了上半年党委各项工作任务。 全年党委工作计划分解为118项,已完成51项,正在实施中43项,下半年将启动24 ...

  • 青年志愿者星级"荣誉奖"申报材料
  • xx,女,xxx岁,xxx学历,微机网络负责人。该同志能坚持正确的政治方向,坚决拥护中国共产党,拥护党的路线方针政策。 年 月毕业于xxxxxx大学xxxxx专业,同年xxx月分配到大庆市第二医院人事科微机室工作。在六年的工作中,能立足于自己的岗位,积极进取,努力学习计算机的专业知识,加强实际操作能 ...