智慧医院 API 接口文档
基于当前源码整理。前端开发走 Vite 代理;联调可直接请求业务后端。
目录
- 服务地址
- 通用约定
- 接口一览
- 业务后端详解
- AI 微服务详解
- 数据模型
- 枚举与错误码
1. 服务地址
| 服务 |
地址 |
说明 |
| 前端 |
http://localhost:5173 |
/api 代理到后端 |
| 业务后端 |
http://localhost:8080 |
前缀 /api/**,JWT 鉴权 |
| AI 微服务 |
http://127.0.0.1:8001 |
后端内网调用;Swagger:/docs |
演示账号
| 用户名 |
密码 |
角色 |
| admin |
admin123 |
ADMIN |
| doctor1 |
pass123 |
DOCTOR |
| radio1 |
radio123 |
RADIOLOGIST |
2. 通用约定
鉴权
| 项 |
说明 |
| Header |
Authorization: Bearer <token> |
| 获取 Token |
POST /api/auth/login |
| 有效期 |
24 小时 |
| 公开 |
/api/auth/login、/api/auth/logout、/uploads/** |
| 需登录 |
其余 /api/** |
| 仅 ADMIN |
/api/users/**;AI 配置写操作;知识库写操作;YOLO 管理 |
统一响应(业务后端)
分页(业务后端)
| 参数 |
默认 |
说明 |
| page |
0 |
页码,从 0 开始 |
| size |
10 |
每页条数 |
Content-Type
| 类型 |
场景 |
application/json |
普通接口 |
multipart/form-data |
文件上传 |
3. 接口一览
3.1 业务后端 http://localhost:8080
认证
| 方法 |
路径 |
权限 |
说明 |
| POST |
/api/auth/login |
公开 |
登录,返回 token |
| POST |
/api/auth/logout |
公开 |
登出 |
| GET |
/api/auth/me |
登录 |
当前用户 |
| POST |
/api/auth/change-password |
登录 |
修改密码 |
| POST |
/api/auth/avatar |
登录 |
上传头像 |
统计
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/stats/overview |
登录 |
仪表盘总览 |
患者
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/patients |
登录 |
分页列表 |
| GET |
/api/patients/{id} |
登录 |
详情 |
| GET |
/api/patients/{id}/profile |
登录 |
360° 档案 |
| POST |
/api/patients |
登录 |
新建 |
| PUT |
/api/patients/{id} |
登录 |
更新 |
| DELETE |
/api/patients/{id} |
登录 |
删除 |
影像
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/imaging |
登录 |
分页列表 |
| GET |
/api/imaging/{id} |
登录 |
详情 |
| POST |
/api/imaging |
登录 |
新建记录 |
| PUT |
/api/imaging/{id} |
登录 |
更新 |
| DELETE |
/api/imaging/{id} |
登录 |
删除 |
| POST |
/api/imaging/upload |
登录 |
上传影像文件 |
| POST |
/api/ai-diagnosis/analyze/{recordId} |
登录 |
提交 AI 诊断 |
| GET |
/api/ai-diagnosis/result/{recordId} |
登录 |
查询诊断结果 |
电子病历
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/emrs |
登录 |
分页列表 |
| GET |
/api/emrs/{id} |
登录 |
详情 |
| POST |
/api/emrs |
登录 |
新建(含 AI 决策) |
| PUT |
/api/emrs/{id} |
登录 |
更新 |
| DELETE |
/api/emrs/{id} |
登录 |
删除 |
| GET |
/api/emrs/{id}/ai-suggestions |
登录 |
AI 辅助决策 |
预约
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/appointments |
登录 |
分页列表 |
| GET |
/api/appointments/stats |
登录 |
统计 |
| GET |
/api/appointments/doctors |
登录 |
医生列表 |
| GET |
/api/appointments/{id} |
登录 |
详情 |
| POST |
/api/appointments |
登录 |
新建 |
| PUT |
/api/appointments/{id} |
登录 |
更新 |
| PATCH |
/api/appointments/{id}/status |
登录 |
变更状态 |
| DELETE |
/api/appointments/{id} |
登录 |
删除 |
用户管理
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/users |
ADMIN |
分页列表 |
| GET |
/api/users/stats |
ADMIN |
统计 |
| GET |
/api/users/{id} |
ADMIN |
详情 |
| POST |
/api/users |
ADMIN |
新建 |
| PUT |
/api/users/{id} |
ADMIN |
更新 |
| POST |
/api/users/{id}/avatar |
ADMIN |
上传头像 |
| PATCH |
/api/users/{id}/enabled |
ADMIN |
启用/停用 |
| DELETE |
/api/users/{id} |
ADMIN |
删除 |
AI 对话
| 方法 |
路径 |
权限 |
说明 |
| POST |
/api/ai/chat |
登录 |
对话(CHAT / RAG) |
| GET |
/api/ai/chat/history |
登录 |
历史记录 |
| DELETE |
/api/ai/chat/history |
登录 |
清空历史 |
AI 管理
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/admin/ai-settings |
ADMIN |
大模型配置 |
| PUT |
/api/admin/ai-settings |
ADMIN |
保存配置 |
| POST |
/api/admin/ai-settings/test |
ADMIN |
连通测试 |
| GET |
/api/admin/ai-service/status |
登录 |
AI 服务状态 |
| GET |
/api/admin/ai-knowledge |
登录 |
知识库列表 |
| GET |
/api/admin/ai-knowledge/{id} |
登录 |
知识库详情 |
| POST |
/api/admin/ai-knowledge |
ADMIN |
新建文档 |
| PUT |
/api/admin/ai-knowledge/{id} |
ADMIN |
更新文档 |
| PATCH |
/api/admin/ai-knowledge/{id}/enabled |
ADMIN |
启用/停用 |
| DELETE |
/api/admin/ai-knowledge/{id} |
ADMIN |
删除文档 |
YOLO 管理(代理 AI 服务)
| 方法 |
路径 |
权限 |
说明 |
| GET |
/api/admin/yolo/status |
ADMIN |
状态 |
| GET |
/api/admin/yolo/weights |
ADMIN |
权重列表 |
| POST |
/api/admin/yolo/weights/upload |
ADMIN |
上传权重 |
| POST |
/api/admin/yolo/weights/activate |
ADMIN |
激活权重 |
| POST |
/api/admin/yolo/weights/deactivate |
ADMIN |
取消激活 |
| DELETE |
/api/admin/yolo/weights/{name} |
ADMIN |
逻辑删除 |
| POST |
/api/admin/yolo/mode |
ADMIN |
设置模式 |
| GET |
/api/admin/yolo/visualization |
ADMIN |
可视化数据 |
| POST |
/api/admin/yolo/stats/reset |
ADMIN |
重置统计 |
| GET |
/api/admin/yolo/capability |
ADMIN |
能力探测 |
3.2 AI 微服务 http://127.0.0.1:8001
无 JWT,建议仅内网访问。
| 方法 |
路径 |
说明 |
| GET |
/health |
健康检查 |
| POST |
/imaging/analyze |
影像 YOLO 分析 |
| POST |
/report/imaging |
生成影像报告 |
| POST |
/report/decision |
EMR 辅助决策 |
| POST |
/rag/query |
知识库问答 |
| POST |
/rag/ingest |
追加知识文档 |
| GET |
/rag/stats |
知识片段数 |
| GET |
/llm/config |
LLM 配置 |
| POST |
/llm/config |
更新 LLM 配置 |
| GET |
/llm/status |
LLM 状态 |
| GET |
/yolo/status |
YOLO 状态 |
| GET |
/yolo/weights |
权重列表 |
| POST |
/yolo/weights/upload |
上传权重 |
| POST |
/yolo/weights/activate |
激活权重 |
| POST |
/yolo/weights/deactivate |
取消激活 |
| DELETE |
/yolo/weights/{name} |
逻辑删除 |
| POST |
/yolo/weights/restore |
恢复权重 |
| POST |
/yolo/mode |
设置模式 |
| GET |
/yolo/visualization |
可视化 |
| POST |
/yolo/stats/reset |
重置统计 |
| GET |
/yolo/capability |
能力探测 |
4. 业务后端详解
以下仅列查询参数与请求体。响应外层均为 { code, message, data },data 结构见 数据模型。
4.1 认证 /api/auth
POST /api/auth/login
| 字段 |
类型 |
必填 |
说明 |
| username |
string |
是 |
用户名 |
| password |
string |
是 |
密码 |
data: { token, user } → User
POST /api/auth/change-password
| 字段 |
类型 |
必填 |
说明 |
| oldPassword |
string |
是 |
旧密码 |
| newPassword |
string |
是 |
新密码,6–64 位 |
POST /api/auth/avatar
4.2 患者 /api/patients
GET /api/patients
| 参数 |
类型 |
说明 |
| page |
int |
页码 |
| size |
int |
每页条数 |
| keyword |
string |
姓名/电话关键字 |
POST/PUT 请求体
| 字段 |
类型 |
必填 |
说明 |
| name |
string |
是 |
姓名 |
| gender |
string |
是 |
MALE / FEMALE / OTHER |
| age |
int |
是 |
年龄 |
| idCard |
string |
否 |
身份证 |
| phone |
string |
否 |
电话 |
| address |
string |
否 |
地址 |
| medicalHistory |
string |
否 |
病史 |
GET /api/patients/{id}/profile
data: 患者 + 关联影像 / 病历 / 预约列表及计数。
4.3 影像 /api/imaging
GET /api/imaging
| 参数 |
类型 |
说明 |
| page / size |
int |
分页 |
| keyword |
string |
关键字 |
| status |
string |
PENDING / ANALYZING / COMPLETED / ERROR |
| studyType |
string |
X_RAY / CT / MRI / ULTRASOUND |
POST/PUT 请求体
| 字段 |
类型 |
必填 |
说明 |
| patientId |
long |
是 |
患者 ID |
| doctorId |
long |
否 |
空则用当前用户 |
| studyType |
string |
是 |
检查类型 |
| bodyPart |
string |
是 |
部位 |
| imageUrl |
string |
是 |
先调 upload 得到 |
POST /api/imaging/upload
data: 路径字符串,如 /uploads/images/...
AI 诊断流程
GET /api/ai-diagnosis/result/{recordId} 的 data
| 字段 |
说明 |
| status |
影像状态 |
| diagnosisText |
诊断结论 |
| confidenceScore |
置信度 |
| findings |
所见 |
| recommendations |
建议 |
| modelVersion |
模型版本 |
| processingTimeMs |
耗时 |
| detections |
检测框列表 |
| annotatedImageUrl |
标注图 |
| fullReport |
完整报告 |
| engine |
引擎 |
| fallback |
是否降级 |
4.4 电子病历 /api/emrs
GET /api/emrs
| 参数 |
说明 |
| page / size |
分页 |
| keyword |
关键字 |
POST/PUT 请求体
| 字段 |
类型 |
必填 |
说明 |
| patientId |
long |
是 |
患者 |
| doctorId |
long |
否 |
空则当前用户 |
| visitDate |
date |
是 |
yyyy-MM-dd |
| diagnosis |
string |
是 |
诊断 |
| chiefComplaint |
string |
否 |
主诉 |
| presentIllness |
string |
否 |
现病史 |
| physicalExamination |
string |
否 |
体格检查 |
| treatmentPlan |
string |
否 |
治疗方案 |
| medications |
string |
否 |
用药 |
| followUpNotes |
string |
否 |
随访 |
POST /api/emrs 的 data
4.5 预约 /api/appointments
GET /api/appointments
| 参数 |
说明 |
| page / size |
分页 |
| keyword |
关键字 |
| status |
预约状态 |
| date |
yyyy-MM-dd |
POST/PUT 请求体
| 字段 |
类型 |
必填 |
说明 |
| patientId |
long |
是 |
患者 |
| doctorId |
long |
否 |
医生 |
| department |
string |
是 |
科室 |
| appointmentDate |
date |
是 |
预约日期 |
| appointmentTime |
time |
否 |
预约时间 |
| reason |
string |
否 |
事由 |
| notes |
string |
否 |
备注 |
| status |
string |
否 |
默认 SCHEDULED |
PATCH /api/appointments/{id}/status
状态流转:SCHEDULED → CONFIRMED → COMPLETED,或 CANCELLED / NO_SHOW。
4.6 用户 /api/users(ADMIN)
GET /api/users
| 参数 |
说明 |
| page / size |
分页 |
| keyword |
关键字 |
| role |
角色筛选 |
| enabled |
true / false |
POST/PUT 请求体
| 字段 |
类型 |
必填 |
说明 |
| username |
string |
是 |
用户名 |
| password |
string |
新建必填 |
更新可空 |
| realName |
string |
是 |
真实姓名 |
| role |
string |
是 |
DOCTOR / RADIOLOGIST / ADMIN |
| department |
string |
否 |
科室 |
| phone |
string |
否 |
电话 |
| email |
string |
否 |
邮箱 |
| enabled |
boolean |
否 |
默认 true |
PATCH /api/users/{id}/enabled
4.7 AI 对话 /api/ai
POST /api/ai/chat
| 字段 |
类型 |
必填 |
说明 |
| mode |
string |
是 |
CHAT 或 RAG |
| question |
string |
是 |
问题 |
GET /api/ai/chat/history
4.8 AI 管理 /api/admin
PUT /api/admin/ai-settings
| 字段 |
类型 |
说明 |
| apiBaseUrl |
string |
OpenAI 兼容地址 |
| apiKey |
string |
null 表示不改密钥 |
| model |
string |
模型名 |
| enabled |
boolean |
是否启用 |
| temperature |
double |
温度 |
| systemPrompt |
string |
系统提示词 |
POST/PUT 知识库请求体
| 字段 |
类型 |
必填 |
| title |
string |
是 |
| content |
string |
是 |
| category |
string |
否 |
| enabled |
boolean |
否 |
PATCH 启用类接口(知识库 / 用户通用形态)
YOLO 激活 / 模式
demo_mode:demo | real | auto
5. AI 微服务详解
响应不包 {code, message, data},直接返回业务 JSON。
5.1 GET /health
| 字段 |
说明 |
| status |
固定 ok |
| yolo_available |
YOLO 是否可用 |
| monai_available |
MONAI 是否可用 |
| langchain_available |
LangChain 是否可用 |
| llm_configured |
是否配置 LLM |
| demo_mode |
当前模式 |
| knowledge_docs |
知识片段数 |
5.2 POST /imaging/analyze
multipart/form-data
| 字段 |
类型 |
必填 |
说明 |
| file |
file |
二选一 |
上传文件 |
| image_path |
string |
二选一 |
服务端路径 |
| study_type |
string |
否 |
默认 CT |
| body_part |
string |
否 |
部位 |
| patient_summary |
string |
否 |
摘要 |
响应字段: detections、annotated_image_base64、preliminary_diagnosis、findings、recommendations、confidence、model_version、mode、full_report、disclaimer
5.3 POST /report/decision
| 字段 |
类型 |
说明 |
| chief_complaint |
string |
主诉 |
| history |
string |
病史 |
| exam_findings |
string |
检查 |
| diagnosis |
string |
诊断 |
| medications |
string |
用药 |
| imaging_summary |
string |
影像摘要 |
| patient |
object |
{ age, gender, name } |
5.4 POST /rag/query
| 字段 |
类型 |
默认 |
说明 |
| query |
string |
— |
问题 |
| top_k |
int |
4 |
返回条数 |
| context |
string |
"" |
附加上下文 |
实现为文档切分 + 内存关键词检索,未使用向量数据库。
5.5 POST /rag/ingest
| 字段 |
类型 |
必填 |
| title |
string |
是 |
| content |
string |
是 |
| category |
string |
否,默认「自定义」 |
5.6 POST /llm/config
兼容 api_base_url / apiBaseUrl、api_key / apiKey。
| 字段 |
说明 |
| enabled |
是否启用 |
| api_base_url |
接口地址 |
| api_key |
null 不改;"" 清空 |
| model |
模型名 |
| temperature |
温度 |
6. 数据模型
User
| 字段 |
类型 |
说明 |
| id |
long |
ID |
| username |
string |
用户名 |
| realName |
string |
真实姓名 |
| role |
string |
角色 |
| department |
string |
科室 |
| phone |
string |
电话 |
| email |
string |
邮箱 |
| avatar |
string |
头像 URL |
| enabled |
boolean |
是否启用 |
Patient
| 字段 |
类型 |
说明 |
| id |
long |
ID |
| name |
string |
姓名 |
| gender |
string |
性别 |
| age |
int |
年龄 |
| idCard |
string |
身份证 |
| phone |
string |
电话 |
| address |
string |
地址 |
| medicalHistory |
string |
病史 |
| createdAt |
datetime |
创建时间 |
ImagingRecord
| 字段 |
类型 |
说明 |
| id |
long |
ID |
| patientId |
long |
患者 |
| patientName |
string |
患者姓名 |
| doctorId |
long |
医生 |
| doctorRealName |
string |
医生姓名 |
| studyType |
string |
检查类型 |
| bodyPart |
string |
部位 |
| imageUrl |
string |
影像路径 |
| status |
string |
状态 |
| aiDiagnosis |
string |
AI 诊断 |
| aiConfidence |
double |
置信度 |
| createdAt |
datetime |
创建时间 |
Emr
| 字段 |
类型 |
说明 |
| id |
long |
ID |
| patientId / patientName |
— |
患者 |
| doctorId / doctorRealName |
— |
医生 |
| visitDate |
date |
就诊日 |
| chiefComplaint |
string |
主诉 |
| presentIllness |
string |
现病史 |
| physicalExamination |
string |
体格检查 |
| diagnosis |
string |
诊断 |
| treatmentPlan |
string |
治疗 |
| medications |
string |
用药 |
| followUpNotes |
string |
随访 |
| aiSuggestions |
string |
AI 建议文本 |
| createdAt |
datetime |
创建时间 |
Appointment
| 字段 |
类型 |
说明 |
| id |
long |
ID |
| patientId / patientName / patientPhone |
— |
患者 |
| doctorId / doctorName |
— |
医生 |
| department |
string |
科室 |
| appointmentDate |
date |
日期 |
| appointmentTime |
time |
时间 |
| reason / notes |
string |
事由 / 备注 |
| status |
string |
状态 |
| createdAt |
datetime |
创建时间 |
DecisionSupport
| 字段 |
说明 |
| suggestions |
治疗建议 |
| medicationSuggestions |
用药建议 |
| riskAssessments |
风险评估 |
| nursingAdvice |
护理建议 |
| followUpPlan |
随访计划 |
| conflicts |
冲突提示 |
| sources |
RAG 来源 |
| fullText |
全文 |
| engine |
引擎标识 |
| fallback |
是否降级 |
| disclaimer |
免责声明 |
AiChatResponse
| 字段 |
说明 |
| mode |
CHAT / RAG |
| question |
问题 |
| answer |
回答 |
| usedLlm |
是否调用大模型 |
| fallback |
是否降级 |
| sources |
引用来源列表 |
Detection(AI 检测框)
| 字段 |
说明 |
| label |
标签 |
| label_zh |
中文标签 |
| confidence |
置信度 |
| bbox |
[x1, y1, x2, y2] |
7. 枚举与错误码
枚举
| 名称 |
取值 |
| 角色 |
ADMIN, DOCTOR, RADIOLOGIST |
| 性别 |
MALE, FEMALE, OTHER |
| 检查类型 |
X_RAY, CT, MRI, ULTRASOUND |
| 影像状态 |
PENDING, ANALYZING, COMPLETED, ERROR |
| 预约状态 |
SCHEDULED, CONFIRMED, COMPLETED, CANCELLED, NO_SHOW |
| 对话模式 |
CHAT, RAG |
| YOLO 模式 |
demo, real, auto |
业务后端 code
| code |
含义 |
| 0 |
成功 |
| 400 |
参数错误 |
| 401 |
未登录 / token 过期 |
| 403 |
无权限 |
| 404 |
不存在 |
| 409 |
冲突 |
| 1000 |
业务异常 |
| 500 |
服务器错误 |
降级说明
| 场景 |
行为 |
| AI 服务离线 |
影像诊断、病历决策走本地规则,fallback=true |
| 未配置 LLM Key |
返回检索摘要或模板文本 |
| YOLO 不可用 |
进入 demo 模式 |
附录:curl 示例
输出仅供教学实训,不能替代执业医师诊断。
)