190 lines
5.6 KiB
SQL
190 lines
5.6 KiB
SQL
-- ============================================
|
||
-- 诊疗项目数据检查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;
|
||
|
||
|
||
|
||
|