会诊管理中 门诊会诊申请确认和门诊会诊申请管理模块全部功能的实现。包括数据库设计,前端UI设计,后端接口开发。

This commit is contained in:
weixin_45799331
2026-02-11 13:40:32 +08:00
parent b826afb17c
commit c5d75f053b
25 changed files with 3249 additions and 365 deletions

View File

@@ -0,0 +1,27 @@
-- ============================================
-- 修复会诊确认表的 NOT NULL 约束问题
-- ============================================
-- 将 confirming_physician_id 等字段改为可空
-- 因为在新的方案中,这些字段在所有医生确认后才会填充
ALTER TABLE hisdev.consultation_confirmation
ALTER COLUMN confirming_physician_id DROP NOT NULL;
ALTER TABLE hisdev.consultation_confirmation
ALTER COLUMN confirming_physician_name DROP NOT NULL;
ALTER TABLE hisdev.consultation_confirmation
ALTER COLUMN confirming_dept_id DROP NOT NULL;
ALTER TABLE hisdev.consultation_confirmation
ALTER COLUMN confirming_dept_name DROP NOT NULL;
ALTER TABLE hisdev.consultation_confirmation
ALTER COLUMN confirming_date DROP NOT NULL;
-- 说明:
-- 在新的方案中consultation_confirmation 记录在所有医生确认后才创建
-- 这些字段用于记录"最后一个确认的医生"或"代表性医生"
-- 因此允许为 NULL实际的医生信息存储在 confirming_physicians (JSON) 字段中

View File

@@ -0,0 +1,94 @@
-- ============================================
-- 会诊确认功能优化 - 数据库表结构修改 (PostgreSQL版本)
-- ============================================
-- 1. 修改 consultation_request 表(添加计数字段)
ALTER TABLE hisdev.consultation_request
ADD COLUMN IF NOT EXISTS confirmed_count INT DEFAULT 0;
ALTER TABLE hisdev.consultation_request
ADD COLUMN IF NOT EXISTS signed_count INT DEFAULT 0;
ALTER TABLE hisdev.consultation_request
ADD COLUMN IF NOT EXISTS invited_count INT DEFAULT 0;
-- 2. 修改 consultation_invited 表(添加签名时间字段)
ALTER TABLE hisdev.consultation_invited
ADD COLUMN IF NOT EXISTS signature_time TIMESTAMP NULL;
-- 3. 修改 consultation_confirmation 表(优化字段)
ALTER TABLE hisdev.consultation_confirmation
ADD COLUMN IF NOT EXISTS all_confirmed_date TIMESTAMP NULL;
ALTER TABLE hisdev.consultation_confirmation
ADD COLUMN IF NOT EXISTS all_signed_date TIMESTAMP NULL;
-- 检查 confirming_physicians 字段是否存在,如果不存在则添加
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'hisdev'
AND table_name = 'consultation_confirmation'
AND column_name = 'confirming_physicians'
) THEN
-- 如果 confirming_physician 存在,则重命名
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'hisdev'
AND table_name = 'consultation_confirmation'
AND column_name = 'confirming_physician'
) THEN
ALTER TABLE hisdev.consultation_confirmation
RENAME COLUMN confirming_physician TO confirming_physicians;
ELSE
-- 如果都不存在,则新增
ALTER TABLE hisdev.consultation_confirmation
ADD COLUMN confirming_physicians TEXT;
END IF;
END IF;
END $$;
-- 4. 为现有数据初始化计数字段
UPDATE hisdev.consultation_request cr
SET invited_count = (
SELECT COUNT(*)
FROM hisdev.consultation_invited ci
WHERE ci.consultation_request_id = cr.id
AND ci.is_deleted = 0
)
WHERE cr.invited_count = 0 OR cr.invited_count IS NULL;
UPDATE hisdev.consultation_request cr
SET confirmed_count = (
SELECT COUNT(*)
FROM hisdev.consultation_invited ci
WHERE ci.consultation_request_id = cr.id
AND ci.invited_status >= 1
AND ci.is_deleted = 0
)
WHERE cr.confirmed_count = 0 OR cr.confirmed_count IS NULL;
UPDATE hisdev.consultation_request cr
SET signed_count = (
SELECT COUNT(*)
FROM hisdev.consultation_invited ci
WHERE ci.consultation_request_id = cr.id
AND ci.invited_status >= 3
AND ci.is_deleted = 0
)
WHERE cr.signed_count = 0 OR cr.signed_count IS NULL;
-- 5. 添加索引优化查询性能(如果不存在)
CREATE INDEX IF NOT EXISTS idx_invited_status ON hisdev.consultation_invited(invited_status);
CREATE INDEX IF NOT EXISTS idx_confirm_time ON hisdev.consultation_invited(confirm_time);
-- 6. 添加字段注释
COMMENT ON COLUMN hisdev.consultation_request.confirmed_count IS '已确认的医生数量';
COMMENT ON COLUMN hisdev.consultation_request.signed_count IS '已签名的医生数量';
COMMENT ON COLUMN hisdev.consultation_request.invited_count IS '被邀请的医生总数';
COMMENT ON COLUMN hisdev.consultation_invited.signature_time IS '签名时间';
COMMENT ON COLUMN hisdev.consultation_confirmation.all_confirmed_date IS '所有医生都确认的时间';
COMMENT ON COLUMN hisdev.consultation_confirmation.all_signed_date IS '所有医生都签名的时间';
COMMENT ON COLUMN hisdev.consultation_confirmation.confirming_physicians IS '参与确认的医生列表JSON格式';