数据库医院住院部信息管理系统.docx
- 文档编号:28685313
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:19
- 大小:407.47KB
数据库医院住院部信息管理系统.docx
《数据库医院住院部信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库医院住院部信息管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
数据库医院住院部信息管理系统
数据库医院住院部信息管理系统
医院住院部信息管理系统
分析报告
1前言
选题理由和实际意义
医学科技水平的日益进步,患者对各种医疗机构所提供的医疗服务质量也提出了越来越高的要求。
住院处的管理服务水平是直接体现医院服务质量的一个重要窗口,往往更是医院中出现问题和漏洞最多的部门。
在传统的人工管理和计算机单纯记帐模式下,住院处工作人员每天大部分工作时间都在进行开具单据、登记帐簿、收付现金,查找登记各种档案材料。
大量的汇总核算及报表工作只能在每日大部分工作相对完成时和月末集中进行,不但数据量大且极易发生差错。
这种方式下住院处与其他部门是以静态的方式来进行信息交流,他们之间的互相对帐、协同工作根本无从进行,结果造成责权不分明,业务与管理脱节。
住院管理系统应当是一个基于财务的软件,由于管理信息化的发展,一般性的财务软件已不能满足医院的要求,财务软件开始向着企业软件的方向发展。
应用医院管理信息系统是我国医疗卫生体制改革的需要。
医院信息系统建设目标定位在利用信息技术手段,为医护人员、医院管理者和患者提供信息服务支持,实现提高医疗服务水平,保障医疗服务质量,控制医疗费用增长的目标要求。
通过推进医院临床和医院管理信息系统建设,降低医疗服务工作中的错误和减轻医生和护理人员的重复性劳动,使临床医生能及时获取完整准确的患者信息,能更集中精力,提高医疗服务水平,提高医疗服务质量和效率。
医院科学化管理是提高医院核心竞争力的关键,在面对日益加剧的市场竞争环境下,医院不可能再依赖开大处方和增加患者住院天数和检查次数的方法生存和发展,同时,医院科学化管理需要利用技术手段,实现对医生服务质量和医院工作效率的绩效评估体系。
国内外关于该课题的研究现状及趋势
住院部管理系统(HospitalInformationSystem,HIS)在国际学术界已经被公认为新兴的医学信息学(MedicalInformation)的重要分支。
美国该领域的着名教授MorrisCollen于1988年曾着文为医院信息系统下了如下定义:
利用电子计算机和通讯设备,为医院所属各部门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换的能力,并满足所有授权用户的功能需求。
经过多年的发展,如今类似医院信息系统这样的企业级应用软件不仅能提供静态的信息和交互式的动态信息服务,还能提供应用程序的基础设施服务(如安全、事务、传输、缓冲、生存期管理等),目前这样的软件所采用N层结构进行构建,N层结构的优点是每一层可以被单独改变,而不影响到其它层,降低了部署与维护的开销。
建立一个高效可靠的住院业务管理系统,不仅可以在一定程度上减轻医务人员的劳动强度,提高工作效率和工作质量,而且可以更及时、准确和有效地分析统计各种临床数据及管理数据,供上级主管部门作出科学的管理决策,促进医院管理水平的进一步提高。
而在整个住院业务管理系统,住院数据库的设计是必不可少的。
该数据库用于存储、管理病人本身的信息和病历信息,及住院期间的费用信息,同时对于医院职工的信息管理和各种药品、设备的管理等。
2需求分析
本系统的最终用户为医院住院部,我们根据从医院方面取得的图表资料、文字资料以及其他细节方面的信息,根据我们日常生活中的经验,根据我们所做的其他询问和调查,得出用户的下列实际要求:
住院部下设若干科室,如内科、外科、皮肤科等,各科室都有相应的医生、护士,完成所承担的医疗工作,医生又有主治医师,普通医师之分。
为了支持住院部部门的工作,医院还设置了药库,药库负责药品的贮存、发放和采购;中心药房负责住院病人的药品管理,包括根据处方及医嘱生成领药单,向药库领药,配药并把药品发给相应的病区,以及药房的库存管理和病区余药回收;门诊药房负责门诊病人的药品管理,包括根据处方,按处方内容备药。
当病人接到医生的建议需住院治疗或接到医院的入院通知单后,需到住院处办理入院手续,需要登记基本信息,并交纳一定数额的预交款或住院押金。
住院手续办理妥当之后,由病区科室根据病人所就诊的医科给病人安排床位,将病人的预交款信息录入病进行相应的维护和管理,病区科室还应按照医生开出的医嘱执行,医嘱的主要内容包括病人的用药,检查申请或检验申请。
病区科室应将医嘱中病人用药的部分分类综合统计,形成药品申领单,统一向药库领药,然后将药品按时按量发给住院病人,需对发药情况进行记录,并对所领取的药品进行统一的管理。
病区科室应将医嘱中的检查或检验申请单发给检查科室或检验科室,当相应的科室将申请进行处理并将检查通知发给病区科室后,由病区科室通知病人进行相应的检查或检验。
药库对于药品申领单的处理和对药品的管理,检查科室和检验科室对于申请、检查以及相应的管理工作与门诊中的部分相同。
当病人需要手术时,首先由病区科室将手术申请提交给手术室,由手术室安排手术日程,进行材料、器械的准备,当准备妥当后,手术室将手术通知发给病区科室,由病区科室通知并安排病人进入手术室,手术室需将手术中的麻醉记录,术中医嘱,材料、器械的使用记录在案。
当病人可以出院时,应先在病区科室进行出院登记,办理出院,然后在住院处办理出院手续,即可出院。
3系统设计
定义
(1)、系统名称:
医院住院部信息管理系统
(2)、数据库管理软件:
MicrosoftSQLServer
(3)、数据库设计采用软件:
MicrosoftOfficeVisio2003
(4)、系统采用C/S体系结构:
Client(客户端)负责提供表达逻辑、显示用户界面信息、访问数据库服务器;Server(服务器)端用于提供数据服务。
(5)、运行平台:
windows2000/xp/linux。
系统模块图
系统的核心是对住院信息的管理。
查询功能也是系统的基本功能。
为了实现医院住院部信息管理系统,方便用户和管理与需求,将医院住院部信息管理系统分为:
医生管理,病人管理,病房管理,系统维护四个功能模块,如下图3-1。
图3-1住院部信息管理系统结构图
3.2.1关系模型转化
医生表(医生编号,姓名,性别,出生日期,职称,科室)
病人表(病人编号,姓名,性别,出生日期,缴费情况,缴费金额,病症)
病房表(病房号,床位号,床位数)
治疗表(医生编号,病人编号,病人情况,医嘱类型,医嘱内容,治疗时间)
入住表(病人编号,病房号,床位号,住院时间,出院时间)
3.2.2确定函数依赖、属于第几范式
医生表:
医生编号→姓名,医生编号→姓别,医生编号→出生日期,医生编号→职称,医生编号→科室,没有传递依赖,没有部分依赖,则此范式属于第三范式。
病人表:
病人编号→姓名,病人编号→姓别,病人编号→出生日期,病人编号→缴费情况,病人编号→缴费金额,病人编号→病症,。
没有传递依赖,没有部分依赖,则此范式属于第三范式。
病房表:
(病房号,床位号)→床位数,没有传递依赖,没有部分依赖,则此范式属于第三范式。
治疗表:
(医生编号,病人编号)→病人情况,(医生编号,病人编号)→医嘱类型,(医生编号,病人编号)→遗嘱内容,(医生编号,病人编号)→治疗时间,有传递依赖,没有部分依赖,则此范式属于第三范式。
入住表:
(病人编号,病房号,床位号)→住院时间,(病人编号,病房号,床位号)→出院时间,有传递依赖,没有部分依赖,则此范式属于第三范式。
ER图
在需求分析阶段所得到的用户需求抽象为信息结构即概念结构模型的过程就是概念结构设计。
它是整个数据库设计的关键。
这个部分的关键是设计,一般根据系统要求,画出能反映本系统每个应用需求的E-R图。
其中包括五个实体即医生实体、病人实体、病房实体、治疗实体、入住实体,以及一些实体与属性之间的联系。
然后对初始的E-R图进行优化,消除冗余和可能存在的矛盾。
根据需要得到一个基本的E-R图,如下图3-2所示:
图3-2医院住院部信息管理系统整体E-R图
数据表的设计
表3-1医生信息表
列名
数据类型
宽度
允许空值
说明
列名含义
Did
Nchar
10
否
主键、唯一键
职工号
Dname
Nchar
16
是
姓名
Dsex
Nchar
1
是
男或女
性别
Dbirth
Datetime
是
出生日期
Title
Nchar
10
是
职称
Office
Nchar
10
是
科室
表3-4病患信息表
列名
数据类型
宽度
允许空值
说明
列名含义
Pid
Nchar
10
否
主键、唯一键
病人编号
Pname
Char
16
是
姓名
Psex
Nchar
1
是
男或女
性别
Pbirth
Datetime
是
出生日期
Pmon
Text
是
缴费情况
Pmoney
Float
是
缴费金额
Illness
Text
是
病症
表3-5病房信息表
列名
数据类型
宽度
允许空值
说明
列名含义
Sid
Nchar
10
否
主键
病房号
Sroomid
Int
否
主键、check约束
床位号
Snum
Nchar
10
是
Check约束
床位数
表3-6病患治疗信息表
列名
数据类型
宽度
允许空值
说明
列名含义
Did
Nchar
10
否
主键、外键
医生编号
Pid
Nchar
10
否
主键、外键
病人编号
Pcondition
Text
是
病人情况
Ordertype
Text
是
医嘱类型
Mcontent
Text
是
医嘱内容
Curetime
Datetime
是
治疗时间
表3-7病患入住信息表
列名
数据类型
宽度
允许空值
说明
列名含义
Pid
Nchar
10
否
主键、外键
病人编号
Sid
Nchar
10
否
主键、外键
病房号
Sroomid
Int
否
主键、外键
病床号
intaketime
datetime
是
入住时间
Outtime
datetime
是
Check约束
出院时间
用例列举
3.5.1创建数据库、建立表
经过以上结构设计,使用软件sqlserver2005,通过sql语句创建数据库以及以上5个表。
(1)创建数据库yygl
创建数据库所用到的sql语句:
CREATEDATABASE[yygl]ON
PRIMARY
(NAME=N’yygl’,FILENAME=N’D:
\库\’,SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N’yygl_log’,FILENAME=N’D:
\库\’,SIZE=1024KB,MAXSIZE=2048GB,FILEGROWTH=10%)
COLLATEChinese_PRC_CI_AS
(2)创建医生表
在医生表中“医生编号”列建立主键约束,使每个医生编号只代表一名医生,“医生编号”不能为空值;在“性别”列上创建check约束,使“性别”属性的取值只能是‘男’或‘女’二者中的一个,不允许出现第三个;在“医生编号”列唯一性约束,保证职工号的唯一性。
创建医生信息表所用到的sql语句:
CREATETABLE[dbo].[doctor](
[did][nchar](10)NOTNULL,[dname][nchar](16)NULL,
[dsex][nchar]
(1)NULL,[dbirth][datetime]NULL,
[title][nchar](10)NULL,[office][nchar](10)NULL,
CONSTRAINT[PK_doctor]PRIMARYKEYCLUSTERED
([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]UNIQUENONCLUSTERED
([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
ALTERTABLE[dbo].[doctor]WITHCHECKADDCONSTRAINT[CK_doctor]CHECK(([dsex]=’女’OR[dsex]=’男’))
GO
ALTERTABLE[dbo].[doctor]CHECKCONSTRAINT[CK_doctor]
(3)创建病人表
在病人表中“病人编号”列建立主键约束,是每一个病人编号都代表着一个病人,“病人编号”不能为空值;在“性别”列上创建check约束,使“性别”属性的取值只能是‘男’或‘女’二者中的一个,不允许出现第三个;在“病人编号”列唯一性约束,保证职工号的唯一性。
创建病人信息表所用到的sql语句:
CREATETABLE[dbo].[patinet](
[pid][nchar](10)NOTNULL,[pname][nchar](10)NULL,
[psex][nchar]
(1)NULL,[pbirth][datetime]NULL,
[pmon][text]NULL,[pmoney][float]NULL,
[illness][text]NULL,
CONSTRAINT[PK_patinet_1]PRIMARYKEYCLUSTERED
([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]UNIQUENONCLUSTERED
([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
ALTERTABLE[dbo].[patinet]WITHCHECKADDCONSTRAINT[CK_patinet]CHECK(([psex]=’女’OR[psex]=’男’))
GO
ALTERTABLE[dbo].[patinet]CHECKCONSTRAINT[CK_patinet]
(4)创建病房表
在病房表中“病房号”和“病床号”列建立联合主键约束,是每一个病房里的每一个床上只能住着一个病人,“病房号”和“病床号”不能为空值。
“病床号”列创建check约束,使得病床号只能在1到3之间,“床位数”列创建check约束,使得床位数只能在1到3之间。
创建病房信息表所用到的sql语句:
CREATETABLE[dbo].[sickroom](
[sid][nchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[sroomid][int]NOTNULL,
[snum][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_sickroom]PRIMARYKEYCLUSTERED
([sid]ASC,[sroomid]ASC)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]
GO
ALTERTABLE[dbo].[sickroom]WITHCHECKADDCONSTRAINT[CK_sickroom]CHECK(([snum]>=
(1)AND[snum]<=(3)))
ALTERTABLE[dbo].[sickroom]WITHCHECKADDCONSTRAINT[CK_sickroom_1]CHECK(([sroomid]>=
(1)AND[sroomid]<=(3)))
(5)创建治疗表
在治疗表中“医生编号”和“病人编号”列建立联合主键约束“病人编号”和“病人编号”不能为空值;“病人编号”列与doctor表中“病人编号”列建立外键关系,表示两个表之间的联系;“病人编号”列月patinet表中“病人编号”列建立外键关系,表示两表之间的联系。
创建治疗情况信息表所用到的sql语句:
CREATETABLE[dbo].[curecondition](
[did][nchar](10)NOTNULL,[pid][nchar](10)NOTNULL,
[pcondition][text]NULL,[ordertype][text]NULL,
[mcontent][text]NULL,[curetime][datetime]NULL,
CONSTRAINT[PK_curecondition]PRIMARYKEYCLUSTERED
([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
ALTERTABLE[dbo].[curecondition]WITHCHECKADDCONSTRAINT[FK_curecondition_doctor]FOREIGNKEY([did])
REFERENCES[dbo].[doctor]([did])
GO
ALTERTABLE[dbo].[curecondition]CHECKCONSTRAINT[FK_curecondition_doctor]
GO
ALTERTABLE[dbo].[curecondition]WITHCHECKADDCONSTRAINT[FK_curecondition_patinet]FOREIGNKEY([pid])
REFERENCES[dbo].[patinet]([pid])
GO
ALTERTABLE[dbo].[curecondition]CHECKCONSTRAINT[FK_curecondition_patinet]
(6)创建入住表
在入住表中“病人编号”、“病房号”和“病床号”列建立主键约束,使每位病人在同一时间内只能有一次入院和出院时间,“病人编号”、“病房号”和“病床号”不能为空值;“病房号”和“病床号”列与sickroom表中“病房号”和“病床号”列建立外键关系,表示两个表之间的联系;“病人编号”列月patinet表中“病人编号”列建立外键关系,表示两表之间的联系。
创建入住信息表所用到的sql语句:
CREATETABLE[dbo].[intake](
[pid][nchar](10)NOTNULL,[sid][nchar](10)NOTNULL,
[sroomid][int]NOTNULL,[intaketime][datetime]NULL,
[outtime][datetime]NULL,
CONSTRAINT[PK_intake]PRIMARYKEYCLUSTERED
([pid]ASC,[sid]ASC,[sroomid]ASC)
WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY])ON[PRIMARY]
GO
ALTERTABLE[dbo].[intake]WITHCHECKADDCONSTRAINT[FK_intake_patinet]FOREIGNKEY([pid])
REFERENCES[dbo].[patinet]([pid])
GO
ALTERTABLE[dbo].[intake]WITHCHECKADDCONSTRAINT[FK_intake_sickroom]FOREIGNKEY([sid],[sroomid])
REFERENCES[dbo].[sickroom]([sid],[sroomid])
GO
ALTERTABLE[dbo].[intake]WITHCHECKADDCONSTRAINT[CK_Time]CHECK(([intaketime]<=[outtime]))
3.5.2触发器
触发器是一种专用类型的存储过程,它被绑定到数据表或者视图上,通过事件进行触发。
触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。
(1)创建insert触发器
针对病人信息表patinet,创建一个触发器p_tri1,当向表patinet中插入一条记录时,自动显示表patinet中的记录。
创建触发器所用到的sql语句:
createtriggerp_tri
onpatinet
forinsert
as
select*frompatinet
insertintopatinetvalues(‘0015’,’艾静’,’女’,’1988-6-2’,’已缴费’,’1586’,’坏死’)
(2)创建update触发器
针对病人信息表patinet,创建一个触发器p_tri2,该触发器将在修改时被触发,该触发器不允许修改表的did列。
创建触发器所用到的sql语句:
createtriggerp_tri2
onpatinet
forupdate
as
ifupdate(pid)
begin
raiserror(‘您不能修改病人编号,否则会造成记录混乱',10,1)
rollbacktransaction
end
修改0001号病人的编号为0019,输入一下sql语句:
updatepatinetsetpid='0019'wherepid='
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 医院 住院部 信息管理 系统