fix(摄入): 影像 AI 的诊所取自这张片自己那次病历,⛔ 不再"借"患者别处的诊所
`image_finding_rows` 原来用 `any(organization_id)` 按**患者**取诊所:随便挑该患者的 一条病历,把那家诊所贴到片子上。两个毛病: ① `any()` 语义就是「随便挑一条」—— 患者跨诊所时挑中哪家是任意的,重跑还会变; ② 挑的维度根本不对 —— 要回答的是「**这张片在哪拍的**」,却按「这个人在哪看过」作答。 影像表自己没有诊所列(19 个列全查过),但**有 `emr_id` 且 100% 有值**,指向这张片所属的 那次病历 —— 真来源一直就在手边。 ⇒ 改成按 `ia.emr_id` 精确 join 那条病历取 `organization_id`,并加 `e.patient_id = c.patient_id` (片子的病历必须属于同一个患者)。📊 全量实测(2026-08-16,测试服连的是真 DW): · 两版都能算出诊所的 160,436 行里,**24,849 行(15.5%)现在挂错**,牵涉 21,149 个患者。 · 改后只少 879 行(0.5%)—— 那些片子挂着一个**在病历表里不存在**的 emr_id。🔴 少掉的那些是**故意不要**的(产品定):取不到诊所 → `transaction-synthesizer` 按 「clinic 是立柱必填」跳过 → 不摄入。⛔ 宁可不要,也不拿别的诊所顶上去装作知道。🔍 抓到这条的现场:测试服上海世纪公园池子里三个"算不出档位"的患者,病历号前缀是 **CQ / GZ**(重庆 / 广州),被贴成了上海 —— 而那家诊所在池患者 99.3% 是 SH 开头。 顺着查:他们片子的 emr_id 在病历表里查不到,当年借来的那个诊所**今天也借不到了** (`po.org` 现在返回 NULL)⇒ 那三条事实的诊所是个**无法复现、无法验证**的值。⚠ ️ `GROUP BY` 里 `patient_id` 必须留着:cohort 注入是插到**首个 GROUP BY 前**的, 改成只按 id 分组会让注入落空 → 每批全表扫 + 串批,而且不报错。 已按 `injectCohortFilter` 的真实行为(已有 WHERE 时追加 `AND`)在 DW 上验过注入后可执行。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Found errors in your .gitlab-ci.yml:
- jobs:openapi-drift config contains unknown keys: rules
| Status | Job ID | Name | Coverage |
|---|