资源描述
HIS医疗管理系统
目录
HIS医疗管理系统 1
1、 绪论 3
1、1 系统开发背景 3
1、2简述 4
1、3 系统得基本构成 4
2、 需求分析 6
2、1 门诊医疗简介 6
2、2 主要业务数据流程分析 7
2、2、1 门诊挂号 7
2、2、2门诊就医 8
2、2、3门诊收费 9
2、2、4 门诊药房发药 9
2、2、5 门诊药房管理 10
2、3、1 功能用例模型 10
2、3、2整体E-R图 12
3、系统设计 14
3、1系统模块结构设计 14
3、2数据库设计 18
1、 绪论
1、1 系统开发背景
门诊医疗就是医院管理得门面,流量大,手续较繁锁,在手工方式下,医护人员要做大量不必要得重复工作、效率低、准确性差、不方便管理,影响工作效率,造成了很多就诊病人得不到合理有效得快捷就诊服务,甚至影响医疗质量,为此,越来越多得医院加快了信息化建设得步伐,系统目前运行状况良好,有效地优化服务与工作环境、使病员与医生情绪得以放松,提高了服务效率与质量、树立了医院得良好形象,使门诊工作可以高效有序得运转,提高了医院得经济效益,促进医院得发展。
开发工具:C# VS2013 SQL2008(MySQL)
开发者: XXXXXXX
1、2简述
系统采用流行得C/S结构模式。系统得分析设计采用面向对象得技术,用Visio等工具进行辅助设计。
1、3 系统得基本构成
门诊部医疗信息管理系统主要就是对医院门诊部挂号与收费,药房以及医生就诊进行管理。
主要功能模块:
导医服务模块
医师服务模块
药房服务模块
门诊统计模块
基本设置模块
首先导医服务作为医院面对病人得第一个门面,主要就是针对给病人登记:登记病人得一些基本信息;病人预约:预约医生,科室,时间;病人挂号,前台交费;药品退费:某些不需要得要进行退款;欠费催款;评价管理:对就诊得医生进行评价。
医师服务得主要功能就是通过病人得先主诉病情,然后对病人进行诊治,给病人进行检查,可以查询病人得历史信息;给病人开处方,添加病人检查与检验得信息,对病人得处方进行退药,打印诊断书,打印医令。
对于药房服务主要功能就是对医院得药品进行入出库进行管理,对库存中得药品进行盘点与审核与对药品得增加与修改,对医生得开得药方进行确认并发放,对那些已经退掉得药重新入库。
门诊统计对一天得门诊量与费用得统计,也可以按照科室来进行查询。
基本设置主要就是对检验信息设置,检查信息得设置,对科室得增删改差,
员工得值班设置。以及会员卡得设置。
2、 需求分析
2、1 门诊医疗简介
门诊病人来院后,首先挂号,然后到医生处就诊,医生可能会开具检查单、化验单,病人交费后进行相关得检查与化验,其结果能支持医生判断病情,此时,医生开出治疗单、处方等,病人交费后接受相应处理。
(1)挂号
预约挂号、来医院挂号、急症、医疗卡服务、就诊卡得设计与管理、所挂科目、科室得位置、挂号收费、登记。
(2)就诊(包括检查)
根据具体得症状进行检查、就诊,并开出处方。
(3)收费
①根据检查得项目及医生所开处方得具体药品,与划价系统中得具体金额进行收费。
②支持多种收费方式、收费标准、收费项目、付款比例适应医院对不同病人得服务要求
③提供与门诊收费相关得各类报表
④提供门诊医疗统计、门诊科室及工作人员部分核算数据与工作量统计。
⑤结帐方法灵活安全。
(4)发药
①药房根据处方,检查药房内就是否有足够得药方上需要得药,就是否需要去药房去取以补足货源。
②可以根据药品得限期及库存下限来来进行缺药、失效预告、对药品进行数量、金额双重控制。
③核对已收费处方无误后予以配药、发药处理。
④支持病人处方得退药处理,并增加门诊药房库存。
(5)药品管理
①各药房以药库为中心,请领药品、入库、调价。
②发药后减去门诊药房库存。
2、2 主要业务数据流程分析
2、2、1 门诊挂号
病人首先可以预约挂号;到医院挂号后,病人有没有磁卡,有先读取磁卡得信息;为病人选择科室,病人选择选择医生得级别,医院为该病人指派医生,对该病人收取挂号费用,登记挂号信息。如图2-1所示:
2、2、2门诊就医
病人挂号到指定医生就诊,医生询问病人就是否就是复诊或者初诊(复诊得话查询病人得历史就诊信息);病人向医生叙述病情,医生记录病情与病历;医生对病人阐述得病情给与诊断,诊断然后给病人开药(配置禁忌检查,询问病人同意否,同意得话给病人写电子病历);需要做化验、检查,给该病人开申请单,病人拿着医生开出得药品单;化验、手术、检查、、住院申请单到收费处缴费,缴完费用后到拿着单据到门诊药房取药;化验室、检查室做化验与检验;如图2-2所示:
2、2、3门诊收费
门诊收费就是对病人在门诊就医时所有得费用都在此处缴纳。接受病人得交费单据,对病人费用进行收费。收费后打印发票,给病人一张收费单据。费用每日结算后打入财务科。如图2-3所示:
2、2、4 门诊药房发药
药房根据处方,检查药房内就是否有足够得药房上需要得药,就是否需要去药房去补足货源;根据药品得限期及库存下限来进行缺药、失效预告、对药品进行数量、金额双重控制;核对已收费处方无误后给与病人配药、发药处理。如图2-4所示:
2、2、5 门诊药房管理
对门诊药房得药品出入库进行操作登记。对门诊挂号得病人需要用药时,需要医生开出得处方单取药,如需退药,需要申请,说明退药得原因,在得到审核通过后方可进行退药操作。保证药品得及时供应,不耽误病人得病情,通过对各种药品得入库及出库情况进行详细得登记,保证不断药,药品得质量安全。如图2-5所示:
2、3、1 功能用例模型
2、3、2整体E-R图
一个病人只有一张病历且一张病历只能属于一个病人;一个病人一次(由时间确定)只有一张挂号单,一张挂号单只能属于一个病人;一个病人由一个医师进行诊断与开处方(处理简单),一个医师可以接诊很多病人与为其开处方;一个病人只有一张处方,一张处方只能属于一个病人;一个病人可以进行多项检查,一项检查也可以进行诊断多个病人; 一个病人可以有多个收费项目与收据,但一项收费项目或收据只能对应一个病人;收费项目与收据就是多对多关系;一份处方可以对应多种药品,一种药品可以包含在多份处方里;药房对其她各实体得一对多得联系;整体E-R图如图2-7所示:
3、系统设计
3、1系统模块结构设计
医院门诊医疗管理可以分为:门诊挂号管理模块,门诊收费管理模块,药房管理模块,门诊医生模块四大部分。结构图如图3-1所示:
查
询
收费查询
查询
门诊医疗管理系统 统
门诊挂号管理
药房管理
门诊收费管理
门诊挂号
统计
发票管理
统计
收费
取药管理
统计
盘点
出入库管理
医生工作站
退改处方
门诊医生模块
病人信息查询
图3-1系统模块结构图
各模块得基本功能如下:
(1)门诊挂号管理基本功能。
①门诊挂号
门诊挂号:病人进行挂号收费处理。输入病人得信息:姓名、性别、年龄;挂号类别、挂号科室;挂号得金额,就是否优惠。点击确定,保存该病人挂号得信息。
挂号修改:挂号员对病人挂号得信息进行修改收费;输入病人得挂号编号,对病人得挂号信息进行修改后,点击修改,进行收费结算。
挂号预约:病人预先进行网络或者电话预交挂号。输入预约病人得信息:预就诊日期、预约科室、预约医生、病人姓名、性别、出生日期、病情说明、预约人、联系方式、预约方式;点击预约保存预约病人得信息。
挂号日结:对门诊每一天挂号得费用进行结算。
②查询
挂号查询:按照挂号日期、挂号编码、挂号有效期、姓名、性别、年龄;病人类型、挂号类别、挂号科室,挂号员、等对病人挂号得信息进行查询。
预约查询:通过查询列得分类对预约得病人进行查询。
交款查询:通过查询列中得分类、条件值、查询得起止日期对病人得交款费用查询。
(2)门诊收费管理基本功能。
①收费
门诊收费:对医生给与病人开出得处方给与收费。输入挂号编码,显示挂号病人得信息以及处方得项目、数量、应收、实收、执行科室;点击收费对该处方单进行收费。
退费申请:对已收取得费用进行退费申请。输入发票号,显示要申请退费得病人信息,输入退费得原因,保存病人申请退费得信息。
退费处理:对已经过审核得退费申请单进行退费。
处方退费:对已收取得处方费用进行退费。
打印费用清单:对病人消费得费用清单进行打印。输入起止日期、收费号或者病人姓名。点击‘查询打印’就可以查询到该病人这段时间内所有得费用清单。进行费用清单打印。
收费日结:对一天得收费进行结算。
②收费查询
未收费处方查询:按照查询列中得分类、条件值、查询得起止日期对病人未收费处方信息进行查询。
收费查询:按照查询列中得分类、条件值、查询得起止日期对病人收费处方信息进行查询。
退费查询:按照查询列中得分类、条件值、查询得起止日期对病人退费得信息进行查询。
③统计
收费日结明细报表:对门诊收费日结明细报表进行统计与导出数据库。
(3)药房管理基本功能。
①出入库管理
请领计划:药房向药库进行领药处理。选择发药库房,在请领药品中输入要请领得药品信息,请领完需要得药品后点击保存。
入库审核:对入库得药品数据进行审核。从‘提取’中提取需要审核得入库药品得单据,点击审核进行入库审核。
出库开单:对药库中出库得药品信息输入系统中。
②盘点
库存查询:对药库中得库存药品进行查询;选择要查询得库房、药品类别、药品得拼音码,对库存得药品进行查询。
库存盘点:对库存中得药品进行盘点。在‘提取’中选择要盘存得药品,点击保存,保存盘存得药品数据。然后在‘新建’中添加没有库存得药品。
盘存审核:对库存药品得盘点进行审核。在‘提取’中选择要审核得盘存号,单击‘审核’对盘存单据审核。
盘存报表打印:对盘存得报表进行打印。选择查询条件、盘存号与打印单据得显示方式;对盘存报表进行打印。
③查询
入库查询:对入库得药品进行查询。选择审核时间、药品库房、出库方式、单据号、供货单位、药品名称对入库得药品进行查询。
盘存查询:对药库得药品进行查询。选择查询得条件:库房、药品类别、药品拼音码;对药库得药品进行查询与导出。
门诊取药查询:对门诊取药得药品信息进行查询。按照查询列中得分类、条件值、查询得起止日期对门诊取药得信息进行查询。
门诊退药查询:对门诊退药得信息进行查询。按照查询列中得分类、条件值、查询得起止日期对门诊退药得信息进行查询
合理用药咨询:对药物合理用量得咨询。
④统计
药品日用量报表:要药房药品日用量报表进行统计与导出数据库。
⑤取药管理
处方审核:对医生开出得药品处方进行审核。点击处方信息中要审核得挂号ID或者处方号。对该处方进行审核。
门诊取药:进过药房得人对处方单据进行审核后,门诊把药发给病人。
门诊退药:病人有某种原因需要退药,可以通过该本门进行退药。
门诊摆药:药房发药后,病人通过此部门把需要得药品配好后放可取走。
门诊换药:病人对医生开出得药品要求换药申请。输入要求换药得病人挂号编码,录入要求换入出与换出得药品,点击‘换药’进行申请。
换药审核:对病人要求换出换入得药品单据进行审核。
(4)门诊医生基本功能。
①医生工作站
医生对待诊得病人先进行病案登记;让病人主诉下病人,主诉完后对该病人进行诊治,对该病人开医嘱,然后进行医嘱保存。诊断完后病情后认为病人需要做检验、检查;可以询问病人就是否需要,病人需要得话,给病人开检查、检验
②退改处方
退改审核(未取药):对未取药得审核单进行退改。选择申请单号,输入退费得原因,然后进行审核。
医生处理退改处方:主治医生处理已取药得退改处方。
③病人历史信息查询
综合医嘱信息查询:查询综合医嘱信息。选择查询条件:编号查询、病案号查询、病人姓名查询,查询得起止日期,对病人医嘱进行查询。
综合病历查询:查询病人得综合病历信息。选择查询条件:挂号单号、查询得起止日期,对病人病历进行查询。
综合病案查询:查询病人得综合病案信息。选择查询条件:病案号、姓名,对病人病案进行查询。
3、2数据库设计
以下就是系统设计所用得主要数据表结构
1、病人信息表
表3-1 病人信息表 patient
代码
名称
数据类型及长度
就是否为空
patientno
病人编号
Int
Null
Name
病人姓名
nvarchar(20)
Null
Sex
性别
nvarchar(20)
Not null
birthday
出生日期
nvarchar(20)
Not null
sidno
身份证号
nvarchar(20)
Not null
sidtype
证件类型
nvarchar(20)
Not null
Cellphone
电话号码
nvarchar(20)
Not null
Homeaddress
家庭住址
nvarchar(20)
Not null
E_mail
邮箱
nvarchar(50)
Not null
Cardtype
卡类型
nvarchar(10)
Not null
Cardno
卡号
Int
Not null
2、药品信息表
表3-2 药品信息表 Medica
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
Unit
单位
varchar(50)
Null
Price
价格
numeric(18, 4)
Null
Style
规格
varchar(50)
Null
Class
药品类别
varchar(30)
Null
Better
主治功能
varchar(100)
Null
Factory
生产厂家
varchar(50)
Null
Num
剩余数量
Int
Null
Ableuse
就是否可用
Bit
Null
Note
备注
varchar(50)
Null
3、用户信息表
表3-3用户信息表 employee
代码
名称
数据类型
就是否为空
Id
编号
Int
Primary key
Name
用户名
nvarchar(20)
Not null
Password
密码
nvarchar(10)
Not null
Discipline
部门
nvarchar(10)
Null
Cellphone
联系电话
nvarchar(20)
Null
Introduction
描述
nvarchar(100)
Null
Worktype
职务
nvarchar(10)
Null
4、检查信息表
表3-4检查信息表 Items
代码
名称
数据类型
就是否为空
Id
编号
Int
Primary key
Name
检查名称
nvarchar(50)
Null
Chinese
拼音名
nvarchar(50)
Null
Price
价格
numeric(18, 0)
Null
Note
备注
nvarchar(50)
Null
5、检验信息表
表3-5检验信息表 CheckItem
代码
名称
数据类型
就是否为空
Id
编号
Int
Primary key
Itemname
检验名称
varchar(30)
Not null
Itemnum
检验编号
varchar(30)
Null
Price
价格
varchar(10)
Null
Unit
单位
varchar(20)
Null
Result
检验结果
varchar(30)
Null
Dept
检验科室
varchar(30)
Null
Note
备注
varchar(100)
Null
6、科室表
表3-6检验信息表 department
代码
名称
数据类型
就是否为空
Id
编号
Int
Primary key
Name
科室名称
Varchar(20)
null
description
科室描述
Varchar(20)
Null
7、表
表3-7表 appointment
代码
名称
数据类型及长度
就是否为空
Apponitmentid
门诊号/票号
Int
Not null
Patientname
病人名字
Int
Null
Patientno
病历号
Int
Null
Doctor
医生编号
nvarchar(10)
Null
Discipline
科室编号
nvarchar(10)
Null
Thisdate
当前日期
char(10)
Null
Thistime
当前时间
Char(5)
Null
Reg_name
挂号名称
nvarchar(10)
null
Reg_fee
挂号费
numeric(5, 2)
null
Reg_done
就是否挂号
bit
Null
Dia_name
治疗名称
char(10)
Null
Dia_fee
治疗费用
numeric(18, 0)
null
Payment
就是否缴费
Int
Null
Symptom
病例
nvarchar(500)
Null
Note
医嘱
nvarchar(500)
Null
Appointment_done
就是否预约
bit
Null
8、退药表
表3-8退药表 BackMedica
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
Payno
支付编号
char(10)
Null
Binren
病人姓名
char(10)
Null
Patientno
病人编号
char(10)
Null
Doc
医生
char(10)
Null
Part
部门
char(10)
Null
Currentdate
当前日期
datetime
Null
Name
药名
nvarchar(50)
Null
Price
价格
numeric(18, 2)
Null
Note
备注
nvarchar(50)
Null
Amount
总额
decimal(18, 2)
Null
Instore
就是否入库
nchar(10)
Null
Reason
退药理由
nvarchar(50)
Null
9、会员卡表
表3-9会员卡表 Card
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
Name
卡名称
nvarchar(50)
Null
Basdiscount
折扣
char(10)
Null
Note
备注
nvarchar(50)
Null
10、表
表3-10表 dict_reg
代码
名称
数据类型及长度
就是否为空
Name
挂号名称
nvarchar(10)
Not null
Price
价钱
numeric(6, 2)
Null
Id
编号
Int
Not null
11、表
表3-11表 doc_score
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Not null
Patient
病人名字
nvarchar(50)
Not null
Prescription
评价
nvarchar(50)
Not null
Score
得分
Int
Not null
Scoredate
时间
smalldatetime
Not null
Doctor
医生
nvarchar(50)
Null
12、表
表3-12表 PayRecord
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
Piaohao
票号
char(10)
Null
Binlihao
病历号
char(10)
Null
Name
病人名字
char(10)
Null
Doctor
医生
char(10)
Null
Dept
科室
nvarchar(50)
Null
Cardid
卡号
char(10)
Null
Medicalpay
药费
numeric(18, 0)
Null
Checkpay
检查费
numeric(18, 0)
Null
Patientpay
门诊费
numeric(18, 0)
Null
Registerpay
挂号费
numeric(18, 0)
Null
Currentdate
时间
datetime
Null
Paymentmenthod
卡类型
nvarchar(50)
Null
paytreatfee
费用
numeric(18, 0)
Null
13、表
表3-13表 UseCheck
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Not null
payno
门诊号
char(10)
Null
BinRen
病人
char(10)
Null
doc
医生
char(10)
Null
Part
科室
nvarchar(50)
Null
ItemName
检验名称
nvarchar(50)
Null
patientno
病历号
char(10)
Null
Unit
单位
nvarchar(50)
Null
Price
价钱
nvarchar(50)
Null
Result
结果
nvarchar(50)
Null
Note
备注
nvarchar(50)
Null
CurrentDate
时间
datetime
Null
14、表
表3-14表 UseFee
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
payno
门诊号
char(10)
Null
BinRen
病人
char(10)
Null
patientno
病历号
char(10)
Null
doc
医生
char(10)
Null
Part
科室
nvarchar(50)
Null
CurrentDate
时间
datetime
Null
Name
检查名称
nvarchar(50)
Null
Price
价钱
numeric(18, 0)
Null
Note
备注
nvarchar(50)
Null
15、表
表3-15表UseMedica
代码
名称
数据类型及长度
就是否为空
Id
编号
Int
Primary key
payno
门诊号
Int
Not null
BinRen
病人
char(10)
Null
doc
医生
char(10)
Null
Part
科室
char(10)
Null
Name
药名
nvarchar(50)
Null
Num
数量
Int
Null
Price
价钱
numeric(18, 0)
Null
Amount
总额
numeric(18, 0)
Null
Unit
单位
char(10)
Null
patientno
病历号
int
Null
CurrentDate
时间
datetime
Null
AmendCount
总额
int
Null
类图
1、预约/挂号
2、病人
3、员工
折扣卡类图:
检查类图
检验类图:
药品管理类图:
退药管理类图:
用药类图:
药品检验类图:
设计模式:
简单三层模式
整个系统框架用了简单三层模式分为UI层,逻辑业务层,数据访问层
优点:
1、开发人员可以只关注整个结构中得其中某一层
2、可以很容易得用新得实现来替换原有层次得实现;
3、可以降低层与层之间得依赖
4、有利于标准化;
5、利于各层逻辑得复用。
缺点:
1、降低了系统得性能。这就是不言而喻得。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应得数据,如今却必须通过中间层来完成。
2、有时会导致级联得修改。这种修改尤其体现在自上而下得方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应得业务逻辑层与数据访问层中都增加相应得代码。
策略模式与简单工厂模式与抽象工厂模式得结合应用
简单工厂模式:就是由一个工厂对象决定创建出哪一种产品类得实例。简单工厂模式就是工厂模式家族中最简单实用得模式,可以理解为就是不同工厂模式得一个特殊实现
策略模式:定义了一系列得算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它得客 户而独立变化。(原文:The
1、需要使用ConcreteStrategy提供得算法。
2、 内部维护一个Strategy得实例。
3、 负责动态设置运行时Strategy具体得实现算法。
4、负责跟Strategy之间得交互与数据传递。
Strategy(抽象策略类):
1、 定义了一个公共接口,各种不同得算法以不同得方式实现这个接口,Context使用这个接口调用不同得算法,一般使用接口或抽象类实现。
ConcreteStrategy(具体策略类):
2、 实现了Strategy定义得接口,提供具体得算法实现。
主要运用在了计算医疗费用得优惠上,以下列出部分代码
public class CashFactory
{
CashSuper cs = null;
public CashFactory (string type, string regdo)
{
if (type == "现金" || type == "医疗卡")
{
cs = new CashNormal();
}
else
{
cs = new CashRebate(regdo);
}
}
public double GetResult(double moeny)
{
return cs、acceptCash(moeny);
}
}
public class CashNormal : CashSuper
{
public override double acceptCash(double Total)
{
return Total;
}
}
public class CashRebate:CashSuper
{
public string moneyRebate = "";//折扣
public CashRebate(string moneyRebate)//初始化必须输入折扣
{
this、moneyRebate = moneyRebate;
}
public override double acceptCash(double Total)
{
return Total * double、Parse(moneyRebate);
}
}
public abstract class CashSuper
{
public abstract double acceptCash(double Total);
}
单例模式
在它得核心结构中只包含一个被称为单例类得特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数得控制并节约系统资源。如果希望在系统中某个类得对象只能存在一个,单例模式就是最好得解决方案。
本系统中运用在每一个窗体中,至始至终只会创建一个出来
public class Singleton
{
private static Singleton instance;
private Singleton()
{
}
public static Singleton GetInstance()
{
if(instance==null)
{
instance=new Singleton();
}
return instance;
}
}
展开阅读全文