# Outbreak Analysis

> 当用户处置疑似疾病暴发、需要画流行曲线、做三间分布描述、计算罹患率或 RR/OR、梳理暴发调查思路、形成与验证病因假设、设计回顾性队列或病例对照 研究时使用。同义场景：暴发调查、聚集性疫情分析、流行曲线/epi curve、 病例定义分层（疑似/临床/确诊）、发病时间分布、罹患率比较、2×2 表、 相对危险度 RR、比值比 OR、同源暴发/持续同源/人传人曲线形态、 食源性疾病暴发、现场流行病学调查、"帮我分析这份病例一览表"。

- Skill: `minimax-ai/outbreak-analysis` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add minimax-ai/outbreak-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/minimax-ai/outbreak-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: MiniMax AI (https://skillmd.com/u/minimax-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/minimax-ai/outbreak-analysis

---


# outbreak-analysis：暴发调查分析规程

## 目的

把一份病例一览表（linelist）变成一份可审查的暴发调查分析：从病例定义
分层开始，经描述性三间分布与罹患率比较，到假设形成与验证设计。本技能
固化现场流行病学调查的经典步骤顺序 [模型知识—待核实：步骤划分与命名
各教材略有差异]，并给出 `scripts/epi_curve.py` 的标准用法。

铁律：

1. **先描述，后推断**：三间分布描述未完成前，不讨论病因结论。
2. **病例定义先行**：任何计数都必须说明用的是哪一层病例定义；换定义
   必须重算。
3. **个案数据合规**：linelist 必须是去标识化版本（见 epi-data-access
   第 4 节）；发现姓名/身份证/详细住址等直接标识符时停止分析，先脱敏。
4. 所有写入报告的数字必须能回溯到脚本输出或手工算式（evidence-or-silence）。

## 前置检查

1. linelist 已落盘于工作区（建议 `data/` 或派生目录），CSV 格式，UTF-8；
   至少含发病日期列（默认 `onset_date`），可选病例类型列（`case_type`）。
2. 数据已去标识化；伦理与数据来源已在 provenance 登记。
3. 已明确本次分析回答的问题：是核实暴发存在、描述分布、还是验证假设。
4. 背景信息向用户确认：涉及病种、暴露场景（聚餐/水源/集体单位）、
   调查时间。这些信息只有用户能提供，不猜。

## 1 · 核实诊断与确认暴发存在

1. 与用户核实：报告病例的诊断依据（临床症状、实验室检测）是否可靠；
   是否存在误诊或报告错误的可能。
2. 比较观察到的病例数与**基线/期望水平**：超出基线才可谈"暴发"。基线
   来源（历年同期报告数）向用户或监测资料索取；拿不到基线时写明
   `[待补证据：建议查历年同期监测数据]`，不凭印象断言"明显增多"。

## 2 · 建立病例定义并分层

病例定义四要素：时间、地点、人群、临床/实验室标准。按证据强度分层：

| 分层 | 含义（一般惯例） | 用途 |
| --- | --- | --- |
| 疑似病例 | 仅满足临床/流行病学标准 | 敏感性高的病例搜索 |
| 临床诊断病例 | 临床标准 + 流行病学关联 | 描述性分析主口径 |
| 确诊病例 | 实验室病原学/血清学证据 | 假设验证主口径 |

[模型知识—待核实：分层命名与各病种的判定标准以国家监测方案/诊疗
方案为准，不同病种差异很大，本表仅为通用框架。]

规程：

1. 把病例定义**逐字写进报告方法节**，包括纳入与排除标准。
2. linelist 中用 `case_type` 列标记每例所属分层；分层变更要留痕。
3. 敏感性分析意识：主分析用哪一层、换层后结论是否翻转，在报告
   讨论节说明。

## 3 · 病例搜索与一览表整理

1. 病例搜索途径（医疗机构记录、缺勤缺课登记、主动询问）由现场条件
   决定，记录搜索范围与可能遗漏。
2. linelist 建议列：`case_id`（去标识编号）、`onset_date`、`case_type`、
   年龄/性别、居住地或暴露分组变量、关键暴露史（就餐/饮水/接触）、
   转归。列不在多而在与假设相关。
3. 整理只生成新文件，不改原始导出（原始数据只读原则）。

## 4 · 描述性分析：三间分布

### 4.1 时间分布：流行曲线

用脚本生成：

```bash
python scripts/epi_curve.py <linelist.csv> --interval day
python scripts/epi_curve.py <linelist.csv> --format json > curve.json
```

解读要点（结合病种潜伏期，潜伏期数值查诊疗方案，不凭记忆填写）：

- **点源/同源暴露**：病例集中在约一个潜伏期内，曲线单峰陡起陡落；
- **持续同源**：平台状拖尾；
- **增殖/人传人**：多波次、间隔约一个代际间隔。

以上形态学对应关系为教科书经验法则 [模型知识—待核实]，仅作假设
线索，不作暴露模式的确证。

### 4.2 地点分布

按居住地/工作地/就餐地点统计；需要标点地图或分地区率时转
`spatial-epi`。

### 4.3 人群分布

按年龄、性别、职业/班级/车间分组计算构成比与（有分母时的）组罹患率：

```bash
python scripts/epi_curve.py <linelist.csv> --group-by village \
    --population "村A=500,村B=300"
```

## 5 · 罹患率与 RR/OR

1. **罹患率** = 期间新发病例数 / 暴露人口数（同源暴发中常以共同暴露
   人群为分母）。分子分母口径必须同源同期。
2. 暴露-发病 2×2 表：

|  | 发病 | 未发病 |
| --- | --- | --- |
| 暴露 | a | b |
| 非暴露 | c | d |

   - **RR** = [a/(a+b)] / [c/(c+d)]，适用于队列/全暴露人群资料；
   - **OR** = (a·d)/(b·c)，适用于病例对照资料（对照代表源人群暴露
     分布时，OR 近似 RR）[模型知识—待核实]。
3. 计算用脚本或电子表格留算式；结果连同分母来源一起写入报告。
4. 统计推断（置信区间、检验）样本量稍大时用 R/SPSS 完成（可委托
   r-analysis 等计算类 skill），本技能只负责点估计与表格。

## 6 · 假设形成

1. 综合三间分布、暴露史共性（共同就餐菜品、水源、集会）提出暴露假设。
2. 假设要具体可检验：写清"暴露 X 于时间窗 T 内使发病风险升高"，不要
   停留在"可能与食物有关"。
3. 与假设矛盾的病例（无暴露史的确诊例）如实列出，不删除——它们是
   修正病例定义或暴露定义的线索。

## 7 · 假设验证：分析性研究设计提示

| 情形 | 设计 | 效应指标 |
| --- | --- | --- |
| 暴露人群小且明确（一次聚餐全部参与者可枚举） | 回顾性队列 | RR |
| 病例已确定、暴露人群大或不可枚举 | 病例对照 | OR |

设计纪律：

1. 对照选择先于数据分析确定；对照应代表产生病例的源人群
   [模型知识—待核实]。
2. 暴露回忆用统一问卷；调查者尽量对假设保持盲态（现场条件下难以
   完全实现时如实说明）。
3. 混杂与偏倚（回忆偏倚、选择偏倚）在讨论节明确列出，不掩饰。

## 8 · 控制措施与报告

1. 控制措施**不必等假设验证完成**：描述性结果足以支持现场措施时
   立即建议（停止供应可疑食品、水源消毒、隔离等），措施内容与执行
   主体由用户与当地部门决定，本技能只提供证据摘要。
2. 报告写作转 `epi-writing` 的暴发调查报告模板。

## 输出模板

```markdown
## 暴发调查描述性分析（<日期>）

### 病例定义
- 疑似/临床/确诊分层标准：<逐字定义>[用户提供]

### 三间分布
- 时间：流行曲线见 <curve 图/ASCII>；峰日 <peak_date>，共 <total> 例
  [实验数据：epi_curve.py 输出]
- 地点：<分布描述>
- 人群：<年龄/性别/分组构成>

### 罹患率比较
| 分组 | 病例数 | 暴露人口 | 罹患率% |
| --- | --- | --- | --- |

### 假设
- <可检验的暴露假设>，依据：<三间分布与暴露史共性>
- 矛盾病例：<列出或写明"未发现">

### 下一步
- 验证设计：回顾性队列 / 病例对照；效应指标 RR / OR
```

## 本技能不做什么

- **不做因果定论**：RR/OR 显著不等于因果；结论措辞限于"提示/符合"，
  因果推断所需的更多证据标准不在本技能范围。
- **不做多因素回归建模**：logistic 回归等交给 python-analysis 等计算类
  skill 或用户的统计环境，本技能止于 2×2 表。
- **不提供临床诊疗建议**：个体病例诊治一律由临床医生决定。
- **不发布信息**：疫情信息对外发布权限属于有权部门；本技能只产出
  内部调查报告草稿（guardrail 第 8 条，对外可见动作需确认）。
- **不编造病种参数**：潜伏期、代际间隔等数值一律查方案后引用并标注
  来源；拿不到就写 `[待补证据]`。

## 收尾与下一步

1. 汇总：病例总数、分层计数、峰日、罹患率表、假设与矛盾点。
2. 指向产物路径（曲线 JSON、分析报告），登记 provenance。
3. 建议下一步：
   - 假设验证设计细化 → 与用户/现场团队讨论；
   - 地区分布与地图 → `spatial-epi`；
   - 报告成文 → `epi-writing`；
   - 数据补齐或重新获取 → `epi-data-access`。

