建档

wangkangyjy ccc70c3513 init 3 mēneši atpakaļ
src ccc70c3513 init 3 mēneši atpakaļ
.gitignore ccc70c3513 init 3 mēneši atpakaļ
CHANGELOG.md ccc70c3513 init 3 mēneši atpakaļ
FLOW_COMPARISON.md ccc70c3513 init 3 mēneši atpakaļ
LOGO_PATH_FIX.md ccc70c3513 init 3 mēneši atpakaļ
QUICK_START.md ccc70c3513 init 3 mēneši atpakaļ
README.md ccc70c3513 init 3 mēneši atpakaļ
README_SUMMARY.md ccc70c3513 init 3 mēneši atpakaļ
TECHNICAL_NOTES.md ccc70c3513 init 3 mēneši atpakaļ
TEST_GUIDE.md ccc70c3513 init 3 mēneši atpakaļ
UPDATE_3S_PROMPT.md ccc70c3513 init 3 mēneši atpakaļ
UPDATE_CONFIRM_STEP.md ccc70c3513 init 3 mēneši atpakaļ
UPDATE_LOGO.md ccc70c3513 init 3 mēneši atpakaļ
UPDATE_SUMMARY.md ccc70c3513 init 3 mēneši atpakaļ
pom.xml ccc70c3513 init 3 mēneši atpakaļ
start.bat ccc70c3513 init 3 mēneši atpakaļ
start.sh ccc70c3513 init 3 mēneši atpakaļ

README.md

甘肃省中医院 - 患者建档系统

一个模拟医院建档流程的前后端演示项目,使用 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 文件:

bailian:
  api-key: YOUR_API_KEY_HERE  # 替换为你的百炼平台 API Key

获取百炼平台 API Key:

  1. 访问 阿里云百炼平台
  2. 登录阿里云账号
  3. 在"API-KEY 管理"中创建或获取 API Key
  4. 将 API Key 填入配置文件

3. 启动项目

方式一:使用 Maven 启动(推荐)

# 进入项目目录
cd establish_medical_demo

# 清理并编译项目
mvn clean compile

# 启动项目
mvn spring-boot:run

方式二:使用 IDE 启动

  1. 使用 IntelliJ IDEA 或 Eclipse 导入项目
  2. 找到 HospitalRegistrationApplication.java 文件
  3. 右键点击运行 main 方法

方式三:打包后启动

# 打包项目
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)

响应

{
  "code": 200,
  "message": "身份证识别成功",
  "data": {
    "isIdCard": true,
    "idCardNumber": "110101199001011234",
    "errorMessage": null
  }
}

2. 查询患者信息

接口GET /api/patient/info

参数

  • idCardNumber:身份证号

响应

{
  "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

请求体

{
  "idCardNumber": "110101199001011234",
  "name": "张三",
  "gender": "男",
  "birthDate": "1990-01-01",
  "address": "北京市东城区某某街道",
  "maritalStatus": "已婚",
  "education": "本科"
}

响应

{
  "code": 200,
  "message": "建档成功",
  "data": null
}

4. 检查身份证号是否已建档

接口GET /api/patient/exists

参数

  • idCardNumber:身份证号

响应

{
  "code": 200,
  "message": "操作成功",
  "data": true
}

5. 获取所有患者信息(管理功能)

接口GET /api/patient/all

响应

{
  "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 文件格式

身份证号,姓名,性别,出生日期,家庭住址,婚姻状况,学历,建档时间,更新时间
110101199001011234,张三,男,1990-01-01,北京市东城区某某街道,已婚,本科,2026-01-08 10:00:00,2026-01-08 10:00:00

可以使用 Excel 或文本编辑器直接查看和编辑数据。

配置说明

application.yml 配置项

# 服务器配置
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 哪里获取?

访问 阿里云百炼平台,登录后在"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. 后端:在 controllerserviceentity 包中添加对应的类
  2. 前端:在 index.html 中添加新的页面和交互逻辑

调试技巧

  • 后端日志:在 application.yml 中调整 logging.level 配置
  • 前端调试:使用浏览器开发者工具(F12)
  • API 测试:使用 Postman 或 curl 测试接口

技术支持

如有问题,请检查:

  1. 控制台错误日志
  2. 浏览器开发者工具
  3. 百炼平台 API 文档

许可证

本项目仅供学习和演示使用。


祝您使用愉快! 🏥