From ceaeffa02c99b45c21eeaa1708b20a4663cdaf4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Fri, 21 Apr 2023 13:38:00 +0900 Subject: [PATCH 01/12] =?UTF-8?q?feat:=20=E6=96=BD=E8=A8=AD=E6=8B=85?= =?UTF-8?q?=E5=BD=93=E8=80=85=E3=83=9E=E3=82=B9=E3=82=BF=E6=B4=97=E6=9B=BF?= =?UTF-8?q?(=E4=BB=AE=E8=A3=BD=E9=80=A0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laundering/emp_chg_inst_laundering.py | 79 +++++++------------ 1 file changed, 27 insertions(+), 52 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py index e9d77529..aabf4e10 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py @@ -21,10 +21,10 @@ def exec(): _truncate_emp_chg_inst_lau(db) # emp_chg_inst から、`emp_chg_inst_lau`へInsert _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db) - # vop_hco_merge_vから、emp_chg_inst_lauをUpdate - _update_emp_chg_inst_lau_from_vop_hco_merge_v(db, syor_date) - # dcf_inst_mergeから、emp_chg_inst_lauをUpdate - _update_dcf_inst_merge_from_emp_chg_inst_lau(db, syor_date) + # v_inst_merge_tから、emp_chg_inst_lauをUpdate + _update_emp_chg_inst_lau_from_v_inst_merge_t(db, syor_date) + # v_inst_merge_tから、emp_chg_inst_lauをUpdate + _update_v_inst_merge_t_from_emp_chg_inst_lau(db, syor_date) logger.debug('##########################') logger.debug('End All Processing PGM.') except Exception as e: @@ -81,8 +81,8 @@ def _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db: Database): return -def _update_emp_chg_inst_lau_from_vop_hco_merge_v(db: Database, syor_date: str): - # vop_hco_merge_vはデータが作られないため、この洗い替え処理は基本空振りする +def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database, syor_date: str): + # v_inst_merge_tはデータが作られないため、この洗い替え処理は基本空振りする logger.debug("##########################") try: select_result = db.execute_select( @@ -90,35 +90,29 @@ def _update_emp_chg_inst_lau_from_vop_hco_merge_v(db: Database, syor_date: str): SELECT COUNT(v_inst_cd) AS row_count FROM - src05.vop_hco_merge_v - WHERE - STR_TO_DATE(apply_dt, '%Y-%m-%d') <= :syor_date - """, - {'syor_date': syor_date} + internal05.v_inst_merge_t + """ ) except Exception as e: - logger.debug("Error! `vop_hco_merge_v` Table count error!") + logger.debug("Error! `v_inst_merge_t` Table count error!") raise e count = [row for row in select_result][0]['row_count'] if count == 0: - logger.info('vop_hco_merge_v Table Data is not exists!') + logger.info('v_inst_merge_t Table Data is not exists!') return - logger.info('vop_hco_merge_v Table Data is exists!') - # vop_hco_merge_v から、emp_chg_inst_lauをUpdateします + logger.info('v_inst_merge_t Table Data is exists!') + # v_inst_merge_t から、emp_chg_inst_lauをUpdateします result = db.execute_select( """ SELECT v_inst_cd, v_inst_cd_merg FROM - src05.vop_hco_merge_v - WHERE - STR_TO_DATE(apply_dt, '%Y-%m-%d') <= :syor_date + internal05.v_inst_merge_t ORDER BY STR_TO_DATE(apply_dt, '%Y-%m-%d') ASC - """, - {'syor_date': syor_date} + """ ) for row in result: v_inst_cd = row['v_inst_cd'] @@ -147,9 +141,9 @@ def _update_emp_chg_inst_lau_from_vop_hco_merge_v(db: Database, syor_date: str): return -def _update_dcf_inst_merge_from_emp_chg_inst_lau(db: Database, syor_date: str): - # dcf_inst_mergeから、emp_chg_inst_lauをUpdate - # Get count from DCF_INST_MERGE +def _update_v_inst_merge_t_from_emp_chg_inst_lau(db: Database, syor_date: str): + # inst_merge_tから、emp_chg_inst_lauをUpdate + # Get count from INST_MERGE_T logger.debug("##########################") try: select_result = db.execute_select( @@ -157,26 +151,20 @@ def _update_dcf_inst_merge_from_emp_chg_inst_lau(db: Database, syor_date: str): SELECT COUNT(dcf_inst_cd) AS row_count FROM - src05.dcf_inst_merge - WHERE - muko_flg = '0' - AND dcf_inst_cd_new IS NOT NULL - AND enabled_flg = 'Y' - AND STR_TO_DATE(CONCAT(tekiyo_month, '01'), '%Y%m%d') <= :syor_date - """, - {'syor_date': syor_date} + internal05.inst_merge_t + """ ) except Exception as e: - logger.debug("Error! Getting Count of dcf_inst_merge was failed!") + logger.debug("Error! Getting Count of internal05.inst_merge_t was failed!") raise e count = [row for row in select_result][0]['row_count'] if count == 0: - logger.info('dcf_inst_merge Table Data is not exists!') + logger.info('inst_merge_t Table Data is not exists!') return - logger.debug('dcf_inst_merge Table Data is exists!') - # dcf_inst_mergeから、emp_chg_inst_lauをUpdate + logger.debug('inst_merge_t Table Data is exists!') + # inst_merge_tから、emp_chg_inst_lauをUpdate logger.debug("##########################") logger.debug("#### UPDATE DATA #########") logger.debug("##########################") @@ -184,28 +172,15 @@ def _update_dcf_inst_merge_from_emp_chg_inst_lau(db: Database, syor_date: str): elapsed_time = ElapsedTime() update_sql = """ UPDATE - src05.emp_chg_inst_lau el, - ( - SELECT - dcf_inst_cd, - dcf_inst_cd_new - FROM - src05.dcf_inst_merge - WHERE - muko_flg = '0' - AND dcf_inst_cd_new IS NOT NULL - AND enabled_flg = 'Y' - AND STR_TO_DATE(CONCAT(tekiyo_month, '01'), '%Y%m%d') <= :syor_date - ) dm + src05.emp_chg_inst_lau el, internal05.inst_merge_t imt SET - el.inst_cd = dm.dcf_inst_cd_new, + el.inst_cd = imt.dcf_inst_cd_new, el.lua_ope_dt = SYSDATE() WHERE - el.inst_cd = dm.dcf_inst_cd + el.inst_cd = imt.dcf_inst_cd """ res = db.execute( - update_sql, - {'syor_date': syor_date} + update_sql ) logging_sql(logger, update_sql) logger.info(f'Query OK, {res.rowcount} rows affected ({elapsed_time.of})') From 0142c2658ea8851196db278733ca9b38ab1ff5cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Fri, 21 Apr 2023 15:34:11 +0900 Subject: [PATCH 02/12] =?UTF-8?q?feat:=20=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C=E3=80=81=E3=82=AB?= =?UTF-8?q?=E3=83=A9=E3=83=A0=E5=90=8D=E5=A4=89=E6=9B=B4=E3=81=AA=E3=81=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laundering/emp_chg_inst_laundering.py | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py index aabf4e10..dc596f60 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py @@ -15,16 +15,14 @@ def exec(): db.connect() logger.debug('##########################') logger.debug('START Changing Employee in charge of institution PGM.') - # 業務日付を取得 - syor_date = batch_context.syor_date # `emp_chg_inst_lau`をTruncate _truncate_emp_chg_inst_lau(db) # emp_chg_inst から、`emp_chg_inst_lau`へInsert _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db) # v_inst_merge_tから、emp_chg_inst_lauをUpdate - _update_emp_chg_inst_lau_from_v_inst_merge_t(db, syor_date) - # v_inst_merge_tから、emp_chg_inst_lauをUpdate - _update_v_inst_merge_t_from_emp_chg_inst_lau(db, syor_date) + _update_emp_chg_inst_lau_from_v_inst_merge_t(db) + # inst_merge_tから、emp_chg_inst_lauをUpdate + _update_emp_chg_inst_lau_from_inst_merge_t(db) logger.debug('##########################') logger.debug('End All Processing PGM.') except Exception as e: @@ -81,8 +79,8 @@ def _insert_into_emp_chg_inst_lau_from_emp_chg_inst(db: Database): return -def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database, syor_date: str): - # v_inst_merge_tはデータが作られないため、この洗い替え処理は基本空振りする +def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database): + # v_inst_merge_tの元となるvop_hco_merge_vはデータが作られないため、この洗い替え処理は基本空振りする logger.debug("##########################") try: select_result = db.execute_select( @@ -107,30 +105,28 @@ def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database, syor_date: str): """ SELECT v_inst_cd, - v_inst_cd_merg + v_inst_cd_merge FROM internal05.v_inst_merge_t - ORDER BY - STR_TO_DATE(apply_dt, '%Y-%m-%d') ASC """ ) for row in result: v_inst_cd = row['v_inst_cd'] - v_inst_cd_merge = row['v_inst_cd_merg'] + v_inst_cd_merge = row['v_inst_cd_merge'] try: elapsed_time = ElapsedTime() update_sql = """ UPDATE emp_chg_inst_lau SET - inst_cd = :v_inst_merge, + inst_cd = :v_inst_cd_merge, lua_ope_dt = SYSDATE() WHERE inst_cd = :v_inst_cd; """ update_result = db.execute( update_sql, - {'v_inst_cd': v_inst_cd, 'v_inst_cd_merg': v_inst_cd_merge} + {'v_inst_cd': v_inst_cd, 'v_inst_cd_merge': v_inst_cd_merge} ) logging_sql(logger, update_sql) logger.info(f'Query OK, {update_result.rowcount} rows affected ({elapsed_time.of})') @@ -141,7 +137,7 @@ def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database, syor_date: str): return -def _update_v_inst_merge_t_from_emp_chg_inst_lau(db: Database, syor_date: str): +def _update_emp_chg_inst_lau_from_inst_merge_t(db: Database): # inst_merge_tから、emp_chg_inst_lauをUpdate # Get count from INST_MERGE_T logger.debug("##########################") @@ -149,7 +145,7 @@ def _update_v_inst_merge_t_from_emp_chg_inst_lau(db: Database, syor_date: str): select_result = db.execute_select( """ SELECT - COUNT(dcf_inst_cd) AS row_count + COUNT(dcf_dsf_inst_cd) AS row_count FROM internal05.inst_merge_t """ @@ -174,14 +170,12 @@ def _update_v_inst_merge_t_from_emp_chg_inst_lau(db: Database, syor_date: str): UPDATE src05.emp_chg_inst_lau el, internal05.inst_merge_t imt SET - el.inst_cd = imt.dcf_inst_cd_new, + el.inst_cd = imt.dup_opp_cd, el.lua_ope_dt = SYSDATE() WHERE - el.inst_cd = imt.dcf_inst_cd + el.inst_cd = imt.dcf_dsf_inst_cd """ - res = db.execute( - update_sql - ) + res = db.execute(update_sql) logging_sql(logger, update_sql) logger.info(f'Query OK, {res.rowcount} rows affected ({elapsed_time.of})') except Exception as e: From 5e2ce351a26fe5e480bb3e72c95d0a463984a6ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 09:45:48 +0900 Subject: [PATCH 03/12] =?UTF-8?q?win=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/tests/testing_utility.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index e95da8e7..5a6c3a42 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -1,5 +1,5 @@ -"""テスト用共通処理関数""" import csv +import os import tempfile from datetime import datetime @@ -22,12 +22,13 @@ def create_ultmarc_test_data_from_csv(file_path: str) -> DatFile: """ # 一度、Shift-JISファイルで書き出す - with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932') as tmp_file: + with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932', delete=False) as tmp_file: tmp_file.write(csv_file.read()) tmp_file.seek(0) tmpfile_path = tmp_file.name - dat_file = DatFile.from_path(tmpfile_path) + dat_file = DatFile.from_path(tmpfile_path) + os.unlink(tmpfile_path) return dat_file From 56bc95c5f7c4b5c84683b579765304e29210e1b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 11:29:42 +0900 Subject: [PATCH 04/12] =?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 --- .../concrete/com_med_func_valuation_mapper.py | 100 +++++++++ .../tables/com_med_func_valuation.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_med_func_valuation/__init__.py | 0 .../com_med_func_valuation_delete.csv | 7 + .../com_med_func_valuation_insert.csv | 7 + .../com_med_func_valuation_update.csv | 6 + ...b_com_med_func_valuation_before_delete.csv | 7 + ...b_com_med_func_valuation_before_update.csv | 7 + .../expect_com_med_func_valuation_delete.csv | 8 + .../expect_com_med_func_valuation_insert.csv | 8 + .../expect_com_med_func_valuation_update.csv | 7 + .../test_com_med_func_valuation_mapper.py | 197 ++++++++++++++++++ 13 files changed, 370 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py new file mode 100644 index 00000000..530a1334 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_func_valuation_mapper.py @@ -0,0 +1,100 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_func_valuation import ComMedFuncValuation + + +class ComMedFuncValuationMapper(UltmarcTableMapper): + """レイアウト区分024: COM_医療機器評価 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_func_valuation + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_func_valuation + ( + med_func_valuation_cd, + med_func_valuation_name, + regist_ymd, + update_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + + ) + VALUES ( + :med_func_valuation_cd, + :med_func_valuation_name, + :execute_date_str_ymd, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_med_func_valuation + SET + med_func_valuation_name = :med_func_valuation_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_med_func_valuation + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + med_func_valuation_cd = :med_func_valuation_cd + """ + record: ComMedFuncValuation + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedFuncValuation) + 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.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: + return self.INSERT_QUERY + + # med_func_valuation_nameが空で無い場合はUpdate + if len(self.record.med_func_valuation_name) == 0: + return None + else: + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py new file mode 100644 index 00000000..6ed14c07 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_func_valuation.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedFuncValuation(UltmarcTable): + """レイアウト区分023: COM_医療機器評価""" + maint_flag: str # 修正区分 + med_func_valuation_cd: str # 医療機器評価コード + med_func_valuation_name: str # 医療機器評価名称(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.med_func_valuation_cd = record[1] + self.med_func_valuation_name = record[5] 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 ebea9e55..1f3ec13a 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 @@ -1,6 +1,6 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete import ( com_alma_mapper, com_dr_wrkplace_mapper, com_hamtec_mapper, - com_inst_mapper, null_mapper) + com_inst_mapper, com_med_func_valuation_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database @@ -64,7 +64,7 @@ COM_TABLE_LIST = { # COM_看護種別 "023": null_mapper.NullMapper, # COM_医療機能評価 - "024": null_mapper.NullMapper, + "024": com_med_func_valuation_mapper.ComMedFuncValuationMapper, # COM_地域クリティカルパス "026": null_mapper.NullMapper, # COM_疾患別リハビリテーション科 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv new file mode 100644 index 00000000..e58811b2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv @@ -0,0 +1,7 @@ +"024","01","A","20141113","20141114","" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","C","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院B" +"024","06","A","20141113","20141114","複合病院A" +"024","07","A","20141113","20141114","長期療養病院" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv new file mode 100644 index 00000000..904b15f6 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_insert.csv @@ -0,0 +1,7 @@ +"024","01","A","20141113","20141114","一般病院A" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","A","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院A" +"024","06","A","20141113","20141114","複合病院B" +"024","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv new file mode 100644 index 00000000..6a92676f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_update.csv @@ -0,0 +1,6 @@ +"024","01","A","20141113","20141114","" +"024","02","A","20141113","20141114","一般病院B" +"024","03","A","20141113","20141114","精神病院A" +"024","04","A","20141113","20141114","精神病院B" +"024","05","A","20141113","20141114","複合病院B" +"024","06","A","20141113","20141114","複合病院A" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv new file mode 100644 index 00000000..28ec2538 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_delete.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"03","精神病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"04","精神病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"05","複合病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" +"06","複合病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","clsComMedFuncValuati" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv new file mode 100644 index 00000000..0dec3123 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/db_com_med_func_valuation_before_update.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"03","精神病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"04","精神病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"05","複合病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"06","複合病院B","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv new file mode 100644 index 00000000..1d74c427 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_delete.csv @@ -0,0 +1,8 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"03","精神病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"04","精神病院B","20171024","20171024","20230424","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2023/04/23 10:22:50","com_med_func_valuation_mapper" +"05","複合病院B","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"06","複合病院A","20171024","20171024","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:22:50","com_med_func_valuation_mapper" +"07","長期療養病院","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:22:50","com_med_func_valuation_mapper","2017/10/24 10:22:50","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv new file mode 100644 index 00000000..ca00954e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_insert.csv @@ -0,0 +1,8 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"02","一般病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"03","精神病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"04","精神病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"05","複合病院A","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"06","複合病院B","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","20230424","20230424","NULL","NULL","NULL","NULL","NULL","2023/04/23 00:00:00","com_med_func_valuation_mapper","2023/04/23 00:00:00","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv new file mode 100644 index 00000000..2d8e985a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/expect_com_med_func_valuation_update.csv @@ -0,0 +1,7 @@ +"med_func_valuation_cd","med_func_valuation_name","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date",update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","一般病院A","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:17:22","clsComMedFuncValuati" +"02","一般病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"03","精神病院A","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"04","精神病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"05","複合病院B","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" +"06","複合病院A","20171024","20230424","NULL","NULL","NULL","NULL","NULL","2017/10/24 10:17:22","clsComMedFuncValuati","2017/10/24 10:19:04","com_med_func_valuation_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py new file mode 100644 index 00000000..0485eab4 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py @@ -0,0 +1,197 @@ +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_med_func_valuation_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 TestComMedFuncValuationMapper: + """レイアウト区分024: 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_med_func_valuation_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, 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_med_func_valuation_insert.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + 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_med_func_valuation_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'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_med_func_valuation_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_func_valuation', + 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_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, 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_med_func_valuation_update.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_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}が、期待値以降であること' + + 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_med_func_valuation_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_func_valuation', {'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_med_func_valuation_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_func_valuation', + 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_med_func_valuation_mapper.ComMedFuncValuationMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_func_valuation_mapper.ComMedFuncValuationMapper, 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_med_func_valuation_delete.csv')) + primary_keys = [f"'{primary_key['med_func_valuation_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_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}が、期待値以降であること' From 501b1b6fca609bec146fdf266a257fe57c502199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 12:04:17 +0900 Subject: [PATCH 05/12] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_com_med_func_valuation_mapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py index 0485eab4..b21789a6 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/test_com_med_func_valuation_mapper.py @@ -28,13 +28,13 @@ class TestComMedFuncValuationMapper: # 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): @@ -72,14 +72,14 @@ class TestComMedFuncValuationMapper: actual_select_sql = f"SELECT * FROM src05.com_med_func_valuation WHERE med_func_valuation_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'] + 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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + if actual_col_name in ignore_columns: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' def test_update_record(self): From 0c405204e9c15ba4af5b39f634db9c73c2b413ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 15:06:34 +0900 Subject: [PATCH 06/12] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_med_func_valuation/com_med_func_valuation_delete.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv index e58811b2..5543c107 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_func_valuation/com_med_func_valuation_delete.csv @@ -5,3 +5,4 @@ "024","05","A","20141113","20141114","複合病院B" "024","06","A","20141113","20141114","複合病院A" "024","07","A","20141113","20141114","長期療養病院" +"024","99","C","20141113","20141114","精神病院B" From 4fc6639eea45b3f482b0cd0ff2e712e3832e876e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 24 Apr 2023 15:55:30 +0900 Subject: [PATCH 07/12] =?UTF-8?q?feat:=20=E5=8D=98=E4=BD=93=E8=A9=A6?= =?UTF-8?q?=E9=A8=93=E4=B8=8D=E5=85=B7=E5=90=88=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/laundering/emp_chg_inst_laundering.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py index dc596f60..a9d5f1f3 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py @@ -117,7 +117,7 @@ def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database): elapsed_time = ElapsedTime() update_sql = """ UPDATE - emp_chg_inst_lau + src05.emp_chg_inst_lau SET inst_cd = :v_inst_cd_merge, lua_ope_dt = SYSDATE() @@ -131,10 +131,10 @@ def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database): logging_sql(logger, update_sql) logger.info(f'Query OK, {update_result.rowcount} rows affected ({elapsed_time.of})') except Exception as e: - logger.debug(f"emp_chg_inst_lau v_inst_cd could not set from {v_inst_cd_merge} to {v_inst_cd_merge}!") + logger.debug(f"emp_chg_inst_lau v_inst_cd could not set from {v_inst_cd} to {v_inst_cd_merge}!") raise e logger.debug(f"Success! emp_chg_inst_lau v_inst_cd was set from {v_inst_cd} to {v_inst_cd_merge}!") - return + return def _update_emp_chg_inst_lau_from_inst_merge_t(db: Database): From fdea867047f093daf0540277b856e4d159ff5f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 16:32:01 +0900 Subject: [PATCH 08/12] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E7=99=BB=E9=8C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_regn_critic_pass_mapper.py | 97 +++++++++ .../tables/com_regn_critic_pass.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_regn_critic_pass/__init__.py | 0 .../com_regn_critic_pass_delete.csv | 4 + .../com_regn_critic_pass_insert.csv | 3 + .../com_regn_critic_pass_update.csv | 3 + .../db_com_regn_critic_pass_before_delete.csv | 3 + .../db_com_regn_critic_pass_before_update.csv | 4 + .../expect_com_regn_critic_pass_delete.csv | 4 + .../expect_com_regn_critic_pass_insert.csv | 4 + .../expect_com_regn_critic_pass_update.csv | 4 + .../test_com_regn_critic_pass_mapper.py | 197 ++++++++++++++++++ 13 files changed, 339 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py new file mode 100644 index 00000000..1bfbb38e --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_regn_critic_pass_mapper.py @@ -0,0 +1,97 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_regn_critic_pass import ComRegnCriticPass + + +class ComRegnCriticPassMapper(UltmarcTableMapper): + """レイアウト区分026: COM_地域クリティカルパス 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_regn_critic_pass + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_regn_critic_pass + ( + regn_co_critic_pass_cd, + disease_name_kanji, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :regn_co_critic_pass_cd, + :disease_name_kanji, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_regn_critic_pass + SET + disease_name_kanji = :disease_name_kanji, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_regn_critic_pass + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + regn_co_critic_pass_cd = :regn_co_critic_pass_cd + """ + record: ComRegnCriticPass + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComRegnCriticPass) + 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.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: + return self.INSERT_QUERY + + # 存在する場合はUpdate + if len(self.record.disease_name_kanji) == 0: + return None + else: + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py new file mode 100644 index 00000000..ee950adb --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_regn_critic_pass.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComRegnCriticPass(UltmarcTable): + """レイアウト区分026: COM_地域クリティカルパス""" + maint_flag: str # 修正区分 + regn_co_critic_pass_cd: str # 地域クリティカルパスコード + disease_name_kanji: str # 疾患名(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.regn_co_critic_pass_cd = record[1] + self.disease_name_kanji = record[5] 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 54507832..0b9d973b 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 @@ -1,6 +1,6 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete import ( com_alma_mapper, com_dr_wrkplace_mapper, com_hamtec_mapper, - com_inst_mapper, com_forfront_med_equip_mapper, null_mapper) + com_inst_mapper, com_forfront_med_equip_mapper, com_regn_critic_pass_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database @@ -66,7 +66,7 @@ COM_TABLE_LIST = { # COM_医療機能評価 "024": null_mapper.NullMapper, # COM_地域クリティカルパス - "026": null_mapper.NullMapper, + "026": com_regn_critic_pass_mapper.ComRegnCriticPassMapper, # COM_疾患別リハビリテーション科 "027": null_mapper.NullMapper, # COM_政策医療 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv new file mode 100644 index 00000000..4c50f5fc --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_delete.csv @@ -0,0 +1,4 @@ +"026","01","C","20141113","20141114","" +"026","99","A","20141113","20141114","不明" +"026","02","A","20141113","20141114","骨折" +"026","98","C","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv new file mode 100644 index 00000000..09a4e485 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_insert.csv @@ -0,0 +1,3 @@ +"026","01","A","20141113","20141114","大腿骨頸部骨折" +"026","99","A","20141113","20141114","不明" +"026","55","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv new file mode 100644 index 00000000..7b84a0ff --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/com_regn_critic_pass_update.csv @@ -0,0 +1,3 @@ +"026","01","A","20141113","20141114","頸部骨折" +"026","99","A","20141113","20141114","" +"026","55","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv new file mode 100644 index 00000000..bd263ca7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_delete.csv @@ -0,0 +1,3 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:17","clsComRegnCriticPass" +"99","不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:51","clsComRegnCriticPass" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv new file mode 100644 index 00000000..e8c2ba1e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/db_com_regn_critic_pass_before_update.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","clsComRegnCriticPass" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv new file mode 100644 index 00000000..12548de0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_delete.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20171019","NULL","20230420","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:17","com_regn_critic_pass_mapper" +"02","骨折","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:18:53","com_regn_critic_pass_mapper","2017/10/19 11:18:53","com_regn_critic_pass_mapper" +"99","不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 11:09:17","clsComRegnCriticPass","2017/10/19 11:09:51","com_regn_critic_pass_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv new file mode 100644 index 00000000..81ce5d4b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_insert.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","大腿骨頸部骨折","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv new file mode 100644 index 00000000..68d07075 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/expect_com_regn_critic_pass_update.csv @@ -0,0 +1,4 @@ +"regn_co_critic_pass_cd","disease_name_kanji","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","頸部骨折","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"55","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこくけこあいうえおかきくけこあいうえおかき","20230423","20230423","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","com_regn_critic_pass_mapper","2023/03/24 10:04:58","com_regn_critic_pass_mapper" +"99","不明","20171024","NULL","NULL","NULL","NULL","NULL","NULL","2023/03/24 10:04:58","clsComRegnCriticPass","2023/03/24 10:04:58","clsComRegnCriticPass" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py new file mode 100644 index 00000000..a9eda2d6 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py @@ -0,0 +1,197 @@ +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_regn_critic_pass_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 TestComRegnCriticPassMapper: + """レイアウト区分026: 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_regn_critic_pass_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, 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_regn_critic_pass_insert.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + 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_regn_critic_pass_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'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_regn_critic_pass_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_regn_critic_pass', + 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_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, 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_regn_critic_pass_update.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_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}が、期待値以降であること' + + 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_regn_critic_pass_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_regn_critic_pass', {'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_regn_critic_pass_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_regn_critic_pass', + 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_regn_critic_pass_mapper.ComRegnCriticPassMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_regn_critic_pass_mapper.ComRegnCriticPassMapper, 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_regn_critic_pass_delete.csv')) + primary_keys = [f"'{primary_key['regn_co_critic_pass_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_regn_critic_pass WHERE regn_co_critic_pass_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}が、期待値以降であること' From e192b88be28c7de993dbe1b76119c819d2914567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 16:35:03 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_com_forfront_med_equip_mapper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py index fccc56ad..873d70c6 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py @@ -72,14 +72,14 @@ class TestComForfrontMedEquipMapper: actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" actual_data_list = self.db.execute_select(actual_select_sql) # 期待値検査 - ignore_columns = ['sys_update_date', 'sys_regist_date'] + 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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + if actual_col_name in ignore_columns: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' def test_update_record(self): @@ -126,7 +126,7 @@ class TestComForfrontMedEquipMapper: actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" actual_data_list = self.db.execute_select(actual_select_sql) # 期待値検査 - ignore_columns = ['sys_update_date'] + 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 @@ -183,7 +183,7 @@ class TestComForfrontMedEquipMapper: actual_select_sql = f"SELECT * FROM src05.com_forfront_med_equip WHERE forfront_med_equip_cd IN ({','.join(primary_keys)})" actual_data_list = self.db.execute_select(actual_select_sql) # 期待値検査 - ignore_columns = ['sys_update_date'] + 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 From dd32daebcc2cd86dbe3e18376500c297c4191007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 16:39:54 +0900 Subject: [PATCH 10/12] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E7=B7=A8=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_com_regn_critic_pass_mapper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py index a9eda2d6..738d7ea4 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_regn_critic_pass/test_com_regn_critic_pass_mapper.py @@ -40,7 +40,7 @@ class TestComRegnCriticPassMapper: def test_insert_record(self): """ Cases: - COM_出身校テーブルにレコードを登録する + COM_地域連携クリティカルパス校テーブルにレコードを登録する Arranges: - CSVデータを用意し、読み込む - 追加対象となるレコードを削除する @@ -85,7 +85,7 @@ class TestComRegnCriticPassMapper: def test_update_record(self): """ Cases: - COM_出身校テーブルのレコードを更新する + COM_地域連携クリティカルパス校テーブルのレコードを更新する Arranges: - CSVデータを用意し、読み込む - 更新対象となるレコードを登録する @@ -142,7 +142,7 @@ class TestComRegnCriticPassMapper: def test_logical_delete(self): """ Cases: - COM_出身校テーブルのレコードを1件論理削除する + COM_地域連携クリティカルパス校テーブルのレコードを1件論理削除する Arranges: - CSVデータを用意し、読み込む - 削除対象となるレコードを登録する From d34b3bee7581901bb9eb00a3c99c433c77f97a89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 24 Apr 2023 17:02:39 +0900 Subject: [PATCH 11/12] =?UTF-8?q?feat:=20V=E6=96=BD=E8=A8=AD=E7=B5=B1?= =?UTF-8?q?=E5=90=88=E3=83=9E=E3=82=B9=E3=82=BF=EF=BC=88=E6=B4=97=E6=9B=BF?= =?UTF-8?q?=E5=87=A6=E7=90=86=E4=B8=80=E6=99=82=E3=83=86=E3=83=BC=E3=83=96?= =?UTF-8?q?=E3=83=AB=EF=BC=89=E3=81=8B=E3=82=89=E3=81=AE=E6=B4=97=E6=9B=BF?= =?UTF-8?q?=E5=87=A6=E7=90=86(=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF)?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laundering/emp_chg_inst_laundering.py | 54 ++++++++----------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py index a9d5f1f3..f78ece9b 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/emp_chg_inst_laundering.py @@ -101,39 +101,29 @@ def _update_emp_chg_inst_lau_from_v_inst_merge_t(db: Database): logger.info('v_inst_merge_t Table Data is exists!') # v_inst_merge_t から、emp_chg_inst_lauをUpdateします - result = db.execute_select( + logger.debug("##########################") + logger.debug("#### UPDATE DATA #########") + logger.debug("##########################") + try: + elapsed_time = ElapsedTime() + update_sql = """ + UPDATE + src05.emp_chg_inst_lau el, internal05.v_inst_merge_t vimt + SET + el.inst_cd = vimt.v_inst_cd_merge, + el.lua_ope_dt = SYSDATE() + WHERE + el.inst_cd = vimt.v_inst_cd """ - SELECT - v_inst_cd, - v_inst_cd_merge - FROM - internal05.v_inst_merge_t - """ - ) - for row in result: - v_inst_cd = row['v_inst_cd'] - v_inst_cd_merge = row['v_inst_cd_merge'] - try: - elapsed_time = ElapsedTime() - update_sql = """ - UPDATE - src05.emp_chg_inst_lau - SET - inst_cd = :v_inst_cd_merge, - lua_ope_dt = SYSDATE() - WHERE - inst_cd = :v_inst_cd; - """ - update_result = db.execute( - update_sql, - {'v_inst_cd': v_inst_cd, 'v_inst_cd_merge': v_inst_cd_merge} - ) - logging_sql(logger, update_sql) - logger.info(f'Query OK, {update_result.rowcount} rows affected ({elapsed_time.of})') - except Exception as e: - logger.debug(f"emp_chg_inst_lau v_inst_cd could not set from {v_inst_cd} to {v_inst_cd_merge}!") - raise e - logger.debug(f"Success! emp_chg_inst_lau v_inst_cd was set from {v_inst_cd} to {v_inst_cd_merge}!") + res = db.execute(update_sql) + logging_sql(logger, update_sql) + logger.info(f'Query OK, {res.rowcount} rows affected ({elapsed_time.of})') + except Exception as e: + logger.debug("emp_chg_inst_lau.v_inst_cd could not set!") + raise e + + logger.debug("emp_chg_inst_lau.v_inst_cd was set!") + return From f11ee59248c73ea41f189b51072c3b753e8eaa2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 25 Apr 2023 09:50:28 +0900 Subject: [PATCH 12/12] =?UTF-8?q?feat:=20=E3=82=A4=E3=83=B3=E3=83=87?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=8C=E3=81=9A=E3=82=8C=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql b/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql index fb609b8c..6a6f9dd7 100644 --- a/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql @@ -40,7 +40,8 @@ BEGIN fcl_name, fcl_kn_name, fmt_addr, - prft_cd + prft_cd, + fcl_type ) SELECT vhmv.v_inst_cd, @@ -48,7 +49,8 @@ BEGIN fmv.fcl_name, fmv.fcl_kn_name, fmv.fmt_addr, - fmv.prft_cd + fmv.prft_cd, + fmv.fcl_type FROM src05.vop_hco_merge_v vhmv, src05.fcl_mst_v fmv @@ -66,7 +68,6 @@ BEGIN WHERE vhmv.v_inst_cd_merg = fmv.v_inst_cd AND STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') <= src05.get_syor_date() - AND ((fmv.fcl_type IN ('A1','A0')) OR fmv.fcl_type BETWEEN '20' AND '29') AND fmv.rec_sts_kbn != '9'; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args,