医数智联·第 03 期:Obsidian Dataview —— 把笔记变成「数据库」,质控台账不再靠 Excel
医数智联·第 03 期:Obsidian Dataview —— 把笔记变成”数据库”,质控台账不再靠 Excel
[!ABSTRACT] 核心摘要
- 本期主题:用 Dataview 插件,把零散的 Markdown 笔记当成”数据库表”,用 SQL-like 语法查询
- 核心结论:Dataview = 笔记版的”数据库视图”,语法像 SQL,但你不用学 SQL 也能用
- 2 大查询模式:DQL(类 SQL) 和 JS API(JavaScript),前者覆盖 80% 场景
- 3 大医院场景:质控台账自动汇总、投诉清单实时检索、教学查房素材库
- 下载量:Dataview 5.5M+ ,Obsidian 社区 Top 10 插件
- 阅读时长:约 10 分钟
一、场景引入:质管办小李的”台账噩梦”
[!example] 一个真实的周一上午
周一早上 8 点 30,质管办小李刚坐下,主任就扔过来 3 份清单:
- 本月 28 份质控问题清单,按科室分类,标注处理状态;
- 本月 12 起投诉,按严重程度分级,标注处理进度;
- 本月 8 份手术安全核查记录,按医生姓名检索。
小李打开 Excel,新建 3 个 sheet,开始”复制粘贴”:
- 从有道云复制 28 条质控问题 → Excel 手工输入科室、日期、状态;
- 从 Outlook 复制 12 条投诉 → Excel 手工填严重程度、责任科室;
- 从纸质档案夹抄录 8 条手术核查 → Excel 手工录医生姓名、手术名称。
2 小时后,小李终于把 3 张表做完了。
周三,新增了 5 条投诉,周三晚上又要加班重做。

周五,主任说”再加一列:处理人姓名”,全部重来。
小李的问题不在于”Excel 不会用”,而在于他的数据来源是”零散的笔记”,无法自动汇总。
[!quote] 狼叔的判断
“Excel 不是数据库,Excel 是’最后一步’。前面 90% 的工作应该用工具自动完成。” Dataview,就是把这个”前面 90%”从手工变成自动的插件。
二、工具原理:Dataview 为什么能让笔记”动”起来
[!info] Dataview 是什么?
Dataview 是 Obsidian 的一个插件,它会扫描你库里的所有 Markdown 笔记,提取每篇笔记的 frontmatter(YAML 头) 和 inline fields(内联字段),当作”数据库表的字段”,然后让你用 类 SQL 语法 查询。
比如这篇文章在我的 Obsidian 里面的 frontmatter 就是这样: ⬇️
打个比方:

| 你熟悉的概念 | Dataview 对应 | 说明 |
|---|---|---|
| Excel 工作簿 | 整个 Obsidian 库 | 库 = 一个数据库 |
| Excel 工作表 | 文件夹 / 标签 | 分类依据 |
| Excel 的一行 | 一篇 Markdown 笔记 | 一行 = 一篇笔记 |
| Excel 的一列 | Frontmatter 字段 | 质控日期、科室、状态 等 |
| Excel 的筛选 | Dataview 查询语句 | WHERE 科室 = "骨科" |
2.1 元数据从哪里来?
[!tip] 2 类元数据
Dataview 能识别 2 类”字段”:
Frontmatter(YAML 头):每篇笔记开头
---之间的字段
1
2
3
4
5
6
7
title: "骨科 7 月质控问题"
date: 2026-07-15
科室: 骨科
严重程度: 中
处理状态: 已整改Inline fields(内联字段):在正文里用
字段名:: 字段值格式写
1
2
3 - 发生时间:: 2026-07-15 10:30
- 责任人:: 白衣狼
- 处理结果:: 已整改
2.2 4 类查询视图
[!info] Dataview 的 4 类视图
- LIST(列表):返回符合条件的笔记标题列表
- TABLE(表格):返回表格形式,自定义列
- TASK(任务):识别笔记里的
- [ ]复选框,当任务列表用- CALENDAR(日历):把笔记按日期展示(需配合 Calendar 插件)
2.3 一个最简单的示例
[!example] 一句话查询
1
2
3
4
5 LIST
FROM ""
WHERE 科室 = "骨科"
SORT date DESC
LIMIT 10翻译:列出所有”科室 = 骨科”的笔记,按日期倒序,只取前 10 条。
就这么简单。
2.4 安装与配置
[!tip] 3 步安装
- 打开 Obsidian → 设置 → 第三方插件 → 社区插件市场
- 搜索 “Dataview”(作者 Michael Brenan),点击安装
- 启用插件(默认关闭,需手动打开)
⚠️ 重要提醒:
- Dataview 默认”按需查询”,你必须在代码块语言写
dataview(不是sql、不是js),否则不生效。- 大型库(1000+ 笔记)首次查询可能 1-3 秒,这是正常的。
## 三、医院实战:3 大场景直接上手

3.1 场景一:质控问题台账(自动汇总)
[!example] 实战 ①:质控台账
场景描述:每月质控检查产生 20-50 份问题记录,需要按”科室+状态”实时汇总。步骤 1:在
质控/问题记录/文件夹下,每发现一个问题就新建一篇笔记,frontmatter 模板如下:
1
2
3
4
5
6
7
8
9
10
title: "{{title}}"
date: {{date}}
科室:
问题类型:
严重程度: 高/中/低
处理状态: 待处理/处理中/已整改
责任人:
整改期限:步骤 2:新建一篇
质控/月度汇总.md,写入 Dataview 查询:
1
2
3
4
5
6
7
8
9 TABLE
科室 AS "科室",
问题类型 AS "问题",
严重程度 AS "等级",
处理状态 AS "状态",
责任人 AS "责任人"
FROM "质控/问题记录"
WHERE 处理状态 != "已整改"
SORT 严重程度 ASC, 整改期限 ASC效果:打开
月度汇总.md,就能看到所有未整改问题的实时列表,按严重程度 + 整改期限排序。
[!success] 这个做法的 3 大好处
- 新增 1 条问题,自动出现在台账里,不用手动汇总
- 修改字段(比如状态从”处理中”→”已整改”),台账实时更新
- 全文可检索,Dataview 之外还能用 Obsidian 全局搜索
3.2 场景二:投诉处理清单(进度跟踪)
[!example] 实战 ②:投诉清单
场景描述:投诉处理分散在不同笔记里,需要按”严重程度”分级跟踪。步骤 1:每起投诉一篇笔记,frontmatter:
1
2
3
4
5
6
7
8
9
10
title: "投诉:{{投诉人}}-{{投诉事项}}"
date: {{date}}
投诉人:
涉及科室:
严重程度: 1/2/3 # 1=最严重
处理状态: 已受理/调查中/已回复/已关闭
处理人:
预计回复日期:步骤 2:在
投诉/投诉总台.md写入:
1
2
3
4
5
6
7
8
9 TABLE
涉及科室 AS "科室",
严重程度 AS "等级",
处理状态 AS "进度",
处理人 AS "处理人",
预计回复日期 AS "预计回复"
FROM "投诉"
WHERE 处理状态 != "已关闭"
SORT 严重程度 ASC, date DESC进阶用法 — TASK 视图:
1
2
3 TASK
FROM "投诉"
WHERE !completed效果:把所有”未关闭”投诉显示为任务列表,可以直接点击勾选完成。
3.3 场景三:教学查房素材库(按医生检索)
[!example] 实战 ③:教学素材
场景描述:主任查房需要快速调出”某医生近 3 个月的典型病例讨论”。步骤 1:每次查房讨论后新建笔记,frontmatter:
1
2
3
4
5
6
7
8
9
title: "{{case_name}}"
date: {{date}}
患者姓名:
主诊医生:
病种:
讨论要点:
是否典型: 是/否步骤 2:在
教学/查房素材库.md写入:
1
2
3
4
5
6
7
8
9 TABLE
主诊医生 AS "医生",
病种 AS "病种",
是否典型 AS "典型",
讨论要点 AS "要点"
FROM "教学/查房"
WHERE 主诊医生 = "白衣狼" AND 是否典型 = "是"
SORT date DESC
LIMIT 20效果:输入医生姓名,就能调出该医生所有”典型病例”的讨论要点,用于教学。
3.4 高级用法:多表 JOIN
[!tip] 用 inline fields 做”伪 JOIN”
Dataview 不支持真正的 JOIN,但可以用 inline fields 把”关联 ID”串起来:
1
2 - 患者ID:: P20260715001
- 主诊医生:: [[白衣狼]]然后在汇总笔记里写:
1
2
3 LIST
FROM ""
WHERE 患者ID = "P20260715001"就能找到所有关联到该患者 ID 的笔记。
四、避坑指南:5 大常见”雷区”
[!warning] 雷区 ①:字段名大小写不一致
症状:明明写了科室: 骨科,但查询WHERE 科室 = "骨科"没结果。
原因:Dataview 对字段名是大小写敏感的,科室和科室(多空格)会被当成两个字段。
解决:统一字段命名规范,建议用”驼峰”或”下划线”,比如keshi或ke_shi。
[!warning] 雷区 ②:日期字段格式混乱
症状:WHERE date > 2026-07-01部分日期不生效。
原因:Dataview 要求日期字段必须是 ISO 格式(YYYY-MM-DD)或 Obsidian 链接日期[[2026-07-01]]。
解决:用 Templater 插件强制日期格式,不要手写。
[!warning] 雷区 ③:大库性能问题
症状:库超过 2000 笔记后,Dataview 查询明显变慢(>5 秒)。
原因:每次查询都扫描全库。
解决:
- 缩小 FROM 范围:
FROM "质控"而不是FROM ""- 避免全库 COUNT(*):用
LIMIT限制返回数量- 关闭”自动索引”:Dataview 设置 → 索引策略 → 关闭默认索引
[!warning] 雷区 ④:中文标点导致语法错误
症状:WHERE 科室 = "骨科"报错,但改成英文"骨科"就好。
原因:Dataview 解析器对中文标点敏感,引号必须是直引号""而不是弯引号""。
解决:写代码块时关闭中文输入法,或用 Templater 模板注入。
[!warning] 雷区 ⑤:TASK 视图识别不了”嵌套复选框”
症状:正文的- [ ]复选框没被 TASK 视图捕获。
原因:Dataview TASK 只识别直接列出的复选框,嵌套在引用块 > 或代码块里的不行。
解决:复选框必须顶格写,前面不要有缩进或引用符号。

五、下期预告
[!quote] 第 04 期
Obsidian + 病案质控日志:每日 200 字的”复盘仪式”讲怎么用 Templater + Dataview 搭一个”零摩擦”的每日复盘工作流,让你不靠意志力也能坚持记录。

[!TIP] 互动
如果你觉得这篇「医数智联·第 03 期」对你有用,请点赞、在看、转发给科里的同事。文中提到的 Dataview 查询模板,我会整理成”开箱即用版”,发布在我的个人网站上。点击「阅读原文」可直接下载。
我是白衣狼,一个用数字化工具把医院管理做”轻”的实战派。咱们下期见。





