调研日期:2026-09-15
触发:长官上传《眼科顶刊JAMA O发布全球儿童青少年眼轴百分位参考图表_学文推荐.pdf》,问「能否据此做眼轴预测功能,并与 4L 干预结合(不干预什么样 / 用 4L 后什么样)」
本文所有事实均带出处;凡未物理核实的,单列在第九节「未核实清单」,不得当作结论使用
能做,而且应该做 —— 但必须改掉两件事:功能不能叫「预测」,干预对比不能画成「两条命运曲线」。
按论文原本用途做「眼轴百分位定位 + 生长轨道追踪」,科学上完全站得住,国际同行(Ocumetra / BHVI / 蔡司)已在做同款;
但长官想要的「不干预 vs 4L 干预」双曲线,当前既缺科学依据、也缺系统数据,只能做成标注清楚的「文献情景模拟」,不能做成对个体孩子的承诺。
唯一的 go / no-go 卡点:拿不到百分位曲线的数值参数(LMS 表),整个功能一行代码都写不了。详见第七节。
| 项 | 事实 | 证据 |
|---|---|---|
| 文件性质 | 微信公众号二次解读稿,不是论文原文 | PDF 元数据 creator: Chrome/152.0.0.0 producer: Skia/PDF m152(浏览器打印导出) |
| 来源 | 公众号「非学不可-视铂订阅号」,作者「小铂」;9-13 由眼视光毛欣杰医生转发 | Page 1 / Page 7 |
| 篇幅 | 7 页,2868 字符,含 3 张图表截图 | pymupdf 提取,7 页全部逐页视觉核对 |
| 有没有 LMS 参数表 | 没有 | 全文无 L/M/S 系数 |
| 有没有分年龄分性别百分位数值表 | 没有 | 图 2 / 图 3 是纯曲线图片,数值无法可靠反读 |
| 有没有公式 | 没有(只说明用「多高斯模型 + 加权三次样条」) | Page 2 |
| 有没有原文链接/DOI | 没有(只有微信「阅读原文」按钮文字,PDF 里无 URL 字符串) | Page 1 / Page 7 |
提取工具:系统无 poppler/mutool,
pip install pymupdf走白名单 PyPI 装到/home/dev2/venvs/dab/bin/python完成提取。
产物在/tmp/jama_al/(text.txt + images/ + pages/page_01~07.png),未写入任何 git 仓库。
结论:这份材料能帮我们判断「值不值得做」,但不能直接支撑「怎么做」。工程实现必须拿到论文原文的补充材料。
样本(对我们极其有利的一点):
| 项 | 数值 |
|---|---|
| 受试者 | 147,404 名 6–21 岁儿童青少年 |
| 眼轴测量次数 | 559,799 次 |
| 队列数 | 16 项人群/学校队列 |
| 东亚占比 | 84%(且东亚是独立建模,不与欧澳合并) |
| 欧洲 / 澳大利亚 | 12% / 4%(二者方差小,合并为「欧澳组」) |
| 设计 | 汇总队列的横断面百分位拟合(非纵向随访预测) |
分组:分性别(男/女)× 分地域(东亚 / 欧澳),共 4 组曲线。未区分左右眼。
百分位档位:只画 5 档 —— 3rd / 15th / 50th / 85th / 97th(不是常见的九档)。
可用作校验锚的具体数值(公众号文中给出):
| 对象 | 欧澳 | 东亚 |
|---|---|---|
| 7 岁女孩 P50 | 22.35 mm | 22.67 mm |
| 18 岁女孩 P50 | 23.31 mm | 24.36 mm |
| 18 岁女性 P97 两地差 | — | 相差 1.27 mm |
一个很有说服力的传播点:东亚人群的 P50,大致相当于欧澳人群的 P85。
男女眼轴差:东亚 0.54 mm,欧澳 0.46 mm。模型拟合质量:全部分组 ICC > 0.99,偏差 −0.08 ~ +0.04 mm。
公众号稿转述原文(Page 5-6),与检索到的论文摘要一致:
「本套为人群分布参考,不是健康/正常标准,不等同于『正视眼生长标准』,不能直接用来诊断近视;临床判读必须结合性别、地域参照百分位,不能简单套用固定毫米阈值。」
论文原文定位用语:could serve as the current reference standard … supporting interpretation of childhood axial length and regional growth trajectories without defining diagnostic thresholds for myopia**。
即:它是参考图表(reference chart),不是预测模型(prediction model)。
The limitations of centile curves for evaluating myopic eye growth
Flitcroft DI, Lingham G, Kneepkens S, Polling JR, Klaver C, Loughman J
Optometry and Vision Science 2026;103:e70034 · PubMed 41947272
(署名者与 JAMA 那篇论文高度重合 —— 是原作者自己写的)
核心论点,逐条都正中我们要做的功能:
同期另有原作者回应文(Bullimore 2026, e70035),以及 JAMA 同期社论《Axial Length and the Future of Myopia Risk Stratification》(PubMed 42461655)。两篇均未能打开全文核实,列入第九节。
| 想做的事 | 能不能用百分位曲线 | 理由 |
|---|---|---|
| 「你孩子眼轴在同龄同性别东亚儿童里排第 X 位」 | ✅ 可以 | 论文正当用途 |
| 「百分位从 P65 漂到 P80 = 长得比同龄人快」 | ✅ 可以(儿科生长曲线标准用法) | 相对位置比绝对 mm 更抗误差 |
| 「若保持当前轨道,18 岁预计 X mm」 | ⚠️ 可以,但必须标注「若保持当前轨道」 | 是轨道外推,不是个体预测 |
| 「用 4L 干预后曲线会变成这样」 | ❌ 不能直接用 | 原作者点名:低估近视眼生长、低估干预效果 |
| 「靠百分位没上漂 → 证明我们防控有效」 | ❌ 危险 | 会给已近视孩子虚假安心 |
对 4.3 最后一条的解法(建议写进方案):
对已经近视的孩子,不能只看百分位,必须双轨判断 —— 百分位轨道 + 绝对年增长速率。
好消息是绝对速率的阈值我们代码里已经有了:four_l_summary_prompt.py 的禁语/知识层已注入「眼轴年增 > 0.3 mm 即超速」和「秋冬 9–1 月眼轴月增 0.04 mm 为高峰期」。两条轨道一起看,才不会被百分位的系统性低估骗过去。
| 手段 | 对照组眼轴增长 | 干预组 | 差值(95%CI) | 随访 | 出处 |
|---|---|---|---|---|---|
| 红光 RLRL(≈L1) | — | — | 12月 −0.30mm(−0.36,−0.24);24月 −0.61mm(−0.71,−0.52);另一 meta 对比单光镜 −0.36mm(−0.44,−0.29) | 6–24月 | PMC12380900 / PMC11721214 |
| HAL 高非球面微透镜(≈L4) | 12月 0.36mm;24月 0.69mm | 12月 0.13mm;24月 0.34mm | 24月约 −0.35mm;meta MD −0.15mm;5年中国研究少长 0.72mm | 1–5年 | PMC13494796 / PMC11881363 |
| DIMS 离焦镜(≈L4) | — | — | 2年 RCT 0.34mm;UK 2年多中心 24月少长 0.27±0.20mm | 2年 | opo.70034 / PMC12682106 |
| OK 镜(≈L4) | 2年 0.65±0.30mm | 2年 0.41±0.25mm | 2年 MD −0.28mm(−0.35,−0.20);另一 meta −0.16mm | 6月–2年 | PMC13466339 |
| 0.05% 阿托品(LAMP) | 1年 0.41±0.22mm | 1年 0.20±0.25mm | 约 −0.21mm(0.01% 组不显著) | 1–2年 | PubMed 32019700 |
| 户外活动 | — | — | −0.08mm/年(−0.09,−0.07);RCT-only meta −0.09mm(−0.13,−0.05) | 9月–3年 | PMC12604451 / PMC11347293 |
长官原问:「在『不防控』和『全套 4L 防控』的眼轴增长差距里,红光、补光、远像、离焦镜各能占几成?叠加要不要打折?」
检索结论:目前没有可引用的定量证据。
→ 所以「4L 分权重模拟」现在硬做,就是编系数。建议维持长官 9-06 的原判:不做分权重。
⚠️ 首轮调研是在落后 origin/test 1227 个 commit 的 worktree 上做的,已派二轮在最新基线用
git grep origin/test复核。以下为复核后结论。
| 能力 | 物理位置 | 说明 |
|---|---|---|
| 眼轴数据 | refractive_record_eyes.axial_length = Numeric(7,4) |
OD/OS 分行存,保留设备原始精度 |
| 出生日期 | patients.birth_date(Date) |
存生日不存年龄 → 可算精确到月的年龄 ✅ |
| 性别 | patients.gender(String(4),实存中文「男/女」) |
Pydantic Literal["男","女"] 强约束 |
| 角膜曲率 | refractive_record_eyes.keratometry_k1/k2 |
第三方接口若要 K 值也够 |
| 历史序列查询 | refractive_record_service.py _load_store_visible_history() |
按 patient_id + visit_at ASC,4L 引擎与历次对比共用 |
| 眼轴趋势规则层 | four_l_summary_prompt.py _compute_axial_trend() |
后端规则算好再喂 27B,不是模型自己编;已含「年增 >0.3mm 超速」「秋冬月增 0.04mm 高峰」等阈值 |
| 趋势图 | 平板端 trend-chart-dialog.tsx / 家长端 family/[id]/page.tsx |
recharts ComposedChart,2 线(OD/OS)+ 渐变面积 + 末点数值气泡 |
百分位定位所需的三个输入(眼轴 / 精确年龄 / 性别)—— 系统全都有。这是最关键的可行性前提,已满足。
| # | 缺口 | 影响 |
|---|---|---|
| 1 | 无干预时间线 —— 全库没有任何字段记录「孩子哪天开始用哪个 L、用了多久」 | 🔴 「4L 干预前后对比」做不出真实版,只能做文献模拟 |
| 2 | treatment_plans(唯一带 L1–L4 结构的表)挂在废弃的 vision_exams 上,且 test 库 0 行;l1_l4_selection 是自由 Text |
同上 |
| 3 | prevention_measures / prevention_history(JSONB)只是勾选快照,无起止时间 |
同上 |
| 4 | 眼轴数据分裂在两套表:新 refractive_record_eyes(Numeric(7,4),分行)与旧 vision_exams(DECIMAL(5,2),分列) |
需先定基准表统一口径 |
| 5 | 趋势图无参考线 / 无区域着色 / 无百分位(ReferenceLine/ReferenceArea/percentile 三个关键词 0 命中) |
要新增绘制层 |
| 6 | 算法零落地:myopia88 / eyeAxisPredict 在 app/ web/ 下 0 命中 |
纯新建 |
| 7 | test 库数据量小:refractive_records 176 行 / 双眼眼轴非空 324 行 / patients 44 人 |
自建人群基线不可能,必须用外部曲线 |
① 第三方 myopia88 已被否决。
docs/superpowers/plans/specs/phase66-tongkuan-haizi-spec-v0.1.md:180 原文:
「借 myopia88
eyeAxisPredict当基线 —— 已否决:它是预测模型且算法依据不公开,不是实测数据」
→ JAMA 这条路线恰恰补的就是当初否决第三方的那个理由:算法公开、来源可引用、自主可控。
② 🔴 长官 8-28 已经否决过「外推」。
趋势图指标卡曾有「预计年增长外推值」,8-28 长官拍板下线,理由:365 / days 系数会把短间隔测量误差放大成假大数字。
→ 这条直接决定预测算法怎么选:绝不能用线性年化外推。
→ 而百分位轨道法恰好治的就是这个病 —— 百分位是相对位置,两次测量间隔短时,百分位几乎不动,误差不会被年化系数放大。这是把功能重新提上桌的正当理由,也是给长官的正面回答。
③ Phase 编号:核心仓最大已用 79(导演台,9-10 立项🔄);结算域另占 76(大会签约链接)、78(平台手机端机构管理,9-08 已实装)。
→ 下一个可用编号是 80。(注:首轮调研说「下一个可用 78」是错的,已纠正)
没有数值参数,整个功能一行代码都写不了。 图片上的曲线反读不可靠(高龄高百分位段线条密集)。
proxy refused the connection),逐条重试均失败pmc.ncbi.nlm.nih.gov / jamanetwork.com 加进云机出网白名单检索到多篇专门针对中国儿童、且标题就承诺给 LMS 参数的开放获取研究:
| 研究 | 人群 | 出处 |
|---|---|---|
| 武汉学龄儿童眼轴 LMS 曲线 | 4–18 岁武汉学龄儿童 | LMS parameters, percentile, and Z-score growth curves for axial length in Chinese schoolchildren in Wuhan, Scientific Reports, s41598-022-08907-5 |
| 全国多中心 50 万+ 儿童生物测量预测 | 3–18 岁 | PMC12040641 |
| 安阳儿童眼病研究「矫正百分位曲线追踪近视化」 | 中国儿童 | Ophthalmic Physiol Opt, s44402-026-00038-y |
| 台湾学龄儿童眼轴常模 | 台湾学龄儿童 | PMC12357227 |
建议:JAMA 那篇的「东亚」是多国汇总(中国大陆/香港/日本/新加坡),不是中国大陆专用曲线。
工程上更稳的组合是:用武汉/安阳的中国 LMS 做主参考系(算 Z 分数),用 JAMA 全球曲线做对标与传播素材(「东亚 P50 ≈ 欧澳 P85」这种话极有传播力,适合放家长端科普和门店话术)。
若 A、B 都拿不到,退而求其次:用文中给出的少数锚点(7 岁 / 18 岁 P50 等)+ 5 档百分位做粗插值。
不推荐 —— 精度不足、无法自证,违反本项目「无证据不下结论」的铁律。
核心原则:科学强度越弱的层,话说得越轻,越靠后上。
Child's Current Centile 在做的事不做「4L 合并一条曲线」。改做「单项手段的文献情景」:
新建干预时间线表(如 intervention_records):patient_id / 手段(L1-L4 枚举) / 具体产品 / 开始日期 / 结束日期 / 依从性。
有了它,半年后就能做真实的「开始红光前 vs 后,这孩子自己的眼轴斜率变化」—— 那才是我们相对所有同行独有的东西(我们有连续档案数据,而文献只有人群平均)。
| # | 事项 | 为什么没核实 |
|---|---|---|
| 1 | JAMA 补充材料里到底有没有 LMS eTable | 云机 WebFetch 连 PMC/JAMA 被代理拒绝(proxy refused the connection),多次重试失败。这是 go/no-go 的关键未知项 |
| 2 | 论文是否提供在线计算器 / GitHub / Zenodo 数据仓库 | 专项检索 data sharing / code availability 均无返回 |
| 3 | 论文原文是否讨论「中国大陆 vs 其余东亚」的系统性差异 | 全文打不开 |
| 4 | JAMA 同期社论(PubMed 42461655)具体批评内容 | 全文打不开,只确认其存在 |
| 5 | 同仁远像屏 RCT 中「远像屏单独组」的独立数字 | 全文打不开;检索到的数字疑似红光组 |
| 6 | 联合疗法「叠加/打折」的定量系数 | 文献自述 largely unknown,在研 RCT 未出结果 |
| 7 | 阿托品/光学干预停用反弹的统一系数 | 证据本身分歧(高浓度明显 vs CHAMP 称可忽略) |
| 8 | SELECT DISTINCT gender FROM patients 实测值 |
调研子代理无 sudo db-query 权限;当前结论由 schema Literal["男","女"] + 种子数据 + 注释三重印证,未做数据库实测 |
| 9 | 各百分位曲线在 6 岁以下 / 21 岁以上的表现 | 论文覆盖 6–21 岁,超范围不可外推 |
| # | 决策 | 选项 | 我的建议 |
|---|---|---|---|
| D1 | LMS 参数怎么拿(卡点,不定这个没法动工) | A 长官下载 JAMA 补充材料 / B 放行云机白名单 / C 改用武汉中国 LMS | A+B 并行,同时按 B 备好武汉 LMS |
| D2 | 主参考系用哪套曲线 | JAMA 东亚 / 中国大陆本土(武汉·安阳) / 两套并存 | 中国本土做主算,JAMA 做对标与传播 |
| D3 | 功能叫什么 | 「眼轴预测」/「眼轴百分位」/「眼轴生长轨道」 | 不叫预测(论文红线)。建议「眼轴生长轨道」 |
| D4 | 上到第几层 | 只 L0+L1 / 到 L2 / 到 L3 | 先 L0+L1 上线拿反馈,L2/L3 二期 |
| D5 | L3 干预模拟做不做、怎么标 | 不做 / 做但标文献模拟 / 做成个体预测 | 做但严格标注,且不做 4L 叠加 |
| D6 | 补不补干预时间线表 | 补 / 不补 | 补。不补则「干预前后对比」永远只能是模拟 |
| D7 | 家长端尺度 | 与门店端同 / 软化 / 家长端不上百分位 | 软化,严禁诊断词与恐吓话术 |
| D8 | 立项编号 | — | Phase 80(79 已被导演台占) |
9-06 立项的近视预测走的是第三方 store.myopia88.com/eyeAxisPredict,当时挂着等对方回 RSA 公钥、计费等细节;后在 Phase66 spec 中被否决(算法不公开)。
本方案是它的替代路线,且更优:
| 维度 | 第三方 myopia88 | JAMA / 中国 LMS 自建 |
|---|---|---|
| 算法透明 | ❌ 不公开(Phase66 否决理由) | ✅ 同行评议论文,可引用 |
| 依赖外部可用性 | ❌ 每次检查都要调接口 | ✅ 本地计算,零外部依赖 |
| 计费 | ❌ 未知 | ✅ 无 |
| 数据出境 | ⚠️ 孩子生物测量值传第三方 | ✅ 不出本系统 |
| 对家长的说服力 | 「某公司算的」 | 「JAMA 顶刊 14.7 万儿童数据」 |
| 落地成本 | 低(调接口) | 中(要拿参数表 + 自己实现) |
9-06 已拍板、本方案继续沿用的几条:门店端 + 家长端都做;家长端另设计措辞不吓人;不分 L 分权重;把我们自己档案的实测眼轴点叠在参考曲线上(这就是我们独有的价值);每条记录算一次并存下来,不重复算。
调研方法:PDF 由 pymupdf 提取并 7 页逐页视觉核对;代码结论在最新 origin/test 基线用 git grep 复核(0 命中项均带对照组自证);文献结论由 WebSearch 检索,凡未能打开全文核实的已单列第九节。