Skip to main content
Glama
ayeyouok

a207-report-mcp

by ayeyouok
README.md
# a207-report-mcp(M9 · 患者报告聚合)

儿童 CKD 患者报告聚合 MCP。对应 PCP 契约 `patient_report` 输出位。Batch C 交付包(与 M4 随访配对)。

## 工具清单

| 工具 | 类型 | 权限 | 说明 |
|---|---|---|---|
| `generate_patient_report` | 读 | 矩阵放行方(医生助手 / 营养师 / 家长助手 / 风险预警;患儿伙伴与调度 Agent 拒绝) | 聚合 M2(LIS)/M3(评估)/M4(随访)/M8(风险) 输出,生成统一时间线报告(结构化章节 + markdown 文案 + 整体状态) |

> 调用方身份由部署注入的环境变量 `A207_CALLER` 解析(模型不可自证身份,缺失即 fail-closed 拒绝),
> 放行范围以 `a207_policy` 权限矩阵为唯一事实源,工具入参不含 `caller`。

## 设计原则

- **零跨包 import**:M9 不反向查询任何 a207-* 包。各上游数据由编排层(router / PCP)显式传入:
  - `demographics`:{age_years, sex, ckd_stage, dialysis_mode}
  - `lab_summary`:来自 M2(LIS)最新化验
  - `nutrition_assessment`:来自 M3(评估)PRNT 目标 / 摄入达成率 / PEW
  - `followup_summary`:来自 M4(随访)记录 / 计划 / 依从性
  - `pew_history`:来自 M3 `get_pew_history`(**ADR-007:存储归属 M3**)
  - `risk_level`:来自 M8(风险规则)等级(L0-L3)
- M9 只做结构化聚合与文案生成,是 Batch C 的"聚合 facade"。

## 整体状态推导

`overall_status` 由以下信号合成(任一触发即升级):
- 风险等级 L1/high → **critical(紧急)**;L2/L3/medium → **caution(需关注)**;L0/low/none → 基线 stable
- PEW 历史趋势 worsening(来自 M3,ADR-007)→ 至少 caution
- 营养摄入达成率 energy_pct < 50% → 至少 caution

输出 `summary_markdown` 含七节:基本信息 / 最新化验 / 营养评估 / 随访与依从 / PEW 历史 / 风险等级 / 综合结论。

## 验证
```bash
python -m py_compile src/a207_report_mcp/*.py
python tests/test_tools.py   # 全部断言应全过
```

## 已知缺口(非阻断)
- 报告为"快照聚合",不含历史版本管理;多时间点对比由调用方多次调用拼装。
- 不消费 M10 通知能力(提醒外发在 Batch D)。