Files
his/迁移记录-DB变更记录/门诊预约测试数据插入.sql
2026-01-09 11:33:03 +08:00

89 lines
5.8 KiB
SQL

-- 门诊预约挂号功能测试数据插入脚本
-- 执行前请确保已创建相关表结构
-- 设置当前模式
SET search_path TO hisdev;
-- ====================================
-- 说明:
-- 1. 此脚本主要包含号源表(clinical_ticket)的测试数据
-- 2. 其他相关表(医生、患者、科室等)请确保系统中已有基础数据
-- 3. 如需要完整测试,建议先在系统中创建相应的医生和患者信息
-- ====================================
-- ====================================
-- 注意:以下是可选的表结构验证
-- 如果不确定表结构是否正确,请先执行这些查询
-- ====================================
-- SELECT column_name FROM information_schema.columns WHERE table_name = 'clinical_ticket';
-- SELECT column_name FROM information_schema.columns WHERE table_name = 'adm_practitioner';
-- SELECT column_name FROM information_schema.columns WHERE table_name = 'adm_patient';
-- ====================================
-- 5. 号源数据 (clinical_ticket)
-- 包含不同状态的号源:未预约、已预约、已取号
-- ====================================
-- 获取当前日期和明天日期
DO $$
DECLARE
current_date DATE := CURRENT_DATE;
tomorrow_date DATE := CURRENT_DATE + INTERVAL '1 day';
BEGIN
-- 当前日期号源
-- 未预约状态的号源(用于测试正常预约流程)
INSERT INTO clinical_ticket (bus_no, department, doctor, ticket_type, time, status, fee, appointment_date, appointment_time, department_id, doctor_id, create_time, tenant_id, delete_flag)
SELECT
'TICKET' || lpad(i::text, 6, '0'),
'内科', '张三', '普通', '08:00-' || (7 + i) || ':50',
'unbooked', '50', current_date, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'
FROM generate_series(1, 10) i
WHERE NOT EXISTS (SELECT 1 FROM clinical_ticket WHERE bus_no = 'TICKET' || lpad(i::text, 6, '0'));
-- 已预约状态的号源(用于测试取消预约流程)
INSERT INTO clinical_ticket (bus_no, department, doctor, ticket_type, time, status, fee, patient_id, patient_name, medical_card, phone, appointment_date, appointment_time, department_id, doctor_id, create_time, tenant_id, delete_flag)
VALUES
('TICKET000011', '内科', '张三', '普通', '09:00-09:50', 'booked', '50', 1, '患者A', 'PAT001', '13900139001', current_date, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'),
('TICKET000012', '内科', '张三', '普通', '09:50-10:40', 'booked', '50', 2, '患者B', 'PAT002', '13900139002', current_date, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0');
-- 已取号状态的号源(用于测试逆向用例:取消已取号的预约)
INSERT INTO clinical_ticket (bus_no, department, doctor, ticket_type, time, status, fee, patient_id, patient_name, medical_card, phone, appointment_date, appointment_time, department_id, doctor_id, create_time, tenant_id, delete_flag)
VALUES
('TICKET000013', '内科', '张三', '普通', '10:40-11:30', 'checked', '50', 3, '患者C', 'PAT003', '13900139003', current_date, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0');
-- 专家号源(用于测试号源类型切换功能)
INSERT INTO clinical_ticket (bus_no, department, doctor, ticket_type, time, status, fee, appointment_date, appointment_time, department_id, doctor_id, create_time, tenant_id, delete_flag)
VALUES
('TICKET000014', '内科', '张三', '专家', '08:00-08:50', 'unbooked', '150', CURRENT_DATE, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'),
('TICKET000015', '内科', '张三', '专家', '09:00-09:50', 'unbooked', '150', CURRENT_DATE, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'),
('TICKET000016', '内科', '张三', '专家', '10:00-10:50', 'unbooked', '150', CURRENT_DATE, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'),
('TICKET000017', '内科', '张三', '专家', '11:00-11:50', 'unbooked', '150', CURRENT_DATE, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0'),
('TICKET000018', '内科', '张三', '专家', '14:00-14:50', 'unbooked', '150', CURRENT_DATE, CURRENT_TIMESTAMP, 1, 1, CURRENT_TIMESTAMP, 1, '0');
-- 明天日期的号源(用于测试日期选择功能)
INSERT INTO clinical_ticket (bus_no, department, doctor, ticket_type, time, status, fee, appointment_date, appointment_time, department_id, doctor_id, create_time, tenant_id, delete_flag)
SELECT
'TICKET' || lpad((20 + i)::text, 6, '0'),
'外科', '王五', '普通', '08:00-' || (7 + i) || ':50',
'unbooked', '60', tomorrow_date, CURRENT_TIMESTAMP, 2, 3, CURRENT_TIMESTAMP, 1, '0'
FROM generate_series(1, 10) i
WHERE NOT EXISTS (SELECT 1 FROM clinical_ticket WHERE bus_no = 'TICKET' || lpad((20 + i)::text, 6, '0'));
END $$;
-- ====================================
-- 6. 预约记录数据 (cli_reservation_record)
-- 用于测试预约历史查询
-- ====================================
INSERT INTO cli_reservation_record (patient_name, patient_tel, chief_complaint, reservation_time, org_id, practitioner_id, tenant_id, create_time, create_by, update_time, update_by)
VALUES
('患者A', '13900139001', '感冒发烧', CURRENT_TIMESTAMP, 1, 1, 1, CURRENT_TIMESTAMP, 'system', CURRENT_TIMESTAMP, 'system'),
('患者B', '13900139002', '腹痛', CURRENT_TIMESTAMP, 1, 1, 1, CURRENT_TIMESTAMP, 'system', CURRENT_TIMESTAMP, 'system');
-- ====================================
-- 数据插入完成提示
-- ====================================
SELECT '门诊预约测试数据插入完成!' AS message;
SELECT '未预约号源数量:' || COUNT(*) FROM clinical_ticket WHERE status = 'unbooked';
SELECT '已预约号源数量:' || COUNT(*) FROM clinical_ticket WHERE status = 'booked';
SELECT '已取号号源数量:' || COUNT(*) FROM clinical_ticket WHERE status = 'checked';