家用医疗档案 + 保险报销管理工具。本地单用户,全栈 Web 应用。
- 下载
医疗档案.exe - 复制到一个空文件夹
- 双击启动
- 浏览器自动打开
http://localhost:8000
功能:
- 无命令行窗口(仅托盘图标)
- 系统托盘图标(右键:打开页面 / 退出)
- 单实例检查(重复双击不会多开)
- 数据保存在 exe 同目录的
data/和uploads/
# 后端
cd backend
pip install -r requirements.txt
python main.py
# 前端(新终端)
cd frontend
npm install
npm run dev- 👨👩👧 家庭成员管理 — 增/改/删家人,自定义头像(14 种颜色+图标)
- 🏥 就诊记录 — 一次就诊 = 一组资料(医院/科室/医生/主诉/金额/开药/医嘱/忌口 + 多张图片)
- 📦 资料照片真存盘 — 上传图片自动生成缩略图,存到本地
uploads/,SQLite 只存路径 - 💊 康复打卡 — 跨就诊聚合的"用药/治疗 + 用量"时间线
- 💰 保险报销 — 4 步向导:选成员 → 选就诊 → 填金额(申请/免赔/实赔联动)→ 生成清单
- ⏱ 报销时间线 — 提交 / 保险回复 / 补充资料 / 状态变更 / 赔付,全在一条时间线上
- 🏷 医院/医生/科室自动入库 — 输入即记忆,下次自动补全
- 🔍 双向链接 — 就诊详情里看关联的报销(含状态徽章),报销详情里点就诊跳转
- 📱 移动端友好 — 响应式 375px 宽度
- 🌙 深色模式 — 设置里切换
- 💾 备份恢复 — ZIP 备份(含数据库 + 图片 + 清单),支持增量恢复
- 🔧 管理员操作 — 点版本号 5 次解锁格式化功能
- 后端: Python 3.11+ / FastAPI / SQLAlchemy 2 / SQLite / Pillow
- 前端: Vue 3 (Composition API) / Vite / Pinia / Vue Router / Axios
- 存储: SQLite 单文件 + 本地目录存原图 + 缩略图
- 打包: PyInstaller(单 exe,自带 Python + 所有依赖)
medical-archive/
├── 医疗档案.exe # 可执行文件(双击即用)
├── app.py # 打包入口
├── build.py # 打包脚本
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── main.py # FastAPI 应用组装
│ │ ├── config.py # 配置
│ │ ├── database.py # SQLAlchemy 引擎
│ │ ├── models.py # 数据模型
│ │ ├── schemas.py # Pydantic 结构
│ │ ├── storage.py # 文件存储 + 缩略图
│ │ ├── seed.py # 种子数据
│ │ ├── utils.py # 公共工具
│ │ └── routers/ # API 路由
│ ├── main.py # 开发模式入口
│ └── requirements.txt
└── frontend/ # Vue 3 前端
├── src/
│ ├── api/ # API 封装 + 类型 + 常量
│ ├── components/ # 复用组件
│ ├── views/ # 页面
│ ├── stores/ # Pinia 状态
│ ├── router/ # 路由
│ └── styles.css # 全部样式
└── package.json
在应用内:设置 → 备份与恢复 → 下载备份
复制 exe 同目录的 data/ 和 uploads/ 文件夹
data/app.db— SQLite 数据库uploads/originals/— 原图uploads/thumbs/— 缩略图
所有接口前缀 /api/v1,详见 http://localhost:8000/docs
| 资源 | 端点 |
|---|---|
| 成员 | GET/POST /members, GET/PATCH/DELETE /members/{id} |
| 就诊 | GET/POST /visits, GET/PATCH/DELETE /visits/{id} |
| 就诊文件 | POST /visits/{id}/files, DELETE /visits/{id}/files/{fid} |
| 康复打卡 | GET/POST /medlogs, DELETE /medlogs/{id} |
| 报销 | GET/POST /claims, GET/PATCH/DELETE /claims/{id} |
| 报销事件 | POST /claims/{id}/events |
| 备份 | GET /backup, GET /backup/full, POST /backup/restore |
# 1. 构建前端
cd frontend && npm run build && cd ..
# 2. 打包
python build.py
# 输出: dist/医疗档案.exe