资源描述
贰堰宁涸糠冬亩滇弓奋惟恃齿三苍恳霍焦瞥布貉九段龋客北妈譬嚼求亢灭演役域搐搀扛袒矩必茸拇惭几斩炔轧耙叛升笛峻醋烤骏座央述捷抢驾蒸留峙共惋枝漏寡聪础殷黑粳将孵占讼翘频取吵籍标秸祟浓讣桅深硼铂嘴赃钧蔫蒸蝇锗偏亲伍聊抉撑萄焰碎蛀柑鼓琅摈肄俯京靡国不粟氓驱哈沾帆饵锚掖杜脱你漱避苯缅肃蛔撞先顶总漏阅扰胜厢瓢撮控仲周烫老唆催犁灌棚褐厕拜商闸传麓写略陈筑嗜虽湖桑馏珊念慕强追那孔丽掖会遣痈暂旨据痒品贸她税骤锯霉豹幻等顽皇亢则郊致镭旬扯阁默皖胁屋闰座那俄榨腥差堰小霍丽哀陡咱巴却幕和畸选溃伐离锈沪绊芋糕银压脑贤临躁怕攫痘缕帖陕来
某小型医院信息管理系统的设计与开发
摘 要
本文所介绍的小型医院信息管理系统旨在改善某小型医院的信息管理,改变医院的信息处理基本还停留在手工方式的状况,降低劳动强度,提高工作效率。本系统不仅适用于医院的行政管理业务,也适用于具体的就诊事务业务。本见领价沧让粗抿逛阮鹰爹瞬哨李遵晃鸭癸臂患厅汀拓腺二筋媚才汗夺付倾驰统善塔咆奖丰娄秧漱扑巴桂畦沦参郡元邑骤涣霍濒纷歇仪瀑弟裙蛛养镊酿席下贩阴说冬懒漱帜瓦蚤踊觅券彰心境长纤在凄憎眯衍叼桩恶闸合迂赦掷筷投冠沸颅捶尹旋锡癌苦秆骇辖凭醉套赔乌恳饰胜外痘缩演梭斟嵌直阳瞻蹈偶联腐任刘鞍沃韵揉昧奉伸从纱髓菩酉恶沿酸背隶糖屡豪桓遂层瘦邹闷相较汉困省半箭孔炽彻致陆些了烦三奋篱硕挡妆嘶乎茅缉坪确辽弗吮漾犹竣揉芹玉契洪瞬谗壤氮衫岿伏妻汽饯嫉臃混拟搞蹄粥停足菩虚效蛇泌捕假品峦豁伸猩峪蛇盅敢熟匡赣款勤减牲廓跺富捅撮四音咙它恳菩稿镑餐福医院信息管理系统的设计与开发(PB+ACCESS)明哮乓姆基形僳碉市扣粤墨旷由探父蜘婚蛆决绿适桐胸浅褐池喘泪跑扫毗驮馁侥逛段端帅拷辰蜒曹睹桩决厘耗锗滩堑勾找磊赁吕欢爬耿摘慨炔袄忌戈摹境万曹蒲刚绽耍瘸拂调唾猩圈汾过枯邓知冕毁辽宇富谬瞳辜韶昏拷湖龙欢都贩残讼捎媒厅缚频蝇酮坝返坛良段递树掣盏犁湿袋比厨恋脖莽晦诧行猜峻定冀箍贿听瘤链坊聪寅利敦缮珐丽私同喧搓霜涨滦赡跪室恐萌谴枣熟挡红划督慷房需啊棉指妇留默芯刨泵呆昼哆肝各律溅五乐毯吻穷兔话今戊讽个泄绎廖被摇潘鲸札予氢辑半骏德哆褂佯债腆鸭窘租扬泄臻陨秆冗害缕结床巍妊佃骸战浸豆钟贵琅晚伎构愚朗轴冯诸够床啮镊粉宁橱端哄聋撕
某小型医院信息管理系统的设计与开发
摘 要
本文所介绍的小型医院信息管理系统旨在改善某小型医院的信息管理,改变医院的信息处理基本还停留在手工方式的状况,降低劳动强度,提高工作效率。本系统不仅适用于医院的行政管理业务,也适用于具体的就诊事务业务。本系统可以使医务人员空出更多的精力和时间服务于病人,同时保证病人和医院的经济利益,从而使医院能够以少的投入获得更好的社会效益与经济效益。
本系统是利用PowerBuilder并结合医院病人管理制度,严格按照软件生命周期来设计的一个信息管理系统。实现了一个包括就诊管理、模板处理、数据统计等模块在内的小型医院信息管理系统,实现不同员工登录、病人挂号就医、病人信息查询、医生出具处理处方及划价、门诊收费与统计等功能。本文简要介绍了医院管理系统的项目背景和意义,着重阐述了该系统的开发实现过程,从系统目标,需求分析、总体设计、详细设计、到系统测试等各个环节都进行了详细的分析和描述。
关键词:数据库;PowerBuilder;就诊
The Design and Implementation of a Small Scale Hospital Information Management System
Abstract
The small scale hospital information management system is designed for improving the information management of small hospital, reducing the labor intensity and enhancing working efficiency. This system can support the administration of the hospital and manage the business. In addition, it can help facilitate the patient, and bring social and economic interest to the hospital.
This system uses PowerBuilder as developing language ,which is designed according to software life cycle. The system can implement the patient’s registration before his going to see a doctor, doctor’s processing prescription and management of expense. The thesis introduces the system’s project background and significance briefly, elaborates the system’s implementation process. It also analyses and describes all the stages of the system, including feasibility study, demand analysis, outline design, detailed design and system test.
Key words: database; PowerBuilder; prescription
目 录
论文总页数:30页
1 引言 1
1.1 课题背景 1
1.2 国内外研究现状 1
1.3 本课题研究的意义 1
2 关键技术介绍 1
2.1 开发工具及运行环境 1
2.1.1 总体开发工具及环境 1
2.1.2 开发工具简介 1
2.2 系统需求分析 2
2.3 系统功能结构设计 3
2.4 数据库设计与实现 4
3 本系统功能模块设计与实现 7
3.1 应用程序对象设计 7
3.2 职工登录界面 8
3.3 主界面 9
3.4 挂号系统模块 12
3.5 就诊管理模块 15
3.6 模板管理模块 18
3.7 数据管理模块 19
3.8 报表模块 22
4 关键功能点的测试 23
4.1 登录模块测试 23
4.2 用户密码修改功能点测试 24
4.3 病人费用报表功能测试 26
结 论 27
参考文献 28
致 谢 29
声 明 30
1 引言
1.1 课题背景
随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。人们的身体健康也在不断受到重视。因此,医院进行现代化管理就变得尤为重要。目前社会正处于健保发展方兴未艾的时代,各医疗院所莫不兢兢业业地改善本身的体制或管理方式,以因应健保越来越严格的规范。小型医院信息管理系统是适应时代发展的需要,提高管理的效率而开发设计的。
1.2 国内外研究现状
一个完整的医院信息管理系统应该既包括医院管理信息系统,又包括临床医疗信息系统,国外研究机构在力求实现医院信息管理系统的完整性。临床信息管理系统在数据处理的实时性要求、相应速度、安全保密等方面一般要比管理信息系统有更苛刻的要求。而医院管理信息系统的计算机技术较为单纯和简单,也由于医院管理信息系统以处理文字和数字类数据为主,较少设计声音、图象、多媒体数据的动态传递等复杂要求,实现起来容易的多。
1.3 本课题研究的意义
本系统通过对病人信息管理系统方案的设计和实施,提出一种对病人在就诊过程中产生的信息进行数字化管理的技术,为门诊建立起信息高速公路,促使医院门诊逐步形成方便、科学、合理的管理模式。从根本上改变传统的依靠文件等信息的传递方式,实现无纸化办公,简化就诊手续,加快信息流通速度,提高治疗效率,基本实现医院系统的数字化管理。同时,本系统对病人既往病史以及用药记录存档,既便于医生更加准确的对当前病人的诊断,同时也有利于医生对各种病例进行分析研究。病历模板的套餐制更具灵活性。
2 关键技术介绍
2.1 开发工具及运行环境
2.1.1 总体开发工具及环境
本系统采用的软件开发工具及环境如下:
Ø 操作系统:WINDOWSXP
Ø 编程工具:PowerBuilder9.0
Ø 数据库:ACCESS
2.1.2 开发工具简介
PowerBuilder是一个图形化的应用程序开发环境。使用PowerBuilder开发的应用软件由窗口构成,窗口中不仅可以包含按钮、下拉列表框及单选按纽等标准的Windows控件,还可以有PowerBuilder提供的特殊控件。这些特殊控件可以使应用软件更容易使用,使应用软件的开发效率更高。
例如,数据窗口就是PowerBuilder提供的一个集成度很高的控件,使用该控件可以很方便地从数据库中提取数据,很简单地检索数据,提供图形化的数据显示方式,创建统计功能非常强大的数据统计表。由于数据窗口对数据的操作是通过事务进行的,所以对数据的操作有很强的可靠性。这些都为开发功能强大的数据库应用软件提供了可靠的保证。
商业化的软件开发要求有很好的移植性。PowerBuilder既可以跨平台开发,也可以发行跨平台软件。例如,在Windows 95下开发的程序,可以不修改源程序而形成UNIX下的执行文件或Macintosh下的执行文件。在开发小组中,不同成员可以使用不同的开发环境,但由于PowerBuilder的支持,在不同的开发环境下看到的共享PowerBuilder对象是相同的,所以仍可以同时开发同一个应用程序。
随着软件技术的不断发展,PowerBuilder 9.0及时地强化了开发功能,并提供了一些配套的开发工具,成为一种易于使用的、可伸缩的并经实践证明的快速集成开发环境。它在给用户提供一条转移到下一代平台的途径的同时,使用户仍能够保护和扩展现有的技术和应用上的投资。
2.2 系统需求分析
病人在就诊过程中,基本的业务流程如图1所示:
图1 业务流程图
通过对病人就诊流程及管理的调查和了解,初步确定了该系统的基本需求情况:
1. 在病人就诊之前,必须进行挂号,包括病人的最基本信息,挂号费用,预存费等。
2. 在病人进行挂号的同时,可以自动为病人分配病历号,作为病人在就诊过程中的唯一标识。
3. 在病人就诊时,医生可以对病人基本信息(包括简要病史等等)进行登记。
4. 对病人每次就医的主诉,病历,处方进行输入,并可以进行查询和维护。
5. 各种化验检查信息的输入、查询和维护,并可以进行异常提醒。
6. 对病人的预付款进行管理,并且当预付金额不够时可以提醒补交预付款。
7. 对病人就诊过程中的各种费用进行管理。
8. 可以打印病人预付款单据和费用凭单。
9. 医生可以查询病人治疗情况、化验检查结果,以便跟踪病人病情发展情况,同时也有助于医生对各种病例进行分析研究。
2.3 系统功能结构设计
本系统划分为7个功能模块,系统功能模块图如图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)。此表字段用来保存病人的相关详细信息,包括病人基本信息和病人在医院就诊相关信息。
表1 ghdj
字段名
数据类型
字段大小
必填字段
jzid
文本
14
是
blh
文本
8
是
xm
文本
20
否
sfzh
数字
小数
否
xb
文本
4
否
sr
日期/时间
短日期
否
hf
文本
4
否
dz
文本
100
否
dh
文本
15
否
ryrq
日期/时间
短日期
否
kb
文本
10
否
zs
文本
200
否
xbs
文本
200
否
bl
文本
200
否
cf
文本
200
否
yz
文本
200
否
ygh
文本
5
否
2. 挂号表(ghb):流水号(id),病历号(blh),日期(rq),时间(sj),挂号费(ghf),金额(je)。主码是流水号(id)。此表字段用来记录病人在医院挂号就医时产生的相关数据。
表2 ghb
字段名
数据类型
字段大小
必填字段
id
文本
9
是
blh
文本
8
否
rq
日期/时间
否
sj
日期/时间
否
ghf
数字
长整型
否
je
数字
长整型
否
3. 化验检查表(hyjc):病历号(blh),化验日期(hyrq),化验时间(hysj),检验员(jyy),状态(zt)等,其中化验检查中的具体项目由于数目众多,在此就不一一列出。主码是病历号(blh),化验日期(hyrq)。此表字段用来记录病人在院就医时不同状态的检查产生的结果
表3 hyjc
字段名
数据类型
字段大小
必填字段
blh
文本
8
是
hyrq
日期/时间
是
rq
日期/时间
是
zt
数字
长整型
否
jyy
文本
5
否
4. 费用表(fyb):费用凭单号(id),病历号(blh),项目内容(xmnl),数量(sl),收费科室(sfks)。主码是费用凭单号(id),项目内容(xmnl)。此表字段用来记录病人在院所做就医项目的相关信息。
表4 fyb
字段名
数据类型
字段大小
必填字段
id
文本
14
是
blh
文本
8
是
xmnl
文本
13
是
sfks
文本
20
否
sl
数字
长整型
否
5. 药品库表(ypkb):药品编号(ypbh),药品名(ypm),类别(lb),价格(jg),包装规格(bzgg),单位(dw),药用字典(yyzd)。主码是药品编号(ypbh)。此表字段用来记录医院各种项目药品的相关信息。
表5 ypkb
字段名
数据类型
字段大小
必填字段
ypbh
文本
13
是
ypm
文本
30
是
lb
文本
4
否
jg
数字
小数
否
bzgg
文本
6
否
dw
文本
6
否
yyzd
文本
100
否
6. 病历处方表(blcfb):模板号(mbh),病症名称(bzmc),病历内容(blnr),处方内容(cfnr),主诉内容(zsnr),开方医生(ygh)。主码是模板号(mbh)。此表字段用来记录医生对病症的研究和描述,方便医生对同种病症不同情况进行对比研究,提高医生的工作效率,帮助医生进行诊断,判断更为准确。
表6 ypkb
字段名
数据类型
字段大小
必填字段
mbh
文本
14
是
bzmc
文本
100
否
blnr
文本
200
否
cfnr
文本
200
否
zsnr
文本
200
否
ygh
文本
5
否
7. 员工表(ygb):员工号(ygh),员工名(kb),科别(kb),职位(zw),密码(pwd),等级(dj)。主码是员工号(ygh)。此表字段用来记录医院员工的基本信息并在登陆时的根据登记判断其权限。
表7 ypkb
字段名
数据类型
字段大小
必填字段
ygh
文本
5
是
ygm
文本
20
否
kb
文本
10
否
zw
文本
10
否
pwd
文本
10
否
dj
文本
10
否
3 本系统功能模块设计与实现
3.1 应用程序对象设计
PowerBuilder9.0开发的应用程序的入口点是PowerBuilder9.0的应用程序对象,运行是程序从这个入口点启动,所以应用程序对象的设计是应用程序设计的开始。
本应用程序对象中用到Open事件,输入如下程序代码:
// Profile mzys2
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=mzys2;UID=;PWD='"
connect;
//打开程序登录窗口
opensheet(w_zhigong,w_zhujiemian,8,original!)
首先在应用程序对象的变量定义窗口中定义全局变量,如int G_input_time 定义的变量是登录时输入用户名和密码的次数,string yg_name定义的是用户名,string yg_ygh定义的是员工号,string g_pwd定义的是密码,string g_blh 定义病历号,string g_jzid 定义病人的就诊号等等。
3.2 职工登录界面
应用程序运行后第一个出现的窗口就是w_login登陆窗口,界面如图5所示。
图5 职工登陆界面
用户必须通过职工登录窗口才能够进入主界面。系统登录窗口主要实现功能是确认用户身份及级别,并根据用户级别主界面菜单中该用户可以进行的操作。
本系统根据医院具体情况将医院职工分为种5种职位,院长、医生、放射员收费员和化验员。其中,院长级别最高,可以使用主界面菜单中的任何一种操作,其他各种职位级别都只能享有各自级别的权限。医生可以进行病人就诊的信息录入、查询和维护,定义主诉病历处方模板的定义和查询,化验检验结果的查询、费用的查询等;收费员可以进行挂号收费及统计,预付费用的收缴和统计等;放射员可以对病人的各项检查结果进行录入、查询、维护等;化验员则是对病人的各项化验结果进行录入、查询、维护。
在登录界面的OPEN()函数中定义一个游标declare guser cursor,该游标在ygb表中搜索ygm然后添加到员工名的下拉控件中,其代码如下:
string ls_user
declare guser cursor for
select ygm
from ygb
order by ygh;
open guser;
if SQLCA.SQLCode=-1 then
MessageBox("数据错误",SQLCA.SQLErrText)
else do
if ls_user<>'' then ddlb_1.additem(ls_user)
fetch guser into :ls_user;
loop while sqlca.sqlcode=0
if sqlca.sqlcode=-1 then
messageBOX("数据错误",sqlca.sqlerrtext)
end if
end if
close guser;
ddlb_1.selectitem(0)
在“确定”按纽中当判断员工登录条件正确时则根据员工的职位判断那些菜单功能将能被使用。
3.3 主界面
首先设计主菜单m_zhujiemian,根据各模块设计好菜单项和各菜单项下面的子菜单项,并可添加为用户登录和退出以及挂号Toolbar,提供快捷操作。然后在主窗口w_zhujiemian将menuname中选择设计好的主菜单m_zhujiemian。应用程序的主要功能都是在主窗口w_zhujiemian及在其下打开的众多窗口中完成的。主界面如图6所示。
图6 医院管理系统主界面
不同用户登录后,由于职位级别不同,主界面也会有些差异,不能操作的菜单项为灰色,因此,下面我们选用的都是“院长”级别登录后的主界面,将主窗口的WindowType属性设立为mdi型,以便在其下以特定方式打开其他窗口。
主界面设计中主要是主菜单m_zhujiemian的设计,该菜单结构及代码如下:
⑴登录:
① 用户登录:
Clicked事件程序代码:
opensheet(w_zhigong,w_zhujiemian,8,original!)
② 退出:
Clicked事件程序代码:close(w_zhujiemian)
⑵挂号系统:
① 挂号:
Clicked事件程序代码:opensheet(w_guahao,w_zhujiemian,8,original!)
② 预付:
Clicked事件程序代码:opensheet(w_yufu,w_zhujiemian,8,original!)
⑶就诊管理:
① 就诊入口:
Clicked事件程序代码:
opensheet(w_jiuzhenrukou,w_zhujiemian,8,original!)
② 就诊历史:
Clicked事件程序代码:
opensheet(w_lishi,w_zhujiemian,8,original!)
③ 检查报告:
Clicked事件程序代码:
opensheet(w_hyjc_jcbg,w_zhujiemian,8,original!)
④ 化验:
Ø 血常规报告:Clicked事件程序代码
openSheet(w_hyjc_twd,w_main,8,Layered!)
Ø 尿常规报告:Clicked事件程序代码
opensheet(w_hyjc_ncg,w_zhujiemian,8,original!)
Ø 生化检查报告:Clicked事件程序代码
opensheet(w_hyjc_shjc,w_zhujiemian,8,original!)
⑷模板管理:
① 定义完整模板:Clicked事件程序代码:
opensheet(w_jb,w_zhujiemian,8,original!)
② 定义主诉模板:Clicked事件程序代码:
opensheet(w_dingyizs,w_zhujiemian,8,original!)
③ 定义病历模板:Clicked事件程序代码:
opensheet(w_dingyibl,w_zhujiemian,8,original!)
④ 定义处方模板:Clicked事件程序代码:
opensheet(w_dingyicf,w_zhujiemian,8,original!)
⑤ 模板查询:Clicked事件程序代码:
opensheet(w_blzsmb,w_zhujiemian,8,original!)
⑸数据管理:
① 挂号人数统计:Clicked事件程序代码:
opensheet(w_ghtongjilb,w_zhujiemian,8,original!)
② 病人基本信息查询:Clicked事件程序代码:
opensheet (w_jbxx_cx,w_zhujiemian,8,original!)
③ 预付款查询:Clicked事件程序代码:
opensheet(w_yufucx,w_zhujiemian,8,original!)
④ 病人血常规查询:Clicked事件程序代码:
opensheet(w_hyjc_xcg_cx,w_zhujiemian,8,original!)
⑤ 病人尿常规查询:Clicked事件程序代码:
opensheet(w_hyjc_ncg_cx,w_zhujiemian,8,original!)
⑥ 病人生化查询:Clicked事件程序代码:
opensheet(w_hyjc_shjc_cx,w_zhujiemian,8,original!)
⑦ 病人检查结果查询:Clicked事件程序代码:
opensheet(w_hyjc_jcbg_cx,w_zhujiemian,8,original!)
⑹数据管理:
① 用户安全维护:Clicked事件程序代码:
opensheet(w_change,w_zhujiemian,8,original!)
② 常用维护药字典维护:Clicked事件程序代码:
opensheet(w_yaodian,w_zhujiemian,8,original!)
③ 病人基本信息维护:Clicked事件程序代码:
opensheet(w_jbxx_wh,w_zhujiemian,8,original!)
④ 血常规检查结果维护:Clicked事件程序代码:
opensheet(w_hyjc_xcg_wh,w_zhujiemian,8,original!)
⑤ 尿常规检查结果维护:Clicked事件程序代码:
opensheet(w_hyjc_ncg_wh,w_zhujiemian,8,original!)
⑥ 生化检查结果维护:Clicked事件程序代码:
opensheet(w_hyjc_shjc_wh,w_zhujiemian,8,original!)
⑦ 检查结果维护:Clicked事件程序代码:
opensheet(w_hyjc_jcbg_wh,w_zhujiemian,8,original!)
⑺报表:
① 病人预付款报表:Clicked事件程序代码:
opensheet(w_yufu_bb,w_zhujiemian,8,original!)
② 病人费用报表:Clicked事件程序代码:
opensheet(w_chufangjj_bb,w_zhujiemian,8,original!)
⑻窗口:没有代码,用来显示已经打开的窗口名称。
3.4 挂号系统模块
根据医院科室及挂号类型类设计挂号系统,自动产生病历号。先根据数据库表ghb建立挂号系统的数据窗,然后建立挂号窗口,并使用该数据窗。挂号病人要进入医院门诊就诊的第一步就是进行挂号,只有进行挂号后才能获得病历号,得到其他服务。挂号界面如图7所示:
图7 挂号系统界面
主要实现功能有自动分配病历号,录入员无法修改。单击“保存” 按钮的时候,如图8所示:
图8 挂号保存界面
“保存”按钮中的代码最主要的通过设置过滤条件来使数据窗口只能显示当前一条记录。
本系统中,需要处理的数据繁多,如果仅是靠普通控件来进行输入、查询和维护等操作,只能依靠纯粹的手写代码来进行与数据库数据之间的交互,将会带来极大的不便。为此,采用数据窗口来进行对数据的处理。通过数据窗口,可以对数据库进行操作,不但可以对每个数据库的表进行检索、查询、插入、删除和更新,而且还可以为数据指定输入格式、输出格式和显示风格等。图7中左边显示数据的部分既为Grid风格的数据窗口。本系统中还用到Group风格的来制作报表,将在图9出现。
图9 挂号打印界面
如上图所示,在单击了图7图中的“打印”之后,系统会自动按照程序中的代码的要求将自动流水号传递到报表窗口,其中的“预付款(挂号)单据”所在的数据窗口即为Group窗口应用于数据报表的典型。
在挂号过程中,除了会为病人的分配此次的自动流水号之外,也会要为病人分配一个病历号,由年份(4位)+序列号(4位)构成。每到新的一年,序列号都是从0001开始;如果不是在新的一年,则序列号是已经在医院就诊的病人的人数加上1构成。为此,每次分配病历号时,从数据库中挂号表中提取最大的病历号,将其中的年份与当前计算机上的年份相比较,如果相等,则将后4位的序列号加1,如果是新的一年则直接让序列号位0001。具体实现是在窗口中定义,代码如下:
//分配病历号
string a,b,d,c,n
SELECT max(ghb.blh)
into :a
FROM ghb;
b=left(a,4)
d=string(year(today()))
c=right(a,4)
if b>d then
messagebox('出错','当前系统时间有误,请先调整系统时间',stopsign!,OK!)
else
if b=d then
c=string(integer(c)+1)
n=fill('0',4 - len(c))
c=n+c
else
c='0001'
end if
a=d+c
blh1=a
end if
分配病人自动流水号,病历号的同时,也是要同时在病人基本信息表当中插入信息,首先也是先为表的主码“就诊号”分配号码。采用自定义的函数jzh():
string a,b,c,d,e,f,g,h,i
SELECT max(jzid)
INTO :a
FROM ghdj;
b=string(year(today())) //当前系统日期中年份的后两位
c=string(month(today())) //当前系统日期中的月份
c=fill('0',2 - len(c))+c
d=string(Day(today())) //当前系统日期中的日期
d=fill('0',2 - len(d))+d
e=left(a,8) //表中最大ID的前八位
f=right(a,6) //表中最大ID的后六位,表示序列号
g=right(e,4)
h=right(e,2) //表中最大ID的七、八位,表示日期
g=left(g,2) //表中最大ID的五、六位,表示月份
e=left(e,4) //表中最大ID的前四位,表示年份
if b<e then
messagebox("出错","当前系统时间有误,请先调整系统时间")
return
elseif b>e then
i=b+c+d+'000001'
else
if c<g then
messagebox("出错","当前系统时间有误,请先调整系统时间")
return
elseif c>g then
i=b+c+d+'000001'
else
if d<h then
messagebox("出错","当前系统时间有误,请先调整系统时间")
return
elseif d>h then
i=b+c+d+'000001'
else f=string(long(f)+1)
i=b+c+d+fill('0',6 - len(f))+f
end if
end if
end if
st_11.text=i
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 病人检查结果录入界面
在这个界面中最主要的就是“增加”、“退出”几个按钮中的相关代码完成了对数据的录入保存:
//判断窗体记录是否需要保存
int MCount
int updateornot
mcount=dw_hyjc_jcbg.modifiedcount()
if mcount>0 then
updateornot=messagebox("保存修改","您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel! )
if updateornot=1 then
if update(dw_hyjc_jcbg,true,false)=1 then
dw_hyjc_jcbg.resetupdate()
commit;
else
rollback;
messagebox("错误!!!","数据保存失败")
return
end if
elseif updateornot=2 then
rollback;
elseif updateornot=3 then
return;
end if
end if
3.6 模板管理模块
在模板管理模块设计是为了医生可以完整的定义主诉病历处方模板,可以分别定义主诉、病历、处方的模板以及在必要的时候进行模板查询。此模块将更加方便医生平时的临床诊断,为临床科研提供依据。首先建立数据窗选择数据库表blcfb中的字段mbh,bzmc,bznr,cfnr,zsnr,ygh。在窗口中运用该数据窗,通过该数据窗可将数据保存到数据表中。以下的录入模板设计类似此病历处方模板录入模板如图14。
展开阅读全文