-- 宿主跟进闸:宿主侧正在跟进的患者不进召回池(patient_profiles.host_follow_up_active)
--
-- 【要解决什么】宿主自己已建复杂病例 / 工单、客服或咨询师在推进的患者,PAC 不该再发起召回 ——
--   两边同时联系同一个人,患者体验差,也显得两个系统各说各话。
--
-- 【为什么可空,且没有 DEFAULT false】这是本次最关键的一个决定:
--   NULL = **宿主未提供该信号**(如 jvs-dw 尚未接入),此时不启用该闸;
--   false = **宿主明确说"没在跟"**。两者语义不同,不能合并。
--   若给 DEFAULT false,存量 38 万患者会被一次性断言成"宿主确认没在跟",
--   等于替宿主表了态;将来真接入时也分不出"没接"和"接了但没跟"。
--   ⚠️ 由此,所有查询必须写 `IS NOT TRUE` 而**不是** `= false` ——
--     后者因 NULL != false 恒为 UNKNOWN,会把未接入宿主的患者全部挡在召回池外(静默清空池子)。
--
-- 【为什么落副表而非 patients】patient_profiles 本就装派生 / 摄入属性(合规标记、获客渠道、
--   到诊派生);patients 是主数据。且召回硬过滤本来就 join 副表,不多一次连接。
--
-- 【索引】召回入池 SQL 每次都过这个条件,与 do_not_contact / deceased 同规格建索引。
--   加可空列不重写表(PG11+ 元数据操作),存量行自动为 NULL,行为不变 —— 该闸对未接入宿主静默无效。
ALTER TABLE "patient_profiles"
  ADD COLUMN IF NOT EXISTS "host_follow_up_active" BOOLEAN;

CREATE INDEX IF NOT EXISTS "patient_profiles_host_follow_up_active_idx"
  ON "patient_profiles" ("host_follow_up_active");
