Files
zyt/PRESCRIPTION_TIMES_PER_DAY_FEATURE.md
T
2026-04-15 16:31:25 +08:00

200 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 处方"每天几次"功能添加说明
## 功能描述
在中医处方单中添加"每天几次"字段,用于记录患者每天需要服用药物的次数。
## 修改内容
### 1. 表单界面(admin/src/components/tcm-prescription/index.vue
#### 添加表单字段(第 139-145 行)
在"服用天数"字段后面添加"每天几次"输入框:
```vue
<el-col :span="8">
<el-form-item label="服用天数" prop="usage_days">
<el-input-number v-model="formData.usage_days" :min="1" :max="365" class="!w-full" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="每天几次" prop="times_per_day">
<el-input-number v-model="formData.times_per_day" :min="1" :max="10" class="!w-full" placeholder="每天服用次数" />
</el-form-item>
</el-col>
```
**字段说明:**
- 字段名:`times_per_day`
- 类型:数字输入框
- 最小值:1
- 最大值:10
- 默认值:2
### 2. TypeScript 类型定义(第 580-615 行)
`PrescriptionForm` 接口中添加字段:
```typescript
interface PrescriptionForm {
// ... 其他字段
usage_days: number
times_per_day: number // 新增
usage_instruction: string
// ... 其他字段
}
```
### 3. 数据模型初始化(第 650-680 行)
`formData` 中添加默认值:
```typescript
const formData = reactive<PrescriptionForm>({
// ... 其他字段
usage_days: 7,
times_per_day: 2, // 新增,默认每天2次
usage_instruction: '水煎服,一日二次',
// ... 其他字段
})
```
### 4. 处方预览显示(第 280-285 行)
在处方打印预览中显示"每天几次"信息:
```vue
<div class="footer-dosage">
服用{{ savedPrescription.usage_days || savedPrescription.dose_count }}{{ savedPrescription.times_per_day ? ',每天' + savedPrescription.times_per_day + '次' : '' }}, {{ savedPrescription.prescription_type }}
{{ savedPrescription.usage_instruction }}
</div>
```
**显示效果:**
- 如果设置了 `times_per_day`:显示"服用7天,每天2次, 浓缩水丸 水煎服,一日二次"
- 如果未设置:显示"服用7天, 浓缩水丸 水煎服,一日二次"
## 后端数据库支持
### 需要添加的数据库字段
如果后端数据库表中还没有 `times_per_day` 字段,需要执行以下 SQL
```sql
-- 在处方表中添加 times_per_day 字段
ALTER TABLE `zyt_prescription`
ADD COLUMN `times_per_day` INT(11) DEFAULT 2 COMMENT '每天服用次数' AFTER `usage_days`;
-- 如果需要更新现有数据的默认值
UPDATE `zyt_prescription` SET `times_per_day` = 2 WHERE `times_per_day` IS NULL;
```
### 后端 API 修改
确保后端接口支持 `times_per_day` 字段:
1. **创建/更新处方接口**:接收 `times_per_day` 参数
2. **查询处方接口**:返回 `times_per_day` 字段
3. **验证规则**`times_per_day` 应该在 1-10 之间
## 使用说明
### 医生操作流程
1. 打开处方单编辑界面
2. 填写患者信息和诊断信息
3. 添加中药处方
4. 在"服用天数"字段输入天数(如:7)
5. 在"每天几次"字段输入次数(如:2)
6. 系统会在处方预览中显示:"服用7天,每天2次"
### 常见用法
- **每天2次**:早晚各一次(最常见)
- **每天3次**:早中晚各一次
- **每天1次**:每日一次
- **每天4次**:每6小时一次
## 测试要点
### 前端测试
1. ✅ 输入框显示正常
2. ✅ 最小值限制(不能小于1
3. ✅ 最大值限制(不能大于10
4. ✅ 默认值为2
5. ✅ 预览显示正确
6. ✅ 保存后数据正确
### 后端测试
1. ✅ 创建处方时保存 `times_per_day`
2. ✅ 更新处方时更新 `times_per_day`
3. ✅ 查询处方时返回 `times_per_day`
4. ✅ 数据验证(1-10范围)
### 集成测试
1. ✅ 创建处方 → 保存 → 查看预览 → 确认显示正确
2. ✅ 编辑处方 → 修改次数 → 保存 → 确认更新成功
3. ✅ 打印处方 → 确认打印内容包含"每天X次"
## 界面效果
### 编辑界面
```
┌─────────────────────────────────────────────────┐
│ 处方类型: [浓缩水丸 ▼] │
├─────────────────────────────────────────────────┤
│ 服用天数: [ 7 ] 每天几次: [ 2 ] │
├─────────────────────────────────────────────────┤
│ 用法: 水煎服,一日二次 │
└─────────────────────────────────────────────────┘
```
### 预览界面
```
服用7天,每天2次, 浓缩水丸 水煎服,一日二次
服用时间: 饭前 服用方式: 温水送服
```
## 注意事项
1. **默认值**:新建处方时默认为每天2次(最常见的用法)
2. **范围限制**:限制在1-10次之间,超出范围的输入会被自动调整
3. **可选字段**:如果不填写,预览中不会显示"每天X次"
4. **与用法说明的关系**`times_per_day` 是结构化数据,`usage_instruction` 是文字描述,两者可以互补
## 兼容性
- ✅ 兼容现有处方数据(旧数据没有此字段时不显示)
- ✅ 不影响现有功能
- ✅ 向后兼容
## 后续优化建议
1. **智能提示**:根据处方类型自动推荐合适的服用次数
2. **关联验证**:与"用法"字段进行一致性检查
3. **统计分析**:统计不同处方类型的常用服用次数
4. **模板支持**:在处方模板中包含 `times_per_day` 字段
## 完成状态
- ✅ 前端界面添加完成
- ✅ 数据模型更新完成
- ✅ 类型定义更新完成
- ✅ 预览显示更新完成
- ⏳ 等待后端数据库字段添加
- ⏳ 等待后端 API 支持
## 相关文件
- `admin/src/components/tcm-prescription/index.vue` - 处方组件主文件
- 后端需要修改的文件(待确认):
- 处方模型文件
- 处方控制器文件
- 数据库迁移文件