夜雨聆风学习资料网

ARTICLE · 1161792

口腔诊所管理系统 · 技术文档 案例解析

口腔诊所管理系统 · 技术文档 案例解析

1. 系统定位与边界

  • 目标:替代纸质病历,标准化电子病历;打通"建档—预约—接诊—方案—收费—回访"内部闭环;实现耗材全生命周期管控。

  • 明确剔除(详见需求文档):无患者小程序/公众号、无短信/微信推送、无美团/抖音等第三方对接、无支付/电子发票/医保接口、无供应链集采、无多门店/云端同步。

  • 适用:单门店小型牙科门诊(医生、前台、管理员三类角色)。

2. 技术栈

层选型说明
后端Python 3.10+ / Flask 3.x唯一第三方依赖为 Flask,其余均为标准库
持久化SQLite 3单文件 clinic.db,本地存储,无服务端数据库依赖
模板Jinja2 + 原生 HTML/CSS/JS侧边栏后台布局,零前端框架
鉴权Flask session + 自建密码哈希hashlib.sha256(salt+password),无外部认证服务
运行本地进程 python app.py监听 127.0.0.1:5000,仅内网/本机访问

3. 目录结构

口腔诊所管理系统/
├── app.py                 # 应用入口:Flask 实例、模板过滤器、蓝图注册、全局上下文
├── db.py                  # 数据库 Schema、初始化种子、通用查询/审计日志辅助
├── auth.py                # 鉴权装饰器 login_required / role_required、密码校验
├── requirements.txt       # 仅 flask
├── start.bat / run.sh     # 启动脚本(Windows / 跨平台)
├── tests/
│   └── functional_test.py # 功能测试套件(44 用例,含权限与清理)
├── views/                 # 蓝图模块(按业务拆分)
│   ├── auth.py            # 登录 / 登出
│   ├── dashboard.py       # 工作台首页
│   ├── patients.py        # 患者档案 / 电子病历 / 附件
│   ├── appointments.py    # 预约 / 排班
│   ├── plans.py           # 治疗方案
│   ├── charges.py         # 收费结算 / 项目库 / 统计
│   ├── inventory.py       # 耗材库存
│   ├── followups.py       # 回访提醒
│   └── admin.py           # 用户权限 / 日志 / 备份 / 报表
├── templates/             # 26 个 Jinja2 页面模板
├── static/                # css/style.css、js/app.js
├── uploads/               # 患者附件(牙片/照片/报告)
├── backups/               # 本地备份(由系统生成)
└── clinic.db              # 本地数据库文件(首次启动自动创建)

4. 数据库设计(SQLite)

数据库文件:clinic.db,字符集 UTF-8,开启 PRAGMA foreign_keys=ON。

4.1 核心表一览

表名用途关键字段
users员工账号与角色username, password(盐哈希), name, role(admin/doctor/reception), status
patients患者基础档案name, gender, age, phone, id_card, allergy, medical_history, signs, tags, note
visits就诊台账patient_id, doctor_id, visit_date, visit_type, total_fee, status
medical_records口腔电子病历(不可删除)patient_id, visit_id, doctor_id, chief_complaint, present_illness, exam_result, tooth_chart(JSON), diagnosis, advice
attachments附件存档patient_id, file_name, file_path, note, uploaded_by
schedules医生排班doctor_id, work_date, start_time, end_time, type(work/rest/stop)
appointments内部预约patient_id, doctor_id, item, appointment_time, duration, status(pending/arrived/missed/rescheduled/cancelled)
treatment_plans治疗方案patient_id, doctor_id, name, version, status, total_price
treatment_plan_items方案明细plan_id, tooth, item, price, qty, subtotal
charge_items收费项目库name, category, default_price, status
charges收费流水patient_id, plan_id, visit_id, item, amount, method(full/deposit/partial/refund/credit), pay_type(cash/wechat/alipay), status(paid/refunded/credited), operator_id
consumables耗材档案name, spec, unit, cost_price, supplier, min_stock, stock
consumable_logs耗材流水consumable_id, type(in/out/check/loss/return), qty, balance, operator_id
followup_rules回访规则name, template, cycle_days
followups回访任务patient_id, rule_id, assigned_to, due_date, status(pending/done), content, feedback, result
operation_logs全量操作审计user_id, module, action, record_id, detail, time

4.2 关键设计点

  • 病历合规:medical_records 不提供删除接口;患者/预约等"删除"均为标记/状态置位而非物理删除,且全部写入 operation_logs。

  • 牙位图:以 JSON 数组(FDI 牙位号,如 ["16","26"])存入 tooth_chart,前端 32 颗牙可点击标记。

  • 方案联动:方案"确认"后自动写入一条 visits 就诊工单,并可后续关联 charges 收费。

  • 耗材成本:库存操作按 in/out/check/loss/return 记录流水与结余;出库/报损计入月度耗材消耗成本。

1.1 工作台(首页)

登录后进入工作台,集中展示今日预约、待收费、库存预警、经营概览等关键指标,是日常开诊的总览入口。

2.1 患者档案(列表)

所有患者档案的统一管理入口,支持按姓名 / 电话搜索、分页,并可新增患者、查看详情。

2.2 患者详情

查看患者基本信息、就诊记录、收费记录、会员情况、关联治疗方案与随访任务,是患者全生命周期视图。

3.1 预约排班

以日历 / 时间轴形式安排医生接诊,支持新建预约、调整时间,便于前台排程。

3.2 预约列表

预约的列表视图,可按状态筛选(待到诊 / 已到诊 / 已取消等),进行确认、改期或取消操作。

4.1 治疗方案(列表)

医生制定的治疗方案列表,包含方案名称、版本、总价、状态;可在此新建方案。

4.2 治疗方案详情

方案内多个治疗项目明细、单价、小计;可勾选未收项目“一次结清”,结清后该方案后续无需再来缴费。

相关学习资料