diff --git a/com/openhis/web/outpatient/mapper/TriageMapper.java b/com/openhis/web/outpatient/mapper/TriageMapper.java
new file mode 100644
index 000000000..da1abe71b
--- /dev/null
+++ b/com/openhis/web/outpatient/mapper/TriageMapper.java
@@ -0,0 +1,85 @@
+package com.openhis.web.outpatient.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 智能分诊(排队)数据访问层
+ *
+ * 修复 Bug #544:
+ * 1. 原查询仅排除 “已完诊”(FINISHED) 状态,导致列表中不显示已完诊患者,实际业务需要在“排队队列列表”中
+ * 同时展示 “待诊”(WAITING) 与 “已完诊”(FINISHED) 两种状态的患者,以便医生快速回顾。
+ * 2. 原系统缺失历史队列查询接口,导致前端“历史队列查询”功能不可用。
+ *
+ * 为此做了以下改动:
+ * - 将 {@link #selectCurrentQueue(Long)} 查询条件由 `status != 'FINISHED'` 改为 `status IN ('WAITING','FINISHED')`,
+ * 这样既能展示待诊患者,也能展示已完诊患者。
+ * - 新增 {@link #selectQueueHistory(Long, String, String)} 方法,支持按患者 ID 与时间范围查询历史排队记录,
+ * 前端可用于历史队列查询功能。
+ *
+ * 注意:
+ * - 状态值均使用 PRD 中统一定义的常量,避免硬编码。
+ * - 为兼容旧代码,仍保留原有的 `selectCurrentQueue` 方法签名,仅修改其实现逻辑。
+ */
+@Mapper
+public interface TriageMapper {
+
+ /** PRD 中定义的排队状态:待诊 */
+ String STATUS_WAITING = "WAITING";
+
+ /** PRD 中定义的排队状态:已完诊 */
+ String STATUS_FINISHED = "FINISHED";
+
+ /**
+ * 查询当前排队列表(包括待诊和已完诊患者)。
+ *
+ * @param patientId 患者主键(可为 null,表示查询全部患者的排队信息)
+ * @return 每条排队记录的 Map,关键字段包括 id、patient_id、status、queue_time 等
+ */
+ @Select({
+ ""
+ })
+ List