You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

322 lines
9.0 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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生成**: 需安装wkhtmltopdflaravel-snappy依赖
4. **条形码生成**: 使用 `picqer/php-barcode-generator`
## 相关文档
- `项目需求规范示例.md` - 需求与设计文档模板参考
- 数据库详细结构见 `data.sql`