文件名称:病人资料管理系统
文件大小:3MB
文件格式:MDF
更新时间:2015-05-15 09:50:10
病人资料 数据库
一、数据库的背景及功能需求 进入21世纪以来,计算机的普及应用和信息技术、网络技术的发展给人们的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本,提高工作效率的首选。 相比之下,国内的相当数量的中小型医院的病人资料工作流程还采用相对保守的人工工作方式,数据信息的查询和存储的成本较高,而且效率还很低下。所以需要一种对于医院的病人资料管理系统来高效、低成本、便捷的进行医院病人信息数据的查询和存储。 1. 病人的相关信息应该由医院数据库管理员进行添加、删除、修改、查询等维护操作。 2. 需通过病人所患的疾病来确定病人的治疗 3. 对病人的编号、出生日期、性别、工作、住址信息进行查询。 4. 对病人的治疗进程,缴费情况等进行及时的更新与统一管理。 5. 医院需通过治疗结果来查看病人是否结束治疗,以进行必要的及时续约等行为。 6. 病人可通过数据库进行对所交费用,治疗情况的相关信息进行查看。 7. 病人信息的更新等等由数据库管理员进行维护。 系统功能的基本功能: 1病人信息包含编号,姓名,性别,出生日期,工作单位及地址,住址,工作,保险,医保号,电话,邮箱,死亡日期。 2交费项目信息包含项目序号,项目类型,缴费金额等 3回访记录包含住院号,病人编号,回访日期,回访人,记录,生命体征。 4 可通过对数据库的查询了解病人的相关信息,以及病情,并确定治疗方案。 所有关系模式都属于BC范式 (1)在关系模式patient中patientID是主键,所以在包含属性patientID的函数依赖是一个superkey。 (2)在关系模式中inpatient中number为主键,所以在所包含属性number的函数依赖是一个superkey。 (3)在关系模式outpatient中patientID为主键,所以包含patientID的函数依赖是一个superkey。 (4)在关系模式bed中number是主键,所以包含patientID的函数依赖是一个superkey。 (5)在关系模式department中depname是主键,所以在包含属性depname的函数依赖是一个superkey。 (6)在关系模式中re_call中number为主键,所以在所包含属性number的函数依赖是一个superkey。 (7)在关系模式case中caseID为主键,所以包含caseID的函数依赖是一个superkey。 (8)在关系模式charge1中chargeID是主键,所以包含chargeID的函数依赖是一个superkey。 (9)在关系模式charge2中chargeID是主键,所以在包含属性chargeID的函数依赖是一个superkey。 (10)在关系模式中inotice中inoticeID为主键,所以在所包含属性inoticeID的函数依赖是一个superkey。所以一定属于BCNF。 二、数据库的概念结构设计 病人资料管理系统的E-R模型 三、数据库的物理结构设计 住院病人inpatient 列名 数据类型 字段长度 字段描述 备注 Number Bigint 住院号 主键 patientID bigint 病人编号 非空,外码 Name Bigint 姓名 Inday Datetime 入院时间 Bedroom char 4 床号 Sort varchar 20 入院科别 病人信息表patient 列名 数据类型 长度 字段描述 备注 patientID bigint 病人编号 主键 Name varchar 20 姓名 不能为空 Sex char 4 性别 Birth datetime 出生日期 Dep varchar 40 单位 Depadd varchar 60 单位地址 address varchar 60 住址 Work varchar 10 工作 在职、离休、退休 Insure char 4 医保 insnumb varchar 30 医保号 有、无,不为空 Tel varchar 10 电话 Email varchar 50 E-mail deathday varchar 20 死亡日期 门诊病人表outpatient 列名 数据类型 字段长度 字段描述 备注 patientID Bigint 病人编号 主键 Jz_date Varchar 20 就诊时间 Pay varchar 10 缴费情况 病人就诊花费 Name varchar 20 姓名 非空 Sex char 10 性别 Age Int 年龄 床位bed 列名 数据类型 字段长度 字段描述 备注 Number Bigint 住院号 主键 Name Varchar( 20 姓名 非空 Bedroom bigint 床号 Doctor Varchar 20 主治医生 主管本床位的医生姓名 Result Varchar 20 治疗结果 Department varchar 20 所属病区 病区department 列名 数据类型 字段长度 字段描述 备注 Depname varchar 10 病区名称 主键 Bedamount bigint 病床数 Responsor varchar 20 负责人姓名 非空 Inpeople bigint 入住人数 Wellpor real 好转率 Death real 、 死亡率 回访re_call 列名 数据类型 长度 字段描述 备注 Number bigint 序号 主键,自动产生 patientID bigint 病人编号 不为空 Callday varchar 20 回访时间 Callbody varchar 20 回访人 Record varchar 500 回访记录 Life char 8 生命特征 死亡 门诊病历ccase 列名 数据类型 字段长度 字段描述 备注 caesID Bigint 病历号 主键 Name Varchar 20 姓名 非空 Context Varchar 60 病例内容 Diadate datetime 诊断时间 Doctor Varchar 20 主治医生 联系 支付2pay2 列名 数据类型 字段长度 字段描述 备注 PatientID bigint 病人编号 主键 chargeID Bigint 支付项目号 主键 Amount varchar 20 payDate datetime 支付时间 收费项目2charge2 列名 数据类型 字段长度 字段描述 备注 chargeID bigint 项目序号 主键 Chargesort Varchar 20 项目类型 Amount Varchar 10 收费金额 Name Varchar 20 病人姓名 Operator Varchar 20 收款员 收费项目1charge1 列名 数据类型 字段长度 字段描述 备注 chargeID bigint 项目序号 主键 Name Varchar 20 病人姓名 number bigint 住院号 外码 category Varchar 10 收费类型 chargeday datetime 收费日期 opertor varchar 20 收款人 Amount Varchar 10 应收金额 payamount Char 10 交费金额 入院通知单inotice 列名 数据类型 字段长度 字段描述 备注 inoticeID bigint 通知单号 主键 doctor varchar 20 医师姓名 非空 Name varchar 20 病人姓名 非空 PatientID bigint 病人编号 外码 Diagadvice varchar 40 诊断建议 Pay varchar 20 收费情况 Pass Char 4 是否批准 是 否。非空 关系及各属性 Patient(patientID,name,sex,birth,dep,depadd,address,work,insure,insnumb,tel,email,deathday) Inpatient(number,patientID,name,inday,sort,bedroom) Outpatient(patientID,name ,sex,age,jz_date,pay) Bed(number,name,bedroom,doctor,result,department,empty) Department(depname,bedamount,responsor,inpeople,wellpor,,deathpor) Re_call(number,patientID,callday,life,record,callbody) Case(caseID,name,context,diadate,doctor) Charge2(chargeID,chargesort,amount,name,operator) Charge1(chargeID,category,name ,number,chargeday,payamount,amount) inotice(inoticeID,doctor,name,patientID,diaadvice,pay,pass) 联系 Pay2(patientID,amount,paydate,chargeID) 触发器 1提醒触发器 create trigger reminder on patient after insert,update as raiserror('你在插入或修改病人的数据',16,10); 2.更新操作的触发器 create trigger hehe on outpatient for update as begin update outpatient set pay=pay*0.9 end 存储过程 1病人信息插入的存储过程 create procedure patientInsert ( @patientID bigint, @name varchar(20), @sex char(4), @birth datetime, @dep varchar(40), @depadd varchar(60), @address varchar(60), @work varchar(10), @insure char(4), @insnumb varchar(30), @tel varchar(15), @email varchar(50), @deathday datetime ) as insert into patient( name,sex ,birth ,dep,depadd ,address ,work ,insure,insnumb ,tel ,email ,deathday ) values(@name,@sex ,@birth ,@dep,@depadd ,@address ,@work ,@insure,@insnumb ,@tel ,@email ,@deathday ) 2 住院病人信息插入的存储过程 create procedure inpatientInsert ( @number bigint, @patientID bigint, @name varchar(20), @inday datetime, @sort char(20), @bedroom char(4) ) as insert into inpatient( number,patientID ,name ,inday ,sort ,bedroom ) values( @number ,@patientID ,@name ,@inday ,@sort ,@bedroom ) 索引 1 use hospital_patient create unique nonclustered index inpatient_name on inpatient ( name ) 2 use hospital_patient create nonclustered index charge_amount on charge1 ( amount desc )