|
|
# AGENTS.md - 秦皇岛中医院医技预约系统
|
|
|
|
|
|
## 项目简介
|
|
|
秦皇岛中医院医技预约系统,用于医院医技检查项目的预约管理,包括科室、设备、号源管理、预约登记等核心功能。系统与HIS系统集成,支持多渠道预约(自助机、H5、管理后台)。
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
QHD_ZhongYiYuan_YiJiYuYue/
|
|
|
├── Laravel/ # PHP后端API服务 (Laravel 8)
|
|
|
│ ├── app/ # 应用核心代码
|
|
|
│ │ ├── Http/Controllers/API/ # API控制器
|
|
|
│ │ ├── Models/ # 数据模型
|
|
|
│ │ ├── Lib/ # 自定义类库
|
|
|
│ │ └── Middleware/ # 中间件
|
|
|
│ ├── routes/ # 路由定义
|
|
|
│ ├── config/ # 配置文件
|
|
|
│ └── database/ # 数据库相关
|
|
|
│
|
|
|
├── YiJi-admin/ # 管理后台前端 (Vue 3 + Vite + Element Plus)
|
|
|
│ ├── src/
|
|
|
│ │ ├── views/ # 页面组件
|
|
|
│ │ ├── components/ # 公共组件
|
|
|
│ │ ├── router/ # 路由配置
|
|
|
│ │ ├── store/ # Pinia状态管理
|
|
|
│ │ └── api/ # API接口
|
|
|
│ └── vite.config.js # Vite配置
|
|
|
│
|
|
|
├── ZiZhuJi/ # 自助机前端 (Vue 3 + Vite + Element Plus)
|
|
|
│ ├── src/
|
|
|
│ │ ├── views/ # 页面组件
|
|
|
│ │ ├── tools/ # 工具类
|
|
|
│ │ └── router/ # 路由配置
|
|
|
│ └── vite.config.js
|
|
|
│
|
|
|
├── h5/ # 移动端H5 (uni-app)
|
|
|
│ ├── pages/ # 页面
|
|
|
│ ├── api/ # API接口
|
|
|
│ ├── static/ # 静态资源
|
|
|
│ └── uni_modules/ # uni-app组件模块
|
|
|
│
|
|
|
├── bot/ # WebSocket服务 (Workerman)
|
|
|
│ └── workerman/ # Workerman框架
|
|
|
│
|
|
|
├── 秦皇岛中医院监听mq/ # HIS消息队列监听服务 (C#)
|
|
|
│ └ MyHosListener/
|
|
|
│ ├── common/
|
|
|
│ │ ├── listener/ # MQ消息监听器
|
|
|
│ │ ├── DBTools.cs # 数据库工具
|
|
|
│ │ └ Tools.cs # 通用工具
|
|
|
│ └ App.config # 应用配置
|
|
|
│
|
|
|
└── data.sql # 数据库结构文件
|
|
|
```
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
### 后端
|
|
|
- **框架**: Laravel 8
|
|
|
- **PHP版本**: ^7.4|^8.0
|
|
|
- **数据库**: MySQL 5.7+ (数据库名: yiji_qhdzhongyiyuan)
|
|
|
- **认证**: Laravel Sanctum
|
|
|
- **关键依赖**:
|
|
|
- barryvdh/laravel-snappy (PDF生成)
|
|
|
- picqer/php-barcode-generator (条形码生成)
|
|
|
|
|
|
### 前端
|
|
|
- **管理后台 & 自助机**: Vue 3 + Vite + Element Plus + Pinia/Vue Router
|
|
|
- **移动端H5**: uni-app (支持多端)
|
|
|
- **HTTP客户端**: Axios
|
|
|
|
|
|
### 其他服务
|
|
|
- **WebSocket**: Workerman (PHP)
|
|
|
- **HIS集成**: C# Windows服务监听MQ消息
|
|
|
|
|
|
## 构建与运行命令
|
|
|
|
|
|
### Laravel后端
|
|
|
```bash
|
|
|
cd Laravel
|
|
|
|
|
|
# 安装依赖
|
|
|
composer install
|
|
|
|
|
|
# 配置环境
|
|
|
cp .env.example .env
|
|
|
php artisan key:generate
|
|
|
|
|
|
# 运行开发服务器
|
|
|
php artisan serve
|
|
|
|
|
|
# 数据库迁移(如有)
|
|
|
php artisan migrate
|
|
|
|
|
|
# 运行测试
|
|
|
php artisan test
|
|
|
# 或
|
|
|
phpunit
|
|
|
```
|
|
|
|
|
|
### YiJi-admin 管理后台
|
|
|
```bash
|
|
|
cd YiJi-admin
|
|
|
|
|
|
# 安装依赖
|
|
|
npm install
|
|
|
|
|
|
# 开发模式
|
|
|
npm run dev
|
|
|
|
|
|
# 生产构建
|
|
|
npm run build
|
|
|
|
|
|
# 预览构建结果
|
|
|
npm run preview
|
|
|
|
|
|
# 代码检查
|
|
|
npm run lint
|
|
|
|
|
|
# 代码格式化
|
|
|
npm run format
|
|
|
```
|
|
|
|
|
|
### ZiZhuJi 自助机
|
|
|
```bash
|
|
|
cd ZiZhuJi
|
|
|
|
|
|
# 安装依赖
|
|
|
npm install
|
|
|
|
|
|
# 开发模式
|
|
|
npm run dev
|
|
|
|
|
|
# 生产构建
|
|
|
npm run build
|
|
|
|
|
|
# 预览构建结果
|
|
|
npm run preview
|
|
|
```
|
|
|
|
|
|
### h5 移动端
|
|
|
```bash
|
|
|
cd h5
|
|
|
|
|
|
# 使用HBuilderX或uni-app CLI
|
|
|
# 开发:通过HBuilderX运行到浏览器或模拟器
|
|
|
# 构建:通过HBuilderX发布为H5/App
|
|
|
```
|
|
|
|
|
|
### Workerman WebSocket
|
|
|
```bash
|
|
|
cd bot
|
|
|
|
|
|
# 安装依赖
|
|
|
composer install
|
|
|
|
|
|
# 启动WebSocket服务(Windows)
|
|
|
php workerman/start.php
|
|
|
|
|
|
# Linux下通常使用
|
|
|
php workerman/start.php start
|
|
|
php workerman/start.php stop
|
|
|
php workerman/start.php restart
|
|
|
```
|
|
|
|
|
|
### HIS监听服务 (C#)
|
|
|
```bash
|
|
|
# 使用Visual Studio编译运行
|
|
|
# 或通过已编译的exe文件启动
|
|
|
```
|
|
|
|
|
|
## 数据库核心表结构
|
|
|
|
|
|
### 权限与用户管理
|
|
|
- `users` - 系统用户表
|
|
|
- `group` - 用户分组
|
|
|
- `group_menu` - 分组菜单关联
|
|
|
- `menu` - 系统菜单
|
|
|
|
|
|
### 业务核心表
|
|
|
- `s_department` - 科室表
|
|
|
- `s_department_resources` - 科室资源(检查室/机房)
|
|
|
- `s_devices` - 设备表
|
|
|
- `s_check_item` - 检查项目表
|
|
|
- `s_check_item_class` - 检查项目分类
|
|
|
- `s_check_item_device` - 检查项目-设备绑定关系
|
|
|
|
|
|
### 预约管理
|
|
|
- `s_appointment_type` - 预约类型(住院/门诊/急诊/体检等渠道)
|
|
|
- `s_appointment_type_ratio` - 预约类型比例配置
|
|
|
- `s_period` - 预约时间段配置
|
|
|
- `s_source_roster` - 预约计划模板
|
|
|
- `s_source_roster_count` - 模板各渠道号源数量
|
|
|
- `s_source_roster_detail` - 预约计划明细(每日号源)
|
|
|
- `s_source_roster_detail_count` - 明细各渠道号源数量(含乐观锁version)
|
|
|
- `s_holiday` - 节假日配置
|
|
|
|
|
|
### 预约记录
|
|
|
- `s_list` - **预约主表**(核心业务表,包含患者信息、医嘱、预约状态等)
|
|
|
- 主要状态字段 `list_status`: 0-正在申请, 1-预约, 2-登记, 3-结束
|
|
|
- 患者类型 `patient_type`: 0-住院, 1-门诊, 2-急诊, 3-体检
|
|
|
- `s_list_log` - 预约状态变更日志
|
|
|
|
|
|
### 其他
|
|
|
- `configs` - 系统配置
|
|
|
- `s_huchi` - 检查项目互斥配置
|
|
|
- `s_inpatient_ward` - 病区表
|
|
|
- `outside_user` - 第三方对接用户表
|
|
|
- `institutional_calendar` - 体检机构日历(如用于体检预约)
|
|
|
|
|
|
## API路由规范
|
|
|
|
|
|
API基础路径: `/api/v1/` (需携带token认证)
|
|
|
|
|
|
### 认证相关
|
|
|
- `POST /api/admin/login` - 登录
|
|
|
- `POST /api/tokenRefresh` - 刷新token
|
|
|
|
|
|
### 系统管理
|
|
|
- `POST /api/v1/admin/getBaseMenuList` - 获取用户菜单
|
|
|
- `POST /api/v1/admin/getUserList` - 用户列表
|
|
|
- `POST /api/v1/admin/getGroupList` - 分组列表
|
|
|
- `POST /api/v1/admin/GetConfigInfo` - 获取配置
|
|
|
|
|
|
### 业务管理
|
|
|
- `POST /api/v1/admin/GetDepartmentList` - 科室列表
|
|
|
- `POST /api/v1/admin/GetCheckItemList` - 检查项目列表
|
|
|
- `POST /api/v1/admin/GetDeviceList` - 设备列表
|
|
|
- `POST /api/v1/admin/PlanModelGetList` - 预约计划模板
|
|
|
- `POST /api/v1/admin/PlanListGetList` - 预约计划明细
|
|
|
- `POST /api/v1/admin/GetMainList` - 预约记录列表
|
|
|
- `POST /api/v1/admin/CancelYuYue` - 取消预约
|
|
|
|
|
|
**命名规范**: 控制器位于 `App\Http\Controllers\API\Admin\` 目录,按业务模块分子目录(如 `YeWu\`)
|
|
|
|
|
|
## HIS集成消息类型
|
|
|
|
|
|
C#监听服务处理以下MQ消息类型(位于 `秦皇岛中医院监听mq\MyHosListener\common\listener\`):
|
|
|
- `MI0150Listener` - 医嘱信息
|
|
|
- `MI0164Listener` - 医嘱状态变更
|
|
|
- `MU0165Listener` - 医嘱更新
|
|
|
- `CI0047Listener` - 检查信息
|
|
|
- `CI0054Listener` / `CI0055Listener` - 检查相关
|
|
|
- `CD0050Listener` - 检查确认
|
|
|
- `OI0083Listener` - 医嘱订单
|
|
|
- `OD0084Listener` - 订单更新
|
|
|
- `MU0151Listener` - 其他更新
|
|
|
|
|
|
消息处理后写入 `s_list` 表及相关业务表。
|
|
|
|
|
|
## 代码规范
|
|
|
|
|
|
### Laravel
|
|
|
- 遵循PSR-12编码规范
|
|
|
- 控制器命名: `XxxController`
|
|
|
- 模型命名: 单数形式,对应表名前缀通常为 `s_`
|
|
|
- 使用Eloquent ORM操作数据库
|
|
|
- 复杂业务逻辑封装在 `app/Lib/` 或Service层
|
|
|
|
|
|
### Vue前端
|
|
|
- 组件命名: PascalCase (如 `CheckItemMainList.vue`)
|
|
|
- 使用Composition API或Options API
|
|
|
- Element Plus组件库统一UI风格
|
|
|
- API调用统一通过 `src/api/` 模块
|
|
|
|
|
|
### 通用规范
|
|
|
- 时间字段命名: `created_at`, `updated_at`
|
|
|
- 状态字段: `status` (0-关闭/禁用, 1-开启/正常)
|
|
|
- 删除标记: `is_del` (0-未删除, 1-已删除)
|
|
|
- 注意软删除和状态区分
|
|
|
|
|
|
## 开发注意事项
|
|
|
|
|
|
1. **号源管理**
|
|
|
- 使用乐观锁(`s_source_roster_detail_count.version`)防止并发预约冲突
|
|
|
- 预约时需检查项目互斥(`s_huchi`表)
|
|
|
- 预约需在 `end_reservation_time` 前完成
|
|
|
|
|
|
2. **HIS数据同步**
|
|
|
- HIS通过MQ推送医嘱数据,监听服务接收并写入数据库
|
|
|
- `entrust_id` 为HIS医嘱唯一标识,需确保唯一性
|
|
|
- 注意门诊缴费状态同步(`is_pay`字段)
|
|
|
|
|
|
3. **预约状态流转**
|
|
|
- 正常流程: 申请(0) → 预约(1) → 登记(2) → 结束(3)
|
|
|
- 支持取消预约(记录取消时间 `canel_time`)
|
|
|
- 所有状态变更记录到 `s_list_log`
|
|
|
|
|
|
4. **安全与认证**
|
|
|
- 所有业务API需通过 `checktoken` 中间件验证
|
|
|
- Token使用Laravel Sanctum管理
|
|
|
- 密码需加密存储
|
|
|
|
|
|
5. **环境配置**
|
|
|
- Laravel `.env` 配置数据库、应用URL等
|
|
|
- C#监听服务 `App.config` 配置MQ连接、数据库连接
|
|
|
- 前端需配置API基础路径
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
```bash
|
|
|
# Laravel测试
|
|
|
cd Laravel
|
|
|
php artisan test
|
|
|
|
|
|
# 或使用PHPUnit直接运行
|
|
|
phpunit
|
|
|
```
|
|
|
|
|
|
前端项目暂无测试脚本配置,建议补充单元测试和E2E测试。
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
1. **数据库导入**: 使用 `data.sql` 初始化数据库结构
|
|
|
2. **跨域配置**: Laravel已配置 `fruitcake/laravel-cors`
|
|
|
3. **PDF生成**: 需安装wkhtmltopdf(laravel-snappy依赖)
|
|
|
4. **条形码生成**: 使用 `picqer/php-barcode-generator`
|
|
|
|
|
|
## 相关文档
|
|
|
|
|
|
- `项目需求规范示例.md` - 需求与设计文档模板参考
|
|
|
- 数据库详细结构见 `data.sql` |