From b000c55b66fc57bd1d61ff9d8f84107eeae7352c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 26 Apr 2023 13:29:38 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ultmarc/utmp_tables/tables/com_dr.py | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py new file mode 100644 index 00000000..a9d148e3 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -0,0 +1,142 @@ +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 # 医師名(カナ) + sexc_ode: 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 # 登録年(西暦) + + 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.sexc_ode = 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.dcf_pcf_dr_cd = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) From ee85f61e1d2d761d1002d2b6b355afd6a9465281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 27 Apr 2023 19:01:19 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_dr_mapper.py | 536 ++++++++++++++++++ .../ultmarc/utmp_tables/tables/com_dr.py | 10 +- .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_dr/__init__.py | 0 .../table_mapper/com_dr/com_dr_delete.csv | 6 + .../table_mapper/com_dr/com_dr_insert.csv | 6 + .../table_mapper/com_dr/com_dr_update.csv | 7 + .../com_dr/db_com_dr_before_delete.csv | 8 + .../com_dr/db_com_dr_before_update.csv | 9 + .../db_com_dr_trt_course_before_delete.csv | 15 + .../db_com_dr_trt_course_before_insert.csv | 2 + .../db_com_dr_trt_course_before_update.csv | 15 + .../com_dr/expect_com_dr_delete.csv | 7 + .../com_dr/expect_com_dr_insert.csv | 7 + .../expect_com_dr_trt_course_delete.csv | 15 + .../expect_com_dr_trt_course_insert.csv | 25 + .../expect_com_dr_trt_course_update.csv | 14 + .../com_dr/expect_com_dr_update.csv | 9 + .../table_mapper/com_dr/test_com_dr_mapper.py | 327 +++++++++++ 19 files changed, 1020 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py new file mode 100644 index 00000000..f8317533 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py @@ -0,0 +1,536 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_dr import ComDr + + +class ComDrMapper(UltmarcTableMapper): + """レイアウト区分501: COM_医師 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr + ( + dcf_pcf_dr_cd, + dr_name_kana, + dr_name, + birthday_era, + birthday_year, + birthday_month, + birthday_day, + birthday, + hometown_cd, + estab_era, + estab_year, + estab_y, + home_phone_number, + home_addr_kana, + home_addr, + home_postal_number, + addr_village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + dr_circle_cd, + estab_div_cd, + sex_cd, + delete_sche_reason_cd, + addr_unknown_reason_cd, + alma_cd, + depart_disc_cd, + grad_era, + grad_year, + grad_y, + lump_regist_flg, + opp_dup_cd, + dr_ph_div, + use_stop_div, + use_stop_reason_cd, + use_stop_regist_ymd, + use_stop_cancel_ymd, + drday_era, + drday_year, + drday_y, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcf_pcf_dr_cd, + :dr_name_kana, + :dr_name, + :birthday_era, + :birthday_year, + :birthday_month, + :birthday_day, + :birth_day, + :home_town_code, + :pract_yearera, + :pract_year, + :estab_y, + :dr_tel, + :dr_addr_kana, + :dr_addr, + :dr_zip_code, + :addr_village_cd, + :pref_code, + :city_code, + :dr_addr_num, + :addr_cnt_kana, + :addr_cnt, + :medassoci_code, + :pract_class_code, + :sexc_ode, + :drdel_code, + :dr_addr_lost_code, + :graduniv_code, + :graduniv_dept_code, + :grad_yearera, + :grad_year, + :grad_y, + :bskregst_flag, + :opp_dup_code, + 1, + :use_stop_flag, + :use_stopc_ode, + :cre_stop_date, + :release_date, + :drda_yera, + :drday_year, + :drday_y, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_dr + SET + {update_columns} + dr_ph_div = 1, + abolish_ymd = NULL, + delete_flg = 0, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_dr + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 西暦取得SQL + YEAR_GET_QUERY = """\ + SELECT + year AS year + FROM + src05.com_era + WHERE + era_cd = :era_cd + """ + + # COM_医師診療科目の物理削除SQL + PHYSICAL_DELETE_QUERY_TRT = """\ + DELETE FROM + src05.com_dr_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # COM_医師診療科目の登録用SQL + INSERT_QUERY_TRT1 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code1, + :dcf_pcf_dr_cd, + 1, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT2 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code2, + :dcf_pcf_dr_cd, + 2, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT3 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code3, + :dcf_pcf_dr_cd, + 3, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT4 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code4, + :dcf_pcf_dr_cd, + 4, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT5 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code5, + :dcf_pcf_dr_cd, + 5, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComDr + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDr) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # 西暦の取得 + self.__year_get() + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + return + + # 存在する場合ではUpdate + update_columns = ','.join(self.__make_update_query()) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + self.queries.append(None) + return + else: + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + return + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 削除予定理由 + if len(self.record.drdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :drdel_code') + if self.record.drdel_code == '@': + self.query_parameter['drdel_code'] = '' + + # 重複時相手先コード + if len(self.record.opp_dup_code) > 0: + set_clauses.append('opp_dup_cd = :opp_dup_code') + if self.record.reptdr_id == '@': + self.query_parameter['opp_dup_code'] = '' + + # 医師名(漢字) + if len(self.record.dr_name) > 0: + set_clauses.append('dr_name = :dr_name') + + # 医師名(カナ) + if len(self.record.dr_name_kana) > 0: + set_clauses.append('dr_name_kana = :dr_name_kana') + + # 性別 + if len(self.record.sexc_ode) > 0: + set_clauses.append('sex_cd = :sexc_ode') + + # 生年月日 + if len(self.record.birthday_era + self.record.birthday_year + self.record.birthday_month + self.record.birthday_day) > 0: + set_clauses.append('birthday_era = :birthday_era') + set_clauses.append('birthday_year = :birthday_year') + set_clauses.append('birthday_month = :birthday_month') + set_clauses.append('birthday_day = :birthday_day') + set_clauses.append('birthday = :birth_day') + if self.record.birthday_era == '@': + self.query_parameter['birthday_era'] = '' + self.query_parameter['birthday_year'] = '' + self.query_parameter['birthday_month'] = '' + self.query_parameter['birthday_day'] = '' + self.query_parameter['birth_day'] = '' + + # 出身都道府県コード + if len(self.record.home_town_code) > 0: + set_clauses.append('hometown_cd = :home_town_code') + + # 医師会コード + if len(self.record.medassoci_code) > 0: + set_clauses.append('dr_circle_cd = :medassoci_code') + + # 卒年 + if len(self.record.grad_yearera + self.record.grad_year) > 0: + set_clauses.append('grad_year = :grad_year') + set_clauses.append('grad_era = :grad_yearera') + set_clauses.append('grad_y = :grad_y') + if self.record.grad_yearera == '@': + self.query_parameter['grad_yearera'] = '' + self.query_parameter['grad_year'] = '' + self.query_parameter['grad_y'] = '' + + # 出身校コード + if len(self.record.graduniv_code) > 0: + set_clauses.append('alma_cd = :graduniv_code') + + # 出身校学部識別コード + if len(self.record.graduniv_dept_code) > 0: + set_clauses.append('depart_disc_cd = :graduniv_dept_code') + + # 登録年 + if len(self.record.drda_yera + self.record.drday_year) > 0: + set_clauses.append('drday_era = :drda_yera') + set_clauses.append('drday_year = :drday_year') + set_clauses.append('drday_y = :drday_y') + if self.record.drda_yera == '@': + self.query_parameter['drda_yera'] = '' + self.query_parameter['drday_year'] = '' + self.query_parameter['drday_y'] = '' + + # 住所不明 + if len(self.record.dr_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :dr_addr_lost_code') + if self.record.dr_addr_lost_code == '@': + self.query_parameter['dr_addr_lost_code'] = '' + + # 住所 + if len(self.record.pref_code + self.record.city_code + self.record.addr_code1 + self.record.addr_code2 + + self.record.dr_zip_code + self.record.dr_addr + self.record.dr_addr_kana + self.record.dr_addr_num + + self.record.dr_addr_kanj_cnt1 + self.record.dr_addr_kanj_cnt2 + self.record.dr_addr_kanj_cnt3 + + self.record.dr_addr_kanj_cnt4 + self.record.dr_addr_kana_cnt1 + self.record.dr_addr_kana_cnt2 + + self.record.dr_addr_kana_cnt3 + self.record.dr_addr_kana_cnt4) > 0: + set_clauses.append('home_addr_kana = :dr_addr_kana') + set_clauses.append('home_addr = :dr_addr') + set_clauses.append('home_postal_number = :dr_zip_code') + set_clauses.append('addr_village_cd = :addr_village_cd') + set_clauses.append('prefc_cd = :pref_code') + set_clauses.append('city_cd = :city_code') + set_clauses.append('addr_display_number = :dr_addr_num') + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 自宅電話番号 + if len(self.record.dr_tel) > 0: + set_clauses.append('home_phone_number = :dr_tel') + if self.record.dr_tel == '@': + self.query_parameter['dr_tel'] = '' + + # 利用停止区分 + if len(self.record.use_stop_flag) > 0: + set_clauses.append('use_stop_div = :use_stop_flag') + if self.record.use_stop_flag == '@': + self.query_parameter['use_stop_flag'] = '' + + # 利用停止理由 + if len(self.record.use_stopc_ode) > 0: + set_clauses.append('use_stop_reason_cd = :use_stopc_ode') + if self.record.use_stopc_ode == '@': + self.query_parameter['use_stopc_ode'] = '' + + # 利用停止登録年月日 + if len(self.record.cre_stop_date) > 0: + set_clauses.append('use_stop_regist_ymd = :cre_stop_date') + if self.record.cre_stop_date == '@': + self.query_parameter['cre_stop_date'] = '' + + # 利用停止解除年月日 + if len(self.record.release_date) > 0: + set_clauses.append('use_stop_cancel_ymd = :release_date') + if self.record.release_date == '@': + self.query_parameter['release_date'] = '' + + # 開勤区分 + if len(self.record.pract_class_code) > 0: + set_clauses.append('estab_div_cd = :pract_class_code') + + # 開業年 + if len(self.record.pract_yearera + self.record.pract_year) > 0: + set_clauses.append('estab_era = :pract_yearera') + set_clauses.append('estab_year = :pract_year') + set_clauses.append('estab_y = :estab_y') + if self.record.pract_yearera == '@': + self.query_parameter['pract_yearera'] = '' + self.query_parameter['pract_year'] = '' + self.query_parameter['estab_y'] = '' + + # 一括登録フラグ + if len(self.record.bskregst_flag) > 0: + set_clauses.append('lump_regist_flg = :bskregst_flag') + + return set_clauses + + def __make_delete_insert_trt_query(self): + # 削除 + self.queries.append(self.PHYSICAL_DELETE_QUERY_TRT) + + # 登録 + if self.record.medsbj_code1 != '@': + if len(self.record.medsbj_code1) > 0: + self.queries.append(self.INSERT_QUERY_TRT1) + if len(self.record.medsbj_code2) > 0: + self.queries.append(self.INSERT_QUERY_TRT2) + if len(self.record.medsbj_code3) > 0: + self.queries.append(self.INSERT_QUERY_TRT3) + if len(self.record.medsbj_code4) > 0: + self.queries.append(self.INSERT_QUERY_TRT4) + if len(self.record.medsbj_code5) > 0: + self.queries.append(self.INSERT_QUERY_TRT5) + + return + + def __year_get(self): + # 西暦の取得 + + # 生年月日(西暦) + if self.record.birthday_era != "@" and len(self.record.birthday_era) > 0 and len(self.record.birthday_year) > 0: + self.query_parameter['era_cd'] = self.record.birthday_era + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + ans_year = int(record_year[0]['year']) + int(self.record.birthday_year) + self.query_parameter['birth_day'] = ''.join([str(ans_year), self.record.birthday_month, self.record.birthday_day]) + + # 開業年(西暦) + if self.record.pract_yearera != "@" and len(self.record.pract_yearera) > 0 and len(self.record.pract_year) > 0: + self.query_parameter['era_cd'] = self.record.pract_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['estab_y'] = str(int(record_year[0]['year']) + int(self.record.pract_year)) + + # 卒業年(西暦) + if self.record.grad_yearera != "@" and len(self.record.grad_yearera) > 0 and len(self.record.grad_year) > 0: + self.query_parameter['era_cd'] = self.record.grad_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['grad_y'] = str(int(record_year[0]['year']) + int(self.record.grad_year)) + + # 登録年(西暦) + if self.record.drda_yera != "@" and len(self.record.drda_yera) > 0 and len(self.record.drday_year) > 0: + self.query_parameter['era_cd'] = self.record.drda_yera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['drday_y'] = str(int(record_year[0]['year']) + int(self.record.drday_year)) + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py index a9d148e3..e621cb0e 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -71,6 +71,8 @@ class ComDr(UltmarcTable): grad_y: str # 卒業年(西暦) drday_y: str # 登録年(西暦) + era_cd: str # 元号コード + def __init__(self, record: list[str]): super().__init__(record) self.dcfdr_id = record[1] @@ -139,4 +141,10 @@ class ComDr(UltmarcTable): # 住所カウント 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.dcf_pcf_dr_cd = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) + 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 = '' # 元号コード diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py index b843c78d..c5cc977d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -26,6 +26,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_regn_critic_pass_ma ComRegnCriticPassMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_func_valuation_mapper import \ ComMedFuncValuationMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ + ComDrMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -39,7 +41,7 @@ COM_TABLE_LIST = { # COM_臨床研修病院 "112": NullMapper, # COM_医師 - "501": NullMapper, + "501": ComDrMapper, # COM_施設 "101": ComInstMapper, # COM_薬局 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv new file mode 100644 index 00000000..6b3b6b3c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv @@ -0,0 +1,6 @@ +"501","01","222222","33","C","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997906","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","995783","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","999613","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997682","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv new file mode 100644 index 00000000..cf50c90e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv @@ -0,0 +1,6 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","A","20141113","20141114","","","","","菅間 正気","カンマ セイキ","1","3","16","01","14","37","37","3","44","011","1","3","44","A01","C01","I01","K01","C04","","14","104","094","000","231-0862","神奈川県横浜市中区山手町126-1 クレスト山手306","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","126-1-306","04","05","03","00","08","10","07","00","045-625-2067","","","","","1","","","" +"501","01","995783","00","A","20141113","20141114","","","","","船越 正信","フナコシ マサノブ","1","3","29","01","06","53","55","3","53","039","1","3","53","A01","L01","E02","C04","L03","7","00","000","000","000","","","","","00","00","00","00","00","00","00","00","","02","A05","20051003","","2","","","" +"501","01","997682","00","A","20141113","20141114","","","","","川崎 三紀子","カワサキ ミキコ","2","3","46","10","03","99","99","4","11","057","1","4","11","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" +"501","01","997906","00","A","20141113","20141114","","","","","丘 守正","オカ モリマサ","1","3","20","03","11","99","31","3","45","799","1","","","A01","L01","A31","A21","A11","","08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110","","","","","1","4","03","" +"501","01","999613","00","A","20141113","20141114","5","01","481065","00","藤田 茜","フジタ アカネ","2","","","","","99","99","","","799","1","4","23","","","","","","6","00","000","000","000","","","","","00","00","00","00","00","00","00","00","","","","","","9","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv new file mode 100644 index 00000000..afdfb27c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -0,0 +1,7 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","99","999999","99","A","20230425","20230426","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","994301","00","B","20170911","20170912","","01","998099","00","","","2","","","","","","","","","022","2","","","@","","","","","","13","102","022","002","103-0013","東京都中央区日本橋人形町2-7-10-10","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","2-7-10-10","09","09","09","09","09","09","09","09","045-999-9999","03","B06","20160831","20161125","","","","1" +"501","01","995783","00","B","20170921","20170922","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4","04","" +"501","01","997682","00","B","20170922","20170923","","","","","横浜 三紀子","ヨコハマ ミキコ","2","4","3","11","12","99","99","3","52","057","1","3","10","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" +"501","01","997906","00","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" +"501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv new file mode 100644 index 00000000..f6baf695 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv new file mode 100644 index 00000000..ccb0cb0a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaaa" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126−1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1","","","011","1","3","44","1969","","NULL","1","","","","","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","","","NULL","","","","","00000000000","00","000","","00000000","00000000","55","2","1","","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","NULL","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv new file mode 100644 index 00000000..cf12270f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv new file mode 100644 index 00000000..f2497d92 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv @@ -0,0 +1,2 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv new file mode 100644 index 00000000..a9f320d5 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv new file mode 100644 index 00000000..94734929 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","20230425","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv new file mode 100644 index 00000000..bc0d5932 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","","045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126-1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1","","","011","1","3","44","1969","","","1","","","","","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","","","","","","","","00000000000","00","000","","00000000","00000000","55","2","1","","7","039","1","3","53","1978","","","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","","","","","","99","","","","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv new file mode 100644 index 00000000..900ee683 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv new file mode 100644 index 00000000..06ef8f21 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv @@ -0,0 +1,25 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199430100","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A11","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A21","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A31","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C01","0199430100","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199430100","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I01","0199430100","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K01","0199430100","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L01","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" + + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv new file mode 100644 index 00000000..b62bbbca --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv @@ -0,0 +1,14 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv new file mode 100644 index 00000000..0101a49a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2-7-10-10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","0199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","","","","","","99","","","","","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","","","","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2-8-30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","","","799","1","","","NULL","","0148106500","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py new file mode 100644 index 00000000..b9a5b703 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -0,0 +1,327 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_dr_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComDrMapper: + """レイアウト区分501: COM_医師""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + # self.db.begin() + + # testing + yield + + # teardown + # self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医師テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_insert.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医師テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_update.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医師テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_delete.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_delete.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From f09f54ed6f62c705544d64382a37d54959b667d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 1 May 2023 09:04:38 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv | 1 + .../table_mapper/com_dr/db_com_dr_before_update.csv | 1 + .../utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv | 2 +- .../utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py | 4 ++-- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv index afdfb27c..1fb79e85 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -5,3 +5,4 @@ "501","01","997682","00","B","20170922","20170923","","","","","横浜 三紀子","ヨコハマ ミキコ","2","4","3","11","12","99","99","3","52","057","1","3","10","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" "501","01","997906","00","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" "501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" +"501","99","999999","90","B","20230425","20230426","@","@","9","10","11","12","1","@","15","06","17","18","19","@","21","022","3","@","25","@","C27","I28","K29","L30","@","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","@","@","@","@","@","3","@","55","6" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv index ccb0cb0a..0a6ea96a 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -6,4 +6,5 @@ "0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","NULL","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"9999999990","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv index 0101a49a..882e4c9e 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv @@ -5,5 +5,5 @@ "0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" "0199790600","オカ モリマサ","丘 守正","","","","","","99","","","","","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","","","","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" "0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2-8-30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","","","799","1","","","NULL","","0148106500","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"9999999990","12","11","","","","","","18","","","","","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","","","022","3","","","","6","","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" "9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py index b9a5b703..9872cd6b 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -28,13 +28,13 @@ class TestComDrMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From 054040cdfc96eca8a6ed484c5502a85aafed319d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 1 May 2023 16:30:43 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E4=BD=9C=E6=A5=AD=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_inst_mapper.py | 536 +++++++++++++++++- .../ultmarc/utmp_tables/tables/com_inst.py | 200 +++++++ 2 files changed, 734 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index 6a34c446..e989677d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -1,9 +1,541 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst +import datetime class ComInstMapper(UltmarcTableMapper): - """COM_施設 登録処理: TODO""" + """レイアウト区分101: COM_施設 登録処理: TODO""" + + # レコード存在確認SQL(COM_施設) + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設) + INSERT_INST_QUERY = """\ + INSERT INTO src05.com_inst + ( + dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + rltd_univ_prnt_cd, + bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + ward_abolish_flg, + inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + hp_assrt_cd, + dup_opp_cd, + insp_item_micrb, + insp_item_serum, + insp_item_blood, + insp_item_patho, + insp_item_paras, + insp_item_biochem, + insp_item_ri, + re_exam_cd, + prmit_bed_num_other, + prmit_bed_num_mental, + prmit_bed_num_tuber, + prmit_bed_num_infection, + prmit_bed_num_sum, + prmit_bed_num_gen, + prmit_bed_num_rcup, + prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + dcfdsf_inst_code, + hp_class_code, + hp_addr_lost_code, + hp_name_kana, + hp_ryaku_name_kana, + hp_name, + hp_ryaku_name, + univ_prnt_code, + bed_num, + close_flag, + open_flag, + close_year_month, + open_year_month, + close_flag2, + inst_repre_code, + president_kana, + president, + tel_nothing_flag, + uncheck_flag, + hp_tel, + hp_addr_kana, + hp_addr, + hp_zip_code, + village_code, + pref_code, + city_code, + hp_addr_number, + addr_cnt_kana, + addr_cnt, + mgt_class_code, + hpdel_code, + hp_kind_code, + dup_opp_code, + inspect_code1, + inspect_code2, + inspect_code3, + inspect_code4, + inspect_code5, + inspect_code6, + inspect_code7, + reexam_flagc, + bed_num_gen, + bed_num_psy, + bed_num_tub, + bed_num_epi, + bed_num_sum, + bed_num_gen2, + bed_num_rest, + bed_class_maint_date, + 1, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL(COM_施設) + UPDATE_INST_QUERY = """\ + UPDATE + src05.com_inst + SET + {update_columns} + abolish_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcfdsf_inst_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_inst + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設診療科目) + INSERT_INST_TRT_QUERY = """\ + INSERT INTO src05.com_inst_trt_course + ( + dcf_dsf_inst_cd, + trt_course_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :insert_trt_course_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ削除用SQL(COM_施設診療科目) + PHYSICAL_DELETE_TRT_QUERY = """\ + DELETE FROM + src05.com_inst_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # レコード存在確認SQL(COM_特養医務室) + RECORD_EXISTS_SPCARE_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_spcare_med_office_dat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ更新用SQL(COM_特養医務室) + UPDATE_SSPCARE_QUERY = """\ + UPDATE + src05.com_spcare_med_office_dat + SET + dcf_prnt_inst_cd = :dcf_prnt_inst_code, + update_ymd = :execute_date_str_ymd, + delete_ymd = :delete_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_chld_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_特養医務室) + INSERT_INST_SSPCARE_QUERY = """\ + INSERT INTO src05.com_spcare_med_office_dat + ( + dcf_chld_inst_cd, + dcf_prnt_inst_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dcf_prnt_inst_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComInst + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInst) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} def make_query(self): - self.queries.append(None) + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_QUERY) + + # 存在する場合はUpdate(施設) + self.__make_update_query() + + # 施設診療科目の削除挿入 + self.__make_delete_insert_trt_query + + # 特養医務室の追加、更新 + self.__make_upsert_spcare_query + + return + + def __make_update_query(self): + # 存在する場合はUpdate(施設) + set_clauses = [] # 設定項目 + + # 施設区分コード + if len(self.record.hp_class_code) > 0: + set_clauses.append('inst_div_cd = :hp_class_code') + + # 正式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('form_inst_name_kana = :hp_name_kana') + + # 略式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') + + # 正式施設名(漢字) + if len(self.record.hp_name) > 0: + set_clauses.append('form_inst_name_kanji = :hp_name') + + # 略式施設名(漢字) + if len(self.record.hp_ryaku_name_kana) > 0: + set_clauses.append('inst_name_kanji = :hp_ryaku_name_kana') + + # 施設住所カナ + if len(self.record.hp_addr_kana) > 0: + set_clauses.append('inst_addr_kana = :hp_addr_kana') + + # 施設住所 + if len(self.record.hp_addr) > 0: + set_clauses.append('inst_addr = :hp_addr') + + # 郵便番号 + if len(self.record.hp_zip_code) > 0: + set_clauses.append('postal_number = :hp_zip_code') + +# <<<<< 住所関連不明 >>>>>> + # 町字コード + if len(self.record.village_code) > 0: + set_clauses.append('village_cd = :village_code') + + # 都道府県コード + if len(self.record.pref_code) > 0: + set_clauses.append('prefc_cd = :pref_code') + + # 市区町村コード + if len(self.record.city_code) > 0: + set_clauses.append('city_cd = :city_code') + + # 住所カウント + if len(self.record.pref_code) > 0: + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 住所表示番号@いるの? + if len(self.record.hp_addr_number) > 0: + set_clauses.append('addr_display_number = :hp_addr_number') + + # 経営体コード@いるの? + if len(self.record.mgt_class_code) > 0: + set_clauses.append('manage_cd = :mgt_class_code') + +# <<<<< 住所関連不明 >>>>>> + + # 病院種別 + if len(self.record.hp_kind_code) > 0: + set_clauses.append('hp_assrt_cd = :hp_kind_code') + + # 再審査コード + if len(self.record.reexam_flag) > 0: + set_clauses.append('re_exam_cd = :reexam_flag') + + # 未確認フラグ + if len(self.record.uncheck_flag) > 0: + set_clauses.append('unconf_flg = :uncheck_flag') + if self.record.uncheck_flag == '@': + self.query_parameter['uncheck_flag'] = '' + + # 削除予定理由コード + if len(self.record.hpdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :hpdel_code') + if self.record.hpdel_code == '@': + self.query_parameter['hpdel_code'] = '' + + # 重複時相手先コード + if len(self.record.dup_opp_code) > 0: + set_clauses.append('dup_opp_cd = :dup_opp_code') + if self.record.dup_opp_code == '@': + self.query_parameter['dup_opp_code'] = '' + + # 住所不明理由コード + if len(self.record.hp_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code') + if self.record.hp_addr_lost_code == '@': + self.query_parameter['hp_addr_lost_code'] = '' + + # 電話番号なしフラグ + if len(self.record.tel_nothing_flag) > 0: + set_clauses.append('phone_number_non_flg = :tel_nothing_flag') + if self.record.tel_nothing_flag == '@': + self.query_parameter['tel_nothing_flag'] = '' + + # 電話番号 + if len(self.record.hp_tel) > 0: + set_clauses.append('inst_phone_number = :hp_tel') + if self.record.hp_tel == '@': + self.query_parameter['hp_tel'] = '' + + # 施設代表者コード + if len(self.record.inst_repre_code) > 0: + set_clauses.append('inst_repre_cd = :inst_repre_code') + if self.record.inst_repre_code == '@': + self.query_parameter['inst_repre_code'] = '' + + # 代表者(カナ) + if len(self.record.president_kana) > 0: + set_clauses.append('inst_repre_kana = :president_kana') + if self.record.president_kana == '@': + self.query_parameter['president_kana'] = '' + + # 代表者(漢字) ※「@」が大文字 + if len(self.record.president) > 0: + set_clauses.append('inst_repre = :president') + if self.record.president == '@': + self.query_parameter['president'] = '' + + # 開業予定フラグ・開業予定年月 + if len(self.record.open_flag + self.record.open_year_month) > 0: + set_clauses.append('estab_sche_flg = :open_flag') + set_clauses.append('estab_sche_ym = :open_year_month') + if self.record.open_flag == '@': + self.query_parameter['open_flag'] = '' + self.query_parameter['open_year_month'] = '' + + # 休院フラグ・休院開始年月 + if len(self.record.close_flag + self.record.close_year_month) > 0: + set_clauses.append('close_flg = :close_flag') + set_clauses.append('close_start_ym = :close_year_month') + if self.record.close_flag == '@': + self.query_parameter['close_flag'] = '' + self.query_parameter['close_year_month'] = '' + + # 関連大学親コード + if len(self.record.univ_prnt_code) > 0: + set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code') + if self.record.univ_prnt_code == '@': + self.query_parameter['univ_prnt_code'] = '' + + # 病棟閉鎖フラグ + if len(self.record.close_flag2) > 0: + set_clauses.append('ward_abolish_flg = :close_flag2') + if self.record.close_flag2 == '@': + self.query_parameter['close_flag2'] = '' + + # 病床数(定員) + if len(self.record.bed_num) > 0: + set_clauses.append('bed_num = :bed_num') + if self.record.bed_num == '@': + self.query_parameter['bed_num'] = '' + + # 許可病床メンテ日付 + if len(self.record.bed_class_maint_date) > 0: + set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date') + if self.record.bed_class_maint_date == '@': + self.query_parameter['bed_class_maint_date'] = '' + + # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.bed_num_sum + self.record.bed_num_psy + self.record.bed_num_tub + self.record.bed_num_epi + + self.record.bed_num_gen + self.record.bed_num_gen2 + self.record.bed_num_rest) > 0: + set_clauses.append('prmit_bed_num_sum = :bed_num_sum') + set_clauses.append('prmit_bed_num_mental = :bed_num_psy') + set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') + set_clauses.append('prmit_bed_num_infection = :bed_num_epi') + set_clauses.append('prmit_bed_num_other = :bed_num_gen') + set_clauses.append('prmit_bed_num_gen = :bed_num_gen2') + set_clauses.append('prmit_bed_num_rcup = :bed_num_rest') + if self.record.bed_num_sum == '@': + self.query_parameter['bed_num_sum'] = '' + self.query_parameter['bed_num_psy'] = '' + self.query_parameter['bed_num_tub'] = '' + self.query_parameter['bed_num_epi'] = '' + self.query_parameter['bed_num_gen'] = '' + self.query_parameter['bed_num_gen2'] = '' + self.query_parameter['bed_num_rest'] = '' + + # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.inspect_code1 + self.record.inspect_code2 + self.record.inspect_code3 + self.record.inspect_code4 + + self.record.inspect_code5 + self.record.inspect_code6 + self.record.inspect_code7) > 0: + set_clauses.append('insp_item_micrb = :inspect_code1') + set_clauses.append('insp_item_serum = :inspect_code2') + set_clauses.append('insp_item_blood = :inspect_code3') + set_clauses.append('insp_item_patho = :inspect_code4') + set_clauses.append('insp_item_paras = :inspect_code5') + set_clauses.append('insp_item_biochem = :inspect_code6') + set_clauses.append('insp_item_ri = :inspect_code7') + if self.record.inspect_code1 == '@': + self.query_parameter['inspect_code1'] = '' + self.query_parameter['inspect_code2'] = '' + self.query_parameter['inspect_code3'] = '' + self.query_parameter['inspect_code4'] = '' + self.query_parameter['inspect_code5'] = '' + self.query_parameter['inspect_code6'] = '' + self.query_parameter['inspect_code7'] = '' + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合は更新処理は行わない + if len(update_columns) == 0: + return + else: + update_columns += ',' + update_query = self.UPDATE_INST_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + + return + + def __make_delete_insert_trt_query(self): + # 施設診療科目の削除挿入 + delins_flg = False + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + delins_flg = True + break + + if not delins_flg: + return + + # 削除 + self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) + + if len(self.record.medsbj_code[0]) != "@": + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + self.query_parameter['insert_trt_course_cd'] = self.record.medsbj_code[i] + self.queries.append(self.INSERT_INST_TRT_QUERY) + return + + def __make_upsert_spcare_query(self): + # 特養医務室の追加、更新 + if (self.record.dcf_prnt_inst_code == "00" or len(self.record.dcf_prnt_inst_code) == 0): + return + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_SSPCARE_QUERY) + return + + # 存在する場合はUpdate + if self.record.dcf_prnt_inst_code == "@": + self.query_parameter['dcf_prnt_inst_code'] = '' + self.query_parameter['delete_ymd'] = datetime.datetime.now().strftime('%Y%m%d') + else: + self.query_parameter['delete_ymd'] = '' + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py new file mode 100644 index 00000000..4838f9ee --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -0,0 +1,200 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInst(UltmarcTable): + """レイアウト区分101: COM_施設""" + dcfhp_id: str # 施設コード(レコードID) + dcfhp_code: str # 施設コード(施設コード) + dcfh_yobi: str # 施設コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + uncheck_flag: str # 未確認フラグ + hpdel_code: str # 削除予定理由 + duphp_id: str # 重複時相手先コード(レコードID) + duphp_code: str # 重複時相手先コード(施設コード) + duphp_yobi: str # 重複時相手先コード(予備) + hp_name: str # 正式施設名(漢字) + hp_name_kana: str # 正式施設名(カナ) + hp_ryaku_name: str # 略式施設名(漢字) + hp_ryaku_name_kana: str # 略式施設名(カナ) + hp_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + hp_zip_code: str # 郵便番号 + hp_addr: str # 住所(漢字) + hp_addr_kana: str # 住所(カナ) + hp_addr_number: str # 住所表示番号 + dr_addr_kanji1: str # 住所カウント_漢字(県) + dr_addr_kanji2: str # 住所カウント_漢字(市区町村) + dr_addr_kanji3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanji4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana1: str # 住所カウント_カナ(県) + dr_addr_kana2: str # 住所カウント_カナ(市区町村) + dr_addr_kana3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana4: str # 住所カウント_カナ(字・丁目) + tel_nothing_flag: str # 電話番号なしフラグ + hp_tel: str # 電話番号 + mgt_class_code: str # 経営体 + hp_class_code: str # 施設区分 + president_id: str # 代表者コード(レコードID) + president_code: str # 代表者コード(個人コード) + president_yobi: str # 代表者コード(予備) + president: str # 代表者(漢字) + president_kana: str # 代表者(カナ) + open_flag: str # 開業予定フラグ + open_year_month: str # 開業予定年月 + close_flag: str # 休院フラグ + close_year_month: str # 休院開始年月 + medsbj_code = [] # 診療科目1~60 + hp_kind_code: str # 病院種別 + reexam_flag: str # 再審査区分 + assoc_parrent_id: str # 関連大学親コード(レコードID) + assoc_parrent_code: str # 関連大学親コード(施設コード) + assoc_parrent_yobi: str # 関連大学親コード(予備) + close_flag2: str # 病棟閉鎖フラグ + bed_num: str # 病床数(定員) + bed_class_maint_date: str # 許可病床メンテ日付 + bed_num_sum: str # 許可病床数_合計 + bed_num_psy: str # 許可病床数_精神 + bed_num_tub: str # 許可病床数_結核 + bed_num_epi: str # 許可病床数_感染症 + bed_num_gen: str # 許可病床数_その他 + bed_num_gen2: str # 許可病床数_一般病床 + bed_num_rest: str # 許可病床数_療養病床 + inspect_code1: str # 検査項目_微生物 + inspect_code2: str # 検査項目_血清 + inspect_code3: str # 検査項目_血液 + inspect_code4: str # 検査項目_病理 + inspect_code5: str # 検査項目_寄生虫 + inspect_code6: str # 検査項目_生化 + inspect_code7: str # 検査項目_RI + dcfhp_92id: str # 特養医務室コード(レコードID) + dcfhp_92code: str # 特養医務室コード(施設コード) + dcfhp_92yobi: str # 特養医務室コード(予備) + + dcfdsf_inst_code: str # DCFDSF施設コード + univ_prnt_code: str # 関連大学親コード + inst_repre_code: str # 施設代表者コード + village_code: str # 町字コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + dup_opp_code: str # 重複時相手先コード + dcf_prnt_inst_code: str # DCF親施設コード + + delete_ymd: str # 削除年月日(COM_特養医務室データ) + insert_trt_course_cd: str # 診療科目コード(COM_施設診療科目) + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfh_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.uncheck_flag = record[7].strip() + self.hpdel_code = record[8].strip() + self.duphp_id = record[9] + self.duphp_code = record[10].strip() + self.duphp_yobi = record[11].strip() + self.hp_name = record[12].strip() + self.hp_name_kana = record[13].strip() + self.hp_ryaku_name = record[14].strip() + self.hp_ryaku_name_kana = record[15].strip() + self.hp_addr_lost_code = record[16].strip() + self.pref_code = record[17].strip() + self.city_code = record[18].strip() + self.addr_code1 = record[19].strip() + self.addr_code2 = record[20].strip() + self.hp_zip_code = record[21].strip() + self.hp_addr = record[22] + self.hp_addr_kana = record[23] + self.hp_addr_number = record[24] + self.dr_addr_kanji1 = record[25].strip() + self.dr_addr_kanji2 = record[26].strip() + self.dr_addr_kanji3 = record[27].strip() + self.dr_addr_kanji4 = record[28].strip() + self.dr_addr_kana1 = record[29].strip() + self.dr_addr_kana2 = record[30].strip() + self.dr_addr_kana3 = record[31].strip() + self.dr_addr_kana4 = record[32].strip() + self.tel_nothing_flag = record[33].strip() + self.hp_tel = record[34].strip() + self.mgt_class_code = record[35].strip() + self.hp_class_code = record[36].strip() + self.president_id = record[37] + self.president_code = record[38].strip() + self.president_yobi = record[39] + self.president = record[40].strip() + self.president_kana = record[41].strip() + self.open_flag = record[42].strip() + self.open_year_month = record[43].strip() + self.close_flag = record[44].strip() + self.close_year_month = record[45].strip() + + # 診療科目1~60 + num = 46 + for i in range(0, 60): + self.medsbj_code[i] = record[num] + num += 1 + + self.hp_kind_code = record[106].strip() + self.reexam_flag = record[107].strip() + self.assoc_parrent_id = record[108].strip() + self.assoc_parrent_code = record[109].strip() + self.assoc_parrent_yobi = record[110].strip() + self.close_flag2 = record[111].strip() + self.bed_num = record[112].strip() + self.bed_class_maint_date = record[113].strip() + self.bed_num_sum = record[114].strip() + self.bed_num_psy = record[115].strip() + self.bed_num_tub = record[116].strip() + self.bed_num_epi = record[117].strip() + self.bed_num_gen = record[118].strip() + self.bed_num_gen2 = record[119].strip() + self.bed_num_rest = record[120].strip() + self.inspect_code1 = record[121].strip() + self.inspect_code2 = record[122].strip() + self.inspect_code3 = record[123].strip() + self.inspect_code4 = record[124].strip() + self.inspect_code5 = record[125].strip() + self.inspect_code6 = record[126].strip() + self.inspect_code7 = record[127].strip() + self.dcfhp_92id = record[128].strip() + self.dcfhp_92code = record[129].strip() + self.dcfhp_92yobi = record[130].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfh_yobi + # 関連大学親コード + self.univ_prnt_code = self.assoc_parrent_id + self.assoc_parrent_code + self.assoc_parrent_yobi + # 施設代表者コード + self.inst_repre_code = self.president_id + self.president_code + self.president_yobi + # 町字コード + self.village_code = self.pref_code + self.city_code + self.addr_code1 + self.addr_code2 + # 住所カウントカナ + self.addr_cnt_kana = self.dr_addr_kana1 + self.dr_addr_kana2 + self.dr_addr_kana3 + self.dr_addr_kana4 + # 住所カウント + self.addr_cnt = self.dr_addr_kanji1 + self.dr_addr_kanji2 + self.dr_addr_kanji3 + self.dr_addr_kanji4 + # 重複時相手先コード + self.dup_opp_code = self.duphp_id + self.duphp_code + self.duphp_yobi + # DCF親施設コード + self.dcf_prnt_inst_code = self.dcfhp_92id + self.dcfhp_92code + self.dcfhp_92yobi + + # 住所カウント_漢字の0埋め + self.dr_addr_kanji1.zfill(2) + self.dr_addr_kanji2.zfill(2) + self.dr_addr_kanji3.zfill(2) + self.dr_addr_kanji4.zfill(2) + + # 住所カウント_カナの0埋め + self.dr_addr_kana1.zfill(2) + self.dr_addr_kana2.zfill(2) + self.dr_addr_kana3.zfill(2) + self.dr_addr_kana4.zfill(2) + + self.delete_ymd = '' + self.insert_trt_course_cd = '' From e7b19b4982bf41a30f8f4bdbfda56c6a739b90e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 2 May 2023 09:53:05 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_dr_mapper.py | 141 +++--------------- .../ultmarc/utmp_tables/tables/com_dr.py | 33 ++++ .../com_dr/db_com_dr_before_delete.csv | 1 - .../com_dr/db_com_dr_before_update.csv | 1 - .../table_mapper/com_dr/db_com_era_before.csv | 6 + .../expect_com_dr_trt_course_insert.csv | 2 - .../table_mapper/com_dr/test_com_dr_mapper.py | 41 ++++- 7 files changed, 99 insertions(+), 126 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py index f8317533..8eb248ad 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py @@ -166,12 +166,12 @@ class ComDrMapper(UltmarcTableMapper): """ # COM_医師診療科目の登録用SQL - INSERT_QUERY_TRT1 = """\ + INSERT_QUERY_TRT = """\ INSERT INTO src05.com_dr_trt_course ( trt_course_cd, - dcf_pcf_dr_cd, sequence, + dcf_pcf_dr_cd, regist_ymd, sys_regist_date, regist_prgm_id, @@ -179,105 +179,9 @@ class ComDrMapper(UltmarcTableMapper): update_prgm_id ) VALUES ( - :medsbj_code1, + {trt_course_code}, + {trt_sequence}, :dcf_pcf_dr_cd, - 1, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT2 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code2, - :dcf_pcf_dr_cd, - 2, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT3 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code3, - :dcf_pcf_dr_cd, - 3, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT4 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code4, - :dcf_pcf_dr_cd, - 4, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT5 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code5, - :dcf_pcf_dr_cd, - 5, :execute_date_str_ymd, :execute_datetime, :program_name, @@ -308,7 +212,7 @@ class ComDrMapper(UltmarcTableMapper): def __make_upsert_query(self): # 西暦の取得 - self.__year_get() + self.__set_era() # レコードの存在確認 record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) @@ -421,11 +325,8 @@ class ComDrMapper(UltmarcTableMapper): self.query_parameter['dr_addr_lost_code'] = '' # 住所 - if len(self.record.pref_code + self.record.city_code + self.record.addr_code1 + self.record.addr_code2 + - self.record.dr_zip_code + self.record.dr_addr + self.record.dr_addr_kana + self.record.dr_addr_num + - self.record.dr_addr_kanj_cnt1 + self.record.dr_addr_kanj_cnt2 + self.record.dr_addr_kanj_cnt3 + - self.record.dr_addr_kanj_cnt4 + self.record.dr_addr_kana_cnt1 + self.record.dr_addr_kana_cnt2 + - self.record.dr_addr_kana_cnt3 + self.record.dr_addr_kana_cnt4) > 0: + # 集合項目のいずれかに入力がある場合に更新 + if sum(len(item) for item in self.record.address_aggregation_items) > 0: set_clauses.append('home_addr_kana = :dr_addr_kana') set_clauses.append('home_addr = :dr_addr') set_clauses.append('home_postal_number = :dr_zip_code') @@ -487,25 +388,29 @@ class ComDrMapper(UltmarcTableMapper): return set_clauses def __make_delete_insert_trt_query(self): + # 診療科目(集合項目)のいずれかに入力がある場合 + if sum(len(item) for item in self.record.medsbj_code_items) == 0: + return + # 削除 self.queries.append(self.PHYSICAL_DELETE_QUERY_TRT) + # @マークの場合は、登録しない + if self.record.medsbj_code1 == '@': + return + # 登録 - if self.record.medsbj_code1 != '@': - if len(self.record.medsbj_code1) > 0: - self.queries.append(self.INSERT_QUERY_TRT1) - if len(self.record.medsbj_code2) > 0: - self.queries.append(self.INSERT_QUERY_TRT2) - if len(self.record.medsbj_code3) > 0: - self.queries.append(self.INSERT_QUERY_TRT3) - if len(self.record.medsbj_code4) > 0: - self.queries.append(self.INSERT_QUERY_TRT4) - if len(self.record.medsbj_code5) > 0: - self.queries.append(self.INSERT_QUERY_TRT5) + for num, m_code in enumerate(self.record.medsbj_code_items, start=1): + if len(m_code) > 0: + insert_trt_query = self.INSERT_QUERY_TRT.format( + trt_course_code=f':medsbj_code{num}', + trt_sequence=num + ) + self.queries.append(insert_trt_query) return - def __year_get(self): + def __set_era(self): # 西暦の取得 # 生年月日(西暦) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py index e621cb0e..13842737 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -73,6 +73,12 @@ class ComDr(UltmarcTable): 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] @@ -148,3 +154,30 @@ class ComDr(UltmarcTable): 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] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv index f6baf695..6afe1981 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv @@ -5,4 +5,3 @@ "0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" "0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv index 0a6ea96a..9b043d87 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -7,4 +7,3 @@ "0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "9999999990","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv new file mode 100644 index 00000000..c11243ae --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv @@ -0,0 +1,6 @@ +era_cd","era_name","year","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","明治","1867","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT","2014/10/24 11:29:55","INIT" +"2","大正","1911","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"3","昭和","1925","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"4","平成","1988","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT","2014/10/24 11:29:57","INIT" +"5","令和","2018","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_support","2019/05/07 10:27:29","dwh_support" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv index 06ef8f21..eb819263 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv @@ -21,5 +21,3 @@ "L01","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" "L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" "L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" - - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py index 9872cd6b..dd533e17 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -28,13 +28,13 @@ class TestComDrMapper: # setup self.db = database self.db.connect() - self.db.begin() + # self.db.begin() # testing yield # teardown - self.db.rollback() + # self.db.rollback() self.db.disconnect() def test_insert_record(self): @@ -58,9 +58,11 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師診察科目) - test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_insert.csv')) for test_data in test_sql_data_list: insert_sql, insert_parameter = create_insert_sql_with_parameter( 'src05.com_dr_trt_course', @@ -68,6 +70,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1): @@ -147,6 +158,8 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師) test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_update.csv')) @@ -158,7 +171,7 @@ class TestComDrMapper: ) self.db.execute(insert_sql, insert_parameter) # DBデータを読み込む(医師診察科目) - test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_update.csv')) for test_data in test_sql_data_list: insert_sql, insert_parameter = create_insert_sql_with_parameter( 'src05.com_dr_trt_course', @@ -166,6 +179,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1): @@ -247,6 +269,8 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師) test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_delete.csv')) @@ -266,6 +290,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1):