网站首页/ 信息中心/ 档案百科/

手把手教你开发诊所档案管理软件全流程

发布时间:2026年09月19日 08:55:11 浏览量:0

开发环境准备

在开始编写代码之前,我们需要先配置好本地开发环境。为了确保零门槛落地,本教程选用 Python 作为后端语言,因为它语法简洁,且拥有强大的内置库支持。我们将使用 Flask 框架来搭建 Web 服务,使用 SQLite 作为数据库,因为 SQLite 是文件型数据库,无需安装额外的数据库服务,非常适合轻量级的诊所管理系统。

请确保你的电脑上已经安装了 Python(建议版本 3.8 及以上)。打开终端(Windows 下为 CMD 或 PowerShell,Mac 下为 Terminal),输入以下命令检查版本:

python --version

确认安装无误后,我们需要安装 Flask。在终端中执行以下命令:

pip install flask

接下来,创建一个项目文件夹。在终端中执行:

mkdir clinic_manager
cd clinic_manager

为了保持项目结构清晰,我们在项目根目录下创建一个名为 templates 的文件夹,用于存放 HTML 前端文件:

mkdir templates

至此,环境准备工作全部完成,接下来的所有操作都将在这个 clinic_manager 目录下进行。

数据库设计与初始化

诊所档案管理的核心是数据的存储与检索。我们需要设计一张患者信息表,包含以下关键字段:患者姓名、身份证号、联系电话、就诊日期、主诉病情、诊断结果以及备注信息。

为了方便管理,我们将数据库的初始化逻辑直接写在 Python 脚本中。在项目根目录下新建一个名为 app.py 的文件,并输入以下代码。这段代码不仅包含了 Web 服务的启动逻辑,还包含了自动创建数据库表的功能。

请确保你的 app.py 文件内容如下(请直接复制,不要遗漏任何标点符号):

```python
import sqlite3
from flask import Flask, render_template, request, g, redirect, url_for, flash

app = Flask(__name__)
app.secret_key = 'dev_key_for_clinic_manager' 用于Flash消息加密
DATABASE = 'clinic.db'

获取数据库连接
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
db.row_factory = sqlite3.Row 让查询结果可以通过列名访问
return db

关闭数据库连接
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()

初始化数据库表
def init_db():
with app.app_context():
db = get_db()
db.execute('''
CREATE TABLE IF NOT EXISTS patients (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
id_card TEXT,
phone TEXT NOT NULL,
visit_date TEXT NOT NULL,
complaint TEXT,
diagnosis TEXT,
notes TEXT
)
''')
db.commit()
print("数据库初始化完成。")

if __name__ == '__main__':
init_db()
app.run(debug=True, port=5000)
```

这段代码定义了数据库的连接方式,并创建了一个名为 patients 的表。id 为自增主键,visit_date 使用文本类型存储日期字符串,以简化处理流程。保存文件后,我们在终端运行一次该脚本以生成数据库文件:

python app.py

当看到提示“数据库初始化完成。”且服务启动后,按 Ctrl + C 停止服务。此时,你的文件夹下应该已经生成了一个 clinic.db 文件。

后端逻辑实现

手把手教你开发诊所档案管理软件全流程

现在我们需要为系统添加增删改查(CRUD)的后端接口。继续编辑 app.py,在 if __name__ == '__main__': 之前添加以下路由逻辑。这些路由负责处理前端发来的请求并与数据库交互。

添加首页路由,用于展示所有患者档案列表:

```python
首页:展示患者列表
@app.route('/')
def index():
db = get_db()
按就诊日期降序排列
patients = db.execute('SELECT FROM patients ORDER BY visit_date DESC').fetchall()
return render_template('index.html', patients=patients)
```

添加新增患者档案的路由。这里支持 GET 和 POST 请求,GET 用于显示表单,POST 用于提交数据:

```python
新增患者
@app.route('/add', methods=['GET', 'POST'])
def add_patient():
if request.method == 'POST':
name = request.form['name']
id_card = request.form['id_card']
phone = request.form['phone']
visit_date = request.form['visit_date']
complaint = request.form['complaint']
diagnosis = request.form['diagnosis']
notes = request.form['notes']

db = get_db()
db.execute('INSERT INTO patients (name, id_card, phone, visit_date, complaint, diagnosis, notes) VALUES (?, ?, ?, ?, ?, ?, ?)',
(name, id_card, phone, visit_date, complaint, diagnosis, notes))
db.commit()
flash('患者档案添加成功!')
return redirect(url_for('index'))

return render_template('add.html')
```

接着,添加删除档案的路由:

```python
删除患者
@app.route('/delete/')
def delete_patient(patient_id):
db = get_db()
db.execute('DELETE FROM patients WHERE id = ?', (patient_id,))
db.commit()
flash('患者档案已删除。')
return redirect(url_for('index'))
```

添加编辑档案的路由。编辑逻辑比新增稍微复杂,需要先查询出旧数据填充表单,再处理更新操作:

```python
编辑患者
@app.route('/edit/', methods=['GET', 'POST'])
def edit_patient(patient_id):
db = get_db()
patient = db.execute('SELECT FROM patients WHERE id = ?', (patient_id,)).fetchone()

if request.method == 'POST':
name = request.form['name']
id_card = request.form['id_card']
phone = request.form['phone']
visit_date = request.form['visit_date']
complaint = request.form['complaint']
diagnosis = request.form['diagnosis']
notes = request.form['notes']

db.execute('UPDATE patients SET name=?, id_card=?, phone=?, visit_date=?, complaint=?, diagnosis=?, notes=? WHERE id=?',
(name, id_card, phone, visit_date, complaint, diagnosis, notes, patient_id))
db.commit()
flash('患者档案更新成功!')
return redirect(url_for('index'))

return render_template('edit.html', patient=patient)
```

至此,后端逻辑已全部完成。请确保 app.py 文件结构完整,没有语法错误。

前端页面构建

为了实现零门槛操作,我们将使用 Bootstrap 5 框架来快速构建美观的界面。Bootstrap 是一个流行的前端框架,我们只需要通过 CDN 引入即可,无需下载任何 CSS 或 JS 文件。

我们需要在 templates 文件夹下创建三个 HTML 文件:index.html(列表页)、add.html(新增页)和 edit.html(编辑页)。

首先创建 templates/index.html,这是系统的主界面,包含数据表格和操作按钮:

```html





诊所档案管理系统




诊所档案管理


{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}

{% endfor %}
{% endif %}
{% endwith %}



患者列表

+ 新增档案















{% for patient in patients %}








{% else %}



{% endfor %}

姓名 身份证号 联系电话 就诊日期 诊断结果 操作
{{ patient.name }} {{ patient.id_card }} {{ patient.phone }} {{ patient.visit_date }} {{ patient.diagnosis }}
编辑
删除
暂无档案数据








```

接下来创建 templates/add.html,用于录入新患者信息:

```html




新增档案








新增患者档案



































取消










```

最后创建 templates/edit.html,其结构与新增页面类似,但需要在输入框中预填充已有数据。注意 value 属性的使用:

```html





编辑档案








编辑患者档案