from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable


class ComDr(UltmarcTable):
    """レイアウト区分501: COM_医師"""
    dcfdr_id: str		        # 個人ｺｰﾄﾞ（ﾚｺｰﾄﾞID）
    dcfdr_code: str		        # 個人ｺｰﾄﾞ（個人ｺｰﾄﾞ）
    dcfd_yobi: str		        # 個人ｺｰﾄﾞ（予備）
    maint_flag: str		        # 修正区分
    maint_date: str		        # ﾒﾝﾃﾅﾝｽ年月日
    trn_date: str		        # 予備/転送年月日
    drdel_code: str		        # 削除予定理由
    reptdr_id: str		        # 重複時相手先ｺｰﾄﾞ（ﾚｺｰﾄﾞID）
    reptdr_code: str		    # 重複時相手先ｺｰﾄﾞ（個人ｺｰﾄﾞ）
    reptdr_yobi: str		    # 重複時相手先ｺｰﾄﾞ（予備）
    dr_name: str		        # 医師名(漢字)
    dr_name_kana: str		    # 医師名(ｶﾅ)
    sex_code: str		        # 性別
    birthday_era: str		    # 生年月日（元号）
    birthday_year: str		    # 生年月日（年）
    birthday_month: str		    # 生年月日（月）
    birthday_day: str		    # 生年月日（日）
    home_town_code: str		    # 出身都道府県ｺｰﾄﾞ
    medassoci_code: str		    # 医師会ｺｰﾄﾞ
    grad_yearera: str		    # 卒年_元号
    grad_year: str		        # 卒年_年
    graduniv_code: str		    # 出身校ｺｰﾄﾞ
    graduniv_dept_code: str		# 出身校学部識別ｺｰﾄﾞ
    drda_yera: str		        # 登録年_元号
    drday_year: str		        # 登録年_年
    medsbj_code1: str		    # 診療科目1
    medsbj_code2: str		    # 診療科目2
    medsbj_code3: str		    # 診療科目3
    medsbj_code4: str		    # 診療科目4
    medsbj_code5: str		    # 診療科目5
    dr_addr_lost_code: str		# 住所不明
    pref_code: str		        # 住所ｺｰﾄﾞ(県ｺｰﾄﾞ)
    city_code: str		        # 住所ｺｰﾄﾞ(市区町村ｺｰﾄﾞ)
    addr_code1: str		        # 住所ｺｰﾄﾞ(大字･通称ｺｰﾄﾞ)
    addr_code2: str		        # 住所ｺｰﾄﾞ(字･丁目ｺｰﾄﾞ)
    dr_zip_code: str		    # 郵便番号
    dr_addr: str		        # 自宅住所(漢字)
    dr_addr_kana: str		    # 自宅住所(ｶﾅ)
    dr_addr_num: str		    # 住所表示番号
    dr_addr_kanj_cnt1: str		# 住所ｶｳﾝﾄ_漢字（県）
    dr_addr_kanj_cnt2: str		# 住所ｶｳﾝﾄ_漢字（市区町村）
    dr_addr_kanj_cnt3: str		# 住所ｶｳﾝﾄ_漢字（大字･通称）
    dr_addr_kanj_cnt4: str		# 住所ｶｳﾝﾄ_漢字（字･丁目）
    dr_addr_kana_cnt1: str		# 住所ｶｳﾝﾄ_ｶﾅ（県）
    dr_addr_kana_cnt2: str		# 住所ｶｳﾝﾄ_ｶﾅ（市区町村）
    dr_addr_kana_cnt3: str		# 住所ｶｳﾝﾄ_ｶﾅ（大字･通称）
    dr_addr_kana_cnt4: str		# 住所ｶｳﾝﾄ_ｶﾅ（字･丁目）
    dr_tel: str		            # 自宅電話番号
    use_stop_flag: str		    # 利用停止区分
    use_stopc_ode: str		    # 利用停止理由
    cre_stop_date: str		    # 利用停止登録年月日
    release_date: str		    # 利用停止解除年月日
    pract_class_code: str		# 開勤区分
    pract_yearera: str		    # 開業年（元号）
    pract_year: str		        # 開業年（年）
    bskregst_flag: str		    # 一括登録ﾌﾗｸﾞ

    dcf_pcf_dr_cd: str 			# DCFPCF医師コード
    addr_village_cd: str        # 住所（町字）コード
    addr_cnt_kana: str          # 住所カウントカナ
    addr_cnt: str               # 住所カウント
    opp_dup_code: str           # 相手先重複コード

    birth_day: str              # 生年月日（西暦）
    estab_y: str                # 開業年（西暦）
    grad_y: str                 # 卒業年（西暦）
    drday_y: str                # 登録年（西暦）

    era_cd: str                 # 元号コード

    # 住所（集合項目)
    address_aggregation_items: list

    # 診療科目（集合項目)
    medsbj_code_items: list

    def __init__(self, record: list[str]):
        super().__init__(record)
        self.dcfdr_id = record[1]
        self.dcfdr_code = record[2]
        self.dcfd_yobi = record[3].strip()
        self.maint_flag = record[4]
        self.maint_date = record[5]
        self.trn_date = record[6]
        self.drdel_code = record[7].strip()
        self.reptdr_id = record[8].strip()
        self.reptdr_code = record[9].strip()
        self.reptdr_yobi = record[10].strip()
        self.dr_name = record[11].strip()
        self.dr_name_kana = record[12].strip()
        self.sex_code = record[13].strip()
        self.birthday_era = record[14].strip()
        self.birthday_year = record[15].strip()
        self.birthday_month = record[16].strip()
        self.birthday_day = record[17].strip()
        self.home_town_code = record[18].strip()
        self.medassoci_code = record[19].strip()
        self.grad_yearera = record[20].strip()
        self.grad_year = record[21].strip()
        self.graduniv_code = record[22].strip()
        self.graduniv_dept_code = record[23].strip()
        self.drda_yera = record[24].strip()
        self.drday_year = record[25].strip()
        self.medsbj_code1 = record[26].strip()
        self.medsbj_code2 = record[27].strip()
        self.medsbj_code3 = record[28].strip()
        self.medsbj_code4 = record[29].strip()
        self.medsbj_code5 = record[30].strip()
        self.dr_addr_lost_code = record[31].strip()
        self.pref_code = record[32].strip()
        self.city_code = record[33].strip()
        self.addr_code1 = record[34].strip()
        self.addr_code2 = record[35].strip()
        self.dr_zip_code = record[36].strip()
        self.dr_addr = record[37].strip()
        self.dr_addr_kana = record[38].strip()
        self.dr_addr_num = record[39]
        self.dr_addr_kanj_cnt1 = record[40]
        self.dr_addr_kanj_cnt2 = record[41]
        self.dr_addr_kanj_cnt3 = record[42]
        self.dr_addr_kanj_cnt4 = record[43]
        self.dr_addr_kana_cnt1 = record[44]
        self.dr_addr_kana_cnt2 = record[45]
        self.dr_addr_kana_cnt3 = record[46]
        self.dr_addr_kana_cnt4 = record[47]
        self.dr_tel = record[48].strip()
        self.use_stop_flag = record[49].strip()
        self.use_stopc_ode = record[50].strip()
        self.cre_stop_date = record[51].strip()
        self.release_date = record[52].strip()
        self.pract_class_code = record[53].strip()
        self.pract_yearera = record[54].strip()
        self.pract_year = record[55].strip()
        self.bskregst_flag = record[56].strip()

        # DCFPCF医師コード
        self.dcf_pcf_dr_cd = ''.join([self.dcfdr_id, self.dcfdr_code, self.dcfd_yobi])
        # 住所（町字）コード
        self.addr_village_cd = ''.join([self.pref_code, self.city_code, self.addr_code1, self.addr_code2])
        # 住所カウントカナ
        self.addr_cnt_kana = ''.join([self.dr_addr_kana_cnt1, self.dr_addr_kana_cnt2, self.dr_addr_kana_cnt3, self.dr_addr_kana_cnt4])
        # 住所カウント
        self.addr_cnt = ''.join([self.dr_addr_kanj_cnt1, self.dr_addr_kanj_cnt2, self.dr_addr_kanj_cnt3, self.dr_addr_kanj_cnt4])
        # 相手先重複コード
        self.opp_dup_code = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi])

        self.birth_day = ''      # 生年月日（西暦）
        self.estab_y = ''        # 開業年（西暦）
        self.grad_y = ''         # 卒業年（西暦）
        self.drday_y = ''        # 登録年（西暦）
        self.era_cd = ''         # 元号コード

        # 住所（集合項目)
        self.address_aggregation_items = [
            self.pref_code,
            self.city_code,
            self.addr_code1,
            self.addr_code2,
            self.dr_zip_code,
            self.dr_addr_kana,
            self.dr_addr_num,
            self.dr_addr_kanj_cnt1,
            self.dr_addr_kanj_cnt2,
            self.dr_addr_kanj_cnt3,
            self.dr_addr_kanj_cnt4,
            self.dr_addr_kana_cnt1,
            self.dr_addr_kana_cnt2,
            self.dr_addr_kana_cnt3,
            self.dr_addr_kana_cnt4
        ]

        # 診療科目（集合項目)
        self.medsbj_code_items = [
            self.medsbj_code1,
            self.medsbj_code2,
            self.medsbj_code3,
            self.medsbj_code4,
            self.medsbj_code5]
