系统落地:医废全流程追溯系统
系统实现
这个场景已经作为独立的"医废全流程追溯系统"落地实施。
在完整系统中的位置
医废全流程追溯系统
├── 科室收集管理
│ ├── 蓝牙秤称重
│ ├── 标签打印
│ └── 双人交接确认
├── 院内转运监控
│ ├── GPS 轨迹追踪
│ ├── 路线验证
│ └── 异常报警
├── 暂存间管理
│ ├── 入库管理
│ ├── 超期预警
│ └── 出库移交
└── 合规报表
├── 电子联单
├── 数据统计
└── 监管对接功能模块
1. PDA 端(收集人员)
收集界面:
┌───────────────────────────┐
│ 医废收集 │
├───────────────────────────┤
│ 科室:内科 │
│ 收集人员:张师傅 │
│ │
│ 选择医废类型: │
│ [ ] 感染性 │
│ [ ] 损伤性 │
│ [ ] 病理性 │
│ [ ] 药物性 │
│ [ ] 化学性 │
│ │
│ 称重: │
│ ┌─────────────────────┐ │
│ │ 0.00 kg │ │
│ │ [连接蓝牙秤] │ │
│ └─────────────────────┘ │
│ │
│ 标签信息: │
│ 标签号:MW202501160001 │
│ 重量:5.2 kg │
│ │
│ [打印标签] │
│ │
│ 科室护士确认: │
│ [扫码确认] │
│ │
│ [完成收集] │
└───────────────────────────┘转运界面:
┌───────────────────────────┐
│ 医废转运 │
├───────────────────────────┤
│ 收集记录: │
│ 科室:内科 │
│ 医废类型:感染性 │
│ 总重量:15.5 kg │
│ 标签数:3 袋 │
│ │
│ GPS 轨迹: │
│ [开始转运] │
│ │
│ 当前状态:转运中 │
│ 当前位置:1号楼-2层 │
│ 距离暂存间:200米 │
│ │
│ 路线验证:正常 ✓ │
│ 速度验证:正常 ✓ │
│ │
│ [到达暂存间] │
└───────────────────────────┘核心功能:
- ✓ 蓝牙电子秤自动称重
- ✓ 现场打印医废标签
- ✓ GPS 轨迹实时记录
- ✓ 路线偏离自动报警
2. 管理端(Web 后台)
实时监控看板:
┌─────────────────────────────────────┐
│ 医废全流程追溯系统 - 实时监控 │
├─────────────────────────────────────┤
│ │
│ 今日数据 │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 收集 │ │ 转运 │ │ 入库 │ │
│ │ 45次 │ │ 42次 │ │ 40次 │ │
│ └──────┘ └──────┘ └──────┘ │
│ │
│ 实时状态 │
│ ┌─────────────────────────────┐ │
│ │ 收集人员:张师傅 │ │
│ │ 当前科室:外科 │ │
│ │ 状态:收集中 │ │
│ │ 已收集:8.5 kg │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 收集人员:李师傅 │ │
│ │ 当前状态:转运中 │ │
│ │ 位置:2号楼-3层 │ │
│ │ 路线:正常 ✓ │ │
│ └─────────────────────────────┘ │
│ │
│ 异常预警 │
│ ⚠️ 暂存间有 3 袋医废接近 48 小时 │
│ ⚠️ 收集人员王师傅偏离路线 80 米 │
│ │
│ [查看详细报表] │
└─────────────────────────────────────┘轨迹查看:
┌───────────────────────────┐
│ 转运轨迹 │
├───────────────────────────┤
│ 收集记录:MW202501160001 │
│ 收集人员:张师傅 │
│ 收集时间:08:30 │
│ │
│ [地图显示轨迹] │
│ │
│ 轨迹分析: │
│ ✓ 路线验证:正常 │
│ ✓ 速度验证:正常 │
│ ✓ 时间窗口:正常 │
│ ✓ 停留检测:正常 │
│ │
│ 关键节点: │
│ • 08:30 开始转运 │
│ • 08:35 到达1号楼 │
│ • 08:40 到达2号楼 │
│ • 08:45 到达暂存间 │
│ • 08:46 完成入库 │
│ │
│ 总用时:16分钟 │
│ 总距离:850米 │
└───────────────────────────┘暂存间管理:
┌─────────────────────────────────────┐
│ 暂存间库存管理 │
├─────────────────────────────────────┤
│ 筛选:[全部] [感染性] [损伤性] [超期] │
│ │
│ 标签号 │ 类型 │ 重量 │ 入库时间 │ 状态 │
│ ───────────────────────────────── │
│ MW001 │ 感染 │ 5.2kg│ 08:30 │ 正常 │
│ MW002 │ 感染 │ 4.8kg│ 08:35 │ 正常 │
│ MW003 │ 损伤 │ 2.1kg│ 07:20 │⚠️超期│
│ │
│ 总库存:12.1 kg │
│ 超期预警:1 袋 │
│ │
│ [批量出库] [导出报表] │
└─────────────────────────────────────┘合规报表:
┌─────────────────────────────────────┐
│ 合规报表 │
├─────────────────────────────────────┤
│ 报表类型: │
│ [ ] 医废产生统计表 │
│ [ ] 医废转运统计表 │
│ [ ] 医废处置统计表 │
│ [ ] 电子转移联单 │
│ │
│ 时间范围: │
│ [2025-01-01] 至 [2025-01-31] │
│ │
│ [生成报表] [导出 Excel] [上报监管] │
└─────────────────────────────────────┘实施效果
定量效果
| 指标 | 上线前 | 上线后 | 提升 |
|---|---|---|---|
| 称重数据准确率 | ~70% | 100% | ⬆️ 42.9% |
| 交接时间 | 5 分钟/次 | 2 分钟/次 | ⬇️ 60% |
| 路线违规率 | ~25% | <2% | ⬇️ 92% |
| 超期医废数量 | 5-10 袋/月 | 0-1 袋/月 | ⬇️ 90% |
| 迎检准备时间 | 2-3 天 | 30 分钟 | ⬇️ 95% |
| 合规率 | ~85% | 100% | ⬆️ 17.6% |
定性效果
院感科反馈:
"最大的变化是数据准确了,以前手工记录,经常有误差,现在蓝牙秤自动称重,数据100%准确。而且全程可追溯,一旦出问题,能快速找到责任人。" —— 王主任(院感科)
收集人员反馈:
"以前要手工记录重量,容易出错,现在蓝牙秤自动称重,标签自动打印,省事多了。而且路线有GPS监控,我们也不敢抄近路了。" —— 张师傅(收集人员)
后勤科反馈:
"以前每次卫监、环保部门来检查,我们都要准备大量的纸质联单,整理起来很麻烦。现在系统自动生成电子联单,30分钟就能准备好所有资料。" —— 李科长(后勤科)
技术实现
技术栈
后端:
- Java Spring Boot
- MySQL 数据库
- Redis 缓存
- WebSocket 实时通信
前端:
- Android App(PDA 端)
- Vue 3 + Element Plus(PC 管理后台)
硬件:
- PDA 手持终端(Android 系统)
- 蓝牙电子秤(精度 ±0.1kg)
- 便携热敏打印机
- GPS 定位模块
集成:
- 卫健委监管平台对接
- 环保局监管平台对接
核心代码片段
typescript
// GPS 轨迹验证服务
class TrajectoryValidationService {
async validateTrajectory(
trajectoryId: string,
plannedRoute: Route
): Promise<ValidationResult> {
// 1. 获取轨迹数据
const trajectory = await this.getTrajectory(trajectoryId);
// 2. 验证路线偏离
const deviationResult = await this.checkRouteDeviation(
trajectory.points,
plannedRoute.points,
50 // 最大允许偏离 50 米
);
// 3. 验证速度合理性
const speedCheck = this.checkSpeedReasonableness(trajectory.points);
// 4. 验证轨迹跳跃
const jumpCheck = this.checkTrajectoryJump(trajectory.points);
// 5. 验证时间窗口
const timeWindowCheck = await this.checkTimeWindow(
trajectory.startTime,
trajectory.endTime,
plannedRoute.startTime,
plannedRoute.endTime,
30 // 时间窗口 30 分钟
);
// 6. 验证异常停留
const stayCheck = this.checkAbnormalStay(trajectory.points, 10);
// 7. 汇总验证结果
const result = {
isValid: !deviationResult.shouldAlert &&
!speedCheck.hasAbnormalSpeed &&
!jumpCheck.isSuspicious &&
timeWindowCheck.isInTimeWindow &&
!stayCheck.shouldAlert,
deviationResult,
speedCheck,
jumpCheck,
timeWindowCheck,
stayCheck
};
// 8. 如果有违规,记录并报警
if (!result.isValid) {
await this.recordViolations(trajectoryId, result);
await this.notifyAdmin({
type: 'TRAJECTORY_VIOLATION',
trajectoryId,
violations: this.extractViolations(result)
});
}
return result;
}
}扩展应用
这个场景的逻辑已经被复用到以下场景:
- 危险品运输监控 - 危险品运输路线验证
- 巡检轨迹验证 - 安保巡检、设备巡检轨迹验证
- 配送路线监控 - 外卖配送、物流配送路线验证
查看完整系统
本场景是独立的"医废全流程追溯系统"。
系统演示
如需查看系统演示或了解部署方案,请 联系我们 →

