From 23bd49d9402d43b77df5c72081f0b29855087da9 Mon Sep 17 00:00:00 2001 From: nanyangbreeze <1955231298@qq.com> Date: Mon, 12 Jan 2026 18:14:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=82=E5=8F=B7=E5=8D=95=E8=A1=A5=E6=89=93?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check_activity_definition.sql | 188 ++++++++++++++++++ .../dto/ReprintRegistrationDto.java | 79 ++++++++ 迁移记录-DB变更记录/add_cardiology_menu.sql | 7 + 3 files changed, 274 insertions(+) create mode 100644 check_activity_definition.sql create mode 100644 openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ReprintRegistrationDto.java create mode 100644 迁移记录-DB变更记录/add_cardiology_menu.sql diff --git a/check_activity_definition.sql b/check_activity_definition.sql new file mode 100644 index 00000000..b7254876 --- /dev/null +++ b/check_activity_definition.sql @@ -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; + + + diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ReprintRegistrationDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ReprintRegistrationDto.java new file mode 100644 index 00000000..19588a1c --- /dev/null +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/dto/ReprintRegistrationDto.java @@ -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; +} + + + + + + + + + + + + diff --git a/迁移记录-DB变更记录/add_cardiology_menu.sql b/迁移记录-DB变更记录/add_cardiology_menu.sql new file mode 100644 index 00000000..925fe1b8 --- /dev/null +++ b/迁移记录-DB变更记录/add_cardiology_menu.sql @@ -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'); \ No newline at end of file