中左边显示数据的部分既为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)
第 13 页 共 30 页
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 messagebox(\出错\当前系统时间有误,请先调整系统时间\ return elseif b>e then i=b+c+d+'000001' else if c messagebox(\出错\当前系统时间有误,请先调整系统时间\ return elseif c>g then i=b+c+d+'000001' else if d messagebox(\出错\当前系统时间有误,请先调整系统时间\ return elseif d>h then i=b+c+d+'000001' 第 14 页 共 30 页 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所示。 第 15 页 共 30 页 图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号也将被传递。 界面中可以通过“保存”、“新增”等系列按钮完成对病人此次就诊的记录工作,同时医生也可以通过“申请”按钮对需要进行进一步详细检查的病人提出检查申请,另外可以在“处方计价”当中对病人的药方进行计价。在医生对病人出具病历处方的同时可以随时查阅“病历处方模板”,以及可以通过“查看报告”查看病人的既往检查化验。 第 16 页 共 30 页 图12 就诊界面 上述的该功能模块中的相关功能都是“医生”的权限范围,以下将的检查化验的报告界面分别属于“放射员” 和“化验员”的职限。 图13 病人检查结果录入界面 在这个界面中最主要的就是“增加”、“退出”几个按钮中的相关代码完成了对数据的录入保存: //判断窗体记录是否需要保存 int MCount int updateornot mcount=dw_hyjc_jcbg.modifiedcount() if mcount>0 then updateornot=messagebox(\保存修改\您修改了数据窗口中的数据,现在是否保存?\ if updateornot=1 then if update(dw_hyjc_jcbg,true,false)=1 then dw_hyjc_jcbg.resetupdate() 第 17 页 共 30 页