肿瘤临床试验竞争格局图谱(Clinical Trial Atlas)
把"某靶点 × 某瘤种"的临床试验格局做成一张可交付、可筛选、可点击的单文件 HTML:
- Panel A:关键 / 注册性试验(III 期、注册性 II 期)的时间轴甘特图——从试验开始到注册主要终点,标注已读出的节点。
- Panel B:II 期 / 早期观察试验,揭示塑造关键设计的前期证据。
- 疗效证据表:已披露的关键读出(ORR / mPFS / mOS / 安全性 + 来源)。
- 全量注册表:对 ClinicalTrials.gov 做系统化多词扫描后去重、按机制着色的可筛选表格(点击 NCT 跳转)。
本 Skill 由 HER2 NSCLC 与 CLDN18.2 胃癌两份已交付 atlas 抽象而来,脚本完全参数化:换一个靶点只需改一份 JSON 配置。
何时使用
- "帮我做 HER2 乳腺癌 / TROP2 NSCLC / EGFR ex20ins 的竞争格局图"
- "系统检索 CLDN18.2 胃癌的 III 期试验并做成 dashboard"
- "把这几个靶点的临床管线画成时间轴"
- 任何"某靶点竞争格局 / 研发格局 / 管线 atlas / landscape / timeline"诉求
工作流(三步,务必按顺序)
阶段 0:确认输入(不足则先问,不要臆造)
必需信息:①靶点 / 生物标志物(含别名、药名词、检测阈值定义,同时需要检查研发代号和药物通用名、商品名及曾用名的一致性,不要出现同一药物不同代号分开列出的情况);②瘤种与人群;③期望覆盖的线数(1L/2L/3L)与试验阶段;④适用监管区域(NMPA / FDA / EMA)。
阶段 1:检索 + 策展(产出 panels 与 table)
- 用
scripts/fetch_atlas.py跑 ClinicalTrials.gov API v2 的cond × term笛卡尔扫描,得到全量原始 JSON(见下方"脚本路由")。 - 用
scripts/inspect.py逐条核对注册表,剔除 basket/umbrella、影像诊断、非目标瘤种等噪声。 - 人工策展 Panel A / B 的时间轴行(drug、code、NCT、phase、n、start、end、status、readout、note)与疗效证据表——数据来源优先 ClinicalTrials.gov、FDA/EMA/NMPA 官方、NEJM/JCO/Lancet Oncology/Nature Medicine、ASCO/ESMO/WCLC、公司公告。读出的数值与年份必须可核查、标注来源。
- 在
registry配置里写好机制分类(classes)、排除项(exclude)、药名→标签映射(agent_map)、以及 cond/agent 正则。
阶段 2:构建(产出 HTML)
运行 scripts/build_atlas.py <config.json>,从配置 + 原始 JSON 渲染单文件 HTML。无需联网。
校验:确认 SVG 行数、注册表行数与预期一致,且所有 <svg> 为合法 XML。
阶段 3:交付
交付 HTML,并附"数据方法 + 核心结论 + 证据局限"三点说明(参照 references/ 中三份示例 atlas 的脚注写法)。
配置 schema(examples/*.json 为完整可运行范例)
{
"meta": {
"title": "...", "subtitle": "...", "now": "YYYY-MM-DD",
"stats": [["label", "value"], ...], // 顶部统计卡
"legend": [["机制标签", "#颜色"], ...], // 时间轴图例
"footer": "..."
},
"fetch": { // 供 fetch_atlas.py 使用
"conds": ["gastric cancer", ...],
"terms": ["CLDN18.2", "zolbetuximab", ...],
"must": ["gastric","gej",...], // 必须命中的瘤种词
"any_of": null, // 默认 = terms 小写
"exclude_conds": []
},
"registry": {
"raw": "ctg_xxx_raw.json", // 原始 JSON(fetch 产出或自带)
"cond_rx":"gastric|gej|stomach|...", // 注册表瘤种过滤
"agent_rx":"cldn18|zolbetuximab|...", // 注册表靶点过滤
"exclude":["NCT...", ...], // 噪声 NCT 排除
"classes":[["CLDN18.2 mAb","#2563eb","regex"], ...],
"agent_map":[["regex","Zolbetuximab (VYLOY)"], ...]
},
"panels": {
"A": {"title":"...","src_note":"...","oy":2018,"om":1,"total_months":168,
"groups":[{"label":"机制分组","color":"#...",
"rows":[{"drug","code","desc","sponsor","nct","phase","n",
"start","end","status","note",
"readout":{"date":"2026-09","label":"WCLC 2026"},
"pc_type":"ACT"}]}]},
"B": { ... }
},
"table": {"cols":["Trial · agent",...], "rows":[[...],...]},
"notes": "<html 脚注:读图说明 / 监管里程碑 / 缩写 / 来源与局限>"
}
status取值:recruiting/closed/planned(实心 / 半透明 / 描边)。readout仅用于 Panel 中"已读出"的节点;pc_type:"ACT"表示日期为实际值(深色),否则为估计值(灰色 "est.")。panels.A/B的oy/om/total_months控制时间轴起点与跨度(月)。
脚本路由
| 你要做的事 | 用哪个脚本 |
|---|---|
| 系统化扫描 ClinicalTrials.gov 拉取原始数据 | scripts/fetch_atlas.py <config.json> |
| 逐条核对 / 策展注册表 | scripts/inspect.py <raw.json> [phase前缀] |
| 从配置 + 原始 JSON 渲染 HTML(离线) | scripts/build_atlas.py <config.json> [--out x.html] [--now YYYY-MM-DD] |
| 由示例数据重新生成示例 config(可选) | examples/make_configs.py |
参考文件(references/)
PDAC_clinical_trial_atlas.html—— 本 Skill 的视觉模板(胰腺癌,原始参考图谱)。HER2_NSCLC_clinical_trial_atlas.html—— 示例输出 1(HER2 NSCLC)。CLDN18_2_gastric_clinical_trial_atlas.html—— 示例输出 2(CLDN18.2 胃癌)。examples/her2_nsclc_config.json/examples/cldn18_gc_config.json—— 上述两份示例的完整配置,直接python build_atlas.py examples/her2_nsclc_config.json即可复现。
硬性红线(违反即返工)
- 注册表必须用标题 + 干预名(而非全文摘要)做靶点过滤,否则会混入 basket/umbrella 研究与影像诊断研究——这是 HER2/CLDN18.2 两版都验证过的去噪关键。
- 任何疗效数字必须带来源与年份;公司公告未披露具体数值的(如 CLARITY-Gastric01、G-HOPE-001),必须在脚注明确标注"数值待全文披露确认"。
- 时间轴日期一律取自 ClinicalTrials.gov 的注册主要完成日(primary completion),作为读出代理指标;已实际读出的节点单独标注真实来源日期。
- 交付前必须校验 SVG 为合法 XML、注册表行数与预期一致、点击跳转链接正确。
输出约定
- 默认产出单文件 HTML(内联 CSS/SVG/JS,无外部依赖),可直接双击打开或上传。
- 中文环境交付;图内术语可中英混排(与已交付三份 atlas 一致)。
- 同时给出:①HTML 文件;②数据方法(cond×term 扫描 + 去噪逻辑);③核心结论(获批节点、关键读出、阴性/终止项目);④证据局限。