feat: 门诊手术中计费功能
- 数据库:在adm_charge_item表添加SourceBillNo字段 - 后端实体类:更新ChargeItem.java添加SourceBillNo字段 - 前端组件:创建手术计费界面(基于门诊划价界面) - 后端API:扩展PrePrePaymentDto支持手术计费标识 - 后端Service:扩展getChargeItems方法支持手术计费过滤 - 门诊手术安排界面:添加【计费】按钮 注意事项: - 需要手动执行SQL脚本:openhis-server-new/sql/add_source_bill_no_to_adm_charge_item.sql - 术后一站式结算功能待后续开发
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
-- 在adm_charge_item表添加来源业务单据字段
|
||||
-- 用于追溯费用是来源于手术计费
|
||||
-- SourceBillNo = 手术申请单号
|
||||
|
||||
-- 添加SourceBillNo字段
|
||||
ALTER TABLE adm_charge_item ADD COLUMN IF NOT EXISTS source_bill_no VARCHAR(64);
|
||||
|
||||
-- 添加注释
|
||||
COMMENT ON COLUMN adm_charge_item.source_bill_no IS '来源业务单据号(如手术申请单号)';
|
||||
|
||||
-- 创建索引以提高查询性能
|
||||
CREATE INDEX IF NOT EXISTS idx_source_bill_no ON adm_charge_item(source_bill_no);
|
||||
@@ -0,0 +1,71 @@
|
||||
-- 创建日结医保结算表
|
||||
CREATE TABLE IF NOT EXISTS yb_day_end_settlement (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
settlement_no VARCHAR(64) NOT NULL,
|
||||
settlement_date DATE NOT NULL,
|
||||
settlement_type VARCHAR(20) DEFAULT 'daily',
|
||||
insurance_type VARCHAR(50),
|
||||
total_visits INTEGER DEFAULT 0,
|
||||
total_amount NUMERIC(15,2) DEFAULT 0.00,
|
||||
insurance_pay_amount NUMERIC(15,2) DEFAULT 0.00,
|
||||
account_pay_amount NUMERIC(15,2) DEFAULT 0.00,
|
||||
personal_pay_amount NUMERIC(15,2) DEFAULT 0.00,
|
||||
fund_pay_sum_amount NUMERIC(15,2) DEFAULT 0.00,
|
||||
status CHAR(1) DEFAULT '0',
|
||||
operator VARCHAR(50),
|
||||
remark VARCHAR(500),
|
||||
create_by VARCHAR(64),
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
update_by VARCHAR(64),
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 添加注释
|
||||
COMMENT ON TABLE yb_day_end_settlement IS '日结医保结算表';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.settlement_no IS '结算单号';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.settlement_date IS '结算日期';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.settlement_type IS '结算类型 (daily, weekly, monthly)';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.insurance_type IS '医保类型 (urbanEmployee, urbanRuralResident, newRuralCooperative, selfPaid)';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.total_visits IS '总人次';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.total_amount IS '总金额';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.insurance_pay_amount IS '医保统筹支付金额';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.account_pay_amount IS '个人账户支付金额';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.personal_pay_amount IS '个人自付金额';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.fund_pay_sum_amount IS '医保基金支付总额';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.status IS '状态 (0正常 1停用)';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.operator IS '操作员';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.remark IS '备注';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.create_by IS '创建者';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.create_time IS '创建时间';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.update_by IS '更新者';
|
||||
COMMENT ON COLUMN yb_day_end_settlement.update_time IS '更新时间';
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX IF NOT EXISTS idx_settlement_date ON yb_day_end_settlement(settlement_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_settlement_no ON yb_day_end_settlement(settlement_no);
|
||||
CREATE INDEX IF NOT EXISTS idx_settlement_type ON yb_day_end_settlement(settlement_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_insurance_type ON yb_day_end_settlement(insurance_type);
|
||||
|
||||
-- 创建更新时间函数(如果不存在)
|
||||
CREATE OR REPLACE FUNCTION update_modified_column()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.update_time = CURRENT_TIMESTAMP;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
|
||||
-- 创建更新时间触发器
|
||||
DO $$
|
||||
BEGIN
|
||||
DROP TRIGGER IF EXISTS update_yb_day_end_settlement_modtime ON yb_day_end_settlement;
|
||||
CREATE TRIGGER update_yb_day_end_settlement_modtime
|
||||
BEFORE UPDATE ON yb_day_end_settlement
|
||||
FOR EACH ROW EXECUTE FUNCTION update_modified_column();
|
||||
END $$;
|
||||
|
||||
-- 插入示例数据
|
||||
INSERT INTO yb_day_end_settlement (settlement_no, settlement_date, settlement_type, insurance_type, total_visits, total_amount, insurance_pay_amount, account_pay_amount, personal_pay_amount, fund_pay_sum_amount, status, operator, remark, create_by) VALUES
|
||||
('YBDS20260202001', '2026-02-02', 'daily', 'urbanEmployee', 150, 150000.00, 120000.00, 15000.00, 15000.00, 135000.00, '0', 'admin', '2026年2月2日城镇职工医保日结', 'admin'),
|
||||
('YBDS20260202002', '2026-02-02', 'daily', 'urbanRuralResident', 80, 80000.00, 64000.00, 8000.00, 8000.00, 72000.00, '0', 'admin', '2026年2月2日城乡居民医保日结', 'admin'),
|
||||
('YBDS20260202003', '2026-02-02', 'daily', 'newRuralCooperative', 60, 60000.00, 48000.00, 6000.00, 6000.00, 54000.00, '0', 'admin', '2026年2月2日新农合医保日结', 'admin');
|
||||
27
openhis-server-new/sql/insert_yb_day_end_settlement_menu.sql
Normal file
27
openhis-server-new/sql/insert_yb_day_end_settlement_menu.sql
Normal file
@@ -0,0 +1,27 @@
|
||||
-- 添加日结医保结算菜单项到系统菜单表
|
||||
-- 假设医保管理模块的父级菜单ID为某个值,这里我们先查询医保管理相关的菜单ID
|
||||
|
||||
-- 首先查找医保相关的父菜单ID(如果没有找到,需要手动指定一个合适的父菜单ID)
|
||||
-- 偌设我们使用一个常见的父级ID,或者创建一个新的医保管理顶级菜单
|
||||
|
||||
-- 添加医保管理顶级菜单(如果不存在的话)
|
||||
INSERT INTO sys_menu
|
||||
(menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
SELECT '医保管理', 0, 7, 'ybmanagement', '', NULL, 'YbManagement', '1', '0', 'M', '0', '0', '', 'medication', 'admin', NOW(), 'admin', NOW(), '医保管理菜单'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu WHERE menu_name = '医保管理' AND menu_type = 'M'
|
||||
);
|
||||
|
||||
-- 获取医保管理菜单ID
|
||||
DO $$
|
||||
DECLARE
|
||||
yb_management_menu_id BIGINT;
|
||||
BEGIN
|
||||
SELECT menu_id INTO yb_management_menu_id FROM sys_menu WHERE menu_name = '医保管理' LIMIT 1;
|
||||
|
||||
-- 添加日结医保结算子菜单
|
||||
INSERT INTO sys_menu
|
||||
(menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES
|
||||
('日结医保结算', yb_management_menu_id, 1, 'dayEndMedicalInsuranceSettlement', 'ybmanagement/dayEndMedicalInsuranceSettlement/index', NULL, 'DayEndMedicalInsuranceSettlement', '1', '0', 'C', '0', '0', 'ybmanage:dayEndMedicalInsuranceSettlement:view', 'document', 'admin', NOW(), 'admin', NOW(), '日结医保结算菜单');
|
||||
END $$;
|
||||
Reference in New Issue
Block a user