# patient — 主档 upsert(不进 transaction,无 emits)
# 源:customer.customer_basic_info(原始表);phone 由 manifest.transforms.lookup
#     从 customer_contacts 挑默认号附加进来,故这里直接映射标量 phone。
canonical: patient

primary:
  table: customer_basic_info
  key: id

field_mapping:
  externalId:          id             # customer_basic_info 主键 = host 内部患者唯一 id(→ String 化)
  name:                name
  phone:               phone          # 由 transforms.lookup 从 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: phone_relationship
  phoneRelationship:     phone_relationship   # 同源列解码成 PAC 关系词(下方 enum_mapping)
  gender:              sex            # tinyint 1/2 → enum_mapping 归一;0/空 → 空
  birthDate:           birthday       # date;空值入库为 null
  medicalRecordNumber: file_number    # 档案号(病历号,客服沟通用)
  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 里只留原码)
