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

6.1 KiB
Raw Permalink Blame History

处方"每天几次"功能添加说明

功能描述

在中医处方单中添加"每天几次"字段,用于记录患者每天需要服用药物的次数。

修改内容

1. 表单界面(admin/src/components/tcm-prescription/index.vue

添加表单字段(第 139-145 行)

在"服用天数"字段后面添加"每天几次"输入框:

<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 接口中添加字段:

interface PrescriptionForm {
    // ... 其他字段
    usage_days: number
    times_per_day: number  // 新增
    usage_instruction: string
    // ... 其他字段
}

3. 数据模型初始化(第 650-680 行)

formData 中添加默认值:

const formData = reactive<PrescriptionForm>({
    // ... 其他字段
    usage_days: 7,
    times_per_day: 2,  // 新增,默认每天2次
    usage_instruction: '水煎服,一日二次',
    // ... 其他字段
})

4. 处方预览显示(第 280-285 行)

在处方打印预览中显示"每天几次"信息:

<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

-- 在处方表中添加 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 - 处方组件主文件
  • 后端需要修改的文件(待确认):
    • 处方模型文件
    • 处方控制器文件
    • 数据库迁移文件