会诊管理中 门诊会诊申请确认和门诊会诊申请管理模块全部功能的实现。包括数据库设计,前端UI设计,后端接口开发。
This commit is contained in:
@@ -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) 字段中
|
||||
|
||||
@@ -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格式)';
|
||||
|
||||
Reference in New Issue
Block a user