--- name: outbreak-analysis description: >- 当用户处置疑似疾病暴发、需要画流行曲线、做三间分布描述、计算罹患率或 RR/OR、梳理暴发调查思路、形成与验证病因假设、设计回顾性队列或病例对照 研究时使用。同义场景:暴发调查、聚集性疫情分析、流行曲线/epi curve、 病例定义分层(疑似/临床/确诊)、发病时间分布、罹患率比较、2×2 表、 相对危险度 RR、比值比 OR、同源暴发/持续同源/人传人曲线形态、 食源性疾病暴发、现场流行病学调查、"帮我分析这份病例一览表"。 argument-hint: '[linelist CSV 路径]' metadata: domains: [epidemiology, public-health] last_reviewed: '2026-08-18' --- # 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 --interval day python scripts/epi_curve.py --format json > curve.json ``` 解读要点(结合病种潜伏期,潜伏期数值查诊疗方案,不凭记忆填写): - **点源/同源暴露**:病例集中在约一个潜伏期内,曲线单峰陡起陡落; - **持续同源**:平台状拖尾; - **增殖/人传人**:多波次、间隔约一个代际间隔。 以上形态学对应关系为教科书经验法则 [模型知识—待核实],仅作假设 线索,不作暴露模式的确证。 ### 4.2 地点分布 按居住地/工作地/就餐地点统计;需要标点地图或分地区率时转 `spatial-epi`。 ### 4.3 人群分布 按年龄、性别、职业/班级/车间分组计算构成比与(有分母时的)组罹患率: ```bash python scripts/epi_curve.py --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 ## 暴发调查描述性分析(<日期>) ### 病例定义 - 疑似/临床/确诊分层标准:<逐字定义>[用户提供] ### 三间分布 - 时间:流行曲线见 ;峰日 ,共 例 [实验数据: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`。