assets/2026-07-01-医数智联系列开篇-医院数字化工作者的工具箱_2026-07-01_18-28-11.jpg

医数智联·第 24 期:Claude Code + Python 自动化 —— 让脚本「自己写自己跑」的 4 大模式

[!ABSTRACT] 核心摘要

  • 本期主题:Claude Code + Python——让 AI 替你写、改、跑、修脚本
  • 核心结论:AI 编程不是「取代程序员」,是「让不写代码的医院人也能自动化」
  • 4 大模式:脚本生成(自然语言 → Python)、自动调试(报错 → 自动修)、代码重构(优化性能)、批量运行(多个脚本)
  • 典型效果:从「学 3 个月 Python」变成「自然语言说需求,5 分钟出脚本」
  • 阅读时长:约 10 分钟

一、场景引入:不会 Python,怎么自动化?

[!example] 一个真实的周二下午
质管办小张想做 3 件事:

  1. 把本月首页数据从 HIS 导出 → 自动校验 → 自动生成报告
  2. 把 100 份投诉案例自动分类(服务态度/医疗质量/费用/沟通)
  3. 每天早上自动生成昨日质控数据看板

但他完全不会 Python——上个月学的「print(‘hello’)」早忘了。

传统路径:

  • 找信息科 → 等 1 周
  • 自己学 → 3 个月还卡在「pandas 导入」
  • 找外包 → 报价 5 万

Claude Code 路径:

  • 输入自然语言需求 → AI 写脚本 → AI 跑 → 5 分钟搞定

这是 AI 编程时代医院人的新选择——不再被「不会写代码」绑架

[!quote] 狼叔的判断
“2026 年,’会不会写代码’不再是医院人的瓶颈;’会不会用 AI 写代码’才是。” 这一期,带你掌握 4 大 AI 编程模式。


二、工具原理:AI 编程的 4 大模式

2.1 模式 1:脚本生成

1
你说需求 → AI 写代码 → AI 跑 → 结果

2.2 模式 2:自动调试

1
你跑报错 → 把报错贴给 AI → AI 修 → 重跑

2.3 模式 3:代码重构

1
现有脚本太慢 → AI 优化 → 性能提升 5 倍

2.4 模式 4:批量运行

1
10 个相似任务 → AI 写 1 个通用脚本 → 跑 10 次

三、医院实战:4 大模式详解

模式 1:脚本生成(自然语言 → Python)

[!example] 实战 ①:自然语言生成脚本

场景:把本月首页数据从 MySQL 导出,统计错误率,画图,生成 Excel。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
👤 你:帮我写一个 Python 脚本:
1. 从 MySQL 读「本月首页」表(2026-07 出院)
2. 统计每个科室的错误率和错误数
3. 用 matplotlib 画柱状图(错误率降序)
4. 生成 Excel 文件
5. 错误日志用 logging 记录到文件

数据库连接信息:
- host=192.168.1.100
- user=quality_user
- password=xxx
- database=his_db

输出:
- 本月错误率统计.xlsx
- 本月错误率柱状图.png

🤖 Claude Code:
好的,这是完整脚本(已写入 D:\scripts\本月错误率.py):

import pandas as pd
import pymysql
import matplotlib.pyplot as plt
import logging
from pathlib import Path

# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [%(levelname)s] %(message)s',
handlers=[
logging.FileHandler('本月错误率.log', encoding='utf-8'),
logging.StreamHandler()
]
)

def main():
try:
# 1. 连接数据库
logging.info('连接数据库...')
conn = pymysql.connect(
host='192.168.1.100',
user='quality_user',
password='xxx',
database='his_db',
charset='utf8mb4'
)

# 2. 读数据
logging.info('读取本月首页...')
df = pd.read_sql('''
SELECT 病案号, 科室, 主诊错误标记
FROM 首页主表
WHERE 出院日期 >= '2026-07-01'
AND 出院日期 < '2026-08-01'
''', conn)
conn.close()
logging.info(f'共 {len(df)} 条记录')

# 3. 统计
统计 = df.groupby('科室').agg(
总数=('病案号', 'count'),
错误数=('主诊错误标记', 'sum')
).reset_index()
统计['错误率'] = (统计['错误数'] / 统计['总数'] * 100).round(2)
统计 = 统计.sort_values('错误率', ascending=False)

# 4. 输出 Excel
统计.to_excel('本月错误率统计.xlsx', index=False)
logging.info('✓ Excel 已生成')

# 5. 画图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

fig, ax = plt.subplots(figsize=(10, 6))
ax.bar(统计['科室'], 统计['错误率'], color='steelblue', edgecolor='black')
ax.set_title('本月各科室主诊错误率', fontsize=14, fontweight='bold')
ax.set_xlabel('科室')
ax.set_ylabel('错误率(%)')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.savefig('本月错误率柱状图.png', dpi=300)
logging.info('✓ 柱状图已生成')

print('\n✓ 全部完成!')
print(' - 本月错误率统计.xlsx')
print(' - 本月错误率柱状图.png')

except Exception as e:
logging.error(f'脚本失败:{e}')
raise

if __name__ == '__main__':
main()

要我直接跑吗?(y/n)

[!success] AI 写脚本的 5 大优势

  1. 代码规范:有 logging、异常处理、main 函数
  2. 注释完整:每个步骤都清晰
  3. 错误处理:try/except 包裹
  4. 自动跑:你说跑,AI 立即执行
  5. 可复用:保存到 scripts 文件夹,下次直接用

模式 2:自动调试(报错 → 自动修)

[!example] 实战 ②:自动修 bug

场景:跑上面的脚本,报错了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
👤 你:我跑了这个脚本,报错了:

Traceback (most recent call last):
File "本月错误率.py", line 45, in <module>
df = pd.read_sql(sql, conn)
File "...\pandas\io\sql.py", line 762, in read_sql
return pandas_sql.read_query(...)
pandas.io.sql.DatabaseError: Execution failed on sql:
[...上面 SQL 语句...]
(1146, "Table 'his_db.首页主表' doesn't exist")

🤖 Claude Code:
我看到错误了 — 表名「首页主表」在 your 数据库里不存在。

可能的原因:
1. 表名拼写错误(应该是「his_main」?)
2. 表在其他 schema
3. 数据库连接错

让我先查一下你的数据库有哪些表...

(查询 INFORMATION_SCHEMA.TABLES)

找到 3 个候选表:
- his_db.medical_record_main(可能)
- his_db.case_main(可能)
- his_db.inpatient_main(可能)

你确认一下正确的表名,我帮你改 SQL。

👤 你:是 his_db.inpatient_main,字段名也不一样,英文的:
- record_id(病案号)
- dept_name(科室)
- error_flag(主诊错误标记)
- discharge_date(出院日期)

🤖 Claude Code:
好的,我改一下 SQL:

df = pd.read_sql('''
SELECT
record_id AS 病案号,
dept_name AS 科室,
error_flag AS 主诊错误标记
FROM inpatient_main
WHERE discharge_date >= '2026-07-01'
AND discharge_date < '2026-08-01'
''', conn)

要我重新跑吗?(y/n)

[!success] AI 调试的 3 大优势

  1. 不用懂错误代码:贴报错 → AI 自动分析
  2. 自动探索数据库:帮你找正确的表名
  3. 一步到位:改完立刻重跑,不用复制粘贴

模式 3:代码重构(优化性能)

[!example] 实战 ③:把 30 秒脚本优化到 0.5 秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
👤 你:D:\scripts\首页校验.py 这个脚本,跑 1 万条首页要 30 秒,
帮我优化一下,要求 5 秒内跑完

🤖 Claude Code:
好的,我看一下原脚本...

(读取脚本)

找到 3 个性能瓶颈:
1. 用 iterrows() 循环 → 改用向量化操作
2. 没建索引 → 加缓存
3. 重复读 Excel → 改为一次读

优化后版本(性能预估 0.5 秒):

import pandas as pd

# 1. 一次读 Excel
df = pd.read_excel('本月首页.xlsx')

# 2. 向量化校验(替代 iterrows)
def 校验必填(df):
"""向量化校验必填字段"""
errors = []
必填字段 = ['病案号', '出院日期', '主诊ICD']

# 用 stack + isna 替代逐行检查
缺失 = df[必填字段].isna().stack()
缺失 = 缺失[缺失]

for (idx, field), _ in 缺失.items():
errors.append({
'病案号': df.loc[idx, '病案号'],
'类型': '必填校验',
'说明': f'{field} 为空',
'等级': '严重'
})

return pd.DataFrame(errors)

# 3. 主流程
错误清单 = pd.concat([
校验必填(df),
# ... 其他校验
], ignore_index=True)

错误清单.to_excel('校验结果.xlsx', index=False)

性能提升 60 倍(30 秒 → 0.5 秒)

模式 4:批量运行(1 个通用脚本 → 跑 10 次)

[!example] 实战 ④:批量生成 12 个月的报告

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
👤 你:我有过去 12 个月的数据,每月一个 Excel,文件名前缀「2025-08-」到「2026-07-」,
帮我写一个脚本:
1. 自动遍历这 12 个文件
2. 每个月跑一次首页错误率统计
3. 输出 12 个统计 Excel + 1 个汇总 Excel(12 个月错误率趋势)

🤖 Claude Code:
好的,这是脚本:

import pandas as pd
from pathlib import Path
import matplotlib.pyplot as plt

# 配置
月份列表 = pd.date_range('2025-08-01', '2026-07-01', freq='MS')
所有结果 = []

for 月份 in 月份列表:
文件名 = f'首页_{月份.strftime("%Y-%m")}.xlsx'

if not Path(文件名).exists():
print(f'⚠ {文件名} 不存在,跳过')
continue

# 读本月数据
df = pd.read_excel(文件名)

# 统计
总数 = len(df)
错误数 = df['主诊错误标记'].sum()
错误率 = round(错误数 / 总数 * 100, 2)

所有结果.append({
'月份': 月份.strftime('%Y-%m'),
'总数': 总数,
'错误数': 错误数,
'错误率': 错误率
})

# 本月 Excel
本月统计 = df.groupby('科室').agg(
总数=('病案号', 'count'),
错误数=('主诊错误标记', 'sum')
).reset_index()
本月统计['错误率'] = (本月统计['错误数'] / 本月统计['总数'] * 100).round(2)
本月统计.to_excel(f'统计_{月份.strftime("%Y-%m")}.xlsx', index=False)

# 汇总 Excel
汇总 = pd.DataFrame(所有结果)
汇总.to_excel('12个月汇总.xlsx', index=False)

# 趋势图
plt.rcParams['font.sans-serif'] = ['SimHei']
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(汇总['月份'], 汇总['错误率'], marker='o', linewidth=2)
ax.set_title('过去 12 个月错误率趋势', fontsize=14, fontweight='bold')
ax.set_xlabel('月份')
ax.set_ylabel('错误率(%)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('12个月趋势.png', dpi=300)
print('✓ 全部完成!')

要我跑吗?(y/n)

四、避坑指南:5 个让 AI 编程「翻车」的常见错误

[!warning] 雷区 ①:需求太模糊
症状:AI 写的脚本不是你想要的。
解决:需求要具体:列字段、表名、输出格式。

1
2
❌ 「帮我写个首页分析的脚本」
✅ 「帮我写脚本:从 MySQL 读 inpatient_main 表(字段:record_id, dept_name, error_flag),按 dept_name 分组统计 error_flag=1 的占比,输出 Excel,中文 SimHei 字体,跑 5 秒内」

[!warning] 雷区 ②:不验证 AI 写的结果
症状:AI 跑完了,你没检查,数字错了都不知道
解决:永远人工 spot-check:

1
👤 「结果给我看下,挑 5 个科室,我自己手动算一下验证」

[!warning] 雷区 ③:敏感信息明文
症状:脚本里写了数据库密码,传到 GitHub 泄露了
解决:用环境变量:

1
2
import os
PASSWORD = os.environ['DB_PASSWORD']

[!warning] 雷区 ④:AI 写的脚本不存
症状:每次都要重新让 AI 写,重复劳动
解决:AI 写完 → 保存 → 维护:

1
2
3
4
5
D:\scripts\
drg_筛查.py
首页校验.py
月度报告.py
weekly_汇总.py

[!warning] 雷区 ⑤:不学基础就完全依赖
症状:AI 写错你看不出来。
解决:学第 14-21 期的 Python 基础,能判断 AI 写得对不对。


五、把 AI 编程嵌入日常工作流

[!TIP] 实战:质管人的「AI 编程日常」

时段 任务 Claude Code 怎么帮
早上 8:30 跑昨天数据 「跑 D:\scripts\昨日数据.py」
上午 10:00 新需求 「写个新脚本,XXX」
下午 3:00 报错 「脚本报错了,帮我看」
晚上 8:00 优化 「这个脚本太慢,帮我优化」

每天 30 分钟 AI 编程 = 工作效率提升 10 倍


六、下期预告

[!quote] 第 25 期
Claude Code + SQL 查询 —— 让数据库「听得懂人话」的 3 大玩法

这一期,带你用 Claude Code 直接连接 MySQL/PostgreSQL,自然语言问数据,告别写 SQL。


[!TIP] 互动
如果你觉得这篇「医数智联·第 24 期」对你有用,请点赞、在看、转发给科里的同事。

文中 4 大模式的 prompt 模板、调试技巧,我已经整理成「Claude Code 编程工具包」。点击「阅读原文」可直接下载

我是白衣狼,一个用数字化工具把医院管理做「轻」的实战派。咱们下期见。