# 甘肃省中医院 - 患者建档系统 一个模拟医院建档流程的前后端演示项目,使用 SpringBoot + 阿里云百炼 SDK + Vue.js 构建。 ## 项目特点 - 🏥 **完整建档流程**:患者信息采集、身份证识别、表单填写、信息修改 - 📸 **摄像头拍照**:使用 H5 技术直接调用浏览器摄像头拍摄身份证 - 🤖 **AI 识别**:集成百炼平台 qwen-vl-max 视觉模型识别身份证 - 💾 **本地存储**:使用 CSV 文件存储数据,无需数据库 - 🚀 **一键启动**:前端资源嵌入后端,启动 SpringBoot 即可使用 ## 技术栈 ### 后端 - SpringBoot 3.2.0 - 阿里云百炼 SDK 2.16.3 - Hutool 5.8.24 - Apache Commons CSV - Lombok ### 前端 - Vue.js 3 (CDN 方式) - Element Plus - Axios ## 项目结构 ``` establish_medical_demo/ ├── pom.xml # Maven 配置文件 ├── README.md # 项目文档 ├── data/ # 数据存储目录(自动创建) │ └── patients.csv # 患者数据文件 └── src/ └── main/ ├── java/com/medical/demo/ │ ├── HospitalRegistrationApplication.java # 启动类 │ ├── config/ # 配置类 │ │ └── AppConfig.java # 应用配置 │ ├── controller/ # 控制器 │ │ ├── AppController.java # 页面控制器 │ │ └── PatientController.java # 患者建档控制器 │ ├── entity/ # 实体类 │ │ ├── ApiResponse.java # 统一响应 │ │ ├── IdCardRecognitionResult.java # 识别结果 │ │ └── PatientInfo.java # 患者信息 │ └── service/ # 服务层 │ ├── IdCardRecognitionService.java # 身份证识别服务(百炼 SDK) │ └── PatientDataService.java # 数据存储服务 └── resources/ ├── application.yml # 应用配置 └── static/ └── index.html # 前端页面(Vue.js) ``` ## 快速开始 ### 1. 环境要求 - JDK 17+ - Maven 3.6+ - 浏览器:Chrome、Edge、Firefox 等现代浏览器 ### 2. 配置百炼平台 API Key 编辑 `src/main/resources/application.yml` 文件: ```yaml bailian: api-key: YOUR_API_KEY_HERE # 替换为你的百炼平台 API Key ``` **获取百炼平台 API Key:** 1. 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/) 2. 登录阿里云账号 3. 在"API-KEY 管理"中创建或获取 API Key 4. 将 API Key 填入配置文件 ### 3. 启动项目 #### 方式一:使用 Maven 启动(推荐) ```bash # 进入项目目录 cd establish_medical_demo # 清理并编译项目 mvn clean compile # 启动项目 mvn spring-boot:run ``` #### 方式二:使用 IDE 启动 1. 使用 IntelliJ IDEA 或 Eclipse 导入项目 2. 找到 `HospitalRegistrationApplication.java` 文件 3. 右键点击运行 main 方法 #### 方式三:打包后启动 ```bash # 打包项目 mvn clean package # 运行 jar 包 java -jar target/hospital-registration-demo-1.0.0.jar ``` ### 4. 访问系统 启动成功后,在浏览器中访问: ``` http://localhost:8080 ``` ## 使用流程 ### 1. 首页 访问系统后,会看到欢迎页面,点击"开始建档"按钮。 ### 2. 身份证信息采集 #### 方式一:摄像头拍照识别 1. 点击"打开摄像头"按钮 2. 浏览器会请求摄像头权限,点击"允许" 3. 将身份证正面放在摄像头前,确保光线充足 4. 点击"拍摄身份证"按钮 5. 点击"识别身份证"按钮,系统会调用百炼平台 AI 识别身份证号 6. 识别成功后会自动跳转到表单页面 #### 方式二:手动输入 1. 在"手动输入身份证号"输入框中输入 18 位身份证号 2. 点击"使用手动输入的身份证号"按钮 3. 系统会自动跳转到表单页面 ### 3. 填写/修改患者信息 #### 新建档患者 - 身份证号字段会自动填充(置灰不可修改) - 填写姓名、性别、出生日期、家庭住址、婚姻状况、学历等信息 - 点击"提交建档"按钮 #### 已建档患者 - 页面会显示"您已经建档,可以修改以下信息"的提示 - 所有字段会自动填充已保存的信息 - 可以修改任意字段 - 点击"保存修改"按钮 ### 4. 完成建档 保存成功后会显示成功页面,点击"返回首页"可以继续为其他患者建档。 ## API 接口文档 ### 1. 识别身份证 **接口**:`POST /api/patient/recognize` **参数**: - `file`:身份证图片文件(multipart/form-data) **响应**: ```json { "code": 200, "message": "身份证识别成功", "data": { "isIdCard": true, "idCardNumber": "110101199001011234", "errorMessage": null } } ``` ### 2. 查询患者信息 **接口**:`GET /api/patient/info` **参数**: - `idCardNumber`:身份证号 **响应**: ```json { "code": 200, "message": "操作成功", "data": { "idCardNumber": "110101199001011234", "name": "张三", "gender": "男", "birthDate": "1990-01-01", "address": "北京市东城区某某街道", "maritalStatus": "已婚", "education": "本科", "registrationTime": "2026-01-08 10:00:00", "updateTime": "2026-01-08 10:00:00" } } ``` ### 3. 保存患者信息 **接口**:`POST /api/patient/save` **请求体**: ```json { "idCardNumber": "110101199001011234", "name": "张三", "gender": "男", "birthDate": "1990-01-01", "address": "北京市东城区某某街道", "maritalStatus": "已婚", "education": "本科" } ``` **响应**: ```json { "code": 200, "message": "建档成功", "data": null } ``` ### 4. 检查身份证号是否已建档 **接口**:`GET /api/patient/exists` **参数**: - `idCardNumber`:身份证号 **响应**: ```json { "code": 200, "message": "操作成功", "data": true } ``` ### 5. 获取所有患者信息(管理功能) **接口**:`GET /api/patient/all` **响应**: ```json { "code": 200, "message": "操作成功", "data": [ { "idCardNumber": "110101199001011234", "name": "张三", "gender": "男", "birthDate": "1990-01-01", "address": "北京市东城区某某街道", "maritalStatus": "已婚", "education": "本科", "registrationTime": "2026-01-08 10:00:00", "updateTime": "2026-01-08 10:00:00" } ] } ``` ## 数据存储 患者信息以 CSV 格式存储在 `./data/patients.csv` 文件中。 **CSV 文件格式**: ```csv 身份证号,姓名,性别,出生日期,家庭住址,婚姻状况,学历,建档时间,更新时间 110101199001011234,张三,男,1990-01-01,北京市东城区某某街道,已婚,本科,2026-01-08 10:00:00,2026-01-08 10:00:00 ``` 可以使用 Excel 或文本编辑器直接查看和编辑数据。 ## 配置说明 ### application.yml 配置项 ```yaml # 服务器配置 server: port: 8080 # 服务端口,可以修改为其他端口 # 百炼平台配置 bailian: api-key: YOUR_API_KEY_HERE # 必填:百炼平台 API Key base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 # 百炼平台 API 地址 model: qwen-vl-max # 使用的模型名称 temperature: 0.3 # 温度参数(0-1,越低越确定性) max-tokens: 1000 # 最大输出 token 数 # 应用配置 app: hospital-name: 甘肃省中医院 # 医院名称 data-file-path: ./data/patients.csv # 数据存储路径 ``` ## 常见问题 ### 1. 百炼平台 API Key 哪里获取? 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/),登录后在"API-KEY 管理"中创建。 ### 2. 摄像头无法访问? - 确保浏览器允许访问摄像头(检查浏览器权限设置) - 使用 HTTPS 或 localhost 访问(部分浏览器在 HTTP 下不支持摄像头) - 尝试使用其他浏览器(Chrome、Edge 推荐使用) ### 3. 身份证识别失败? - 确保百炼平台 API Key 配置正确 - 检查网络连接,确保能访问百炼平台 API - 确保拍摄的照片清晰,身份证信息完整可见 - 如果识别失败,可以使用手动输入功能 ### 4. 数据存储在哪里? 数据存储在项目根目录的 `./data/patients.csv` 文件中,可以直接查看。 ### 5. 如何修改医院名称? 编辑 `src/main/resources/application.yml` 文件,修改 `app.hospital-name` 配置项。 ### 6. 如何修改服务端口? 编辑 `src/main/resources/application.yml` 文件,修改 `server.port` 配置项。 ### 7. 项目启动失败? - 检查 JDK 版本是否为 17 或更高 - 确保 Maven 依赖下载完成 - 查看控制台错误日志,根据错误信息排查 ## 开发说明 ### 修改前端页面 前端页面位于 `src/main/resources/static/index.html`,使用 Vue.js 3 + Element Plus 构建。 ### 添加新功能 1. 后端:在 `controller`、`service`、`entity` 包中添加对应的类 2. 前端:在 `index.html` 中添加新的页面和交互逻辑 ### 调试技巧 - 后端日志:在 `application.yml` 中调整 `logging.level` 配置 - 前端调试:使用浏览器开发者工具(F12) - API 测试:使用 Postman 或 curl 测试接口 ## 技术支持 如有问题,请检查: 1. 控制台错误日志 2. 浏览器开发者工具 3. 百炼平台 API 文档 ## 许可证 本项目仅供学习和演示使用。 --- **祝您使用愉快!** 🏥