收藏 分销(赏)

医院住院部信息管理系统.doc

上传人:精*** 文档编号:4833860 上传时间:2024-10-14 格式:DOC 页数:28 大小:469.50KB 下载积分:10 金币
下载 相关 举报
医院住院部信息管理系统.doc_第1页
第1页 / 共28页
医院住院部信息管理系统.doc_第2页
第2页 / 共28页


点击查看更多>>
资源描述
医院住院部信息管理系统 26 2020年4月19日 文档仅供参考,不当之处,请联系改正。 目录 1 绪论 1 2 需求分析 1 3 总体设计 1 3.1 功能图 1 3.2安全设计 2 4 概念结构设计 2 5 逻辑结构设计 2 5.1关系模型转化 3 5.2确定函数依赖、属于第几范式 3 6 物理结构设计 3 7 数据库的实施、运行 4 7.1创立数据库、建立表 4 7.1.1创立数据库yygl 4 7.1.2创立医生表 5 7.1.3创立病人表 5 7.1.4创立病房表 6 7.1.5创立治疗表 6 7.1.6创立入住表 7 7.2创立视图 8 7.2.1创立病人基本信息查询视图 8 7.2.2创立医生信息查询视图 8 7.2.3创立病人入院后情况信息查询视图 8 7.3创立索引 9 7.4创立和执行存储过程 9 7.4.1创立并执行插入数据存储过程 9 7.4.2创立并执行查询数据存储过程 9 7.5创立触发器。 10 7.5.1创立insert触发器 10 7.5.2创立update触发器 11 7.6表中添加信息 11 7.7 进行系统维护 13 7.7.1查询病人信息 13 7.7.2 删除病人信息 14 8 结论 14 9 学习体会 14 参考文献: 14 致 谢 14 1 绪论 医院住院部信息管理系统方便医生和病人搜索相关住院信息,而且实现从住院、治疗到出院的全过程精确管理与监控,大幅度减少住院治疗事故,对于常出现医疗和财务纠纷的细节,能够极大地节约成本,提升医院整体效益,赢得长足发展。 医院住院部信息管理系统是现代化医院运营的必要技术支撑和基础设施,实现医院住院部信息管理系统的目的就是为了以更现代化、科学化、规范化的手段来加强医院的管理,提高医院的工作效率,改进医院质量,从而树立现代医院的新形象,这也是未来医院发展的必然方向。 2 需求分析 作为医院住院部这样的的场所,其经济成分比重相对较多,对于患者来说来说主要有住院,缴费等情况。而医院则是针对患者入院后对其进行治疗方面。如何让这么多患者实行分类治疗信息管理正是医院住院部信息系统的目的所在。本系统综合了经济的角度,建立了信息中心,可将来各自患者的信息集中管理,提高医院住院部管理的高效性和有序性,快速反馈了患者信息。 从系统开发及实施的可行性和灵活性考虑,本系统的软件开发环境主要选择了当前较为流行的功能强大的 SQL sever 数据库。 3 总体设计 对数据库进行总体分析设计,掌握所要进行设计的数据库的基本框架,并考虑到数据库的安全完整型的设计。 3.1 功能图 系统的核心是对住院信息的管理。查询功能也是系统的基本功能。为了实现医院住院部信息管理系统,方便用户和管理与需求,将医院住院部信息管理系统分为:医生管理,病人管理,病房管理,系统维护四个功能模块,如下图3-1。 图3-1 3.2安全设计 给数据库中表创立不同的视图,保证数据的安全性,使得不想被人知道的部分信息能够较好地隐藏下来。 给数据库中表创立自定义约束,比如check约束、主键约束和唯一键约束,以此来保证数据库的完整性。 给数据库创立存储过程和触发器,防止工作人员由于误操作而删掉部分重要信息。 4 概念结构设计 在需求分析阶段所得到的用户需求抽象为信息结构即概念结构模型的过程就是概念结构设计。它是整个数据库设计的关键。 这个部分的关键是设计,一般根据系统要求,画出能反映本系统每个应用需求的 E-R 图。其中包括五个实体即医生实体、病人实体、病房实体、治疗实体、入住实体,以及一些实体与属性之间的联系。然后对初始的 E-R 图进行优化,消除冗余和可能存在的矛盾。 根据需要得到一个基本的E-R图,如下图4-1所示。 图4-1 医院住院部信息管理系统整体E-R图 5 逻辑结构设计 逻辑结构的设计的任务就是把概念结构设计阶段设计好的基本E-R模型转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。 5.1关系模型转化 医生表(医生编号,姓名,性别,出生日期,职称,科室) 病人表(病人编号,姓名,性别,出生日期,缴费情况,缴费金额,病症) 病房表(病房号,床位号,床位数) 治疗表(医生编号,病人编号,病人情况,医嘱类型,医嘱内容,治疗时间) 入住表(病人编号,病房号,床位号,住院时间,出院时间) 5.2确定函数依赖、属于第几范式 医生表:医生编号→姓名,医生编号→姓别,医生编号→出生日期,医生编号→职称,医生编号→科室,没有传递依赖,没有部分依赖,则此范式属于第三范式。 病人表:病人编号→姓名,病人编号→姓别,病人编号→出生日期,病人编号→缴费情况,病人编号→缴费金额,病人编号→病症,。没有传递依赖,没有部分依赖,则此范式属于第三范式。 病房表:(病房号,床位号)→床位数,没有传递依赖,没有部分依赖,则此范式属于第三范式。 治疗表:(医生编号,病人编号)→病人情况,(医生编号,病人编号)→医嘱类型,(医生编号,病人编号)→遗嘱内容,(医生编号,病人编号)→治疗时间,有传递依赖,没有部分依赖,则此范式属于第三范式。 入住表:(病人编号,病房号,床位号)→住院时间,(病人编号,病房号,床位号)→出院时间,有传递依赖,没有部分依赖,则此范式属于第三范式。 6 物理结构设计 设计中所涉及的表有医生信息表doctor,病人信息表patinet,病房信息表sickroom,治疗情况信息表curecondition,入住信息表intake。 表6-1 doctor表 列名 数据类型 宽度 允许空值 说明 列名含义 Did Nchar 10 否 主键、唯一键 职工号 Dname Nchar 16 是 姓名 Dsex Nchar 1 是 男或女 性别 Dbirth Datetime 是 出生日期 Title Nchar 10 是 职称 Office Nchar 10 是 科室 表6-2 patinet表 列名 数据类型 宽度 允许空值 说明 列名含义 Pid Nchar 10 否 主键、唯一键 病人编号 Pname Char 16 是 姓名 Psex Nchar 1 是 男或女 性别 Pbirth Datetime 是 出生日期 Pmon Text 是 缴费情况 Pmoney Float 是 缴费金额 Illness Text 是 病症 表6-3 sickroom表 列名 数据类型 宽度 允许空值 说明 列名含义 Sid Nchar 10 否 主键 病房号 Sroomid Int 否 主键、check约束 床位号 Snum Nchar 10 是 Check约束 床位数 表6-4 curecondition表 列名 数据类型 宽度 允许空值 说明 列名含义 Did Nchar 10 否 主键、外键 医生编号 Pid Nchar 10 否 主键、外键 病人编号 Pcondition Text 是 病人情况 Ordertype Text 是 医嘱类型 Mcontent Text 是 医嘱内容 Curetime Datetime 是 治疗时间 表6-5 intake表 列名 数据类型 宽度 允许空值 说明 列名含义 Pid Nchar 10 否 主键、外键 病人编号 Sid Nchar 10 否 主键、外键 病房号 Sroomid Int 否 主键、外键 病床号 intaketime datetime 是 入住时间 Outtime datetime 是 Check约束 出院时间 7 数据库的实施、运行 完成物理结构设计之后,就要用DBMS提供的数据定义语言和其它实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS能够接受的源代码,再经过调试产生目标文件。 7.1创立数据库、建立表 经过以上结构设计,使用软件sql server ,经过sql语句创立数据库以及以上5个表。 7.1.1创立数据库yygl 创立数据库所用到的sql语句: CREATE DATABASE [yygl] ON PRIMARY ( NAME = N’yygl’, FILENAME = N’D:\库\yygl.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N’yygl_log’, FILENAME = N’D:\库\ yygl_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS 7.1.2创立医生表 在医生表中“医生编号”列建立主键约束,使每个医生编号只代表一名医生,“医生编号”不能为空值;在“性别”列上创立check约束,使“性别”属性的取值只能是‘男’或‘女’二者中的一个,不允许出现第三个;在“医生编号”列唯一性约束,保证职工号的唯一性。 创立医生信息表所用到的sql语句: CREATE TABLE [dbo].[doctor]( [did] [nchar](10) NOT NULL,[dname] [nchar](16) NULL, [dsex] [nchar](1) NULL,[dbirth] [datetime] NULL, [title] [nchar](10) NULL,[office] [nchar](10) NULL, CONSTRAINT [PK_doctor] PRIMARY KEY CLUSTERED ( [did] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],CONSTRAINT [uq_key] UNIQUE NONCLUSTERED ( [did] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] GO ALTER TABLE [dbo].[doctor] WITH CHECK ADD CONSTRAINT [CK_doctor] CHECK (([dsex]=’女’ OR [dsex]=’男’)) GO ALTER TABLE [dbo].[doctor] CHECK CONSTRAINT [CK_doctor] 7.1.3创立病人表 在病人表中“病人编号”列建立主键约束,是每一个病人编号都代表着一个病人,“病人编号”不能为空值;在“性别”列上创立check约束,使“性别”属性的取值只能是‘男’或‘女’二者中的一个,不允许出现第三个;在“病人编号”列唯一性约束,保证职工号的唯一性。 创立病人信息表所用到的sql语句: CREATE TABLE [dbo].[patinet]( [pid] [nchar](10) NOT NULL,[pname] [nchar](10) NULL, [psex] [nchar](1) NULL,[pbirth] [datetime] NULL, [pmon] [text] NULL,[pmoney] [float] NULL, [illness] [text] NULL, CONSTRAINT [PK_patinet_1] PRIMARY KEY CLUSTERED ([pid] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],CONSTRAINT [un_p] UNIQUE NONCLUSTERED ([pid] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[patinet] WITH CHECK ADD CONSTRAINT [CK_patinet] CHECK (([psex]=’女’ OR [psex]=’男’)) GO ALTER TABLE [dbo].[patinet] CHECK CONSTRAINT [CK_patinet] 7.1.4创立病房表 在病房表中“病房号”和“病床号”列建立联合主键约束,是每一个病房里的每一个床上只能住着一个病人,“病房号”和“病床号”不能为空值。“病床号”列创立check约束,使得病床号只能在1到3之间,“床位数”列创立check约束,使得床位数只能在1到3之间。 创立病房信息表所用到的sql语句: CREATE TABLE [dbo].[sickroom]( [sid] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [sroomid] [int] NOT NULL, [snum] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_sickroom] PRIMARY KEY CLUSTERED ([sid] ASC, [sroomid] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] GO ALTER TABLE [dbo].[sickroom] WITH CHECK ADD CONSTRAINT [CK_sickroom] CHECK (([snum]>=(1) AND [snum]<=(3))) ALTER TABLE [dbo].[sickroom] WITH CHECK ADD CONSTRAINT [CK_sickroom_1] CHECK (([sroomid]>=(1) AND [sroomid]<=(3))) 7.1.5创立治疗表 在治疗表中“医生编号”和“病人编号”列建立联合主键约束 “病人编号”和“病人编号”不能为空值;“病人编号”列与doctor表中“病人编号”列建立外键关系,表示两个表之间的联系;“病人编号”列月patinet表中“病人编号”列建立外键关系,表示两表之间的联系。 创立治疗情况信息表所用到的sql语句: CREATE TABLE [dbo].[curecondition]( [did] [nchar](10) NOT NULL,[pid] [nchar](10) NOT NULL, [pcondition] [text] NULL, [ordertype] [text] NULL, [mcontent] [text] NULL, [curetime] [datetime] NULL, CONSTRAINT [PK_curecondition] PRIMARY KEY CLUSTERED ([did] ASC,[pid] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) 、ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[curecondition] WITH CHECK ADD CONSTRAINT [FK_curecondition_doctor] FOREIGN KEY([did]) REFERENCES [dbo].[doctor] ([did]) GO ALTER TABLE [dbo].[curecondition] CHECK CONSTRAINT [FK_curecondition_doctor] GO ALTER TABLE [dbo].[curecondition] WITH CHECK ADD CONSTRAINT [FK_curecondition_patinet] FOREIGN KEY([pid]) REFERENCES [dbo].[patinet] ([pid]) GO ALTER TABLE [dbo].[curecondition] CHECK CONSTRAINT [FK_curecondition_patinet] 7.1.6创立入住表 在入住表中“病人编号”、“病房号”和“病床号”列建立主键约束,使每位病人在同一时间内只能有一次入院和出院时间,“病人编号”、“病房号”和“病床号”不能为空值;“病房号”和“病床号”列与sickroom表中“病房号”和“病床号”列建立外键关系,表示两个表之间的联系;“病人编号”列月patinet表中“病人编号”列建立外键关系,表示两表之间的联系。 创立入住信息表所用到的sql语句: CREATE TABLE [dbo].[intake]( [pid] [nchar](10) NOT NULL,[sid] [nchar](10) NOT NULL, [sroomid] [int] NOT NULL,[intaketime] [datetime] NULL, [outtime] [datetime] NULL, CONSTRAINT [PK_intake] PRIMARY KEY CLUSTERED ([pid] ASC,[sid] ASC,[sroomid] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY] GO ALTER TABLE [dbo].[intake] WITH CHECK ADD CONSTRAINT [FK_intake_patinet] FOREIGN KEY([pid]) REFERENCES [dbo].[patinet] ([pid]) GO ALTER TABLE [dbo].[intake] WITH CHECK ADD CONSTRAINT [FK_intake_sickroom] FOREIGN KEY([sid], [sroomid]) REFERENCES [dbo].[sickroom] ([sid], [sroomid]) GO ALTER TABLE [dbo].[intake] WITH CHECK ADD CONSTRAINT [CK_Time] CHECK (([intaketime]<=[outtime])) 在sql server 中写入以上代码执行,得到如下图7-1中的表。 图7-1 7.2创立视图 视图被看成是虚拟表,它并不表示任何物理数据,只是用来查看数据的视窗而已。视图作为一种数据库对象,为用户提供了一种检索数据表中数据的方式,用户能够经过视图浏览数据表中感兴趣的部分或全部数据。 7.2.1创立病人基本信息查询视图 为了方便查询病人的基本情况,比如查询病人的编号,姓名,性别,缴费情况,病症等,创立了一个基本视图。 创立视图所需要的sql语句: CREATE VIEW [dbo].[View_pcontent] AS SELECT pid, pname, psex, pmon, illness FROM dbo.patinet 7.2.2创立医生信息查询视图 为了方便查询医生信息,比如医生编号,姓名,所在科室,这位医生所治疗的病人编号,姓名,病人情况以及有有没有给她开医嘱等等,创立了一个基本视图。 创立视图所需要的sql语句: CREATE VIEW [dbo].[View_dcontent] AS SELECT dbo.doctor.did, dbo.doctor.dname, dbo.patinet.pid, dbo.patinet.pname, dbo.doctor.office, dbo.curecondition.pcondition, dbo.curecondition.mcontent FROM dbo.doctor INNER JOIN dbo.curecondition ON dbo.doctor.did = dbo.curecondition.did INNER JOIN dbo.patinet ON dbo.curecondition.pid = dbo.patinet.pid 7.2.3创立病人入院后情况信息查询视图 为了方便了解医生所治疗的病人的基本情况及医生所在科室等,创立一个视图。 创立视图所用到的sql语句: CREATE VIEW [dbo].[View_pincontent] AS SELECT dbo.patinet.pid, dbo.patinet.pname, dbo.sickroom.sid, dbo.sickroom.sroomid,dbo.intake.intaketime,dbo.intake.outtime FROM dbo.patinet INNER JOIN dbo.intake ON dbo.patinet.pid = dbo.intake.pid INNER JOIN dbo.sickroom ON dbo.intake.sid = dbo.sickroom.sid AND dbo.intake.sroomid = dbo.sickroom.sroomid 7.3创立索引 在数据库中为curecondition表建立基于did列和pid列的符合索引did_pid_index。 创立索引所用到的sql语句: create index did_pid_index on curecondition(pid,did) 图7-2 did_pid_index索引 7.4创立和执行存储过程 存储过程预编译并存储在数据库中的特性,不但能提高应用效率,确保一致性,更能提高系统执行速度。 7.4.1创立并执行插入数据存储过程 针对病人信息表patinet,创立一个存储过程p_proc2,执行该存储过程将向数据表patinet中插入一条数据,新纪录的值有参数提供。 创立存储过程所用到的sql语句: create proc p_proc2 (@id nchar(10),@nam nchar(10),@sex nchar(1),@birth datetime,@mon text,@money float,@ill text) as insert into patinet values(@id,@nam,@sex,@birth,@mon,@money,@ill) 创立完成后,插入一条数据: execute p_proc2 @id=’0014’,@nam=’吴丽丽’,@sex=’女’, @birth=’1985-5-14’,@mon=’已缴费’,@money=’1456’,@ill=’白血病’ 得到数据已加入到数据库中。 图7-3 插入数据结果 7.4.2创立并执行查询数据存储过程 针对病人信息表patinett,创立一个按照性别统计人数的存储过程p_proc3,要求输入性别值后,返回对应性别的病人数,但需保证其在每次被执行时都被重编译处理。 创立存储语句所用到的sql语句: create proc p_proc3 (@in_sex nchar(2),@out_num int output) with recompile as begin if @in_sex=’男’ select @out_num=count(psex) from patinet where psex=’男’ else select @out_num=count(psex) from patinet where psex=’女’ end 创立完成后,查询一下医院里住院的女病人的个数: declare @man_num int exec p_proc3 ‘女’,@man_num output select @man_num 得到如下图7-4所示的结果: 图7-4 7.5创立触发器。 触发器是一种专用类型的存储过程,它被绑定到数据表或者视图上,经过事件进行触发。触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。 7.5.1创立insert触发器 针对病人信息表patinet,创立一个触发器p_tri1,当向表patinet中插入一条记录时,自动显示表patinet中的记录。 创立触发器所用到的sql语句: create trigger p_tri on patinet for insert as select * from patinet insert into patinet values(‘0015’,’艾静’,’女’,’1988-6-2’,’已缴费’,’1586’,’坏死’) 运行语句得到的结果如下图7-5显示在结果栏中: 图7-5 7.5.2创立update触发器 针对病人信息表patinet,创立一个触发器p_tri2,该触发器将在修改时被触发,该触发器不允许修改表的did列。 创立触发器所用到的sql语句: create trigger p_tri2 on patinet for update as if update(pid) begin raiserror (‘您不能修改病人编号,否则会造成记录混乱',10,1) rollback transaction end 修改0001号病人的编号为0019,输入一下sql语句: update patinet set pid='0019' where pid='0001' 得到如下图7-6所示的消息: 图7-6 7.6表中添加信息 将医院中的信息填入到各个表中。 图7-7 Doctor表 图7-8 Patinet表 图7-9 sickroom表 图7-10 Curecondition表 图7-11 Intake表 图7-12 View_dcontent视图信息表 图7-13 View_pcontent视图信息表 图7-14 View_pincontent视图信息表 7.7 进行系统维护 对系统地维护表现在对表中的数据进行增删改的操作。 7.7.1查询病人信息 医生治疗病人之后借此查询一下病人的治疗情况,能够使用下列sql语句: select treatment from cure where pno='01' 得出病人的治疗情况为良好,如图7-15。 图7-15 7.7.2 删除病人信息 医生治疗病人后查询治疗良好,病人就能够出院,出院之后就能够删除病人信息。 删除信息所用到sql语句: delete from patinet where pno='11' 如此一来就删除掉了11号病人的基本信息。 8 结论 一个月的课程设计结束了,在这次的课程设计中不但检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习,相互监督。 9 学习体会 在这次设计过程中,体现出自己单独设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 参考文献: [1] 赵杰.毕业设计指导及案例剖析.数据库应用方向.北京:清华大学出版社, . [2] 王珊, 萨师煊.数据库系统概论[M] .北京:高等教育出版社, . [3] 壮志剑.数据库原理与SQL Server[M].北京:高等教育出版社, . [4] 黄维通.SQL Server 数据库的技术与应用[M].北京:清华大学出版社, . [5] 岳付强.SQL Server 从入门到实践[M].北京:清华大学出版社, . [6] 周爱武,汪海威,肖云.数据库课程设计[M] . 北京:机械工业出版社, . [7] 郭江峰.SQL Server 数据库技术与应用[M].北京:人民邮电出版社, . [8]应宏.数据库原理实验[M].北京:西南师范大学出版社, . 致 谢 在此感谢我们的冯春辉老师,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;冯老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次课程设计的每个实验细节和每个数据,都离不开冯老师的细心指导。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服