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] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85=E4=BF=AE?= =?UTF-8?q?=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):