医院信息管理系统的设计与开发Word文档格式.docx
《医院信息管理系统的设计与开发Word文档格式.docx》由会员分享,可在线阅读,更多相关《医院信息管理系统的设计与开发Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
![医院信息管理系统的设计与开发Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/6ce90ac8-7f18-47ca-afb0-2dea58b94eca/6ce90ac8-7f18-47ca-afb0-2dea58b94eca1.gif)
病历模板的套餐制更具灵活性。
2关键技术介绍
2.1开发工具及运行环境
2.1.1总体开发工具及环境
本系统采用的软件开发工具及环境如下:
Ø
操作系统:
WINDOWSXP
编程工具:
PowerBuilder9.0
数据库:
ACCESS
2.1.2开发工具简介
PowerBuilder是一个图形化的应用程序开发环境。
使用PowerBuilder开发的应用软件由窗口构成,窗口中不仅可以包含按钮、下拉列表框及单选按纽等标准的Windows控件,还可以有PowerBuilder提供的特殊控件。
这些特殊控件可以使应用软件更容易使用,使应用软件的开发效率更高。
例如,数据窗口就是PowerBuilder提供的一个集成度很高的控件,使用该控件可以很方便地从数据库中提取数据,很简单地检索数据,提供图形化的数据显示方式,创建统计功能非常强大的数据统计表。
由于数据窗口对数据的操作是通过事务进行的,所以对数据的操作有很强的可靠性。
这些都为开发功能强大的数据库应用软件提供了可靠的保证。
商业化的软件开发要求有很好的移植性。
PowerBuilder既可以跨平台开发,也可以发行跨平台软件。
例如,在Windows95下开发的程序,可以不修改源程序而形成UNIX下的执行文件或Macintosh下的执行文件。
在开发小组中,不同成员可以使用不同的开发环境,但由于PowerBuilder的支持,在不同的开发环境下看到的共享PowerBuilder对象是相同的,所以仍可以同时开发同一个应用程序。
随着软件技术的不断发展,PowerBuilder9.0及时地强化了开发功能,并提供了一些配套的开发工具,成为一种易于使用的、可伸缩的并经实践证明的快速集成开发环境。
它在给用户提供一条转移到下一代平台的途径的同时,使用户仍能够保护和扩展现有的技术和应用上的投资。
2.2系统需求分析
病人在就诊过程中,基本的业务流程如图1所示:
图1业务流程图
通过对病人就诊流程及管理的调查和了解,初步确定了该系统的基本需求情况:
1.在病人就诊之前,必须进行挂号,包括病人的最基本信息,挂号费用,预存费等。
2.在病人进行挂号的同时,可以自动为病人分配病历号,作为病人在就诊过程中的唯一标识。
3.在病人就诊时,医生可以对病人基本信息(包括简要病史等等)进行登记。
4.对病人每次就医的主诉,病历,处方进行输入,并可以进行查询和维护。
5.各种化验检查信息的输入、查询和维护,并可以进行异常提醒。
6.对病人的预付款进行管理,并且当预付金额不够时可以提醒补交预付款。
7.对病人就诊过程中的各种费用进行管理。
8.可以打印病人预付款单据和费用凭单。
9.医生可以查询病人治疗情况、化验检查结果,以便跟踪病人病情发展情况,同时也有助于医生对各种病例进行分析研究。
2.3系统功能结构设计
本系统划分为7个功能模块,系统功能模块图如图2所示。
图2系统功能模块
各模块如下:
1.员工管理:
主要包括员工登陆,修改密码,判别用户级别功能。
2.病人管理:
主要包括病人的基本信息登记。
主要包括对病人基本信息的录入、查询和维护等操作。
病人基本信息的录入窗口可以从就诊窗口进入,系统可以记忆当前就诊病人病历号以及当前录入员的姓名。
3.就诊管理:
主要包括对病人此次就诊病情的录入,过往病史的查询及检查和化验结果进行录入。
4.模板管理:
主要医生针对各种典型病种所开具的主诉、病历、处方录入、查询。
5.化验检查管理:
主要包括对病人每次所做化验和检查的结果进行录入、查询和维护。
6.费用管理:
主要包括预付款管理和费用管理。
预付款管理:
主要包括对预付金额进行录入、查询和维护等操作。
并且可以根据支出情况进行费用统计、查询余额和缺钱警示。
费用支出管理:
主要包括对病人药费、检查、化验等支出进行录入、查询和维护等操作。
7.报表打印:
根据需要生成各种报表,并且打印出来。
2.4数据库设计与实现
在仔细调查医院就诊管理过程的基础上,得到系统所要处理的数据流程图,如图3所示。
图3数据流图
本系统根据上面的设计规划出的实体有4个:
病人、医生、化验检查员、药品。
下面为本系统实体之间关系的E-R图,如图4所示。
图4实体关系E-R图
根据以上的分析设计得到实际数据库模型。
数据库设计如下:
1.病人基本情况表(ghdj):
就诊号(jzid)、病历号(blh),姓名(xm),身份证号(sfzh),性别(xb),出生日期(sr),婚否
(hf),地址(dz),电话(dh),日期(ryrq),科别(kb),主诉(zs),现病史(xbs),病历(bl),处方(cf),医嘱(yz),医生(ys)。
主码是就诊号(jzid)。
此表字段用来保存病人的相关详细信息,包括病人基本信息和病人在医院就诊相关信息。
表1ghdj
字段名
数据类型
字段大小
必填字段
jzid
文本
14
是
blh
8
xm
20
否
sfzh
数字
小数
xb
4
sr
日期/时间
短日期
hf
dz
100
dh
15
ryrq
kb
10
zs
200
xbs
bl
cf
yz
ygh
5
2.挂号表(ghb):
流水号(id),病历号(blh),日期(rq),时间(sj),挂号费(ghf),金额(je)。
主码是流水号(id)。
此表字段用来记录病人在医院挂号就医时产生的相关数据。
表2ghb
id
9
rq
sj
ghf
长整型
je
3.化验检查表(hyjc):
病历号(blh),化验日期(hyrq),化验时间(hysj),检验员(jyy),状态(zt)等,其中化验检查中的具体项目由于数目众多,在此就不一一列出。
主码是病历号(blh),化验日期(hyrq)。
此表字段用来记录病人在院就医时不同状态的检查产生的结果
表3hyjc
hyrq
zt
jyy
4.费用表(fyb):
费用凭单号(id),病历号(blh),项目内容(xmnl),数量(sl),收费科室(sfks)。
主码是费用凭单号(id),项目内容(xmnl)。
此表字段用来记录病人在院所做就医项目的相关信息。
表4fyb
xmnl
13
sfks
sl
5.药品库表(ypkb):
药品编号(ypbh),药品名(ypm),类别(lb),价格(jg),包装规格(bzgg),单位(dw),药用字典(yyzd)。
主码是药品编号(ypbh)。
此表字段用来记录医院各种项目药品的相关信息。
表5ypkb
ypbh
13
ypm
30
lb
4
jg
bzgg
6
dw
yyzd
6.病历处方表(blcfb):
模板号(mbh),病症名称(bzmc),病历内容(blnr),处方内容(cfnr),主诉内容(zsnr),开方医生(ygh)。
主码是模板号(mbh)。
此表字段用来记录医生对病症的研究和描述,方便医生对同种病症不同情况进行对比研究,提高医生的工作效率,帮助医生进行诊断,判断更为准确。
表6ypkb
mbh
bzmc
blnr
cfnr
zsnr
7.员工表(ygb):
员工号(ygh),员工名(kb),科别(kb),职位(zw),密码(pwd),等级(dj)。
主码是员工号(ygh)。
此表字段用来记录医院员工的基本信息并在登陆时的根据登记判断其权限。
表7ypkb
ygm
zw
pwd
dj
3本系统功能模块设计与实现
3.1应用程序对象设计
PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象,运行是程序从这个入口点启动,所以应用程序对象的设计是应用程序设计的开始。
本应用程序对象中用到Open事件,输入如下程序代码:
//Profilemzys2
SQLCA.DBMS="
ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="
ConnectString='
DSN=mzys2;
UID=;
PWD='
"
connect;
//打开程序登录窗口
opensheet(w_zhigong,w_zhujiemian,8,original!
)
首先在应用程序对象的变量定义窗口中定义全局变量,如intG_input_time定义的变量是登录时输入用户名和密码的次数,stringyg_name定义的是用户名,stringyg_ygh定义的是员工号,stringg_pwd定义的是密码,stringg_blh定义病历号,stringg_jzid定义病人的就诊号等等。
3.2职工登录界面
应用程序运行后第一个出现的窗口就是w_login登陆窗口,界面如图5所示。
图5职工登陆界面
用户必须通过职工登录窗口才能够进入主界面。
系统登录窗口主要实现功能是确认用户身份及级别,并根据用户级别主界面菜单中该用户可以进行的操作。
本系统根据医院具体情况将医院职工分为种5种职位,院长、医生、放射员收费员和化验员。
其中,院长级别最高,可以使用主界面菜单中的任何一种操作,其他各种职位级别都只能享有各自级别的权限。
医生可以进行病人就诊的信息录入、查询和维护,定义主诉病历处方模板的定义和查询,化验检验结果的查询、费用的查询等;
收费员可以进行挂号收费及统计,预付费用的收缴和统计等;
放射员可以对病人的各项检查结果进行录入、查询、维护等;
化验员则是对病人的各项化验结果进行录入、查询、维护。
在登录界面的OPEN()函数中定义一个游标declaregusercursor,该游标在ygb表中搜索ygm然后添加到员工名的下拉控件中,其代码如下:
stringls_user
declaregusercursorfor
selectygm
fromygb
orderbyygh;
openguser;
ifSQLCA.SQLCode=-1then
MessageBox("
数据错误"
SQLCA.SQLErrText)
elsedo
ifls_user<
>
'
thenddlb_1.additem(ls_user)
fetchguserinto:
ls_user;
loopwhilesqlca.sqlcode=0
ifsqlca.sqlcode=-1then
messageBOX("
sqlca.sqlerrtext)
endif
endif
closeguser;
ddlb_1.selectitem(0)
在“确定”按纽中当判断员工登录条件正确时则根据员工的职位判断那些菜单功能将能被使用。
3.3主界面
3.4挂号系统模块
3.5就诊管理模块
病人在进入所挂号的科室进行就诊入口的界面如图10所示。
图10就诊入口界面
在该界面中两个按钮“简明信息填写”和“就诊”按钮提供了强大的病人就诊信息的录入的功能,方便日后医生的对病人病史的掌握,日后的临床科学研究以及病人对自己病史的了解。
在界面中当输入病人ID(blh),之后按下“简明信息填写”按钮就进入病人基本信息得录入界面如图11所示。
图11病人基本信息录入界面
该界面中使用了创建好的数据窗d_jbxx,就诊号和病历号是通过图10界面的“简明信息填写”按钮中的相关代码实现(主要是利用全局变量来传递值):
:
g_blh=trim(sle_1.text)
jzh()
g_jzid=trim(st_2.text)
opensheet(w_jbxx,w_zhujiemian,8,original!
同理,在图10中如按下“就诊”按钮,在进入如图12所示的界面,病人ID号也将被传递。
界面中可以通过“保存”、“新增”等系列按钮完成对病人此次就诊的记录工作,同时医生也可以通过“申请”按钮对需要进行进一步详细检查的病人提出检查申请,另外可以在“处方计价”当中对病人的药方进行计价。
在医生对病人出具病历处方的同时可以随时查阅“病历处方模板”,以及可以通过“查看报告”查看病人的既往检查化验。
图12就诊界面
上述的该功能模块中的相关功能都是“医生”的权限范围,以下将的检查化验的报告界面分别属于“放射员”和“化验员”的职限。
图13病人检查结果录入界面
在这个界面中最主要的就是“增加”、“退出”几个按钮中的相关代码完成了对数据的录入保存:
//判断窗体记录是否需要保存
intMCount
intupdateornot
mcount=dw_hyjc_jcbg.modifiedcount()
ifmcount>
0then
updateornot=messagebox("
保存修改"
"
您修改了数据窗口中的数据,现在是否保存?
Question!
YesNoCancel!
)
ifupdateornot=1then
ifupdate(dw_hyjc_jcbg,true,false)=1then
dw_hyjc_jcbg.resetupdate()
commit;
else
rollback;
messagebox("
错误"
数据保存失败"
return
elseifupdateornot=2then
rollback;
elseifupdateornot=3then
return;
endif
3.6模板管理模块
在模板管理模块设计是为了医生可以完整的定义主诉病历处方模板,可以分别定义主诉、病历、处方的模板以及在必要的时候进行模板查询。
此模块将更加方便医生平时的临床诊断,为临床科研提供依据。
首先建立数据窗选择数据库表blcfb中的字段mbh,bzmc,bznr,cfnr,zsnr,ygh。
在窗口中运用该数据窗,通过该数据窗可将数据保存到数据表中。
以下的录入模板设计类似此病历处方模板录入模板如图14。
图14完整模板录入界面
在前面提到的模板查询界面如图15所示:
图15病历主诉查询模板
当医生输入病症名称之后,按下“确定”键就可以在数据窗口中显示相似病症的记录,如果相似病症是多条记录就可以通过“第一条”、“上一条”、“下一条”、“最后一条”进行查询选择,代码如下:
⑴“第一条”
dw_1.scrolltorow
(1)
st_4.text="
1"
⑵“上一条”
integerrow_current
row_current=dw_1.scrollpriorrow()
st_4.text=string(row_current)
⑶“下一条”
row_current=dw_1.scrollnextrow()
⑷“最后一条”
introw
row=dw_1.rowcount()
dw_1.scrolltorow(row)
st_4.text=string(row)
3.7数据管理模块
在医院门诊庞大的日常管理工作中,不可缺少的是对后台数据库中的数据进行管理,在该功能模块中就提供了对数据的统计,查询。
⑴对挂号人数的分类统计(示例如图16)
在主界面中点击“数据管理”下的“挂号人数统计”,则通过如下代码进入统计方式选择界面:
opensheet(w_ghtongjilb,w_zhujiemian,8,original!
根据不同选择然后判断打开何种统计图,如图16所示
图16挂号科室人数统计界面
是挂号人数按照科室统计的饼状图。
该类型统计先创建一个根据数据表ghdj中的jzid和kb字段来Graph类型的数据窗,通过对kb字段分类然后通过count(jzidforgraph)然后在创建的统计窗口中使用该数据窗来实现。
⑵病人基本信息查询
设计可以综合条件的信息查询,提高可供选择的条件,医生可以通过组合条件对所需要的病人基本信息以及简要病史进行查询,如图17所示。
图17病人基本信息查询窗口
⑶预付款查询
图18查询剩余预付款界面
拥有查询预付款权限的员工进入该界面之后,只需要输入病人的病历号,点
击“确定”按钮(该按钮代码如下):
deca,b,c
stringd
SELECTblh
into:
d
FROMghdj
WHEREblh=:
sle_1.text;
if:
sqlca.SQLCode=0then
SELECTcount(*)INTO:
cROMghbWHEREblh=:
ifc>
SELECTsum(je)