诊疗下面没有诊疗项目

This commit is contained in:
2026-01-22 14:03:38 +08:00
parent 1dd7ee3428
commit 49550fcc2e
19 changed files with 1268 additions and 25 deletions

View File

@@ -0,0 +1,94 @@
-- ============================================
-- 检查门诊划价"诊疗判断"下没有数据的原因
-- ============================================
-- 1. 检查是否有诊疗类型的收费项目context_enum = 3
SELECT
COUNT(*) AS total_activity_charge_items,
COUNT(CASE WHEN delete_flag = '0' THEN 1 END) AS active_charge_items
FROM adm_charge_item
WHERE context_enum = 3; -- ACTIVITY = 3
-- 2. 检查诊疗类型的收费项目是否能关联到 wor_activity_definition
SELECT
T1.id AS charge_item_id,
T1.encounter_id,
T1.context_enum,
T1.product_id,
T1.status_enum AS charge_status,
T2.id AS activity_def_id,
T2.name AS activity_name,
T2.status_enum AS activity_status,
T2.delete_flag AS activity_delete_flag,
CASE
WHEN T2.id IS NULL THEN '❌ 无法关联到诊疗项目定义'
WHEN T2.delete_flag != '0' THEN '❌ 诊疗项目定义已删除'
WHEN T2.status_enum != 1 THEN '❌ 诊疗项目定义未激活status_enum != 1'
ELSE '✅ 正常'
END AS match_status
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = 3
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
AND T2.status_enum = 1 -- 当前查询条件
WHERE T1.context_enum = 3
AND T1.delete_flag = '0'
LIMIT 20;
-- 3. 检查如果移除 status_enum = 1 条件,能关联多少条
SELECT
COUNT(*) AS total_count,
COUNT(CASE WHEN T2.id IS NOT NULL AND T2.delete_flag = '0' AND T2.status_enum = 1 THEN 1 END) AS matched_active,
COUNT(CASE WHEN T2.id IS NOT NULL AND T2.delete_flag = '0' AND T2.status_enum != 1 THEN 1 END) AS matched_inactive,
COUNT(CASE WHEN T2.id IS NULL THEN 1 END) AS unmatched
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = 3
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
WHERE T1.context_enum = 3
AND T1.delete_flag = '0';
-- 4. 检查具体某个就诊的诊疗项目(替换 encounterId 为实际值)
-- SELECT
-- T1.id AS charge_item_id,
-- T1.encounter_id,
-- T1.product_id,
-- T1.status_enum AS charge_status,
-- T2.id AS activity_def_id,
-- T2.name AS activity_name,
-- T2.status_enum AS activity_status,
-- CASE
-- WHEN T2.id IS NULL THEN '无法关联'
-- WHEN T2.status_enum != 1 THEN '诊疗项目未激活'
-- ELSE '正常'
-- END AS status
-- FROM adm_charge_item AS T1
-- LEFT JOIN wor_activity_definition AS T2
-- ON T1.context_enum = 3
-- AND T1.product_id = T2.id
-- AND T2.delete_flag = '0'
-- AND T2.status_enum = 1
-- WHERE T1.encounter_id = :encounterId -- 替换为实际的encounterId
-- AND T1.context_enum = 3
-- AND T1.delete_flag = '0';
-- 5. 如果诊疗项目 status_enum != 1查看这些项目
SELECT
T1.id AS charge_item_id,
T1.encounter_id,
T1.product_id,
T2.name AS activity_name,
T2.status_enum AS activity_status,
'诊疗项目未激活,导致无法显示' AS issue
FROM adm_charge_item AS T1
INNER JOIN wor_activity_definition AS T2
ON T1.context_enum = 3
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
AND T2.status_enum != 1 -- 未激活
WHERE T1.context_enum = 3
AND T1.delete_flag = '0'
LIMIT 20;