具体说明如下:
a.当录入图标在窗体的上半部分时,增加、删除的是gh_base_request表;
b.当录入图标在窗体的下半部分时,增加、删除的是gh_base_request_segment表
c.控件的颜色为黄色的,是必须录入项,若不录,则会在提交时屏幕右上角‘信息提示区域’出现提示信息
d.这两张表为主从关系,gh_base_request为主表,gh_base_request_segment为从表,(主表一条记录对应从表多条记录),查询按钮可弹出窗口对主表进行查询
e.保存按钮,可对主从表同时进行保存,从表的起始号和结束号必须与主表的总号数有种对应关系,起始号、结束号不能有交叉,从表的最后一条记录的结束号必须等于总号数
f.当删除gh_base_request表记录时,子表gh_base_request_segment的相应主表的记录(一条或多条)同时被删除
g.gh_base_request.op_id取全局变量gv_user_mi,op_date取服务器时间
h.录入从表时,要求起始号和结束号不能交叉,若交叉保存时会有提示信息
2.生成号表模块
主要功能是由基础号表维护模块
(1)的两张表,生成使用号表(gh_record)
使用号表(gh_record)的表结构如下:
gh_record(挂号纪录)
字段
数据类型
宽度
描述
主键
record_sn
identityint
4
流水号
*
request_date
datetime
8
日期
i
req_type
char
2
号类
i
ampm
char
2
上午/下午(a/p)
i
unit_sn
char
7
科别
i
group_sn
char
7
组
i
doctor_sn
char
5
医生姓名
i
clinic_type
char
2
号别
i
sequence_no
smallint
2
挂号顺序号(加号置负)
i
patient_id
char
12
病人ID
times
smallint
2
次数(退号置负)
i
name
varchar
32
病人名
response_type
char
3
病人身份
enter_opera
char
5
录入操作员
enter_date
datetime
8
录入时间
report_date
datetime
8
报表时间(打报表时间)
open_flag
char
1
开放标志
visited_flag
char
1
到院标志,1已到,0未到,9应退
window_no
tinyint
1
窗口号
数据生成方法:
此表数据是首先由gh_base_request结合gh_base_request_segment在生成号表时生成,凡是gh_base_request字段相同数据均复制过来,其它数据在挂号时填入,一般情况下挂号员无权增加纪录,在得到医生同意下,可增加本医生话号纪录,此时sequence_no负顺序增加以代表加号,挂号纪录内容一般由基础号表生成时填入,但在加号情况时除了系统自动产生字段内容外其它字段内容由挂号员填入
特殊字段数据含义:
sequence_no——顺序号,系统自动产生
patient_id——挂号时通过条件从mz_patient_mi找到patient_id填入
times——挂号时通过条件从mz_patient_mi找到max_times+1填入,病
人退号置负
name——挂号时通过条件从mz_patient_mi找到name填入response_type——挂号时通过条件从mz_patient_mi找到response_type
填入
report_date——挂号员出结算报表填入当前时间
open_flag——代表此纪录是否可用,先由系统自动生成,挂号员根据医
生要求可修改
visited_flag——病人打发票置此标志0=未到、1=已到
window_no——gv_window_no
a.窗体的左半部分为选择的所需号表的时间范围,按查询按钮列出相应时间段的基础号表记录,过滤按钮可在查询结果的基础上进一步查询(具体),按生成按钮则根据基础号表的信息生成使用号表(gh_record,窗体的右半部分)
b.在选择所需号表时间范围时,如周或天没有录入,则在窗体右上角信息提出区域显示提示信息
c.刷新按钮为重新开始
d.根据基础号表(gh_base_request)的总号数(n)和段号表(gh_base_request_segment)结合医生外出表(gh_doctor_out)生成使用号表的n条记录(sequence_no为1….n),times,patient_id,name,response_type,enter_opera,enter_date,report_date,visited_flag字段为空,即未挂号状态
3.挂号记录维护模块
表为gh_record
主要功能对未挂出的使用号表(gh_record)进行维护
a.查询按钮可弹出窗口根据条件对使用号表进行查询,查询结果列在窗体的下半部分
b.该模块可对使用号表进行增加、修改、删除(patient_id为空)
c.当增加挂号记录时,录入控件颜色为黄色的必须录入
d.保存后挂号顺序号(sequence_no)根据修改结果进行重新排序,对已经挂出的号的顺序号不变或只会提前
e.维护时,提示信息显示在信息提示窗口
4.加号处理模块(gh_record)
根据加号数量增加gh_record的记录,所加的号sequence_no为负,属于单表维护,各字段由用户自录。
上部分为查询条件,中间为加号的临时使用表,下部分为使用号表(gh_record)。
点击增加按钮增加临时使用表,保存时才增加至使用号表(gh_record)中;点击删除按钮可删除加号临时表中记录或使用号表(gh_record)记录。
5.挂号业务窗口
主要涉及的表gh_record,gh_op_receipt,gh_detail_charge,gh_deposit,
gh_receipt,gh_receipt_charge,mz_patient_mi,mz_visit_table
表结构如下:
gh_detail_charge(费用明细)
字段
数据类型
宽度
描述
主键
数据来源
patient_id
char
12
病人id
*
gh_record.patient_id
times
smallint
2
次数(退号置负)
*
gh_record.times
item_no
int
4
流水号
*
系统产生
ledger_sn
int
4
结账次数
*
mz_patient_mi.max_ledgern_sn+1
happen_date
datetime
8
发生时间(申诉冲算使用)
系统时间
charge_code
char
6
收费码
zd_charge_item.code
audit_code
char
5
核算码(来自zd_audit_item)
zd_charge_item.audit_code
bill_code
char
3
账单码
exec_sn
char
7
执行科室
org_price
decimal
8.2
应收费用
zd_charge_item.charge_amount
charge_price
decimal
8.2
实收费用
见算法A
charge_amount
int
4
数量
1
charge_group
char
2
类别分组
zd_charge_item.per_group
enter_opera
char
5
录入员
gv_user_mi
enter_date
datetime
8
录入时间
getdate()
enter_win_no
tinyint
1
录入窗口
gv_win_no
price_opera
char
5
收费员
gv_user_mi
price_date
datetime
8
收费时间
getdate()
confirm_win_no
tinyint
1
收费窗口
gv_win_no
charge_status
char
1
状态(录入\划价、收费、打票)
trans_flag
char
1
传输标志
gh_zd_clinic_charge.trans_flag
或
gh_zd_clinic_type.trans_flag
fit_type
char
1
gh_receipt(发票)
字段
数据类型
宽度
描述
主键
数据来源
patient_id
char
12
病人id
*
gh_detail_charge.patient_id
times
smallint
2
次数
gh_record.times
ledger_sn
int
4
结账次数
*
gh_detail_charge.Ledger_sn
receipt_sn
int
4
机制号
mz_patient_mi.max_receipt_sn+1
pay_unit
char
2
付款方
zd_charge_percent.pay_unit
charge_total
float
金额
settle_opera
char
5
结算员
当前操作员
settle_date
datetime
8
结算时间
系统时间
price_opera
char
5
收费人
当前操作员
price_date
datetime
8
收费时间
系统时间
report_date
datetime
8
报表时间
报表时系统时间
receipt_no
varchar
12
手工号
操作员录入或自动
charge_status
char
1
结算类型(1=结算、2=结账)
gh_receipt_charge(发票账单明细)
字段
数据类型
宽度
描述
主键
patient_id
char
12
病人id
*
times
smallint
2
次数
*
ledger_sn
int
4
结账次数
*
receipt_sn
int
4
机制号
*
bill_code
char
3
账单码
*
charge
decimal
8.2
费用
pay_unit
decimal
3
负款方
gh_deposit(现金流水帐)
字段
数据类型
宽度
描述
主键
patient_id
char
4
病人id
*
item_no
int
4
流水号
*
ledger_sn
int
4
结账次数
*
times
smallint
2
次数
*
charge
decimal
8.2
金额
cheque_type
char
1
类型(a=现金、0=支票、记账单、汇票、内部支票、内部转账、欠账单、IC卡…)
cheque_no
varchar
12
发票号
depo_status
char
1
状态(1=交、2=退、3=结转、4=冲账、欠费、欠费补交…)
price_opera
char
5
收费员
price_date
datetime
8
收费时间
report_date
datetime
8
报表日期
gh_op_receipt(发票号初始)
字段
数据类型
宽度
描述
主键
operator
char
5
操作员
*
happen_date
datetime
8
发生时间
*
start_no
varchar
10
起始号
*
current_no
varchar
10
当前号
*
end_no
varchar
10
结束号
step_length
smallint
2
步长
deleted_flag
char
1
删除标志
说明:
纪录病人挂号情况。
挂号业务流程图:
Y
N
N
N
Y
a.打开挂号业务窗口前首先弹出发票号初始窗口(gh_op_receipt)———单表维护
必须向该表中添加记录(因为在打号条时(非手工发票),需取该表的current_no作为发票号),起始号、结束号要求为10位
b.挂号窗口
窗口下方为病人挂号信息
选择相应的号后必须先计价方可打票,成功后,会修改该涉及的所有表,具体如下:
表gh_record:
gh_record.patient_id=mz_patient_mi.patient_id
gh_record.name=mz_patient_mi.name
gh_record.times=mz_patient_mi.max_times
若人工选号选中,则号表顺序号(sequence_no)同挂号员所选。
gh_record.response_type=mz_paitient_mi.response_type
gh_record.enter_opera=gv_user_mi(全局变量)
gh_record.enter_date=服务器时间
visited_flag=1(当clinic_type<>电话预约)
visited_flag=0(当clinic_type=电话预约)
当手工发票没有选中时,
表gh_op_receipt:
每挂出一个号gh_op_receopt.current_no+步长step_length,
当current_no>end_no时,则此次挂号失败
表gh_detail_charge:
根据gh_record.clinic_type,gh_record.req_type,在gh_zd_clinic_charge和gh_zd_request_charge中找到相应的收费项目(zd_charge_item)
数据生成方法:
此表数据在挂号纪录生成时由程序生成,一条挂号纪录按号别、号类可生成多条明细
由一条挂号纪录生成费用明细算法:
通过挂号纪录可知病人patient_id,times,clinic_type,req_type,response_type,check_type(费别)在知道上述条件情况下,即可完成
patient_id=gh_record.patient_id
times=gh_record.times
item_no=记录号
ledger_sn=mz_patient_mi.max_ledger_sn
happen_date=系统服务时间
charge_code=gh_zd_clinic_charge.charge_code或gh_zd_request_charge.charge_code
audit_code=zd_charge_item.audit_code
bill_code=zd_charge_item.mz_bill_item
exec_sn=zd_charge_item.exec_unit
org_price=zd_charge_item.charge_price
charge_amount=1
charge_group=zd_c