挂号单补打功能完善

This commit is contained in:
2026-01-12 18:14:54 +08:00
parent 32adb984e2
commit 23bd49d940
3 changed files with 274 additions and 0 deletions

View File

@@ -0,0 +1,188 @@
-- ============================================
-- 诊疗项目数据检查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;

View File

@@ -0,0 +1,79 @@
package com.openhis.web.chargemanage.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* 补打挂号 DTO
*/
@Data
@Accessors(chain = true)
public class ReprintRegistrationDto {
/**
* 就诊ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long encounterId;
/**
* 就诊卡号
*/
private String cardNo;
/**
* 患者姓名
*/
private String name;
/**
* 挂号科室
*/
private String organizationName;
/**
* 医生姓名
*/
private String practitionerName;
/**
* 挂号费
*/
private BigDecimal price;
/**
* 诊疗费
*/
private BigDecimal activityPrice;
/**
* 病历费
*/
private BigDecimal medicalRecordFee;
/**
* 合计
*/
private BigDecimal totalPrice;
/**
* 预约/挂号时间
*/
private String visitTime;
}

View File

@@ -0,0 +1,7 @@
-- 在分诊排队管理下添加心内科选项
INSERT INTO sys_menu (menu_name, parent_id, order_num, "path", component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
VALUES( '心内科', (SELECT id FROM sys_menu WHERE "path" = 'triageandqueuemanage'), 1, 'cardiology', 'triageandqueuemanage/cardiology/index', NULL, NULL, '1', '0', 'C', '0', '0', '', NULL, 'admin', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, NULL);
-- Insert migration record
INSERT INTO __MigrationsHistory (MigrationId, ProductVersion)
VALUES ('20251231_add_cardiology_menu', '1.0.0');