修复了中医诊断保存时主诊断标记不唯一的问题,并优化了诊断保存逻辑
This commit is contained in:
@@ -0,0 +1,431 @@
|
||||
## 门诊手术安排界面PRD文档
|
||||
|
||||
### 一、页面概述
|
||||
|
||||
**页面名称**:门诊手术安排界面
|
||||
**页面目标**:提供手术室手术安排信息的录入、查询、编辑和删除功能,支持手术排班全流程管理
|
||||
**适用场景**:门诊医生或手术室管理人员安排手术时使用
|
||||
**页面类型**:表单页+列表页组合(主列表+弹窗表单)
|
||||
|
||||
**原型图地址:**https://static.pm-ai.cn/prototype/20260106/28ca9ee6ac20cfd8c867d3989ffd88f9/index.html
|
||||
|
||||
**核心功能**:
|
||||
|
||||
1. 手术申请单查询与筛选功能
|
||||
2. 手术安排信息新增与编辑功能
|
||||
3. 手术信息详细展示与表单填写
|
||||
4. 手术数据导出功能
|
||||
5. 手术申请单与手术安排单的关联操作
|
||||
**用户价值**:通过该界面,医护人员可以高效完成手术排期工作,确保手术资源合理分配,减少人工操作错误,提高手术室管理效率,实现手术全流程的数字化管理。
|
||||
|
||||
**流程图:**
|
||||
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
node_start(["Start"]) --> A["进入门诊手术安排界面"]
|
||||
A --> B["顶部筛选区域操作"]
|
||||
B --> C{"选择操作类型"}
|
||||
C -- "查询" --> D["填写查询条件"]
|
||||
D --> E["点击查询按钮"]
|
||||
E --> F{"查询结果?"}
|
||||
F -- "有数据" --> G["显示手术安排列表"]
|
||||
F -- "无数据" --> H["显示无数据提示"]
|
||||
G --> I["底部分页操作"]
|
||||
I -- "编辑" --> J["打开带数据的弹窗"]
|
||||
J --> K["修改字段"]
|
||||
K --> L["点击保存"]
|
||||
L --> M{"验证通过?"}
|
||||
M -- "是" --> N["更新表格数据"]
|
||||
M -- "否" --> O["显示错误提示"]
|
||||
I -- "查看" --> P["打开只读详情弹窗"]
|
||||
P --> Q{"是否要删除?"}
|
||||
Q -- "是" --> T["弹出确认对话框"]
|
||||
Q -- "否" --> S["关闭详情弹窗"]
|
||||
I -- "删除" --> T["弹出确认对话框"]
|
||||
T --> U{"确认删除?"}
|
||||
U -- "是" --> V["更新列表显示"]
|
||||
U -- "否" --> S
|
||||
C -- "新增" --> W["打开空白手术安排弹窗"]
|
||||
W --> X["填写手术信息"]
|
||||
X --> Y{"是否关联手术申请?"}
|
||||
Y -- "是" --> Z["打开手术申请查询弹窗"]
|
||||
Z --> AA["填写查询条件并查询"]
|
||||
AA --> AB{"验证通过?"}
|
||||
AB -- "是" --> AC["保存数据到op_schedule表"]
|
||||
AB -- "否" --> AD["高亮错误字段提示"]
|
||||
AC --> AE["新增记录到表格首行"]
|
||||
Y -- "否" --> AF["直接填写表单"]
|
||||
AF --> AG["填写手术安排信息"]
|
||||
AG --> L["点击保存"]
|
||||
C -- "重置" --> AH["清空所有筛选条件"]
|
||||
C -- "导出" --> AI["收集当前表格数据"]
|
||||
AI --> AJ["生成CSV文件并下载"]
|
||||
```
|
||||
|
||||
### 二、整体布局分析
|
||||
|
||||
**页面宽度**:自适应布局
|
||||
**主要区域划分**:
|
||||
|
||||
1. 顶部筛选操作区
|
||||
2. 中间表格列表区
|
||||
3. 底部分页区
|
||||
4. 手术安排弹窗(模态框)
|
||||
5. 手术申请查询弹窗(模态框)
|
||||
**布局方式**:上下布局为主,弹窗采用居中模态框布局
|
||||
|
||||
**布局特点**:上下布局风格的组件
|
||||
**响应式要求**:
|
||||
|
||||
* 桌面端:完整展示所有筛选条件和表格列
|
||||
|
||||
### 三、页面区域详细描述
|
||||
|
||||
#### 1. 顶部筛选区
|
||||
|
||||
**区域位置**:页面顶部
|
||||
**区域尺寸**:100%宽度,内边距16px
|
||||
**区域功能**:手术申请单的筛选和快捷操作
|
||||
**包含元素**:
|
||||
|
||||
* 安排时间选择器
|
||||
+ 元素类型:日期选择输入框
|
||||
+ 默认值:空
|
||||
+ 交互行为:点击弹出日期选择器
|
||||
* 卫生机构下拉框
|
||||
+ 元素类型:下拉选择框
|
||||
+ 默认值:当前登录用户所属机构名称
|
||||
+ 选项:默认当前登录用户所属机构名称
|
||||
* 申请科室下拉框
|
||||
+ 元素类型:下拉选择框
|
||||
+ 默认值:“请选择”
|
||||
+ 选项:取值于科室管理的科室分类字段:门诊
|
||||
* 姓名/拼音码输入框
|
||||
+ 元素类型:文本输入框
|
||||
+ 默认值:空
|
||||
+ 占位文本:“姓名/拼音码”
|
||||
* 查询按钮
|
||||
+ 元素类型:主要操作按钮
|
||||
+ 样式:蓝色背景,白色文字
|
||||
+ 交互行为:点击执行表格数据筛选
|
||||
* 重置按钮
|
||||
+ 元素类型:次要按钮
|
||||
+ 样式:灰色背景,黑色文字
|
||||
+ 交互行为:点击清空所有筛选条件
|
||||
* 新增按钮
|
||||
+ 元素类型:主要操作按钮
|
||||
+ 样式:蓝色背景,白色文字
|
||||
+ 交互行为:点击打开新增手术安排弹窗
|
||||
* 导出表格按钮
|
||||
+ 元素类型:成功状态按钮
|
||||
+ 样式:绿色背景,白色文字
|
||||
+ 交互行为:点击导出当前表格数据为CSV文件
|
||||
|
||||
#### 2. 中部表格区
|
||||
|
||||
**区域位置**:筛选区下方
|
||||
**区域尺寸**:100%宽度,自适应高度
|
||||
**区域功能**:展示手术安排列表数据,提供行操作功能
|
||||
**包含元素**:
|
||||
|
||||
* 手术安排数据表格
|
||||
+ 列1:ID - 数字 - 示例值:100
|
||||
+ 列2:卫生机构 - 文本 - 示例值:“演示医院”
|
||||
+ 列3:姓名 - 文本 - 示例值:“张明娟”
|
||||
+ 列4:就诊卡号 - 文本 - 示例值:“27364”
|
||||
+ 列5:手术单号 - 文本 - 示例值:“202510270001”
|
||||
+ 列6:手术名称 - 文本 - 示例值:“肠系膜固定术”
|
||||
+ 列7:申请科室 - 文本 - 示例值:“ICU”
|
||||
+ 列8:手术类型 - 文本 - 示例值:“急诊”
|
||||
+ 列9:手术性质 - 文本 - 示例值:“急诊手术”
|
||||
+ 列10:主刀医生 - 文本 - 示例值:“杨海”
|
||||
+ 列11:麻醉方法 - 文本 - 示例值:“静吸复合全麻”
|
||||
+ 列12:安排时间 - 日期时间 - 示例值:“2025-10-27 16:09:39”
|
||||
+ 列13:操作人 - 文本 - 示例值:“演示测试”
|
||||
+ 列14:操作 - 操作按钮组
|
||||
- 编辑按钮:铅笔图标,点击打开编辑手术安排弹窗
|
||||
- 查看按钮:眼睛图标,点击打开查看手术安排弹窗
|
||||
- 删除按钮:垃圾桶图标,点击取消当前行手术安排记录(op_schedule.oper_status :3-取消)
|
||||
* 表格交互:
|
||||
+ 行悬停效果:浅灰色背景
|
||||
+ 行选中效果:蓝色边框和浅蓝色背景
|
||||
|
||||
#### 3. 底部分页区
|
||||
|
||||
**区域位置**:页面底部
|
||||
**区域功能**:显示数据总量和分页控制
|
||||
**包含元素**:
|
||||
|
||||
* 总数显示
|
||||
+ 元素类型:文本
|
||||
+ 内容格式:“总数:X”
|
||||
* 分页按钮组
|
||||
+ 上一页按钮:"<"符号
|
||||
+ 页码按钮:当前页码,激活状态为蓝色背景
|
||||
+ 下一页按钮:">"符号
|
||||
|
||||
#### 4. 手术安排弹窗(模态框)
|
||||
|
||||
**区域位置**:居中覆盖全屏
|
||||
**区域尺寸**:自适应
|
||||
**区域功能**:展示和编辑手术安排详细信息
|
||||
**包含元素**:
|
||||
|
||||
* 弹窗头部
|
||||
+ 标题:“手术安排”
|
||||
+ 操作按钮组:【查找】、【刷新】、【返回】、【保存】
|
||||
|
||||
【刷新】--重置手术安排界面的内容
|
||||
|
||||
* 表单内容区
|
||||
+ 病人基本信息组:就诊卡号、姓名、性别、年龄等(只读,从手术申请界面引入病人信息)
|
||||
+ 手术申请信息组:手术单号、手术名称、申请科室等(只读,从手术申请界面引入病人手术申请信息)
|
||||
+ 手术安排组:安排时间、手术台次、手术间号等(填写)
|
||||
+ 医护人员组:主刀医生、助手、护士等(填写)
|
||||
+ 手术过程组:入室时间、麻醉时间、手术时间等(填写)
|
||||
+ 备注信息组:对话信息、备注等(填写)
|
||||
* 表单元素特点:
|
||||
+ 只读字段:灰色背景,不可编辑
|
||||
+ 必填字段:标有"*"号
|
||||
+ 时间选择器:带时钟图标
|
||||
+ 单选按钮组:水平排列
|
||||
+ 宽文本域:可垂直调整高度
|
||||
|
||||
#### 5. 手术申请查询弹窗(模态框)
|
||||
|
||||
**区域位置**:居中覆盖全屏
|
||||
**区域功能**:查询并选择手术申请单
|
||||
**包含元素**:
|
||||
|
||||
* 查询条件区
|
||||
+ 申请时间范围选择器
|
||||
+ 申请科室下拉框
|
||||
+ 主刀医生下拉框
|
||||
+ 关键词搜索框
|
||||
+ 查询按钮
|
||||
* 结果表格区
|
||||
+ 列1:ID - 数字 - 示例值:142
|
||||
+ 列2:姓名 - 文本 - 示例值:“张一山”
|
||||
+ 列3:手术单号 - 文本 - 示例值:“202504290001”
|
||||
+ 列4:手术名称 - 文本 - 示例值:“腋臭切除术”
|
||||
+ 列5:申请科室 - 文本 - 示例值:“外科”
|
||||
+ 列6:手术类型 - 文本 - 示例值:“急诊”
|
||||
+ 列7:手术等级 - 文本 - 示例值:“一级手术”
|
||||
+ 列8:主刀医生 - 文本 - 示例值:“演示测试”
|
||||
* 底部操作区
|
||||
+ 取消按钮
|
||||
+ 确认按钮
|
||||
|
||||
### 四、交互功能详细说明
|
||||
|
||||
#### 1. 手术申请查询功能
|
||||
|
||||
**触发方式**:点击"查找"按钮
|
||||
**执行流程**:
|
||||
|
||||
1. 打开手术申请查询弹窗
|
||||
2. 填写查询条件(可多条件组合)
|
||||
3. 点击"查询"按钮获取结果
|
||||
4. 选择需要的手术申请记录
|
||||
5. 点击"确认"按钮带回数据(手术安排界面)
|
||||
**反馈机制**:
|
||||
|
||||
* 查询无结果时显示提示信息
|
||||
* 未选择记录时点击确认提示"请先选择一条手术申请记录"
|
||||
**异常处理**:
|
||||
* 网络异常时显示错误提示
|
||||
* 查询超时自动重试一次
|
||||
|
||||
#### 2. 新增手术安排功能
|
||||
|
||||
**触发方式**:点击"新增"按钮
|
||||
**执行流程**:
|
||||
|
||||
1. 打开空白的"手术安排"弹窗
|
||||
2. 填写各项手术信息(可点击"查找"按钮关联手术申请)
|
||||
3. 点击"保存"按钮提交数据—写入手术安排表(op_schedule)
|
||||
4. 新记录添加到表格首行
|
||||
|
||||
·· ①、写入手术安排表(op_schedule)
|
||||
|
||||
②、更新门诊手术申请单主表(**outp_surgery_apply**) : confirm_time、confirm_op_id、status字段
|
||||
|
||||
UPDATE outp_surgery_apply
|
||||
|
||||
SET confirm_time = NOW(),
|
||||
|
||||
confirm_op_id = *#{confirmOpId},*
|
||||
|
||||
status = 1 *-- 更新状态为已排程*
|
||||
|
||||
WHERE apply_id = *#{applyId};*
|
||||
|
||||
**反馈机制**:
|
||||
|
||||
* 必填字段未填写时提示
|
||||
* 保存成功显示提示信息
|
||||
**异常处理**:
|
||||
* 手术单号重复时提示并允许修改
|
||||
* 表单验证不通过时高亮错误字段
|
||||
|
||||
#### 3. 编辑手术安排功能
|
||||
|
||||
**触发方式**:点击行操作中的"编辑"按钮
|
||||
**执行流程**:
|
||||
|
||||
1. 打开带数据的"手术安排"弹窗
|
||||
2. 修改需要调整的字段
|
||||
3. 点击"保存"按钮更新数据
|
||||
4. 表格中对应行数据更新
|
||||
**反馈机制**:
|
||||
|
||||
* 保存成功显示"手术安排已更新"提示
|
||||
**异常处理**:
|
||||
* 数据冲突时提示并允许重新加载
|
||||
|
||||
#### 4. 删除手术申请单
|
||||
|
||||
**触发方式**:点击表格行中的"删除"按钮
|
||||
**执行流程**:
|
||||
|
||||
1. 弹出确认对弹框输入取消原因
|
||||
2. 确认后执行删除
|
||||
3. 更新列表数据
|
||||
|
||||
①、更新手术安排表(op_schedule)status字段
|
||||
```sql
|
||||
UPDATE op_schedule
|
||||
|
||||
SET status = 3 *-- 更新状态为已取消*
|
||||
|
||||
WHERE schedule_id = *#{scheduleId};*
|
||||
|
||||
②、更新门诊手术申请单主表(**outp_surgery_apply**) cancel_time、cancel_reason 、status字段
|
||||
|
||||
UPDATE outp_surgery_apply
|
||||
|
||||
SET cancel_time = NOW(),
|
||||
|
||||
cancel_reason = *#{cancelReason},*
|
||||
|
||||
status = 2,
|
||||
|
||||
updated_time = NOW()
|
||||
|
||||
WHERE apply_id = *#{applyId};*
|
||||
```
|
||||
**反馈机制**:
|
||||
|
||||
* 成功:提示"已取消ID为XX的手术安排"
|
||||
* 失败:提示具体错误原因
|
||||
**异常处理**:
|
||||
* 数据已被引用:提示"该手术申请已被引用,无法取消"
|
||||
|
||||
#### 5. 数据导出功能
|
||||
|
||||
**触发方式**:点击"导出表格"按钮
|
||||
**执行流程**:
|
||||
|
||||
1. 收集当前表格显示的数据(含筛选结果)
|
||||
2. 生成CSV格式文件
|
||||
3. 自动下载文件
|
||||
**反馈机制**:
|
||||
|
||||
* 下载完成后显示"表格数据已导出为CSV文件"提示
|
||||
**异常处理**:
|
||||
* 数据量过大时分批处理
|
||||
* 导出失败时提示具体原因
|
||||
|
||||
### 五、数据结构说明
|
||||
|
||||
**关键数据字段**:
|
||||
|
||||
手术安排表(op_schedule)
|
||||
|
||||
|
||||
| **字段名称** | **数据类型** | **是否为空** | **说明/典型值** | **外键/来源** |
|
||||
| ----------------------- | ------------ | ------------ | ---------------------------------------------- | ----------------------------------------------- |
|
||||
| schedule_id | BIGINT | N | 排程号(主键) | 自增 |
|
||||
| apply_id | BIGINT | N | 关联申请单 | → outp_surgery_apply.apply_id |
|
||||
| patient_id | BIGINT | N | 患者号 | 患者档案表主键 |
|
||||
| visit_id | BIGINT | N | 就诊号 | 本次就诊记录表的主键 |
|
||||
| oper_code | VARCHAR(12) | N | 手术编码 | 取值手术申请单 |
|
||||
| oper_name | VARCHAR(200) | N | 手术名称 | 取值手术申请单 |
|
||||
| preoperative_diagnosis | VARCHAR(200) | N | 术前诊断名称 | 取值手术申请单的术前诊断 |
|
||||
| postoperative_diagnosis | VARCHAR(200) | Y | 术后诊断名称 | 术后医护填写,取值于系统管理-》诊断目录的字典库 |
|
||||
| schedule_date | DATE | N | 实际排程日期 | 护士选择 |
|
||||
| sequence_no | INT | N | 台次(当天第几台) | 护士录入 |
|
||||
| is_first_surgery | TINYINT | N | 是否首次手术(0=否,1=是) | |
|
||||
| is_allergy_medication | TINYINT | N | 是否过敏药物 (0=否,1=是) | |
|
||||
| allergy_remark | VARCHAR(500) | Y | 过敏药物备注(详细描述 | |
|
||||
| surgery_nature | VARCHAR(20) | N | 手术性质(如:择期、急诊、计划性) | 下拉选项取值于字典管理:手术性质 |
|
||||
| surgery_site | VARCHAR(20) | N | 手术部位(如:右腕部、左膝关节) | 下拉选项取值于字典管理:手术部位 |
|
||||
| admission_time | DATETIME | Y | 入室时间 | 患者进入手术室区域的时间 |
|
||||
| entry_time | DATETIME | Y | 进室时间 | 患者进入具体手术间的时间 |
|
||||
| room_code | VARCHAR(10) | N | 手术间号 | → his_or_room.room_code |
|
||||
| table_no | CHAR(1) | N | 手术台(A/B) | 下拉选项取值于字典管理:手术台 |
|
||||
| anes_method | VARCHAR(8) | N | 麻醉方法 | 取值手术申请单(可改) |
|
||||
| anes_doctor1_code | VARCHAR(12) | N | 麻醉医生1 | 下拉选项取值于用户管理表角色是医生(存主键) |
|
||||
| anes_doctor2_code | VARCHAR(12) | N | 麻醉医生2 | 下拉选项取值于用户管理表角色是医生(存主键) |
|
||||
| anes_doctor3_code | VARCHAR(12) | N | 麻醉医生3 | 下拉选项取值于用户管理表角色是医生(存主键) |
|
||||
| scrub_nurse_code | VARCHAR(12) | N | 洗手护士 | 下拉选项取值于用户管理表角色是护士(存主键) |
|
||||
| circu_nurse1_code | VARCHAR(12) | N | 巡回护士1 | 下拉选项取值于用户管理表角色是护士(存主键) |
|
||||
| circu_nurse2_code | VARCHAR(12) | N | 巡回护士2 | 下拉选项取值于用户管理表角色是护士(存主键) |
|
||||
| scrub_nurse1_code | VARCHAR(12) | N | 器械护士1 | 下拉选项取值于用户管理表角色是护士(存主键) |
|
||||
| scrub_nurse2_code | VARCHAR(12) | N | 器械护士2 | 下拉选项取值于用户管理表角色是护士(存主键) |
|
||||
| surgeon_code | VARCHAR(12) | N | 主刀医生 | 下拉选项:默认取值手术申请单(可改) |
|
||||
| assistant1_code | VARCHAR(12) | Y | 助手1 | 下拉选项:默认取值手术申请单(可改) |
|
||||
| assistant2_code | VARCHAR(12) | Y | 助手2 | 下拉选项:默认取值手术申请单(可改) |
|
||||
| Assistant3_code | VARCHAR(12) | Y | 助手3 | 下拉选项:默认取值手术申请单(可改) |
|
||||
| start_time | DATETIME | Y | 切开时间 | 麻醉记录单回写 |
|
||||
| end_time | DATETIME | Y | 手术结束时间 | 麻醉记录单回写 |
|
||||
| anes_start | DATETIME | Y | 麻醉开始时间 | 麻醉记录单回写 |
|
||||
| anes_end | DATETIME | Y | 麻醉结束时间 | 麻醉记录单回写 |
|
||||
| oper_status | TINYINT | N | 手术状态(0-待手术,1-进行中,2-完成,3-取消) | 状态机 |
|
||||
| implant_flag | TINYINT | N | 实际植入标志(0/1) | 手术中确认 |
|
||||
| implant_serial | VARCHAR(300) | Y | 植入物序列号批号 | 扫码录入 |
|
||||
| blood_loss | INT | Y | 出血量(ml) | 手术记录回写 |
|
||||
| blood_trans | INT | Y | 输血量(ml) | 手术记录回写 |
|
||||
| infection_diagnosis | VARCHAR(200) | Y | 感染诊断名称 | 常在患者出现感染症状后填写 |
|
||||
| isolation_type | VARCHAR(50) | Y | 隔离种类 | |
|
||||
| patient_weight | DECIMAL(5,2) | Y | 患者体重(单位:kg) | |
|
||||
| patient_height | DECIMAL(5,2) | Y | 患者身高(单位:cm) | |
|
||||
| communication_info | VARCHAR(500) | Y | 手术相关对话信息 | |
|
||||
| remark | VARCHAR(500) | Y | 手术相关备注 | |
|
||||
| create_time | DATETIME | N | 排程创建时间 | now()系统自动写入 |
|
||||
| creator_id | VARCHAR(12) | N | 排程护士 | 创建手术安排时系统自动写入 |
|
||||
|
||||
### 六、开发实现要点
|
||||
|
||||
**样式规范**:
|
||||
|
||||
* 主色调:#1890FF(操作按钮/选中状态)
|
||||
* 辅助色:#00BA7C(成功状态)
|
||||
* 字体:14px/1.5 使用系统默认字体栈
|
||||
|
||||
**技术要求**:
|
||||
|
||||
1. 时间控件需兼容操作
|
||||
2. 表格支持万级数据量流畅滚动
|
||||
|
||||
**注意事项**:
|
||||
|
||||
1. 手术间选择需实时校验冲突
|
||||
2. 医生选择器需要支持拼音首字母检索
|
||||
3. 所有时间字段需统一处理时区问题
|
||||
|
||||
### 七、特殊交互说明
|
||||
|
||||
1. **手术间号选择联动**:
|
||||
* 显示该手术间号当前时间段的手术安排情况
|
||||
* 下拉选项取值于手术室维护的基础数据。
|
||||
2. **紧急手术标记**:
|
||||
* 急诊手术类型需显示红色角标
|
||||
* 自动优先排在手术申请队列最上方
|
||||
3. **术后诊断名称**:
|
||||
* 做成调取诊断目录字典库填写(可以通过拼音首字母/名称进行查找)
|
||||
|
||||
取值于如下如:
|
||||
|
||||

|
||||
Reference in New Issue
Block a user