diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__create_yb_mock_tables.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__create_yb_mock_tables.sql new file mode 100644 index 000000000..6347e053a --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V105__create_yb_mock_tables.sql @@ -0,0 +1,105 @@ +-- V105__create_yb_mock_tables.sql +-- 创建医保模拟服务器所需的数据库表 + +-- 1. 参保人信息表 +CREATE TABLE IF NOT EXISTS yb_psn_info ( + id BIGSERIAL PRIMARY KEY, + psn_no VARCHAR(50) NOT NULL UNIQUE, + psn_name VARCHAR(100), + sex_code VARCHAR(10), + sex_name VARCHAR(20), + birth_date VARCHAR(20), + id_card VARCHAR(20), + insur_type VARCHAR(100), + insur_area VARCHAR(100), + card_no VARCHAR(50), + balance DECIMAL(12,2) DEFAULT 0, + status VARCHAR(20) DEFAULT '正常', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 2. 电子处方表 +CREATE TABLE IF NOT EXISTS yb_recipe ( + id BIGSERIAL PRIMARY KEY, + recipe_no VARCHAR(50) NOT NULL UNIQUE, + psn_no VARCHAR(50), + encounter_no VARCHAR(50), + recipe_type VARCHAR(20), + total_amount DECIMAL(12,2), + self_pay DECIMAL(12,2), + insurance_pay DECIMAL(12,2), + status VARCHAR(20) DEFAULT '待结算', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 3. 事前事中商品库 +CREATE TABLE IF NOT EXISTS yb_product ( + id BIGSERIAL PRIMARY KEY, + item_code VARCHAR(50) NOT NULL UNIQUE, + item_name VARCHAR(200), + item_type VARCHAR(50), + spec VARCHAR(100), + unit VARCHAR(20), + price DECIMAL(12,2), + manufacturer VARCHAR(200), + approval_no VARCHAR(100), + status VARCHAR(20) DEFAULT '正常', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 4. 结算记录表 +CREATE TABLE IF NOT EXISTS yb_settle_record ( + id BIGSERIAL PRIMARY KEY, + settle_no VARCHAR(50) NOT NULL UNIQUE, + psn_no VARCHAR(50), + encounter_no VARCHAR(50), + settle_type VARCHAR(20), + total_amount DECIMAL(12,2), + insurance_pay DECIMAL(12,2), + self_pay DECIMAL(12,2), + account_pay DECIMAL(12,2), + cash_pay DECIMAL(12,2), + status VARCHAR(20) DEFAULT '成功', + settle_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 5. 签到签退记录表 +CREATE TABLE IF NOT EXISTS yb_sign_record ( + id BIGSERIAL PRIMARY KEY, + psn_no VARCHAR(50), + sign_type VARCHAR(20), + sign_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + terminal_no VARCHAR(50), + status VARCHAR(20) DEFAULT '成功' +); + +-- 6. 插入测试数据 - 参保人信息 +INSERT INTO yb_psn_info (psn_no, psn_name, sex_code, sex_name, birth_date, id_card, insur_type, insur_area, card_no, balance, status) VALUES +('P100001', '张三', '1', '男', '1980-01-15', '450123198001151234', '职工基本医疗保险', '南宁市', 'C2024000001', 12580.50, '正常'), +('P100002', '李四', '2', '女', '1985-03-20', '450123198503201234', '城乡居民基本医疗保险', '柳州市', 'C2024000002', 5620.00, '正常'), +('P100003', '王五', '1', '男', '1990-06-10', '450123199006101234', '职工基本医疗保险', '桂林市', 'C2024000003', 8950.25, '正常'), +('P100004', '赵六', '2', '女', '1975-12-25', '450123197512251234', '离休人员医疗保险', '梧州市', 'C2024000004', 25000.00, '正常'), +('P100005', '孙七', '1', '男', '1995-08-08', '450123199508081234', '城乡居民基本医疗保险', '北海市', 'C2024000005', 3200.75, '暂停'); + +-- 7. 插入测试数据 - 电子处方 +INSERT INTO yb_recipe (recipe_no, psn_no, encounter_no, recipe_type, total_amount, self_pay, insurance_pay, status) VALUES +('CF20240601001', 'P100001', 'MZ20240601001', '西药处方', 156.80, 23.52, 133.28, '已结算'), +('CF20240601002', 'P100002', 'MZ20240601002', '中药处方', 238.50, 71.55, 166.95, '待结算'), +('CF20240601003', 'P100003', 'ZY20240601001', '住院处方', 2580.50, 258.05, 2322.45, '已结算'); + +-- 8. 插入测试数据 - 结算记录 +INSERT INTO yb_settle_record (settle_no, psn_no, encounter_no, settle_type, total_amount, insurance_pay, self_pay, account_pay, cash_pay, status) VALUES +('JZ20240601001', 'P100001', 'MZ20240601001', '门诊结算', 156.80, 133.28, 23.52, 20.00, 3.52, '成功'), +('ZYJS20240601001', 'P100003', 'ZY20240601001', '住院结算', 15680.50, 14112.45, 1568.05, 1200.00, 368.05, '成功'); + +-- 9. 创建索引 +CREATE INDEX IF NOT EXISTS idx_yb_psn_info_psn_no ON yb_psn_info(psn_no); +CREATE INDEX IF NOT EXISTS idx_yb_recipe_psn_no ON yb_recipe(psn_no); +CREATE INDEX IF NOT EXISTS idx_yb_recipe_encounter ON yb_recipe(encounter_no); +CREATE INDEX IF NOT EXISTS idx_yb_settle_psn_no ON yb_settle_record(psn_no); +CREATE INDEX IF NOT EXISTS idx_yb_settle_encounter ON yb_settle_record(encounter_no); +CREATE INDEX IF NOT EXISTS idx_yb_sign_psn_no ON yb_sign_record(psn_no);