Files
his/sql/check_activity_definition.sql

190 lines
5.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================
-- 诊疗项目数据检查SQL语句
-- ============================================
-- 1. 查询所有诊疗项目(基础查询)
SELECT
T1.id,
T1.bus_no,
T1.name AS advice_name,
T1.py_str,
T1.wb_str,
T1.status_enum,
T1.pricing_flag,
T1.delete_flag,
T1.org_id,
T1.category_code,
T1.type_enum AS activity_type
FROM wor_activity_definition AS T1
WHERE T1.delete_flag = '0'
ORDER BY T1.id;
-- 2. 查询状态为ACTIVE的诊疗项目status_enum = 1
SELECT
T1.id,
T1.bus_no,
T1.name AS advice_name,
T1.status_enum,
T1.pricing_flag,
T1.org_id
FROM wor_activity_definition AS T1
WHERE T1.delete_flag = '0'
AND T1.status_enum = 1
ORDER BY T1.id;
-- 3. 查询有划价标记的诊疗项目pricing_flag = 1
SELECT
T1.id,
T1.bus_no,
T1.name AS advice_name,
T1.pricing_flag,
T1.status_enum
FROM wor_activity_definition AS T1
WHERE T1.delete_flag = '0'
AND T1.status_enum = 1
AND (T1.pricing_flag = 1 OR T1.pricing_flag IS NULL)
ORDER BY T1.id;
-- 4. 查询关联了费用定价表的诊疗项目
SELECT
T1.id,
T1.bus_no,
T1.name AS advice_name,
T2.id AS charge_item_definition_id,
T2.instance_table,
T2.status_enum AS charge_status
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2
ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
AND T2.status_enum = 1
AND T2.instance_table = 'wor_activity_definition'
WHERE T1.delete_flag = '0'
AND T1.status_enum = 1
ORDER BY T1.id;
-- 5. 完整查询模拟后端实际执行的SQL用于门诊划价
-- 注意:需要替换 #{statusEnum} 为实际值(通常是 1#{activityTableName} 为 'wor_activity_definition'
SELECT DISTINCT ON (T1.ID)
T1.tenant_id,
3 AS advice_type,
T1.bus_no AS bus_no,
T1.category_code AS category_code,
'' AS pharmacology_category_code,
1 AS part_percent,
0 AS unit_conversion_ratio,
null AS part_attribute_enum,
null AS tho_part_attribute_enum,
null AS skin_test_flag,
null AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.type_enum AS activity_type,
'' AS unit_code,
'' AS min_unit_code,
'' AS volume,
'' AS method_code,
'' AS rate_code,
T1.org_id AS org_id,
T1.location_id AS location_id,
'' AS dose,
'' AS dose_unit_code,
'' AS supplier,
null AS supplier_id,
'' AS manufacturer,
T2.ID AS charge_item_definition_id,
T2.instance_table AS advice_table_name,
T3.organization_id AS position_id,
0 AS restricted_flag,
'' AS restricted_scope,
'' AS dosage_instruction,
T1.chrgitm_lv as chrgitm_lv
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2
ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
AND T2.status_enum = 1
AND T2.instance_table = 'wor_activity_definition'
LEFT JOIN adm_organization_location AS T3
ON T3.activity_definition_id = T1.ID
AND T3.delete_flag = '0'
AND (CURRENT_TIME :: time (6) BETWEEN T3.start_time AND T3.end_time)
WHERE T1.delete_flag = '0'
AND (T1.pricing_flag = 1 OR T1.pricing_flag IS NULL)
AND T1.status_enum = 1
ORDER BY T1.ID;
-- 6. 统计查询 - 查看各状态的数量
SELECT
COUNT(*) AS total_count,
COUNT(CASE WHEN status_enum = 1 THEN 1 END) AS active_count,
COUNT(CASE WHEN pricing_flag = 1 THEN 1 END) AS pricing_flag_count,
COUNT(CASE WHEN pricing_flag IS NULL THEN 1 END) AS pricing_flag_null_count
FROM wor_activity_definition
WHERE delete_flag = '0';
-- 7. 检查是否有费用定价关联
SELECT
COUNT(DISTINCT T1.id) AS activity_count,
COUNT(DISTINCT T2.id) AS charge_item_count,
COUNT(DISTINCT CASE WHEN T2.id IS NOT NULL THEN T1.id END) AS linked_count
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2
ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
AND T2.status_enum = 1
AND T2.instance_table = 'wor_activity_definition'
WHERE T1.delete_flag = '0'
AND T1.status_enum = 1;
-- 8. 按科室查询诊疗项目如果前端传了organizationId
-- 注意:需要替换 #{organizationId} 为实际的科室ID
-- SELECT DISTINCT ON (T1.ID)
-- T1.id,
-- T1.name AS advice_name,
-- T1.org_id,
-- T2.id AS charge_item_definition_id
-- FROM wor_activity_definition AS T1
-- LEFT JOIN adm_charge_item_definition AS T2
-- ON T2.instance_id = T1.ID
-- AND T2.delete_flag = '0'
-- AND T2.status_enum = 1
-- AND T2.instance_table = 'wor_activity_definition'
-- WHERE T1.delete_flag = '0'
-- AND (T1.pricing_flag = 1 OR T1.pricing_flag IS NULL)
-- AND T1.status_enum = 1
-- AND T1.org_id = #{organizationId} -- 替换为实际科室ID
-- ORDER BY T1.ID;
-- 9. 模糊查询(模拟前端搜索)
-- 注意:需要替换 #{searchKey} 为实际的搜索关键字
-- SELECT DISTINCT ON (T1.ID)
-- T1.id,
-- T1.name AS advice_name,
-- T1.py_str,
-- T1.wb_str
-- FROM wor_activity_definition AS T1
-- LEFT JOIN adm_charge_item_definition AS T2
-- ON T2.instance_id = T1.ID
-- AND T2.delete_flag = '0'
-- AND T2.status_enum = 1
-- AND T2.instance_table = 'wor_activity_definition'
-- WHERE T1.delete_flag = '0'
-- AND (T1.pricing_flag = 1 OR T1.pricing_flag IS NULL)
-- AND T1.status_enum = 1
-- AND (
-- T1.advice_name LIKE '%' || #{searchKey} || '%'
-- OR T1.py_str LIKE '%' || #{searchKey} || '%'
-- OR T1.wb_str LIKE '%' || #{searchKey} || '%'
-- )
-- ORDER BY T1.ID;