news 2026/6/12 1:10:14

2026山东大学软件学院创新实训——IntelliHealth(五):个人总结:家庭药物管理模块重构与扫描入库流程优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026山东大学软件学院创新实训——IntelliHealth(五):个人总结:家庭药物管理模块重构与扫描入库流程优化

一、本周工作概述

本周的主要工作集中在 IntelliHealth 家庭药物管理模块的重构与优化。

与之前相比,本周并没有新增大量业务功能,而是针对之前已经完成的扫码入库流程进行了重新设计和代码重构。经过前后端联调后,我发现原有实现虽然能够完成扫码、识别和入库,但模块职责划分不够清晰,后续如果接入真实条形码识别接口或药品数据库,代码维护成本会越来越高。

因此本周我重点完成了:

  • 扫描入库模块独立拆分
  • 重新整理后端目录结构
  • 重构条形码识别逻辑
  • 增加识别服务接口层
  • 优化异常处理机制
  • 完成前后端联调验证
  • 梳理完整扫描入库业务链路

经过本次调整后,扫描入库功能已经形成了较为清晰的模块化架构,为后续接入真实药品数据源和 OCR 说明书识别做好了准备。


二、为什么要重构?

在最初版本中,扫码入库功能能够正常运行,但随着功能逐渐增加,我发现存在几个问题:

1. 条形码识别与业务逻辑耦合

原来的实现中:

MedicationService ↓ 直接返回模拟药品信息

虽然可以完成测试,但后续如果:

  • 接第三方条码接口
  • 查询本地药品库
  • 查询云端药品数据库

都会导致大量业务代码修改。

2. 模块职责不够清晰

随着功能增加:

  • 扫码识别
  • 用户药箱
  • 药品目录
  • 冲突检测

开始逐渐混在一起。

虽然当前项目规模不大,但后期扩展会比较困难。

3. 后续 OCR 功能难以接入

下一阶段计划增加:

说明书拍照 ↓ OCR识别 ↓ drug_info补库 ↓ 药物禁忌分析

如果不提前整理架构,后续改动成本会越来越高。

因此本周决定先完成模块化重构。


三、扫描入库模块独立拆分

本周将扫描入库功能迁移到独立模块:

medication_scan ├── Controller ├── Service ├── Entity ├── Repository └── DTO

新的目录结构如下:

IntelliHealth └── medication_scan ├── Controller ├── Service ├── Entity ├── Repository └── DTO

与项目中的:

interact_analysis

处于同一级别。

这样做最大的好处是:

模块职责明确

扫描入库相关代码全部集中在:

medication_scan

目录下。

不会与其它功能混杂。

方便后续扩展

未来新增:

  • CameraX扫码
  • OCR识别
  • 第三方API
  • 药品库同步

都可以直接在当前模块扩展。


四、本周最大的改进:条形码识别接口抽象

这次重构中,我认为最有价值的一部分是引入:

BarcodeLookupProvider

接口层。

之前的逻辑:

Controller ↓ Service ↓ Mock数据

重构后:

Controller ↓ MedicationScanService ↓ BarcodeLookupProvider ↓ 具体实现类

架构变成:

public interface BarcodeLookupProvider { DrugInfoResponse lookup(String barcode); }

当前实现:

@Service public class StubBarcodeLookupProvider implements BarcodeLookupProvider { }

未来如果接入真实数据源:

@Service @Primary public class LocalMedicationsBarcodeLookupProvider implements BarcodeLookupProvider { }

甚至:

@Service @Primary public class ThirdPartyBarcodeLookupProvider implements BarcodeLookupProvider { }

业务层完全不需要修改。

这一点体现了依赖倒置思想,也让系统具备了更好的扩展能力。


五、重新梳理扫描入库主流程

经过重构后,扫描入库主流程如下:

扫码

条形码识别

返回药品信息

填写生产日期

自动计算过期时间

写入用户药箱

刷新药箱列表

具体业务链路:

整个流程已经能够完成:

功能状态
扫描条形码
药品识别
输入生产日期
自动计算过期时间
存入用户药箱
页面刷新展示

六、过期时间计算逻辑优化

本周重新检查了药品有效期计算逻辑。

核心思想是:

所有与药品有效期相关的业务规则统一放在后端处理。

前端只负责收集:

生产日期 数量 单位

后端统一计算:

expiryDate = manufactureDate.plusMonths(shelfLifeMonths);

同时计算:

daysLeft

并自动生成状态:

normal expiring expired

这样可以避免:

前端算一次 后端算一次

导致数据不一致的问题。


七、异常处理优化

这次重构还顺手修复了一个细节问题。

之前生产日期格式错误时:

2025/03/01

会直接抛出异常。

最终返回:

500 Internal Server Error

这实际上属于用户输入错误。

因此本周调整为:

400 Bad Request

并返回明确提示信息。

这样更符合 REST API 的设计规范。


八、当前存在的问题

经过联调后,目前发现几个仍需要继续完善的地方:

用户体系尚未接入

当前:

userId = "u1001"

仍然是测试用户。

后续需要与登录系统打通。


条码识别仍是模拟数据

当前:

StubBarcodeLookupProvider

返回的是 Mock 数据。

后续需要:

  • 查询本地药品库
  • 接入第三方条码API

九、本周收获

本周最大的收获并不是新增了多少功能,而是在重构过程中对项目架构有了更深的理解。

以前开发时更多关注:

功能能不能跑

而这周开始更多考虑:

代码是否容易维护
是否方便扩展
模块职责是否清晰
未来是否容易接入新功能

尤其是在设计:

BarcodeLookupProvider

接口时,我逐渐意识到接口抽象的重要性。

通过增加这一层抽象,系统不仅能够支持当前的 Mock 数据,还能够无缝切换到真实药品库或第三方条码服务,而不影响现有业务逻辑。

这种设计思路对于后续 OCR 补库、药品知识库建设以及药物禁忌分析模块都有帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 1:09:41

计算机毕业设计之基于协同过滤的校园音乐推荐系统

伴随着我国社会的发展,人民生活质量日益提高。于是对各种需求进行规范而严格是十分有必要的,所以许许多多的微信小程序应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套校园音乐推荐系统,帮助学校进行音乐信息…

作者头像 李华
网站建设 2026/6/12 1:07:00

江津双福本地装修推荐选哪家

江津双福装修怎么选?我推荐这家“先施工后付款”的公司作为在双福住了五年的业主,去年终于把老房子翻新了。装修前跑了七八家公司,发现一个普遍现象:很多公司一上来就催签合同、交定金,却连我家的户型图都不仔细看。后…

作者头像 李华
网站建设 2026/6/12 1:03:21

Steam Bullet Fest 2026技术盘点:8款弹幕游戏七维评测

1. Vampire Survivors(吸血鬼幸存者)背景:Poncle开发,品类定义者。2026年1.15版本新增水下关卡与多存档,夏季DLC追加10角色16武器。剧情:无线性剧情,背景隐含恶魔猎杀隐喻。优缺点:✅…

作者头像 李华
网站建设 2026/6/12 1:01:00

拥塞控制:排水终止的两种决策:OR 与 AND

拥塞控制:排水终止的两种决策:OR 与 AND PROBE_BW 的周期由 8 个相位构成:6 个巡航(1.0x pacing)、1 个上探(1.25x)、1 个下探(0.75x)。下探的任务是在上探将 inflight 推…

作者头像 李华
网站建设 2026/6/12 0:58:17

告别静态地图!用OpenLayers的lineDashOffset实现酷炫流动线(附完整代码)

用OpenLayers打造动态流动线:从原理到实战的完整指南地图可视化早已不再局限于静态展示。当一条普通的河流轨迹线开始流动,当道路流量数据以动态形式呈现,数据的生命力瞬间被激活。本文将带你深入OpenLayers的lineDash和lineDashOffset这对黄…

作者头像 李华
网站建设 2026/6/12 0:55:17

天赐范式第70天:从“弄巧成拙”到“买椟还珠”,用范式算法思维破解决策陷阱——以“某国退出区域合作案例”为例解析价值错判与可计算决策模型

《从“弄巧成拙”到“买椟还珠”:用范式算法思维破解决策陷阱》——以“某国退出区域合作案例”为例解析价值错判与可计算决策模型 标签:#决策科学 #算法思维 #认知偏差 #管理方法论 #历史案例分析 #模型构建 摘要: 本文以某国退出区域合作组…

作者头像 李华