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

医数智联·第 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 分钟

assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_18-13-31.jpg

一、场景引入:质管办小李的”台账噩梦”

[!example] 一个真实的周一上午
周一早上 8 点 30,质管办小李刚坐下,主任就扔过来 3 份清单:

  1. 本月 28 份质控问题清单,按科室分类,标注处理状态;
  2. 本月 12 起投诉,按严重程度分级,标注处理进度;
  3. 本月 8 份手术安全核查记录,按医生姓名检索。

小李打开 Excel,新建 3 个 sheet,开始”复制粘贴”:

  • 从有道云复制 28 条质控问题 → Excel 手工输入科室、日期、状态;
  • 从 Outlook 复制 12 条投诉 → Excel 手工填严重程度、责任科室;
  • 从纸质档案夹抄录 8 条手术核查 → Excel 手工录医生姓名、手术名称。

2 小时后,小李终于把 3 张表做完了。

周三,新增了 5 条投诉,周三晚上又要加班重做。

周五,主任说”再加一列:处理人姓名”,全部重来

小李的问题不在于”Excel 不会用”,而在于他的数据来源是”零散的笔记”,无法自动汇总

[!quote] 狼叔的判断
“Excel 不是数据库,Excel 是’最后一步’。前面 90% 的工作应该用工具自动完成。” Dataview,就是把这个”前面 90%”从手工变成自动的插件。


assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_18-13-58.jpg

二、工具原理:Dataview 为什么能让笔记”动”起来

[!info] Dataview 是什么?
Dataview 是 Obsidian 的一个插件,它会扫描你库里的所有 Markdown 笔记,提取每篇笔记的 frontmatter(YAML 头)inline fields(内联字段),当作”数据库表的字段”,然后让你用 类 SQL 语法 查询。

比如这篇文章在我的 Obsidian 里面的 frontmatter 就是这样: ⬇️
assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_14-39-20.jpg

打个比方:

你熟悉的概念 Dataview 对应 说明
Excel 工作簿 整个 Obsidian 库 库 = 一个数据库
Excel 工作表 文件夹 / 标签 分类依据
Excel 的一行 一篇 Markdown 笔记 一行 = 一篇笔记
Excel 的一列 Frontmatter 字段 质控日期科室状态
Excel 的筛选 Dataview 查询语句 WHERE 科室 = "骨科"

2.1 元数据从哪里来?

[!tip] 2 类元数据
Dataview 能识别 2 类”字段”:

  1. Frontmatter(YAML 头):每篇笔记开头 --- 之间的字段

    1
    2
    3
    4
    5
    6
    7
    ---
    title: "骨科 7 月质控问题"
    date: 2026-07-15
    科室: 骨科
    严重程度:
    处理状态: 已整改
    ---
  2. Inline fields(内联字段):在正文里用 字段名:: 字段值 格式写

    1
    2
    3
    - 发生时间:: 2026-07-15 10:30
    - 责任人:: 白衣狼
    - 处理结果:: 已整改

2.2 4 类查询视图

[!info] Dataview 的 4 类视图

  1. LIST(列表):返回符合条件的笔记标题列表
  2. TABLE(表格):返回表格形式,自定义列
  3. TASK(任务):识别笔记里的 - [ ] 复选框,当任务列表用
  4. CALENDAR(日历):把笔记按日期展示(需配合 Calendar 插件)

2.3 一个最简单的示例

[!example] 一句话查询

1
2
3
4
5
LIST
FROM ""
WHERE 科室 = "骨科"
SORT date DESC
LIMIT 10

翻译:列出所有”科室 = 骨科”的笔记,按日期倒序,只取前 10 条。

就这么简单。

2.4 安装与配置

[!tip] 3 步安装

  1. 打开 Obsidian → 设置 → 第三方插件 → 社区插件市场
  2. 搜索 “Dataview”(作者 Michael Brenan),点击安装
  3. 启用插件(默认关闭,需手动打开)

⚠️ 重要提醒:

  • Dataview 默认”按需查询”,你必须在代码块语言写 dataview(不是 sql、不是 js),否则不生效。
  • 大型库(1000+ 笔记)首次查询可能 1-3 秒,这是正常的

assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_18-14-53.jpg ## 三、医院实战: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. 新增 1 条问题,自动出现在台账里,不用手动汇总
  2. 修改字段(比如状态从”处理中”→”已整改”),台账实时更新
  3. 全文可检索,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 的笔记。


assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_18-16-27.jpg

四、避坑指南:5 大常见”雷区”

[!warning] 雷区 ①:字段名大小写不一致
症状:明明写了 科室: 骨科,但查询 WHERE 科室 = "骨科" 没结果。
原因:Dataview 对字段名是大小写敏感的,科室科室 (多空格)会被当成两个字段。
解决:统一字段命名规范,建议用”驼峰”或”下划线”,比如 keshike_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 只识别直接列出的复选框,嵌套在引用块 > 或代码块里的不行。
解决:复选框必须顶格写,前面不要有缩进或引用符号。


五、下期预告

assets/2026-07-03-医数智联-第03期-Obsidian Dataview_2026-07-03_18-17-31.jpg

[!quote] 第 04 期
Obsidian + 病案质控日志:每日 200 字的”复盘仪式”

讲怎么用 Templater + Dataview 搭一个”零摩擦”的每日复盘工作流,让你不靠意志力也能坚持记录。


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

文中提到的 Dataview 查询模板,我会整理成”开箱即用版”,发布在我的个人网站上。点击「阅读原文」可直接下载

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