# patient — 主档 upsert(不进 transaction,无 emits)
# 源:customer.customer_basic_info;contacts_tel / relationship 由宿主导出时挑默认号 inline 进主档
#     (不再 PAC 侧 lookup customer_contacts),故这里直接映射标量。
canonical: patient

primary:
  table: customer_basic_info
  key: id

field_mapping:
  externalId:          id             # customer_basic_info 主键 = host 内部患者唯一 id(→ String 化)
  name:                name
  phone:               contacts_tel   # 宿主 inline 的默认号(沿用 customer_contacts 原列名)
  # 该号关系码(lookup 同源带出)→ preferences.contactPhone{relationshipCode, relationship, isSelf}。
  # 官方枚举(源码实锤 friday-saas/customer …/enums/PhoneRelationshipEnum.java,2026-07-20):
  #   1本人 2爸爸 3妈妈 4爷爷 5奶奶 6朋友 7配偶 8子女 9其他(语义=持号人是患者的X)
  phoneRelationshipCode: relationship
  phoneRelationship:     relationship         # 同源列解码成 PAC 关系词(下方 enum_mapping)
  gender:              sex            # tinyint 1/2 → enum_mapping 归一;0/空 → 空
  birthDate:           birthday       # date;空值入库为 null
  medicalRecordNumber: file_number    # 档案号(病历号,客服沟通用)
  # 宿主跟进闸(2026-07-30 新增)—— 宿主自己正在跟进的患者不进召回池。
  # 宿主 inline:该患者名下**未删除**(complex_case_info.is_del = 1)且 case_stage ∈
  #   {待跟进, 已咨询, 已预约, 诊疗中} 的复杂病例是否存在(布尔,不要条数)。
  #   已成单(需求已闭环)/ 暂停跟进(宿主已停手)不计 —— 交还 PAC 召回。
  # ⚠️ is_del 的取值方向查过源库坐实:该表注释「未删除1/已删除0」是**对的**(反直觉但确实如此),
  #   旁证:同注释的 complex_potential_demand 7 行全为 1(全存活,且被 30 行明细引用);
  #   complex_case_info 47:8 ≈ 85% 存活是正常比例,反过来不是。
  #   ⚠️ 该库**同时存在两种相反惯例**(customer_gift 是「未删除0/已删除1」)→ 取数必须逐表看注释,不能套惯例。
  # 宿主未推该列 → canonical 无此键 → 副表不写(保持 null = 信号未提供 → 不启用闸),行为与接入前一致。
  hostFollowUpActive:  has_active_complex_case
  createdAt:           created_gmt_at
  updatedAt:           updated_gmt_at
  # source_unit(品牌)由 manifest.identity_namespace_field=brand_id 填,不在此声明。
  # organization_id / status / 获客渠道 等首版不接,后续资源(encounter/settlement)接入再补。

# 性别:host tinyint → PAC gender(自由文本,前端 formatGender 认 male/female)
enum_mapping:
  gender:
    '1':      male
    '2':      female
    _default: ''      # 0 / 空 / 未知 → 空(gender 可空,不阻挡入库)
  # 默认联系号关系(PhoneRelationshipEnum 官方码 → PAC 关系词;语义=持号人是患者的X)
  phoneRelationship:
    '1':      self
    '2':      father
    '3':      mother
    '4':      grandparent
    '5':      grandparent
    '6':      friend
    '7':      spouse
    '8':      child
    '9':      other
    _default: ''      # 空/未知码 → 空(preferences 里只留原码)
