95 lines
3.2 KiB
SQL
95 lines
3.2 KiB
SQL
-- ============================================
|
||
-- 检查门诊划价"诊疗判断"下没有数据的原因
|
||
-- ============================================
|
||
|
||
-- 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;
|
||
|