医院挂号划价管理信息系统课程设计1.docx
《医院挂号划价管理信息系统课程设计1.docx》由会员分享,可在线阅读,更多相关《医院挂号划价管理信息系统课程设计1.docx(18页珍藏版)》请在冰豆网上搜索。
医院挂号划价管理信息系统课程设计1
医院挂号划价管理信息系统-课程设计
1 简述
1.1 背景与系统功能
医院管理信息系统从早期的单机简单任务处理模式,到现在的网络化联机同步操作远程模式.有了很大的进步.近年来,随着我国信息产业的飞速发展,计算机的开发应用已渗透到各个领域,而且日趋普及。
在医学领域内,计算机的应用已经十分广泛,各种智能诊断设备都与计算机紧密结合在一起,主要应用于两个方面:
一是医疗设备智能化,以硬件为主,如核磁共振成像系统、彩色B超、CT等。
另一种是医院信息管理系统(HIS)的软件建设,以提高医院的现代化管理形象。
由于课程设计时间有限,我仅对医院管理系统得门诊管理进行设计。
1.2 可行性分析
1.2.1经济可行性分析
医院挂号划价管理系统开发需要投资费用和未来的运行维护费用,其中投资费用主要包括设备费用、人员费用及其他费用,通常为了保证新系统运行的可靠性,要求手工和计算机处理在长时间并存。
系统的收益主要通过新系统提高工作效率,指导经营策略来实现,还有其他难以计算的指标。
● 挂号划价管理中节省的人力,减轻的劳动强度;
● 降低的成本及其他费用;
● 改进薄弱环节,提高了工作效率;
● 提高数据处理的及时性和准确性。
1.2.2技术可行性分析
在技术上,第一、员工都有基本的计算机操作水平,熟练业务。
第二,微软的一整套技术整体效率高。
(Windowsserver2003、windowsXP、SQLSERVER2005)。
由于微软的技术人性化水平比较高,操作容易,从而日后维护再开发比较容易。
另外公司软件采取外包,不需要员工有专业的软件开发水平,这样节约了软件开发成本。
从而在技术上是绝对可行的。
2.1 业务流程图
病人去医院看病的基本流程:
病人在挂号处挂号获得挂号单及病历,接着拿病历去科室医生处进行诊断,医生诊断病人病情,开出诊断书,如需要设备检查的,病人拿诊断书到划价处划价,然后拿划价单到缴费处缴费,获得已缴费凭证,拿以缴费凭证到设备检查科室进行检查,检查后,检查科室医生开出检查诊断书,病人拿检查诊断书到科室医生处,科室医生进行分析,开出处方单,病人拿处方单到划价处划价,到缴费处缴费,获得凭证后到药房拿药。
其主要流程如下图所示:
图2-1核心业务流程图
2.2 数据流程图
在进行收集原系统全部输入单据、输出报表和数据储存介质,并弄清各环节的处理方法和计算方法后,绘制出系统的数据流程图,如下图所示:
图2-2医院数据流程图
2.3 功能分析图
,
图2-3医院功能分析图
2.4 数据字典
1.数据流的描述:
①.数据流名称:
挂号单
简述:
病人在挂号处开出的挂号单
数据流来源:
挂号处
数据流去向:
挂号处理模块
数据项组成:
编号+病人编号+姓名+性别+挂号科室+费用类型+挂号类型+挂号费用+时间
数据流量:
大约30张/日
高峰流量:
大约50张/日
②.数据流名称:
划价单
简述:
病人经划价处理后得到划价单
数据流来源:
划价处理模块
数据流去向:
收费处理模块
数据项组成:
编号+划价编号+药品编号+单价+数量+金额+检查名称+拼音码+费用+费用分类+病种分类+费用合计
数据流量:
大约30张/日
高峰流量:
大约50张/日
③.数据流名称:
检查收费凭证
简述:
病人经收费处收费处理后获得检查收费凭证
数据流来源:
收费处理模块
数据流去向:
检查科室
数据项组成:
编号+科室+挂号编号+医生+收费时间+检查名称+医生备注
数据流量:
大约30张/日
高峰流量:
大约50张/日
④.数据流名称:
取药收费凭证
简述:
病人经收费处收费处理后获得取药收费凭证
数据流来源:
收费处理模块
数据流去向:
药房处理模块
数据项组成:
编号+科室+挂号编号+医生+收费时间+药品名称+药品编号+药品数量+医生备注
数据流量:
大约30张/日
高峰流量:
大约50张/日
2.处理逻辑的描述:
①.处理逻辑名称:
挂号处理
输入的数据流:
挂号单
输出的数据流:
病历
处理描述:
对挂号处的挂号单进检验,检验合格就制作成病历
激发条件:
有病人挂号
②.处理逻辑名称:
科室处理
输入的数据流:
病历
输出的数据流:
处方单
处理描述:
对病人进行检查,开出需要的检查的手段的单证和病人需要药品
③.处理逻辑名称:
划价处理
输入的数据流:
处方单
输出的数据流:
划价单
处理描述:
对医生开出的处方单的所有需求进行价格确定,制作成划价单,给病人进行付款操作。
④.处理逻辑名称:
收费处理
输入的数据流:
划价单
输出的数据流:
检查收费凭证和取药收费凭证
处理描述:
依据划价单进行收费,开出相应已收费凭据
3.数据储存描述:
①.数据储存名称:
挂号综合数据
描述:
对被挂号的科室的被挂号数量进行统计
数据存储组成:
挂号科室+挂号次数+总金额
相关联的处理:
挂号处理,划价处理
②.数据储存名称:
药品库存量
描述:
对药房的剩余药品量进行统计
数据存储组成:
编号+库房+药品编号+药品名称+数量+备注
相关联的处理:
药房处理46
医院挂号划价管理信息系统
2.1 管理信息系统流程设想图(新系统模型)
在对旧流程的分析后,发现病人两次到药房排队,第一次是划价,第二次是取药,这种业务流程给病人带来不便。
在新系统中可取消病人到药房划价这一环节,而划价这一工作可以通过计算机网络的功能在收费处完成,这可以大大方便
病人,提高医院办事效率。
新系统模型如下图所示:
图2-5管理信息系统流程设想图
(注:
方框表示功能处理;带箭头的线条表示数据或物品的流向)
3 系统设计部分
3.1 功能结构图设计图3-1功能结构图设计
3.2 存储文件格式设计(数据库结构设计)
图3-2 E-R图设计
3.3 代码设计
根据药品粗分类原则,在药品编码结构中将商品只划分一个大类。
按照用途或自然属性相同或相似的规则对商品归类,用一位英文字母表示。
这样归类的好处就在于同一个商品不会因为分类的不同而赋予多个编码,确保一物一码和一名一码。
编码分为四层,第一层为类别码,长1位,第二层为本体名称码,长6位,第三层为其它名称码,长3位,第四层为验证码,长1位。
4 系统实施部分
4.1 程序框图
,4.2 源程序
1.主窗体程序代码
PublicClassfrmMain
InheritsSystem.Windows.Forms.Form
#Region"Windows窗体设计器生成的代码"
PublicSubNew()
MyBase.New()
'该调用是Windows窗体设计器所必需的。
InitializeComponent()
'在InitializeComponent()调用之后添加任何初始化
EndSub
'窗体重写dispose以清理组件列表。
ProtectedOverloadsOverridesSubDispose(ByValdisposingAsBoolean)
IfdisposingThen
IfNot(componentsIsNothing)Then
components.Dispose()
EndIf
EndIf
MyBase.Dispose(disposing)
EndSub
'Windows窗体设计器所必需的
PrivatecomponentsAsSystem.ComponentModel.IContainer
'注意:
以下过程是Windows窗体设计器所必需的
'可以使用Windows窗体设计器修改此过程。
'不要使用代码编辑器修改它。
FriendWithEventsMainMenu1AsSystem.Windows.Forms.MainMenu
FriendWithEventsmnDictionaryAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnMedicineAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnCashAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnManageAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnGuaHaoAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnHuaJiaAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnShouFeiAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnFaYaoAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnSearchAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnGHLAsSystem.Windows.Forms.MenuItem
FriendWithEventsmnKCLAsSystem.Windows.Forms.MenuItem
医院挂号划价管理信息系统
FriendWithEventsmnExitAsSystem.Windows.Forms.MenuItem
PrivateSubInitializeComponent()
DimresourcesAsSystem.Resources.ResourceManager=NewSystem.Resources.ResourceManager(GetType(frmMain))
Me.MainMenu1=NewSystem.Windows.Forms.MainMenu
Me.mnDictionary=NewSystem.Windows.Forms.MenuItem
Me.mnMedicine=NewSystem.Windows.Forms.MenuItem
Me.mnCash=NewSystem.Windows.Forms.MenuItem
Me.mnManage=NewSystem.Windows.Forms.MenuItem
Me.mnGuaHao=NewSystem.Windows.Forms.MenuItem
Me.mnHuaJia=NewSystem.Windows.Forms.MenuItem
Me.mnShouFei=NewSystem.Windows.Forms.MenuItem
Me.mnFaYao=NewSystem.Windows.Forms.MenuItem
Me.mnSearch=NewSystem.Windows.Forms.MenuItem
Me.mnGHL=NewSystem.Windows.Forms.MenuItem
Me.mnKCL=NewSystem.Windows.Forms.MenuItem
Me.mnExit=NewSystem.Windows.Forms.MenuItem
'
'MainMenu1
'
Me.MainMenu1.MenuItems.AddRange(NewSystem.Windows.Forms.MenuItem(){Me.mnDictionary,Me.mnManage,Me.mnSearch,Me.mnExit})
'
'mnDictionary
'
Me.mnDictionary.Index=0
Me.mnDictionary.MenuItems.AddRange(NewSystem.Windows.Forms.MenuItem(){Me.mnMedicine,Me.mnCash})
Me.mnDictionary.Text="字典维护(&W)"
'
'mnMedicine
'
Me.mnMedicine.Index=0
Me.mnMedicine.Text="药品信息(&Y)"
'
'mnManage
'
Me.mnManage.Index=1
Me.mnManage.MenuItems.AddRange(NewSystem.Windows.Forms.MenuItem(){Me.mnGuaHao,Me.mnHuaJia,Me.mnShouFei,Me.mnFaYao})
Me.mnManage.Text="门诊管理(&X)"
'
'mnGuaHao
'
Me.mnGuaHao.Index=0
Me.mnGuaHao.Text="门诊挂号(&W)"
'
'mnHuaJia
'
Me.mnHuaJia.Index=1
Me.mnHuaJia.Text="门诊划价(&X)"
'
'mnShouFei
'
Me.mnShouFei.Index=2
Me.mnShouFei.Text="门诊收费(&Y)"
'
'mnFaYao
'mnSearch
'
Me.mnSearch.Index=2
Me.mnSearch.MenuItems.AddRange(NewSystem.Windows.Forms.MenuItem(){Me.mnGHL,Me.mnKCL})
Me.mnSearch.Text="院长查询(&Y)"
'
'mnGHL
'
Me.mnGHL.Index=0
Me.mnGHL.Text="科室挂号量(&Y)"
'
'mnKCL
'
Me.mnKCL.Index=1
Me.mnKCL.Text="药品库存量(&Z)"
医院挂号划价管理信息系统
'mnExit
'
Me.mnExit.Index=3
Me.mnExit.Text="退出系统(&Z)"
'
'frmMain
'
Me.AutoScaleBaseSize=NewSystem.Drawing.Size(6,14)
Me.ClientSize=NewSystem.Drawing.Size(472,277)
Me.Icon=CType(resources.GetObject("$this.Icon"),System.Drawing.Icon)
Me.IsMdiContainer=True
Me.Menu=Me.MainMenu1
Me.Name="frmMain"
Me.Text="HIS医院管理系统"
EndSub
#EndRegion
PrivateFunctionGetInstanceState(ByValnameAsString)AsBoolean
'获得frmMain窗体的子窗体的数量
DimiAsInteger=Me.MdiChildren.Length
'循环判断是否有名为name的子窗体实例
Fori=0ToMe.MdiChildren.Length-1
IfMe.MdiChildren(i).Name=nameThen
'存在名为name的子窗体,是子窗体获得焦点并返回True
Me.MdiChildren(i).Focus()
ReturnTrue
EndIf
Next
'不存在名为Name的子窗体False
ReturnFalse
EndFunction
PrivateSubmnMedicine_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesmnMedicine.Click
IfGetInstanceState("frmMedicine")Then
ExitSub
EndIf
DimchildFrmAsfrmMedicine=NewfrmMedicine
childFrm.MdiParent=Me
childFrm.Show()
EndSub
s=dr("金额")
dTotal=dTotal+CType(s.Trim,Double)
Next
Me.txbMoney.Text=dTotal.ToString
EndSub
PrivateSubtxbNumber_TextChanged(ByValsenderAsObject,_
ByValeAsSystem.EventArgs)HandlestxbNumber.TextChanged
CalMXMoney()
EndSub
PrivateSubbtnAdd_Click(ByValsenderAsSystem.Object,_
ByValeAsSystem.EventArgs)HandlesbtnAdd.Click
IftxbName.Text.Trim.Length=0Or_
txbMXId.Text.Trim.Length=0Then
Return
EndIf
CalMXMoney()
DimdrAsDataRow=Me.dtDetail.NewRow
dr("编号")=Me.txbMXId.Text.Trim
dr("名称")=Me.txbMName.Text.Trim()
dr("规格")=Me.txbGuiGe.Text.Trim
dr("单位")=Me.txbUnit.Text.Trim
dr("单价")=Me.txbPrice.Text.Trim
dr("数量")=Me.txbNumber.Text.Trim
dr("金额")=Me.txbMMoney.Text.Trim
dr("拼音码")=Me.txbPY.Text.Trim
dtDetail.Rows.Add(dr)
ClearMX()
CalTotalMoney()
EndSub
PrivateSubtxbNumber_KeyPress(ByValsenderAsObject,_
ByValeAsSystem.Windows.Forms.KeyPressEventArgs)_
HandlestxbNumber.KeyPress
'判断输入的字符是否为数字
Ife.KeyChar.IsDigit(e.KeyChar)=FalseThen
'不是数字的字符不处理
e.Handled=True
Me.txbNumber.Text="1"
EndIf
EndSub
PrivateSubbtnOpen_Click(ByValsenderAsSystem.Object,_
ByValeAsSystem.EventArgs)HandlesbtnOpen.Click
DimdlgAsfrmSelectHuaJia=NewfrmSelectHuaJia
dlg.ShowDialog()
DimstrIdAsString=dlg.GetInfo().Trim
DimdbAsDataBase=NewDataBase