交付出件箱

← 返回出件箱

眼轴百分位预测功能 · 可行性深度调研

调研日期:2026-09-15
触发:长官上传《眼科顶刊JAMA O发布全球儿童青少年眼轴百分位参考图表_学文推荐.pdf》,问「能否据此做眼轴预测功能,并与 4L 干预结合(不干预什么样 / 用 4L 后什么样)」
本文所有事实均带出处;凡未物理核实的,单列在第九节「未核实清单」,不得当作结论使用


一、一句话结论

能做,而且应该做 —— 但必须改掉两件事:功能不能叫「预测」,干预对比不能画成「两条命运曲线」。

按论文原本用途做「眼轴百分位定位 + 生长轨道追踪」,科学上完全站得住,国际同行(Ocumetra / BHVI / 蔡司)已在做同款;
但长官想要的「不干预 vs 4L 干预」双曲线,当前既缺科学依据、也缺系统数据,只能做成标注清楚的「文献情景模拟」,不能做成对个体孩子的承诺。

唯一的 go / no-go 卡点:拿不到百分位曲线的数值参数(LMS 表),整个功能一行代码都写不了。详见第七节。


二、材料真相 —— 这份 PDF 不是论文

项 事实 证据
文件性质 微信公众号二次解读稿,不是论文原文 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。


四、科学边界 —— 本次调研最重要的发现

4.1 论文自己划的红线

公众号稿转述原文(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)。

4.2 🔴 论文原作者自己发文警告「别拿它评估干预效果」

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 那篇论文高度重合 —— 是原作者自己写的)

核心论点,逐条都正中我们要做的功能:

  1. 百分位曲线不能准确代表近视眼的生长
  2. 不是监测近视进展 / 治疗效果的最佳工具
  3. 不能准确代表已发生近视儿童的生长
  4. 不是预测近视发病的最佳方式
  5. 根本原因:曲线把近视眼和正视眼混在一起统计 → 低估真实近视眼的生长速率 → 进而低估干预效果
  6. 特别提到:中国来源曲线只有在「年龄较大 + 最高百分位段」才较接近真实近视眼生长,其余情况仍会低估

同期另有原作者回应文(Bullimore 2026, e70035),以及 JAMA 同期社论《Axial Length and the Future of Myopia Risk Stratification》(PubMed 42461655)。两篇均未能打开全文核实,列入第九节。

4.3 这对产品设计的直接含义

想做的事 能不能用百分位曲线 理由
「你孩子眼轴在同龄同性别东亚儿童里排第 X 位」 ✅ 可以 论文正当用途
「百分位从 P65 漂到 P80 = 长得比同龄人快」 ✅ 可以(儿科生长曲线标准用法) 相对位置比绝对 mm 更抗误差
「若保持当前轨道,18 岁预计 X mm」 ⚠️ 可以,但必须标注「若保持当前轨道」 是轨道外推,不是个体预测
「用 4L 干预后曲线会变成这样」 ❌ 不能直接用 原作者点名:低估近视眼生长、低估干预效果
「靠百分位没上漂 → 证明我们防控有效」 ❌ 危险 会给已近视孩子虚假安心

对 4.3 最后一条的解法(建议写进方案):
对已经近视的孩子,不能只看百分位,必须双轨判断 —— 百分位轨道 + 绝对年增长速率。
好消息是绝对速率的阈值我们代码里已经有了:four_l_summary_prompt.py 的禁语/知识层已注入「眼轴年增 > 0.3 mm 即超速」和「秋冬 9–1 月眼轴月增 0.04 mm 为高峰期」。两条轨道一起看,才不会被百分位的系统性低估骗过去。


五、干预效果量 —— 4L 四项证据强度极不均衡

5.1 单手段 RCT / Meta 数字(可引用)

手段 对照组眼轴增长 干预组 差值(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

5.2 🔴 L2 补光 和 L3 远像屏 是证据短板

5.3 长官 9-06 挂的那个问题,有答案了 —— 答案是「文献上没有答案」

长官原问:「在『不防控』和『全套 4L 防控』的眼轴增长差距里,红光、补光、远像、离焦镜各能占几成?叠加要不要打折?」

检索结论:目前没有可引用的定量证据。

→ 所以「4L 分权重模拟」现在硬做,就是编系数。建议维持长官 9-06 的原判:不做分权重。

5.4 效果随时间衰减 / 停用反弹(若要画多年曲线必须处理)


六、我们系统的现状与缺口(已在最新 origin/test 基线复核)

⚠️ 首轮调研是在落后 origin/test 1227 个 commit 的 worktree 上做的,已派二轮在最新基线用 git grep origin/test 复核。以下为复核后结论。

6.1 ✅ 已具备(比预期好)

能力 物理位置 说明
眼轴数据 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)+ 渐变面积 + 末点数值气泡

百分位定位所需的三个输入(眼轴 / 精确年龄 / 性别)—— 系统全都有。这是最关键的可行性前提,已满足。

6.2 ❌ 缺口

# 缺口 影响
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 人 自建人群基线不可能,必须用外部曲线

6.3 两条必须知道的历史

① 第三方 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」是错的,已纠正)


七、🔴 go / no-go 卡点:LMS 参数怎么拿

没有数值参数,整个功能一行代码都写不了。 图片上的曲线反读不可靠(高龄高百分位段线条密集)。

方案 A:拿 JAMA 原文补充材料(首选)

方案 B:改用中国儿童 LMS 曲线(很可能更合适)

检索到多篇专门针对中国儿童、且标题就承诺给 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」这种话极有传播力,适合放家长端科普和门店话术)。

方案 C:降级 —— 只做 5 档锚点插值

若 A、B 都拿不到,退而求其次:用文中给出的少数锚点(7 岁 / 18 岁 P50 等)+ 5 档百分位做粗插值。
不推荐 —— 精度不足、无法自证,违反本项目「无证据不下结论」的铁律。


八、建议方案:四层功能,按证据强度分层上线

核心原则:科学强度越弱的层,话说得越轻,越靠后上。

L0 · 眼轴百分位定位(证据 A · 建议先做)

L1 · 百分位轨道追踪(证据 A · 与 L0 同期)

L2 · 轨道外推(证据 B · 需长官拍板措辞)

L3 · 干预情景模拟(证据 C · 最后做,且必须降级表达)

不做「4L 合并一条曲线」。改做「单项手段的文献情景」:

前置工程(不做这个,L3 永远只能是模拟)

新建干预时间线表(如 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 立项的关系

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 检索,凡未能打开全文核实的已单列第九节。