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 01/57] =?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 02/57] =?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 03/57] =?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 42e6ac73d00e61d519bd743ac18e924b40b82e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 18:20:08 +0900 Subject: [PATCH 04/57] =?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_rehabili_mapper.py | 96 +++++++++ .../utmp_tables/tables/com_rehabili.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_rehabili/__init__.py | 0 .../com_rehabili/com_rehabili_delete.csv | 7 + .../com_rehabili/com_rehabili_insert.csv | 6 + .../com_rehabili/com_rehabili_update.csv | 5 + .../db_com_rehabili_before_delete.csv | 6 + .../db_com_rehabili_before_update.csv | 6 + .../expect_com_rehabili_delete.csv | 7 + .../expect_com_rehabili_insert.csv | 7 + .../expect_com_rehabili_update.csv | 6 + .../com_rehabili/test_com_rehabili_mapper.py | 197 ++++++++++++++++++ 13 files changed, 360 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py new file mode 100644 index 00000000..1ff87694 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_rehabili_mapper.py @@ -0,0 +1,96 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_rehabili import ComRehabili + + +class ComRehabiliMapper(UltmarcTableMapper): + """レイアウト区分027: COM_疾患別リハビリテーション科 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_rehabili + WHERE + rehabili_cd = :rehabili_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_rehabili + ( + rehabili_cd, + rehabili_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :rehabili_cd, + :rehabili_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_rehabili + SET + rehabili_name = :rehabili_name, + update_ymd = :execute_date_str_ymd, + delete_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + rehabili_cd = :rehabili_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_rehabili + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + rehabili_cd = :rehabili_cd + """ + record: ComRehabili + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComRehabili) + 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 self.record.rehabili_name == '': + return None + else: + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py new file mode 100644 index 00000000..f1e13bb2 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_rehabili.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComRehabili(UltmarcTable): + """レイアウト区分027: COM_疾患別リハビリテーション科""" + maint_flag: str # 修正区分 + rehabili_cd: str # 疾患別リハビリコード + rehabili_name: str # リハビリテーション名称(漢字) + + def __init__(self, record: list[str]): + super().__init__(record) + self.maint_flag = record[2] + self.rehabili_cd = record[1] + self.rehabili_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 1c9f8a81..5146aa90 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 @@ -12,6 +12,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_nurse_assrt_mapper ComNurseAssrtMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_pharm_mapper import \ ComPharmMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_rehabili_mapper import \ + ComRehabiliMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ @@ -80,7 +82,7 @@ COM_TABLE_LIST = { # COM_地域クリティカルパス "026": NullMapper, # COM_疾患別リハビリテーション科 - "027": NullMapper, + "027": ComRehabiliMapper, # COM_政策医療 "028": NullMapper, # COM_医療圏都道府県 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv new file mode 100644 index 00000000..85d5cb95 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_delete.csv @@ -0,0 +1,7 @@ +"027","01","A","20141113","20141114","" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","C","20141113","20141114","廃用症候群リハビリテーション" +"027","05","A","20141113","20141114","心大血管疾患リハビリテーション" +"027","06","A","20141113","20141114","糖尿病リハビリテーション" +"027","99","C","20141113","20141114","糖尿病リハビリテーション" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv new file mode 100644 index 00000000..a3d3096b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_insert.csv @@ -0,0 +1,6 @@ +"027","01","A","20141113","20141114","脳血管疾患等リハビリテーション" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","A","20141113","20141114","心大血管疾患リハビリテーション" +"027","05","A","20141113","20141114","廃用症候群リハビリテーション" +"027","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv new file mode 100644 index 00000000..a9450b84 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/com_rehabili_update.csv @@ -0,0 +1,5 @@ +"027","01","A","20141113","20141114","" +"027","02","A","20141113","20141114","運動器リハビリテーション" +"027","03","A","20141113","20141114","呼吸器リハビリテーション" +"027","04","A","20141113","20141114","廃用症候群リハビリテーション" +"027","05","A","20141113","20141114","心大血管疾患リハビリテーション" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv new file mode 100644 index 00000000..50610683 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_delete.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_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","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"03","呼吸器リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"04","廃用症候群リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" +"05","心大血管疾患リハビリテーション","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:51:32","clsComRehabili" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv new file mode 100644 index 00000000..5990cb40 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/db_com_rehabili_before_update.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_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","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"03","呼吸器リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"04","心大血管疾患リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"05","廃用症候群リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv new file mode 100644 index 00000000..fa1a79eb --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_delete.csv @@ -0,0 +1,7 @@ +"rehabili_cd","rehabili_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","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"04","廃用症候群リハビリテーション","20171019","20171019","20230423","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"05","心大血管疾患リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 15:01:11","com_rehabili_mapper" +"06","糖尿病リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:01:11","com_rehabili_mapper","2022/10/19 15:01:11","com_rehabili_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv new file mode 100644 index 00000000..1e292c75 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_insert.csv @@ -0,0 +1,7 @@ +"rehabili_cd","rehabili_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","脳血管疾患等リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"02","運動器リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"04","心大血管疾患リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"05","廃用症候群リハビリテーション","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20230423","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 14:44:23","com_rehabili_mapper","2022/10/19 14:44:23","com_rehabili_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv new file mode 100644 index 00000000..f39d0ed8 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/expect_com_rehabili_update.csv @@ -0,0 +1,6 @@ +"rehabili_cd","rehabili_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","脳血管疾患等リハビリテーション","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2017/10/19 14:44:23","clsComRehabili" +"02","運動器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"03","呼吸器リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"04","廃用症候群リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" +"05","心大血管疾患リハビリテーション","20171019","20230423","NULL","NULL","NULL","NULL","NULL","2017/10/19 14:44:23","clsComRehabili","2022/10/19 14:51:32","com_rehabili_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_mapper.py new file mode 100644 index 00000000..29d44f4b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_rehabili/test_com_rehabili_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_rehabili_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 TestComRehabiliMapper: + """レイアウト区分027: 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_rehabili_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, 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_rehabili_insert.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_rehabili_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'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_rehabili_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_rehabili', + 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_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, 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_rehabili_update.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_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_rehabili_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_rehabili', {'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_rehabili_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_rehabili', + 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_rehabili_mapper.ComRehabiliMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_rehabili_mapper.ComRehabiliMapper, 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_rehabili_delete.csv')) + primary_keys = [f"'{primary_key['rehabili_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_rehabili WHERE rehabili_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 e33bbc88065e3cee0fbde3e90a24114b549c90ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 09:33:27 +0900 Subject: [PATCH 05/57] =?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_policy_med_mapper.py | 97 +++++++++ .../utmp_tables/tables/com_policy_med.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_policy_med/__init__.py | 0 .../com_policy_med/com_policy_med_delete.csv | 8 + .../com_policy_med/com_policy_med_insert.csv | 7 + .../com_policy_med/com_policy_med_update.csv | 7 + .../db_com_policy_med_before_delete.csv | 7 + .../db_com_policy_med_before_update.csv | 8 + .../expect_com_policy_med_delete.csv | 8 + .../expect_com_policy_med_insert.csv | 8 + .../expect_com_policy_med_update.csv | 8 + .../test_com_policy_med_mapper.py | 197 ++++++++++++++++++ 13 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_mapper.py new file mode 100644 index 00000000..17b1d937 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_policy_med_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_policy_med import ComPolicyMed + + +class ComPolicyMedMapper(UltmarcTableMapper): + """レイアウト区分028: COM_政策医療 登録処理 """ + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_policy_med + WHERE + policy_med_cd = :policy_med_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_policy_med + ( + policy_med_cd, + field_name, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :policy_med_cd, + :field_name, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_policy_med + SET + field_name = :field_name, + update_ymd = :execute_date_str_ymd, + delete_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + policy_med_cd = :policy_med_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + # 削除年月日 ← システム日付 + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_policy_med + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + policy_med_cd = :policy_med_cd + """ + record: ComPolicyMed + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPolicyMed) + 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 + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + return + + # 更新の場合 + if self.record.field_name != '': + self.queries.append(self.UPDATE_QUERY) + return + else: + self.queries.append(None) + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py new file mode 100644 index 00000000..ee726ae6 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_policy_med.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPolicyMed(UltmarcTable): + """レイアウト区分028: COM_政策医療""" + policy_med_cd: str # 政策医療コード + field_name: str # 分野名称(漢字) + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.policy_med_cd = record[1] + self.field_name = record[5] + self.maint_flag = record[2] 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 1c9f8a81..4b5a4aeb 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 @@ -12,6 +12,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_nurse_assrt_mapper ComNurseAssrtMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_pharm_mapper import \ ComPharmMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_policy_med_mapper import \ + ComPolicyMedMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ @@ -82,7 +84,7 @@ COM_TABLE_LIST = { # COM_疾患別リハビリテーション科 "027": NullMapper, # COM_政策医療 - "028": NullMapper, + "028": ComPolicyMedMapper, # COM_医療圏都道府県 "121": NullMapper, # COM_医療圏3次マスタ diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv new file mode 100644 index 00000000..ca4cadce --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_delete.csv @@ -0,0 +1,8 @@ +"028","01","A","20141113","20141114","" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","C","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","成育" +"028","06","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","07","A","20141113","20141114","心臓病" +"028","99","C","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv new file mode 100644 index 00000000..dc5032cd --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_insert.csv @@ -0,0 +1,7 @@ +"028","01","A","20141113","20141114","がん" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","A","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","成育" +"028","06","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv new file mode 100644 index 00000000..700df5d8 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/com_policy_med_update.csv @@ -0,0 +1,7 @@ +"028","01","A","20141113","20141114","" +"028","02","A","20141113","20141114","循環器病" +"028","03","A","20141113","20141114","精神疾患" +"028","04","A","20141113","20141114","神経・筋疾患(筋ジスを含む)" +"028","05","A","20141113","20141114","呼吸器疾患(結核を含む)" +"028","06","A","20141113","20141114","成育" +"028","99","A","20141113","20141114","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv new file mode 100644 index 00000000..6b9e4adf --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_delete.csv @@ -0,0 +1,7 @@ +"policy_med_cd","field_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","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"03","精神疾患","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"04","神経・筋疾患(筋ジスを含む)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"05","呼吸器疾患(結核を含む)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" +"06","成育","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:12:57","clsComPolicyMed" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv new file mode 100644 index 00000000..8595b154 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/db_com_policy_med_before_update.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_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","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"03","精神疾患","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"04","神経・筋疾患(筋ジスを含む)","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"05","成育","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"06","呼吸器疾患(結核を含む)","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" +"99","あああ","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/19 15:06:43","clsComPolicyMed" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv new file mode 100644 index 00000000..33d4b95f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_delete.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_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","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20171019","20171019","20230425","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"05","成育","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"06","呼吸器疾患(結核を含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2022/10/20 17:36:27","com_policy_med_mapper" +"07","心臓病","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:21:20","com_policy_med_mapper","2022/10/20 17:36:27","com_policy_med_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv new file mode 100644 index 00000000..84587999 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_insert.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_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","がん","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"02","循環器病","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"03","精神疾患","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"05","成育","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"06","呼吸器疾患(結核を含む)","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2022/10/19 15:06:43","com_policy_med_mapper","2022/10/19 15:06:43","com_policy_med_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv new file mode 100644 index 00000000..284e516f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/expect_com_policy_med_update.csv @@ -0,0 +1,8 @@ +"policy_med_cd","field_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","がん","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2017/10/19 15:06:43","clsComPolicyMed" +"02","循環器病","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"03","精神疾患","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"04","神経・筋疾患(筋ジスを含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"05","呼吸器疾患(結核を含む)","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"06","成育","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" +"99","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかき","20171019","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:06:43","clsComPolicyMed","2023/04/19 15:12:57","com_policy_med_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_mapper.py new file mode 100644 index 00000000..e0729d17 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_policy_med/test_com_policy_med_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_policy_med_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 TestComPolicyMedpMapper: + """ レイアウト区分028: 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_policy_med_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, 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_policy_med_insert.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_policy_med_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'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_policy_med_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_policy_med', + 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_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, 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_policy_med_update.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_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_policy_med_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_policy_med', {'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_policy_med_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_policy_med', + 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_policy_med_mapper.ComPolicyMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_policy_med_mapper.ComPolicyMedMapper, 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_policy_med_delete.csv')) + primary_keys = [f"'{primary_key['policy_med_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_policy_med WHERE policy_med_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 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 06/57] =?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, From f0f2da94e2cfd3b9eca026e4422c09868e83bcba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 16:19:12 +0900 Subject: [PATCH 07/57] =?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 --- .../src/batch/ultmarc/ultmarc_process.py | 2 +- .../concrete/com_sp_field_mapper.py | 146 +++++++++++ .../utmp_tables/tables/com_sp_field.py | 42 +++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_sp_field/__init__.py | 0 .../com_sp_field/com_sp_field_delete.csv | 3 + .../com_sp_field/com_sp_field_insert.csv | 7 + .../com_sp_field/com_sp_field_update.csv | 5 + .../db_com_sp_field_before_delete.csv | 7 + .../db_com_sp_field_before_update.csv | 7 + .../expect_com_sp_field_delete.csv | 5 + .../expect_com_sp_field_insert.csv | 8 + .../expect_com_sp_field_update.csv | 6 + .../com_sp_field/test_com_sp_field_mapper.py | 248 ++++++++++++++++++ 14 files changed, 488 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py b/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py index 4ed7ae03..5f234bf7 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py @@ -91,7 +91,7 @@ def _import_to_ultmarc_table(dat_file: DatFile): mapper_class.execute_queries() dat_file.count_up_success() except Exception as e: - logger.warning(e) + logger.info(e) record = line.records log_message = ','.join([f'"{r}"' for r in record]) logger.info(f'ERROR_LINE: {log_message}') diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py new file mode 100644 index 00000000..52307891 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -0,0 +1,146 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_sp_field import ComSpField + + +class ComSpFieldMapper(UltmarcTableMapper): + """レイアウト区分511: COM_専門分野 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialst_cd = :specialst_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_sp_field + ( + dcf_pcf_dr_cd, + specialst_cd, + specialst_maint_div, + specialst_flg, + specialst_publsh_ymd, + ackn_med_flg, + ackn_med_publsh_ymd, + guide_med_flg, + guide_med_publsh_ymd, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcf_pcf_dr_cd, + :specialst_cd, + :specialst_maint_div, + :specialst_flg, + :specialst_publsh_ymd, + :ackn_med_flg, + :ackn_med_publsh_ymd, + :guide_med_flg, + :guide_med_publsh_ymd, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_sp_field + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialst_cd = :specialst_cd + """ + + # 修正区分が「C(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL + LOGICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + and + specialst_cd = :specialst_cd + """ + record: ComSpField + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSpField) + 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(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL + if self.record.maint_flag == 'C' or (self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1'): + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + set_clauses = [] # 設定項目 + + # レコードの存在確認 + 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.specialst_maint_div) > 0: + set_clauses.append('specialst_maint_div = :specialst_maint_div') + + if len(self.record.specialst_flg) > 0: + set_clauses.append('specialst_flg = :specialst_flg') + set_clauses.append('specialst_publsh_ymd = :specialst_publsh_ymd') + if self.record.specialst_flg == '@': + self.query_parameter['specialst_flg'] = '' + self.query_parameter['specialst_publsh_ymd'] = '' + + if len(self.record.ackn_med_flg) > 0: + set_clauses.append('ackn_med_flg = :ackn_med_flg') + set_clauses.append('ackn_med_publsh_ymd = :ackn_med_publsh_ymd') + if self.record.ackn_med_flg == '@': + self.query_parameter['ackn_med_flg'] = '' + self.query_parameter['ackn_med_publsh_ymd'] = '' + + if len(self.record.guide_med_flg) > 0: + set_clauses.append('guide_med_flg = :guide_med_flg') + set_clauses.append('guide_med_publsh_ymd = :guide_med_publsh_ymd') + if self.record.guide_med_flg == '@': + self.query_parameter['guide_med_flg'] = '' + self.query_parameter['guide_med_publsh_ymd'] = '' + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + return update_query diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py new file mode 100644 index 00000000..cc761c54 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_sp_field.py @@ -0,0 +1,42 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSpField(UltmarcTable): + """レイアウト区分511: COM_専門分野""" + dcf_pcf_dr_cd: str # DCFPCF医師コード + dcf_dr_id: str # レコードID + dcf_dr_code: str # 個人コード + dcf_dr_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + specialst_cd: str # 専門医コード + specialst_maint_div: str # 予備/専門医メンテ区分 + specialst_flg: str # 専門医フラグ + specialst_publsh_ymd: str # 専門医掲載年月日 + ackn_med_flg: str # 認定医フラグ + ackn_med_publsh_ymd: str # 認定医掲載年月日 + guide_med_flg: str # 指導医フラグ + guide_med_publsh_ymd: str # 指導医掲載年月日 + +# メンテナンス年月日 と 予備/転送年月日 は未使用 + + def __init__(self, record: list[str]): + super().__init__(record) + + self.dcf_dr_id = record[1].strip() + self.dcf_dr_code = record[2].strip() + self.dcf_dr_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.specialst_cd = record[5].strip() + self.specialst_maint_div = record[6].strip() + + self.specialst_flg = record[9].strip() + self.specialst_publsh_ymd = record[10].strip() + + self.ackn_med_flg = record[11].strip() + self.ackn_med_publsh_ymd = record[12].strip() + + self.guide_med_flg = record[13].strip() + self.guide_med_publsh_ymd = record[14].strip() + + # DCFPCF医師コード(レコードID + 個人コード + 個人コード(予備)) + self.dcf_pcf_dr_cd = ''.join([self.dcf_dr_id, self.dcf_dr_code, self.dcf_dr_yobi]) 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 1c9f8a81..26ae3bbe 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 @@ -12,6 +12,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_nurse_assrt_mapper ComNurseAssrtMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_pharm_mapper import \ ComPharmMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_sp_field_mapper import \ + ComSpFieldMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ @@ -36,7 +38,7 @@ COM_TABLE_LIST = { # COM_医師勤務先 "502": ComDrWrkplaceMapper, # COM_専門分野 - "511": NullMapper, + "511": ComSpFieldMapper, # COM_都道府県医療機能情報(基本) "132": NullMapper, # COM_都道府県医療機能情報(施設設備) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv new file mode 100644 index 00000000..c6d1489b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv @@ -0,0 +1,3 @@ +"511","01","994301","00","B","0003","1","20161113","20161114","1","20170401","@","","","" +"511","01","995783","00","C","0003","2","20161113","20161114","1","20170221","1","20140810","","" +"511","01","997906","00","B","0032","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv new file mode 100644 index 00000000..b6e91047 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_insert.csv @@ -0,0 +1,7 @@ +"511","01","994301","00","A","0003","2","20141113","20141114","","","1","20140401","","" +"511","01","995783","00","A","0003","2","20141113","20141114","","","1","20140401","","" +"511","01","997682","00","A","0004","2","20141113","20141114","1","20131112","","","","" +"511","01","997906","00","A","0032","2","20141113","20141114","1","20130821","","","1","20130821" +"511","01","999613","00","A","0056","2","20141113","20141114","1","20140706","","","1","20140706" +"511","91","999999","99","B","9999","2","","","1","20220628","1","20230425","1","20230425" +"511","99","999999","99","A","9999","2","","","1","20220628","1","20230425","1","20230425" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv new file mode 100644 index 00000000..b7585d8d --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_update.csv @@ -0,0 +1,5 @@ +"511","01","994301","00","B","0003","2","20161113","20161114","1","20170401","@","","","" +"511","01","995783","00","B","0003","2","20161113","20161114","1","20170221","1","20140810","","" +"511","01","997906","00","B","0032","2","20170330","20170401","@","","","","@","" +"511","01","999613","00","B","0056","2","20161113","20161114","1","20180706","1","20170101","1","20180706" +"511","01","999613","00","B","9999","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv new file mode 100644 index 00000000..e88fa5e0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199430100","0003","2","1","20170401","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199578300","0003","2","1","20170221","1","20140810","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","","","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv new file mode 100644 index 00000000..9167aa40 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/db_com_sp_field_before_update.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199430100","0003","2","","","1","20140401","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199578300","0003","2","","","1","20140401","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","1","20130821","","","1","20130821","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199961300","0056","2","1","20140706","","","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv new file mode 100644 index 00000000..98e54371 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv @@ -0,0 +1,5 @@ +"dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","","","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","9999","2","1","20140706","1","20140401","1","20140706","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv new file mode 100644 index 00000000..f8720d26 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_insert.csv @@ -0,0 +1,8 @@ +"dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199430100","0003","2","","","1","20140401","","","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"0199578300","0003","2","","","1","20140401","","","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"0199768200","0004","2","1","20131112","","","","","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"0199790600","0032","2","1","20130821","","","1","20130821","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"0199961300","0056","2","1","20140706","","","1","20140706","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"9199999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" +"9999999999","9999","2","1","20220628","1","20230425","1","20230425","20230425","NULL","NULL","NULL","NULL","NULL","NULL","2023/01/08 17:05:14","com_sp_field_mapper","2023/01/08 17:05:14","com_sp_field_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv new file mode 100644 index 00000000..73bf0e1b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_update.csv @@ -0,0 +1,6 @@ +"dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199430100","0003","2","1","20170401","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199578300","0003","2","1","20170221","1","20140810","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" +"0199790600","0032","2","","","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" +"0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py new file mode 100644 index 00000000..986ee7e7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py @@ -0,0 +1,248 @@ +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_sp_field_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 TestComSpFieldMapper: + """レイアウト区分511: 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_sp_field_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, 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_sp_field_insert.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialst_cd = [{'specialst_cd': columns['specialst_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialst_cd = :specialst_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialst_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialst_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialst_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] + # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE alma_cd IN ({','.join(primary_keys)})" + # actual_data_list = self.db.execute_select(actual_select_sql) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_sp_field_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'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_sp_field_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sp_field', + 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_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, 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_sp_field_update.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialst_cd = [{'specialst_cd': columns['specialst_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialst_cd = :specialst_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialst_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialst_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialst_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_update.csv')) + # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] + # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys[0])}) AND specialst_cd IN ({','.join(primary_keys[1])})" + # 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_sp_field_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_sp_field', {'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_sp_field_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_sp_field', + 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_sp_field_mapper.ComSpFieldMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_sp_field_mapper.ComSpFieldMapper, 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_sp_field_delete.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_specialst_cd = [{'specialst_cd': columns['specialst_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_sp_field + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + AND specialst_cd = :specialst_cd\ + """ + for param_dcf_pcf_dr_cd, param_specialst_cd in zip(primary_keys_dcf_pcf_dr_cd, primary_keys_specialst_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_specialst_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_delete.csv')) + # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] + # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE alma_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 8f601405d762196701cc8f52f3069f2fe5cdd132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 16:45:05 +0900 Subject: [PATCH 08/57] =?UTF-8?q?=E5=A4=89=E6=95=B0=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/table_mapper/concrete/com_sp_field_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index 52307891..8e2df6e1 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -71,7 +71,7 @@ class ComSpFieldMapper(UltmarcTableMapper): """ # 修正区分が「C(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL - LOGICAL_DELETE_QUERY = """\ + PHYSICAL_DELETE_QUERY = """\ DELETE FROM src05.com_sp_field WHERE From 4e652db5c8ea6e678edfdb71721683d372ce5c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 16:49:34 +0900 Subject: [PATCH 09/57] =?UTF-8?q?=E5=A4=89=E6=95=B0=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/table_mapper/concrete/com_sp_field_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index 8e2df6e1..5031a7b5 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -92,7 +92,7 @@ class ComSpFieldMapper(UltmarcTableMapper): def make_query(self): # 修正区分が「C(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL if self.record.maint_flag == 'C' or (self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1'): - self.queries.append(self.LOGICAL_DELETE_QUERY) + self.queries.append(self.PHYSICAL_DELETE_QUERY) return # 追加、更新の場合 From 28fa04b9cbd761bc313531924167191b7b555ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 16:52:27 +0900 Subject: [PATCH 10/57] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/table_mapper/concrete/com_sp_field_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index 5031a7b5..38ea954a 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -70,7 +70,7 @@ class ComSpFieldMapper(UltmarcTableMapper): specialst_cd = :specialst_cd """ - # 修正区分が「C(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL + # 『修正区分がC(削除)』、もしくは、『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 PHYSICAL_DELETE_QUERY = """\ DELETE FROM src05.com_sp_field @@ -90,7 +90,7 @@ class ComSpFieldMapper(UltmarcTableMapper): self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} def make_query(self): - # 修正区分が「C(削除)」 か 修正区分が「B」で専門メンテナンス区分が「1」の場合の物理削除SQL + # 『修正区分がC(削除)』、もしくは、『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 if self.record.maint_flag == 'C' or (self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1'): self.queries.append(self.PHYSICAL_DELETE_QUERY) return From fb57750b603ae7a8e932441b6739d063776e7e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 25 Apr 2023 17:05:47 +0900 Subject: [PATCH 11/57] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_sp_field/com_sp_field_delete.csv | 5 ++++- .../com_sp_field/test_com_sp_field_mapper.py | 12 ------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv index c6d1489b..350bb655 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/com_sp_field_delete.csv @@ -1,3 +1,6 @@ "511","01","994301","00","B","0003","1","20161113","20161114","1","20170401","@","","","" "511","01","995783","00","C","0003","2","20161113","20161114","1","20170221","1","20140810","","" -"511","01","997906","00","B","0032","","","","","","","","","" +"511","01","997906","00","B","0032","2","","","","","","","","" +"511","01","997906","99","B","0032","2","","","","","","","","" +"511","01","994301","99","B","0003","1","","","","","","","","" +"511","01","995783","99","C","0003","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py index 986ee7e7..44798884 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/test_com_sp_field_mapper.py @@ -84,10 +84,6 @@ class TestComSpFieldMapper: assert len(sp_field_data) == 1, '1件取得できていること' actual_data_list.append(sp_field_data[0]) - # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] - # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE alma_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) @@ -155,10 +151,6 @@ class TestComSpFieldMapper: assert len(sp_field_data) == 1, '1件取得できていること' actual_data_list.append(sp_field_data[0]) - # expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_update.csv')) - # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] - # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys[0])}) AND specialst_cd IN ({','.join(primary_keys[1])})" - # 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) @@ -229,10 +221,6 @@ class TestComSpFieldMapper: assert len(sp_field_data) == 1, '1件取得できていること' actual_data_list.append(sp_field_data[0]) - # expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_sp_field_delete.csv')) - # primary_keys = [f"'{primary_key['dcf_pcf_dr_cd', 'specialst_cd']}'" for primary_key in expect_data_list] - # actual_select_sql = f"SELECT * FROM src05.com_sp_field WHERE alma_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) From bb00b9d9d42c10614d7e710a9344255b3bd1279f 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 17:08:38 +0900 Subject: [PATCH 12/57] =?UTF-8?q?feat:=20=E7=B4=8D=E5=85=A5=E5=85=88?= =?UTF-8?q?=E5=87=A6=E6=96=B9=E5=85=83=E3=83=9E=E3=82=B9=E3=82=BF=E6=B4=97?= =?UTF-8?q?=E6=9B=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../create_inst_presc_for_laundering.py | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py diff --git a/ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py new file mode 100644 index 00000000..c154bcdf --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py @@ -0,0 +1,144 @@ +from src.batch.batch_functions import logging_sql +from src.batch.common.batch_context import BatchContext +from src.db.database import Database +from src.error.exceptions import BatchOperationException +from src.logging.get_logger import get_logger +from src.time.elapsed_time import ElapsedTime + +logger = get_logger('納入先処方元マスタ洗替') +batch_context = BatchContext.get_instance() + + +def exec(): + db = Database.get_instance() + try: + db.connect() + logger.debug('納入先処方元マスタの洗替処理開始') + # ult_ident_presc_lauをTruncate + _truncate_ult_ident_presc_lau(db) + # トランザクション開始 + db.begin() + # ult_ident_presc から、ult_ident_presc_lauへInsert + _insert_into_ult_ident_presc_lau_from_ult_ident_presc(db) + # v_inst_merge_tから、ult_ident_presc_lauをUpdate + _update_ult_ident_presc_lau_from_v_inst_merge_t(db) + # inst_merge_tから、ult_ident_presc_lauをUpdate + _update_ult_ident_presc_lau_from_inst_merge_t(db) + # コミット + db.commit() + logger.debug('納入先処方元マスタの洗替処理製造終了') + except Exception as e: + db.rollback() + raise BatchOperationException(e) + finally: + db.disconnect() + + +def _truncate_ult_ident_presc_lau(db: Database): + try: + db.execute("TRUNCATE TABLE ult_ident_presc_lau") + except Exception as e: + logger.debug("納入先処方元マスタ(洗替後)の全件削除に失敗") + raise e + + logger.debug("納入先処方元マスタ(洗替後)の全件削除に成功") + return + + +def _insert_into_ult_ident_presc_lau_from_ult_ident_presc(db: Database): + try: + elapsed_time = ElapsedTime() + sql = "INSERT INTO ult_ident_presc_lau SELECT *, null FROM ult_ident_presc" + res = db.execute(sql) + logging_sql(logger, sql) + logger.info(f'処方元マスタから処方元マスタ(洗替後)に全件コピーに成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("処方元マスタから処方元マスタ(洗替後)に全件コピーに失敗") + raise e + + return + + +def _update_ult_ident_presc_lau_from_v_inst_merge_t(db: Database): + # v_inst_merge_tの元となるvop_hco_merge_vはデータが作られないため、この洗い替え処理は基本空振りする + try: + select_result = db.execute_select( + """ + SELECT + COUNT(v_inst_cd) AS row_count + FROM + internal05.v_inst_merge_t + """ + ) + except Exception as e: + logger.debug("V施設統合マスタ(洗替処理一時テーブル)からの移行対象施設件数取得失敗") + raise e + count = [row for row in select_result][0]['row_count'] + if count == 0: + logger.info('V施設統合マスタ(洗替処理一時テーブル)からの移行対象施設が存在しません') + return + + logger.info(f'V施設統合マスタ(洗替処理一時テーブル)からの移行対象施設件数取得成功 移行対象施設件数={count}') + + try: + elapsed_time = ElapsedTime() + update_sql = """ + UPDATE + src05.ult_ident_presc_lau uipl, internal05.v_inst_merge_t vimt + SET + uipl.ult_ident_cd = vimt.v_inst_cd_merge, + uipl.lau_ope_dt = SYSDATE() + WHERE + uipl.ult_ident_cd = vimt.v_inst_cd + """ + res = db.execute(update_sql) + logging_sql(logger, update_sql) + logger.info(f'納入先処方元マスタの納入先コードを施設コード移行先に更新成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("納入先処方元マスタの納入先コードを施設コード移行先に更新失敗") + raise e + + return + + +def _update_ult_ident_presc_lau_from_inst_merge_t(db: Database): + # inst_merge_tから、ult_ident_presc_lauをUpdate + try: + select_result = db.execute_select( + """ + SELECT + COUNT(dcf_dsf_inst_cd) AS row_count + FROM + internal05.inst_merge_t + """ + ) + except Exception as e: + logger.debug("施設統合マスタ(洗替処理一時テーブル)からの移行対象施設件数取得失敗") + raise e + + count = [row for row in select_result][0]['row_count'] + if count == 0: + logger.info('施設統合マスタ(洗替処理一時テーブル)からの移行対象施設が存在しません') + return + + logger.info(f'施設統合マスタ(洗替処理一時テーブル)からの移行対象施設件数取得成功 移行対象施設件数={count}') + # inst_merge_tから、ult_ident_presc_lauをUpdate + try: + elapsed_time = ElapsedTime() + update_sql = """ + UPDATE + src05.ult_ident_presc_lau uipl, internal05.inst_merge_t imt + SET + uipl.presc_cd = imt.dup_opp_cd, + uipl.lau_ope_dt = SYSDATE() + WHERE + uipl.presc_cd = imt.dcf_dsf_inst_cd + """ + res = db.execute(update_sql) + logging_sql(logger, update_sql) + logger.info(f'納入先処方元マスタの処方元コードを施設コード移行先に更新成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("納入先処方元マスタの処方元コードを施設コード移行先に更新失敗") + raise e + + return From 8b124f26babb69fb82716d6bfcb7e653b6f044d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 26 Apr 2023 11:40:26 +0900 Subject: [PATCH 13/57] =?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_dr_sosiety_mapper.py | 97 +++++++ .../utmp_tables/tables/com_dr_sosiety.py | 28 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_dr_sosiety/__init__.py | 0 .../com_dr_sosiety/com_dr_sosiety_delete.csv | 9 + .../com_dr_sosiety/com_dr_sosiety_insert.csv | 10 + .../com_dr_sosiety/com_dr_sosiety_update.csv | 3 + .../db_com_dr_sosiety_before_delete.csv | 11 + .../db_com_dr_sosiety_before_update.csv | 11 + .../expect_com_dr_sosiety_delete.csv | 3 + .../expect_com_dr_sosiety_insert.csv | 10 + .../expect_com_dr_sosiety_update.csv | 12 + .../test_com_dr_sosiety_mapper.py | 242 ++++++++++++++++++ 13 files changed, 439 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_mapper.py new file mode 100644 index 00000000..309362e6 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_sosiety_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_dr_sosiety import ComDrSosiety + + +class ComDrSosietyMapper(UltmarcTableMapper): + """レイアウト区分521: COM_所属学会 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr_sosiety + ( + sosiety_cd, + dcf_pcf_dr_cd, + sosiety_f, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :sosiety_cd, + :dcf_pcf_dr_cd, + :sosiety_f, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_dr_sosiety + SET + sosiety_f = :sosiety_f, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』SQL + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + record: ComDrSosiety + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDrSosiety) + 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): + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』 + if self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py new file mode 100644 index 00000000..53284e4d --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_sosiety.py @@ -0,0 +1,28 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComDrSosiety(UltmarcTable): + """レイアウト区分521: COM_所属学会""" + dcf_dr_id: str # レコードID + dcf_dr_code: str # 個人コード + dcf_dr_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + sosiety_cd: str # 学会コード + specialst_maint_div: str # 予備/専門医メンテ区分 + sosiety_f: str # 学会年度 + dcf_pcf_dr_cd: str # DCFPCF医師コード + +# メンテナンス年月日 と 予備/転送年月日 は未使用 + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcf_dr_id = record[1] + self.dcf_dr_code = record[2] + self.dcf_dr_yobi = record[3].strip() + self.maint_flag = record[4] + self.sosiety_cd = record[5] + self.specialst_maint_div = record[6] + self.sosiety_f = record[9] + + # DCFPCF医師コード(レコードID + 個人コード + 個人コード(予備)) + self.dcf_pcf_dr_cd = ''.join([self.dcf_dr_id, self.dcf_dr_code, self.dcf_dr_yobi]) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py index b843c78d..9f45812b 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -26,6 +26,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_regn_critic_pass_ma ComRegnCriticPassMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_func_valuation_mapper import \ ComMedFuncValuationMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper import \ + ComDrSosietyMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -33,7 +35,7 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ COM_TABLE_LIST = { # レコードID固定 # COM_医師学会 - "521": NullMapper, + "521": ComDrSosietyMapper, # COM_施設属性 "111": NullMapper, # COM_臨床研修病院 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv new file mode 100644 index 00000000..4e125d4b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_delete.csv @@ -0,0 +1,9 @@ +"521","01","994301","00","B","027","1","20160826","20160903","" +"521","01","995783","00","B","027","1","20160826","20160903","" +"521","01","997682","00","B","027","1","20160826","20160903","" +"521","01","997906","00","B","008","1","20170331","20170408","" +"521","01","997906","00","B","223","1","20170407","20170415","" +"521","01","997906","00","B","116","1","20170407","20170415","" +"521","01","999613","00","B","027","1","20170414","20170422","" +"521","01","999613","00","B","223","1","20170414","20170422","" +"521","01","999999","00","B","999","1","20170414","20170422","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv new file mode 100644 index 00000000..7ef35de9 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_insert.csv @@ -0,0 +1,10 @@ +"521","01","994301","00","A","027","2","20141113","20141114","2003" +"521","01","994301","00","A","223","2","20141113","20141114","2002" +"521","01","995783","00","A","027","2","20141113","20141114","2003" +"521","01","997682","00","A","027","2","20141113","20141114","2014" +"521","01","997906","00","A","027","2","20141113","20141114","2003" +"521","01","997906","00","A","116","2","20141113","20141114","2002" +"521","01","997906","00","A","223","2","20141113","20141114","2002" +"521","01","999613","00","A","027","2","20141113","20141114","2003" +"521","01","999613","00","A","223","2","20141113","20141114","2002" +"521","01","999999","99","A","999","2","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv new file mode 100644 index 00000000..b592b065 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/com_dr_sosiety_update.csv @@ -0,0 +1,3 @@ +"521","01","994301","00","B","027","2","20170826","20170903","2016" +"521","01","997906","00","B","008","2","20161113","20161114","2003" +"521","01","999999","99","B","999","2","20161113","20161114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv new file mode 100644 index 00000000..22213e4a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_delete.csv @@ -0,0 +1,11 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2016","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/11 21:20:37","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"008","0199790600","2003","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 14:00:03","clsComDrSosiety","2017/10/11 21:20:37","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv new file mode 100644 index 00000000..0de14d99 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/db_com_dr_sosiety_before_update.csv @@ -0,0 +1,11 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"999","0199999999","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv new file mode 100644 index 00000000..b614477b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_delete.csv @@ -0,0 +1,3 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv new file mode 100644 index 00000000..d4efb0c6 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_insert.csv @@ -0,0 +1,10 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"027","0199430100","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199578300","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199768200","2014","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199790600","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"027","0199961300","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"116","0199790600","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"223","0199430100","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"223","0199790600","2002","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" +"999","0199999999","","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/08 17:05:14","com_dr_sosiety_mapper","2023/04/08 17:05:14","com_dr_sosiety_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv new file mode 100644 index 00000000..a4b0381c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/expect_com_dr_sosiety_update.csv @@ -0,0 +1,12 @@ +"sosiety_cd","dcf_pcf_dr_cd","sosiety_f","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"008","0199790600","2003","20230426","NULL","NULL","NULL","NULL","NULL","2023/04/09 14:00:03","com_dr_sosiety_mapper","2023/04/09 14:00:03","com_dr_sosiety_mapper" +"027","0199430100","2016","20171008","20230426","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2023/04/09 14:00:03","com_dr_sosiety_mapper" +"027","0199578300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199768200","2014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199790600","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"027","0199961300","2003","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"116","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199430100","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199790600","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"223","0199961300","2002","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2017/10/08 20:57:12","clsComDrSosiety" +"999","0199999999","","20171008","20230426","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrSosiety","2023/04/08 20:57:12","com_dr_sosiety_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py new file mode 100644 index 00000000..d577cfa1 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_sosiety/test_com_dr_sosiety_mapper.py @@ -0,0 +1,242 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_dr_sosiety_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 TestComDrSosietyMapper: + """レイアウト区分521: COM_所属学会""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + self.db.begin() + + # testing + yield + + # teardown + self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_所属学会テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_sosiety_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_insert.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_sosiety_cd, param_dcf_pcf_dr_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_所属学会テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_sosiety_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'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_sosiety_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_update.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_dcf_pcf_dr_cd, param_sosiety_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + 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_dr_sosiety_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_sosiety', {'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_sosiety_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_sosiety', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_sosiety_mapper.ComDrSosietyMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_sosiety_mapper.ComDrSosietyMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_sosiety_delete.csv')) + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + primary_keys_sosiety_cd = [{'sosiety_cd': columns['sosiety_cd']} for columns in expect_data_list] + actual_data_list = [] + dr_sosiety_select_sql = """\ + SELECT * FROM src05.com_dr_sosiety + WHERE + sosiety_cd = :sosiety_cd + AND + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + \ + """ + for param_dcf_pcf_dr_cd, param_sosiety_cd in zip(primary_keys_sosiety_cd, primary_keys_dcf_pcf_dr_cd): + dr_sosiety_data = self.db.execute_select( + dr_sosiety_select_sql, + {**param_sosiety_cd, **param_dcf_pcf_dr_cd}) + assert len(dr_sosiety_data) == 1, '1件取得できていること' + actual_data_list.append(dr_sosiety_data[0]) + + # 期待値検査 + 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 b000c55b66fc57bd1d61ff9d8f84107eeae7352c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 26 Apr 2023 13:29:38 +0900 Subject: [PATCH 14/57] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ultmarc/utmp_tables/tables/com_dr.py | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py new file mode 100644 index 00000000..a9d148e3 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -0,0 +1,142 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComDr(UltmarcTable): + """レイアウト区分501: COM_医師""" + dcfdr_id: str # 個人コード(レコードID) + dcfdr_code: str # 個人コード(個人コード) + dcfd_yobi: str # 個人コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + drdel_code: str # 削除予定理由 + reptdr_id: str # 重複時相手先コード(レコードID) + reptdr_code: str # 重複時相手先コード(個人コード) + reptdr_yobi: str # 重複時相手先コード(予備) + dr_name: str # 医師名(漢字) + dr_name_kana: str # 医師名(カナ) + sexc_ode: str # 性別 + birthday_era: str # 生年月日(元号) + birthday_year: str # 生年月日(年) + birthday_month: str # 生年月日(月) + birthday_day: str # 生年月日(日) + home_town_code: str # 出身都道府県コード + medassoci_code: str # 医師会コード + grad_yearera: str # 卒年_元号 + grad_year: str # 卒年_年 + graduniv_code: str # 出身校コード + graduniv_dept_code: str # 出身校学部識別コード + drda_yera: str # 登録年_元号 + drday_year: str # 登録年_年 + medsbj_code1: str # 診療科目1 + medsbj_code2: str # 診療科目2 + medsbj_code3: str # 診療科目3 + medsbj_code4: str # 診療科目4 + medsbj_code5: str # 診療科目5 + dr_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + dr_zip_code: str # 郵便番号 + dr_addr: str # 自宅住所(漢字) + dr_addr_kana: str # 自宅住所(カナ) + dr_addr_num: str # 住所表示番号 + dr_addr_kanj_cnt1: str # 住所カウント_漢字(県) + dr_addr_kanj_cnt2: str # 住所カウント_漢字(市区町村) + dr_addr_kanj_cnt3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanj_cnt4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana_cnt1: str # 住所カウント_カナ(県) + dr_addr_kana_cnt2: str # 住所カウント_カナ(市区町村) + dr_addr_kana_cnt3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana_cnt4: str # 住所カウント_カナ(字・丁目) + dr_tel: str # 自宅電話番号 + use_stop_flag: str # 利用停止区分 + use_stopc_ode: str # 利用停止理由 + cre_stop_date: str # 利用停止登録年月日 + release_date: str # 利用停止解除年月日 + pract_class_code: str # 開勤区分 + pract_yearera: str # 開業年(元号) + pract_year: str # 開業年(年) + bskregst_flag: str # 一括登録フラグ + + dcf_pcf_dr_cd: str # DCFPCF医師コード + addr_village_cd: str # 住所(町字)コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + opp_dup_code: str # 相手先重複コード + + birth_day: str # 生年月日(西暦) + estab_y: str # 開業年(西暦) + grad_y: str # 卒業年(西暦) + drday_y: str # 登録年(西暦) + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfdr_id = record[1] + self.dcfdr_code = record[2] + self.dcfd_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.drdel_code = record[7].strip() + self.reptdr_id = record[8].strip() + self.reptdr_code = record[9].strip() + self.reptdr_yobi = record[10].strip() + self.dr_name = record[11].strip() + self.dr_name_kana = record[12].strip() + self.sexc_ode = record[13].strip() + self.birthday_era = record[14].strip() + self.birthday_year = record[15].strip() + self.birthday_month = record[16].strip() + self.birthday_day = record[17].strip() + self.home_town_code = record[18].strip() + self.medassoci_code = record[19].strip() + self.grad_yearera = record[20].strip() + self.grad_year = record[21].strip() + self.graduniv_code = record[22].strip() + self.graduniv_dept_code = record[23].strip() + self.drda_yera = record[24].strip() + self.drday_year = record[25].strip() + self.medsbj_code1 = record[26].strip() + self.medsbj_code2 = record[27].strip() + self.medsbj_code3 = record[28].strip() + self.medsbj_code4 = record[29].strip() + self.medsbj_code5 = record[30].strip() + self.dr_addr_lost_code = record[31].strip() + self.pref_code = record[32].strip() + self.city_code = record[33].strip() + self.addr_code1 = record[34].strip() + self.addr_code2 = record[35].strip() + self.dr_zip_code = record[36].strip() + self.dr_addr = record[37].strip() + self.dr_addr_kana = record[38].strip() + self.dr_addr_num = record[39] + self.dr_addr_kanj_cnt1 = record[40] + self.dr_addr_kanj_cnt2 = record[41] + self.dr_addr_kanj_cnt3 = record[42] + self.dr_addr_kanj_cnt4 = record[43] + self.dr_addr_kana_cnt1 = record[44] + self.dr_addr_kana_cnt2 = record[45] + self.dr_addr_kana_cnt3 = record[46] + self.dr_addr_kana_cnt4 = record[47] + self.dr_tel = record[48].strip() + self.use_stop_flag = record[49].strip() + self.use_stopc_ode = record[50].strip() + self.cre_stop_date = record[51].strip() + self.release_date = record[52].strip() + self.pract_class_code = record[53].strip() + self.pract_yearera = record[54].strip() + self.pract_year = record[55].strip() + self.bskregst_flag = record[56].strip() + + # DCFPCF医師コード + self.dcf_pcf_dr_cd = ''.join([self.dcfdr_id, self.dcfdr_code, self.dcfd_yobi]) + # 住所(町字)コード + self.addr_village_cd = ''.join([self.pref_code, self.city_code, self.addr_code1, self.addr_code2]) + # 住所カウントカナ + self.addr_cnt_kana = ''.join([self.dr_addr_kana_cnt1, self.dr_addr_kana_cnt2, self.dr_addr_kana_cnt3, self.dr_addr_kana_cnt4]) + # 住所カウント + self.addr_cnt = ''.join([self.dr_addr_kanj_cnt1, self.dr_addr_kanj_cnt2, self.dr_addr_kanj_cnt3, self.dr_addr_kanj_cnt4]) + # 相手先重複コード + self.dcf_pcf_dr_cd = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) From e89241455494834f57c258d85942084796d59d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 26 Apr 2023 13:43:51 +0900 Subject: [PATCH 15/57] =?UTF-8?q?=E5=B0=82=E9=96=80=E5=88=86=E9=87=8E?= =?UTF-8?q?=E3=81=AE=E5=89=8A=E9=99=A4=E5=87=A6=E7=90=86=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_sp_field_mapper.py | 6 +++--- .../com_sp_field/expect_com_sp_field_delete.csv | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index 38ea954a..18b4c64f 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -70,7 +70,7 @@ class ComSpFieldMapper(UltmarcTableMapper): specialst_cd = :specialst_cd """ - # 『修正区分がC(削除)』、もしくは、『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 PHYSICAL_DELETE_QUERY = """\ DELETE FROM src05.com_sp_field @@ -90,8 +90,8 @@ class ComSpFieldMapper(UltmarcTableMapper): self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} def make_query(self): - # 『修正区分がC(削除)』、もしくは、『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 - if self.record.maint_flag == 'C' or (self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1'): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.specialst_maint_div == '1': self.queries.append(self.PHYSICAL_DELETE_QUERY) return diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv index 98e54371..20feb37e 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_sp_field/expect_com_sp_field_delete.csv @@ -1,4 +1,5 @@ "dcf_pcf_dr_cd","specialst_cd","specialst_maint_div","specialst_flg","specialst_publsh_ymd","ackn_med_flg","ackn_med_publsh_ymd","guide_med_flg","guide_med_publsh_ymd","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" +"0199578300","0003","2","1","20170221","1","20140810","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" "0199768200","0004","2","1","20131112","","","","","20171008","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/08 17:05:14","clsComSpField" "0199790600","0032","2","","","","","","","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" "0199961300","0056","2","1","20180706","1","20170101","1","20180706","20171008","20230425","NULL","NULL","NULL","NULL","NULL","2017/10/08 17:05:14","clsComSpField","2017/10/09 20:21:51","com_sp_field_mapper" From f1641b273933f935b45679e99a098a9b62770b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 26 Apr 2023 13:57:37 +0900 Subject: [PATCH 16/57] =?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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/batch/jissekiaraigae.py | 14 -------------- .../laundering/create_inst_merge_for_laundering.py | 4 ++-- .../src/batch/laundering/sales_laundering.py | 7 +++++-- ...laundering.py => ult_ident_presc_laundering.py} | 9 ++------- 4 files changed, 9 insertions(+), 25 deletions(-) delete mode 100644 ecs/jskult-batch-daily/src/batch/jissekiaraigae.py rename ecs/jskult-batch-daily/src/batch/laundering/{create_inst_presc_for_laundering.py => ult_ident_presc_laundering.py} (92%) diff --git a/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py b/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py deleted file mode 100644 index be7e6384..00000000 --- a/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py +++ /dev/null @@ -1,14 +0,0 @@ -from src.batch.datachange import emp_chg_inst_lau -from src.batch.datachange import create_inst_merge_for_laundering -from src.logging.get_logger import get_logger - -logger = get_logger('実績洗替') - - -def batch_process(): - """実績洗替処理""" - logger.info('Start Jisseki Araigae Batch PGM.') - # 洗替用マスタ作成 - create_inst_merge_for_laundering.batch_process() - # 施設担当者洗替 - emp_chg_inst_lau.batch_process() diff --git a/ecs/jskult-batch-daily/src/batch/laundering/create_inst_merge_for_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/create_inst_merge_for_laundering.py index f631d460..2c9d7353 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/create_inst_merge_for_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/create_inst_merge_for_laundering.py @@ -5,7 +5,7 @@ from src.logging.get_logger import get_logger logger = get_logger('洗替用マスタ作成') -def batch_process(): +def exec(): db = Database.get_instance() try: @@ -17,7 +17,7 @@ def batch_process(): logger.debug('処理終了') except Exception as e: raise BatchOperationException(e) - finally: + finally: db.disconnect() diff --git a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py index cb95b702..f6d682b4 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/sales_laundering.py @@ -1,5 +1,5 @@ from src.batch.common.batch_context import BatchContext -from src.batch.laundering import emp_chg_inst_laundering +from src.batch.laundering import create_inst_merge_for_laundering, emp_chg_inst_laundering, ult_ident_presc_laundering from src.logging.get_logger import get_logger batch_context = BatchContext.get_instance() @@ -14,9 +14,12 @@ def exec(): if batch_context.is_not_business_day: logger.info('営業日ではないため、実績洗替処理をスキップします。') return - + # 洗替用マスタ作成 + create_inst_merge_for_laundering.exec() # 施設担当者洗替 emp_chg_inst_laundering.exec() + # 納入先処方元マスタ洗替 + ult_ident_presc_laundering.exec() # # 並列処理のテスト用コード # import time diff --git a/ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/ult_ident_presc_laundering.py similarity index 92% rename from ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py rename to ecs/jskult-batch-daily/src/batch/laundering/ult_ident_presc_laundering.py index c154bcdf..b7434967 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/create_inst_presc_for_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/ult_ident_presc_laundering.py @@ -16,19 +16,14 @@ def exec(): logger.debug('納入先処方元マスタの洗替処理開始') # ult_ident_presc_lauをTruncate _truncate_ult_ident_presc_lau(db) - # トランザクション開始 - db.begin() # ult_ident_presc から、ult_ident_presc_lauへInsert _insert_into_ult_ident_presc_lau_from_ult_ident_presc(db) # v_inst_merge_tから、ult_ident_presc_lauをUpdate _update_ult_ident_presc_lau_from_v_inst_merge_t(db) # inst_merge_tから、ult_ident_presc_lauをUpdate _update_ult_ident_presc_lau_from_inst_merge_t(db) - # コミット - db.commit() logger.debug('納入先処方元マスタの洗替処理製造終了') except Exception as e: - db.rollback() raise BatchOperationException(e) finally: db.disconnect() @@ -36,7 +31,7 @@ def exec(): def _truncate_ult_ident_presc_lau(db: Database): try: - db.execute("TRUNCATE TABLE ult_ident_presc_lau") + db.execute("TRUNCATE TABLE src05.ult_ident_presc_lau") except Exception as e: logger.debug("納入先処方元マスタ(洗替後)の全件削除に失敗") raise e @@ -48,7 +43,7 @@ def _truncate_ult_ident_presc_lau(db: Database): def _insert_into_ult_ident_presc_lau_from_ult_ident_presc(db: Database): try: elapsed_time = ElapsedTime() - sql = "INSERT INTO ult_ident_presc_lau SELECT *, null FROM ult_ident_presc" + sql = "INSERT INTO src05.ult_ident_presc_lau SELECT *, NULL FROM src05.ult_ident_presc" res = db.execute(sql) logging_sql(logger, sql) logger.info(f'処方元マスタから処方元マスタ(洗替後)に全件コピーに成功, {res.rowcount} 行更新 ({elapsed_time.of})') From ee85f61e1d2d761d1002d2b6b355afd6a9465281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 27 Apr 2023 19:01:19 +0900 Subject: [PATCH 17/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_dr_mapper.py | 536 ++++++++++++++++++ .../ultmarc/utmp_tables/tables/com_dr.py | 10 +- .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_dr/__init__.py | 0 .../table_mapper/com_dr/com_dr_delete.csv | 6 + .../table_mapper/com_dr/com_dr_insert.csv | 6 + .../table_mapper/com_dr/com_dr_update.csv | 7 + .../com_dr/db_com_dr_before_delete.csv | 8 + .../com_dr/db_com_dr_before_update.csv | 9 + .../db_com_dr_trt_course_before_delete.csv | 15 + .../db_com_dr_trt_course_before_insert.csv | 2 + .../db_com_dr_trt_course_before_update.csv | 15 + .../com_dr/expect_com_dr_delete.csv | 7 + .../com_dr/expect_com_dr_insert.csv | 7 + .../expect_com_dr_trt_course_delete.csv | 15 + .../expect_com_dr_trt_course_insert.csv | 25 + .../expect_com_dr_trt_course_update.csv | 14 + .../com_dr/expect_com_dr_update.csv | 9 + .../table_mapper/com_dr/test_com_dr_mapper.py | 327 +++++++++++ 19 files changed, 1020 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py new file mode 100644 index 00000000..f8317533 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py @@ -0,0 +1,536 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_dr import ComDr + + +class ComDrMapper(UltmarcTableMapper): + """レイアウト区分501: COM_医師 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_dr + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_dr + ( + dcf_pcf_dr_cd, + dr_name_kana, + dr_name, + birthday_era, + birthday_year, + birthday_month, + birthday_day, + birthday, + hometown_cd, + estab_era, + estab_year, + estab_y, + home_phone_number, + home_addr_kana, + home_addr, + home_postal_number, + addr_village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + dr_circle_cd, + estab_div_cd, + sex_cd, + delete_sche_reason_cd, + addr_unknown_reason_cd, + alma_cd, + depart_disc_cd, + grad_era, + grad_year, + grad_y, + lump_regist_flg, + opp_dup_cd, + dr_ph_div, + use_stop_div, + use_stop_reason_cd, + use_stop_regist_ymd, + use_stop_cancel_ymd, + drday_era, + drday_year, + drday_y, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcf_pcf_dr_cd, + :dr_name_kana, + :dr_name, + :birthday_era, + :birthday_year, + :birthday_month, + :birthday_day, + :birth_day, + :home_town_code, + :pract_yearera, + :pract_year, + :estab_y, + :dr_tel, + :dr_addr_kana, + :dr_addr, + :dr_zip_code, + :addr_village_cd, + :pref_code, + :city_code, + :dr_addr_num, + :addr_cnt_kana, + :addr_cnt, + :medassoci_code, + :pract_class_code, + :sexc_ode, + :drdel_code, + :dr_addr_lost_code, + :graduniv_code, + :graduniv_dept_code, + :grad_yearera, + :grad_year, + :grad_y, + :bskregst_flag, + :opp_dup_code, + 1, + :use_stop_flag, + :use_stopc_ode, + :cre_stop_date, + :release_date, + :drda_yera, + :drday_year, + :drday_y, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_dr + SET + {update_columns} + dr_ph_div = 1, + abolish_ymd = NULL, + delete_flg = 0, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_dr + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # 西暦取得SQL + YEAR_GET_QUERY = """\ + SELECT + year AS year + FROM + src05.com_era + WHERE + era_cd = :era_cd + """ + + # COM_医師診療科目の物理削除SQL + PHYSICAL_DELETE_QUERY_TRT = """\ + DELETE FROM + src05.com_dr_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # COM_医師診療科目の登録用SQL + INSERT_QUERY_TRT1 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code1, + :dcf_pcf_dr_cd, + 1, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT2 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code2, + :dcf_pcf_dr_cd, + 2, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT3 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code3, + :dcf_pcf_dr_cd, + 3, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT4 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code4, + :dcf_pcf_dr_cd, + 4, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + INSERT_QUERY_TRT5 = """\ + INSERT INTO src05.com_dr_trt_course + ( + trt_course_cd, + dcf_pcf_dr_cd, + sequence, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :medsbj_code5, + :dcf_pcf_dr_cd, + 5, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComDr + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComDr) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} + + def make_query(self): + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # 西暦の取得 + self.__year_get() + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + return + + # 存在する場合ではUpdate + update_columns = ','.join(self.__make_update_query()) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + self.queries.append(None) + return + else: + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + return + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 削除予定理由 + if len(self.record.drdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :drdel_code') + if self.record.drdel_code == '@': + self.query_parameter['drdel_code'] = '' + + # 重複時相手先コード + if len(self.record.opp_dup_code) > 0: + set_clauses.append('opp_dup_cd = :opp_dup_code') + if self.record.reptdr_id == '@': + self.query_parameter['opp_dup_code'] = '' + + # 医師名(漢字) + if len(self.record.dr_name) > 0: + set_clauses.append('dr_name = :dr_name') + + # 医師名(カナ) + if len(self.record.dr_name_kana) > 0: + set_clauses.append('dr_name_kana = :dr_name_kana') + + # 性別 + if len(self.record.sexc_ode) > 0: + set_clauses.append('sex_cd = :sexc_ode') + + # 生年月日 + if len(self.record.birthday_era + self.record.birthday_year + self.record.birthday_month + self.record.birthday_day) > 0: + set_clauses.append('birthday_era = :birthday_era') + set_clauses.append('birthday_year = :birthday_year') + set_clauses.append('birthday_month = :birthday_month') + set_clauses.append('birthday_day = :birthday_day') + set_clauses.append('birthday = :birth_day') + if self.record.birthday_era == '@': + self.query_parameter['birthday_era'] = '' + self.query_parameter['birthday_year'] = '' + self.query_parameter['birthday_month'] = '' + self.query_parameter['birthday_day'] = '' + self.query_parameter['birth_day'] = '' + + # 出身都道府県コード + if len(self.record.home_town_code) > 0: + set_clauses.append('hometown_cd = :home_town_code') + + # 医師会コード + if len(self.record.medassoci_code) > 0: + set_clauses.append('dr_circle_cd = :medassoci_code') + + # 卒年 + if len(self.record.grad_yearera + self.record.grad_year) > 0: + set_clauses.append('grad_year = :grad_year') + set_clauses.append('grad_era = :grad_yearera') + set_clauses.append('grad_y = :grad_y') + if self.record.grad_yearera == '@': + self.query_parameter['grad_yearera'] = '' + self.query_parameter['grad_year'] = '' + self.query_parameter['grad_y'] = '' + + # 出身校コード + if len(self.record.graduniv_code) > 0: + set_clauses.append('alma_cd = :graduniv_code') + + # 出身校学部識別コード + if len(self.record.graduniv_dept_code) > 0: + set_clauses.append('depart_disc_cd = :graduniv_dept_code') + + # 登録年 + if len(self.record.drda_yera + self.record.drday_year) > 0: + set_clauses.append('drday_era = :drda_yera') + set_clauses.append('drday_year = :drday_year') + set_clauses.append('drday_y = :drday_y') + if self.record.drda_yera == '@': + self.query_parameter['drda_yera'] = '' + self.query_parameter['drday_year'] = '' + self.query_parameter['drday_y'] = '' + + # 住所不明 + if len(self.record.dr_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :dr_addr_lost_code') + if self.record.dr_addr_lost_code == '@': + self.query_parameter['dr_addr_lost_code'] = '' + + # 住所 + if len(self.record.pref_code + self.record.city_code + self.record.addr_code1 + self.record.addr_code2 + + self.record.dr_zip_code + self.record.dr_addr + self.record.dr_addr_kana + self.record.dr_addr_num + + self.record.dr_addr_kanj_cnt1 + self.record.dr_addr_kanj_cnt2 + self.record.dr_addr_kanj_cnt3 + + self.record.dr_addr_kanj_cnt4 + self.record.dr_addr_kana_cnt1 + self.record.dr_addr_kana_cnt2 + + self.record.dr_addr_kana_cnt3 + self.record.dr_addr_kana_cnt4) > 0: + set_clauses.append('home_addr_kana = :dr_addr_kana') + set_clauses.append('home_addr = :dr_addr') + set_clauses.append('home_postal_number = :dr_zip_code') + set_clauses.append('addr_village_cd = :addr_village_cd') + set_clauses.append('prefc_cd = :pref_code') + set_clauses.append('city_cd = :city_code') + set_clauses.append('addr_display_number = :dr_addr_num') + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 自宅電話番号 + if len(self.record.dr_tel) > 0: + set_clauses.append('home_phone_number = :dr_tel') + if self.record.dr_tel == '@': + self.query_parameter['dr_tel'] = '' + + # 利用停止区分 + if len(self.record.use_stop_flag) > 0: + set_clauses.append('use_stop_div = :use_stop_flag') + if self.record.use_stop_flag == '@': + self.query_parameter['use_stop_flag'] = '' + + # 利用停止理由 + if len(self.record.use_stopc_ode) > 0: + set_clauses.append('use_stop_reason_cd = :use_stopc_ode') + if self.record.use_stopc_ode == '@': + self.query_parameter['use_stopc_ode'] = '' + + # 利用停止登録年月日 + if len(self.record.cre_stop_date) > 0: + set_clauses.append('use_stop_regist_ymd = :cre_stop_date') + if self.record.cre_stop_date == '@': + self.query_parameter['cre_stop_date'] = '' + + # 利用停止解除年月日 + if len(self.record.release_date) > 0: + set_clauses.append('use_stop_cancel_ymd = :release_date') + if self.record.release_date == '@': + self.query_parameter['release_date'] = '' + + # 開勤区分 + if len(self.record.pract_class_code) > 0: + set_clauses.append('estab_div_cd = :pract_class_code') + + # 開業年 + if len(self.record.pract_yearera + self.record.pract_year) > 0: + set_clauses.append('estab_era = :pract_yearera') + set_clauses.append('estab_year = :pract_year') + set_clauses.append('estab_y = :estab_y') + if self.record.pract_yearera == '@': + self.query_parameter['pract_yearera'] = '' + self.query_parameter['pract_year'] = '' + self.query_parameter['estab_y'] = '' + + # 一括登録フラグ + if len(self.record.bskregst_flag) > 0: + set_clauses.append('lump_regist_flg = :bskregst_flag') + + return set_clauses + + def __make_delete_insert_trt_query(self): + # 削除 + self.queries.append(self.PHYSICAL_DELETE_QUERY_TRT) + + # 登録 + if self.record.medsbj_code1 != '@': + if len(self.record.medsbj_code1) > 0: + self.queries.append(self.INSERT_QUERY_TRT1) + if len(self.record.medsbj_code2) > 0: + self.queries.append(self.INSERT_QUERY_TRT2) + if len(self.record.medsbj_code3) > 0: + self.queries.append(self.INSERT_QUERY_TRT3) + if len(self.record.medsbj_code4) > 0: + self.queries.append(self.INSERT_QUERY_TRT4) + if len(self.record.medsbj_code5) > 0: + self.queries.append(self.INSERT_QUERY_TRT5) + + return + + def __year_get(self): + # 西暦の取得 + + # 生年月日(西暦) + if self.record.birthday_era != "@" and len(self.record.birthday_era) > 0 and len(self.record.birthday_year) > 0: + self.query_parameter['era_cd'] = self.record.birthday_era + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + ans_year = int(record_year[0]['year']) + int(self.record.birthday_year) + self.query_parameter['birth_day'] = ''.join([str(ans_year), self.record.birthday_month, self.record.birthday_day]) + + # 開業年(西暦) + if self.record.pract_yearera != "@" and len(self.record.pract_yearera) > 0 and len(self.record.pract_year) > 0: + self.query_parameter['era_cd'] = self.record.pract_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['estab_y'] = str(int(record_year[0]['year']) + int(self.record.pract_year)) + + # 卒業年(西暦) + if self.record.grad_yearera != "@" and len(self.record.grad_yearera) > 0 and len(self.record.grad_year) > 0: + self.query_parameter['era_cd'] = self.record.grad_yearera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['grad_y'] = str(int(record_year[0]['year']) + int(self.record.grad_year)) + + # 登録年(西暦) + if self.record.drda_yera != "@" and len(self.record.drda_yera) > 0 and len(self.record.drday_year) > 0: + self.query_parameter['era_cd'] = self.record.drda_yera + record_year = self.db.execute_select(self.YEAR_GET_QUERY, self.query_parameter) + self.query_parameter['drday_y'] = str(int(record_year[0]['year']) + int(self.record.drday_year)) + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py index a9d148e3..e621cb0e 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -71,6 +71,8 @@ class ComDr(UltmarcTable): grad_y: str # 卒業年(西暦) drday_y: str # 登録年(西暦) + era_cd: str # 元号コード + def __init__(self, record: list[str]): super().__init__(record) self.dcfdr_id = record[1] @@ -139,4 +141,10 @@ class ComDr(UltmarcTable): # 住所カウント self.addr_cnt = ''.join([self.dr_addr_kanj_cnt1, self.dr_addr_kanj_cnt2, self.dr_addr_kanj_cnt3, self.dr_addr_kanj_cnt4]) # 相手先重複コード - self.dcf_pcf_dr_cd = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) + self.opp_dup_code = ''.join([self.reptdr_id, self.reptdr_code, self.reptdr_yobi]) + + self.birth_day = '' # 生年月日(西暦) + self.estab_y = '' # 開業年(西暦) + self.grad_y = '' # 卒業年(西暦) + self.drday_y = '' # 登録年(西暦) + self.era_cd = '' # 元号コード diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py index b843c78d..c5cc977d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -26,6 +26,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_regn_critic_pass_ma ComRegnCriticPassMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_func_valuation_mapper import \ ComMedFuncValuationMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ + ComDrMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -39,7 +41,7 @@ COM_TABLE_LIST = { # COM_臨床研修病院 "112": NullMapper, # COM_医師 - "501": NullMapper, + "501": ComDrMapper, # COM_施設 "101": ComInstMapper, # COM_薬局 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv new file mode 100644 index 00000000..6b3b6b3c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_delete.csv @@ -0,0 +1,6 @@ +"501","01","222222","33","C","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997906","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","995783","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","999613","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","997682","00","C","20230427","20141129","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv new file mode 100644 index 00000000..cf50c90e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_insert.csv @@ -0,0 +1,6 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","01","994301","00","A","20141113","20141114","","","","","菅間 正気","カンマ セイキ","1","3","16","01","14","37","37","3","44","011","1","3","44","A01","C01","I01","K01","C04","","14","104","094","000","231-0862","神奈川県横浜市中区山手町126-1 クレスト山手306","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","126-1-306","04","05","03","00","08","10","07","00","045-625-2067","","","","","1","","","" +"501","01","995783","00","A","20141113","20141114","","","","","船越 正信","フナコシ マサノブ","1","3","29","01","06","53","55","3","53","039","1","3","53","A01","L01","E02","C04","L03","7","00","000","000","000","","","","","00","00","00","00","00","00","00","00","","02","A05","20051003","","2","","","" +"501","01","997682","00","A","20141113","20141114","","","","","川崎 三紀子","カワサキ ミキコ","2","3","46","10","03","99","99","4","11","057","1","4","11","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" +"501","01","997906","00","A","20141113","20141114","","","","","丘 守正","オカ モリマサ","1","3","20","03","11","99","31","3","45","799","1","","","A01","L01","A31","A21","A11","","08","221","095","000","312-0021","茨城県ひたちなか市大字三反田3892-4","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","3892-4","03","06","05","00","08","07","11","00","029-274-7110","","","","","1","4","03","" +"501","01","999613","00","A","20141113","20141114","5","01","481065","00","藤田 茜","フジタ アカネ","2","","","","","99","99","","","799","1","4","23","","","","","","6","00","000","000","000","","","","","00","00","00","00","00","00","00","00","","","","","","9","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv new file mode 100644 index 00000000..afdfb27c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -0,0 +1,7 @@ +"501","01","222222","33","A","20230425","20230426","7","8","9","10","11","12","1","4","15","06","17","18","19","1","21","022","3","4","25","A26","C27","I28","K29","L30","1","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","045-625-2048","49","50","20200501","20200502","3","4","55","6" +"501","99","999999","99","A","20230425","20230426","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"501","01","994301","00","B","20170911","20170912","","01","998099","00","","","2","","","","","","","","","022","2","","","@","","","","","","13","102","022","002","103-0013","東京都中央区日本橋人形町2-7-10-10","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","2-7-10-10","09","09","09","09","09","09","09","09","045-999-9999","03","B06","20160831","20161125","","","","1" +"501","01","995783","00","B","20170921","20170922","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","4","04","" +"501","01","997682","00","B","20170922","20170923","","","","","横浜 三紀子","ヨコハマ ミキコ","2","4","3","11","12","99","99","3","52","057","1","3","10","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" +"501","01","997906","00","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" +"501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv new file mode 100644 index 00000000..f6baf695 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv new file mode 100644 index 00000000..ccb0cb0a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaaa" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126−1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1","","","011","1","3","44","1969","","NULL","1","","","","","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","","","NULL","","","","","00000000000","00","000","","00000000","00000000","55","2","1","","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","NULL","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv new file mode 100644 index 00000000..cf12270f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv new file mode 100644 index 00000000..f2497d92 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_insert.csv @@ -0,0 +1,2 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv new file mode 100644 index 00000000..a9f320d5 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv new file mode 100644 index 00000000..94734929 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_delete.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","20230425","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2−7−10−10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","20230427","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv new file mode 100644 index 00000000..bc0d5932 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_insert.csv @@ -0,0 +1,7 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","","045-625-2067","カナガワケン ヨコハマシ ナカク ヤマテチヨウ 126-1 クレストヤマテ 306","神奈川県横浜市中区山手町126-1 クレスト山手306","231-0862","14104094000","14","104","126-1-306","08100700","04050300","37","1","1","","","011","1","3","44","1969","","","1","","","","","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","","","","","","","","00000000000","00","000","","00000000","00000000","55","2","1","","7","039","1","3","53","1978","","","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892-4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","","","","","","99","","","","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv new file mode 100644 index 00000000..900ee683 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_delete.csv @@ -0,0 +1,15 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","0199578300","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"A01","0199768200","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A58","0199768200","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"C04","0199578300","4","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"E02","0199578300","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L03","0199578300","5","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"L01","0199578300","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"U91","0199790600","1","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U92","0199790600","2","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U93","0199790600","3","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U94","0199790600","4","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" +"U95","0199790600","5","20171011","NULL","NULL","NULL","NULL","NULL","2017/10/11 21:20:37","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv new file mode 100644 index 00000000..06ef8f21 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv @@ -0,0 +1,25 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199430100","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A01","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A11","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A21","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A31","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C01","0199430100","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199430100","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C04","0199578300","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"E02","0199578300","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I01","0199430100","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K01","0199430100","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L01","0199578300","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L01","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" + + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv new file mode 100644 index 00000000..b62bbbca --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv @@ -0,0 +1,14 @@ +"trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"C27","0122222233","2","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"I28","0122222233","3","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"K29","0122222233","4","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" +"U91","0199790600","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U92","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U93","0199790600","3","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U94","0199790600","4","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"U95","0199790600","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv new file mode 100644 index 00000000..0101a49a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv @@ -0,0 +1,9 @@ +"dcf_pcf_dr_cd","dr_name_kana","dr_name","birthday_era","birthday_year","birthday_month","birthday_day","birthday","hometown_cd","estab_era","estab_year","estab_y","home_phone_number","home_addr_kana","home_addr","home_postal_number","addr_village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","dr_circle_cd","estab_div_cd","sex_cd","delete_sche_reason_cd","addr_unknown_reason_cd","alma_cd","depart_disc_cd","grad_era","grad_year","grad_y","lump_regist_flg","opp_dup_cd","dr_ph_div","use_stop_div","use_stop_reason_cd","use_stop_regist_ymd","use_stop_cancel_ymd","drday_era","drday_year","drday_y","cor_dnfdr_cd","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"0122222233","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" +"0199430100","カンマ セイキ","菅間 正気","3","16","01","14","19410114","37","","","NULL","045-999-9999","トウキヨウト チユウオウク ニホンバシニンギヨウチヨウ 2-7-10-10","東京都中央区日本橋人形町2-7-10-10","103-0013","13102022002","13","102","2-7-10-10","09090909","09090909","37","1","2","","","022","2","3","44","1969","1","0199809900","1","03","B06","20160831","20161125","3","44","1969","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199578300","フナコシ マサノブ","船越 正信","3","29","01","06","19540106","53","4","04","1992","","","","","00000000000","00","000","","00000000","00000000","55","2","1","5","7","039","1","3","53","1978","","NULL","1","02","A05","20051003","","3","53","1978","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199790600","オカ モリマサ","丘 守正","","","","","","99","","","","","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","","","","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2-8-30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","","","799","1","","","NULL","","0148106500","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py new file mode 100644 index 00000000..b9a5b703 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -0,0 +1,327 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_dr_mapper +from src.db.database import Database +from tests.testing_utility import (assert_table_results, + create_db_data_from_csv, + create_delete_sql_with_parameter, + create_insert_sql_with_parameter, + create_ultmarc_table_mapper_sut, + create_ultmarc_test_data_from_csv) + + +class TestComDrMapper: + """レイアウト区分501: COM_医師""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """テスト実行前後処理""" + self.batch_context = BatchContext.get_instance() + # setup + self.db = database + self.db.connect() + # self.db.begin() + + # testing + yield + + # teardown + # self.db.rollback() + self.db.disconnect() + + def test_insert_record(self): + """ + Cases: + COM_医師テーブルにレコードを登録する + Arranges: + - CSVデータを用意し、読み込む + - 追加対象となるレコードを削除する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_insert.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医師テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む(医師) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_update.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医師テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_dr_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む(医師) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(医師診察科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_dr_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_dr_mapper.ComDrMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_dr_mapper.ComDrMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() + sut.execute_queries() + + # Assert + # 期待値ファイルを読み込む + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_delete.csv')) + primary_keys = [f"'{primary_key['dcf_pcf_dr_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_dr WHERE dcf_pcf_dr_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(医師診察科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_delete.csv')) + primary_keys_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + primary_keys_dcf_pcf_dr_cd = [{'dcf_pcf_dr_cd': columns['dcf_pcf_dr_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_dr_trt_course + WHERE + trt_course_cd = :trt_course_cd + AND dcf_pcf_dr_cd = :dcf_pcf_dr_cd\ + """ + for param_course_cd, param_dcf_pcf_dr_cd in zip(primary_keys_course_cd, primary_keys_dcf_pcf_dr_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_course_cd, **param_dcf_pcf_dr_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['sequence', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 1db06f8dd27acc3691e289329764cbb33444ffa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Fri, 28 Apr 2023 17:56:06 +0900 Subject: [PATCH 18/57] =?UTF-8?q?feat:=20=E3=83=A1=E3=83=AB=E3=82=AF?= =?UTF-8?q?=E6=96=BD=E8=A8=AD=E3=83=9E=E3=82=B9=E3=82=BF=E4=BD=9C=E6=88=90?= =?UTF-8?q?(=E4=BB=AE=E5=AE=9F=E8=A3=85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/laundering/mst_inst_laundering.py | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py new file mode 100644 index 00000000..d05a1e60 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py @@ -0,0 +1,218 @@ +from src.batch.batch_functions import logging_sql +from src.batch.common.batch_context import BatchContext +from src.db.database import Database +from src.error.exceptions import BatchOperationException +from src.logging.get_logger import get_logger +from src.time.elapsed_time import ElapsedTime + +logger = get_logger('メルク施設マスタ作成') +batch_context = BatchContext.get_instance() + + +def exec(): + db = Database.get_instance() + try: + db.connect() + logger.debug('メルク施設マスタ作成処理開始') + # mst_instをTruncate + _truncate_mst_inst(db) + # fcl_mst_vから、mst_instへInsert + _insert_mst_inst_from_fcl_mst_v(db) + # com_instから、mst_instへInsert + _insert_mst_inst_from_com_inst(db) + logger.debug('メルク施設マスタ作成処理終了') + except Exception as e: + raise BatchOperationException(e) + finally: + db.disconnect() + + +def _truncate_mst_inst(db: Database): + try: + db.execute("TRUNCATE TABLE src05.mst_inst") + except Exception as e: + logger.debug("メルク施設マスタの全件削除に失敗") + raise e + + logger.debug("メルク施設マスタの全件削除に成功") + return + + +def _insert_mst_inst_from_fcl_mst_v(db: Database): + # fcl_mst_vから、mst_instへInsert + try: + elapsed_time = ElapsedTime() + sql = """ + INSERT INTO + src05.mst_inst ( + inst_cd, + inst_clas_cd, + inst_name_form, + inst_name, + pref_cd, + city_cd, + pref_name, + city_name, + address, + postal_cd, + tel_num, + delete_date, + v_inst_cd, + create_date, + update_date + ) + SELECT + fmv1.v_inst_cd, + CASE + WHEN fmv1.fcl_type IN ('A1','A0') THEN '3' + WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN '2' + END AS inst_clas_cd, + fmv1.fcl_name, + fmv1.fcl_abb_name, + fmv1.prft_cd, + RIGHT(fmv1.admin_kbn,3), + mp.prefc_name, + LEFT(mc.city_name,40), + CASE + WHEN fmv1.fcl_type IN ('A1','A0') THEN fmv1.fmt_addr + WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN CONCAT(fmv1.prft_name,fmv1.city_name,fmv1.addr_line_1) + END AS address, + fmv1.postal_cd, + fmv1.tel_num, + LEFT(fmv1.closed_dt, 10), + fmv1.v_inst_cd, + fmv1.ins_dt, + fmv1.upd_dt + FROM + src05.fcl_mst_v fmv1 + INNER JOIN ( + SELECT + v_inst_cd, + MAX(sub_num) AS sno + FROM + src05.fcl_mst_v + GROUP BY + v_inst_cd + ) fmv2 + ON fmv1.v_inst_cd = fmv2.v_inst_cd + AND fmv1.sub_num = fmv2.sno + LEFT OUTER JOIN src05.mst_prefc AS mp + ON fmv1.prft_cd = mp.prefc_cd + LEFT OUTER JOIN src05.mst_city AS mc + ON LEFT(fmv1.admin_kbn,2) = mc.prefc_cd + AND RIGHT(fmv1.admin_kbn,3) = mc.city_cd + WHERE + ((fmv1.fcl_type IN ('A1','A0')) OR fmv1.fcl_type BETWEEN '20' AND '29') + AND fmv1.rec_sts_kbn != '9' + """ + res = db.execute(sql) + logging_sql(logger, sql) + logger.info(f'V施設マスタからメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("V施設マスタからメルク施設マスタに登録失敗") + raise e + + return + + +def _insert_mst_inst_from_com_inst(db: Database): + # com_instから、mst_instへInsert + try: + elapsed_time = ElapsedTime() + sql = """ + SET SESSION optimizer_switch = 'derived_merge=off'; + INSERT INTO + src05.mst_inst + SELECT + ci.dcf_dsf_inst_cd, + '1', + ci.form_inst_name_kanji, + ci.inst_name_kanji, + ci.prefc_cd, + ci.city_cd, + mp.prefc_name, + LEFT(mc.city_name, 40), + ci.inst_addr, + ci.postal_number, + ci.inst_phone_number, + ci.bed_num, + ci.manage_cd, + LEFT(cm.manage_name, 40), + ci.abolish_ymd, + ci.inst_div_cd, + LEFT(cid.inst_div_name, 40), + mcmv.hco_vid_v, + ci.create_user, + ci.regist_date, + ci.update_user, + ci.update_date + FROM + src05.com_inst AS ci + LEFT OUTER JOIN src05.mst_prefc AS mp + ON ci.prefc_cd = mp.prefc_cd + LEFT OUTER JOIN src05.mst_city AS mc + ON ci.prefc_cd = mc.prefc_cd + AND ci.city_cd = mc.city_cd + LEFT OUTER JOIN src05.com_manage AS cm + ON ci.manage_cd = cm.manage_cd + LEFT OUTER JOIN src05.com_inst_div AS cid + ON ci.inst_div_cd = cid.inst_div_cd + LEFT OUTER JOIN ( + SELECT + mcmv4.* + FROM ( + SELECT + mcmv1.* + FROM + mdb_cnv_mst_v AS mcmv1 + INNER JOIN ( + SELECT + mcmv2.hco_vid_v, + MAX(mcmv2.sub_num) AS sno + FROM + mdb_cnv_mst_v mcmv2 + WHERE + mcmv2.rec_sts_kbn != '9' + AND src05.get_syor_date() >= mcmv2.start_date + GROUP BY + mcmv2.hco_vid_v + ) AS mcmv3 + ON mcmv1.hco_vid_v = mcmv3.hco_vid_v + AND mcmv1.sub_num = mcmv3.sno + ) mcmv4 + INNER JOIN ( + SELECT + MIN(mcmv8.hco_vid_v) AS hvv, + mcmv8.mdb_cd + FROM ( + SELECT + mcmv5.* + FROM + mdb_cnv_mst_v AS mcmv5 + INNER JOIN ( + SELECT + mcmv6.hco_vid_v, + MAX(mcmv6.SUB_NUM) AS SNO + FROM + mdb_cnv_mst_v AS mcmv6 + WHERE + mcmv6.rec_sts_kbn != '9' + AND src05.get_syor_date() >= mcmv6.start_date + GROUP BY + mcmv6.hco_vid_v) AS mcmv7 + ON mcmv5.hco_vid_v = mcmv7.hco_vid_v + AND mcmv5.sub_num = mcmv7.sno) AS mcmv8 + GROUP BY mcmv8.mdb_cd) AS mcmv9 + ON mcmv4.mdb_cd = mcmv9.mdb_cd + AND mcmv4.hco_vid_v = mcmv9.hvv + ) AS mcmv + ON ci.dcf_dsf_inst_cd = mcmv.mdb_cd + """ + res = db.execute(sql) + logging_sql(logger, sql) + logger.info(f'COM施設からメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("COM施設からメルク施設マスタに登録失敗") + raise e + + return From f09f54ed6f62c705544d64382a37d54959b667d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 1 May 2023 09:04:38 +0900 Subject: [PATCH 19/57] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv | 1 + .../table_mapper/com_dr/db_com_dr_before_update.csv | 1 + .../utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv | 2 +- .../utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py | 4 ++-- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv index afdfb27c..1fb79e85 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -5,3 +5,4 @@ "501","01","997682","00","B","20170922","20170923","","","","","横浜 三紀子","ヨコハマ ミキコ","2","4","3","11","12","99","99","3","52","057","1","3","10","A01","A58","","","","","13","119","047","000","173-0001","東京都板橋区本町6-3-301","トウキヨウト イタバシク ホンチヨウ 6-3-301","6-3-301","03","03","02","00","07","07","06","00","03-3579-1698","","","","","2","","","1" "501","01","997906","00","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" "501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" +"501","99","999999","90","B","20230425","20230426","@","@","9","10","11","12","1","@","15","06","17","18","19","@","21","022","3","@","25","@","C27","I28","K29","L30","@","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","@","@","@","@","@","3","@","55","6" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv index ccb0cb0a..0a6ea96a 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -6,4 +6,5 @@ "0199768200","カワサキ ミキコ","川崎 三紀子","3","46","10","03","19711003","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","4","11","1999","1","NULL","1","","","","","4","11","1999","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" +"9999999990","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv index 0101a49a..882e4c9e 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_update.csv @@ -5,5 +5,5 @@ "0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6-3-301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" "0199790600","オカ モリマサ","丘 守正","","","","","","99","","","","","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","","","","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" "0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2-8-30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","","","799","1","","","NULL","","0148106500","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/09 18:06:51","com_dr_mapper" +"9999999990","12","11","","","","","","18","","","","","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","","","022","3","","","","6","","1","","","","","","","","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_dr_mapper" "9999999999","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py index b9a5b703..9872cd6b 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -28,13 +28,13 @@ class TestComDrMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From 547bf6df956b640f1de6c0cefeb3bac2028edc60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 1 May 2023 13:15:27 +0900 Subject: [PATCH 20/57] =?UTF-8?q?feat:=20=E5=AE=9F=E8=A3=85=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E5=90=8D=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/laundering/mst_inst_laundering.py | 218 ------------------ 1 file changed, 218 deletions(-) delete mode 100644 ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py deleted file mode 100644 index d05a1e60..00000000 --- a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py +++ /dev/null @@ -1,218 +0,0 @@ -from src.batch.batch_functions import logging_sql -from src.batch.common.batch_context import BatchContext -from src.db.database import Database -from src.error.exceptions import BatchOperationException -from src.logging.get_logger import get_logger -from src.time.elapsed_time import ElapsedTime - -logger = get_logger('メルク施設マスタ作成') -batch_context = BatchContext.get_instance() - - -def exec(): - db = Database.get_instance() - try: - db.connect() - logger.debug('メルク施設マスタ作成処理開始') - # mst_instをTruncate - _truncate_mst_inst(db) - # fcl_mst_vから、mst_instへInsert - _insert_mst_inst_from_fcl_mst_v(db) - # com_instから、mst_instへInsert - _insert_mst_inst_from_com_inst(db) - logger.debug('メルク施設マスタ作成処理終了') - except Exception as e: - raise BatchOperationException(e) - finally: - db.disconnect() - - -def _truncate_mst_inst(db: Database): - try: - db.execute("TRUNCATE TABLE src05.mst_inst") - except Exception as e: - logger.debug("メルク施設マスタの全件削除に失敗") - raise e - - logger.debug("メルク施設マスタの全件削除に成功") - return - - -def _insert_mst_inst_from_fcl_mst_v(db: Database): - # fcl_mst_vから、mst_instへInsert - try: - elapsed_time = ElapsedTime() - sql = """ - INSERT INTO - src05.mst_inst ( - inst_cd, - inst_clas_cd, - inst_name_form, - inst_name, - pref_cd, - city_cd, - pref_name, - city_name, - address, - postal_cd, - tel_num, - delete_date, - v_inst_cd, - create_date, - update_date - ) - SELECT - fmv1.v_inst_cd, - CASE - WHEN fmv1.fcl_type IN ('A1','A0') THEN '3' - WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN '2' - END AS inst_clas_cd, - fmv1.fcl_name, - fmv1.fcl_abb_name, - fmv1.prft_cd, - RIGHT(fmv1.admin_kbn,3), - mp.prefc_name, - LEFT(mc.city_name,40), - CASE - WHEN fmv1.fcl_type IN ('A1','A0') THEN fmv1.fmt_addr - WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN CONCAT(fmv1.prft_name,fmv1.city_name,fmv1.addr_line_1) - END AS address, - fmv1.postal_cd, - fmv1.tel_num, - LEFT(fmv1.closed_dt, 10), - fmv1.v_inst_cd, - fmv1.ins_dt, - fmv1.upd_dt - FROM - src05.fcl_mst_v fmv1 - INNER JOIN ( - SELECT - v_inst_cd, - MAX(sub_num) AS sno - FROM - src05.fcl_mst_v - GROUP BY - v_inst_cd - ) fmv2 - ON fmv1.v_inst_cd = fmv2.v_inst_cd - AND fmv1.sub_num = fmv2.sno - LEFT OUTER JOIN src05.mst_prefc AS mp - ON fmv1.prft_cd = mp.prefc_cd - LEFT OUTER JOIN src05.mst_city AS mc - ON LEFT(fmv1.admin_kbn,2) = mc.prefc_cd - AND RIGHT(fmv1.admin_kbn,3) = mc.city_cd - WHERE - ((fmv1.fcl_type IN ('A1','A0')) OR fmv1.fcl_type BETWEEN '20' AND '29') - AND fmv1.rec_sts_kbn != '9' - """ - res = db.execute(sql) - logging_sql(logger, sql) - logger.info(f'V施設マスタからメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') - except Exception as e: - logger.debug("V施設マスタからメルク施設マスタに登録失敗") - raise e - - return - - -def _insert_mst_inst_from_com_inst(db: Database): - # com_instから、mst_instへInsert - try: - elapsed_time = ElapsedTime() - sql = """ - SET SESSION optimizer_switch = 'derived_merge=off'; - INSERT INTO - src05.mst_inst - SELECT - ci.dcf_dsf_inst_cd, - '1', - ci.form_inst_name_kanji, - ci.inst_name_kanji, - ci.prefc_cd, - ci.city_cd, - mp.prefc_name, - LEFT(mc.city_name, 40), - ci.inst_addr, - ci.postal_number, - ci.inst_phone_number, - ci.bed_num, - ci.manage_cd, - LEFT(cm.manage_name, 40), - ci.abolish_ymd, - ci.inst_div_cd, - LEFT(cid.inst_div_name, 40), - mcmv.hco_vid_v, - ci.create_user, - ci.regist_date, - ci.update_user, - ci.update_date - FROM - src05.com_inst AS ci - LEFT OUTER JOIN src05.mst_prefc AS mp - ON ci.prefc_cd = mp.prefc_cd - LEFT OUTER JOIN src05.mst_city AS mc - ON ci.prefc_cd = mc.prefc_cd - AND ci.city_cd = mc.city_cd - LEFT OUTER JOIN src05.com_manage AS cm - ON ci.manage_cd = cm.manage_cd - LEFT OUTER JOIN src05.com_inst_div AS cid - ON ci.inst_div_cd = cid.inst_div_cd - LEFT OUTER JOIN ( - SELECT - mcmv4.* - FROM ( - SELECT - mcmv1.* - FROM - mdb_cnv_mst_v AS mcmv1 - INNER JOIN ( - SELECT - mcmv2.hco_vid_v, - MAX(mcmv2.sub_num) AS sno - FROM - mdb_cnv_mst_v mcmv2 - WHERE - mcmv2.rec_sts_kbn != '9' - AND src05.get_syor_date() >= mcmv2.start_date - GROUP BY - mcmv2.hco_vid_v - ) AS mcmv3 - ON mcmv1.hco_vid_v = mcmv3.hco_vid_v - AND mcmv1.sub_num = mcmv3.sno - ) mcmv4 - INNER JOIN ( - SELECT - MIN(mcmv8.hco_vid_v) AS hvv, - mcmv8.mdb_cd - FROM ( - SELECT - mcmv5.* - FROM - mdb_cnv_mst_v AS mcmv5 - INNER JOIN ( - SELECT - mcmv6.hco_vid_v, - MAX(mcmv6.SUB_NUM) AS SNO - FROM - mdb_cnv_mst_v AS mcmv6 - WHERE - mcmv6.rec_sts_kbn != '9' - AND src05.get_syor_date() >= mcmv6.start_date - GROUP BY - mcmv6.hco_vid_v) AS mcmv7 - ON mcmv5.hco_vid_v = mcmv7.hco_vid_v - AND mcmv5.sub_num = mcmv7.sno) AS mcmv8 - GROUP BY mcmv8.mdb_cd) AS mcmv9 - ON mcmv4.mdb_cd = mcmv9.mdb_cd - AND mcmv4.hco_vid_v = mcmv9.hvv - ) AS mcmv - ON ci.dcf_dsf_inst_cd = mcmv.mdb_cd - """ - res = db.execute(sql) - logging_sql(logger, sql) - logger.info(f'COM施設からメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') - except Exception as e: - logger.debug("COM施設からメルク施設マスタに登録失敗") - raise e - - return From 67a22eab6017ea37bd185719cadf9299c0bacfa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 1 May 2023 13:17:42 +0900 Subject: [PATCH 21/57] =?UTF-8?q?feat:=20=E5=AE=9F=E8=A3=85=E6=B8=88?= =?UTF-8?q?=E3=81=BF=E3=82=BD=E3=83=BC=E3=82=B9=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D?= =?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/{create_mst_inst.py => mst_inst_laundering.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ecs/jskult-batch-daily/src/batch/laundering/{create_mst_inst.py => mst_inst_laundering.py} (100%) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/create_mst_inst.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py similarity index 100% rename from ecs/jskult-batch-daily/src/batch/laundering/create_mst_inst.py rename to ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py From e84b1eee3b6f064680c3381d3597f65b41518ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 1 May 2023 13:20:06 +0900 Subject: [PATCH 22/57] =?UTF-8?q?feat:=20=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E5=89=8D=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/laundering/mst_inst_laundering.py | 251 +++++++++++++++++- ecs/jskult-batch-daily/src/jobctrl_daily.py | 4 +- 2 files changed, 252 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py index 6b499a71..931aea37 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py @@ -1,5 +1,9 @@ +from src.batch.batch_functions import logging_sql from src.batch.common.batch_context import BatchContext +from src.db.database import Database +from src.error.exceptions import BatchOperationException from src.logging.get_logger import get_logger +from src.time.elapsed_time import ElapsedTime batch_context = BatchContext.get_instance() logger = get_logger('メルク施設マスタ作成') @@ -13,4 +17,249 @@ def exec(): logger.info('営業日ではない、かつ、アルトマーク取込が行われていないため、メルク施設マスタ作成処理をスキップします。') return - pass + db = Database.get_instance() + try: + db.connect() + logger.debug('メルク施設マスタ作成処理開始') + # mst_instをTruncate + _truncate_mst_inst(db) + # fcl_mst_vから、mst_instへInsert + _insert_mst_inst_from_fcl_mst_v(db) + # オプティマイザのderived_mergeフラグをoffにする + _set_optimizer_derived_merge_off(db) + # com_instから、mst_instへInsert + _insert_mst_inst_from_com_inst(db) + logger.debug('メルク施設マスタ作成処理終了') + except Exception as e: + raise BatchOperationException(e) + finally: + db.disconnect() + + +def _truncate_mst_inst(db: Database): + try: + db.execute("TRUNCATE TABLE src05.mst_inst") + except Exception as e: + logger.debug("メルク施設マスタの全件削除に失敗") + raise e + + logger.debug("メルク施設マスタの全件削除に成功") + return + + +def _insert_mst_inst_from_fcl_mst_v(db: Database): + # fcl_mst_vから、mst_instへInsert + try: + elapsed_time = ElapsedTime() + sql = """ + INSERT INTO + src05.mst_inst ( + inst_cd, + inst_clas_cd, + inst_name_form, + inst_name, + pref_cd, + city_cd, + pref_name, + city_name, + address, + postal_cd, + tel_num, + delete_date, + v_inst_cd, + create_date, + update_date + ) + SELECT + fmv1.v_inst_cd, + CASE + WHEN fmv1.fcl_type IN ('A1','A0') THEN '3' + WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN '2' + END AS inst_clas_cd, + fmv1.fcl_name, + fmv1.fcl_abb_name, + fmv1.prft_cd, + RIGHT(fmv1.admin_kbn,3), + mp.prefc_name, + LEFT(mc.city_name,40), + CASE + WHEN fmv1.fcl_type IN ('A1','A0') THEN RIGHT(fmv1.fmt_addr, 200) + WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN CONCAT(fmv1.prft_name,fmv1.city_name,fmv1.addr_line_1) + END AS address, + fmv1.postal_cd, + fmv1.tel_num, + LEFT(fmv1.closed_dt, 10), + fmv1.v_inst_cd, + fmv1.ins_dt, + fmv1.upd_dt + FROM + src05.fcl_mst_v AS fmv1 + INNER JOIN ( + SELECT + v_inst_cd, + MAX(sub_num) AS sno + FROM + src05.fcl_mst_v + GROUP BY + v_inst_cd + ) fmv2 + ON fmv1.v_inst_cd = fmv2.v_inst_cd + AND fmv1.sub_num = fmv2.sno + LEFT OUTER JOIN src05.mst_prefc AS mp + ON fmv1.prft_cd = mp.prefc_cd + LEFT OUTER JOIN src05.mst_city AS mc + ON LEFT(fmv1.admin_kbn,2) = mc.prefc_cd + AND RIGHT(fmv1.admin_kbn,3) = mc.city_cd + WHERE + ((fmv1.fcl_type IN ('A1','A0')) OR fmv1.fcl_type BETWEEN '20' AND '29') + AND fmv1.rec_sts_kbn != '9' + """ + res = db.execute(sql) + logging_sql(logger, sql) + logger.info(f'V施設マスタからメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("V施設マスタからメルク施設マスタに登録失敗") + raise e + + return + + +def _set_optimizer_derived_merge_off(db: Database): + # オプティマイザのderived_mergeフラグをoffにする + try: + sql = """ + SET SESSION optimizer_switch = 'derived_merge=off' + """ + db.execute(sql) + except Exception as e: + logger.debug("オプティマイザのderived_mergeフラグの値変更に失敗") + raise e + + +def _insert_mst_inst_from_com_inst(db: Database): + # com_instから、mst_instへInsert + try: + elapsed_time = ElapsedTime() + sql = """ + INSERT INTO + src05.mst_inst ( + inst_cd, + inst_clas_cd, + inst_name_form, + inst_name, + pref_cd, + city_cd, + pref_name, + city_name, + address, + postal_cd, + tel_num, + bed_num, + manage_cd, + manage_name, + delete_date, + inst_div_cd, + inst_div_name, + v_inst_cd, + creater, + create_date, + updater, + update_date + ) + SELECT + ci.dcf_dsf_inst_cd, + '1', + ci.form_inst_name_kanji, + ci.inst_name_kanji, + ci.prefc_cd, + ci.city_cd, + mp.prefc_name, + LEFT(mc.city_name, 40), + ci.inst_addr, + ci.postal_number, + ci.inst_phone_number, + ci.bed_num, + ci.manage_cd, + LEFT(cm.manage_name, 40), + ci.abolish_ymd, + ci.inst_div_cd, + LEFT(cid.inst_div_name, 40), + mcmv.hco_vid_v, + ci.create_user, + ci.regist_date, + ci.update_user, + ci.update_date + FROM + src05.com_inst AS ci + LEFT OUTER JOIN src05.mst_prefc AS mp + ON ci.prefc_cd = mp.prefc_cd + LEFT OUTER JOIN src05.mst_city AS mc + ON ci.prefc_cd = mc.prefc_cd + AND ci.city_cd = mc.city_cd + LEFT OUTER JOIN src05.com_manage AS cm + ON ci.manage_cd = cm.manage_cd + LEFT OUTER JOIN src05.com_inst_div AS cid + ON ci.inst_div_cd = cid.inst_div_cd + LEFT OUTER JOIN ( + SELECT + mcmv4.* + FROM ( + SELECT + mcmv1.* + FROM + src05.mdb_cnv_mst_v AS mcmv1 + INNER JOIN ( + SELECT + mcmv2.hco_vid_v, + MAX(mcmv2.sub_num) AS sno + FROM + src05.mdb_cnv_mst_v mcmv2 + WHERE + mcmv2.rec_sts_kbn != '9' + AND src05.get_syor_date() >= mcmv2.start_date + GROUP BY + mcmv2.hco_vid_v + ) AS mcmv3 + ON mcmv1.hco_vid_v = mcmv3.hco_vid_v + AND mcmv1.sub_num = mcmv3.sno + ) mcmv4 + INNER JOIN ( + SELECT + MIN(mcmv8.hco_vid_v) AS hvv, + mcmv8.mdb_cd + FROM ( + SELECT + mcmv5.* + FROM + src05.mdb_cnv_mst_v AS mcmv5 + INNER JOIN ( + SELECT + mcmv6.hco_vid_v, + MAX(mcmv6.SUB_NUM) AS sno + FROM + src05.mdb_cnv_mst_v AS mcmv6 + WHERE + mcmv6.rec_sts_kbn != '9' + AND src05.get_syor_date() >= mcmv6.start_date + GROUP BY + mcmv6.hco_vid_v + ) AS mcmv7 + ON mcmv5.hco_vid_v = mcmv7.hco_vid_v + AND mcmv5.sub_num = mcmv7.sno + ) AS mcmv8 + GROUP BY + mcmv8.mdb_cd + ) AS mcmv9 + ON mcmv4.mdb_cd = mcmv9.mdb_cd + AND mcmv4.hco_vid_v = mcmv9.hvv + ) AS mcmv + ON ci.dcf_dsf_inst_cd = mcmv.mdb_cd + """ + res = db.execute(sql) + logging_sql(logger, sql) + logger.info(f'COM施設からメルク施設マスタに登録成功, {res.rowcount} 行更新 ({elapsed_time.of})') + except Exception as e: + logger.debug("COM施設からメルク施設マスタに登録失敗") + raise e + + return diff --git a/ecs/jskult-batch-daily/src/jobctrl_daily.py b/ecs/jskult-batch-daily/src/jobctrl_daily.py index 370f2179..1a82f226 100644 --- a/ecs/jskult-batch-daily/src/jobctrl_daily.py +++ b/ecs/jskult-batch-daily/src/jobctrl_daily.py @@ -7,7 +7,7 @@ from src.batch.batch_functions import ( update_batch_processing_flag_in_processing) from src.batch.common.batch_context import BatchContext from src.batch.common.calendar_file import CalendarFile -from src.batch.laundering import create_dcf_inst_merge, create_mst_inst +from src.batch.laundering import create_dcf_inst_merge, mst_inst_laundering from src.batch.ultmarc import ultmarc_process from src.error.exceptions import BatchOperationException from src.logging.get_logger import get_logger @@ -91,7 +91,7 @@ def exec(): try: logger.info('メルク施設マスタ作成:起動') - create_mst_inst.exec() + mst_inst_laundering.exec() logger.info('メルク施設マスタ作成:終了') except BatchOperationException as e: logger.exception(f'メルク施設マスタ作成 エラー(異常終了){e}') From 1a13839e7236bc8734c3de0236fe1c185cf3f138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 1 May 2023 13:55:14 +0900 Subject: [PATCH 23/57] =?UTF-8?q?feat:=20=E4=B8=8D=E5=85=B7=E5=90=88?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/laundering/mst_inst_laundering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py index 931aea37..3c870328 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py @@ -83,7 +83,7 @@ def _insert_mst_inst_from_fcl_mst_v(db: Database): mp.prefc_name, LEFT(mc.city_name,40), CASE - WHEN fmv1.fcl_type IN ('A1','A0') THEN RIGHT(fmv1.fmt_addr, 200) + WHEN fmv1.fcl_type IN ('A1','A0') THEN LEFT(fmv1.fmt_addr, 200) WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN CONCAT(fmv1.prft_name,fmv1.city_name,fmv1.addr_line_1) END AS address, fmv1.postal_cd, From 054040cdfc96eca8a6ed484c5502a85aafed319d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 1 May 2023 16:30:43 +0900 Subject: [PATCH 24/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E4=BD=9C=E6=A5=AD=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_inst_mapper.py | 536 +++++++++++++++++- .../ultmarc/utmp_tables/tables/com_inst.py | 200 +++++++ 2 files changed, 734 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index 6a34c446..e989677d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -1,9 +1,541 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst +import datetime class ComInstMapper(UltmarcTableMapper): - """COM_施設 登録処理: TODO""" + """レイアウト区分101: COM_施設 登録処理: TODO""" + + # レコード存在確認SQL(COM_施設) + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設) + INSERT_INST_QUERY = """\ + INSERT INTO src05.com_inst + ( + dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + rltd_univ_prnt_cd, + bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + ward_abolish_flg, + inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + hp_assrt_cd, + dup_opp_cd, + insp_item_micrb, + insp_item_serum, + insp_item_blood, + insp_item_patho, + insp_item_paras, + insp_item_biochem, + insp_item_ri, + re_exam_cd, + prmit_bed_num_other, + prmit_bed_num_mental, + prmit_bed_num_tuber, + prmit_bed_num_infection, + prmit_bed_num_sum, + prmit_bed_num_gen, + prmit_bed_num_rcup, + prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + dcfdsf_inst_code, + hp_class_code, + hp_addr_lost_code, + hp_name_kana, + hp_ryaku_name_kana, + hp_name, + hp_ryaku_name, + univ_prnt_code, + bed_num, + close_flag, + open_flag, + close_year_month, + open_year_month, + close_flag2, + inst_repre_code, + president_kana, + president, + tel_nothing_flag, + uncheck_flag, + hp_tel, + hp_addr_kana, + hp_addr, + hp_zip_code, + village_code, + pref_code, + city_code, + hp_addr_number, + addr_cnt_kana, + addr_cnt, + mgt_class_code, + hpdel_code, + hp_kind_code, + dup_opp_code, + inspect_code1, + inspect_code2, + inspect_code3, + inspect_code4, + inspect_code5, + inspect_code6, + inspect_code7, + reexam_flagc, + bed_num_gen, + bed_num_psy, + bed_num_tub, + bed_num_epi, + bed_num_sum, + bed_num_gen2, + bed_num_rest, + bed_class_maint_date, + 1, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL(COM_施設) + UPDATE_INST_QUERY = """\ + UPDATE + src05.com_inst + SET + {update_columns} + abolish_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcfdsf_inst_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_inst + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設診療科目) + INSERT_INST_TRT_QUERY = """\ + INSERT INTO src05.com_inst_trt_course + ( + dcf_dsf_inst_cd, + trt_course_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :insert_trt_course_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ削除用SQL(COM_施設診療科目) + PHYSICAL_DELETE_TRT_QUERY = """\ + DELETE FROM + src05.com_inst_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # レコード存在確認SQL(COM_特養医務室) + RECORD_EXISTS_SPCARE_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_spcare_med_office_dat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ更新用SQL(COM_特養医務室) + UPDATE_SSPCARE_QUERY = """\ + UPDATE + src05.com_spcare_med_office_dat + SET + dcf_prnt_inst_cd = :dcf_prnt_inst_code, + update_ymd = :execute_date_str_ymd, + delete_ymd = :delete_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_chld_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_特養医務室) + INSERT_INST_SSPCARE_QUERY = """\ + INSERT INTO src05.com_spcare_med_office_dat + ( + dcf_chld_inst_cd, + dcf_prnt_inst_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dcf_prnt_inst_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComInst + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInst) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} def make_query(self): - self.queries.append(None) + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_QUERY) + + # 存在する場合はUpdate(施設) + self.__make_update_query() + + # 施設診療科目の削除挿入 + self.__make_delete_insert_trt_query + + # 特養医務室の追加、更新 + self.__make_upsert_spcare_query + + return + + def __make_update_query(self): + # 存在する場合はUpdate(施設) + set_clauses = [] # 設定項目 + + # 施設区分コード + if len(self.record.hp_class_code) > 0: + set_clauses.append('inst_div_cd = :hp_class_code') + + # 正式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('form_inst_name_kana = :hp_name_kana') + + # 略式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') + + # 正式施設名(漢字) + if len(self.record.hp_name) > 0: + set_clauses.append('form_inst_name_kanji = :hp_name') + + # 略式施設名(漢字) + if len(self.record.hp_ryaku_name_kana) > 0: + set_clauses.append('inst_name_kanji = :hp_ryaku_name_kana') + + # 施設住所カナ + if len(self.record.hp_addr_kana) > 0: + set_clauses.append('inst_addr_kana = :hp_addr_kana') + + # 施設住所 + if len(self.record.hp_addr) > 0: + set_clauses.append('inst_addr = :hp_addr') + + # 郵便番号 + if len(self.record.hp_zip_code) > 0: + set_clauses.append('postal_number = :hp_zip_code') + +# <<<<< 住所関連不明 >>>>>> + # 町字コード + if len(self.record.village_code) > 0: + set_clauses.append('village_cd = :village_code') + + # 都道府県コード + if len(self.record.pref_code) > 0: + set_clauses.append('prefc_cd = :pref_code') + + # 市区町村コード + if len(self.record.city_code) > 0: + set_clauses.append('city_cd = :city_code') + + # 住所カウント + if len(self.record.pref_code) > 0: + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 住所表示番号@いるの? + if len(self.record.hp_addr_number) > 0: + set_clauses.append('addr_display_number = :hp_addr_number') + + # 経営体コード@いるの? + if len(self.record.mgt_class_code) > 0: + set_clauses.append('manage_cd = :mgt_class_code') + +# <<<<< 住所関連不明 >>>>>> + + # 病院種別 + if len(self.record.hp_kind_code) > 0: + set_clauses.append('hp_assrt_cd = :hp_kind_code') + + # 再審査コード + if len(self.record.reexam_flag) > 0: + set_clauses.append('re_exam_cd = :reexam_flag') + + # 未確認フラグ + if len(self.record.uncheck_flag) > 0: + set_clauses.append('unconf_flg = :uncheck_flag') + if self.record.uncheck_flag == '@': + self.query_parameter['uncheck_flag'] = '' + + # 削除予定理由コード + if len(self.record.hpdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :hpdel_code') + if self.record.hpdel_code == '@': + self.query_parameter['hpdel_code'] = '' + + # 重複時相手先コード + if len(self.record.dup_opp_code) > 0: + set_clauses.append('dup_opp_cd = :dup_opp_code') + if self.record.dup_opp_code == '@': + self.query_parameter['dup_opp_code'] = '' + + # 住所不明理由コード + if len(self.record.hp_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code') + if self.record.hp_addr_lost_code == '@': + self.query_parameter['hp_addr_lost_code'] = '' + + # 電話番号なしフラグ + if len(self.record.tel_nothing_flag) > 0: + set_clauses.append('phone_number_non_flg = :tel_nothing_flag') + if self.record.tel_nothing_flag == '@': + self.query_parameter['tel_nothing_flag'] = '' + + # 電話番号 + if len(self.record.hp_tel) > 0: + set_clauses.append('inst_phone_number = :hp_tel') + if self.record.hp_tel == '@': + self.query_parameter['hp_tel'] = '' + + # 施設代表者コード + if len(self.record.inst_repre_code) > 0: + set_clauses.append('inst_repre_cd = :inst_repre_code') + if self.record.inst_repre_code == '@': + self.query_parameter['inst_repre_code'] = '' + + # 代表者(カナ) + if len(self.record.president_kana) > 0: + set_clauses.append('inst_repre_kana = :president_kana') + if self.record.president_kana == '@': + self.query_parameter['president_kana'] = '' + + # 代表者(漢字) ※「@」が大文字 + if len(self.record.president) > 0: + set_clauses.append('inst_repre = :president') + if self.record.president == '@': + self.query_parameter['president'] = '' + + # 開業予定フラグ・開業予定年月 + if len(self.record.open_flag + self.record.open_year_month) > 0: + set_clauses.append('estab_sche_flg = :open_flag') + set_clauses.append('estab_sche_ym = :open_year_month') + if self.record.open_flag == '@': + self.query_parameter['open_flag'] = '' + self.query_parameter['open_year_month'] = '' + + # 休院フラグ・休院開始年月 + if len(self.record.close_flag + self.record.close_year_month) > 0: + set_clauses.append('close_flg = :close_flag') + set_clauses.append('close_start_ym = :close_year_month') + if self.record.close_flag == '@': + self.query_parameter['close_flag'] = '' + self.query_parameter['close_year_month'] = '' + + # 関連大学親コード + if len(self.record.univ_prnt_code) > 0: + set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code') + if self.record.univ_prnt_code == '@': + self.query_parameter['univ_prnt_code'] = '' + + # 病棟閉鎖フラグ + if len(self.record.close_flag2) > 0: + set_clauses.append('ward_abolish_flg = :close_flag2') + if self.record.close_flag2 == '@': + self.query_parameter['close_flag2'] = '' + + # 病床数(定員) + if len(self.record.bed_num) > 0: + set_clauses.append('bed_num = :bed_num') + if self.record.bed_num == '@': + self.query_parameter['bed_num'] = '' + + # 許可病床メンテ日付 + if len(self.record.bed_class_maint_date) > 0: + set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date') + if self.record.bed_class_maint_date == '@': + self.query_parameter['bed_class_maint_date'] = '' + + # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.bed_num_sum + self.record.bed_num_psy + self.record.bed_num_tub + self.record.bed_num_epi + + self.record.bed_num_gen + self.record.bed_num_gen2 + self.record.bed_num_rest) > 0: + set_clauses.append('prmit_bed_num_sum = :bed_num_sum') + set_clauses.append('prmit_bed_num_mental = :bed_num_psy') + set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') + set_clauses.append('prmit_bed_num_infection = :bed_num_epi') + set_clauses.append('prmit_bed_num_other = :bed_num_gen') + set_clauses.append('prmit_bed_num_gen = :bed_num_gen2') + set_clauses.append('prmit_bed_num_rcup = :bed_num_rest') + if self.record.bed_num_sum == '@': + self.query_parameter['bed_num_sum'] = '' + self.query_parameter['bed_num_psy'] = '' + self.query_parameter['bed_num_tub'] = '' + self.query_parameter['bed_num_epi'] = '' + self.query_parameter['bed_num_gen'] = '' + self.query_parameter['bed_num_gen2'] = '' + self.query_parameter['bed_num_rest'] = '' + + # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.inspect_code1 + self.record.inspect_code2 + self.record.inspect_code3 + self.record.inspect_code4 + + self.record.inspect_code5 + self.record.inspect_code6 + self.record.inspect_code7) > 0: + set_clauses.append('insp_item_micrb = :inspect_code1') + set_clauses.append('insp_item_serum = :inspect_code2') + set_clauses.append('insp_item_blood = :inspect_code3') + set_clauses.append('insp_item_patho = :inspect_code4') + set_clauses.append('insp_item_paras = :inspect_code5') + set_clauses.append('insp_item_biochem = :inspect_code6') + set_clauses.append('insp_item_ri = :inspect_code7') + if self.record.inspect_code1 == '@': + self.query_parameter['inspect_code1'] = '' + self.query_parameter['inspect_code2'] = '' + self.query_parameter['inspect_code3'] = '' + self.query_parameter['inspect_code4'] = '' + self.query_parameter['inspect_code5'] = '' + self.query_parameter['inspect_code6'] = '' + self.query_parameter['inspect_code7'] = '' + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合は更新処理は行わない + if len(update_columns) == 0: + return + else: + update_columns += ',' + update_query = self.UPDATE_INST_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + + return + + def __make_delete_insert_trt_query(self): + # 施設診療科目の削除挿入 + delins_flg = False + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + delins_flg = True + break + + if not delins_flg: + return + + # 削除 + self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) + + if len(self.record.medsbj_code[0]) != "@": + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + self.query_parameter['insert_trt_course_cd'] = self.record.medsbj_code[i] + self.queries.append(self.INSERT_INST_TRT_QUERY) + return + + def __make_upsert_spcare_query(self): + # 特養医務室の追加、更新 + if (self.record.dcf_prnt_inst_code == "00" or len(self.record.dcf_prnt_inst_code) == 0): + return + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_SSPCARE_QUERY) + return + + # 存在する場合はUpdate + if self.record.dcf_prnt_inst_code == "@": + self.query_parameter['dcf_prnt_inst_code'] = '' + self.query_parameter['delete_ymd'] = datetime.datetime.now().strftime('%Y%m%d') + else: + self.query_parameter['delete_ymd'] = '' + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py new file mode 100644 index 00000000..4838f9ee --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -0,0 +1,200 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInst(UltmarcTable): + """レイアウト区分101: COM_施設""" + dcfhp_id: str # 施設コード(レコードID) + dcfhp_code: str # 施設コード(施設コード) + dcfh_yobi: str # 施設コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + uncheck_flag: str # 未確認フラグ + hpdel_code: str # 削除予定理由 + duphp_id: str # 重複時相手先コード(レコードID) + duphp_code: str # 重複時相手先コード(施設コード) + duphp_yobi: str # 重複時相手先コード(予備) + hp_name: str # 正式施設名(漢字) + hp_name_kana: str # 正式施設名(カナ) + hp_ryaku_name: str # 略式施設名(漢字) + hp_ryaku_name_kana: str # 略式施設名(カナ) + hp_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + hp_zip_code: str # 郵便番号 + hp_addr: str # 住所(漢字) + hp_addr_kana: str # 住所(カナ) + hp_addr_number: str # 住所表示番号 + dr_addr_kanji1: str # 住所カウント_漢字(県) + dr_addr_kanji2: str # 住所カウント_漢字(市区町村) + dr_addr_kanji3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanji4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana1: str # 住所カウント_カナ(県) + dr_addr_kana2: str # 住所カウント_カナ(市区町村) + dr_addr_kana3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana4: str # 住所カウント_カナ(字・丁目) + tel_nothing_flag: str # 電話番号なしフラグ + hp_tel: str # 電話番号 + mgt_class_code: str # 経営体 + hp_class_code: str # 施設区分 + president_id: str # 代表者コード(レコードID) + president_code: str # 代表者コード(個人コード) + president_yobi: str # 代表者コード(予備) + president: str # 代表者(漢字) + president_kana: str # 代表者(カナ) + open_flag: str # 開業予定フラグ + open_year_month: str # 開業予定年月 + close_flag: str # 休院フラグ + close_year_month: str # 休院開始年月 + medsbj_code = [] # 診療科目1~60 + hp_kind_code: str # 病院種別 + reexam_flag: str # 再審査区分 + assoc_parrent_id: str # 関連大学親コード(レコードID) + assoc_parrent_code: str # 関連大学親コード(施設コード) + assoc_parrent_yobi: str # 関連大学親コード(予備) + close_flag2: str # 病棟閉鎖フラグ + bed_num: str # 病床数(定員) + bed_class_maint_date: str # 許可病床メンテ日付 + bed_num_sum: str # 許可病床数_合計 + bed_num_psy: str # 許可病床数_精神 + bed_num_tub: str # 許可病床数_結核 + bed_num_epi: str # 許可病床数_感染症 + bed_num_gen: str # 許可病床数_その他 + bed_num_gen2: str # 許可病床数_一般病床 + bed_num_rest: str # 許可病床数_療養病床 + inspect_code1: str # 検査項目_微生物 + inspect_code2: str # 検査項目_血清 + inspect_code3: str # 検査項目_血液 + inspect_code4: str # 検査項目_病理 + inspect_code5: str # 検査項目_寄生虫 + inspect_code6: str # 検査項目_生化 + inspect_code7: str # 検査項目_RI + dcfhp_92id: str # 特養医務室コード(レコードID) + dcfhp_92code: str # 特養医務室コード(施設コード) + dcfhp_92yobi: str # 特養医務室コード(予備) + + dcfdsf_inst_code: str # DCFDSF施設コード + univ_prnt_code: str # 関連大学親コード + inst_repre_code: str # 施設代表者コード + village_code: str # 町字コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + dup_opp_code: str # 重複時相手先コード + dcf_prnt_inst_code: str # DCF親施設コード + + delete_ymd: str # 削除年月日(COM_特養医務室データ) + insert_trt_course_cd: str # 診療科目コード(COM_施設診療科目) + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfh_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.uncheck_flag = record[7].strip() + self.hpdel_code = record[8].strip() + self.duphp_id = record[9] + self.duphp_code = record[10].strip() + self.duphp_yobi = record[11].strip() + self.hp_name = record[12].strip() + self.hp_name_kana = record[13].strip() + self.hp_ryaku_name = record[14].strip() + self.hp_ryaku_name_kana = record[15].strip() + self.hp_addr_lost_code = record[16].strip() + self.pref_code = record[17].strip() + self.city_code = record[18].strip() + self.addr_code1 = record[19].strip() + self.addr_code2 = record[20].strip() + self.hp_zip_code = record[21].strip() + self.hp_addr = record[22] + self.hp_addr_kana = record[23] + self.hp_addr_number = record[24] + self.dr_addr_kanji1 = record[25].strip() + self.dr_addr_kanji2 = record[26].strip() + self.dr_addr_kanji3 = record[27].strip() + self.dr_addr_kanji4 = record[28].strip() + self.dr_addr_kana1 = record[29].strip() + self.dr_addr_kana2 = record[30].strip() + self.dr_addr_kana3 = record[31].strip() + self.dr_addr_kana4 = record[32].strip() + self.tel_nothing_flag = record[33].strip() + self.hp_tel = record[34].strip() + self.mgt_class_code = record[35].strip() + self.hp_class_code = record[36].strip() + self.president_id = record[37] + self.president_code = record[38].strip() + self.president_yobi = record[39] + self.president = record[40].strip() + self.president_kana = record[41].strip() + self.open_flag = record[42].strip() + self.open_year_month = record[43].strip() + self.close_flag = record[44].strip() + self.close_year_month = record[45].strip() + + # 診療科目1~60 + num = 46 + for i in range(0, 60): + self.medsbj_code[i] = record[num] + num += 1 + + self.hp_kind_code = record[106].strip() + self.reexam_flag = record[107].strip() + self.assoc_parrent_id = record[108].strip() + self.assoc_parrent_code = record[109].strip() + self.assoc_parrent_yobi = record[110].strip() + self.close_flag2 = record[111].strip() + self.bed_num = record[112].strip() + self.bed_class_maint_date = record[113].strip() + self.bed_num_sum = record[114].strip() + self.bed_num_psy = record[115].strip() + self.bed_num_tub = record[116].strip() + self.bed_num_epi = record[117].strip() + self.bed_num_gen = record[118].strip() + self.bed_num_gen2 = record[119].strip() + self.bed_num_rest = record[120].strip() + self.inspect_code1 = record[121].strip() + self.inspect_code2 = record[122].strip() + self.inspect_code3 = record[123].strip() + self.inspect_code4 = record[124].strip() + self.inspect_code5 = record[125].strip() + self.inspect_code6 = record[126].strip() + self.inspect_code7 = record[127].strip() + self.dcfhp_92id = record[128].strip() + self.dcfhp_92code = record[129].strip() + self.dcfhp_92yobi = record[130].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfh_yobi + # 関連大学親コード + self.univ_prnt_code = self.assoc_parrent_id + self.assoc_parrent_code + self.assoc_parrent_yobi + # 施設代表者コード + self.inst_repre_code = self.president_id + self.president_code + self.president_yobi + # 町字コード + self.village_code = self.pref_code + self.city_code + self.addr_code1 + self.addr_code2 + # 住所カウントカナ + self.addr_cnt_kana = self.dr_addr_kana1 + self.dr_addr_kana2 + self.dr_addr_kana3 + self.dr_addr_kana4 + # 住所カウント + self.addr_cnt = self.dr_addr_kanji1 + self.dr_addr_kanji2 + self.dr_addr_kanji3 + self.dr_addr_kanji4 + # 重複時相手先コード + self.dup_opp_code = self.duphp_id + self.duphp_code + self.duphp_yobi + # DCF親施設コード + self.dcf_prnt_inst_code = self.dcfhp_92id + self.dcfhp_92code + self.dcfhp_92yobi + + # 住所カウント_漢字の0埋め + self.dr_addr_kanji1.zfill(2) + self.dr_addr_kanji2.zfill(2) + self.dr_addr_kanji3.zfill(2) + self.dr_addr_kanji4.zfill(2) + + # 住所カウント_カナの0埋め + self.dr_addr_kana1.zfill(2) + self.dr_addr_kana2.zfill(2) + self.dr_addr_kana3.zfill(2) + self.dr_addr_kana4.zfill(2) + + self.delete_ymd = '' + self.insert_trt_course_cd = '' From 68c6ea576a5b3b0a9174b4de02b0d114802edde9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 1 May 2023 16:41:47 +0900 Subject: [PATCH 25/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E4=BD=9C=E6=A5=AD=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_inst_mapper.py | 536 +++++++++++++++++- .../ultmarc/utmp_tables/tables/com_inst.py | 200 +++++++ 2 files changed, 734 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index 6a34c446..e989677d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -1,9 +1,541 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst +import datetime class ComInstMapper(UltmarcTableMapper): - """COM_施設 登録処理: TODO""" + """レイアウト区分101: COM_施設 登録処理: TODO""" + + # レコード存在確認SQL(COM_施設) + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設) + INSERT_INST_QUERY = """\ + INSERT INTO src05.com_inst + ( + dcf_dsf_inst_cd, + inst_div_cd, + addr_unknown_reason_cd, + form_inst_name_kana, + inst_name_kana, + form_inst_name_kanji, + inst_name_kanji, + rltd_univ_prnt_cd, + bed_num, + close_flg, + estab_sche_flg, + close_start_ym, + estab_sche_ym, + ward_abolish_flg, + inst_repre_cd, + inst_repre_kana, + inst_repre, + phone_number_non_flg, + unconf_flg, + inst_phone_number, + inst_addr_kana, + inst_addr, + postal_number, + village_cd, + prefc_cd, + city_cd, + addr_display_number, + addr_cnt_kana, + addr_cnt, + manage_cd, + delete_sche_reason_cd, + hp_assrt_cd, + dup_opp_cd, + insp_item_micrb, + insp_item_serum, + insp_item_blood, + insp_item_patho, + insp_item_paras, + insp_item_biochem, + insp_item_ri, + re_exam_cd, + prmit_bed_num_other, + prmit_bed_num_mental, + prmit_bed_num_tuber, + prmit_bed_num_infection, + prmit_bed_num_sum, + prmit_bed_num_gen, + prmit_bed_num_rcup, + prmit_bed_maint_ymd, + inst_pharm_div, + abolish_ymd, + delete_flg, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + dcfdsf_inst_code, + hp_class_code, + hp_addr_lost_code, + hp_name_kana, + hp_ryaku_name_kana, + hp_name, + hp_ryaku_name, + univ_prnt_code, + bed_num, + close_flag, + open_flag, + close_year_month, + open_year_month, + close_flag2, + inst_repre_code, + president_kana, + president, + tel_nothing_flag, + uncheck_flag, + hp_tel, + hp_addr_kana, + hp_addr, + hp_zip_code, + village_code, + pref_code, + city_code, + hp_addr_number, + addr_cnt_kana, + addr_cnt, + mgt_class_code, + hpdel_code, + hp_kind_code, + dup_opp_code, + inspect_code1, + inspect_code2, + inspect_code3, + inspect_code4, + inspect_code5, + inspect_code6, + inspect_code7, + reexam_flagc, + bed_num_gen, + bed_num_psy, + bed_num_tub, + bed_num_epi, + bed_num_sum, + bed_num_gen2, + bed_num_rest, + bed_class_maint_date, + 1, + NULL, + 0, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL(COM_施設) + UPDATE_INST_QUERY = """\ + UPDATE + src05.com_inst + SET + {update_columns} + abolish_ymd = NULL, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_pcf_dr_cd = :dcfdsf_inst_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_inst + SET + abolish_ymd = :maint_date, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_施設診療科目) + INSERT_INST_TRT_QUERY = """\ + INSERT INTO src05.com_inst_trt_course + ( + dcf_dsf_inst_cd, + trt_course_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :insert_trt_course_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ削除用SQL(COM_施設診療科目) + PHYSICAL_DELETE_TRT_QUERY = """\ + DELETE FROM + src05.com_inst_trt_course + WHERE + dcf_pcf_dr_cd = :dcf_pcf_dr_cd + """ + + # レコード存在確認SQL(COM_特養医務室) + RECORD_EXISTS_SPCARE_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_spcare_med_office_dat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # データ更新用SQL(COM_特養医務室) + UPDATE_SSPCARE_QUERY = """\ + UPDATE + src05.com_spcare_med_office_dat + SET + dcf_prnt_inst_cd = :dcf_prnt_inst_code, + update_ymd = :execute_date_str_ymd, + delete_ymd = :delete_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_chld_inst_cd = :dcfdsf_inst_code + """ + + # データ登録用SQL(COM_特養医務室) + INSERT_INST_SSPCARE_QUERY = """\ + INSERT INTO src05.com_spcare_med_office_dat + ( + dcf_chld_inst_cd, + dcf_prnt_inst_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dcf_prnt_inst_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + record: ComInst + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInst) + program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) + # モジュール名をクエリパラメータに設定 + self.query_parameter['program_name'] = program_name + # 読み込んだレコード値もクエリパラメータに追加 + self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()} def make_query(self): - self.queries.append(None) + # 修正区分がC(削除)の場合、論理削除 + if self.record.maint_flag == 'C': + self.queries.append(self.LOGICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.queries.append(self.__make_upsert_query()) + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_QUERY) + + # 存在する場合はUpdate(施設) + self.__make_update_query() + + # 施設診療科目の削除挿入 + self.__make_delete_insert_trt_query + + # 特養医務室の追加、更新 + self.__make_upsert_spcare_query + + return + + def __make_update_query(self): + # 存在する場合はUpdate(施設) + set_clauses = [] # 設定項目 + + # 施設区分コード + if len(self.record.hp_class_code) > 0: + set_clauses.append('inst_div_cd = :hp_class_code') + + # 正式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('form_inst_name_kana = :hp_name_kana') + + # 略式施設名(カナ) + if len(self.record.hp_name_kana) > 0: + set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') + + # 正式施設名(漢字) + if len(self.record.hp_name) > 0: + set_clauses.append('form_inst_name_kanji = :hp_name') + + # 略式施設名(漢字) + if len(self.record.hp_ryaku_name_kana) > 0: + set_clauses.append('inst_name_kanji = :hp_ryaku_name_kana') + + # 施設住所カナ + if len(self.record.hp_addr_kana) > 0: + set_clauses.append('inst_addr_kana = :hp_addr_kana') + + # 施設住所 + if len(self.record.hp_addr) > 0: + set_clauses.append('inst_addr = :hp_addr') + + # 郵便番号 + if len(self.record.hp_zip_code) > 0: + set_clauses.append('postal_number = :hp_zip_code') + +# <<<<< 住所関連不明 >>>>>> + # 町字コード + if len(self.record.village_code) > 0: + set_clauses.append('village_cd = :village_code') + + # 都道府県コード + if len(self.record.pref_code) > 0: + set_clauses.append('prefc_cd = :pref_code') + + # 市区町村コード + if len(self.record.city_code) > 0: + set_clauses.append('city_cd = :city_code') + + # 住所カウント + if len(self.record.pref_code) > 0: + set_clauses.append('addr_cnt_kana = :addr_cnt_kana') + set_clauses.append('addr_cnt = :addr_cnt') + + # 住所表示番号@いるの? + if len(self.record.hp_addr_number) > 0: + set_clauses.append('addr_display_number = :hp_addr_number') + + # 経営体コード@いるの? + if len(self.record.mgt_class_code) > 0: + set_clauses.append('manage_cd = :mgt_class_code') + +# <<<<< 住所関連不明 >>>>>> + + # 病院種別 + if len(self.record.hp_kind_code) > 0: + set_clauses.append('hp_assrt_cd = :hp_kind_code') + + # 再審査コード + if len(self.record.reexam_flag) > 0: + set_clauses.append('re_exam_cd = :reexam_flag') + + # 未確認フラグ + if len(self.record.uncheck_flag) > 0: + set_clauses.append('unconf_flg = :uncheck_flag') + if self.record.uncheck_flag == '@': + self.query_parameter['uncheck_flag'] = '' + + # 削除予定理由コード + if len(self.record.hpdel_code) > 0: + set_clauses.append('delete_sche_reason_cd = :hpdel_code') + if self.record.hpdel_code == '@': + self.query_parameter['hpdel_code'] = '' + + # 重複時相手先コード + if len(self.record.dup_opp_code) > 0: + set_clauses.append('dup_opp_cd = :dup_opp_code') + if self.record.dup_opp_code == '@': + self.query_parameter['dup_opp_code'] = '' + + # 住所不明理由コード + if len(self.record.hp_addr_lost_code) > 0: + set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code') + if self.record.hp_addr_lost_code == '@': + self.query_parameter['hp_addr_lost_code'] = '' + + # 電話番号なしフラグ + if len(self.record.tel_nothing_flag) > 0: + set_clauses.append('phone_number_non_flg = :tel_nothing_flag') + if self.record.tel_nothing_flag == '@': + self.query_parameter['tel_nothing_flag'] = '' + + # 電話番号 + if len(self.record.hp_tel) > 0: + set_clauses.append('inst_phone_number = :hp_tel') + if self.record.hp_tel == '@': + self.query_parameter['hp_tel'] = '' + + # 施設代表者コード + if len(self.record.inst_repre_code) > 0: + set_clauses.append('inst_repre_cd = :inst_repre_code') + if self.record.inst_repre_code == '@': + self.query_parameter['inst_repre_code'] = '' + + # 代表者(カナ) + if len(self.record.president_kana) > 0: + set_clauses.append('inst_repre_kana = :president_kana') + if self.record.president_kana == '@': + self.query_parameter['president_kana'] = '' + + # 代表者(漢字) ※「@」が大文字 + if len(self.record.president) > 0: + set_clauses.append('inst_repre = :president') + if self.record.president == '@': + self.query_parameter['president'] = '' + + # 開業予定フラグ・開業予定年月 + if len(self.record.open_flag + self.record.open_year_month) > 0: + set_clauses.append('estab_sche_flg = :open_flag') + set_clauses.append('estab_sche_ym = :open_year_month') + if self.record.open_flag == '@': + self.query_parameter['open_flag'] = '' + self.query_parameter['open_year_month'] = '' + + # 休院フラグ・休院開始年月 + if len(self.record.close_flag + self.record.close_year_month) > 0: + set_clauses.append('close_flg = :close_flag') + set_clauses.append('close_start_ym = :close_year_month') + if self.record.close_flag == '@': + self.query_parameter['close_flag'] = '' + self.query_parameter['close_year_month'] = '' + + # 関連大学親コード + if len(self.record.univ_prnt_code) > 0: + set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code') + if self.record.univ_prnt_code == '@': + self.query_parameter['univ_prnt_code'] = '' + + # 病棟閉鎖フラグ + if len(self.record.close_flag2) > 0: + set_clauses.append('ward_abolish_flg = :close_flag2') + if self.record.close_flag2 == '@': + self.query_parameter['close_flag2'] = '' + + # 病床数(定員) + if len(self.record.bed_num) > 0: + set_clauses.append('bed_num = :bed_num') + if self.record.bed_num == '@': + self.query_parameter['bed_num'] = '' + + # 許可病床メンテ日付 + if len(self.record.bed_class_maint_date) > 0: + set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date') + if self.record.bed_class_maint_date == '@': + self.query_parameter['bed_class_maint_date'] = '' + + # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.bed_num_sum + self.record.bed_num_psy + self.record.bed_num_tub + self.record.bed_num_epi + + self.record.bed_num_gen + self.record.bed_num_gen2 + self.record.bed_num_rest) > 0: + set_clauses.append('prmit_bed_num_sum = :bed_num_sum') + set_clauses.append('prmit_bed_num_mental = :bed_num_psy') + set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') + set_clauses.append('prmit_bed_num_infection = :bed_num_epi') + set_clauses.append('prmit_bed_num_other = :bed_num_gen') + set_clauses.append('prmit_bed_num_gen = :bed_num_gen2') + set_clauses.append('prmit_bed_num_rcup = :bed_num_rest') + if self.record.bed_num_sum == '@': + self.query_parameter['bed_num_sum'] = '' + self.query_parameter['bed_num_psy'] = '' + self.query_parameter['bed_num_tub'] = '' + self.query_parameter['bed_num_epi'] = '' + self.query_parameter['bed_num_gen'] = '' + self.query_parameter['bed_num_gen2'] = '' + self.query_parameter['bed_num_rest'] = '' + + # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) + # <<<<< 後で書き直そう >>>>>>>>> + if len(self.record.inspect_code1 + self.record.inspect_code2 + self.record.inspect_code3 + self.record.inspect_code4 + + self.record.inspect_code5 + self.record.inspect_code6 + self.record.inspect_code7) > 0: + set_clauses.append('insp_item_micrb = :inspect_code1') + set_clauses.append('insp_item_serum = :inspect_code2') + set_clauses.append('insp_item_blood = :inspect_code3') + set_clauses.append('insp_item_patho = :inspect_code4') + set_clauses.append('insp_item_paras = :inspect_code5') + set_clauses.append('insp_item_biochem = :inspect_code6') + set_clauses.append('insp_item_ri = :inspect_code7') + if self.record.inspect_code1 == '@': + self.query_parameter['inspect_code1'] = '' + self.query_parameter['inspect_code2'] = '' + self.query_parameter['inspect_code3'] = '' + self.query_parameter['inspect_code4'] = '' + self.query_parameter['inspect_code5'] = '' + self.query_parameter['inspect_code6'] = '' + self.query_parameter['inspect_code7'] = '' + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合は更新処理は行わない + if len(update_columns) == 0: + return + else: + update_columns += ',' + update_query = self.UPDATE_INST_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + + return + + def __make_delete_insert_trt_query(self): + # 施設診療科目の削除挿入 + delins_flg = False + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + delins_flg = True + break + + if not delins_flg: + return + + # 削除 + self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) + + if len(self.record.medsbj_code[0]) != "@": + for i in range(0, 60): + if len(self.record.medsbj_code[i]) > 0: + self.query_parameter['insert_trt_course_cd'] = self.record.medsbj_code[i] + self.queries.append(self.INSERT_INST_TRT_QUERY) + return + + def __make_upsert_spcare_query(self): + # 特養医務室の追加、更新 + if (self.record.dcf_prnt_inst_code == "00" or len(self.record.dcf_prnt_inst_code) == 0): + return + + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_INST_SSPCARE_QUERY) + return + + # 存在する場合はUpdate + if self.record.dcf_prnt_inst_code == "@": + self.query_parameter['dcf_prnt_inst_code'] = '' + self.query_parameter['delete_ymd'] = datetime.datetime.now().strftime('%Y%m%d') + else: + self.query_parameter['delete_ymd'] = '' + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py new file mode 100644 index 00000000..4838f9ee --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -0,0 +1,200 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInst(UltmarcTable): + """レイアウト区分101: COM_施設""" + dcfhp_id: str # 施設コード(レコードID) + dcfhp_code: str # 施設コード(施設コード) + dcfh_yobi: str # 施設コード(予備) + maint_flag: str # 修正区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + uncheck_flag: str # 未確認フラグ + hpdel_code: str # 削除予定理由 + duphp_id: str # 重複時相手先コード(レコードID) + duphp_code: str # 重複時相手先コード(施設コード) + duphp_yobi: str # 重複時相手先コード(予備) + hp_name: str # 正式施設名(漢字) + hp_name_kana: str # 正式施設名(カナ) + hp_ryaku_name: str # 略式施設名(漢字) + hp_ryaku_name_kana: str # 略式施設名(カナ) + hp_addr_lost_code: str # 住所不明 + pref_code: str # 住所コード(県コード) + city_code: str # 住所コード(市区町村コード) + addr_code1: str # 住所コード(大字・通称コード) + addr_code2: str # 住所コード(字・丁目コード) + hp_zip_code: str # 郵便番号 + hp_addr: str # 住所(漢字) + hp_addr_kana: str # 住所(カナ) + hp_addr_number: str # 住所表示番号 + dr_addr_kanji1: str # 住所カウント_漢字(県) + dr_addr_kanji2: str # 住所カウント_漢字(市区町村) + dr_addr_kanji3: str # 住所カウント_漢字(大字・通称) + dr_addr_kanji4: str # 住所カウント_漢字(字・丁目) + dr_addr_kana1: str # 住所カウント_カナ(県) + dr_addr_kana2: str # 住所カウント_カナ(市区町村) + dr_addr_kana3: str # 住所カウント_カナ(大字・通称) + dr_addr_kana4: str # 住所カウント_カナ(字・丁目) + tel_nothing_flag: str # 電話番号なしフラグ + hp_tel: str # 電話番号 + mgt_class_code: str # 経営体 + hp_class_code: str # 施設区分 + president_id: str # 代表者コード(レコードID) + president_code: str # 代表者コード(個人コード) + president_yobi: str # 代表者コード(予備) + president: str # 代表者(漢字) + president_kana: str # 代表者(カナ) + open_flag: str # 開業予定フラグ + open_year_month: str # 開業予定年月 + close_flag: str # 休院フラグ + close_year_month: str # 休院開始年月 + medsbj_code = [] # 診療科目1~60 + hp_kind_code: str # 病院種別 + reexam_flag: str # 再審査区分 + assoc_parrent_id: str # 関連大学親コード(レコードID) + assoc_parrent_code: str # 関連大学親コード(施設コード) + assoc_parrent_yobi: str # 関連大学親コード(予備) + close_flag2: str # 病棟閉鎖フラグ + bed_num: str # 病床数(定員) + bed_class_maint_date: str # 許可病床メンテ日付 + bed_num_sum: str # 許可病床数_合計 + bed_num_psy: str # 許可病床数_精神 + bed_num_tub: str # 許可病床数_結核 + bed_num_epi: str # 許可病床数_感染症 + bed_num_gen: str # 許可病床数_その他 + bed_num_gen2: str # 許可病床数_一般病床 + bed_num_rest: str # 許可病床数_療養病床 + inspect_code1: str # 検査項目_微生物 + inspect_code2: str # 検査項目_血清 + inspect_code3: str # 検査項目_血液 + inspect_code4: str # 検査項目_病理 + inspect_code5: str # 検査項目_寄生虫 + inspect_code6: str # 検査項目_生化 + inspect_code7: str # 検査項目_RI + dcfhp_92id: str # 特養医務室コード(レコードID) + dcfhp_92code: str # 特養医務室コード(施設コード) + dcfhp_92yobi: str # 特養医務室コード(予備) + + dcfdsf_inst_code: str # DCFDSF施設コード + univ_prnt_code: str # 関連大学親コード + inst_repre_code: str # 施設代表者コード + village_code: str # 町字コード + addr_cnt_kana: str # 住所カウントカナ + addr_cnt: str # 住所カウント + dup_opp_code: str # 重複時相手先コード + dcf_prnt_inst_code: str # DCF親施設コード + + delete_ymd: str # 削除年月日(COM_特養医務室データ) + insert_trt_course_cd: str # 診療科目コード(COM_施設診療科目) + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfh_yobi = record[3].strip() + self.maint_flag = record[4] + self.maint_date = record[5] + self.trn_date = record[6] + self.uncheck_flag = record[7].strip() + self.hpdel_code = record[8].strip() + self.duphp_id = record[9] + self.duphp_code = record[10].strip() + self.duphp_yobi = record[11].strip() + self.hp_name = record[12].strip() + self.hp_name_kana = record[13].strip() + self.hp_ryaku_name = record[14].strip() + self.hp_ryaku_name_kana = record[15].strip() + self.hp_addr_lost_code = record[16].strip() + self.pref_code = record[17].strip() + self.city_code = record[18].strip() + self.addr_code1 = record[19].strip() + self.addr_code2 = record[20].strip() + self.hp_zip_code = record[21].strip() + self.hp_addr = record[22] + self.hp_addr_kana = record[23] + self.hp_addr_number = record[24] + self.dr_addr_kanji1 = record[25].strip() + self.dr_addr_kanji2 = record[26].strip() + self.dr_addr_kanji3 = record[27].strip() + self.dr_addr_kanji4 = record[28].strip() + self.dr_addr_kana1 = record[29].strip() + self.dr_addr_kana2 = record[30].strip() + self.dr_addr_kana3 = record[31].strip() + self.dr_addr_kana4 = record[32].strip() + self.tel_nothing_flag = record[33].strip() + self.hp_tel = record[34].strip() + self.mgt_class_code = record[35].strip() + self.hp_class_code = record[36].strip() + self.president_id = record[37] + self.president_code = record[38].strip() + self.president_yobi = record[39] + self.president = record[40].strip() + self.president_kana = record[41].strip() + self.open_flag = record[42].strip() + self.open_year_month = record[43].strip() + self.close_flag = record[44].strip() + self.close_year_month = record[45].strip() + + # 診療科目1~60 + num = 46 + for i in range(0, 60): + self.medsbj_code[i] = record[num] + num += 1 + + self.hp_kind_code = record[106].strip() + self.reexam_flag = record[107].strip() + self.assoc_parrent_id = record[108].strip() + self.assoc_parrent_code = record[109].strip() + self.assoc_parrent_yobi = record[110].strip() + self.close_flag2 = record[111].strip() + self.bed_num = record[112].strip() + self.bed_class_maint_date = record[113].strip() + self.bed_num_sum = record[114].strip() + self.bed_num_psy = record[115].strip() + self.bed_num_tub = record[116].strip() + self.bed_num_epi = record[117].strip() + self.bed_num_gen = record[118].strip() + self.bed_num_gen2 = record[119].strip() + self.bed_num_rest = record[120].strip() + self.inspect_code1 = record[121].strip() + self.inspect_code2 = record[122].strip() + self.inspect_code3 = record[123].strip() + self.inspect_code4 = record[124].strip() + self.inspect_code5 = record[125].strip() + self.inspect_code6 = record[126].strip() + self.inspect_code7 = record[127].strip() + self.dcfhp_92id = record[128].strip() + self.dcfhp_92code = record[129].strip() + self.dcfhp_92yobi = record[130].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfh_yobi + # 関連大学親コード + self.univ_prnt_code = self.assoc_parrent_id + self.assoc_parrent_code + self.assoc_parrent_yobi + # 施設代表者コード + self.inst_repre_code = self.president_id + self.president_code + self.president_yobi + # 町字コード + self.village_code = self.pref_code + self.city_code + self.addr_code1 + self.addr_code2 + # 住所カウントカナ + self.addr_cnt_kana = self.dr_addr_kana1 + self.dr_addr_kana2 + self.dr_addr_kana3 + self.dr_addr_kana4 + # 住所カウント + self.addr_cnt = self.dr_addr_kanji1 + self.dr_addr_kanji2 + self.dr_addr_kanji3 + self.dr_addr_kanji4 + # 重複時相手先コード + self.dup_opp_code = self.duphp_id + self.duphp_code + self.duphp_yobi + # DCF親施設コード + self.dcf_prnt_inst_code = self.dcfhp_92id + self.dcfhp_92code + self.dcfhp_92yobi + + # 住所カウント_漢字の0埋め + self.dr_addr_kanji1.zfill(2) + self.dr_addr_kanji2.zfill(2) + self.dr_addr_kanji3.zfill(2) + self.dr_addr_kanji4.zfill(2) + + # 住所カウント_カナの0埋め + self.dr_addr_kana1.zfill(2) + self.dr_addr_kana2.zfill(2) + self.dr_addr_kana3.zfill(2) + self.dr_addr_kana4.zfill(2) + + self.delete_ymd = '' + self.insert_trt_course_cd = '' From e7b19b4982bf41a30f8f4bdbfda56c6a739b90e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 2 May 2023 09:53:05 +0900 Subject: [PATCH 26/57] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_dr_mapper.py | 141 +++--------------- .../ultmarc/utmp_tables/tables/com_dr.py | 33 ++++ .../com_dr/db_com_dr_before_delete.csv | 1 - .../com_dr/db_com_dr_before_update.csv | 1 - .../table_mapper/com_dr/db_com_era_before.csv | 6 + .../expect_com_dr_trt_course_insert.csv | 2 - .../table_mapper/com_dr/test_com_dr_mapper.py | 41 ++++- 7 files changed, 99 insertions(+), 126 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py index f8317533..8eb248ad 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_dr_mapper.py @@ -166,12 +166,12 @@ class ComDrMapper(UltmarcTableMapper): """ # COM_医師診療科目の登録用SQL - INSERT_QUERY_TRT1 = """\ + INSERT_QUERY_TRT = """\ INSERT INTO src05.com_dr_trt_course ( trt_course_cd, - dcf_pcf_dr_cd, sequence, + dcf_pcf_dr_cd, regist_ymd, sys_regist_date, regist_prgm_id, @@ -179,105 +179,9 @@ class ComDrMapper(UltmarcTableMapper): update_prgm_id ) VALUES ( - :medsbj_code1, + {trt_course_code}, + {trt_sequence}, :dcf_pcf_dr_cd, - 1, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT2 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code2, - :dcf_pcf_dr_cd, - 2, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT3 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code3, - :dcf_pcf_dr_cd, - 3, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT4 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code4, - :dcf_pcf_dr_cd, - 4, - :execute_date_str_ymd, - :execute_datetime, - :program_name, - :execute_datetime, - :program_name - ) - """ - - INSERT_QUERY_TRT5 = """\ - INSERT INTO src05.com_dr_trt_course - ( - trt_course_cd, - dcf_pcf_dr_cd, - sequence, - regist_ymd, - sys_regist_date, - regist_prgm_id, - sys_update_date, - update_prgm_id - ) - VALUES ( - :medsbj_code5, - :dcf_pcf_dr_cd, - 5, :execute_date_str_ymd, :execute_datetime, :program_name, @@ -308,7 +212,7 @@ class ComDrMapper(UltmarcTableMapper): def __make_upsert_query(self): # 西暦の取得 - self.__year_get() + self.__set_era() # レコードの存在確認 record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) @@ -421,11 +325,8 @@ class ComDrMapper(UltmarcTableMapper): self.query_parameter['dr_addr_lost_code'] = '' # 住所 - if len(self.record.pref_code + self.record.city_code + self.record.addr_code1 + self.record.addr_code2 + - self.record.dr_zip_code + self.record.dr_addr + self.record.dr_addr_kana + self.record.dr_addr_num + - self.record.dr_addr_kanj_cnt1 + self.record.dr_addr_kanj_cnt2 + self.record.dr_addr_kanj_cnt3 + - self.record.dr_addr_kanj_cnt4 + self.record.dr_addr_kana_cnt1 + self.record.dr_addr_kana_cnt2 + - self.record.dr_addr_kana_cnt3 + self.record.dr_addr_kana_cnt4) > 0: + # 集合項目のいずれかに入力がある場合に更新 + if sum(len(item) for item in self.record.address_aggregation_items) > 0: set_clauses.append('home_addr_kana = :dr_addr_kana') set_clauses.append('home_addr = :dr_addr') set_clauses.append('home_postal_number = :dr_zip_code') @@ -487,25 +388,29 @@ class ComDrMapper(UltmarcTableMapper): return set_clauses def __make_delete_insert_trt_query(self): + # 診療科目(集合項目)のいずれかに入力がある場合 + if sum(len(item) for item in self.record.medsbj_code_items) == 0: + return + # 削除 self.queries.append(self.PHYSICAL_DELETE_QUERY_TRT) + # @マークの場合は、登録しない + if self.record.medsbj_code1 == '@': + return + # 登録 - if self.record.medsbj_code1 != '@': - if len(self.record.medsbj_code1) > 0: - self.queries.append(self.INSERT_QUERY_TRT1) - if len(self.record.medsbj_code2) > 0: - self.queries.append(self.INSERT_QUERY_TRT2) - if len(self.record.medsbj_code3) > 0: - self.queries.append(self.INSERT_QUERY_TRT3) - if len(self.record.medsbj_code4) > 0: - self.queries.append(self.INSERT_QUERY_TRT4) - if len(self.record.medsbj_code5) > 0: - self.queries.append(self.INSERT_QUERY_TRT5) + for num, m_code in enumerate(self.record.medsbj_code_items, start=1): + if len(m_code) > 0: + insert_trt_query = self.INSERT_QUERY_TRT.format( + trt_course_code=f':medsbj_code{num}', + trt_sequence=num + ) + self.queries.append(insert_trt_query) return - def __year_get(self): + def __set_era(self): # 西暦の取得 # 生年月日(西暦) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py index e621cb0e..13842737 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr.py @@ -73,6 +73,12 @@ class ComDr(UltmarcTable): era_cd: str # 元号コード + # 住所(集合項目) + address_aggregation_items: list + + # 診療科目(集合項目) + medsbj_code_items: list + def __init__(self, record: list[str]): super().__init__(record) self.dcfdr_id = record[1] @@ -148,3 +154,30 @@ class ComDr(UltmarcTable): self.grad_y = '' # 卒業年(西暦) self.drday_y = '' # 登録年(西暦) self.era_cd = '' # 元号コード + + # 住所(集合項目) + self.address_aggregation_items = [ + self.pref_code, + self.city_code, + self.addr_code1, + self.addr_code2, + self.dr_zip_code, + self.dr_addr_kana, + self.dr_addr_num, + self.dr_addr_kanj_cnt1, + self.dr_addr_kanj_cnt2, + self.dr_addr_kanj_cnt3, + self.dr_addr_kanj_cnt4, + self.dr_addr_kana_cnt1, + self.dr_addr_kana_cnt2, + self.dr_addr_kana_cnt3, + self.dr_addr_kana_cnt4 + ] + + # 診療科目(集合項目) + self.medsbj_code_items = [ + self.medsbj_code1, + self.medsbj_code2, + self.medsbj_code3, + self.medsbj_code4, + self.medsbj_code5] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv index f6baf695..6afe1981 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_delete.csv @@ -5,4 +5,3 @@ "0199768200","ヨコハマ ミキコ","横浜 三紀子","4","3","11","12","19911112","99","","","NULL","03-3579-1698","トウキヨウト イタバシク ホンチヨウ 6-3-301","東京都板橋区本町6−3−301","173-0001","13119047000","13","119","6-3-301","07070600","03030200","99","2","2","","","057","1","3","52","1977","1","NULL","1","","","","","3","10","1935","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" "0199790600","オカ モリマサ","丘 守正","NULL","NULL","NULL","NULL","NULL","99","NULL","NULL","NULL","NULL","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","5","799","1","NULL","NULL","NULL","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","4","2","09","22","19900922","37","","","NULL","","カナガワケン カマクラシ タマナワ 2-8-30","神奈川県鎌倉市玉縄2−8−30","555-6666","01002033444","01","002","2-8-30","00000000","00000000","11","9","2","NULL","NULL","799","1","","","NULL","","0148106500","1","","","","","NULL","NULL","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/11 21:20:37","clsComDrInfo" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv index 0a6ea96a..9b043d87 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_before_update.csv @@ -7,4 +7,3 @@ "0199790600","オカ モリマサ","丘 守正","3","20","03","11","19450311","99","4","03","1991","029-274-7110","イバラキケン ヒタチナカシ オオアザミタンダ 3892-4","茨城県ひたちなか市大字三反田3892−4","312-0021","08221095000","08","221","3892-4","08071100","03060500","31","1","1","","","799","1","3","45","1970","","NULL","1","","","","","","","NULL","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "0199961300","フジタ アカネ","藤田 茜","","","","","NULL","99","","","NULL","","","","","00000000000","00","000","","00000000","00000000","99","9","2","5","6","799","1","","","NULL","","0148106500","1","","","","","4","23","2011","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComDrInfo","2017/10/08 20:57:12","clsComDrInfo" "9999999990","12","11","4","15","06","17","20030617","18","4","55","2043","045-625-2048","38","37","231-0036","32033034035","32","033","126-1-39","44454647","40414243","19","3","1","7","1","022","3","1","21","1888","6","8910","1","49","50","20200501","20200502","4","25","2013","NULL","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","aaaa" - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv new file mode 100644 index 00000000..c11243ae --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_era_before.csv @@ -0,0 +1,6 @@ +era_cd","era_name","year","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"1","明治","1867","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT ","2014/10/24 11:29:55","INIT","2014/10/24 11:29:55","INIT" +"2","大正","1911","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"3","昭和","1925","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT ","2014/10/24 11:29:56","INIT","2014/10/24 11:29:56","INIT" +"4","平成","1988","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT ","2014/10/24 11:29:57","INIT","2014/10/24 11:29:57","INIT" +"5","令和","2018","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_supp","2019/05/07 10:27:29","dwh_support","2019/05/07 10:27:29","dwh_support" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv index 06ef8f21..eb819263 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_insert.csv @@ -21,5 +21,3 @@ "L01","0199790600","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" "L03","0199578300","5","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 16:16:43","com_dr_mapper","2017/10/08 16:16:43","com_dr_mapper" "L30","0122222233","5","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" - - diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py index 9872cd6b..dd533e17 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/test_com_dr_mapper.py @@ -28,13 +28,13 @@ class TestComDrMapper: # setup self.db = database self.db.connect() - self.db.begin() + # self.db.begin() # testing yield # teardown - self.db.rollback() + # self.db.rollback() self.db.disconnect() def test_insert_record(self): @@ -58,9 +58,11 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師診察科目) - test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_insert.csv')) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_insert.csv')) for test_data in test_sql_data_list: insert_sql, insert_parameter = create_insert_sql_with_parameter( 'src05.com_dr_trt_course', @@ -68,6 +70,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1): @@ -147,6 +158,8 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師) test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_update.csv')) @@ -158,7 +171,7 @@ class TestComDrMapper: ) self.db.execute(insert_sql, insert_parameter) # DBデータを読み込む(医師診察科目) - test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_dr_trt_course_update.csv')) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_trt_course_before_update.csv')) for test_data in test_sql_data_list: insert_sql, insert_parameter = create_insert_sql_with_parameter( 'src05.com_dr_trt_course', @@ -166,6 +179,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1): @@ -247,6 +269,8 @@ class TestComDrMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_dr_trt_course', {'1': '1'}) self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_era', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) # テストデータをDBに登録 # DBデータを読み込む(医師) test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_dr_before_delete.csv')) @@ -266,6 +290,15 @@ class TestComDrMapper: test_data.values() ) self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(年号) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_era_before.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_era', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) # Act for line_number, line in enumerate(test_dat_file, start=1): From 091837fe68a4fa570f0eefe92f1a196d496c5126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 2 May 2023 13:22:37 +0900 Subject: [PATCH 27/57] =?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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/laundering/mst_inst_laundering.py | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py index 3c870328..51a56697 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py @@ -25,8 +25,6 @@ def exec(): _truncate_mst_inst(db) # fcl_mst_vから、mst_instへInsert _insert_mst_inst_from_fcl_mst_v(db) - # オプティマイザのderived_mergeフラグをoffにする - _set_optimizer_derived_merge_off(db) # com_instから、mst_instへInsert _insert_mst_inst_from_com_inst(db) logger.debug('メルク施設マスタ作成処理終了') @@ -73,17 +71,17 @@ def _insert_mst_inst_from_fcl_mst_v(db: Database): SELECT fmv1.v_inst_cd, CASE - WHEN fmv1.fcl_type IN ('A1','A0') THEN '3' + WHEN fmv1.fcl_type IN ('A1', 'A0') THEN '3' WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN '2' END AS inst_clas_cd, fmv1.fcl_name, fmv1.fcl_abb_name, fmv1.prft_cd, - RIGHT(fmv1.admin_kbn,3), + RIGHT(fmv1.admin_kbn, 3), mp.prefc_name, - LEFT(mc.city_name,40), + LEFT(mc.city_name, 40), CASE - WHEN fmv1.fcl_type IN ('A1','A0') THEN LEFT(fmv1.fmt_addr, 200) + WHEN fmv1.fcl_type IN ('A1', 'A0') THEN LEFT(fmv1.fmt_addr, 200) WHEN fmv1.fcl_type BETWEEN '20' AND '29' THEN CONCAT(fmv1.prft_name,fmv1.city_name,fmv1.addr_line_1) END AS address, fmv1.postal_cd, @@ -108,10 +106,10 @@ def _insert_mst_inst_from_fcl_mst_v(db: Database): LEFT OUTER JOIN src05.mst_prefc AS mp ON fmv1.prft_cd = mp.prefc_cd LEFT OUTER JOIN src05.mst_city AS mc - ON LEFT(fmv1.admin_kbn,2) = mc.prefc_cd - AND RIGHT(fmv1.admin_kbn,3) = mc.city_cd + ON LEFT(fmv1.admin_kbn, 2) = mc.prefc_cd + AND RIGHT(fmv1.admin_kbn, 3) = mc.city_cd WHERE - ((fmv1.fcl_type IN ('A1','A0')) OR fmv1.fcl_type BETWEEN '20' AND '29') + ((fmv1.fcl_type IN ('A1', 'A0')) OR fmv1.fcl_type BETWEEN '20' AND '29') AND fmv1.rec_sts_kbn != '9' """ res = db.execute(sql) @@ -124,19 +122,18 @@ def _insert_mst_inst_from_fcl_mst_v(db: Database): return -def _set_optimizer_derived_merge_off(db: Database): +def _insert_mst_inst_from_com_inst(db: Database): # オプティマイザのderived_mergeフラグをoffにする try: sql = """ SET SESSION optimizer_switch = 'derived_merge=off' """ db.execute(sql) + logger.info("オプティマイザのderived_mergeフラグ = Off") except Exception as e: logger.debug("オプティマイザのderived_mergeフラグの値変更に失敗") raise e - -def _insert_mst_inst_from_com_inst(db: Database): # com_instから、mst_instへInsert try: elapsed_time = ElapsedTime() @@ -200,7 +197,7 @@ def _insert_mst_inst_from_com_inst(db: Database): ON ci.manage_cd = cm.manage_cd LEFT OUTER JOIN src05.com_inst_div AS cid ON ci.inst_div_cd = cid.inst_div_cd - LEFT OUTER JOIN ( + LEFT OUTER JOIN ( -- MDBコード変換表を使用してV施設コードを取得するためのテーブル結合 SELECT mcmv4.* FROM ( @@ -211,21 +208,21 @@ def _insert_mst_inst_from_com_inst(db: Database): INNER JOIN ( SELECT mcmv2.hco_vid_v, - MAX(mcmv2.sub_num) AS sno + MAX(mcmv2.sub_num) AS sno -- MDBコード変換データの枝番MAX FROM src05.mdb_cnv_mst_v mcmv2 WHERE - mcmv2.rec_sts_kbn != '9' + mcmv2.rec_sts_kbn != '9' -- 状態区分9(削除)以外 and 適用開始≦日付テーブル.処理日 AND src05.get_syor_date() >= mcmv2.start_date GROUP BY mcmv2.hco_vid_v ) AS mcmv3 ON mcmv1.hco_vid_v = mcmv3.hco_vid_v AND mcmv1.sub_num = mcmv3.sno - ) mcmv4 + ) AS mcmv4 INNER JOIN ( SELECT - MIN(mcmv8.hco_vid_v) AS hvv, + MIN(mcmv8.hco_vid_v) AS hvv, -- 1つのMDBコードに対し、複数のV施設コードが割り当てられている場合、最小のV施設コードを選択する mcmv8.mdb_cd FROM ( SELECT @@ -235,11 +232,11 @@ def _insert_mst_inst_from_com_inst(db: Database): INNER JOIN ( SELECT mcmv6.hco_vid_v, - MAX(mcmv6.SUB_NUM) AS sno + MAX(mcmv6.sub_num) AS sno -- MDBコード変換データの枝番MAX FROM src05.mdb_cnv_mst_v AS mcmv6 WHERE - mcmv6.rec_sts_kbn != '9' + mcmv6.rec_sts_kbn != '9' -- 状態区分9(削除)以外 and 適用開始≦日付テーブル.処理日 AND src05.get_syor_date() >= mcmv6.start_date GROUP BY mcmv6.hco_vid_v From a92191adb1993343d85e4362099f5dc0c96480f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 2 May 2023 14:02:13 +0900 Subject: [PATCH 28/57] =?UTF-8?q?=E4=BD=9C=E6=A5=AD=E4=B8=AD=EF=BC=88?= =?UTF-8?q?=E4=B8=80=E6=99=82=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_inst_mapper.py | 175 ++++---- .../ultmarc/utmp_tables/tables/com_inst.py | 33 +- .../table_mapper/com_inst/__init__.py | 0 .../table_mapper/com_inst/com_inst_delete.csv | 0 .../table_mapper/com_inst/com_inst_insert.csv | 1 + .../table_mapper/com_inst/com_inst_update.csv | 0 .../com_inst/db_com_inst_before_delete.csv | 0 .../com_inst/db_com_inst_before_update.csv | 0 .../com_inst/expect_com_inst_delete.csv | 0 .../com_inst/expect_com_inst_insert.csv | 2 + .../com_inst/expect_com_inst_update.csv | 0 .../com_inst/expect_com_spcare_insert.csv | 2 + .../com_inst/expect_com_trt_insert.csv | 61 +++ .../com_inst/test_com_inst_mapper.py | 391 ++++++++++++++++++ 14 files changed, 564 insertions(+), 101 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index e989677d..a839eff6 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -1,7 +1,6 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst -import datetime class ComInstMapper(UltmarcTableMapper): @@ -79,55 +78,55 @@ class ComInstMapper(UltmarcTableMapper): update_prgm_id ) VALUES ( - dcfdsf_inst_code, - hp_class_code, - hp_addr_lost_code, - hp_name_kana, - hp_ryaku_name_kana, - hp_name, - hp_ryaku_name, - univ_prnt_code, - bed_num, - close_flag, - open_flag, - close_year_month, - open_year_month, - close_flag2, - inst_repre_code, - president_kana, - president, - tel_nothing_flag, - uncheck_flag, - hp_tel, - hp_addr_kana, - hp_addr, - hp_zip_code, - village_code, - pref_code, - city_code, - hp_addr_number, - addr_cnt_kana, - addr_cnt, - mgt_class_code, - hpdel_code, - hp_kind_code, - dup_opp_code, - inspect_code1, - inspect_code2, - inspect_code3, - inspect_code4, - inspect_code5, - inspect_code6, - inspect_code7, - reexam_flagc, - bed_num_gen, - bed_num_psy, - bed_num_tub, - bed_num_epi, - bed_num_sum, - bed_num_gen2, - bed_num_rest, - bed_class_maint_date, + :dcfdsf_inst_code, + :hp_class_code, + :hp_addr_lost_code, + :hp_name_kana, + :hp_ryaku_name_kana, + :hp_name, + :hp_ryaku_name, + :univ_prnt_code, + :bed_num, + :close_flag, + :open_flag, + :close_year_month, + :open_year_month, + :close_flag2, + :inst_repre_code, + :president_kana, + :president, + :tel_nothing_flag, + :uncheck_flag, + :hp_tel, + :hp_addr_kana, + :hp_addr, + :hp_zip_code, + :village_code, + :pref_code, + :city_code, + :hp_addr_number, + :addr_cnt_kana, + :addr_cnt, + :mgt_class_code, + :hpdel_code, + :hp_kind_code, + :dup_opp_code, + :inspect_code1, + :inspect_code2, + :inspect_code3, + :inspect_code4, + :inspect_code5, + :inspect_code6, + :inspect_code7, + :reexam_flag, + :bed_num_gen, + :bed_num_psy, + :bed_num_tub, + :bed_num_epi, + :bed_num_sum, + :bed_num_gen2, + :bed_num_rest, + :bed_class_maint_date, 1, NULL, 0, @@ -177,7 +176,7 @@ class ComInstMapper(UltmarcTableMapper): ) VALUES ( :dcfdsf_inst_code, - :insert_trt_course_cd, + {trt_course_cd}, :execute_date_str_ymd, :execute_datetime, :program_name, @@ -205,13 +204,13 @@ class ComInstMapper(UltmarcTableMapper): """ # データ更新用SQL(COM_特養医務室) - UPDATE_SSPCARE_QUERY = """\ + UPDATE_SPCARE_QUERY = """\ UPDATE src05.com_spcare_med_office_dat SET dcf_prnt_inst_cd = :dcf_prnt_inst_code, update_ymd = :execute_date_str_ymd, - delete_ymd = :delete_ymd, + delete_ymd = :execute_date_str_ymd, sys_update_date = :execute_datetime, update_prgm_id = :program_name WHERE @@ -219,7 +218,7 @@ class ComInstMapper(UltmarcTableMapper): """ # データ登録用SQL(COM_特養医務室) - INSERT_INST_SSPCARE_QUERY = """\ + INSERT_SPCARE_QUERY = """\ INSERT INTO src05.com_spcare_med_office_dat ( dcf_chld_inst_cd, @@ -258,23 +257,23 @@ class ComInstMapper(UltmarcTableMapper): return # 追加、更新の場合 - self.queries.append(self.__make_upsert_query()) + 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: + # 存在しない場合はInsert self.queries.append(self.INSERT_INST_QUERY) - - # 存在する場合はUpdate(施設) - self.__make_update_query() + else: + # 存在する場合はUpdate(施設) + self.__make_update_query() # 施設診療科目の削除挿入 self.__make_delete_insert_trt_query - # 特養医務室の追加、更新 + # 特養医務室の追加更新 self.__make_upsert_spcare_query return @@ -315,17 +314,10 @@ class ComInstMapper(UltmarcTableMapper): if len(self.record.hp_zip_code) > 0: set_clauses.append('postal_number = :hp_zip_code') -# <<<<< 住所関連不明 >>>>>> - # 町字コード - if len(self.record.village_code) > 0: + # 町字コード・都道府県コード・市区町村コード + if len(self.record.village_code + self.record.pref_code + self.record.city_code) > 0: set_clauses.append('village_cd = :village_code') - - # 都道府県コード - if len(self.record.pref_code) > 0: set_clauses.append('prefc_cd = :pref_code') - - # 市区町村コード - if len(self.record.city_code) > 0: set_clauses.append('city_cd = :city_code') # 住所カウント @@ -333,16 +325,14 @@ class ComInstMapper(UltmarcTableMapper): set_clauses.append('addr_cnt_kana = :addr_cnt_kana') set_clauses.append('addr_cnt = :addr_cnt') - # 住所表示番号@いるの? + # 住所表示番号 if len(self.record.hp_addr_number) > 0: set_clauses.append('addr_display_number = :hp_addr_number') - # 経営体コード@いるの? + # 経営体コード if len(self.record.mgt_class_code) > 0: set_clauses.append('manage_cd = :mgt_class_code') -# <<<<< 住所関連不明 >>>>>> - # 病院種別 if len(self.record.hp_kind_code) > 0: set_clauses.append('hp_assrt_cd = :hp_kind_code') @@ -446,9 +436,7 @@ class ComInstMapper(UltmarcTableMapper): self.query_parameter['bed_class_maint_date'] = '' # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) - # <<<<< 後で書き直そう >>>>>>>>> - if len(self.record.bed_num_sum + self.record.bed_num_psy + self.record.bed_num_tub + self.record.bed_num_epi + - self.record.bed_num_gen + self.record.bed_num_gen2 + self.record.bed_num_rest) > 0: + if sum(len(item) for item in self.record.prmit_bed) > 0: set_clauses.append('prmit_bed_num_sum = :bed_num_sum') set_clauses.append('prmit_bed_num_mental = :bed_num_psy') set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') @@ -466,9 +454,7 @@ class ComInstMapper(UltmarcTableMapper): self.query_parameter['bed_num_rest'] = '' # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) - # <<<<< 後で書き直そう >>>>>>>>> - if len(self.record.inspect_code1 + self.record.inspect_code2 + self.record.inspect_code3 + self.record.inspect_code4 + - self.record.inspect_code5 + self.record.inspect_code6 + self.record.inspect_code7) > 0: + if sum(len(item) for item in self.record.insp_item) > 0: set_clauses.append('insp_item_micrb = :inspect_code1') set_clauses.append('insp_item_serum = :inspect_code2') set_clauses.append('insp_item_blood = :inspect_code3') @@ -500,23 +486,23 @@ class ComInstMapper(UltmarcTableMapper): def __make_delete_insert_trt_query(self): # 施設診療科目の削除挿入 - delins_flg = False - for i in range(0, 60): - if len(self.record.medsbj_code[i]) > 0: - delins_flg = True - break - - if not delins_flg: + if sum(len(item) for item in self.record.medsbj_code) == 0: return # 削除 self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) - if len(self.record.medsbj_code[0]) != "@": - for i in range(0, 60): - if len(self.record.medsbj_code[i]) > 0: - self.query_parameter['insert_trt_course_cd'] = self.record.medsbj_code[i] - self.queries.append(self.INSERT_INST_TRT_QUERY) + if len(self.record.medsbj_code[0]) == "@": + return + + # 診療科目1~60 + for medsbj_code in self.record.medsbj_code: + if len(medsbj_code) > 0: + insert_query = self.INSERT_INST_TRT_QUERY.format( + trt_course_cd=medsbj_code + ) + self.queries.append(insert_query) + return def __make_upsert_spcare_query(self): @@ -528,14 +514,15 @@ class ComInstMapper(UltmarcTableMapper): record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter) # 存在しない場合はInsert if record_count[0]['count_num'] == 0: - self.queries.append(self.INSERT_INST_SSPCARE_QUERY) + self.queries.append(self.INSERT_SPCARE_QUERY) return # 存在する場合はUpdate if self.record.dcf_prnt_inst_code == "@": self.query_parameter['dcf_prnt_inst_code'] = '' - self.query_parameter['delete_ymd'] = datetime.datetime.now().strftime('%Y%m%d') else: self.query_parameter['delete_ymd'] = '' + self.queries.append(self.UPDATE_SPCARE_QUERY) + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py index 4838f9ee..34fc826d 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -48,7 +48,7 @@ class ComInst(UltmarcTable): open_year_month: str # 開業予定年月 close_flag: str # 休院フラグ close_year_month: str # 休院開始年月 - medsbj_code = [] # 診療科目1~60 + medsbj_code: list # 診療科目1~60 hp_kind_code: str # 病院種別 reexam_flag: str # 再審査区分 assoc_parrent_id: str # 関連大学親コード(レコードID) @@ -84,8 +84,8 @@ class ComInst(UltmarcTable): dup_opp_code: str # 重複時相手先コード dcf_prnt_inst_code: str # DCF親施設コード - delete_ymd: str # 削除年月日(COM_特養医務室データ) - insert_trt_course_cd: str # 診療科目コード(COM_施設診療科目) + prmit_bed: list # 許可ベッド(集合項目) + insp_item: list # 検査項目(集合項目) def __init__(self, record: list[str]): super().__init__(record) @@ -135,10 +135,10 @@ class ComInst(UltmarcTable): self.close_flag = record[44].strip() self.close_year_month = record[45].strip() - # 診療科目1~60 + # 診療科目1~60(csvカラム番号 46 ~ 105) num = 46 for i in range(0, 60): - self.medsbj_code[i] = record[num] + self.medsbj_code = [record[num]] num += 1 self.hp_kind_code = record[106].strip() @@ -196,5 +196,24 @@ class ComInst(UltmarcTable): self.dr_addr_kana3.zfill(2) self.dr_addr_kana4.zfill(2) - self.delete_ymd = '' - self.insert_trt_course_cd = '' + # 許可ベッド(集合項目) + self.prmit_bed = [ + self.bed_num_sum, + self.bed_num_psy, + self.bed_num_tub, + self.bed_num_epi, + self.bed_num_gen, + self.bed_num_gen2, + self.bed_num_rest + ] + + # 検査項目(集合項目) + self.insp_item = [ + self.inspect_code1, + self.inspect_code2, + self.inspect_code3, + self.inspect_code4, + self.inspect_code5, + self.inspect_code6, + self.inspect_code7 + ] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv new file mode 100644 index 00000000..5fed0c67 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv @@ -0,0 +1 @@ +"101","22","33333","44","A","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv new file mode 100644 index 00000000..88bf2163 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv @@ -0,0 +1,2 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv new file mode 100644 index 00000000..db6f2bd4 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv @@ -0,0 +1,2 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","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" +"293031","20230427NULLNULL","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv new file mode 100644 index 00000000..133e9b9f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv @@ -0,0 +1,61 @@ +"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py new file mode 100644 index 00000000..3dd1f2bb --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -0,0 +1,391 @@ +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_inst_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 TestComInstMapper: + """レイアウト区分101: 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_inst_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, 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_inst_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_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 [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup', + '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}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_insert.csv')) + primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_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_inst_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'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_inst_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(施設診療科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(特養医務室) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_spcare_med_office_dat', + 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_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, 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_inst_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_update.csv')) + primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_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_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_inst_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'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_inst_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(施設診療科目) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + # DBデータを読み込む(特養医務室) + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_spcare_med_office_dat', + 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_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_mapper.ComInstMapper, 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_inst_delete.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(施設診療科目) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_inst_trt_course + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND trt_course_cd = :trt_course_cd\ + """ + for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd): + sp_trt_data = self.db.execute_select( + sp_field_select_sql, + {**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd}) + assert len(sp_trt_data) == 1, '1件取得できていること' + actual_data_list.append(sp_trt_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + # 期待値ファイルを読み込む(特養医務室データ) + expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_delete.csv')) + primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_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}が、期待値以降であること' From e8d6d0ca1387b97b061a49d2ab56a80783f22a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 2 May 2023 14:03:35 +0900 Subject: [PATCH 29/57] =?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?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/laundering/mst_inst_laundering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py index 51a56697..bbaa5fd0 100644 --- a/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/laundering/mst_inst_laundering.py @@ -129,7 +129,7 @@ def _insert_mst_inst_from_com_inst(db: Database): SET SESSION optimizer_switch = 'derived_merge=off' """ db.execute(sql) - logger.info("オプティマイザのderived_mergeフラグ = Off") + logger.debug("オプティマイザのderived_mergeフラグ = Off") except Exception as e: logger.debug("オプティマイザのderived_mergeフラグの値変更に失敗") raise e From 61815cebe452131c04e7ef58df28b2345dcb399f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 8 May 2023 14:52:48 +0900 Subject: [PATCH 30/57] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E5=AE=8C?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_dr_mapper.py | 12 +- .../table_mapper/concrete/com_inst_mapper.py | 63 ++++----- .../ultmarc/utmp_tables/tables/com_dr.py | 4 +- .../ultmarc/utmp_tables/tables/com_inst.py | 38 ++++-- .../table_mapper/com_dr/com_dr_update.csv | 1 + .../com_dr/db_com_dr_before_update.csv | 1 + .../db_com_dr_trt_course_before_update.csv | 1 + .../expect_com_dr_trt_course_update.csv | 3 + .../table_mapper/com_dr/test_com_dr_mapper.py | 22 +-- .../table_mapper/com_inst/com_inst_delete.csv | 5 + .../table_mapper/com_inst/com_inst_insert.csv | 8 +- .../table_mapper/com_inst/com_inst_update.csv | 10 ++ .../com_inst/db_com_inst_before_delete.csv | 8 ++ .../com_inst/db_com_inst_before_update.csv | 11 ++ .../com_inst/db_com_spcare_before_delete.csv | 4 + .../com_inst/db_com_spcare_before_update.csv | 5 + .../com_inst/db_com_trt_before_delete.csv | 66 +++++++++ .../com_inst/db_com_trt_before_update.csv | 48 +++++++ .../com_inst/expect_com_inst_delete.csv | 8 ++ .../com_inst/expect_com_inst_insert.csv | 8 +- .../com_inst/expect_com_inst_update.csv | 11 ++ .../com_inst/expect_com_spcare_delete.csv | 4 + .../com_inst/expect_com_spcare_insert.csv | 3 +- .../com_inst/expect_com_spcare_update.csv | 7 + .../com_inst/expect_com_trt_delete.csv | 66 +++++++++ .../com_inst/expect_com_trt_insert.csv | 58 +++++++- .../com_inst/expect_com_trt_update.csv | 66 +++++++++ .../com_inst/test_com_inst_mapper.py | 129 ++++++++++++++---- 28 files changed, 574 insertions(+), 96 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.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 8eb248ad..ac2bd53a 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 @@ -94,7 +94,7 @@ class ComDrMapper(UltmarcTableMapper): :addr_cnt, :medassoci_code, :pract_class_code, - :sexc_ode, + :sex_code, :drdel_code, :dr_addr_lost_code, :graduniv_code, @@ -224,15 +224,15 @@ class ComDrMapper(UltmarcTableMapper): return # 存在する場合ではUpdate + # COM_医師診療科目 削除登録 + self.__make_delete_insert_trt_query() + update_columns = ','.join(self.__make_update_query()) # 何も更新項目が無い場合はNoneとする(更新処理は行わない) if len(update_columns) == 0: self.queries.append(None) return else: - # COM_医師診療科目 削除登録 - self.__make_delete_insert_trt_query() - # 末尾にカンマを付けてSET句を完成させる update_columns += ',' update_query = self.UPDATE_QUERY.format( @@ -265,8 +265,8 @@ class ComDrMapper(UltmarcTableMapper): set_clauses.append('dr_name_kana = :dr_name_kana') # 性別 - if len(self.record.sexc_ode) > 0: - set_clauses.append('sex_cd = :sexc_ode') + if len(self.record.sex_code) > 0: + set_clauses.append('sex_cd = :sex_code') # 生年月日 if len(self.record.birthday_era + self.record.birthday_year + self.record.birthday_month + self.record.birthday_day) > 0: diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index 69f83ad4..901d2b9b 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -147,7 +147,7 @@ class ComInstMapper(UltmarcTableMapper): sys_update_date = :execute_datetime, update_prgm_id = :program_name WHERE - dcf_pcf_dr_cd = :dcfdsf_inst_code + dcf_dsf_inst_cd = :dcfdsf_inst_code """ # 修正区分が「C(削除)」の場合の更新SQL @@ -190,7 +190,7 @@ class ComInstMapper(UltmarcTableMapper): DELETE FROM src05.com_inst_trt_course WHERE - dcf_pcf_dr_cd = :dcf_pcf_dr_cd + dcf_dsf_inst_cd = :dcfdsf_inst_code """ # レコード存在確認SQL(COM_特養医務室) @@ -200,7 +200,7 @@ class ComInstMapper(UltmarcTableMapper): FROM src05.com_spcare_med_office_dat WHERE - dcf_dsf_inst_cd = :dcfdsf_inst_code + dcf_chld_inst_cd = :dcfdsf_inst_code """ # データ更新用SQL(COM_特養医務室) @@ -208,11 +208,11 @@ class ComInstMapper(UltmarcTableMapper): UPDATE src05.com_spcare_med_office_dat SET - dcf_prnt_inst_cd = : dcf_prnt_inst_code, - update_ymd = : execute_date_str_ymd, - delete_ymd = : execute_date_str_ymd, - sys_update_date = : execute_datetime, - update_prgm_id = : program_name + dcf_prnt_inst_cd = :dcf_prnt_inst_code, + update_ymd = :execute_date_str_ymd, + delete_ymd = :delete_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name WHERE dcf_chld_inst_cd = :dcfdsf_inst_code """ @@ -271,10 +271,10 @@ class ComInstMapper(UltmarcTableMapper): self.__make_update_query() # 施設診療科目の削除挿入 - self.__make_delete_insert_trt_query + self.__make_delete_insert_trt_query() # 特養医務室の追加更新 - self.__make_upsert_spcare_query + self.__make_upsert_spcare_query() return @@ -291,7 +291,7 @@ class ComInstMapper(UltmarcTableMapper): set_clauses.append('form_inst_name_kana = :hp_name_kana') # 略式施設名(カナ) - if len(self.record.hp_name_kana) > 0: + if len(self.record.hp_ryaku_name_kana) > 0: set_clauses.append('inst_name_kana = :hp_ryaku_name_kana') # 正式施設名(漢字) @@ -299,8 +299,8 @@ class ComInstMapper(UltmarcTableMapper): set_clauses.append('form_inst_name_kanji = :hp_name') # 略式施設名(漢字) - if len(self.record.hp_ryaku_name_kana) > 0: - set_clauses.append('inst_name_kanji = :hp_ryaku_name_kana') + if len(self.record.hp_ryaku_name) > 0: + set_clauses.append('inst_name_kanji = :hp_ryaku_name') # 施設住所カナ if len(self.record.hp_addr_kana) > 0: @@ -356,7 +356,7 @@ class ComInstMapper(UltmarcTableMapper): # 重複時相手先コード if len(self.record.dup_opp_code) > 0: set_clauses.append('dup_opp_cd = :dup_opp_code') - if self.record.dup_opp_code == '@': + if self.record.duphp_id == '@': self.query_parameter['dup_opp_code'] = '' # 住所不明理由コード @@ -380,7 +380,7 @@ class ComInstMapper(UltmarcTableMapper): # 施設代表者コード if len(self.record.inst_repre_code) > 0: set_clauses.append('inst_repre_cd = :inst_repre_code') - if self.record.inst_repre_code == '@': + if self.record.president_id == '@': self.query_parameter['inst_repre_code'] = '' # 代表者(カナ) @@ -414,7 +414,7 @@ class ComInstMapper(UltmarcTableMapper): # 関連大学親コード if len(self.record.univ_prnt_code) > 0: set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code') - if self.record.univ_prnt_code == '@': + if self.record.assoc_parrent_id == '@': self.query_parameter['univ_prnt_code'] = '' # 病棟閉鎖フラグ @@ -424,10 +424,10 @@ class ComInstMapper(UltmarcTableMapper): self.query_parameter['close_flag2'] = '' # 病床数(定員) - if len(self.record.bed_num) > 0: + if self.record.bed_num is not None: set_clauses.append('bed_num = :bed_num') if self.record.bed_num == '@': - self.query_parameter['bed_num'] = '' + self.query_parameter['bed_num'] = None # 許可病床メンテ日付 if len(self.record.bed_class_maint_date) > 0: @@ -436,7 +436,7 @@ class ComInstMapper(UltmarcTableMapper): self.query_parameter['bed_class_maint_date'] = '' # 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床) - if sum(len(item) for item in self.record.prmit_bed) > 0: + if not self.record.prmit_bed.count(None) == len(self.record.prmit_bed): set_clauses.append('prmit_bed_num_sum = :bed_num_sum') set_clauses.append('prmit_bed_num_mental = :bed_num_psy') set_clauses.append('prmit_bed_num_tuber = :bed_num_tub') @@ -445,13 +445,13 @@ class ComInstMapper(UltmarcTableMapper): set_clauses.append('prmit_bed_num_gen = :bed_num_gen2') set_clauses.append('prmit_bed_num_rcup = :bed_num_rest') if self.record.bed_num_sum == '@': - self.query_parameter['bed_num_sum'] = '' - self.query_parameter['bed_num_psy'] = '' - self.query_parameter['bed_num_tub'] = '' - self.query_parameter['bed_num_epi'] = '' - self.query_parameter['bed_num_gen'] = '' - self.query_parameter['bed_num_gen2'] = '' - self.query_parameter['bed_num_rest'] = '' + self.query_parameter['bed_num_sum'] = None + self.query_parameter['bed_num_psy'] = None + self.query_parameter['bed_num_tub'] = None + self.query_parameter['bed_num_epi'] = None + self.query_parameter['bed_num_gen'] = None + self.query_parameter['bed_num_gen2'] = None + self.query_parameter['bed_num_rest'] = None # 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI) if sum(len(item) for item in self.record.insp_item) > 0: @@ -474,6 +474,7 @@ class ComInstMapper(UltmarcTableMapper): update_columns = ','.join(set_clauses) # 何も更新項目が無い場合は更新処理は行わない if len(update_columns) == 0: + self.queries.append(None) return else: update_columns += ',' @@ -492,17 +493,16 @@ class ComInstMapper(UltmarcTableMapper): # 削除 self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY) - if len(self.record.medsbj_code[0]) == "@": + if self.record.medsbj_code[0] == "@": return # 診療科目1~60 for medsbj_code in self.record.medsbj_code: if len(medsbj_code) > 0: insert_query = self.INSERT_INST_TRT_QUERY.format( - trt_course_cd=medsbj_code + trt_course_cd="'" + medsbj_code + "'" ) self.queries.append(insert_query) - return def __make_upsert_spcare_query(self): @@ -518,10 +518,11 @@ class ComInstMapper(UltmarcTableMapper): return # 存在する場合はUpdate - if self.record.dcf_prnt_inst_code == "@": + if self.record.dcfhp_92id == "@": self.query_parameter['dcf_prnt_inst_code'] = '' + self.query_parameter['delete_ymd'] = self.query_parameter['execute_date_str_ymd'] else: - self.query_parameter['delete_ymd'] = '' + self.query_parameter['delete_ymd'] = None self.queries.append(self.UPDATE_SPCARE_QUERY) 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 13842737..0377774a 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 @@ -15,7 +15,7 @@ class ComDr(UltmarcTable): reptdr_yobi: str # 重複時相手先コード(予備) dr_name: str # 医師名(漢字) dr_name_kana: str # 医師名(カナ) - sexc_ode: str # 性別 + sex_code: str # 性別 birthday_era: str # 生年月日(元号) birthday_year: str # 生年月日(年) birthday_month: str # 生年月日(月) @@ -93,7 +93,7 @@ class ComDr(UltmarcTable): self.reptdr_yobi = record[10].strip() self.dr_name = record[11].strip() self.dr_name_kana = record[12].strip() - self.sexc_ode = record[13].strip() + self.sex_code = record[13].strip() self.birthday_era = record[14].strip() self.birthday_year = record[15].strip() self.birthday_month = record[16].strip() diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py index 34fc826d..954afa88 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -137,8 +137,9 @@ class ComInst(UltmarcTable): # 診療科目1~60(csvカラム番号 46 ~ 105) num = 46 + self.medsbj_code = [] for i in range(0, 60): - self.medsbj_code = [record[num]] + self.medsbj_code.append(str(record[num])) num += 1 self.hp_kind_code = record[106].strip() @@ -156,6 +157,17 @@ class ComInst(UltmarcTable): self.bed_num_gen = record[118].strip() self.bed_num_gen2 = record[119].strip() self.bed_num_rest = record[120].strip() + + # smallint対策 + self.bed_num = self.bed_num if len(self.bed_num) > 0 else None + self.bed_num_sum = self.bed_num_sum if len(self.bed_num_sum) > 0 else None + self.bed_num_psy = self.bed_num_psy if len(self.bed_num_psy) > 0 else None + self.bed_num_tub = self.bed_num_tub if len(self.bed_num_tub) > 0 else None + self.bed_num_epi = self.bed_num_epi if len(self.bed_num_epi) > 0 else None + self.bed_num_gen = self.bed_num_gen if len(self.bed_num_gen) > 0 else None + self.bed_num_gen2 = self.bed_num_gen2 if len(self.bed_num_gen2) > 0 else None + self.bed_num_rest = self.bed_num_rest if len(self.bed_num_rest) > 0 else None + self.inspect_code1 = record[121].strip() self.inspect_code2 = record[122].strip() self.inspect_code3 = record[123].strip() @@ -167,6 +179,18 @@ class ComInst(UltmarcTable): self.dcfhp_92code = record[129].strip() self.dcfhp_92yobi = record[130].strip() + # 住所カウント_漢字の0埋め + self.dr_addr_kanji1 = self.dr_addr_kanji1.zfill(2) + self.dr_addr_kanji2 = self.dr_addr_kanji2.zfill(2) + self.dr_addr_kanji3 = self.dr_addr_kanji3.zfill(2) + self.dr_addr_kanji4 = self.dr_addr_kanji4.zfill(2) + + # 住所カウント_カナの0埋め + self.dr_addr_kana1 = self.dr_addr_kana1.zfill(2) + self.dr_addr_kana2 = self.dr_addr_kana2.zfill(2) + self.dr_addr_kana3 = self.dr_addr_kana3.zfill(2) + self.dr_addr_kana4 = self.dr_addr_kana4.zfill(2) + # DCFDSF施設コード self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfh_yobi # 関連大学親コード @@ -184,18 +208,6 @@ class ComInst(UltmarcTable): # DCF親施設コード self.dcf_prnt_inst_code = self.dcfhp_92id + self.dcfhp_92code + self.dcfhp_92yobi - # 住所カウント_漢字の0埋め - self.dr_addr_kanji1.zfill(2) - self.dr_addr_kanji2.zfill(2) - self.dr_addr_kanji3.zfill(2) - self.dr_addr_kanji4.zfill(2) - - # 住所カウント_カナの0埋め - self.dr_addr_kana1.zfill(2) - self.dr_addr_kana2.zfill(2) - self.dr_addr_kana3.zfill(2) - self.dr_addr_kana4.zfill(2) - # 許可ベッド(集合項目) self.prmit_bed = [ self.bed_num_sum, diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv index 1fb79e85..09c509fb 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/com_dr_update.csv @@ -6,3 +6,4 @@ "501","01","997906","00","B","20170911","20170912","","","","","","","","@","","","","","","@","","","","","","U91","U92","U93","U94","U95","5","","","","","","","","","","","","","","","","","@","","","","","","@","","" "501","01","999613","00","B","20170901","20170902","@","","","","","","","4","2","09","22","37","11","","","","","@","","","","","","","@","01","002","033","444","555-6666","神奈川県鎌倉市玉縄2-8-30","カナガワケン カマクラシ タマナワ 2-8-30","2-8-30","00","00","00","00","00","00","00","00","","","","","","","","","" "501","99","999999","90","B","20230425","20230426","@","@","9","10","11","12","1","@","15","06","17","18","19","@","21","022","3","@","25","@","C27","I28","K29","L30","@","32","033","034","035","231-0036","37","38","126-1-39","40","41","42","43","44","45","46","47","@","@","@","@","@","3","@","55","6" +"501","99","999999","00","A","20230425","20230426","","","","","","","","","","","","","","","","","","","","A01","","A03","","A05","","","","","","","","","","","","","","","","","","","","","","","","","","" 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 9b043d87..1c34701d 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,3 +7,4 @@ "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" +"9999999900","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_dr_trt_course_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv index a9f320d5..cf4d0ac7 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/db_com_dr_trt_course_before_update.csv @@ -1,6 +1,7 @@ "trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" "A01","0122222233","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" "A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" +"A01","9999999900","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" "A01","0199578300","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_dr_mapper","2017/10/08 20:57:12","com_dr_mapper" "A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" "A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv index b62bbbca..fa2ab558 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr/expect_com_dr_trt_course_update.csv @@ -1,5 +1,8 @@ "trt_course_cd","dcf_pcf_dr_cd","sequence","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" "A01","0199768200","1","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" +"A01","9999999900","1","20141125","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" +"A03","9999999900","3","20141125","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" +"A05","9999999900","5","20141125","NULL","NULL","NULL","NULL","NULL","2023/04/12 16:26:05","com_dr_mapper","2023/04/12 16:26:05","com_dr_mapper" "A01","9999999999","4","20141125","NULL","NULL","NULL","NULL","NULL","2014/12/03 16:26:05","PKG_03_1_F1101_011","2014/12/03 16:26:05","PKG_03_1_F1101_011" "A26","0122222233","1","20230427","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_dr_mapper","2023/04/12 00:00:00","com_dr_mapper" "A58","0199768200","2","20230427","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:06:51","com_dr_mapper","2017/10/09 18:06:51","com_dr_mapper" 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 dd533e17..5d45b49b 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): @@ -243,10 +243,13 @@ class TestComDrMapper: line_number += 1 for actual_col_name, expect_col_name in zip(actual_row, expect_row): if actual_col_name in ignore_columns: - if actual_col_name == 'sequence': - assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + 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}が、期待値以降であること' + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' def test_logical_delete(self): """ @@ -354,7 +357,10 @@ class TestComDrMapper: line_number += 1 for actual_col_name, expect_col_name in zip(actual_row, expect_row): if actual_col_name in ignore_columns: - if actual_col_name == 'sequence': - assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + 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}が、期待値以降であること' + if actual_col_name == 'sequence': + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv index e69de29b..5c588736 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_delete.csv @@ -0,0 +1,5 @@ +"101","22","33333","44","C","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","00","9900146","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901649","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901679","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9904439","","C","20160826","20160903","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv index 5fed0c67..f597e06a 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_insert.csv @@ -1 +1,7 @@ -"101","22","33333","44","A","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","22","33333","44","A","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","00","9900146","","A","20141113","20141114","","","","","","医療法人敬老会森岡内科","イリヨウホウジンケイロウカイモリオカナイカ","森岡内科 医療","モリオカナイカ イリヨウ","","36","201","117","002","770-0854","徳島県徳島市徳島本町2-31","トクシマケン トクシマシ トクシマホンチヨウ 2-31","2-31","03","03","04","02","07","06","10","02","","088-623-6161","431","10","01","092029","","板東 章二","バンドウ シヨウジ","","","1","201410","A01","A11","C04","E02","A23","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20130729","0","0","0","0","0","0","0","","","","","","","","","","" +"101","00","9900194","","A","20141113","20141114","1","9","","","","一期崎医院","イチゴザキイイン","一期崎医院","イチゴザキイイン","6","43","101","059","000","860-0844","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","1-27-2D","03","06","3","","07","13","09","00","1","","472","10","","","","","","","","","","O01","O02","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20090430","0","0","0","0","0","0","0","","","","","","","","","","" +"101","00","9901649","","A","20141113","20141114","","","","","","社会福祉法人明和会特別養護老人ホームあづき","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","あづき(特養) 社福","アヅキ シヤフク","","37","322","000","000","761-4100","香川県小豆郡土庄町字半ノ池甲1360-143","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","","03","06","00","00","07","18","00","00","","0879-62-7707","435","41","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9","9","","","","","50","","","","","","","","","","","","","","","","00","7201648","" +"101","00","9901679","","A","20141113","20141114","","","","","","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","カゴシマシイシカイリンシヨウケンサセンタ-","","46","201","017","000","892-0846","鹿児島県鹿児島市加治屋町3-10","カゴシマケン カゴシマシ カジヤチヨウ 3-10","3-10","04","04","04","00","08","07","08","00","","099-226-8827","470","60","01","148013","","海江田 健","カイエダ タケル","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9","9","","","","","0","","","","","","","","","1","1","1","1","1","1","1","","","" +"101","00","9904439","","A","20141113","20141114","","","","","","川崎市立井田病院","カワサキシリツイダビヨウイン","井田病院 市立","イダビヨウイン シリツ","","14","133","001","002","211-0035","神奈川県川崎市中原区井田2-27-1","カナガワケン カワサキシ ナカハラク イダ 2-27-1","2-27-1","04","06","02","02","08","12","04","02","","044-766-2188","221","01","","","","","","","","","","A01","A34","A22","M01","D02","A12","A81","C01","N03","K01","J01","P02","O01","B01","C04","E02","F01","I01","C05","B31","H02","A41","A03","A58","A61","A65","F08","A56","B11","B22","B04","P03","G06","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","1","3","","","","","370","20140811","370","0","27","0","343","343","0","","","","","","","","","","" +"101","00","9929798","","A","20141113","20141114","","","","","","パーソナルヘルス学びのクリニック","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのCL","パ-ソナルヘルスマナビノクリニツク","","13","103","025","002","107-0062","東京都港区南青山2-2-15 ウイン青山405","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","2-2-15-405","03","02","03","02","07","05","08","02","1","","472","10","01","331831","","白澤 博満","シラサワ ヒロミツ","","","","","A01","I01","A57","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","6","","","","","0","20130415","0","0","0","0","0","0","0","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv index e69de29b..2a13c00e 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/com_inst_update.csv @@ -0,0 +1,10 @@ +"101","22","33333","44","B","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","22","33333","99","B","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11" +"101","99","33333","44","B","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","99","99999","99","B","20230606","200230607","@","@","@","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","@","18","19","20","21","123-4522","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","25","26","27","28","29","30","31","32","33","@","@","36","37","@","39","40","@","@","@","202304","@","202306","@","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","@","10","11","@","@","@","@","6","7","8","9","0","1","@","3","4","5","6","7","8","@","333333","11" +"101","00","9900146","","B","20170401","20170404","","2","00","3631462","","","テストイリヨウホウジンケイロウカイモリオカナイカ","","","","","","","","","","","","","","","","","","","","","","221","","","","","","","","","@","","@","A11","C04","E02","A23","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","@","","","@","@","@","@","","","","","","","","","","","","","","0","9912345","" +"101","00","9900194","","B","20170401","20170404","@","@","@","","","","","","","@","11","222","333","444","106-0045","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","1-5-18-10-3","3","2","4","2","7","5","13","2","","","","","","","","","","","","","","U21","U23","U18","U15","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"101","00","9901649","","B","20170401","20170404","","","","","","","","あづき(てすと)","","","","","","","","","","","","","","","","","","","","","","60","","","","","","1","201801","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","@","","" +"101","00","9901679","","B","20170401","20170404","","","","","","","","","カゴシマテスト","","","","","","","","","","","","","","","","","","","@","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","@","","","","","","","","","" +"101","00","9904439","","B","20170401","20170404","","","","","","川崎市立テスト病院","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","11","1234567","","","","","","","","","","","","3","","1","","2","","3","","","" +"101","00","9929798","","B","20170401","20170404","","","","","","","","","","6","","","","","","","","","","","","","","","","","@","","","","@","","","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","91","92","93","94","95","96","97","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv index e69de29b..6e20eb7b 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","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" +"009900146","10","","テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","","","","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462","","","","","","","","3","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","10","","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","0","","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","60","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)","","50","","1","","201801","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","1","","","","","","","","","9","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","1","01148013","カイエダ タケル","海江田 健","","","","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","","","","","","","","9","0","0","0","0","0","0","0","0","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","3","","1","","2","","3","3","343","0","27","0","370","343","0","20140811","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","","","","","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","95","92","93","94","91","96","97","20130415","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv index e69de29b..0b1ad996 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_inst_before_update.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" +"223333399","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" +"993333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","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" +"999999999","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","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" +"009900146","10","","イリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","1","0","1","","201410","","1","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","431","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130729","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","10","6","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","1","","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","860-0844","43101059000","43","101","1-27-2D","07130900","03060300","472","9","7","003631463","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009901649","41","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(特養) 社福","","50","","","","","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","9","","","","","","","","","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","","01148013","カイエダ タケル","海江田 健","","","099-226-8827","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","1","1","1","1","1","1","1","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立井田病院","井田病院 市立","","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","","","","","","","","3","343","0","27","0","370","343","0","20140811","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009929798","10","","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","01331831","シラサワ ヒロミツ","白澤 博満","1","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130415","1","","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv new file mode 100644 index 00000000..cc988dcc --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_delete.csv @@ -0,0 +1,4 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","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" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"009900146","09912345","20220201","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 11:08:29","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","NULL","20220131","20220201","20220201","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv new file mode 100644 index 00000000..9bc1f8ff --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_spcare_before_update.csv @@ -0,0 +1,5 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","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" +"223333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"009901649","007201648","20220131","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 11:38:27","clsComInstInfo","2023/05/01 11:38:27","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv new file mode 100644 index 00000000..557be371 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_delete.csv @@ -0,0 +1,66 @@ +"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900146","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv new file mode 100644 index 00000000..46080fbc --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/db_com_trt_before_update.csv @@ -0,0 +1,48 @@ +"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"223333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"009900146","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","A11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","A23","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900146","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009900194","O02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-01-31 11:38:26","clsComInstInfo" +"009904439","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A12","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A34","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","A41","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A56","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A58","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A61","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A65","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","A81","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","B04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","B31","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","C01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","C05","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","D02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","F08","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","G06","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","H02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009904439","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","J01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","K01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","M01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","N03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-01-31 11:38:27","clsComInstInfo" +"009904439","P03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" +"009929798","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-01-31 11:38:28","clsComInstInfo" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv index e69de29b..b2dde439 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","10","","テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","","","","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462","","","","","","","","3","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009900194","10","","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","0","","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009901649","60","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)","","50","","1","","201801","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","1","","","","","","","","","9","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","1","01148013","カイエダ タケル","海江田 健","","","","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","","","","","","","","9","0","0","0","0","0","0","0","0","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","3","","1","","2","","3","3","343","0","27","0","370","343","0","20140811","1","20160826","0","","","","","","NULL","","NULL","","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 15:50:39","com_inst_mapper" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","","","","","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","95","92","93","94","91","96","97","20130415","1","","0","","","","","","NULL","","NULL","","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 14:52:44","clsComInstInfo" +"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","20230606","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv index 88bf2163..97617e35 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_insert.csv @@ -1,2 +1,8 @@ "dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" -"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" +"009900146","10","","イリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","0","1","","201410","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","431","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130729","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009900194","10","6","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","1","","クマモトケン クマモトシ チユウオウク スイドウチヨウ 1-27 ダイガクドウビル 2カイDシツ","熊本県熊本市中央区水道町1-27 大学堂ビル2階D室","860-0844","43101059000","43","101","1-27-2D","07130900","03060300","472","9","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009901649","41","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(特養) 社福","","50","","","","","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","9","","","","","","","","","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマシイシカイリンシヨウケンサセンタ-","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","","01148013","カイエダ タケル","海江田 健","","","099-226-8827","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","1","1","1","1","1","1","1","9","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立井田病院","井田病院 市立","","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","","","","","","","","3","343","0","27","0","370","343","0","20140811","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009929798","10","","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","01331831","シラサワ ヒロミツ","白澤 博満","1","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20130415","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv index e69de29b..f2aa0ac2 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_inst_update.csv @@ -0,0 +1,11 @@ +"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","10","","テストイリヨウホウジンケイロウカイモリオカナイカ","モリオカナイカ イリヨウ","医療法人敬老会森岡内科","森岡内科 医療","","NULL","","","","","","01092029","バンドウ シヨウジ","板東 章二","","","088-623-6161","トクシマケン トクシマシ トクシマホンチヨウ 2-31","徳島県徳島市徳島本町2-31","770-0854","36201117002","36","201","2-31","07061002","03030402","221","2","7","003631462","","","","","","","","3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:28","com_inst_mapper" +"009900194","10","","イチゴザキイイン","イチゴザキイイン","一期崎医院","一期崎医院","","0","","","","","","","","","1","","","トウキヨウト ミナトク アザブジユウバン 1-5-18 カ-トブランアザブジユウバン 3F","東京都港区麻布十番1-5-18 カートブラン麻布十番3F","106-0045","11222333444","11","222","1-5-18-10-3","07051302","03020402","472","","7","","","","","","","","","6","0","0","0","0","0","0","0","20090430","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009901649","60","","シヤフクメイワカイトクベツヨウゴロウジンホ-ムアヅキ","アヅキ シヤフク","社会福祉法人明和会特別養護老人ホームあづき","あづき(てすと)","","50","","1","","201801","","","","","","","0879-62-7707","カガワケン シヨウズグン トノシヨウチヨウ アザハンノイケコウ 1360-143","香川県小豆郡土庄町字半ノ池甲1360-143","761-4100","37322000000","37","322","","07180000","03060000","435","","1","","","","","","","","","9","","","","","","","","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009901679","60","","カゴシマシイシカイリンシヨウケンサセンタ-","カゴシマテスト","鹿児島市医師会臨床検査センター","鹿児島市医師会臨床検査センター","","0","","","","","1","01148013","カイエダ タケル","海江田 健","","","","カゴシマケン カゴシマシ カジヤチヨウ 3-10","鹿児島県鹿児島市加治屋町3-10","892-0846","46201017000","46","201","3-10","08070800","04040400","470","","9","","","","","","","","","9","","","","","","","","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009904439","01","","カワサキシリツイダビヨウイン","イダビヨウイン シリツ","川崎市立テスト病院","井田病院 市立","111234567","370","","","","","","","","","","","044-766-2188","カナガワケン カワサキシ ナカハラク イダ 2-27-1","神奈川県川崎市中原区井田2-27-1","211-0035","14133001002","14","133","2-27-1","08120402","04060202","221","","1","","3","","1","","2","","3","3","343","0","27","0","370","343","0","20140811","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","clsComInstInfo","2022-02-01 11:08:29","com_inst_mapper" +"009929798","10","6","パ-ソナルヘルスマナビノクリニツク","パ-ソナルヘルスマナビノクリニツク","パーソナルヘルス学びのクリニック","パーソナルヘルス学びのCL","","0","","","","","","","","","","","","トウキヨウト ミナトク ミナミアオヤマ 2-2-1 ウインアオヤマ 405","東京都港区南青山2-2-15 ウイン青山405","107-0062","13103025002","13","103","2-2-15-405","07050802","03020302","472","","7","","","","","","","","","6","95","92","93","94","91","96","97","20130415","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","clsComInstInfo","2022-02-01 11:08:30","com_inst_mapper" +"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" +"223333399","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper" +"993333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","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" +"999999999","37","","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","","NULL","","","","","","","","","","","","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","123-4522","18192021","18","19","25","30313233","26272829","36","","7","","","","","","","","","8","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","aaaa","2023/04/12 00:00:00","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv new file mode 100644 index 00000000..9cede581 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_delete.csv @@ -0,0 +1,4 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","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" +"009900146","09912345","20220201","20220201","NULL","NULL","NULL","NULL","NULL","2022/02/01 11:08:29","clsComInstInfo","2022/02/01 14:52:43","clsComInstInfo" +"009901649","NULL","20220131","20220201","20220201","NULL","NULL","NULL","NULL","2022/01/31 11:38:27","clsComInstInfo","2022/02/01 14:52:43","clsComInstInfo" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv index db6f2bd4..a07ed27d 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_insert.csv @@ -1,2 +1,3 @@ "dcf_chld_inst_cd","dcf_prnt_inst_cd","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" -"293031","20230427NULLNULL","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"009901649","007201648","20220131","NULL","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"223333344","9933333311","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv new file mode 100644 index 00000000..b85d46c8 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_spcare_update.csv @@ -0,0 +1,7 @@ +"dcf_chld_inst_cd","dcf_prnt_inst_cd","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" +"009900146","09912345","20220201","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 11:08:29","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009901649","","20220131","20230508","20230508","NULL","NULL","NULL","NULL","2023/05/01 11:38:27","clsComInstInfo","2023/05/01 14:52:43","com_inst_mapper" +"223333344","9933333311","20230508","20230508","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333399","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","9933333311","20230508","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" +"999999999","","20230508","20230508","20230508","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv new file mode 100644 index 00000000..bfd476b6 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_delete.csv @@ -0,0 +1,66 @@ +"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2022-02-01 14:52:43","clsComInstInfo","2022-02-01 14:52:43","clsComInstInfo" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv index 133e9b9f..78a3a2de 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_insert.csv @@ -1,4 +1,55 @@ "dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009929798","A01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009900146","A11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A12","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","A22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","A23","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","A34","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","A41","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A56","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009929798","A57","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A58","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A61","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A65","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","A81","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","B01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","B04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B11","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B22","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","B31","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","C01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","C04","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","C05","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","D02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900146","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","E02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","F01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","F08","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","G06","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","H02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009929798","I01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"009904439","J01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","K01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","M01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","N03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900194","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","O01","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009900194","O02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:26","com_inst_mapper","2022-01-31 11:38:26","com_inst_mapper" +"009904439","P02","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:27","com_inst_mapper","2022-01-31 11:38:27","com_inst_mapper" +"009904439","P03","20220131","NULL","NULL","NULL","NULL","NULL","2022-01-31 11:38:28","com_inst_mapper","2022-01-31 11:38:28","com_inst_mapper" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" "223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" "223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" "223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" @@ -52,10 +103,3 @@ "223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" "223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" "223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" -"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv new file mode 100644 index 00000000..8d4e9a35 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/expect_com_trt_update.csv @@ -0,0 +1,66 @@ +"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900194","U15","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U18","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U21","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"009900194","U23","20220201","NULL","NULL","NULL","NULL","NULL","2023/05/01 14:52:43","com_inst_mapper","2023/05/01 14:52:43","com_inst_mapper" +"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper" +"993333344","999","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","aaaa","2023/05/01 16:16:43","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py index 3dd1f2bb..7575319c 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -28,13 +28,13 @@ class TestComInstMapper: # 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): @@ -76,26 +76,39 @@ class TestComInstMapper: actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_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 = [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup', + 'regist_ymd', + '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 [ - 'bed_num', - 'prmit_bed_num_other', - 'prmit_bed_num_mental', - 'prmit_bed_num_tuber', - 'prmit_bed_num_infection', - 'prmit_bed_num_sum', - 'prmit_bed_num_gen', - 'prmit_bed_num_rcup', - '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}が、期待値以降であること' + if actual_col_name in ignore_columns: + if actual_col_name in [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup']: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' # 期待値ファイルを読み込む(施設診療科目) expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_insert.csv')) @@ -139,7 +152,7 @@ class TestComInstMapper: 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): @@ -165,6 +178,7 @@ class TestComInstMapper: self.db.execute(delete_sql, delete_parameter) delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'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_inst_before_update.csv')) @@ -198,6 +212,7 @@ class TestComInstMapper: for line_number, line in enumerate(test_dat_file, start=1): sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db) assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか' + sut.make_query() sut.execute_queries() @@ -208,7 +223,20 @@ class TestComInstMapper: actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_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'] + # 期待値検査 + ignore_columns = [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup', + 'regist_ymd', + '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 @@ -219,7 +247,19 @@ class TestComInstMapper: 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}が、期待値以降であること' + if actual_col_name in [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup']: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' # 期待値ファイルを読み込む(施設診療科目) expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_update.csv')) @@ -248,13 +288,17 @@ class TestComInstMapper: line_number += 1 for actual_col_name, expect_col_name in zip(actual_row, expect_row): if actual_col_name in ignore_columns: - assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' # 期待値ファイルを読み込む(特養医務室データ) expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_update.csv')) primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list] actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_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) @@ -263,8 +307,11 @@ class TestComInstMapper: 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}が、期待値以降であること' + 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): """ @@ -332,7 +379,19 @@ class TestComInstMapper: actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_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'] + ignore_columns = [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup', + 'regist_ymd', + '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 @@ -343,7 +402,19 @@ class TestComInstMapper: 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}が、期待値以降であること' + if actual_col_name in [ + 'bed_num', + 'prmit_bed_num_other', + 'prmit_bed_num_mental', + 'prmit_bed_num_tuber', + 'prmit_bed_num_infection', + 'prmit_bed_num_sum', + 'prmit_bed_num_gen', + 'prmit_bed_num_rcup']: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' # 期待値ファイルを読み込む(施設診療科目) expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_delete.csv')) @@ -372,7 +443,10 @@ class TestComInstMapper: line_number += 1 for actual_col_name, expect_col_name in zip(actual_row, expect_row): if actual_col_name in ignore_columns: - assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + if expect_row[expect_col_name] is None: + assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' # 期待値ファイルを読み込む(特養医務室データ) expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_delete.csv')) @@ -388,4 +462,7 @@ class TestComInstMapper: 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}が、期待値以降であること' + 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 cab7db1e0bc60a99b318a89f161286ddb3ec2b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 9 May 2023 09:22:31 +0900 Subject: [PATCH 31/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E4=BD=9C=E6=A5=AD=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 1475 +++++++++++++++++ .../utmp_tables/tables/com_inst_att.py | 690 ++++++++ .../ultmarc_table_mapper_factory.py | 4 +- 3 files changed, 2168 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py new file mode 100644 index 00000000..6f9de396 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -0,0 +1,1475 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_inst_att import ComInstAtt + + +class ComInstAttMapper(UltmarcTableMapper): + """レイアウト区分111: COM_施設属税 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_inst_att + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_inst_att + ( + dcf_dsf_inst_cd, + dpc_flag, + dpc_specday, + dpc_cancelday, + predpc_flag, + predpc_specday, + predpc_cancelday, + cancer_flag, + cancer_specday, + cancer_cancelday, + funchpflag, + funchpokdate, + funchpcandate, + areasuphpflag, + areasuphpintrate, + areasuphpokdate, + areasuphpcandate, + acuthpaddflag, + acuthpaddokdate, + acuthpaddcandate, + genadmisiionflag, + genadmisiionfokdate, + genadmisiionfcandate, + assistanceflag, + assistanceokdate, + assistancecandate, + diagnosistreatment_flag, + diagnosistreatment_specday, + diagnosistreatment_cancelday, + safety_flag, + safety_specday, + safety_cancelday, + highrisk_flag, + highrisk_specday, + highrisk_cancelday, + infantandholiday_flag, + infantandholiday_specday, + infantandholiday_cancelday, + ophpflag, + ophpokdate, + ophpcandate, + critical_flag, + critical_code01, + critical_code02, + critical_code03, + critical_code04, + critical_code05, + critical_code06, + critical_code07, + critical_code08, + critical_code09, + critical_code10, + critical_code11, + critical_code12, + critical_code13, + critical_code14, + critical_code15, + critical_code16, + critical_code17, + critical_code18, + critical_code19, + critical_code20, + drgmgthpflag, + drgmgthpokdate, + drgmgthpcandate, + imagediagnosis_flag, + imagediagnosis_specifiedday, + imagediagnosis_cancelday, + chemotherapy_flag, + chemotherapy_specday, + chemotherapy_cancelday, + rehabilitation_flag, + rehabilitation_code01, + rehabilitation_code02, + rehabilitation_code03, + rehabilitation_code04, + rehabilitation_code05, + rehabilitation_code06, + rehabilitation_code07, + rehabilitation_code08, + rehabilitation_code09, + rehabilitation_code10, + anesthetizingmanage_flag, + anesthetizingmanage_specday, + anesthetizingmanage_cancelday, + homerecuperation_flag, + homerecuperation_specday, + homerecuperation_cancelday, + synthesiswhenstaying_flag, + synthesiswhenstaying_specday, + synthesiswhenstaying_cancelday, + homelateflag, + homelateokday, + homelatecanday, + caremixkind, + fullmoveflag, + resthpflag, + resthpcarekind, + resthpbednum, + resthpokdate, + resthpcandate, + resthpcarenrskind, + resthpcarebednum, + resthpcareokdate, + resthpcarecandate, + resthpsbednum, + nrmhpflag, + nrmhpcarekind, + nrmhpbedtotalnum, + menthpflag, + menthpcarekind, + menthpbednum, + tubhpflag, + tubhpcarekind, + tubhpbednum, + infhpflag, + infhpflag1, + infhpflag2, + infhpbedflag, + infhpbednum, + hospiceflag, + hospicebednum, + hospiceokdate, + hospicecandate, + hpfuncestflag, + hpfuncestkind, + hpfuncestokdate, + hpfuncestcandate, + clolyhpkind, + clolyhpokdate, + clolyhpcandate, + clhpkind, + clhpokdate, + clhpcandate, + cldephpkind, + cldephpokdate, + cldephpcandate, + disasthpflag, + d1emerhpflag, + d2emerhpflag, + d3emerhpflag, + emergencyclinic, + trialcoreflag, + trialcore_div, + trialcoreokdate, + trialcorecandate, + dementiaflag, + dementiaokdate, + dementiacandate, + sphealth_exploration, + sphealth_guidance, + hiadhpflag, + hiadhpcode1, + hiadhpkind1, + hiadhpcode2, + hiadhpkind2, + hiadhpcode3, + hiadhpkind3, + hiadhpcode4, + hiadhpkind4, + hiadhpcode5, + hiadhpkind5, + hiadhpcode6, + hiadhpkind6, + hiadhpcode7, + hiadhpkind7, + hiadhpcode8, + hiadhpkind8, + hiadhpcode9, + hiadhpkind9, + hiadhpcode10, + hiadhpkind10, + hiadhpcode11, + hiadhpkind11, + hiadhpcode12, + hiadhpkind12, + hiadhpcode13, + hiadhpkind13, + hiadhpcode14, + hiadhpkind14, + hiadhpcode15, + hiadhpkind15, + hiadhpcode16, + hiadhpkind16, + hiadhpcode17, + hiadhpkind17, + hiadhpcode18, + hiadhpkind18, + hiadhpcode19, + hiadhpkind19, + hiadhpcode20, + hiadhpkind20, + hiadhpcode21, + hiadhpkind21, + hiadhpcode22, + hiadhpkind22, + hiadhpcode23, + hiadhpkind23, + hiadhpcode24, + hiadhpkind24, + hiadhpcode25, + hiadhpkind25, + hiadhpcode26, + hiadhpkind26, + hiadhpcode27, + hiadhpkind27, + hiadhpcode28, + hiadhpkind28, + hiadhpcode29, + hiadhpkind29, + hiadhpcode30, + hiadhpkind30, + hiadhpcode31, + hiadhpkind31, + hiadhpcode32, + hiadhpkind32, + hiadhpcode33, + hiadhpkind33, + hiadhpcode34, + hiadhpkind34, + hiadhpcode35, + hiadhpkind35, + hiadhpcode36, + hiadhpkind36, + hiadhpcode37, + hiadhpkind37, + hiadhpcode38, + hiadhpkind38, + hiadhpcode39, + hiadhpkind39, + hiadhpcode40, + hiadhpkind40, + hitechhpflag, + hitechhpkind1, + hitechhpkind2, + hitechhpkind3, + hitechhpkind4, + hitechhpkind5, + hitechhpkind6, + hitechhpkind7, + hitechhpkind8, + hitechhpkind9, + hitechhpkind10, + hitechhpkind11, + hitechhpkind12, + hitechhpkind13, + hitechhpkind14, + hitechhpkind15, + hitechhpkind16, + hitechhpkind17, + hitechhpkind18, + hitechhpkind19, + hitechhpkind20, + policymedical_flag, + policymedical_code01, + policymedical_content01, + policymedical_code02, + policymedical_content02, + policymedical_code03, + policymedical_content03, + policymedical_code04, + policymedical_content04, + policymedical_code05, + policymedical_content05, + policymedical_code06, + policymedical_content06, + policymedical_code07, + policymedical_content07, + policymedical_code08, + policymedical_content08, + policymedical_code09, + policymedical_content09, + policymedical_code10, + policymedical_content10, + policymedical_code11, + policymedical_content11, + policymedical_code12, + policymedical_content12, + policymedical_code13, + policymedical_content13, + policymedical_code14, + policymedical_content14, + policymedical_code15, + policymedical_content15, + policymedical_code16, + policymedical_content16, + policymedical_code17, + policymedical_content17, + policymedical_code18, + policymedical_content18, + policymedical_code19, + policymedical_content19, + policymedical_code20, + policymedical_content20, + visitcarestflag, + visitcarestation_id, + visitcarestation_code, + visitcarestation_yobi, + opendate, + regist_ymd, + update_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :dpc_flag, + :dpc_spec_day, + :dpc_cancel_day, + :predpc_flag, + :predpc_spec_day, + :predpc_cancel_day, + :cancer_flag, + :cancer_spec_day, + :cancer_cancel_day, + :funchp_flag, + :funchp_ok_date, + :funchp_can_date, + :areasuphp_flag, + :areasuphp_intrate, + :areasuphp_ok_date, + :areasuphp_can_date, + :acuthp_add_flag, + :acuthp_add_ok_date, + :acuthp_add_can_date, + :genadmisiion_flag, + :genadmisiion_ok_date, + :genadmisiion_can_date, + :assistance_flag, + :assistance_ok_date, + :assistance_can_date, + :diagnosis_treatment_flag, + :diagnosis_treatment_spec_day, + :diagnosis_treatment_cancel_day, + :safety_flag, + :safety_spec_day, + :safety_cancel_day, + :highrisk_flag, + :highrisk_spec_day, + :highrisk_cancel_day, + :infant_and_holiday_flag, + :infant_and_holiday_spec_day, + :infant_and_holiday_cancel_day, + :ophp_flag, + :ophpok_date, + :ophpcan_date, + :critical_flag, + :critical_code01, + :critical_code02, + :critical_code03, + :critical_code04, + :critical_code05, + :critical_code06, + :critical_code07, + :critical_code08, + :critical_code09, + :critical_code10, + :critical_code11, + :critical_code12, + :critical_code13, + :critical_code14, + :critical_code15, + :critical_code16, + :critical_code17, + :critical_code18, + :critical_code19, + :critical_code20, + :drgmgthp_flag, + :drgmgthp_ok_date, + :drgmgthp_can_date, + :image_diagnosis_flag, + :image_diagnosis_specified_day, + :image_diagnosis_cancel_day, + :chemotherapy_flag, + :chemotherapy_spec_day, + :chemotherapy_cancel_day, + :rehabilitation_flag, + :rehabilitation_code01, + :rehabilitation_code02, + :rehabilitation_code03, + :rehabilitation_code04, + :rehabilitation_code05, + :rehabilitation_code06, + :rehabilitation_code07, + :rehabilitation_code08, + :rehabilitation_code09, + :rehabilitation_code10, + :anesthetizing_manage_flag, + :anesthetizing_manage_spec_day, + :anesthetizing_manage_can_day, + :home_recuperation_flag, + :home_recuperation_specday, + :home_recuperation_cancelday, + :synthesis_when_staying_flag, + :synthesis_when_staying_spec_day, + :synthesis_when_staying_can_day, + :home_late_flag, + :home_late_ok_day, + :home_late_can_day, + :caremix_kind, + :fullmove_flag, + :resthp_flag, + :resthp_care_kind, + :resthp_bed_num, + :resthp_ok_date, + :resthp_can_date, + :resthp_care_nrs_kind, + :resthp_care_bed_num, + :resthp_care_ok_date, + :resthp_care_can_date, + :resthp_sbed_num, + :nrmhp_flag, + :nrmhp_care_kind, + :nrmhp_bed_total_num, + :menthp_flag, + :menthp_care_kind, + :menthp_bed_num, + :tubhp_flag, + :tubhp_care_kind, + :tubhp_bed_num, + :infhp_flag, + :infhp_flag1, + :infhp_flag2, + :infhp_bed_flag, + :infhp_bed_num, + :hospice_flag, + :hospice_bed_num, + :hospice_ok_date, + :hospice_can_date, + :hpfunce_st_flag, + :hpfunce_st_kind, + :hpfunce_st_ok_date, + :hpfunce_st_can_date, + :clolyhp_kind, + :clolyhp_ok_date, + :clolyhp_can_date, + :clhp_kind, + :clhp_ok_date, + :clhp_can_date, + :cldephp_kind, + :cldephp_ok_date, + :cldephp_can_date, + :disasthp_flag, + :d1emerhp_flag, + :d2emerhp_flag, + :d3emerhp_flag, + :emergency_clinic, + :trial_core_flag, + :trial_core_div, + :trial_core_ok_date, + :trial_core_can_date, + :dementia_flag, + :dementia_okd_ate, + :dementia_can_date, + :sphealth_exploration, + :sphealth_guidance, + :hiadhp_flag, + :hiadhp_code1, + :hiadhp_kind1, + :hiadhp_code2, + :hiadhp_kind2, + :hiadhp_code3, + :hiadhp_kind3, + :hiadhp_code4, + :hiadhp_kind4, + :hiadhp_code5, + :hiadhp_kind5, + :hiadhp_code6, + :hiadhp_kind6, + :hiadhp_code7, + :hiadhp_kind7, + :hiadhp_code8, + :hiadhp_kind8, + :hiadhp_code9, + :hiadhp_kind9, + :hiadhp_code10, + :hiadhp_kind10, + :hiadhp_code11, + :hiadhp_kind11, + :hiadhp_code12, + :hiadhp_kind12, + :hiadhp_code13, + :hiadhp_kind13, + :hiadhp_code14, + :hiadhp_kind14, + :hiadhp_code15, + :hiadhp_kind15, + :hiadhp_code16, + :hiadhp_kind16, + :hiadhp_code17, + :hiadhp_kind17, + :hiadhp_code18, + :hiadhp_kind18, + :hiadhp_code19, + :hiadhp_kind19, + :hiadhp_code20, + :hiadhp_kind20, + :hiadhp_code21, + :hiadhp_kind21, + :hiadhp_code22, + :hiadhp_kind22, + :hiadhp_code23, + :hiadhp_kind23, + :hiadhp_code24, + :hiadhp_kind24, + :hiadhp_code25, + :hiadhp_kind25, + :hiadhp_code26, + :hiadhp_kind26, + :hiadhp_code27, + :hiadhp_kind27, + :hiadhp_code28, + :hiadhp_kind28, + :hiadhp_code29, + :hiadhp_kind29, + :hiadhp_code30, + :hiadhp_kind30, + :hiadhp_code31, + :hiadhp_kind31, + :hiadhp_code32, + :hiadhp_kind32, + :hiadhp_code33, + :hiadhp_kind33, + :hiadhp_code34, + :hiadhp_kind34, + :hiadhp_code35, + :hiadhp_kind35, + :hiadhp_code36, + :hiadhp_kind36, + :hiadhp_code37, + :hiadhp_kind37, + :hiadhp_code38, + :hiadhp_kind38, + :hiadhp_code39, + :hiadhp_kind39, + :hiadhp_code40, + :hiadhp_kind40, + :hitechhp_flag, + :hitechhp_kind1, + :hitechhp_kind2, + :hitechhp_kind3, + :hitechhp_kind4, + :hitechhp_kind5, + :hitechhp_kind6, + :hitechhp_kind7, + :hitechhp_kind8, + :hitechhp_kind9, + :hitechhp_kind10, + :hitechhp_kind11, + :hitechhp_kind12, + :hitechhp_kind13, + :hitechhp_kind14, + :hitechhp_kind15, + :hitechhp_kind16, + :hitechhp_kind17, + :hitechhp_kind18, + :hitechhp_kind19, + :hitechhp_kind20, + :policy_medical_flag, + :policy_medical_code01, + :policy_medical_content01, + :policy_medical_code02, + :policy_medical_content02, + :policy_medical_code03, + :policy_medical_content03, + :policy_medical_code04, + :policy_medical_content04, + :policy_medical_code05, + :policy_medical_content05, + :policy_medical_code06, + :policy_medical_content06, + :policy_medical_code07, + :policy_medical_content07, + :policy_medical_code08, + :policy_medical_content08, + :policy_medical_code09, + :policy_medical_content09, + :policy_medical_code10, + :policy_medical_content10, + :policy_medical_code11, + :policy_medical_content11, + :policy_medical_code12, + :policy_medical_content12, + :policy_medical_code13, + :policy_medical_content13, + :policy_medical_code14, + :policy_medical_content14, + :policy_medical_code15, + :policy_medical_content15, + :policy_medical_code16, + :policy_medical_content16, + :policy_medical_code17, + :policy_medical_content17, + :policy_medical_code18, + :policy_medical_content18, + :policy_medical_code19, + :policy_medical_content19, + :policy_medical_code20, + :policy_medical_content20, + :visitcarest_flag, + :visitcarestation_id, + :visitcarestation_code, + :visitcarestation_yobi, + :open_date, + :execute_date_str_ymd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_inst_att + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_inst_att + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + record: ComInstAtt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComInstAtt) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'C' and self.record.adddel_div == 1: + self.queries.append(self.PHYSICAL_DELETE_QUERY) + return + + # 追加、更新の場合 + self.__make_upsert_query() + return + + def __make_upsert_query(self): + # レコードの存在確認 + record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter) + # 存在しない場合はInsert + if record_count[0]['count_num'] == 0: + self.queries.append(self.INSERT_QUERY) + return + + # 存在する場合はUpdate + set_clauses = [] + # DPC対象病院 + if len(self.record.dpc_flag) > 0: + set_clauses.append('dpc_flag = :dpc_flag') + set_clauses.append('dpc_specday = :dpc_spec_day') + set_clauses.append('dpc_cancelday = :dpc_cancel_day') + if self.record.dpc_flag == '@': + self.query_parameter['dpc_flag'] = '' + self.query_parameter['dpc_spec_day'] = '' + self.query_parameter['dpc_cancel_day'] = '' + + # DPC準備病院 + if len(self.record.predpc_flag) > 0: + set_clauses.append('predpc_flag = :predpc_flag') + set_clauses.append('predpc_specday = :predpc_spec_day') + set_clauses.append('predpc_cancelday = :predpc_cancel_day') + if self.record.predpc_flag == '@': + self.query_parameter['predpc_flag'] = '' + self.query_parameter['predpc_spec_day'] = '' + self.query_parameter['predpc_cancel_day'] = '' + + # がん診療連携拠点病院 + if len(self.record.cancer_flag) > 0: + set_clauses.append('cancer_flag = :cancer_flag') + set_clauses.append('cancer_specday = :cancer_spec_day') + set_clauses.append('cancer_cancelday = :cancer_cancel_day') + if self.record.cancer_flag == '@': + self.query_parameter['cancer_flag'] = '' + self.query_parameter['cancer_spec_day'] = '' + self.query_parameter['cancer_cancel_day'] = '' + + # 特定機能病院 + if len(self.record.funchp_flag) > 0: + set_clauses.append('funchpflag = :funchp_flag') + set_clauses.append('funchpokdate = :funchp_ok_date') + set_clauses.append('funchpcandate = :funchp_can_date') + if self.record.funchp_flag == '@': + self.query_parameter['funchp_flag'] = '' + self.query_parameter['funchp_ok_date'] = '' + self.query_parameter['funchp_can_date'] = '' + + # 地域医療支援病院 + if len(self.record.areasuphp_flag) > 0: + set_clauses.append('areasuphpflag = :areasuphp_flag') + set_clauses.append('areasuphpintrate = :areasuphp_intrate') + set_clauses.append('areasuphpokdate = :areasuphp_ok_date') + set_clauses.append('areasuphpcandate = :areasuphp_can_date') + if self.record.areasuphp_flag == '@': + self.query_parameter['areasuphp_flag'] = '' + self.query_parameter['areasuphp_intrate'] = '' + self.query_parameter['areasuphp_ok_date'] = '' + self.query_parameter['areasuphp_can_date'] = '' + + # 超急性期脳卒中加算 + if len(self.record.acuthp_add_flag) > 0: + set_clauses.append('acuthpaddflag = :acuthp_add_flag') + set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date') + set_clauses.append('acuthpaddcandate = :acuthp_add_can_date') + if self.record.acuthp_add_flag == '@': + self.query_parameter['acuthp_add_flag'] = '' + self.query_parameter['acuthp_add_ok_date'] = '' + self.query_parameter['acuthp_add_can_date'] = '' + + # 総合入院体制加算 + if len(self.record.genadmisiion_flag) > 0: + set_clauses.append('genadmisiionflag = :genadmisiion_flag') + set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date') + set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date') + if self.record.genadmisiion_flag == '@': + self.query_parameter['genadmisiion_flag'] = '' + self.query_parameter['genadmisiion_ok_date'] = '' + self.query_parameter['genadmisiion_can_date'] = '' + + # 医師事務作業補助体制加算 + if len(self.record.assistance_flag) > 0: + set_clauses.append('assistanceflag = :assistance_flag') + set_clauses.append('assistanceokdate = :assistance_ok_date') + set_clauses.append('assistancecandate = :assistance_can_date') + if self.record.assistance_flag == '@': + self.query_parameter['assistance_flag'] = '' + self.query_parameter['assistance_ok_date'] = '' + self.query_parameter['assistance_can_date'] = '' + + # 診療録管理体制加算 + if len(self.record.diagnosis_treatment_flag) > 0: + set_clauses.append('diagnosistreatment_flag = :diagnosis_treatment_flag') + set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day') + set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day') + if self.record.diagnosis_treatment_flag == '@': + self.query_parameter['diagnosis_treatment_flag'] = '' + self.query_parameter['diagnosis_treatment_spec_day'] = '' + self.query_parameter['diagnosis_treatment_cancel_day'] = '' + + # 医療安全対策加算 + if len(self.record.safety_flag) > 0: + set_clauses.append('safety_flag = :safety_flag') + set_clauses.append('safety_specday = :safety_spec_day') + set_clauses.append('safety_cancelday = :safety_cancel_day') + if self.record.safety_flag == '@': + self.query_parameter['safety_flag'] = '' + self.query_parameter['safety_spec_day'] = '' + self.query_parameter['safety_cancel_day'] = '' + + # 褥瘡ハイリスク患者ケア加算 + if len(self.record.highrisk_flag) > 0: + set_clauses.append('highrisk_flag = :highrisk_flag') + set_clauses.append('highrisk_specday = :highrisk_spec_day') + set_clauses.append('highrisk_cancelday = :highrisk_cancel_day') + if self.record.highrisk_flag == '@': + self.query_parameter['highrisk_flag'] = '' + self.query_parameter['highrisk_spec_day'] = '' + self.query_parameter['highrisk_cancel_day'] = '' + + # 地域連携小児夜間・休日診療料 + if len(self.record.infant_and_holiday_flag) > 0: + set_clauses.append('infantandholiday_flag = :infant_and_holiday_flag') + set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day') + set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day') + if self.record.infant_and_holiday_flag == '@': + self.query_parameter['infant_and_holiday_flag'] = '' + self.query_parameter['infant_and_holiday_spec_day'] = '' + self.query_parameter['infant_and_holiday_cancel_day'] = '' + + # 開放型病院 + if len(self.record.ophp_flag) > 0: + set_clauses.append('ophpflag = :ophp_flag') + set_clauses.append('ophpokdate = :ophpok_date') + set_clauses.append('ophpcandate = :ophpcan_date') + if self.record.ophp_flag == '@': + self.query_parameter['ophp_flag'] = '' + self.query_parameter['ophpok_date'] = '' + self.query_parameter['ophpcan_date'] = '' + + # 地域連携クリティカルパス + if len(self.record.critical_flag) > 0: + set_clauses.append('critical_flag = :critical_flag') + set_clauses.append('critical_code01 = :critical_code01') + set_clauses.append('critical_code02 = :critical_code02') + set_clauses.append('critical_code03 = :critical_code03') + set_clauses.append('critical_code04 = :critical_code04') + set_clauses.append('critical_code05 = :critical_code05') + set_clauses.append('critical_code06 = :critical_code06') + set_clauses.append('critical_code07 = :critical_code07') + set_clauses.append('critical_code08 = :critical_code08') + set_clauses.append('critical_code09 = :critical_code09') + set_clauses.append('critical_code10 = :critical_code10') + set_clauses.append('critical_code11 = :critical_code11') + set_clauses.append('critical_code12 = :critical_code12') + set_clauses.append('critical_code13 = :critical_code13') + set_clauses.append('critical_code14 = :critical_code14') + set_clauses.append('critical_code15 = :critical_code15') + set_clauses.append('critical_code16 = :critical_code16') + set_clauses.append('critical_code17 = :critical_code17') + set_clauses.append('critical_code18 = :critical_code18') + set_clauses.append('critical_code19 = :critical_code19') + set_clauses.append('critical_code20 = :critical_code20') + if self.record.critical_flag == '@': + self.query_parameter['critical_flag'] = '' + self.query_parameter['critical_code01'] = '' + self.query_parameter['critical_code02'] = '' + self.query_parameter['critical_code03'] = '' + self.query_parameter['critical_code04'] = '' + self.query_parameter['critical_code05'] = '' + self.query_parameter['critical_code06'] = '' + self.query_parameter['critical_code07'] = '' + self.query_parameter['critical_code08'] = '' + self.query_parameter['critical_code09'] = '' + self.query_parameter['critical_code10'] = '' + self.query_parameter['critical_code11'] = '' + self.query_parameter['critical_code12'] = '' + self.query_parameter['critical_code13'] = '' + self.query_parameter['critical_code14'] = '' + self.query_parameter['critical_code15'] = '' + self.query_parameter['critical_code16'] = '' + self.query_parameter['critical_code17'] = '' + self.query_parameter['critical_code18'] = '' + self.query_parameter['critical_code19'] = '' + self.query_parameter['critical_code20'] = '' + + # 薬剤管理指導料 + if len(self.record.drgmgthp_flag) > 0: + set_clauses.append('drgmgthpflag = :drgmgthp_flag') + set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date') + set_clauses.append('drgmgthpcandate = :drgmgthp_can_date') + if self.record.drgmgthp_flag == '@': + self.query_parameter['drgmgthp_flag'] = '' + self.query_parameter['drgmgthp_ok_date'] = '' + self.query_parameter['drgmgthp_can_date'] = '' + + # 画像診断管理加算 + if len(self.record.image_diagnosis_flag) > 0: + set_clauses.append('imagediagnosis_flag = :image_diagnosis_flag') + set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day') + set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day') + if self.record.image_diagnosis_flag == '@': + self.query_parameter['image_diagnosis_flag'] = '' + self.query_parameter['image_diagnosis_specified_day'] = '' + self.query_parameter['image_diagnosis_cancel_day'] = '' + + # 外来化学療法加算 + if len(self.record.chemotherapy_flag) > 0: + set_clauses.append('chemotherapy_flag = :chemotherapy_flag') + set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day') + set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day') + if self.record.chemotherapy_flag == '@': + self.query_parameter['chemotherapy_flag'] = '' + self.query_parameter['chemotherapy_spec_day'] = '' + self.query_parameter['chemotherapy_cancel_day'] = '' + + # 疾患別リハビリテーション料 + if len(self.record.rehabilitation_flag) > 0: + set_clauses.append('rehabilitation_flag = :rehabilitation_flag') + set_clauses.append('rehabilitation_code01= :rehabilitation_code01') + set_clauses.append('rehabilitation_code02= :rehabilitation_code02') + set_clauses.append('rehabilitation_code03= :rehabilitation_code03') + set_clauses.append('rehabilitation_code04= :rehabilitation_code04') + set_clauses.append('rehabilitation_code05= :rehabilitation_code05') + set_clauses.append('rehabilitation_code06= :rehabilitation_code06') + set_clauses.append('rehabilitation_code07= :rehabilitation_code07') + set_clauses.append('rehabilitation_code08= :rehabilitation_code08') + set_clauses.append('rehabilitation_code09= :rehabilitation_code09') + set_clauses.append('rehabilitation_code10= :rehabilitation_code10') + if self.record.rehabilitation_flag == '@': + self.query_parameter['rehabilitation_flag'] = '' + self.query_parameter['rehabilitation_code01'] = '' + self.query_parameter['rehabilitation_code02'] = '' + self.query_parameter['rehabilitation_code03'] = '' + self.query_parameter['rehabilitation_code04'] = '' + self.query_parameter['rehabilitation_code05'] = '' + self.query_parameter['rehabilitation_code06'] = '' + self.query_parameter['rehabilitation_code07'] = '' + self.query_parameter['rehabilitation_code08'] = '' + self.query_parameter['rehabilitation_code09'] = '' + self.query_parameter['rehabilitation_code10'] = '' + + # 麻酔管理料 + if len(self.record.anesthetizing_manage_flag) > 0: + set_clauses.append('anesthetizingmanage_flag = :anesthetizing_manage_flag') + set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day') + set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day') + if self.record.anesthetizing_manage_flag == '@': + self.query_parameter['anesthetizing_manage_flag'] = '' + self.query_parameter['anesthetizing_manage_spec_day'] = '' + self.query_parameter['anesthetizing_manage_can_day'] = '' + + # 在宅療養支援病院・診療所 + if len(self.record.home_recuperation_flag) > 0: + set_clauses.append('homerecuperation_flag = :home_recuperation_flag') + set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day') + set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day') + if self.record.home_recuperation_flag == '@': + self.query_parameter['home_recuperation_flag'] = '' + self.query_parameter['home_recuperation_spec_day'] = '' + self.query_parameter['home_recuperation_cancel_day'] = '' + + # 在宅時医学総合管理料 + if len(self.record.synthesis_when_staying_flag) > 0: + set_clauses.append('synthesiswhenstaying_flag = :synthesis_when_staying_flag') + set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day') + set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day') + if self.record.synthesis_when_staying_flag == '@': + self.query_parameter['synthesis_when_staying_flag'] = '' + self.query_parameter['synthesis_when_staying_spec_day'] = '' + self.query_parameter['synthesis_when_staying_can_day'] = '' + + # 在宅末期医療総合診療料 + if len(self.record.home_late_flag) > 0: + set_clauses.append('homelateflag = :home_late_flag') + set_clauses.append('homelateokday = :home_late_ok_day') + set_clauses.append('homelatecanday = :home_late_can_day') + if self.record.home_late_flag == '@': + self.query_parameter['home_late_flag'] = '' + self.query_parameter['home_late_ok_day'] = '' + self.query_parameter['home_late_can_day'] = '' + + # ケアミックス区分 + if len(self.record.caremix_kind) > 0: + set_clauses.append('homelateflag = :caremix_kind') + if self.record.caremixkind == '@': + self.query_parameter['caremix_kind'] = '' + + # 完全型・移行型区分 + if len(self.record.fullmove_flag) > 0: + set_clauses.append('fullmoveflag = :fullmove_flag') + if self.record.fullmove_flag == '@': + self.query_parameter['fullmove_flag'] = '' + + # 療養型病床群 + if sum(len(item) for item in self.record.resthp_list) > 0: + set_clauses.append('resthpflag = :resthp_flag') + set_clauses.append('resthpcarekind = :resthp_care_kind') + set_clauses.append('resthpbednum = :resthp_bed_num') + set_clauses.append('resthpokdate = :resthp_ok_date') + set_clauses.append('resthpcandate = :resthp_can_date') + set_clauses.append('resthpcarenrskind = :resthp_care_nrs_kind') + set_clauses.append('resthpcarebednum = :resthp_care_bed_num') + set_clauses.append('resthpcareokdate = :resthp_care_ok_date') + set_clauses.append('resthpcarecandate = :resthp_care_can_date') + set_clauses.append('resthpsbednum = :resthp_sbed_num') + if self.record.resthp_flag == '@': + self.query_parameter['resthp_flag'] = '' + self.query_parameter['resthp_care_kind'] = '' + self.query_parameter['resthp_bed_num'] = '' + self.query_parameter['resthp_ok_date'] = '' + self.query_parameter['resthp_can_date'] = '' + self.query_parameter['resthp_care_nrs_kind'] = '' + self.query_parameter['resthp_care_bed_num'] = '' + self.query_parameter['resthp_care_ok_date'] = '' + self.query_parameter['resthp_care_can_date'] = '' + self.query_parameter['resthp_sbed_num'] = '' + + # 一般病棟 + if len(self.record.nrmhp_flag) > 0: + set_clauses.append('nrmhpflag = :nrmhp_flag') + set_clauses.append('nrmhpcarekind = :nrmhp_care_kind') + set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num') + if self.record.nrmhp_flag == '@': + self.query_parameter['nrmhp_flag'] = '' + self.query_parameter['nrmhp_care_kind'] = '' + self.query_parameter['nrmhp_bed_total_num'] = '' + + # 精神病棟 + if len(self.record.menthp_flag) > 0: + set_clauses.append('menthpflag = :menthp_flag') + set_clauses.append('menthpcarekind = :menthp_care_kind') + set_clauses.append('menthpbednum = :menthp_bed_num') + if self.record.menthp_flag == '@': + self.query_parameter['menthp_flag'] = '' + self.query_parameter['menthp_care_kind'] = '' + self.query_parameter['menthp_bed_num'] = '' + + # 結核病棟 + if len(self.record.tubhp_flag) > 0: + set_clauses.append('tubhpflag = :tubhp_flag') + set_clauses.append('tubhpcarekind = :tubhp_care_kind') + set_clauses.append('tubhpbednum = :tubhp_bed_num') + if self.record.tubhp_flag == '@': + self.query_parameter['tubhp_flag'] = '' + self.query_parameter['tubhp_care_kind'] = '' + self.query_parameter['tubhp_bed_num'] = '' + + # 感染症指定医療機関 + if len(self.record.infhp_flag) > 0: + set_clauses.append('infhpflag = :infhp_flag') + set_clauses.append('infhpflag1 = :infhp_flag1') + set_clauses.append('infhpflag2 = :infhp_flag2') + if self.record.infhp_flag == '@': + self.query_parameter['infhp_flag'] = '' + self.query_parameter['infhp_flag1'] = '' + self.query_parameter['infhp_flag2'] = '' + + # 感染症病床 + if len(self.record.infhp_bed_flag) > 0: + set_clauses.append('infhpbedflag = :infhp_bed_flag') + set_clauses.append('infhpbednum = :infhp_bed_num') + if self.record.infhp_bed_flag == '@': + self.query_parameter['infhp_bed_flag'] = '' + self.query_parameter['infhp_bed_num'] = '' + + # 緩和ケア病棟設置病院 + if len(self.record.hospice_flag) > 0: + set_clauses.append('hospiceflag = :hospice_flag') + set_clauses.append('hospicebednum = :hospice_bed_num') + set_clauses.append('hospiceokdate = :hospice_ok_date') + set_clauses.append('hospicecandate = :hospice_can_date') + if self.record.hospice_flag == '@': + self.query_parameter['hospice_flag'] = '' + self.query_parameter['hospice_bed_num'] = '' + self.query_parameter['hospice_ok_date'] = '' + self.query_parameter['hospice_can_date'] = '' + + # 医療機能評価 + if len(self.record.hpfunce_st_flag) > 0: + set_clauses.append('hpfuncestflag = :hpfunce_st_flag') + set_clauses.append('hpfuncestkind = :hpfunce_st_kind') + set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date') + set_clauses.append('hpfuncestcandate = :hospice_ok_date') + if self.record.hpfunce_st_flag == '@': + self.query_parameter['hpfunce_st_flag'] = '' + self.query_parameter['hpfunce_st_kind'] = '' + self.query_parameter['hpfunce_st_ok_date'] = '' + self.query_parameter['hospice_ok_date'] = '' + + # 臨床研修指定病院 + if sum(len(item) for item in self.record.cl_items) > 0: + set_clauses.append('clolyhpkind = :clolyhp_kind') + set_clauses.append('clolyhpokdate = :clolyhp_ok_date') + set_clauses.append('clolyhpcandate = :clolyhp_can_date') + set_clauses.append('clhpkind = :clhp_kind') + set_clauses.append('clhpokdate = :clhp_ok_date') + set_clauses.append('clhpcandate = :clhp_can_date') + set_clauses.append('cldephpkind = :cldephp_kind') + set_clauses.append('cldephpokdate = :cldephp_ok_date') + set_clauses.append('cldephpcandate = :cldephp_can_date') + if self.record.clolyhp_kind == '@': + self.query_parameter['clolyhp_kind'] = '' + self.query_parameter['clolyhp_ok_date'] = '' + self.query_parameter['clolyhp_can_date'] = '' + self.query_parameter['clhp_kind'] = '' + self.query_parameter['clhp_ok_date'] = '' + self.query_parameter['clhp_can_date'] = '' + self.query_parameter['cldephp_kind'] = '' + self.query_parameter['cldephp_ok_date'] = '' + self.query_parameter['cldephp_can_date'] = '' + + # 災害拠点病院 + if len(self.record.disasthp_flag) > 0: + set_clauses.append('disasthpflag = :disasthp_flag') + if self.record.disasthp_flag == '@': + self.query_parameter['disasthp_flag'] = '' + + # 救急医療 + if len(self.record.d1emerhp_flag) > 0: + set_clauses.append('d1emerhpflag = :d1emerhp_flag') + set_clauses.append('d2emerhpflag = :d2emerhp_flag') + set_clauses.append('d3emerhpflag = :d3emerhp_flag') + if self.record.d1emerhp_flag == '@': + self.query_parameter['d1emerhp_flag'] = '' + self.query_parameter['d2emerhp_flag'] = '' + self.query_parameter['d3emerhp_flag'] = '' + + # 救急告示診療所 + if len(self.record.emergency_clinic) > 0: + set_clauses.append('emergencyclinic = :emergency_clinic') + if self.record.emergency_clinic == '@': + self.query_parameter['emergency_clinic'] = '' + + # 治験中核病院 + if len(self.record.trial_core_flag) > 0: + set_clauses.append('trialcoreflag = :trial_core_flag') + set_clauses.append('trialcore_div = :trial_core_div') + set_clauses.append('trialcoreokdate = :trial_core_ok_date') + set_clauses.append('trialcorecandate = :trial_core_can_date') + if self.record.trial_core_flag == '@': + self.query_parameter['trial_core_flag'] = '' + self.query_parameter['trial_core_div'] = '' + self.query_parameter['trial_core_ok_date'] = '' + self.query_parameter['trial_core_can_date'] = '' + + # 認知症疾患医療センター + if len(self.record.dementia_flag) > 0: + set_clauses.append('dementiaflag = :dementia_flag') + set_clauses.append('dementiaokdate = :dementia_okd_ate') + set_clauses.append('dementiacandate = :dementia_can_date') + if self.record.dementia_flag == '@': + self.query_parameter['dementia_flag'] = '' + self.query_parameter['dementia_okd_ate'] = '' + self.query_parameter['dementia_can_date'] = '' + + # 特定健康診査実施機関 + if len(self.record.sphealth_exploration) > 0: + set_clauses.append('sphealth_exploration = :sphealth_exploration') + if self.record.sphealth_exploration == '@': + self.query_parameter['sphealth_exploration'] = '' + + # 特定保健指導実施機関 + if len(self.record.sphealth_guidance) > 0: + set_clauses.append('sphealth_guidance = :sphealth_guidance') + if self.record.sphealth_guidance == '@': + self.query_parameter['sphealth_guidance'] = '' + + # 先進医療実施医療機関 + if len(self.record.hiadhp_flag) > 0: + set_clauses.append('hiadhpflag = :hiadhp_flag') + set_clauses.append('hiadhpcode1 = :hiadhp_code1') + set_clauses.append('hiadhpkind1 = :hiadhp_kind1') + set_clauses.append('hiadhpcode2 = :hiadhp_code2') + set_clauses.append('hiadhpkind2 = :hiadhp_kind2') + set_clauses.append('hiadhpcode3 = :hiadhp_code3') + set_clauses.append('hiadhpkind3 = :hiadhp_kind3') + set_clauses.append('hiadhpcode4 = :hiadhp_code4') + set_clauses.append('hiadhpkind4 = :hiadhp_kind4') + set_clauses.append('hiadhpcode5 = :hiadhp_code5') + set_clauses.append('hiadhpkind5 = :hiadhp_kind5') + set_clauses.append('hiadhpcode6 = :hiadhp_code6') + set_clauses.append('hiadhpkind6 = :hiadhp_kind6') + set_clauses.append('hiadhpcode7 = :hiadhp_code7') + set_clauses.append('hiadhpkind7 = :hiadhp_kind7') + set_clauses.append('hiadhpcode8 = :hiadhp_code8') + set_clauses.append('hiadhpkind8 = :hiadhp_kind8') + set_clauses.append('hiadhpcode9 = :hiadhp_code9') + set_clauses.append('hiadhpkind9 = :hiadhp_kind9') + set_clauses.append('hiadhpcode10 = :hiadhp_code10') + set_clauses.append('hiadhpkind10 = :hiadhp_kind10') + set_clauses.append('hiadhpcode11 = :hiadhp_code11') + set_clauses.append('hiadhpkind11 = :hiadhp_kind11') + set_clauses.append('hiadhpcode12 = :hiadhp_code12') + set_clauses.append('hiadhpkind12 = :hiadhp_kind12') + set_clauses.append('hiadhpcode13 = :hiadhp_code13') + set_clauses.append('hiadhpkind13 = :hiadhp_kind13') + set_clauses.append('hiadhpcode14 = :hiadhp_code14') + set_clauses.append('hiadhpkind14 = :hiadhp_kind14') + set_clauses.append('hiadhpcode15 = :hiadhp_code15') + set_clauses.append('hiadhpkind15 = :hiadhp_kind15') + set_clauses.append('hiadhpcode16 = :hiadhp_code16') + set_clauses.append('hiadhpkind16 = :hiadhp_kind16') + set_clauses.append('hiadhpcode17 = :hiadhp_code17') + set_clauses.append('hiadhpkind17 = :hiadhp_kind17') + set_clauses.append('hiadhpcode18 = :hiadhp_code18') + set_clauses.append('hiadhpkind18 = :hiadhp_kind18') + set_clauses.append('hiadhpcode19 = :hiadhp_code19') + set_clauses.append('hiadhpkind19 = :hiadhp_kind19') + set_clauses.append('hiadhpcode20 = :hiadhp_code20') + set_clauses.append('hiadhpkind20 = :hiadhp_kind20') + set_clauses.append('hiadhpcode21 = :hiadhp_code21') + set_clauses.append('hiadhpkind21 = :hiadhp_kind21') + set_clauses.append('hiadhpcode22 = :hiadhp_code22') + set_clauses.append('hiadhpkind22 = :hiadhp_kind22') + set_clauses.append('hiadhpcode23 = :hiadhp_code23') + set_clauses.append('hiadhpkind23 = :hiadhp_kind23') + set_clauses.append('hiadhpcode24 = :hiadhp_code24') + set_clauses.append('hiadhpkind24 = :hiadhp_kind24') + set_clauses.append('hiadhpcode25 = :hiadhp_code25') + set_clauses.append('hiadhpkind25 = :hiadhp_kind25') + set_clauses.append('hiadhpcode26 = :hiadhp_code26') + set_clauses.append('hiadhpkind26 = :hiadhp_kind26') + set_clauses.append('hiadhpcode27 = :hiadhp_code27') + set_clauses.append('hiadhpkind27 = :hiadhp_kind27') + set_clauses.append('hiadhpcode28 = :hiadhp_code28') + set_clauses.append('hiadhpkind28 = :hiadhp_kind28') + set_clauses.append('hiadhpcode29 = :hiadhp_code29') + set_clauses.append('hiadhpkind29 = :hiadhp_kind29') + set_clauses.append('hiadhpcode30 = :hiadhp_code30') + set_clauses.append('hiadhpkind30 = :hiadhp_kind30') + set_clauses.append('hiadhpcode31 = :hiadhp_code31') + set_clauses.append('hiadhpkind31 = :hiadhp_kind31') + set_clauses.append('hiadhpcode32 = :hiadhp_code32') + set_clauses.append('hiadhpkind32 = :hiadhp_kind32') + set_clauses.append('hiadhpcode33 = :hiadhp_code33') + set_clauses.append('hiadhpkind33 = :hiadhp_kind33') + set_clauses.append('hiadhpcode34 = :hiadhp_code34') + set_clauses.append('hiadhpkind34 = :hiadhp_kind34') + set_clauses.append('hiadhpcode35 = :hiadhp_code35') + set_clauses.append('hiadhpkind35 = :hiadhp_kind35') + set_clauses.append('hiadhpcode36 = :hiadhp_code36') + set_clauses.append('hiadhpkind36 = :hiadhp_kind36') + set_clauses.append('hiadhpcode37 = :hiadhp_code37') + set_clauses.append('hiadhpkind37 = :hiadhp_kind37') + set_clauses.append('hiadhpcode38 = :hiadhp_code38') + set_clauses.append('hiadhpkind38 = :hiadhp_kind38') + set_clauses.append('hiadhpcode39 = :hiadhp_code39') + set_clauses.append('hiadhpkind39 = :hiadhp_kind39') + set_clauses.append('hiadhpcode40 = :hiadhp_code40') + set_clauses.append('hiadhpkind40 = :hiadhp_kind40') + if self.record.hiadhp_flag == '@': + self.query_parameter['hiadhp_flag'] = '' + self.query_parameter['hiadhp_code1'] = '' + self.query_parameter['hiadhp_kind1'] = '' + self.query_parameter['hiadhp_code2'] = '' + self.query_parameter['hiadhp_kind2'] = '' + self.query_parameter['hiadhp_code3'] = '' + self.query_parameter['hiadhp_kind3'] = '' + self.query_parameter['hiadhp_code4'] = '' + self.query_parameter['hiadhp_kind4'] = '' + self.query_parameter['hiadhp_code5'] = '' + self.query_parameter['hiadhp_kind5'] = '' + self.query_parameter['hiadhp_code6'] = '' + self.query_parameter['hiadhp_kind6'] = '' + self.query_parameter['hiadhp_code7'] = '' + self.query_parameter['hiadhp_kind7'] = '' + self.query_parameter['hiadhp_code8'] = '' + self.query_parameter['hiadhp_kind8'] = '' + self.query_parameter['hiadhp_code9'] = '' + self.query_parameter['hiadhp_kind9'] = '' + self.query_parameter['hiadhp_code10'] = '' + self.query_parameter['hiadhp_kind10'] = '' + self.query_parameter['hiadhp_code11'] = '' + self.query_parameter['hiadhp_kind11'] = '' + self.query_parameter['hiadhp_code12'] = '' + self.query_parameter['hiadhp_kind12'] = '' + self.query_parameter['hiadhp_code13'] = '' + self.query_parameter['hiadhp_kind13'] = '' + self.query_parameter['hiadhp_code14'] = '' + self.query_parameter['hiadhp_kind14'] = '' + self.query_parameter['hiadhp_code15'] = '' + self.query_parameter['hiadhp_kind15'] = '' + self.query_parameter['hiadhp_code16'] = '' + self.query_parameter['hiadhp_kind16'] = '' + self.query_parameter['hiadhp_code17'] = '' + self.query_parameter['hiadhp_kind17'] = '' + self.query_parameter['hiadhp_code18'] = '' + self.query_parameter['hiadhp_kind18'] = '' + self.query_parameter['hiadhp_code19'] = '' + self.query_parameter['hiadhp_kind19'] = '' + self.query_parameter['hiadhp_code20'] = '' + self.query_parameter['hiadhp_kind20'] = '' + self.query_parameter['hiadhp_code21'] = '' + self.query_parameter['hiadhp_kind21'] = '' + self.query_parameter['hiadhp_code22'] = '' + self.query_parameter['hiadhp_kind22'] = '' + self.query_parameter['hiadhp_code23'] = '' + self.query_parameter['hiadhp_kind23'] = '' + self.query_parameter['hiadhp_code24'] = '' + self.query_parameter['hiadhp_kind24'] = '' + self.query_parameter['hiadhp_code25'] = '' + self.query_parameter['hiadhp_kind25'] = '' + self.query_parameter['hiadhp_code26'] = '' + self.query_parameter['hiadhp_kind26'] = '' + self.query_parameter['hiadhp_code27'] = '' + self.query_parameter['hiadhp_kind27'] = '' + self.query_parameter['hiadhp_code28'] = '' + self.query_parameter['hiadhp_kind28'] = '' + self.query_parameter['hiadhp_code29'] = '' + self.query_parameter['hiadhp_kind29'] = '' + self.query_parameter['hiadhp_code30'] = '' + self.query_parameter['hiadhp_kind30'] = '' + self.query_parameter['hiadhp_code31'] = '' + self.query_parameter['hiadhp_kind31'] = '' + self.query_parameter['hiadhp_code32'] = '' + self.query_parameter['hiadhp_kind32'] = '' + self.query_parameter['hiadhp_code33'] = '' + self.query_parameter['hiadhp_kind33'] = '' + self.query_parameter['hiadhp_code34'] = '' + self.query_parameter['hiadhp_kind34'] = '' + self.query_parameter['hiadhp_code35'] = '' + self.query_parameter['hiadhp_kind35'] = '' + self.query_parameter['hiadhp_code36'] = '' + self.query_parameter['hiadhp_kind36'] = '' + self.query_parameter['hiadhp_code37'] = '' + self.query_parameter['hiadhp_kind37'] = '' + self.query_parameter['hiadhp_code38'] = '' + self.query_parameter['hiadhp_kind38'] = '' + self.query_parameter['hiadhp_code39'] = '' + self.query_parameter['hiadhp_kind39'] = '' + self.query_parameter['hiadhp_code40'] = '' + self.query_parameter['hiadhp_kind40'] = '' + + # 先端医療実施医療機関 + if len(self.record.hitechhp_flag) > 0: + set_clauses.append('hitechhpflag = :hitechhp_flag') + set_clauses.append('hitechhpkind1 = :hitechhp_kind1') + set_clauses.append('hitechhpkind2 = :hitechhp_kind2') + set_clauses.append('hitechhpkind3 = :hitechhp_kind3') + set_clauses.append('hitechhpkind4 = :hitechhp_kind4') + set_clauses.append('hitechhpkind5 = :hitechhp_kind5') + set_clauses.append('hitechhpkind6 = :hitechhp_kind6') + set_clauses.append('hitechhpkind7 = :hitechhp_kind7') + set_clauses.append('hitechhpkind8 = :hitechhp_kind8') + set_clauses.append('hitechhpkind9 = :hitechhp_kind9') + set_clauses.append('hitechhpkind10 = :hitechhp_kind10') + set_clauses.append('hitechhpkind11 = :hitechhp_kind11') + set_clauses.append('hitechhpkind12 = :hitechhp_kind12') + set_clauses.append('hitechhpkind13 = :hitechhp_kind13') + set_clauses.append('hitechhpkind14 = :hitechhp_kind14') + set_clauses.append('hitechhpkind15 = :hitechhp_kind15') + set_clauses.append('hitechhpkind16 = :hitechhp_kind16') + set_clauses.append('hitechhpkind17 = :hitechhp_kind17') + set_clauses.append('hitechhpkind18 = :hitechhp_kind18') + set_clauses.append('hitechhpkind19 = :hitechhp_kind19') + set_clauses.append('hitechhpkind20 = :hitechhp_kind20') + if self.record.hitechhp_flag == '@': + self.query_parameter['hitechhp_flag'] = '' + self.query_parameter['hitechhp_kind1'] = '' + self.query_parameter['hitechhp_kind2'] = '' + self.query_parameter['hitechhp_kind3'] = '' + self.query_parameter['hitechhp_kind4'] = '' + self.query_parameter['hitechhp_kind5'] = '' + self.query_parameter['hitechhp_kind6'] = '' + self.query_parameter['hitechhp_kind7'] = '' + self.query_parameter['hitechhp_kind8'] = '' + self.query_parameter['hitechhp_kind9'] = '' + self.query_parameter['hitechhp_kind10'] = '' + self.query_parameter['hitechhp_kind11'] = '' + self.query_parameter['hitechhp_kind12'] = '' + self.query_parameter['hitechhp_kind13'] = '' + self.query_parameter['hitechhp_kind14'] = '' + self.query_parameter['hitechhp_kind15'] = '' + self.query_parameter['hitechhp_kind16'] = '' + self.query_parameter['hitechhp_kind17'] = '' + self.query_parameter['hitechhp_kind18'] = '' + self.query_parameter['hitechhp_kind19'] = '' + self.query_parameter['hitechhp_kind20'] = '' + + # 政策医療 + if len(self.record.policy_medical_flag) > 0: + set_clauses.append('policymedical_flag = :policy_medical_flag') + set_clauses.append('policymedical_code01 = :policy_medical_code01') + set_clauses.append('policymedical_content01 = :policy_medical_content01') + set_clauses.append('policymedical_code02 = :policy_medical_code02') + set_clauses.append('policymedical_content02 = :policy_medical_content02') + set_clauses.append('policymedical_code03 = :policy_medical_code03') + set_clauses.append('policymedical_content03 = :policy_medical_content03') + set_clauses.append('policymedical_code04 = :policy_medical_code04') + set_clauses.append('policymedical_content04 = :policy_medical_content04') + set_clauses.append('policymedical_code05 = :policy_medical_code05') + set_clauses.append('policymedical_content05 = :policy_medical_content05') + set_clauses.append('policymedical_code06 = :policy_medical_code06') + set_clauses.append('policymedical_content06 = :policy_medical_content06') + set_clauses.append('policymedical_code07 = :policy_medical_code07') + set_clauses.append('policymedical_content07 = :policy_medical_content07') + set_clauses.append('policymedical_code08 = :policy_medical_code08') + set_clauses.append('policymedical_content08 = :policy_medical_content08') + set_clauses.append('policymedical_code09 = :policy_medical_code09') + set_clauses.append('policymedical_content09 = :policy_medical_content09') + set_clauses.append('policymedical_code10 = :policy_medical_code10') + set_clauses.append('policymedical_content10 = :policy_medical_content10') + set_clauses.append('policymedical_code11 = :policy_medical_code11') + set_clauses.append('policymedical_content11 = :policy_medical_content11') + set_clauses.append('policymedical_code12 = :policy_medical_code12') + set_clauses.append('policymedical_content12 = :policy_medical_content12') + set_clauses.append('policymedical_code13 = :policy_medical_code13') + set_clauses.append('policymedical_content13 = :policy_medical_content13') + set_clauses.append('policymedical_code14 = :policy_medical_code14') + set_clauses.append('policymedical_content14 = :policy_medical_content14') + set_clauses.append('policymedical_code15 = :policy_medical_code15') + set_clauses.append('policymedical_content15 = :policy_medical_content15') + set_clauses.append('policymedical_code16 = :policy_medical_code16') + set_clauses.append('policymedical_content16 = :policy_medical_content16') + set_clauses.append('policymedical_code17 = :policy_medical_code17') + set_clauses.append('policymedical_content17 = :policy_medical_content17') + set_clauses.append('policymedical_code18 = :policy_medical_code18') + set_clauses.append('policymedical_content18 = :policy_medical_content18') + set_clauses.append('policymedical_code19 = :policy_medical_code19') + set_clauses.append('policymedical_content19 = :policy_medical_content19') + set_clauses.append('policymedical_code20 = :policy_medical_code20') + set_clauses.append('policymedical_content20 = :policy_medical_content20') + if self.record.policy_medical_flag == '@': + self.query_parameter['policy_medical_flag'] = '' + self.query_parameter['policy_medical_code01'] = '' + self.query_parameter['policy_medical_content01'] = '' + self.query_parameter['policy_medical_code02'] = '' + self.query_parameter['policy_medical_content02'] = '' + self.query_parameter['policy_medical_code03'] = '' + self.query_parameter['policy_medical_content03'] = '' + self.query_parameter['policy_medical_code04'] = '' + self.query_parameter['policy_medical_content04'] = '' + self.query_parameter['policy_medical_code05'] = '' + self.query_parameter['policy_medical_content05'] = '' + self.query_parameter['policy_medical_code06'] = '' + self.query_parameter['policy_medical_content06'] = '' + self.query_parameter['policy_medical_code07'] = '' + self.query_parameter['policy_medical_content07'] = '' + self.query_parameter['policy_medical_code08'] = '' + self.query_parameter['policy_medical_content08'] = '' + self.query_parameter['policy_medical_code09'] = '' + self.query_parameter['policy_medical_content09'] = '' + self.query_parameter['policy_medical_code10'] = '' + self.query_parameter['policy_medical_content10'] = '' + self.query_parameter['policy_medical_code11'] = '' + self.query_parameter['policy_medical_content11'] = '' + self.query_parameter['policy_medical_code12'] = '' + self.query_parameter['policy_medical_content12'] = '' + self.query_parameter['policy_medical_code13'] = '' + self.query_parameter['policy_medical_content13'] = '' + self.query_parameter['policy_medical_code14'] = '' + self.query_parameter['policy_medical_content14'] = '' + self.query_parameter['policy_medical_code15'] = '' + self.query_parameter['policy_medical_content15'] = '' + self.query_parameter['policy_medical_code16'] = '' + self.query_parameter['policy_medical_content16'] = '' + self.query_parameter['policy_medical_code17'] = '' + self.query_parameter['policy_medical_content17'] = '' + self.query_parameter['policy_medical_code18'] = '' + self.query_parameter['policy_medical_content18'] = '' + self.query_parameter['policy_medical_code19'] = '' + self.query_parameter['policy_medical_content19'] = '' + self.query_parameter['policy_medical_code20'] = '' + self.query_parameter['policy_medical_content20'] = '' + + # 訪問看護ステーション + if len(self.record.visitcarest_flag) > 0: + set_clauses.append('visitcarestflag = :visitcarest_flag') + set_clauses.append('visitcarestation_id = :visitcarestation_id') + set_clauses.append('visitcarestation_code = :visitcarestation_code') + set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi') + if self.record.visitcarest_flag == '@': + self.query_parameter['visitcarest_flag'] = '' + self.query_parameter['visitcarestation_id'] = '' + self.query_parameter['visitcarestation_code'] = '' + self.query_parameter['visitcarestation_yobi'] = '' + + # 開設年月 + if len(self.record.open_date) > 0: + set_clauses.append('opendate = :open_date') + if self.record.open_date == '@': + self.query_parameter['open_date'] = '' + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + self.queries.append(None) + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + self.queries.append(update_query) + + return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py new file mode 100644 index 00000000..57f59a82 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py @@ -0,0 +1,690 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComInstAtt(UltmarcTable): + """レイアウト区分111: COM_施設属性""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備)10/8asa + dpc_flag: str # DPC対象病院フラグ + dpc_spec_day: str # DPC対象病院指定年月日 + dpc_cancel_day: str # DPC対象病院取消年月日 + predpc_flag: str # DPC準備病院フラグ + predpc_spec_day: str # DPC準備病院承認年 + predpc_cancel_day: str # DPC準備病院取消年月日 + cancer_flag: str # がん診療連携拠点病院フラグ + cancer_spec_day: str # がん診療連携拠点病院指定年月日 + cancer_cancel_day: str # がん診療連携拠点病院取消年月日 + funchp_flag: str # 特定機能病院フラグ + funchp_ok_date: str # 特定機能病院承認年月日 + funchp_can_date: str # 特定機能病院取消年月日 + areasuphp_flag: str # 地域医療支援病院フラグ + areasuphp_intrate: str # 地域医 ※ + areasuphp_ok_date: str # 地域医療支援病院承認年月日 + areasuphp_can_date: str # 地域医療支援病院取消年月日 + acuthp_add_flag: str # 超急性期脳卒中加算フラグ + acuthp_add_ok_date: str # 超急性期脳卒中加算承認年月日 + acuthp_add_can_date: str # 超急性期脳卒中加算取消年月日 + genadmisiion_flag: str # 総合入院体制加算フラグ + genadmisiion_ok_date: str # 総合入院体制加算承認年月日 + genadmisiion_can_date: str # 総合入院体制加算取消年月日 + assistance_flag: str # 医師事務作業補助体制加算フラグ + assistance_ok_date: str # 医師事務作業補助体制加算承認年月日 + assistance_can_date: str # 医師事務作業補助体制加算取消年月日 + diagnosis_treatment_flag: str # 診療録管理体制加算フラグ + diagnosis_treatment_spec_day: str # 診療録管理体制加算承認年月日 + diagnosis_treatment_cancel_day: str # 診療録管理体制加算取消年月日 + safety_flag: str # 医療安全対策加算フラグ + safety_spec_day: str # 医療安全対策加算承認年月日 + safety_cancel_day: str # 医療安全対策加算取消年月日 + highrisk_flag: str # 褥瘡ハイリスク患者ケア加算フラグ + highrisk_spec_day: str # 褥瘡ハイリスク患者ケア加算承認年月日 + highrisk_cancel_day: str # 褥瘡ハイリスク患者ケア加算取消年月日 + infant_and_holiday_flag: str # 地域連携小児夜間・休日診療料フラグ + infant_and_holiday_spec_day: str # 地域連携小児夜間・休日診療料承認 + infant_and_holiday_cancel_day: str # 地域連携小児夜間・休日診療料取消 + ophp_flag: str # 開放型病院フラグ + ophpok_date: str # 開放型病院承認年月日 + ophpcan_date: str # 開放型病院取消年月日 + critical_flag: str # 地域連携クリティカルパスフラグ + critical_code01: str # 地域連携クリティカルパスコード1 + critical_code02: str # 地域連携クリティカルパスコード2 + critical_code03: str # 地域連携クリティカルパスコード3 + critical_code04: str # 地域連携クリティカルパスコード4 + critical_code05: str # 地域連携クリティカルパスコード5 + critical_code06: str # 地域連携クリティカルパスコード6 + critical_code07: str # 地域連携クリティカルパスコード7 + critical_code08: str # 地域連携クリティカルパスコード8 + critical_code09: str # 地域連携クリティカルパスコード9 + critical_code10: str # 地域連携クリティカルパスコード10 + critical_code11: str # 地域連携クリティカルパスコード11 + critical_code12: str # 地域連携クリティカルパスコード12 + critical_code13: str # 地域連携クリティカルパスコード13 + critical_code14: str # 地域連携クリティカルパスコード14 + critical_code15: str # 地域連携クリティカルパスコード15 + critical_code16: str # 地域連携クリティカルパスコード16 + critical_code17: str # 地域連携クリティカルパスコード17 + critical_code18: str # 地域連携クリティカルパスコード18 + critical_code19: str # 地域連携クリティカルパスコード19 + critical_code20: str # 地域連携クリティカルパスコード20 + drgmgthp_flag: str # 薬剤管理指導料フラグ + drgmgthp_ok_date: str # 薬剤管理指導料承認年月日 + drgmgthp_can_date: str # 薬剤管理指導料取消年月日 + image_diagnosis_flag: str # 画像診断管理加算フラグ + image_diagnosis_specified_day: str # 画像診断管理加算承認年月日 + image_diagnosis_cancel_day: str # 画像診断管理加算取消年月日 + chemotherapy_flag: str # 外来化学療法加算フラグ + chemotherapy_spec_day: str # 外来化学療法加算承認年月日 + chemotherapy_cancel_day: str # 外来化学療法加算取消年月日 + rehabilitation_flag: str # 疾患別リハビリテーション料フラグ + rehabilitation_code01: str # 疾患別リハビリテーション料コード1 + rehabilitation_code02: str # 疾患別リハビリテーション料コード2 + rehabilitation_code03: str # 疾患別リハビリテーション料コード3 + rehabilitation_code04: str # 疾患別リハビリテーション料コード4 + rehabilitation_code05: str # 疾患別リハビリテーション料コード5 + rehabilitation_code06: str # 疾患別リハビリテーション料コード6 + rehabilitation_code07: str # 疾患別リハビリテーション料コード7 + rehabilitation_code08: str # 疾患別リハビリテーション料コード8 + rehabilitation_code09: str # 疾患別リハビリテーション料コード9 + rehabilitation_code10: str # 疾患別リハビリテーション料コード10 + anesthetizing_manage_flag: str # 麻酔管理料フラグ + anesthetizing_manage_spec_day: str # 麻酔管理料承認年月日 + anesthetizing_manage_can_day: str # 麻酔管理料取消年月日 + home_recuperation_flag: str # 在宅療養支援病院・診療所フラグ + home_recuperation_spec_day: str # 在宅療養支援病院・診療所承認年月 + home_recuperation_cancel_day: str # 在宅療養支援病院・診療所取消年月 + synthesis_when_staying_flag: str # 在宅時医学総合管理料フラグ + synthesis_when_staying_spec_day: str # 在宅時医学総合管理料承認年月日 + synthesis_when_staying_can_day: str # 在宅時医学総合管理料取消年月日 + home_late_flag: str # 在宅末期医療総合診療料フラグ + home_late_ok_day: str # 在宅末期医療総合診療料承認年月日 + home_late_can_day: str # 在宅末期医療総合診療料取消年月日 + caremix_kind: str # ケアミックス区分 + fullmove_flag: str # 完全型・移行型区分 + resthp_flag: str # 療養型病床群フラグ + resthp_care_kind: str # 療養型病床群_医療型(看護種別) + resthp_bed_num: str # 療養 ※ + resthp_ok_date: str # 療養型病床群_医療型(承認年月日) + resthp_can_date: str # 療養型病床群_医療型(取消年月日) + resthp_care_nrs_kind: str # 療養型病床群_介護型(看護種別) + resthp_care_bed_num: str # 療養  ※ + resthp_care_ok_date: str # 療養型病床群_介護型(承認年月日) + resthp_care_can_date: str # 療養型病床群_介護型(取消年月日) + resthp_sbed_num: str # 療養  ※ + nrmhp_flag: str # 一般病棟フラグ + nrmhp_care_kind: str # 一般病棟看護種別 + nrmhp_bed_total_num: str # 一般  ※ + menthp_flag: str # 精神病棟フラグ + menthp_care_kind: str # 精神病棟看護種別 + menthp_bed_num: str # 精神  ※ + tubhp_flag: str # 結核病棟フラグ + tubhp_care_kind: str # 結核病棟看護種別 + tubhp_bed_num: str # 結核  ※ + infhp_flag: str # 感染症特定 + infhp_flag1: str # 感染症1種 + infhp_flag2: str # 感染症2種 + infhp_bed_flag: str # 感染症病床フラグ + infhp_bed_num: str # 感染症病  ※ + hospice_flag: str # 緩和ケア病棟設置病院フラグ + hospice_bed_num: str # 緩和ケア  ※ + hospice_ok_date: str # 緩和ケア病棟設置病院承認年月日 + hospice_can_date: str # 緩和ケア病棟設置病院取消年月日 + hpfunce_st_flag: str # 医療機能評価フラグ + hpfunce_st_kind: str # 医療機能評価種別 + hpfunce_st_ok_date: str # 医療機能評価承認年月日 + hpfunce_st_can_date: str # 医療機能評価取消年月日 + clolyhp_kind: str # 臨床研修指定病院_基幹型病院1フラグ + clolyhp_ok_date: str # 臨床研修指定病院_基幹型病院1承認年月日 + clolyhp_can_date: str # 臨床研修指定病院_基幹型病院1取消年月日 + clhp_kind: str # 臨床研修指定病院_基幹型病院2(群指定)フラグ + clhp_ok_date: str # 臨床研修指定病院_基幹型病院2(群指定)承認 + clhp_can_date: str # 臨床研修指定病院_基幹型病院2(群指定)取消 + cldephp_kind: str # 臨床研修指定病院_協力型病院(群指定)フラグ + cldephp_ok_date: str # 臨床研修指定病院_協力型病院(群指定)承認年 + cldephp_can_date: str # 臨床研修指定病院_協力型病院(群指定)取消年 + disasthp_flag: str # 災害拠点病院 + d1emerhp_flag: str # 救急医療救急告示 + d2emerhp_flag: str # 救急医療2次救急 + d3emerhp_flag: str # 救急医療3次救急 + emergency_clinic: str # 救急告示診療所 + trial_core_flag: str # 治験中核病院フラグ + trial_core_div: str # 治験中核病院区分 + trial_core_ok_date: str # 治験中核病院承認年月日 + trial_core_can_date: str # 治験中核病院取消年月日 + dementia_flag: str # 認知症疾患医療センターフラグ + dementia_okd_ate: str # 認知症疾患医療センター承認年月日 + dementia_can_date: str # 認知症疾患医療センター取消年月日 + sphealth_exploration: str # 特定健康診査実施機 + sphealth_guidance: str # 特定保健指導実施機 + hiadhp_flag: str # 先端医療・高度医療技術実施医療機関フラグ + hiadhp_code1: str # 先端医療・高度医療技術実施医療機関1(コード) + hiadhp_kind1: str # 先端医療・高度医療技術実施医療機関1(区分) + hiadhp_code2: str # 先端医療・高度医療技術実施医療機関2(コード) + hiadhp_kind2: str # 先端医療・高度医療技術実施医療機関2(区分) + hiadhp_code3: str # 先端医療・高度医療技術実施医療機関3(コード) + hiadhp_kind3: str # 先端医療・高度医療技術実施医療機関3(区分) + hiadhp_code4: str # 先端医療・高度医療技術実施医療機関4(コード) + hiadhp_kind4: str # 先端医療・高度医療技術実施医療機関4(区分) + hiadhp_code5: str # 先端医療・高度医療技術実施医療機関5(コード) + hiadhp_kind5: str # 先端医療・高度医療技術実施医療機関5(区分) + hiadhp_code6: str # 先端医療・高度医療技術実施医療機関6(コード) + hiadhp_kind6: str # 先端医療・高度医療技術実施医療機関6(区分) + hiadhp_code7: str # 先端医療・高度医療技術実施医療機関7(コード) + hiadhp_kind7: str # 先端医療・高度医療技術実施医療機関7(区分) + hiadhp_code8: str # 先端医療・高度医療技術実施医療機関8(コード) + hiadhp_kind8: str # 先端医療・高度医療技術実施医療機関8(区分) + hiadhp_code9: str # 先端医療・高度医療技術実施医療機関9(コード) + hiadhp_kind9: str # 先端医療・高度医療技術実施医療機関9(区分) + hiadhp_code10: str # 先端医療・高度医療技術実施医療機関10(コード) + hiadhp_kind10: str # 先端医療・高度医療技術実施医療機関10(区分) + hiadhp_code11: str # 先端医療・高度医療技術実施医療機関11(コード) + hiadhp_kind11: str # 先端医療・高度医療技術実施医療機関11(区分) + hiadhp_code12: str # 先端医療・高度医療技術実施医療機関12(コード) + hiadhp_kind12: str # 先端医療・高度医療技術実施医療機関12(区分) + hiadhp_code13: str # 先端医療・高度医療技術実施医療機関13(コード) + hiadhp_kind13: str # 先端医療・高度医療技術実施医療機関13(区分) + hiadhp_code14: str # 先端医療・高度医療技術実施医療機関14(コード) + hiadhp_kind14: str # 先端医療・高度医療技術実施医療機関14(区分) + hiadhp_code15: str # 先端医療・高度医療技術実施医療機関15(コード) + hiadhp_kind15: str # 先端医療・高度医療技術実施医療機関15(区分) + hiadhp_code16: str # 先端医療・高度医療技術実施医療機関16(コード) + hiadhp_kind16: str # 先端医療・高度医療技術実施医療機関16(区分) + hiadhp_code17: str # 先端医療・高度医療技術実施医療機関17(コード) + hiadhp_kind17: str # 先端医療・高度医療技術実施医療機関17(区分) + hiadhp_code18: str # 先端医療・高度医療技術実施医療機関18(コード) + hiadhp_kind18: str # 先端医療・高度医療技術実施医療機関18(区分) + hiadhp_code19: str # 先端医療・高度医療技術実施医療機関19(コード) + hiadhp_kind19: str # 先端医療・高度医療技術実施医療機関19(区分) + hiadhp_code20: str # 先端医療・高度医療技術実施医療機関20(コード) + hiadhp_kind20: str # 先端医療・高度医療技術実施医療機関20(区分) + hiadhp_code21: str # 先端医療・高度医療技術実施医療機関21(コード) + hiadhp_kind21: str # 先端医療・高度医療技術実施医療機関21(区分) + hiadhp_code22: str # 先端医療・高度医療技術実施医療機関22(コード) + hiadhp_kind22: str # 先端医療・高度医療技術実施医療機関22(区分) + hiadhp_code23: str # 先端医療・高度医療技術実施医療機関23(コード) + hiadhp_kind23: str # 先端医療・高度医療技術実施医療機関23(区分) + hiadhp_code24: str # 先端医療・高度医療技術実施医療機関24(コード) + hiadhp_kind24: str # 先端医療・高度医療技術実施医療機関24(区分) + hiadhp_code25: str # 先端医療・高度医療技術実施医療機関25(コード) + hiadhp_kind25: str # 先端医療・高度医療技術実施医療機関25(区分) + hiadhp_code26: str # 先端医療・高度医療技術実施医療機関26(コード) + hiadhp_kind26: str # 先端医療・高度医療技術実施医療機関26(区分) + hiadhp_code27: str # 先端医療・高度医療技術実施医療機関27(コード) + hiadhp_kind27: str # 先端医療・高度医療技術実施医療機関27(区分) + hiadhp_code28: str # 先端医療・高度医療技術実施医療機関28(コード) + hiadhp_kind28: str # 先端医療・高度医療技術実施医療機関28(区分) + hiadhp_code29: str # 先端医療・高度医療技術実施医療機関29(コード) + hiadhp_kind29: str # 先端医療・高度医療技術実施医療機関29(区分) + hiadhp_code30: str # 先端医療・高度医療技術実施医療機関30(コード) + hiadhp_kind30: str # 先端医療・高度医療技術実施医療機関30(区分) + hiadhp_code31: str # 先端医療・高度医療技術実施医療機関31(コード) + hiadhp_kind31: str # 先端医療・高度医療技術実施医療機関31(区分) + hiadhp_code32: str # 先端医療・高度医療技術実施医療機関32(コード) + hiadhp_kind32: str # 先端医療・高度医療技術実施医療機関32(区分) + hiadhp_code33: str # 先端医療・高度医療技術実施医療機関33(コード) + hiadhp_kind33: str # 先端医療・高度医療技術実施医療機関33(区分) + hiadhp_code34: str # 先端医療・高度医療技術実施医療機関34(コード) + hiadhp_kind34: str # 先端医療・高度医療技術実施医療機関34(区分) + hiadhp_code35: str # 先端医療・高度医療技術実施医療機関35(コード) + hiadhp_kind35: str # 先端医療・高度医療技術実施医療機関35(区分) + hiadhp_code36: str # 先端医療・高度医療技術実施医療機関36(コード) + hiadhp_kind36: str # 先端医療・高度医療技術実施医療機関36(区分) + hiadhp_code37: str # 先端医療・高度医療技術実施医療機関37(コード) + hiadhp_kind37: str # 先端医療・高度医療技術実施医療機関37(区分) + hiadhp_code38: str # 先端医療・高度医療技術実施医療機関38(コード) + hiadhp_kind38: str # 先端医療・高度医療技術実施医療機関38(区分) + hiadhp_code39: str # 先端医療・高度医療技術実施医療機関39(コード) + hiadhp_kind39: str # 先端医療・高度医療技術実施医療機関39(区分) + hiadhp_code40: str # 先端医療・高度医療技術実施医療機関40(コード) + hiadhp_kind40: str # 先端医療・高度医療技術実施医療機関40(区分) + hitechhp_flag: str # 先端医療機器フラグ + hitechhp_kind1: str # 先端医療機器1 + hitechhp_kind2: str # 先端医療機器2 + hitechhp_kind3: str # 先端医療機器3 + hitechhp_kind4: str # 先端医療機器4 + hitechhp_kind5: str # 先端医療機器5 + hitechhp_kind6: str # 先端医療機器6 + hitechhp_kind7: str # 先端医療機器7 + hitechhp_kind8: str # 先端医療機器8 + hitechhp_kind9: str # 先端医療機器9 + hitechhp_kind10: str # 先端医療機器10 + hitechhp_kind11: str # 先端医療機器11 + hitechhp_kind12: str # 先端医療機器12 + hitechhp_kind13: str # 先端医療機器13 + hitechhp_kind14: str # 先端医療機器14 + hitechhp_kind15: str # 先端医療機器15 + hitechhp_kind16: str # 先端医療機器16 + hitechhp_kind17: str # 先端医療機器17 + hitechhp_kind18: str # 先端医療機器18 + hitechhp_kind19: str # 先端医療機器19 + hitechhp_kind20: str # 先端医療機器20 + policy_medical_flag: str # 政策医療フラグ + policy_medical_code01: str # 政策医療1(コード) + policy_medical_content01: str # 政策医療1(区分) + policy_medical_code02: str # 政策医療2(コード) + policy_medical_content02: str # 政策医療2(区分) + policy_medical_code03: str # 政策医療3(コード) + policy_medical_content03: str # 政策医療3(区分) + policy_medical_code04: str # 政策医療4(コード) + policy_medical_content04: str # 政策医療4(区分) + policy_medical_code05: str # 政策医療5(コード) + policy_medical_content05: str # 政策医療5(区分) + policy_medical_code06: str # 政策医療6(コード) + policy_medical_content06: str # 政策医療6(区分) + policy_medical_code07: str # 政策医療7(コード) + policy_medical_content07: str # 政策医療7(区分) + policy_medical_code08: str # 政策医療8(コード) + policy_medical_content08: str # 政策医療8(区分) + policy_medical_code09: str # 政策医療9(コード) + policy_medical_content09: str # 政策医療9(区分) + policy_medical_code10: str # 政策医療10(コード) + policy_medical_content10: str # 政策医療10(区分) + policy_medical_code11: str # 政策医療11(コード) + policy_medical_content11: str # 政策医療11(区分) + policy_medical_code12: str # 政策医療12(コード) + policy_medical_content12: str # 政策医療12(区分) + policy_medical_code13: str # 政策医療13(コード) + policy_medical_content13: str # 政策医療13(区分) + policy_medical_code14: str # 政策医療14(コード) + policy_medical_content14: str # 政策医療14(区分) + policy_medical_code15: str # 政策医療15(コード) + policy_medical_content15: str # 政策医療15(区分) + policy_medical_code16: str # 政策医療16(コード) + policy_medical_content16: str # 政策医療16(区分) + policy_medical_code17: str # 政策医療17(コード) + policy_medical_content17: str # 政策医療17(区分) + policy_medical_code18: str # 政策医療18(コード) + policy_medical_content18: str # 政策医療18(区分) + policy_medical_code19: str # 政策医療19(コード) + policy_medical_content19: str # 政策医療19(区分) + policy_medical_code20: str # 政策医療20(コード) + policy_medical_content20: str # 政策医療20(区分) + visitcarest_flag: str # 訪問看護ステーションフラグ + visitcarestation_id: str # 訪問看護ステーション_施設コード(レコードID) + visitcarestation_code: str # 訪問看護ステーション_施設コード(施設コード) + visitcarestation_yobi: str # 訪問看護ステーション_施設コード(予備) + open_date: str # 開設年月 + maint_flag: str # 修正区分 + adddel_div: str # 追加削除区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + resthp_items: list # 療養型病床リスト + cl_items: list # 臨床研修指定病院リスト + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + + self.maint_flag = record[4].strip() + self.adddel_div = record[5].strip() + + self.dpc_flag = record[8].strip() + self.dpc_spec_day = record[9].strip() + self.dpc_cancel_day = record[10].strip() + + self.predpc_flag = record[11].strip() + self.predpc_spec_day = record[12].strip() + self.predpc_cancel_day = record[13].strip() + + self.cancer_flag = record[14].strip() + self.cancer_spec_day = record[15].strip() + self.cancer_cancel_day = record[16].strip() + + self.funchp_flag = record[17].strip() + self.funchp_ok_date = record[18].strip() + self.funchp_can_date = record[19].strip() + + self.areasuphp_flag = record[20].strip() + self.areasuphp_intrate = record[21].strip() + self.areasuphp_ok_date = record[22].strip() + self.areasuphp_can_date = record[23].strip() + + self.acuthp_add_flag = record[24].strip() + self.acuthp_add_ok_date = record[25].strip() + self.acuthp_add_can_date = record[26].strip() + + self.genadmisiion_flag = record[27].strip() + self.genadmisiion_ok_date = record[28].strip() + self.genadmisiion_can_date = record[29].strip() + + self.assistance_flag = record[30].strip() + self.assistance_ok_date = record[31].strip() + self.assistance_can_date = record[32].strip() + + self.diagnosis_treatment_flag = record[33].strip() + self.diagnosis_treatment_spec_day = record[34].strip() + self.diagnosis_treatment_cancel_day = record[35].strip() + + self.safety_flag = record[36].strip() + self.safety_spec_day = record[37].strip() + self.safety_cancel_day = record[38].strip() + + self.highrisk_flag = record[39].strip() + self.highrisk_spec_day = record[40].strip() + self.highrisk_cancel_day = record[41].strip() + + self.infant_and_holiday_flag = record[42].strip() + self.infant_and_holiday_spec_day = record[43].strip() + self.infant_and_holiday_cancel_day = record[44].strip() + + self.ophp_flag = record[45].strip() + self.ophpok_date = record[46].strip() + self.ophpcan_date = record[47].strip() + self.critical_flag = record[48].strip() + + self.critical_code01 = record[49].strip() + self.critical_code02 = record[50].strip() + self.critical_code03 = record[51].strip() + self.critical_code04 = record[52].strip() + self.critical_code05 = record[53].strip() + self.critical_code06 = record[54].strip() + self.critical_code07 = record[55].strip() + self.critical_code08 = record[56].strip() + self.critical_code09 = record[57].strip() + self.critical_code10 = record[58].strip() + self.critical_code11 = record[59].strip() + self.critical_code12 = record[60].strip() + self.critical_code13 = record[61].strip() + self.critical_code14 = record[62].strip() + self.critical_code15 = record[63].strip() + self.critical_code16 = record[64].strip() + self.critical_code17 = record[65].strip() + self.critical_code18 = record[66].strip() + self.critical_code19 = record[67].strip() + self.critical_code20 = record[68].strip() + + self.drgmgthp_flag = record[69].strip() + self.drgmgthp_ok_date = record[70].strip() + self.drgmgthp_can_date = record[71].strip() + + self.image_diagnosis_flag = record[72].strip() + self.image_diagnosis_specified_day = record[73].strip() + self.image_diagnosis_cancel_day = record[74].strip() + + self.chemotherapy_flag = record[75].strip() + self.chemotherapy_spec_day = record[76].strip() + self.chemotherapy_cancel_day = record[77].strip() + + self.rehabilitation_flag = record[78].strip() + self.rehabilitation_code01 = record[79].strip() + self.rehabilitation_code02 = record[80].strip() + self.rehabilitation_code03 = record[81].strip() + self.rehabilitation_code04 = record[82].strip() + self.rehabilitation_code05 = record[83].strip() + self.rehabilitation_code06 = record[84].strip() + self.rehabilitation_code07 = record[85].strip() + self.rehabilitation_code08 = record[86].strip() + self.rehabilitation_code09 = record[87].strip() + self.rehabilitation_code10 = record[88].strip() + + self.anesthetizing_manage_flag = record[89].strip() + self.anesthetizing_manage_spec_day = record[90].strip() + self.anesthetizing_manage_can_day = record[91].strip() + + self.home_recuperation_flag = record[92].strip() + self.home_recuperation_spec_day = record[93].strip() + self.home_recuperation_cancel_day = record[94].strip() + + self.synthesis_when_staying_flag = record[95].strip() + self.synthesis_when_staying_spec_day = record[96].strip() + self.synthesis_when_staying_can_day = record[97].strip() + + self.home_late_flag = record[98].strip() + self.home_late_ok_day = record[99].strip() + self.home_late_can_day = record[100].strip() + + self.caremix_kind = record[101].strip() + self.fullmove_flag = record[102].strip() + + self.resthp_flag = record[103].strip() + self.resthp_care_kind = record[104].strip() + self.resthp_bed_num = record[105].strip() + self.resthp_ok_date = record[106].strip() + self.resthp_can_date = record[107].strip() + self.resthp_care_nrs_kind = record[108].strip() + self.resthp_care_bed_num = record[109].strip() + self.resthp_care_ok_date = record[110].strip() + self.resthp_care_can_date = record[111].strip() + self.resthp_sbed_num = record[112].strip() + + self.nrmhp_flag = record[113].strip() + self.nrmhp_care_kind = record[114].strip() + self.nrmhp_bed_total_num = record[115].strip() + + self.menthp_flag = record[116].strip() + self.menthp_care_kind = record[117].strip() + self.menthp_bed_num = record[118].strip() + + self.tubhp_flag = record[119].strip() + self.tubhp_care_kind = record[120].strip() + self.tubhp_bed_num = record[121].strip() + + self.infhp_flag = record[122].strip() + self.infhp_flag1 = record[123].strip() + self.infhp_flag2 = record[124].strip() + + self.infhp_bed_flag = record[125].strip() + self.infhp_bed_num = record[126].strip() + + self.hospice_flag = record[127].strip() + self.hospice_bed_num = record[128].strip() + self.hospice_ok_date = record[129].strip() + self.hospice_can_date = record[130].strip() + + self.hpfunce_st_flag = record[131].strip() + self.hpfunce_st_kind = record[132].strip() + self.hpfunce_st_ok_date = record[133].strip() + self.hpfunce_st_can_date = record[134].strip() + + self.clolyhp_kind = record[135].strip() + self.clolyhp_ok_date = record[136].strip() + self.clolyhp_can_date = record[137].strip() + self.clhp_kind = record[138].strip() + self.clhp_ok_date = record[139].strip() + self.clhp_can_date = record[140].strip() + self.cldephp_kind = record[141].strip() + self.cldephp_ok_date = record[142].strip() + self.cldephp_can_date = record[143].strip() + + self.disasthp_flag = record[144].strip() + + self.d1emerhp_flag = record[145].strip() + self.d2emerhp_flag = record[146].strip() + self.d3emerhp_flag = record[147].strip() + + self.emergency_clinic = record[148].strip() + + self.trial_core_flag = record[149].strip() + self.trial_core_div = record[150].strip() + self.trial_core_ok_date = record[151].strip() + self.trial_core_can_date = record[152].strip() + + self.dementia_flag = record[153].strip() + self.dementia_okd_ate = record[154].strip() + self.dementia_can_date = record[155].strip() + + self.sphealth_exploration = record[156].strip() + self.sphealth_guidance = record[157].strip() + + self.hiadhp_flag = record[158].strip() + self.hiadhp_code1 = record[159].strip() + self.hiadhp_kind1 = record[160].strip() + self.hiadhp_code2 = record[161].strip() + self.hiadhp_kind2 = record[162].strip() + self.hiadhp_code3 = record[163].strip() + self.hiadhp_kind3 = record[164].strip() + self.hiadhp_code4 = record[165].strip() + self.hiadhp_kind4 = record[166].strip() + self.hiadhp_code5 = record[167].strip() + self.hiadhp_kind5 = record[168].strip() + self.hiadhp_code6 = record[169].strip() + self.hiadhp_kind6 = record[170].strip() + self.hiadhp_code7 = record[171].strip() + self.hiadhp_kind7 = record[172].strip() + self.hiadhp_code8 = record[173].strip() + self.hiadhp_kind8 = record[174].strip() + self.hiadhp_code9 = record[175].strip() + self.hiadhp_kind9 = record[176].strip() + self.hiadhp_code10 = record[177].strip() + self.hiadhp_kind10 = record[178].strip() + self.hiadhp_code11 = record[179].strip() + self.hiadhp_kind11 = record[180].strip() + self.hiadhp_code12 = record[181].strip() + self.hiadhp_kind12 = record[182].strip() + self.hiadhp_code13 = record[183].strip() + self.hiadhp_kind13 = record[184].strip() + self.hiadhp_code14 = record[185].strip() + self.hiadhp_kind14 = record[186].strip() + self.hiadhp_code15 = record[187].strip() + self.hiadhp_kind15 = record[188].strip() + self.hiadhp_code16 = record[189].strip() + self.hiadhp_kind16 = record[190].strip() + self.hiadhp_code17 = record[191].strip() + self.hiadhp_kind17 = record[192].strip() + self.hiadhp_code18 = record[193].strip() + self.hiadhp_kind18 = record[194].strip() + self.hiadhp_code19 = record[195].strip() + self.hiadhp_kind19 = record[196].strip() + self.hiadhp_code20 = record[197].strip() + self.hiadhp_kind20 = record[198].strip() + self.hiadhp_code21 = record[199].strip() + self.hiadhp_kind21 = record[200].strip() + self.hiadhp_code22 = record[201].strip() + self.hiadhp_kind22 = record[202].strip() + self.hiadhp_code23 = record[203].strip() + self.hiadhp_kind23 = record[204].strip() + self.hiadhp_code24 = record[205].strip() + self.hiadhp_kind24 = record[206].strip() + self.hiadhp_code25 = record[207].strip() + self.hiadhp_kind25 = record[208].strip() + self.hiadhp_code26 = record[209].strip() + self.hiadhp_kind26 = record[210].strip() + self.hiadhp_code27 = record[211].strip() + self.hiadhp_kind27 = record[212].strip() + self.hiadhp_code28 = record[213].strip() + self.hiadhp_kind28 = record[214].strip() + self.hiadhp_code29 = record[215].strip() + self.hiadhp_kind29 = record[216].strip() + self.hiadhp_code30 = record[217].strip() + self.hiadhp_kind30 = record[218].strip() + self.hiadhp_code31 = record[219].strip() + self.hiadhp_kind31 = record[220].strip() + self.hiadhp_code32 = record[221].strip() + self.hiadhp_kind32 = record[222].strip() + self.hiadhp_code33 = record[223].strip() + self.hiadhp_kind33 = record[224].strip() + self.hiadhp_code34 = record[225].strip() + self.hiadhp_kind34 = record[226].strip() + self.hiadhp_code35 = record[227].strip() + self.hiadhp_kind35 = record[228].strip() + self.hiadhp_code36 = record[229].strip() + self.hiadhp_kind36 = record[230].strip() + self.hiadhp_code37 = record[231].strip() + self.hiadhp_kind37 = record[232].strip() + self.hiadhp_code38 = record[233].strip() + self.hiadhp_kind38 = record[234].strip() + self.hiadhp_code39 = record[235].strip() + self.hiadhp_kind39 = record[236].strip() + self.hiadhp_code40 = record[237].strip() + self.hiadhp_kind40 = record[238].strip() + + self.hitechhp_flag = record[239].strip() + self.hitechhp_kind1 = record[240].strip() + self.hitechhp_kind2 = record[241].strip() + self.hitechhp_kind3 = record[242].strip() + self.hitechhp_kind4 = record[243].strip() + self.hitechhp_kind5 = record[244].strip() + self.hitechhp_kind6 = record[245].strip() + self.hitechhp_kind7 = record[246].strip() + self.hitechhp_kind8 = record[247].strip() + self.hitechhp_kind9 = record[248].strip() + self.hitechhp_kind10 = record[249].strip() + self.hitechhp_kind11 = record[250].strip() + self.hitechhp_kind12 = record[251].strip() + self.hitechhp_kind13 = record[252].strip() + self.hitechhp_kind14 = record[253].strip() + self.hitechhp_kind15 = record[254].strip() + self.hitechhp_kind16 = record[255].strip() + self.hitechhp_kind17 = record[256].strip() + self.hitechhp_kind18 = record[257].strip() + self.hitechhp_kind19 = record[258].strip() + self.hitechhp_kind20 = record[259].strip() + + self.policy_medical_flag = record[260].strip() + self.policy_medical_code01 = record[261].strip() + self.policy_medical_content01 = record[262].strip() + self.policy_medical_code02 = record[263].strip() + self.policy_medical_content02 = record[264].strip() + self.policy_medical_code03 = record[265].strip() + self.policy_medical_content03 = record[266].strip() + self.policy_medical_code04 = record[267].strip() + self.policy_medical_content04 = record[268].strip() + self.policy_medical_code05 = record[269].strip() + self.policy_medical_content05 = record[270].strip() + self.policy_medical_code06 = record[271].strip() + self.policy_medical_content06 = record[272].strip() + self.policy_medical_code07 = record[273].strip() + self.policy_medical_content07 = record[274].strip() + self.policy_medical_code08 = record[275].strip() + self.policy_medical_content08 = record[276].strip() + self.policy_medical_code09 = record[277].strip() + self.policy_medical_content09 = record[278].strip() + self.policy_medical_code10 = record[279].strip() + self.policy_medical_content10 = record[280].strip() + self.policy_medical_code11 = record[281].strip() + self.policy_medical_content11 = record[282].strip() + self.policy_medical_code12 = record[283].strip() + self.policy_medical_content12 = record[284].strip() + self.policy_medical_code13 = record[285].strip() + self.policy_medical_content13 = record[286].strip() + self.policy_medical_code14 = record[287].strip() + self.policy_medical_content14 = record[288].strip() + self.policy_medical_code15 = record[289].strip() + self.policy_medical_content15 = record[290].strip() + self.policy_medical_code16 = record[291].strip() + self.policy_medical_content16 = record[292].strip() + self.policy_medical_code17 = record[293].strip() + self.policy_medical_content17 = record[294].strip() + self.policy_medical_code18 = record[295].strip() + self.policy_medical_content18 = record[296].strip() + self.policy_medical_code19 = record[297].strip() + self.policy_medical_content19 = record[298].strip() + self.policy_medical_code20 = record[299].strip() + self.policy_medical_content20 = record[300].strip() + + self.visitcarest_flag = record[301].strip() + self.visitcarestation_id = record[302].strip() + self.visitcarestation_code = record[303].strip() + self.visitcarestation_yobi = record[304].strip() + + self.open_date = record[305].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfhp_yobi + # 療養型病床群 + self.resthp_items = [ + self.resthp_care_kind, + self.resthp_bed_num, + self.resthp_ok_date, + self.resthp_can_date, + self.resthp_care_nrs_kind, + self.resthp_care_bed_num, + self.resthp_care_ok_date, + self.resthp_care_can_date, + self.resthp_sbed_num + ] + + # 臨床研修指定病院リスト + self.cl_items = [ + self.clolyhp_kind, + self.clolyhp_ok_date, + self.clolyhp_can_date, + self.clhp_kind, + self.clhp_ok_date, + self.clhp_can_date, + self.cldephp_kind, + self.cldephp_ok_date, + self.cldephp_can_date + ] 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 c6c8bc68..44a68a3f 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 @@ -30,6 +30,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ ComDrMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper import \ ComDrSosietyMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_att_mapper import \ + ComInstAttMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -39,7 +41,7 @@ COM_TABLE_LIST = { # COM_医師学会 "521": ComDrSosietyMapper, # COM_施設属性 - "111": NullMapper, + "111": ComInstAttMapper, # COM_臨床研修病院 "112": NullMapper, # COM_医師 From ccd3ac3026a965d3222f7e8778002fc12413f969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 9 May 2023 09:54:07 +0900 Subject: [PATCH 32/57] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_inst_mapper.py | 6 ++++-- .../batch/ultmarc/utmp_tables/tables/com_inst.py | 9 ++++----- .../table_mapper/com_inst/test_com_inst_mapper.py | 14 +++++++------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py index 901d2b9b..a7146b42 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_mapper.py @@ -4,7 +4,7 @@ from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst class ComInstMapper(UltmarcTableMapper): - """レイアウト区分101: COM_施設 登録処理: TODO""" + """レイアウト区分101: COM_施設 登録処理""" # レコード存在確認SQL(COM_施設) RECORD_EXISTS_QUERY = """\ @@ -487,6 +487,7 @@ class ComInstMapper(UltmarcTableMapper): def __make_delete_insert_trt_query(self): # 施設診療科目の削除挿入 + # 診療科目(集合項目)のいずれも入力がない場合、何もしない if sum(len(item) for item in self.record.medsbj_code) == 0: return @@ -500,13 +501,14 @@ class ComInstMapper(UltmarcTableMapper): for medsbj_code in self.record.medsbj_code: if len(medsbj_code) > 0: insert_query = self.INSERT_INST_TRT_QUERY.format( - trt_course_cd="'" + medsbj_code + "'" + trt_course_cd=f"'{medsbj_code}'" ) self.queries.append(insert_query) return def __make_upsert_spcare_query(self): # 特養医務室の追加、更新 + # DCF親施設コードがない場合、何もしない if (self.record.dcf_prnt_inst_code == "00" or len(self.record.dcf_prnt_inst_code) == 0): return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py index 954afa88..167480d2 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst.py @@ -136,11 +136,10 @@ class ComInst(UltmarcTable): self.close_year_month = record[45].strip() # 診療科目1~60(csvカラム番号 46 ~ 105) - num = 46 + # rangeの第2引数の数字はループに含まれないため、+1を指定する self.medsbj_code = [] - for i in range(0, 60): - self.medsbj_code.append(str(record[num])) - num += 1 + for i in range(46, 106): + self.medsbj_code.append(str(record[i])) self.hp_kind_code = record[106].strip() self.reexam_flag = record[107].strip() @@ -158,7 +157,7 @@ class ComInst(UltmarcTable): self.bed_num_gen2 = record[119].strip() self.bed_num_rest = record[120].strip() - # smallint対策 + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する self.bed_num = self.bed_num if len(self.bed_num) > 0 else None self.bed_num_sum = self.bed_num_sum if len(self.bed_num_sum) > 0 else None self.bed_num_psy = self.bed_num_psy if len(self.bed_num_psy) > 0 else None diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py index 7575319c..84fc58e8 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -28,13 +28,13 @@ class TestComInstMapper: # 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): @@ -280,7 +280,7 @@ class TestComInstMapper: actual_data_list.append(sp_trt_data[0]) # 期待値検査 - 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 @@ -300,7 +300,7 @@ class TestComInstMapper: 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', '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 @@ -435,7 +435,7 @@ class TestComInstMapper: actual_data_list.append(sp_trt_data[0]) # 期待値検査 - 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 @@ -454,14 +454,14 @@ class TestComInstMapper: actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_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', '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 ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + 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: From b835aaa6ff59064f1f8152a9deade1edcbbadbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Tue, 9 May 2023 16:21:44 +0900 Subject: [PATCH 33/57] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E5=AE=8C?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 34 +-- .../utmp_tables/tables/com_inst_att.py | 31 ++- .../com_inst/test_com_inst_mapper.py | 4 +- .../table_mapper/com_inst_att/__init__.py | 0 .../com_inst_att/com_inst_att_delete.csv | 6 + .../com_inst_att/com_inst_att_insert.csv | 20 ++ .../com_inst_att/com_inst_att_update.csv | 5 + .../db_com_inst_att_before_delete.csv | 23 ++ .../db_com_inst_att_before_update.csv | 6 + .../expect_com_inst_att_delete.csv | 17 ++ .../expect_com_inst_att_insert.csv | 21 ++ .../expect_com_inst_att_update.csv | 6 + .../com_inst_att/test_com_inst_att_mapper.py | 232 ++++++++++++++++++ 13 files changed, 377 insertions(+), 28 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index 6f9de396..14a0dd59 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -412,8 +412,8 @@ class ComInstAttMapper(UltmarcTableMapper): :anesthetizing_manage_spec_day, :anesthetizing_manage_can_day, :home_recuperation_flag, - :home_recuperation_specday, - :home_recuperation_cancelday, + :home_recuperation_spec_day, + :home_recuperation_cancel_day, :synthesis_when_staying_flag, :synthesis_when_staying_spec_day, :synthesis_when_staying_can_day, @@ -666,7 +666,7 @@ class ComInstAttMapper(UltmarcTableMapper): def make_query(self): # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 - if self.record.maint_flag == 'C' and self.record.adddel_div == 1: + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': self.queries.append(self.PHYSICAL_DELETE_QUERY) return @@ -732,7 +732,7 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('areasuphpcandate = :areasuphp_can_date') if self.record.areasuphp_flag == '@': self.query_parameter['areasuphp_flag'] = '' - self.query_parameter['areasuphp_intrate'] = '' + self.query_parameter['areasuphp_intrate'] = None self.query_parameter['areasuphp_ok_date'] = '' self.query_parameter['areasuphp_can_date'] = '' @@ -960,8 +960,8 @@ class ComInstAttMapper(UltmarcTableMapper): # ケアミックス区分 if len(self.record.caremix_kind) > 0: - set_clauses.append('homelateflag = :caremix_kind') - if self.record.caremixkind == '@': + set_clauses.append('caremixkind = :caremix_kind') + if self.record.caremix_kind == '@': self.query_parameter['caremix_kind'] = '' # 完全型・移行型区分 @@ -971,7 +971,7 @@ class ComInstAttMapper(UltmarcTableMapper): self.query_parameter['fullmove_flag'] = '' # 療養型病床群 - if sum(len(item) for item in self.record.resthp_list) > 0: + if sum(len(item) for item in self.record.resthp_items) > 0: set_clauses.append('resthpflag = :resthp_flag') set_clauses.append('resthpcarekind = :resthp_care_kind') set_clauses.append('resthpbednum = :resthp_bed_num') @@ -985,14 +985,14 @@ class ComInstAttMapper(UltmarcTableMapper): if self.record.resthp_flag == '@': self.query_parameter['resthp_flag'] = '' self.query_parameter['resthp_care_kind'] = '' - self.query_parameter['resthp_bed_num'] = '' + self.query_parameter['resthp_bed_num'] = None self.query_parameter['resthp_ok_date'] = '' self.query_parameter['resthp_can_date'] = '' self.query_parameter['resthp_care_nrs_kind'] = '' - self.query_parameter['resthp_care_bed_num'] = '' + self.query_parameter['resthp_care_bed_num'] = None self.query_parameter['resthp_care_ok_date'] = '' self.query_parameter['resthp_care_can_date'] = '' - self.query_parameter['resthp_sbed_num'] = '' + self.query_parameter['resthp_sbed_num'] = None # 一般病棟 if len(self.record.nrmhp_flag) > 0: @@ -1002,7 +1002,7 @@ class ComInstAttMapper(UltmarcTableMapper): if self.record.nrmhp_flag == '@': self.query_parameter['nrmhp_flag'] = '' self.query_parameter['nrmhp_care_kind'] = '' - self.query_parameter['nrmhp_bed_total_num'] = '' + self.query_parameter['nrmhp_bed_total_num'] = None # 精神病棟 if len(self.record.menthp_flag) > 0: @@ -1012,7 +1012,7 @@ class ComInstAttMapper(UltmarcTableMapper): if self.record.menthp_flag == '@': self.query_parameter['menthp_flag'] = '' self.query_parameter['menthp_care_kind'] = '' - self.query_parameter['menthp_bed_num'] = '' + self.query_parameter['menthp_bed_num'] = None # 結核病棟 if len(self.record.tubhp_flag) > 0: @@ -1022,7 +1022,7 @@ class ComInstAttMapper(UltmarcTableMapper): if self.record.tubhp_flag == '@': self.query_parameter['tubhp_flag'] = '' self.query_parameter['tubhp_care_kind'] = '' - self.query_parameter['tubhp_bed_num'] = '' + self.query_parameter['tubhp_bed_num'] = None # 感染症指定医療機関 if len(self.record.infhp_flag) > 0: @@ -1040,7 +1040,7 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('infhpbednum = :infhp_bed_num') if self.record.infhp_bed_flag == '@': self.query_parameter['infhp_bed_flag'] = '' - self.query_parameter['infhp_bed_num'] = '' + self.query_parameter['infhp_bed_num'] = None # 緩和ケア病棟設置病院 if len(self.record.hospice_flag) > 0: @@ -1050,7 +1050,7 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('hospicecandate = :hospice_can_date') if self.record.hospice_flag == '@': self.query_parameter['hospice_flag'] = '' - self.query_parameter['hospice_bed_num'] = '' + self.query_parameter['hospice_bed_num'] = None self.query_parameter['hospice_ok_date'] = '' self.query_parameter['hospice_can_date'] = '' @@ -1059,12 +1059,12 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('hpfuncestflag = :hpfunce_st_flag') set_clauses.append('hpfuncestkind = :hpfunce_st_kind') set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date') - set_clauses.append('hpfuncestcandate = :hospice_ok_date') + set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date') if self.record.hpfunce_st_flag == '@': self.query_parameter['hpfunce_st_flag'] = '' self.query_parameter['hpfunce_st_kind'] = '' self.query_parameter['hpfunce_st_ok_date'] = '' - self.query_parameter['hospice_ok_date'] = '' + self.query_parameter['hpfunce_st_can_date'] = '' # 臨床研修指定病院 if sum(len(item) for item in self.record.cl_items) > 0: diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py index 57f59a82..77ec6cf6 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py @@ -19,7 +19,7 @@ class ComInstAtt(UltmarcTable): funchp_ok_date: str # 特定機能病院承認年月日 funchp_can_date: str # 特定機能病院取消年月日 areasuphp_flag: str # 地域医療支援病院フラグ - areasuphp_intrate: str # 地域医 ※ + areasuphp_intrate: str # 地域医療支援病院紹介率 ※ areasuphp_ok_date: str # 地域医療支援病院承認年月日 areasuphp_can_date: str # 地域医療支援病院取消年月日 acuthp_add_flag: str # 超急性期脳卒中加算フラグ @@ -103,30 +103,30 @@ class ComInstAtt(UltmarcTable): fullmove_flag: str # 完全型・移行型区分 resthp_flag: str # 療養型病床群フラグ resthp_care_kind: str # 療養型病床群_医療型(看護種別) - resthp_bed_num: str # 療養 ※ + resthp_bed_num: str # 療養型病床群_医療型(病床数) ※ resthp_ok_date: str # 療養型病床群_医療型(承認年月日) resthp_can_date: str # 療養型病床群_医療型(取消年月日) resthp_care_nrs_kind: str # 療養型病床群_介護型(看護種別) - resthp_care_bed_num: str # 療養  ※ + resthp_care_bed_num: str # 療養型病床群_介護型(病床数) ※ resthp_care_ok_date: str # 療養型病床群_介護型(承認年月日) resthp_care_can_date: str # 療養型病床群_介護型(取消年月日) - resthp_sbed_num: str # 療養  ※ + resthp_sbed_num: str # 療養型病床群_稼動数合計(病床数) ※ nrmhp_flag: str # 一般病棟フラグ nrmhp_care_kind: str # 一般病棟看護種別 - nrmhp_bed_total_num: str # 一般  ※ + nrmhp_bed_total_num: str # 一般病棟病床数 ※ menthp_flag: str # 精神病棟フラグ menthp_care_kind: str # 精神病棟看護種別 - menthp_bed_num: str # 精神  ※ + menthp_bed_num: str # 精神病棟病床数 ※ tubhp_flag: str # 結核病棟フラグ tubhp_care_kind: str # 結核病棟看護種別 - tubhp_bed_num: str # 結核  ※ + tubhp_bed_num: str # 結核病棟病床数 ※ infhp_flag: str # 感染症特定 infhp_flag1: str # 感染症1種 infhp_flag2: str # 感染症2種 infhp_bed_flag: str # 感染症病床フラグ - infhp_bed_num: str # 感染症病  ※ + infhp_bed_num: str # 感染症病床病床数 ※ hospice_flag: str # 緩和ケア病棟設置病院フラグ - hospice_bed_num: str # 緩和ケア  ※ + hospice_bed_num: str # 緩和ケア病棟設置病院病床数 ※ hospice_ok_date: str # 緩和ケア病棟設置病院承認年月日 hospice_can_date: str # 緩和ケア病棟設置病院取消年月日 hpfunce_st_flag: str # 医療機能評価フラグ @@ -663,8 +663,10 @@ class ComInstAtt(UltmarcTable): # DCFDSF施設コード self.dcfdsf_inst_code = self.dcfhp_id + self.dcfhp_code + self.dcfhp_yobi + # 療養型病床群 self.resthp_items = [ + self.resthp_flag, self.resthp_care_kind, self.resthp_bed_num, self.resthp_ok_date, @@ -688,3 +690,14 @@ class ComInstAtt(UltmarcTable): self.cldephp_ok_date, self.cldephp_can_date ] + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.areasuphp_intrate = self.areasuphp_intrate if len(self.areasuphp_intrate) > 0 else None + self.resthp_bed_num = self.resthp_bed_num if len(self.resthp_bed_num) > 0 else None + self.resthp_care_bed_num = self.resthp_care_bed_num if len(self.resthp_care_bed_num) > 0 else None + self.resthp_sbed_num = self.resthp_sbed_num if len(self.resthp_sbed_num) > 0 else None + self.nrmhp_bed_total_num = self.nrmhp_bed_total_num if len(self.nrmhp_bed_total_num) > 0 else None + self.menthp_bed_num = self.menthp_bed_num if len(self.menthp_bed_num) > 0 else None + self.tubhp_bed_num = self.tubhp_bed_num if len(self.tubhp_bed_num) > 0 else None + self.infhp_bed_num = self.infhp_bed_num if len(self.infhp_bed_num) > 0 else None + self.hospice_bed_num = self.hospice_bed_num if len(self.hospice_bed_num) > 0 else None diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py index 84fc58e8..4c4058d8 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -28,13 +28,13 @@ class TestComInstMapper: # 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): diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv new file mode 100644 index 00000000..baf15d84 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_delete.csv @@ -0,0 +1,6 @@ +"111","123","456789","99","B","1","NULL","NULL","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303" +"111","00","9900146","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900615","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9901806","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9901918","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9904136","","B","1","20160905","20160910","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv new file mode 100644 index 00000000..57045790 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_insert.csv @@ -0,0 +1,20 @@ +"111","123","456789","99","A","0","NULL","NULL","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303" +"111","00","9900146","","A","2","20141113","20141114","1","20080701","","","","","1","20100401","","","","","1","","20011022","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","","","20081130","1","20130501","","1","99","","","","","","","","","","","","","","","","","","","","1","20130501","","1","20140401","","1","20130501","","1","01","02","03","04","","","","","","","1","20130501","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","4","","","","","","","","","","","20040229","1","20031030","","1","20050914","","1","1","","1","","","","","","1","20090401","","","","1","217","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195604" +"111","00","9900194","","A","2","20141113","20141114","1","20060501","","","","","","","","","","","","","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204" +"111","00","9900615","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900631","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","","","","6","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"111","00","9900700","","A","2","20141113","20141114","1","20100701","","","","","1","20100401","","","","","1","","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","4","","","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310" +"111","00","9901649","","A","2","20141113","20141114","","","","1","2009","","","","","","","","","","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","","","","43","1","B999","120","","","","","","","","","","","","","","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004" +"111","00","9901806","","A","2","20141113","20141114","1","20090401","","","","","1","20100401","","","","","1","","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","8","","","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011" +"111","00","9901820","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","","","","4101","116","20090501","","116","1","B999","40","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405" +"111","00","9901918","","A","2","20141113","20141114","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","","","","84","1","B999","177","","","","","","","","","","","","","","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601" +"111","00","9902043","","A","2","20141113","20141114","1","20140401","","","","20140331","","","","","","","","","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004" +"111","00","9902175","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704" +"111","00","9902728","","A","2","20141113","20141114","1","20090401","","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","","","20040430","","","","20040430","","","","","","","","","","","","","","","","","","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005" +"111","00","9903500","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","","","","26","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912" +"111","00","9904136","","A","2","20141113","20141114","1","20080701","","","","","","","","","","","1","","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","1","1","10","","","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208" +"111","00","9904439","","A","2","20141113","20141114","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","","","20040930","54","1","B999","450","","","","","","","","","","","","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812" +"111","00","9906696","","A","2","20141113","20141114","1","20060601","","","","","","","","","","","1","","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708" +"111","00","9908576","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","","","","33","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704" +"111","00","9910624","","A","2","20141113","20141114","1","20030401","","","","","1","20120401","","1","19940201","","","","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202" +"111","00","9929798","","A","2","20141113","20141114","1","20080701","","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv new file mode 100644 index 00000000..ad999396 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/com_inst_att_update.csv @@ -0,0 +1,5 @@ +"111","123","456789","99","A","0","NULL","NULL","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303" +"111","00","9900631","","B","","20141113","20141114","1","20171009","","1","2017","20171009","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","@","","","","","","","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","" +"111","00","9901649","","B","","20141113","20141114","","","","1","2009","20171010","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710" +"111","00","9990146","","B","","20171113","20171114","@","","","@","","","@","","","@","","","@","","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","@","","","","","","","","","","","","","","","","","","","","","@","","","@","","","@","","","@","","","","","","","","","","","@","","","@","","","@","","","@","","","@","@","@","","","","","","","","","","@","","","@","","","@","","","@","","","@","","@","","","","@","","","","@","","","","","","","","","@","@","","","@","@","","","","@","","","@","@","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","@" +"111","99","9999999","99","B","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv new file mode 100644 index 00000000..ba1b07af --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_delete.csv @@ -0,0 +1,23 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"12345678999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20230509","20230509","NULL","NULL","NULL","NULL","2023/05/09 10:10:10","com_inst_att_mapper","2023/05/09 10:10:10","com_inst_att_mapper" +"99999999999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20230509","20230509","NULL","NULL","NULL","NULL","2023/05/09 10:10:10","com_inst_att_mapper","2023/05/09 10:10:10","com_inst_att_mapper" +"009900146","1","20171009","20171009","2","2017","20171009","3","20171009","20171009","4","19940928","20171009","5","99.9","20171009","20171009","6","20120401","20171009","7","20171009","20171009","8","20171009","20171009","9","20121201","20171009","A","20090701","20171009","B","20061101","20171009","C","20171009","20171009","D","20171009","20171009","E","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","F","20100401","20171009","G","20140401","20171009","H","20140401","20171009","I","01","02","03","04","05","06","07","08","09","10","J","20140401","20171009","K","20171009","20171009","L","20171009","20171009","M","20171009","20171009","N","O","P","1234","9999","20171009","20171009","2234","8888","20171009","20171009","7777","Q","3234","6666","R","4234","5555","S","5234","4444","T","T","T","U","3333","V","2222","20171009","20171009","W","08","20100402","20171009","X","20171009","20060331","1","20041001","20171009","1","20040331","20171009","Y","Z","Z","Z","1","2","2","20070702","20171009","3","20171009","20171009","4","5","6","001","1","002","1","003","1","004","1","005","1","006","1","007","1","008","1","009","1","010","1","011","1","012","1","013","1","014","1","015","1","016","1","017","1","018","1","019","1","020","1","021","1","022","1","023","1","024","1","025","1","026","1","027","1","028","1","029","1","030","1","031","1","032","1","033","1","034","1","035","1","036","1","037","1","038","1","039","1","040","1","7","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","8","A1","1","A2","1","A3","1","A4","1","A5","1","A6","1","A7","1","A8","1","A9","1","B0","1","B1","1","B2","1","B3","1","B4","1","B5","1","B6","1","B7","1","B8","1","B9","1","C0","1","9","00","1234567","","192202","20171008","20171009","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/09 18:23:21","clsComInstAtt" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900615","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009901806","1","20090401","","","","","1","20100401","","","","","1","NULL","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","8","","NULL","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901918","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","NULL","","","84","1","B999","177","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904136","1","20080701","","","","","","","","","","","1","NULL","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","1","1","1","1","10","","NULL","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009910624","1","20030401","","","","","1","20120401","","1","19940201","","","NULL","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009929798","1","20080701","","","","","","","","","","","","NULL","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv new file mode 100644 index 00000000..b867c731 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/db_com_inst_att_before_update.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"12345678999","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900631","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","NULL","","","6","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","1","20171009","20171009","2","2017","20171009","3","20171009","20171009","4","19940928","20171009","5","99.9","20171009","20171009","6","20120401","20171009","7","20171009","20171009","8","20171009","20171009","9","20121201","20171009","A","20090701","20171009","B","20061101","20171009","C","20171009","20171009","D","20171009","20171009","E","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","F","20100401","20171009","G","20140401","20171009","H","20140401","20171009","I","01","02","03","04","05","06","07","08","09","10","J","20140401","20171009","K","20171009","20171009","L","20171009","20171009","M","20171009","20171009","N","O","P","1234","9999","20171009","20171009","2234","8888","20171009","20171009","7777","Q","3234","6666","R","4234","5555","S","5234","4444","T","T","T","U","3333","V","2222","20171009","20171009","W","08","20100402","20171009","X","20171009","20060331","1","20041001","20171009","1","20040331","20171009","Y","Z","Z","Z","1","2","2","20070702","20171009","3","20171009","20171009","4","5","6","001","1","002","1","003","1","004","1","005","1","006","1","007","1","008","1","009","1","010","1","011","1","012","1","013","1","014","1","015","1","016","1","017","1","018","1","019","1","020","1","021","1","022","1","023","1","024","1","025","1","026","1","027","1","028","1","029","1","030","1","031","1","032","1","033","1","034","1","035","1","036","1","037","1","038","1","039","1","040","1","7","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","8","A1","1","A2","1","A3","1","A4","1","A5","1","A6","1","A7","1","A8","1","A9","1","B0","1","B1","1","B2","1","B3","1","B4","1","B5","1","B6","1","B7","1","B8","1","B9","1","C0","1","9","00","1234567","","192202","20171009","NULL","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/09 18:31:09","clsComInstAtt" +"99999999999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","aaaa","2023/05/09 10:10:10","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv new file mode 100644 index 00000000..9c17fa45 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_delete.csv @@ -0,0 +1,17 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009910624","1","20030401","","","","","1","20120401","","1","19940201","","","NULL","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009929798","1","20080701","","","","","","","","","","","","NULL","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2017/10/08 20:57:12","clsComInstAtt" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2017/10/11 20:39:02","clsComInstAtt" +"99999999999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20230509","20230509","NULL","NULL","NULL","NULL","2023/05/09 10:10:10","com_inst_att_mapper","2023/05/09 10:10:10","com_inst_att_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv new file mode 100644 index 00000000..264abcbe --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_insert.csv @@ -0,0 +1,21 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","1","20080701","","","","","1","20100401","","","","","1","NULL","20011022","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","1","20130501","","","","20081130","1","20130501","","1","99","","","","","","","","","","","","","","","","","","","","1","20130501","","1","20140401","","1","20130501","","1","01","02","03","04","","","","","","","1","20130501","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","","","","20040229","1","20031030","","1","20050914","","1","1","","1","","","","","","1","20090401","","","","1","217","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195604","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009900194","1","20060501","","","","","","","","","","","","NULL","","20111231","","","","","","","1","20130801","","1","20140501","","1","20120401","","","","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20091101","","1","20131101","","1","01","02","03","","","","","","","","1","20080601","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20130705","","","","","","","20110331","1","20040331","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198204","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009900615","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009900631","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20120401","","1","20060401","","1","19971001","","","1","1","3991","6","19990930","","","NULL","","","6","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009900700","1","20100701","","","","","1","20100401","","","","","1","NULL","20080514","","1","20080401","","","","","1","20140401","","1","20061101","","1","20080401","","1","20120601","","","","","1","20080601","","1","99","","","","","","","","","","","","","","","","","","","","1","20061101","","1","20061101","","1","20080401","","1","01","02","03","","","","","","","","1","20061101","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","4","","NULL","","","","","","20061118","1","20030401","","","","","1","20031030","","1","1","1","1","","","","","","","","","","","1","169","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","31","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195310","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009901649","","","","1","2009","","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198004","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009901806","1","20090401","","","","","1","20100401","","","","","1","NULL","20130806","","1","20080401","","","","","1","20131101","","1","20000401","","1","20080401","","","","","","","","1","20130901","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20020401","","1","20110701","","1","01","02","03","","","","","","","","1","19960401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","1","1","8","","NULL","","20010731","1","13","20140502","","","","20040229","1","20031030","","1","20031030","","1","1","","1","","","","","","","","","1","1","1","202","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195011","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009901820","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","19981130","1","20030601","","","","","1","01","02","","","","","","","","","","","","1","20140301","","","","","","","","1","1","1","","NULL","","","4101","116","20090501","","116","1","B999","40","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","1","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","196405","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009901918","","","","","","","","","","","","","1","84.6","20020218","","","","","","","","1","20130901","","1","20051001","","1","20120101","","","","","","","","1","19780401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","20070531","","","","1","01","02","03","04","","","","","","","","","20070228","","","","","","","","","","1","1","1","I002","84","20120101","","","NULL","","","84","1","B999","177","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","11","20110506","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","3404537","","196601","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009902043","1","20140401","","","","20140331","","","","","","","","NULL","","","","","","","","","1","20130501","","1","20100401","","1","20100401","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100601","","","","","1","20100401","","1","01","02","","","","","","","","","","","","","","","","","","","","","1","9","1","I002","48","20110401","","","NULL","","","48","1","B999","224","1","M999","40","1","K999","4","","","1","1","4","","NULL","","","","","","","","","","","","","1","20040331","","1","1","","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201004","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009902175","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20111001","","1","20111001","","1","20111001","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","20110331","","","","","1","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","199704","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009902728","1","20090401","","","","","","","","","","","","NULL","","","","","","","","","1","20140401","","1","20140401","","1","20120801","","","","","1","20100401","","","","20040131","1","99","","","","","","","","","","","","","","","","","","","","1","20040214","","1","20100801","","1","20120401","","1","01","02","03","04","","","","","","","1","20030801","","","","","","","","","","","","","","","NULL","","20040430","","NULL","","20040430","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20121207","","","","","","","","1","20080919","","","1","1","","","","","","","","","","1","1","1","198","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","5303814","","198005","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009903500","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2","9","1","I001","26","20061001","","","NULL","","","26","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198912","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009904136","1","20080701","","","","","","","","","","","1","NULL","20111125","","1","20110401","","1","20130501","","1","20120601","","1","20110401","","1","20110401","","","","","","","","1","20110401","","1","99","","","","","","","","","","","","","","","","","","","","1","20110401","","1","20110801","","1","20110401","","1","01","02","03","04","","","","","","","1","20110401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","1","1","1","1","10","","NULL","","","1","13","20140307","","","","","1","19990401","","1","20040331","","1","1","1","1","","","","","","","","","1","","1","228","5","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195208","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009904439","1","20060401","","","","","","","20100331","","","","1","97.9","20041105","","","","","","","","1","20130401","","1","20140401","","1","20100701","","","","","","","","1","20020201","","1","99","","","","","","","","","","","","","","","","","","","","1","20140401","","1","20140401","","","","","1","01","02","03","","","","","","","","1","20131101","","","","","","","","","","","1","1","1","I001","54","20120401","","","NULL","","20040930","54","1","B999","450","","","NULL","","","NULL","","","","","NULL","1","21","20130901","","1","13","20130906","","","","","1","20041001","","","","","1","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","198812","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009906696","1","20060601","","","","","","","","","","","1","NULL","20100401","","1","20080401","","","","","1","20140401","","1","20020401","","1","20080701","","","","","","","","1","20090401","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20040501","","","","20081130","1","01","02","03","04","","","","","","","1","19970901","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140404","","","","","1","20031030","","1","20031027","","","1","1","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","00","8106522","","199708","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009908576","","","","","","","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","","","","","","","","","","","","","","","","","20070831","","","20070831","","","","2","9","1","I001","33","20130401","","","NULL","","","33","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","200704","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009910624","1","20030401","","","","","1","20120401","","1","19940201","","","NULL","","","1","20120401","","","","","","","","1","20121201","","1","20090701","","1","20061101","","","","","","","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","1","20140401","","1","20140401","","1","01","02","03","04","","","","","","","1","20140401","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","08","20100402","","","","20060331","1","20041001","","1","20040331","","1","1","1","","","1","2","20070702","","","","","1","1","1","002","1","006","1","051","4","004","1","100","2","165","1","035","1","168","1","118","1","101","1","182","","202","1","214","5","149","","197","1","198","","177","1","183","1","213","5","217","5","212","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","31","34","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","192202","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"009929798","1","20080701","","","","","","","","","","","","NULL","","","","","","","","","1","20100401","","1","20090301","","1","20100401","","","","20080531","","","","1","19971201","","","","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","1","20080401","","1","01","02","03","","","","","","","","","","","","","","","","","","","","","","","","NULL","","","","NULL","","","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","13","20140106","","","","","","","","1","20040331","","","1","1","","","","","","","","","","1","1","1","168","1","197","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","195305","20171008","20230509","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_inst_att_mapper","2017/10/08 20:57:12","com_inst_att_mapper" +"12345678999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20230509","20230509","NULL","NULL","NULL","NULL","2023/05/09 10:10:10","com_inst_att_mapper","2023/05/09 10:10:10","com_inst_att_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv new file mode 100644 index 00000000..25a65dba --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","19971001","","","","","","","","","","","","","","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009990146","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"12345678999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2023/05/09 10:10:10","com_inst_att_mapper" +"99999999999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","aaaa","2023/05/09 10:10:10","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py new file mode 100644 index 00000000..f54f641c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py @@ -0,0 +1,232 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_att_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 TestComInstAttMapper: + """レイアウト区分111: COM_施設属性""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # smallint型のカラム群 + smallint_columns = [ + 'areasuphpintrate', + 'resthpbednum', + 'resthpcarebednum', + 'resthpsbednum', + 'nrmhpbedtotalnum', + 'menthpbednum', + 'tubhpbednum', + 'infhpbednum', + 'hospicebednum' + ] + + @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_inst_att_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, 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_inst_att_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_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'] + self.smallint_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_施設属性テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_att_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'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_inst_att_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_att', + 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_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, 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_inst_att_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_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'] + self.smallint_columns + 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: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_施設属性テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_att_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_att', {'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_inst_att_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_inst_att', + 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_inst_att_mapper.ComInstAttMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_inst_att_mapper.ComInstAttMapper, 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_inst_att_delete.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_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'] + self.smallint_columns + 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: + if actual_col_name in self.smallint_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + if actual_col_name == 'areasuphpintrate': + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 288fa3ba922dbe1660c2aba4e8d2805599ac3b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 10 May 2023 08:38:41 +0900 Subject: [PATCH 34/57] =?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_cop_hp_mapper.py | 108 ++++++++ .../ultmarc/utmp_tables/tables/com_cop_hp.py | 36 +++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_cop_hp/__init__.py | 0 .../com_cop_hp/com_cop_hp_delete.csv | 3 + .../com_cop_hp/com_cop_hp_insert.csv | 7 + .../com_cop_hp/com_cop_hp_update.csv | 4 + .../db_com_cop_hp_before_delete.csv | 7 + .../db_com_cop_hp_before_update.csv | 9 + .../com_cop_hp/expect_com_cop_hp_delete.csv | 4 + .../com_cop_hp/expect_com_cop_hp_insert.csv | 8 + .../com_cop_hp/expect_com_cop_hp_update.csv | 9 + .../com_cop_hp/test_com_cop_hp_mapper.py | 248 ++++++++++++++++++ .../com_inst/test_com_inst_mapper.py | 4 +- 14 files changed, 448 insertions(+), 3 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py new file mode 100644 index 00000000..b1746e00 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_cop_hp_mapper.py @@ -0,0 +1,108 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_cop_hp import ComCopHp + + +class ComCopHpMapper(UltmarcTableMapper): + """レイアウト区分112: COM_臨床研修病院 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_cop_hp + ( + dcf_dsf_inst_cd, + cophp_cd, + openyear, + sortkey, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :cophp_code, + :open_year, + :sort_key, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_cop_hp + SET + sortkey = :sort_key, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cophp_cd = :cophp_code + AND + openyear = :open_year + """ + record: ComCopHp + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComCopHp) + 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): + # 削除『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 self.record.sort_key == '': + return None + else: + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py new file mode 100644 index 00000000..886b9dad --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_cop_hp.py @@ -0,0 +1,36 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComCopHp(UltmarcTable): + """レイアウト区分112: COM_臨床研修病院""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + cophp_id: str # 協力型病院コード(ID) + cophp_code: str # 協力型病院コード(コード) + cophp_yobi: str # 協力型病院コード(予備) + open_year: str # 開始年度 + sort_key: str # ソートキー + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + cophp_code: str # 協力型病院コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3] + self.maint_flag = record[4] + self.cophp_id = record[5] + self.cophp_code = record[6] + self.cophp_yobi = record[7] + self.open_year = record[8] + self.adddel_div = record[9] + self.sort_key = record[12] + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) + # 協力型病院コード + self.cophp_code = ''.join([self.cophp_id, self.cophp_code, self.cophp_yobi]) 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 c6c8bc68..29614f12 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 @@ -30,6 +30,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ ComDrMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper import \ ComDrSosietyMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \ + ComCopHpMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -41,7 +43,7 @@ COM_TABLE_LIST = { # COM_施設属性 "111": NullMapper, # COM_臨床研修病院 - "112": NullMapper, + "112": ComCopHpMapper, # COM_医師 "501": ComDrMapper, # COM_施設 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv new file mode 100644 index 00000000..bc912e04 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_delete.csv @@ -0,0 +1,3 @@ +"112","00","9901649","","B","00","1101813","","2013","1","20170328","20170401","" +"112","00","9904439","","B","00","1101135","","2013","1","20170328","20170401","" +"112","00","9904439","","B","00","1101717","","2013","1","20170328","20170401","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv new file mode 100644 index 00000000..37706281 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_insert.csv @@ -0,0 +1,7 @@ +"112","00","9901649","","A","00","1101813","","2013","2","20141113","20141114","1" +"112","00","9901649","","A","00","1101813","","2014","2","20141113","20141114","1" +"112","00","9904439","","A","00","1101135","","2013","2","20141113","20141114","2" +"112","00","9904439","","A","00","1101135","","2014","2","20141113","20141114","2" +"112","00","9904439","","A","00","1101717","","2013","2","20141113","20141114","1" +"112","00","9904439","","A","00","1101717","","2014","2","20141113","20141114","1" +"112","99","9999999","99","A","11","1111111","11","2023","0","20141113","20141114","1" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv new file mode 100644 index 00000000..cecbf3a3 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/com_cop_hp_update.csv @@ -0,0 +1,4 @@ +"112","00","9901649","","B","00","1101813","","2013","3","20141113","20141114","1" +"112","00","9901649","","B","00","1101813","","2014","4","20141113","20141114","1" +"112","99","9999999","99","B","11","1111111","11","2014","4","20141113","20141114","123" +"112","99","9999999","00","B","11","1111111","11","2014","4","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv new file mode 100644 index 00000000..536cd1c2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009901649","001101813","2014","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv new file mode 100644 index 00000000..42519300 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/db_com_cop_hp_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009901649","001101813","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999999","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999900","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv new file mode 100644 index 00000000..efcda970 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2014","NULL","1","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/11 21:20:37","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv new file mode 100644 index 00000000..8864ba3f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_insert.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009901649","001101813","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" +"99999999999","11111111111","2023","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2023/05/08 20:39:15","com_cop_hp_mapper","2023/05/08 20:39:15","com_cop_hp_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv new file mode 100644 index 00000000..0ab83cfa --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/expect_com_cop_hp_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","cophp_cd","openyear","adddel_div","sortkey","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","001101813","2013","NULL","1","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:49:28","com_cop_hp_mapper" +"009901649","001101813","2014","NULL","1","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:49:28","com_cop_hp_mapper" +"009904439","001101135","2013","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101135","2014","NULL","2","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2013","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"009904439","001101717","2014","NULL","1","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" +"99999999999","11111111111","2014","NULL","123","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2023/05/10 07:57:12","com_cop_hp_mapper" +"99999999900","11111111111","2014","NULL","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComCopHp","2017/10/08 20:57:12","clsComCopHp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py new file mode 100644 index 00000000..29b840e2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_cop_hp/test_com_cop_hp_mapper.py @@ -0,0 +1,248 @@ +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_cop_hp_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 TestComCopHpMapper: + """レイアウト区分112: 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_cop_hp_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, 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_cop_hp_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_cop_hp_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'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_cop_hp_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_cop_hp', + 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_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, 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_cop_hp_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_cop_hp_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_cop_hp', {'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_cop_hp_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_cop_hp', + 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_cop_hp_mapper.ComCopHpMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_cop_hp_mapper.ComCopHpMapper, 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_cop_hp_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cophp_cd = [{'cophp_cd': columns['cophp_cd']} for columns in expect_data_list] + primary_keys_openyear = [{'openyear': columns['openyear']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_cop_hp + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cophp_cd = :cophp_cd + AND + openyear = :openyear + """ + for param_dcf_pcf_dr_cd, param_cophp_cd, param_openyear in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cophp_cd, primary_keys_openyear): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_pcf_dr_cd, **param_cophp_cd, **param_openyear}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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}が、期待値以降であること' diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py index 84fc58e8..4c4058d8 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst/test_com_inst_mapper.py @@ -28,13 +28,13 @@ class TestComInstMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From c0042ca18b290f2d56e16183029e9e9e06369878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 10 May 2023 09:48:11 +0900 Subject: [PATCH 35/57] =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 645 ++++++------------ .../utmp_tables/tables/com_inst_att.py | 18 +- .../expect_com_inst_att_update.csv | 5 +- .../com_inst_att/test_com_inst_att_mapper.py | 2 +- 4 files changed, 205 insertions(+), 465 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index 14a0dd59..a02f2965 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -683,6 +683,10 @@ class ComInstAttMapper(UltmarcTableMapper): return # 存在する場合はUpdate + self.queries.append(self.__make_update_query()) + return + + def __make_update_query(self): set_clauses = [] # DPC対象病院 if len(self.record.dpc_flag) > 0: @@ -690,9 +694,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('dpc_specday = :dpc_spec_day') set_clauses.append('dpc_cancelday = :dpc_cancel_day') if self.record.dpc_flag == '@': - self.query_parameter['dpc_flag'] = '' - self.query_parameter['dpc_spec_day'] = '' - self.query_parameter['dpc_cancel_day'] = '' + self.query_parameter['dpc_flag'] = None + self.query_parameter['dpc_spec_day'] = None + self.query_parameter['dpc_cancel_day'] = None # DPC準備病院 if len(self.record.predpc_flag) > 0: @@ -700,9 +704,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('predpc_specday = :predpc_spec_day') set_clauses.append('predpc_cancelday = :predpc_cancel_day') if self.record.predpc_flag == '@': - self.query_parameter['predpc_flag'] = '' - self.query_parameter['predpc_spec_day'] = '' - self.query_parameter['predpc_cancel_day'] = '' + self.query_parameter['predpc_flag'] = None + self.query_parameter['predpc_spec_day'] = None + self.query_parameter['predpc_cancel_day'] = None # がん診療連携拠点病院 if len(self.record.cancer_flag) > 0: @@ -710,9 +714,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('cancer_specday = :cancer_spec_day') set_clauses.append('cancer_cancelday = :cancer_cancel_day') if self.record.cancer_flag == '@': - self.query_parameter['cancer_flag'] = '' - self.query_parameter['cancer_spec_day'] = '' - self.query_parameter['cancer_cancel_day'] = '' + self.query_parameter['cancer_flag'] = None + self.query_parameter['cancer_spec_day'] = None + self.query_parameter['cancer_cancel_day'] = None # 特定機能病院 if len(self.record.funchp_flag) > 0: @@ -720,9 +724,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('funchpokdate = :funchp_ok_date') set_clauses.append('funchpcandate = :funchp_can_date') if self.record.funchp_flag == '@': - self.query_parameter['funchp_flag'] = '' - self.query_parameter['funchp_ok_date'] = '' - self.query_parameter['funchp_can_date'] = '' + self.query_parameter['funchp_flag'] = None + self.query_parameter['funchp_ok_date'] = None + self.query_parameter['funchp_can_date'] = None # 地域医療支援病院 if len(self.record.areasuphp_flag) > 0: @@ -731,10 +735,10 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('areasuphpokdate = :areasuphp_ok_date') set_clauses.append('areasuphpcandate = :areasuphp_can_date') if self.record.areasuphp_flag == '@': - self.query_parameter['areasuphp_flag'] = '' + self.query_parameter['areasuphp_flag'] = None self.query_parameter['areasuphp_intrate'] = None - self.query_parameter['areasuphp_ok_date'] = '' - self.query_parameter['areasuphp_can_date'] = '' + self.query_parameter['areasuphp_ok_date'] = None + self.query_parameter['areasuphp_can_date'] = None # 超急性期脳卒中加算 if len(self.record.acuthp_add_flag) > 0: @@ -742,9 +746,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date') set_clauses.append('acuthpaddcandate = :acuthp_add_can_date') if self.record.acuthp_add_flag == '@': - self.query_parameter['acuthp_add_flag'] = '' - self.query_parameter['acuthp_add_ok_date'] = '' - self.query_parameter['acuthp_add_can_date'] = '' + self.query_parameter['acuthp_add_flag'] = None + self.query_parameter['acuthp_add_ok_date'] = None + self.query_parameter['acuthp_add_can_date'] = None # 総合入院体制加算 if len(self.record.genadmisiion_flag) > 0: @@ -752,9 +756,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date') set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date') if self.record.genadmisiion_flag == '@': - self.query_parameter['genadmisiion_flag'] = '' - self.query_parameter['genadmisiion_ok_date'] = '' - self.query_parameter['genadmisiion_can_date'] = '' + self.query_parameter['genadmisiion_flag'] = None + self.query_parameter['genadmisiion_ok_date'] = None + self.query_parameter['genadmisiion_can_date'] = None # 医師事務作業補助体制加算 if len(self.record.assistance_flag) > 0: @@ -762,9 +766,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('assistanceokdate = :assistance_ok_date') set_clauses.append('assistancecandate = :assistance_can_date') if self.record.assistance_flag == '@': - self.query_parameter['assistance_flag'] = '' - self.query_parameter['assistance_ok_date'] = '' - self.query_parameter['assistance_can_date'] = '' + self.query_parameter['assistance_flag'] = None + self.query_parameter['assistance_ok_date'] = None + self.query_parameter['assistance_can_date'] = None # 診療録管理体制加算 if len(self.record.diagnosis_treatment_flag) > 0: @@ -772,9 +776,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day') set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day') if self.record.diagnosis_treatment_flag == '@': - self.query_parameter['diagnosis_treatment_flag'] = '' - self.query_parameter['diagnosis_treatment_spec_day'] = '' - self.query_parameter['diagnosis_treatment_cancel_day'] = '' + self.query_parameter['diagnosis_treatment_flag'] = None + self.query_parameter['diagnosis_treatment_spec_day'] = None + self.query_parameter['diagnosis_treatment_cancel_day'] = None # 医療安全対策加算 if len(self.record.safety_flag) > 0: @@ -782,9 +786,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('safety_specday = :safety_spec_day') set_clauses.append('safety_cancelday = :safety_cancel_day') if self.record.safety_flag == '@': - self.query_parameter['safety_flag'] = '' - self.query_parameter['safety_spec_day'] = '' - self.query_parameter['safety_cancel_day'] = '' + self.query_parameter['safety_flag'] = None + self.query_parameter['safety_spec_day'] = None + self.query_parameter['safety_cancel_day'] = None # 褥瘡ハイリスク患者ケア加算 if len(self.record.highrisk_flag) > 0: @@ -792,9 +796,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('highrisk_specday = :highrisk_spec_day') set_clauses.append('highrisk_cancelday = :highrisk_cancel_day') if self.record.highrisk_flag == '@': - self.query_parameter['highrisk_flag'] = '' - self.query_parameter['highrisk_spec_day'] = '' - self.query_parameter['highrisk_cancel_day'] = '' + self.query_parameter['highrisk_flag'] = None + self.query_parameter['highrisk_spec_day'] = None + self.query_parameter['highrisk_cancel_day'] = None # 地域連携小児夜間・休日診療料 if len(self.record.infant_and_holiday_flag) > 0: @@ -802,9 +806,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day') set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day') if self.record.infant_and_holiday_flag == '@': - self.query_parameter['infant_and_holiday_flag'] = '' - self.query_parameter['infant_and_holiday_spec_day'] = '' - self.query_parameter['infant_and_holiday_cancel_day'] = '' + self.query_parameter['infant_and_holiday_flag'] = None + self.query_parameter['infant_and_holiday_spec_day'] = None + self.query_parameter['infant_and_holiday_cancel_day'] = None # 開放型病院 if len(self.record.ophp_flag) > 0: @@ -812,55 +816,26 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('ophpokdate = :ophpok_date') set_clauses.append('ophpcandate = :ophpcan_date') if self.record.ophp_flag == '@': - self.query_parameter['ophp_flag'] = '' - self.query_parameter['ophpok_date'] = '' - self.query_parameter['ophpcan_date'] = '' + self.query_parameter['ophp_flag'] = None + self.query_parameter['ophpok_date'] = None + self.query_parameter['ophpcan_date'] = None # 地域連携クリティカルパス if len(self.record.critical_flag) > 0: set_clauses.append('critical_flag = :critical_flag') - set_clauses.append('critical_code01 = :critical_code01') - set_clauses.append('critical_code02 = :critical_code02') - set_clauses.append('critical_code03 = :critical_code03') - set_clauses.append('critical_code04 = :critical_code04') - set_clauses.append('critical_code05 = :critical_code05') - set_clauses.append('critical_code06 = :critical_code06') - set_clauses.append('critical_code07 = :critical_code07') - set_clauses.append('critical_code08 = :critical_code08') - set_clauses.append('critical_code09 = :critical_code09') - set_clauses.append('critical_code10 = :critical_code10') - set_clauses.append('critical_code11 = :critical_code11') - set_clauses.append('critical_code12 = :critical_code12') - set_clauses.append('critical_code13 = :critical_code13') - set_clauses.append('critical_code14 = :critical_code14') - set_clauses.append('critical_code15 = :critical_code15') - set_clauses.append('critical_code16 = :critical_code16') - set_clauses.append('critical_code17 = :critical_code17') - set_clauses.append('critical_code18 = :critical_code18') - set_clauses.append('critical_code19 = :critical_code19') - set_clauses.append('critical_code20 = :critical_code20') + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i).zfill(2) # 2桁で0埋め + setting_item = 'critical_code' + num + ' = :critical_code' + num + set_clauses.append(setting_item) + if self.record.critical_flag == '@': - self.query_parameter['critical_flag'] = '' - self.query_parameter['critical_code01'] = '' - self.query_parameter['critical_code02'] = '' - self.query_parameter['critical_code03'] = '' - self.query_parameter['critical_code04'] = '' - self.query_parameter['critical_code05'] = '' - self.query_parameter['critical_code06'] = '' - self.query_parameter['critical_code07'] = '' - self.query_parameter['critical_code08'] = '' - self.query_parameter['critical_code09'] = '' - self.query_parameter['critical_code10'] = '' - self.query_parameter['critical_code11'] = '' - self.query_parameter['critical_code12'] = '' - self.query_parameter['critical_code13'] = '' - self.query_parameter['critical_code14'] = '' - self.query_parameter['critical_code15'] = '' - self.query_parameter['critical_code16'] = '' - self.query_parameter['critical_code17'] = '' - self.query_parameter['critical_code18'] = '' - self.query_parameter['critical_code19'] = '' - self.query_parameter['critical_code20'] = '' + self.query_parameter['critical_flag'] = None + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i).zfill(2) + setting_item = 'critical_code' + num + self.query_parameter[setting_item] = None # 薬剤管理指導料 if len(self.record.drgmgthp_flag) > 0: @@ -868,9 +843,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date') set_clauses.append('drgmgthpcandate = :drgmgthp_can_date') if self.record.drgmgthp_flag == '@': - self.query_parameter['drgmgthp_flag'] = '' - self.query_parameter['drgmgthp_ok_date'] = '' - self.query_parameter['drgmgthp_can_date'] = '' + self.query_parameter['drgmgthp_flag'] = None + self.query_parameter['drgmgthp_ok_date'] = None + self.query_parameter['drgmgthp_can_date'] = None # 画像診断管理加算 if len(self.record.image_diagnosis_flag) > 0: @@ -878,9 +853,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day') set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day') if self.record.image_diagnosis_flag == '@': - self.query_parameter['image_diagnosis_flag'] = '' - self.query_parameter['image_diagnosis_specified_day'] = '' - self.query_parameter['image_diagnosis_cancel_day'] = '' + self.query_parameter['image_diagnosis_flag'] = None + self.query_parameter['image_diagnosis_specified_day'] = None + self.query_parameter['image_diagnosis_cancel_day'] = None # 外来化学療法加算 if len(self.record.chemotherapy_flag) > 0: @@ -888,9 +863,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day') set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day') if self.record.chemotherapy_flag == '@': - self.query_parameter['chemotherapy_flag'] = '' - self.query_parameter['chemotherapy_spec_day'] = '' - self.query_parameter['chemotherapy_cancel_day'] = '' + self.query_parameter['chemotherapy_flag'] = None + self.query_parameter['chemotherapy_spec_day'] = None + self.query_parameter['chemotherapy_cancel_day'] = None # 疾患別リハビリテーション料 if len(self.record.rehabilitation_flag) > 0: @@ -906,17 +881,17 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('rehabilitation_code09= :rehabilitation_code09') set_clauses.append('rehabilitation_code10= :rehabilitation_code10') if self.record.rehabilitation_flag == '@': - self.query_parameter['rehabilitation_flag'] = '' - self.query_parameter['rehabilitation_code01'] = '' - self.query_parameter['rehabilitation_code02'] = '' - self.query_parameter['rehabilitation_code03'] = '' - self.query_parameter['rehabilitation_code04'] = '' - self.query_parameter['rehabilitation_code05'] = '' - self.query_parameter['rehabilitation_code06'] = '' - self.query_parameter['rehabilitation_code07'] = '' - self.query_parameter['rehabilitation_code08'] = '' - self.query_parameter['rehabilitation_code09'] = '' - self.query_parameter['rehabilitation_code10'] = '' + self.query_parameter['rehabilitation_flag'] = None + self.query_parameter['rehabilitation_code01'] = None + self.query_parameter['rehabilitation_code02'] = None + self.query_parameter['rehabilitation_code03'] = None + self.query_parameter['rehabilitation_code04'] = None + self.query_parameter['rehabilitation_code05'] = None + self.query_parameter['rehabilitation_code06'] = None + self.query_parameter['rehabilitation_code07'] = None + self.query_parameter['rehabilitation_code08'] = None + self.query_parameter['rehabilitation_code09'] = None + self.query_parameter['rehabilitation_code10'] = None # 麻酔管理料 if len(self.record.anesthetizing_manage_flag) > 0: @@ -924,9 +899,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day') set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day') if self.record.anesthetizing_manage_flag == '@': - self.query_parameter['anesthetizing_manage_flag'] = '' - self.query_parameter['anesthetizing_manage_spec_day'] = '' - self.query_parameter['anesthetizing_manage_can_day'] = '' + self.query_parameter['anesthetizing_manage_flag'] = None + self.query_parameter['anesthetizing_manage_spec_day'] = None + self.query_parameter['anesthetizing_manage_can_day'] = None # 在宅療養支援病院・診療所 if len(self.record.home_recuperation_flag) > 0: @@ -934,9 +909,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day') set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day') if self.record.home_recuperation_flag == '@': - self.query_parameter['home_recuperation_flag'] = '' - self.query_parameter['home_recuperation_spec_day'] = '' - self.query_parameter['home_recuperation_cancel_day'] = '' + self.query_parameter['home_recuperation_flag'] = None + self.query_parameter['home_recuperation_spec_day'] = None + self.query_parameter['home_recuperation_cancel_day'] = None # 在宅時医学総合管理料 if len(self.record.synthesis_when_staying_flag) > 0: @@ -944,9 +919,9 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day') set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day') if self.record.synthesis_when_staying_flag == '@': - self.query_parameter['synthesis_when_staying_flag'] = '' - self.query_parameter['synthesis_when_staying_spec_day'] = '' - self.query_parameter['synthesis_when_staying_can_day'] = '' + self.query_parameter['synthesis_when_staying_flag'] = None + self.query_parameter['synthesis_when_staying_spec_day'] = None + self.query_parameter['synthesis_when_staying_can_day'] = None # 在宅末期医療総合診療料 if len(self.record.home_late_flag) > 0: @@ -954,21 +929,21 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('homelateokday = :home_late_ok_day') set_clauses.append('homelatecanday = :home_late_can_day') if self.record.home_late_flag == '@': - self.query_parameter['home_late_flag'] = '' - self.query_parameter['home_late_ok_day'] = '' - self.query_parameter['home_late_can_day'] = '' + self.query_parameter['home_late_flag'] = None + self.query_parameter['home_late_ok_day'] = None + self.query_parameter['home_late_can_day'] = None # ケアミックス区分 if len(self.record.caremix_kind) > 0: set_clauses.append('caremixkind = :caremix_kind') if self.record.caremix_kind == '@': - self.query_parameter['caremix_kind'] = '' + self.query_parameter['caremix_kind'] = None # 完全型・移行型区分 if len(self.record.fullmove_flag) > 0: set_clauses.append('fullmoveflag = :fullmove_flag') if self.record.fullmove_flag == '@': - self.query_parameter['fullmove_flag'] = '' + self.query_parameter['fullmove_flag'] = None # 療養型病床群 if sum(len(item) for item in self.record.resthp_items) > 0: @@ -983,15 +958,15 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('resthpcarecandate = :resthp_care_can_date') set_clauses.append('resthpsbednum = :resthp_sbed_num') if self.record.resthp_flag == '@': - self.query_parameter['resthp_flag'] = '' - self.query_parameter['resthp_care_kind'] = '' + self.query_parameter['resthp_flag'] = None + self.query_parameter['resthp_care_kind'] = None self.query_parameter['resthp_bed_num'] = None - self.query_parameter['resthp_ok_date'] = '' - self.query_parameter['resthp_can_date'] = '' - self.query_parameter['resthp_care_nrs_kind'] = '' + self.query_parameter['resthp_ok_date'] = None + self.query_parameter['resthp_can_date'] = None + self.query_parameter['resthp_care_nrs_kind'] = None self.query_parameter['resthp_care_bed_num'] = None - self.query_parameter['resthp_care_ok_date'] = '' - self.query_parameter['resthp_care_can_date'] = '' + self.query_parameter['resthp_care_ok_date'] = None + self.query_parameter['resthp_care_can_date'] = None self.query_parameter['resthp_sbed_num'] = None # 一般病棟 @@ -1000,8 +975,8 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('nrmhpcarekind = :nrmhp_care_kind') set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num') if self.record.nrmhp_flag == '@': - self.query_parameter['nrmhp_flag'] = '' - self.query_parameter['nrmhp_care_kind'] = '' + self.query_parameter['nrmhp_flag'] = None + self.query_parameter['nrmhp_care_kind'] = None self.query_parameter['nrmhp_bed_total_num'] = None # 精神病棟 @@ -1010,8 +985,8 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('menthpcarekind = :menthp_care_kind') set_clauses.append('menthpbednum = :menthp_bed_num') if self.record.menthp_flag == '@': - self.query_parameter['menthp_flag'] = '' - self.query_parameter['menthp_care_kind'] = '' + self.query_parameter['menthp_flag'] = None + self.query_parameter['menthp_care_kind'] = None self.query_parameter['menthp_bed_num'] = None # 結核病棟 @@ -1020,8 +995,8 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('tubhpcarekind = :tubhp_care_kind') set_clauses.append('tubhpbednum = :tubhp_bed_num') if self.record.tubhp_flag == '@': - self.query_parameter['tubhp_flag'] = '' - self.query_parameter['tubhp_care_kind'] = '' + self.query_parameter['tubhp_flag'] = None + self.query_parameter['tubhp_care_kind'] = None self.query_parameter['tubhp_bed_num'] = None # 感染症指定医療機関 @@ -1030,16 +1005,16 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('infhpflag1 = :infhp_flag1') set_clauses.append('infhpflag2 = :infhp_flag2') if self.record.infhp_flag == '@': - self.query_parameter['infhp_flag'] = '' - self.query_parameter['infhp_flag1'] = '' - self.query_parameter['infhp_flag2'] = '' + self.query_parameter['infhp_flag'] = None + self.query_parameter['infhp_flag1'] = None + self.query_parameter['infhp_flag2'] = None # 感染症病床 if len(self.record.infhp_bed_flag) > 0: set_clauses.append('infhpbedflag = :infhp_bed_flag') set_clauses.append('infhpbednum = :infhp_bed_num') if self.record.infhp_bed_flag == '@': - self.query_parameter['infhp_bed_flag'] = '' + self.query_parameter['infhp_bed_flag'] = None self.query_parameter['infhp_bed_num'] = None # 緩和ケア病棟設置病院 @@ -1049,10 +1024,10 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('hospiceokdate = :hospice_ok_date') set_clauses.append('hospicecandate = :hospice_can_date') if self.record.hospice_flag == '@': - self.query_parameter['hospice_flag'] = '' + self.query_parameter['hospice_flag'] = None self.query_parameter['hospice_bed_num'] = None - self.query_parameter['hospice_ok_date'] = '' - self.query_parameter['hospice_can_date'] = '' + self.query_parameter['hospice_ok_date'] = None + self.query_parameter['hospice_can_date'] = None # 医療機能評価 if len(self.record.hpfunce_st_flag) > 0: @@ -1061,10 +1036,10 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date') set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date') if self.record.hpfunce_st_flag == '@': - self.query_parameter['hpfunce_st_flag'] = '' - self.query_parameter['hpfunce_st_kind'] = '' - self.query_parameter['hpfunce_st_ok_date'] = '' - self.query_parameter['hpfunce_st_can_date'] = '' + self.query_parameter['hpfunce_st_flag'] = None + self.query_parameter['hpfunce_st_kind'] = None + self.query_parameter['hpfunce_st_ok_date'] = None + self.query_parameter['hpfunce_st_can_date'] = None # 臨床研修指定病院 if sum(len(item) for item in self.record.cl_items) > 0: @@ -1078,21 +1053,21 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('cldephpokdate = :cldephp_ok_date') set_clauses.append('cldephpcandate = :cldephp_can_date') if self.record.clolyhp_kind == '@': - self.query_parameter['clolyhp_kind'] = '' - self.query_parameter['clolyhp_ok_date'] = '' - self.query_parameter['clolyhp_can_date'] = '' - self.query_parameter['clhp_kind'] = '' - self.query_parameter['clhp_ok_date'] = '' - self.query_parameter['clhp_can_date'] = '' - self.query_parameter['cldephp_kind'] = '' - self.query_parameter['cldephp_ok_date'] = '' - self.query_parameter['cldephp_can_date'] = '' + self.query_parameter['clolyhp_kind'] = None + self.query_parameter['clolyhp_ok_date'] = None + self.query_parameter['clolyhp_can_date'] = None + self.query_parameter['clhp_kind'] = None + self.query_parameter['clhp_ok_date'] = None + self.query_parameter['clhp_can_date'] = None + self.query_parameter['cldephp_kind'] = None + self.query_parameter['cldephp_ok_date'] = None + self.query_parameter['cldephp_can_date'] = None # 災害拠点病院 if len(self.record.disasthp_flag) > 0: set_clauses.append('disasthpflag = :disasthp_flag') if self.record.disasthp_flag == '@': - self.query_parameter['disasthp_flag'] = '' + self.query_parameter['disasthp_flag'] = None # 救急医療 if len(self.record.d1emerhp_flag) > 0: @@ -1100,15 +1075,15 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('d2emerhpflag = :d2emerhp_flag') set_clauses.append('d3emerhpflag = :d3emerhp_flag') if self.record.d1emerhp_flag == '@': - self.query_parameter['d1emerhp_flag'] = '' - self.query_parameter['d2emerhp_flag'] = '' - self.query_parameter['d3emerhp_flag'] = '' + self.query_parameter['d1emerhp_flag'] = None + self.query_parameter['d2emerhp_flag'] = None + self.query_parameter['d3emerhp_flag'] = None # 救急告示診療所 if len(self.record.emergency_clinic) > 0: set_clauses.append('emergencyclinic = :emergency_clinic') if self.record.emergency_clinic == '@': - self.query_parameter['emergency_clinic'] = '' + self.query_parameter['emergency_clinic'] = None # 治験中核病院 if len(self.record.trial_core_flag) > 0: @@ -1117,10 +1092,10 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('trialcoreokdate = :trial_core_ok_date') set_clauses.append('trialcorecandate = :trial_core_can_date') if self.record.trial_core_flag == '@': - self.query_parameter['trial_core_flag'] = '' - self.query_parameter['trial_core_div'] = '' - self.query_parameter['trial_core_ok_date'] = '' - self.query_parameter['trial_core_can_date'] = '' + self.query_parameter['trial_core_flag'] = None + self.query_parameter['trial_core_div'] = None + self.query_parameter['trial_core_ok_date'] = None + self.query_parameter['trial_core_can_date'] = None # 認知症疾患医療センター if len(self.record.dementia_flag) > 0: @@ -1128,319 +1103,85 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('dementiaokdate = :dementia_okd_ate') set_clauses.append('dementiacandate = :dementia_can_date') if self.record.dementia_flag == '@': - self.query_parameter['dementia_flag'] = '' - self.query_parameter['dementia_okd_ate'] = '' - self.query_parameter['dementia_can_date'] = '' + self.query_parameter['dementia_flag'] = None + self.query_parameter['dementia_okd_ate'] = None + self.query_parameter['dementia_can_date'] = None # 特定健康診査実施機関 if len(self.record.sphealth_exploration) > 0: set_clauses.append('sphealth_exploration = :sphealth_exploration') if self.record.sphealth_exploration == '@': - self.query_parameter['sphealth_exploration'] = '' + self.query_parameter['sphealth_exploration'] = None # 特定保健指導実施機関 if len(self.record.sphealth_guidance) > 0: set_clauses.append('sphealth_guidance = :sphealth_guidance') if self.record.sphealth_guidance == '@': - self.query_parameter['sphealth_guidance'] = '' + self.query_parameter['sphealth_guidance'] = None # 先進医療実施医療機関 if len(self.record.hiadhp_flag) > 0: set_clauses.append('hiadhpflag = :hiadhp_flag') - set_clauses.append('hiadhpcode1 = :hiadhp_code1') - set_clauses.append('hiadhpkind1 = :hiadhp_kind1') - set_clauses.append('hiadhpcode2 = :hiadhp_code2') - set_clauses.append('hiadhpkind2 = :hiadhp_kind2') - set_clauses.append('hiadhpcode3 = :hiadhp_code3') - set_clauses.append('hiadhpkind3 = :hiadhp_kind3') - set_clauses.append('hiadhpcode4 = :hiadhp_code4') - set_clauses.append('hiadhpkind4 = :hiadhp_kind4') - set_clauses.append('hiadhpcode5 = :hiadhp_code5') - set_clauses.append('hiadhpkind5 = :hiadhp_kind5') - set_clauses.append('hiadhpcode6 = :hiadhp_code6') - set_clauses.append('hiadhpkind6 = :hiadhp_kind6') - set_clauses.append('hiadhpcode7 = :hiadhp_code7') - set_clauses.append('hiadhpkind7 = :hiadhp_kind7') - set_clauses.append('hiadhpcode8 = :hiadhp_code8') - set_clauses.append('hiadhpkind8 = :hiadhp_kind8') - set_clauses.append('hiadhpcode9 = :hiadhp_code9') - set_clauses.append('hiadhpkind9 = :hiadhp_kind9') - set_clauses.append('hiadhpcode10 = :hiadhp_code10') - set_clauses.append('hiadhpkind10 = :hiadhp_kind10') - set_clauses.append('hiadhpcode11 = :hiadhp_code11') - set_clauses.append('hiadhpkind11 = :hiadhp_kind11') - set_clauses.append('hiadhpcode12 = :hiadhp_code12') - set_clauses.append('hiadhpkind12 = :hiadhp_kind12') - set_clauses.append('hiadhpcode13 = :hiadhp_code13') - set_clauses.append('hiadhpkind13 = :hiadhp_kind13') - set_clauses.append('hiadhpcode14 = :hiadhp_code14') - set_clauses.append('hiadhpkind14 = :hiadhp_kind14') - set_clauses.append('hiadhpcode15 = :hiadhp_code15') - set_clauses.append('hiadhpkind15 = :hiadhp_kind15') - set_clauses.append('hiadhpcode16 = :hiadhp_code16') - set_clauses.append('hiadhpkind16 = :hiadhp_kind16') - set_clauses.append('hiadhpcode17 = :hiadhp_code17') - set_clauses.append('hiadhpkind17 = :hiadhp_kind17') - set_clauses.append('hiadhpcode18 = :hiadhp_code18') - set_clauses.append('hiadhpkind18 = :hiadhp_kind18') - set_clauses.append('hiadhpcode19 = :hiadhp_code19') - set_clauses.append('hiadhpkind19 = :hiadhp_kind19') - set_clauses.append('hiadhpcode20 = :hiadhp_code20') - set_clauses.append('hiadhpkind20 = :hiadhp_kind20') - set_clauses.append('hiadhpcode21 = :hiadhp_code21') - set_clauses.append('hiadhpkind21 = :hiadhp_kind21') - set_clauses.append('hiadhpcode22 = :hiadhp_code22') - set_clauses.append('hiadhpkind22 = :hiadhp_kind22') - set_clauses.append('hiadhpcode23 = :hiadhp_code23') - set_clauses.append('hiadhpkind23 = :hiadhp_kind23') - set_clauses.append('hiadhpcode24 = :hiadhp_code24') - set_clauses.append('hiadhpkind24 = :hiadhp_kind24') - set_clauses.append('hiadhpcode25 = :hiadhp_code25') - set_clauses.append('hiadhpkind25 = :hiadhp_kind25') - set_clauses.append('hiadhpcode26 = :hiadhp_code26') - set_clauses.append('hiadhpkind26 = :hiadhp_kind26') - set_clauses.append('hiadhpcode27 = :hiadhp_code27') - set_clauses.append('hiadhpkind27 = :hiadhp_kind27') - set_clauses.append('hiadhpcode28 = :hiadhp_code28') - set_clauses.append('hiadhpkind28 = :hiadhp_kind28') - set_clauses.append('hiadhpcode29 = :hiadhp_code29') - set_clauses.append('hiadhpkind29 = :hiadhp_kind29') - set_clauses.append('hiadhpcode30 = :hiadhp_code30') - set_clauses.append('hiadhpkind30 = :hiadhp_kind30') - set_clauses.append('hiadhpcode31 = :hiadhp_code31') - set_clauses.append('hiadhpkind31 = :hiadhp_kind31') - set_clauses.append('hiadhpcode32 = :hiadhp_code32') - set_clauses.append('hiadhpkind32 = :hiadhp_kind32') - set_clauses.append('hiadhpcode33 = :hiadhp_code33') - set_clauses.append('hiadhpkind33 = :hiadhp_kind33') - set_clauses.append('hiadhpcode34 = :hiadhp_code34') - set_clauses.append('hiadhpkind34 = :hiadhp_kind34') - set_clauses.append('hiadhpcode35 = :hiadhp_code35') - set_clauses.append('hiadhpkind35 = :hiadhp_kind35') - set_clauses.append('hiadhpcode36 = :hiadhp_code36') - set_clauses.append('hiadhpkind36 = :hiadhp_kind36') - set_clauses.append('hiadhpcode37 = :hiadhp_code37') - set_clauses.append('hiadhpkind37 = :hiadhp_kind37') - set_clauses.append('hiadhpcode38 = :hiadhp_code38') - set_clauses.append('hiadhpkind38 = :hiadhp_kind38') - set_clauses.append('hiadhpcode39 = :hiadhp_code39') - set_clauses.append('hiadhpkind39 = :hiadhp_kind39') - set_clauses.append('hiadhpcode40 = :hiadhp_code40') - set_clauses.append('hiadhpkind40 = :hiadhp_kind40') + # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 41): + num = str(i) + setting_item = 'hiadhpcode' + num + ' = :hiadhp_code' + num + set_clauses.append(setting_item) + setting_item = 'hiadhpkind' + num + ' = :hiadhp_kind' + num + set_clauses.append(setting_item) + if self.record.hiadhp_flag == '@': - self.query_parameter['hiadhp_flag'] = '' - self.query_parameter['hiadhp_code1'] = '' - self.query_parameter['hiadhp_kind1'] = '' - self.query_parameter['hiadhp_code2'] = '' - self.query_parameter['hiadhp_kind2'] = '' - self.query_parameter['hiadhp_code3'] = '' - self.query_parameter['hiadhp_kind3'] = '' - self.query_parameter['hiadhp_code4'] = '' - self.query_parameter['hiadhp_kind4'] = '' - self.query_parameter['hiadhp_code5'] = '' - self.query_parameter['hiadhp_kind5'] = '' - self.query_parameter['hiadhp_code6'] = '' - self.query_parameter['hiadhp_kind6'] = '' - self.query_parameter['hiadhp_code7'] = '' - self.query_parameter['hiadhp_kind7'] = '' - self.query_parameter['hiadhp_code8'] = '' - self.query_parameter['hiadhp_kind8'] = '' - self.query_parameter['hiadhp_code9'] = '' - self.query_parameter['hiadhp_kind9'] = '' - self.query_parameter['hiadhp_code10'] = '' - self.query_parameter['hiadhp_kind10'] = '' - self.query_parameter['hiadhp_code11'] = '' - self.query_parameter['hiadhp_kind11'] = '' - self.query_parameter['hiadhp_code12'] = '' - self.query_parameter['hiadhp_kind12'] = '' - self.query_parameter['hiadhp_code13'] = '' - self.query_parameter['hiadhp_kind13'] = '' - self.query_parameter['hiadhp_code14'] = '' - self.query_parameter['hiadhp_kind14'] = '' - self.query_parameter['hiadhp_code15'] = '' - self.query_parameter['hiadhp_kind15'] = '' - self.query_parameter['hiadhp_code16'] = '' - self.query_parameter['hiadhp_kind16'] = '' - self.query_parameter['hiadhp_code17'] = '' - self.query_parameter['hiadhp_kind17'] = '' - self.query_parameter['hiadhp_code18'] = '' - self.query_parameter['hiadhp_kind18'] = '' - self.query_parameter['hiadhp_code19'] = '' - self.query_parameter['hiadhp_kind19'] = '' - self.query_parameter['hiadhp_code20'] = '' - self.query_parameter['hiadhp_kind20'] = '' - self.query_parameter['hiadhp_code21'] = '' - self.query_parameter['hiadhp_kind21'] = '' - self.query_parameter['hiadhp_code22'] = '' - self.query_parameter['hiadhp_kind22'] = '' - self.query_parameter['hiadhp_code23'] = '' - self.query_parameter['hiadhp_kind23'] = '' - self.query_parameter['hiadhp_code24'] = '' - self.query_parameter['hiadhp_kind24'] = '' - self.query_parameter['hiadhp_code25'] = '' - self.query_parameter['hiadhp_kind25'] = '' - self.query_parameter['hiadhp_code26'] = '' - self.query_parameter['hiadhp_kind26'] = '' - self.query_parameter['hiadhp_code27'] = '' - self.query_parameter['hiadhp_kind27'] = '' - self.query_parameter['hiadhp_code28'] = '' - self.query_parameter['hiadhp_kind28'] = '' - self.query_parameter['hiadhp_code29'] = '' - self.query_parameter['hiadhp_kind29'] = '' - self.query_parameter['hiadhp_code30'] = '' - self.query_parameter['hiadhp_kind30'] = '' - self.query_parameter['hiadhp_code31'] = '' - self.query_parameter['hiadhp_kind31'] = '' - self.query_parameter['hiadhp_code32'] = '' - self.query_parameter['hiadhp_kind32'] = '' - self.query_parameter['hiadhp_code33'] = '' - self.query_parameter['hiadhp_kind33'] = '' - self.query_parameter['hiadhp_code34'] = '' - self.query_parameter['hiadhp_kind34'] = '' - self.query_parameter['hiadhp_code35'] = '' - self.query_parameter['hiadhp_kind35'] = '' - self.query_parameter['hiadhp_code36'] = '' - self.query_parameter['hiadhp_kind36'] = '' - self.query_parameter['hiadhp_code37'] = '' - self.query_parameter['hiadhp_kind37'] = '' - self.query_parameter['hiadhp_code38'] = '' - self.query_parameter['hiadhp_kind38'] = '' - self.query_parameter['hiadhp_code39'] = '' - self.query_parameter['hiadhp_kind39'] = '' - self.query_parameter['hiadhp_code40'] = '' - self.query_parameter['hiadhp_kind40'] = '' + self.query_parameter['hiadhp_flag'] = None + + # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 41): + num = str(i) + setting_item = 'hiadhp_code' + num + self.query_parameter[setting_item] = None + setting_item = 'hiadhp_kind' + num + self.query_parameter[setting_item] = None # 先端医療実施医療機関 if len(self.record.hitechhp_flag) > 0: set_clauses.append('hitechhpflag = :hitechhp_flag') - set_clauses.append('hitechhpkind1 = :hitechhp_kind1') - set_clauses.append('hitechhpkind2 = :hitechhp_kind2') - set_clauses.append('hitechhpkind3 = :hitechhp_kind3') - set_clauses.append('hitechhpkind4 = :hitechhp_kind4') - set_clauses.append('hitechhpkind5 = :hitechhp_kind5') - set_clauses.append('hitechhpkind6 = :hitechhp_kind6') - set_clauses.append('hitechhpkind7 = :hitechhp_kind7') - set_clauses.append('hitechhpkind8 = :hitechhp_kind8') - set_clauses.append('hitechhpkind9 = :hitechhp_kind9') - set_clauses.append('hitechhpkind10 = :hitechhp_kind10') - set_clauses.append('hitechhpkind11 = :hitechhp_kind11') - set_clauses.append('hitechhpkind12 = :hitechhp_kind12') - set_clauses.append('hitechhpkind13 = :hitechhp_kind13') - set_clauses.append('hitechhpkind14 = :hitechhp_kind14') - set_clauses.append('hitechhpkind15 = :hitechhp_kind15') - set_clauses.append('hitechhpkind16 = :hitechhp_kind16') - set_clauses.append('hitechhpkind17 = :hitechhp_kind17') - set_clauses.append('hitechhpkind18 = :hitechhp_kind18') - set_clauses.append('hitechhpkind19 = :hitechhp_kind19') - set_clauses.append('hitechhpkind20 = :hitechhp_kind20') + + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i) + setting_item = 'hitechhpkind' + num + ' = :hitechhp_kind' + num + set_clauses.append(setting_item) + if self.record.hitechhp_flag == '@': - self.query_parameter['hitechhp_flag'] = '' - self.query_parameter['hitechhp_kind1'] = '' - self.query_parameter['hitechhp_kind2'] = '' - self.query_parameter['hitechhp_kind3'] = '' - self.query_parameter['hitechhp_kind4'] = '' - self.query_parameter['hitechhp_kind5'] = '' - self.query_parameter['hitechhp_kind6'] = '' - self.query_parameter['hitechhp_kind7'] = '' - self.query_parameter['hitechhp_kind8'] = '' - self.query_parameter['hitechhp_kind9'] = '' - self.query_parameter['hitechhp_kind10'] = '' - self.query_parameter['hitechhp_kind11'] = '' - self.query_parameter['hitechhp_kind12'] = '' - self.query_parameter['hitechhp_kind13'] = '' - self.query_parameter['hitechhp_kind14'] = '' - self.query_parameter['hitechhp_kind15'] = '' - self.query_parameter['hitechhp_kind16'] = '' - self.query_parameter['hitechhp_kind17'] = '' - self.query_parameter['hitechhp_kind18'] = '' - self.query_parameter['hitechhp_kind19'] = '' - self.query_parameter['hitechhp_kind20'] = '' + self.query_parameter['hitechhp_flag'] = None + + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i) + setting_item = 'hitechhp_kind' + num + self.query_parameter[setting_item] = None # 政策医療 if len(self.record.policy_medical_flag) > 0: set_clauses.append('policymedical_flag = :policy_medical_flag') - set_clauses.append('policymedical_code01 = :policy_medical_code01') - set_clauses.append('policymedical_content01 = :policy_medical_content01') - set_clauses.append('policymedical_code02 = :policy_medical_code02') - set_clauses.append('policymedical_content02 = :policy_medical_content02') - set_clauses.append('policymedical_code03 = :policy_medical_code03') - set_clauses.append('policymedical_content03 = :policy_medical_content03') - set_clauses.append('policymedical_code04 = :policy_medical_code04') - set_clauses.append('policymedical_content04 = :policy_medical_content04') - set_clauses.append('policymedical_code05 = :policy_medical_code05') - set_clauses.append('policymedical_content05 = :policy_medical_content05') - set_clauses.append('policymedical_code06 = :policy_medical_code06') - set_clauses.append('policymedical_content06 = :policy_medical_content06') - set_clauses.append('policymedical_code07 = :policy_medical_code07') - set_clauses.append('policymedical_content07 = :policy_medical_content07') - set_clauses.append('policymedical_code08 = :policy_medical_code08') - set_clauses.append('policymedical_content08 = :policy_medical_content08') - set_clauses.append('policymedical_code09 = :policy_medical_code09') - set_clauses.append('policymedical_content09 = :policy_medical_content09') - set_clauses.append('policymedical_code10 = :policy_medical_code10') - set_clauses.append('policymedical_content10 = :policy_medical_content10') - set_clauses.append('policymedical_code11 = :policy_medical_code11') - set_clauses.append('policymedical_content11 = :policy_medical_content11') - set_clauses.append('policymedical_code12 = :policy_medical_code12') - set_clauses.append('policymedical_content12 = :policy_medical_content12') - set_clauses.append('policymedical_code13 = :policy_medical_code13') - set_clauses.append('policymedical_content13 = :policy_medical_content13') - set_clauses.append('policymedical_code14 = :policy_medical_code14') - set_clauses.append('policymedical_content14 = :policy_medical_content14') - set_clauses.append('policymedical_code15 = :policy_medical_code15') - set_clauses.append('policymedical_content15 = :policy_medical_content15') - set_clauses.append('policymedical_code16 = :policy_medical_code16') - set_clauses.append('policymedical_content16 = :policy_medical_content16') - set_clauses.append('policymedical_code17 = :policy_medical_code17') - set_clauses.append('policymedical_content17 = :policy_medical_content17') - set_clauses.append('policymedical_code18 = :policy_medical_code18') - set_clauses.append('policymedical_content18 = :policy_medical_content18') - set_clauses.append('policymedical_code19 = :policy_medical_code19') - set_clauses.append('policymedical_content19 = :policy_medical_content19') - set_clauses.append('policymedical_code20 = :policy_medical_code20') - set_clauses.append('policymedical_content20 = :policy_medical_content20') + + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i).zfill(2) # 2桁で0埋め + setting_item = 'policymedical_code' + num + ' = :policy_medical_code' + num + set_clauses.append(setting_item) + setting_item = 'policymedical_content' + num + ' = :policy_medical_content' + num + set_clauses.append(setting_item) + if self.record.policy_medical_flag == '@': - self.query_parameter['policy_medical_flag'] = '' - self.query_parameter['policy_medical_code01'] = '' - self.query_parameter['policy_medical_content01'] = '' - self.query_parameter['policy_medical_code02'] = '' - self.query_parameter['policy_medical_content02'] = '' - self.query_parameter['policy_medical_code03'] = '' - self.query_parameter['policy_medical_content03'] = '' - self.query_parameter['policy_medical_code04'] = '' - self.query_parameter['policy_medical_content04'] = '' - self.query_parameter['policy_medical_code05'] = '' - self.query_parameter['policy_medical_content05'] = '' - self.query_parameter['policy_medical_code06'] = '' - self.query_parameter['policy_medical_content06'] = '' - self.query_parameter['policy_medical_code07'] = '' - self.query_parameter['policy_medical_content07'] = '' - self.query_parameter['policy_medical_code08'] = '' - self.query_parameter['policy_medical_content08'] = '' - self.query_parameter['policy_medical_code09'] = '' - self.query_parameter['policy_medical_content09'] = '' - self.query_parameter['policy_medical_code10'] = '' - self.query_parameter['policy_medical_content10'] = '' - self.query_parameter['policy_medical_code11'] = '' - self.query_parameter['policy_medical_content11'] = '' - self.query_parameter['policy_medical_code12'] = '' - self.query_parameter['policy_medical_content12'] = '' - self.query_parameter['policy_medical_code13'] = '' - self.query_parameter['policy_medical_content13'] = '' - self.query_parameter['policy_medical_code14'] = '' - self.query_parameter['policy_medical_content14'] = '' - self.query_parameter['policy_medical_code15'] = '' - self.query_parameter['policy_medical_content15'] = '' - self.query_parameter['policy_medical_code16'] = '' - self.query_parameter['policy_medical_content16'] = '' - self.query_parameter['policy_medical_code17'] = '' - self.query_parameter['policy_medical_content17'] = '' - self.query_parameter['policy_medical_code18'] = '' - self.query_parameter['policy_medical_content18'] = '' - self.query_parameter['policy_medical_code19'] = '' - self.query_parameter['policy_medical_content19'] = '' - self.query_parameter['policy_medical_code20'] = '' - self.query_parameter['policy_medical_content20'] = '' + self.query_parameter['policy_medical_flag'] = None + + # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 21): + num = str(i).zfill(2) # 2桁で0埋め + setting_item = 'policy_medical_code' + num + self.query_parameter[setting_item] = None + setting_item = 'policy_medical_content' + num + self.query_parameter[setting_item] = None # 訪問看護ステーション if len(self.record.visitcarest_flag) > 0: @@ -1449,27 +1190,25 @@ class ComInstAttMapper(UltmarcTableMapper): set_clauses.append('visitcarestation_code = :visitcarestation_code') set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi') if self.record.visitcarest_flag == '@': - self.query_parameter['visitcarest_flag'] = '' - self.query_parameter['visitcarestation_id'] = '' - self.query_parameter['visitcarestation_code'] = '' - self.query_parameter['visitcarestation_yobi'] = '' + self.query_parameter['visitcarest_flag'] = None + self.query_parameter['visitcarestation_id'] = None + self.query_parameter['visitcarestation_code'] = None + self.query_parameter['visitcarestation_yobi'] = None # 開設年月 if len(self.record.open_date) > 0: set_clauses.append('opendate = :open_date') if self.record.open_date == '@': - self.query_parameter['open_date'] = '' + self.query_parameter['open_date'] = None update_columns = ','.join(set_clauses) # 何も更新項目が無い場合はNoneとする(更新処理は行わない) if len(update_columns) == 0: - self.queries.append(None) + return None else: # 末尾にカンマを付けてSET句を完成させる update_columns += ',' update_query = self.UPDATE_QUERY.format( update_columns=update_columns ) - self.queries.append(update_query) - - return + return update_query diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py index 77ec6cf6..90f02cd2 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py @@ -19,7 +19,7 @@ class ComInstAtt(UltmarcTable): funchp_ok_date: str # 特定機能病院承認年月日 funchp_can_date: str # 特定機能病院取消年月日 areasuphp_flag: str # 地域医療支援病院フラグ - areasuphp_intrate: str # 地域医療支援病院紹介率 ※ + areasuphp_intrate: str # 地域医療支援病院紹介率 areasuphp_ok_date: str # 地域医療支援病院承認年月日 areasuphp_can_date: str # 地域医療支援病院取消年月日 acuthp_add_flag: str # 超急性期脳卒中加算フラグ @@ -103,30 +103,30 @@ class ComInstAtt(UltmarcTable): fullmove_flag: str # 完全型・移行型区分 resthp_flag: str # 療養型病床群フラグ resthp_care_kind: str # 療養型病床群_医療型(看護種別) - resthp_bed_num: str # 療養型病床群_医療型(病床数) ※ + resthp_bed_num: str # 療養型病床群_医療型(病床数) resthp_ok_date: str # 療養型病床群_医療型(承認年月日) resthp_can_date: str # 療養型病床群_医療型(取消年月日) resthp_care_nrs_kind: str # 療養型病床群_介護型(看護種別) - resthp_care_bed_num: str # 療養型病床群_介護型(病床数) ※ + resthp_care_bed_num: str # 療養型病床群_介護型(病床数) resthp_care_ok_date: str # 療養型病床群_介護型(承認年月日) resthp_care_can_date: str # 療養型病床群_介護型(取消年月日) - resthp_sbed_num: str # 療養型病床群_稼動数合計(病床数) ※ + resthp_sbed_num: str # 療養型病床群_稼動数合計(病床数) nrmhp_flag: str # 一般病棟フラグ nrmhp_care_kind: str # 一般病棟看護種別 - nrmhp_bed_total_num: str # 一般病棟病床数 ※ + nrmhp_bed_total_num: str # 一般病棟病床数 menthp_flag: str # 精神病棟フラグ menthp_care_kind: str # 精神病棟看護種別 - menthp_bed_num: str # 精神病棟病床数 ※ + menthp_bed_num: str # 精神病棟病床数 tubhp_flag: str # 結核病棟フラグ tubhp_care_kind: str # 結核病棟看護種別 - tubhp_bed_num: str # 結核病棟病床数 ※ + tubhp_bed_num: str # 結核病棟病床数 infhp_flag: str # 感染症特定 infhp_flag1: str # 感染症1種 infhp_flag2: str # 感染症2種 infhp_bed_flag: str # 感染症病床フラグ - infhp_bed_num: str # 感染症病床病床数 ※ + infhp_bed_num: str # 感染症病床病床数 hospice_flag: str # 緩和ケア病棟設置病院フラグ - hospice_bed_num: str # 緩和ケア病棟設置病院病床数 ※ + hospice_bed_num: str # 緩和ケア病棟設置病院病床数 hospice_ok_date: str # 緩和ケア病棟設置病院承認年月日 hospice_can_date: str # 緩和ケア病棟設置病院取消年月日 hpfunce_st_flag: str # 医療機能評価フラグ diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv index 25a65dba..ecb59fbf 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/expect_com_inst_att_update.csv @@ -1,6 +1,7 @@ "dcf_dsf_inst_cd","dpc_flag","dpc_specday","dpc_cancelday","predpc_flag","predpc_specday","predpc_cancelday","cancer_flag","cancer_specday","cancer_cancelday","funchpflag","funchpokdate","funchpcandate","areasuphpflag","areasuphpintrate","areasuphpokdate","areasuphpcandate","acuthpaddflag","acuthpaddokdate","acuthpaddcandate","genadmisiionflag","genadmisiionfokdate","genadmisiionfcandate","assistanceflag","assistanceokdate","assistancecandate","diagnosistreatment_flag","diagnosistreatment_specday","diagnosistreatment_cancelday","safety_flag","safety_specday","safety_cancelday","highrisk_flag","highrisk_specday","highrisk_cancelday","infantandholiday_flag","infantandholiday_specday","infantandholiday_cancelday","ophpflag","ophpokdate","ophpcandate","critical_flag","critical_code01","critical_code02","critical_code03","critical_code04","critical_code05","critical_code06","critical_code07","critical_code08","critical_code09","critical_code10","critical_code11","critical_code12","critical_code13","critical_code14","critical_code15","critical_code16","critical_code17","critical_code18","critical_code19","critical_code20","drgmgthpflag","drgmgthpokdate","drgmgthpcandate","imagediagnosis_flag","imagediagnosis_specifiedday","imagediagnosis_cancelday","chemotherapy_flag","chemotherapy_specday","chemotherapy_cancelday","rehabilitation_flag","rehabilitation_code01","rehabilitation_code02","rehabilitation_code03","rehabilitation_code04","rehabilitation_code05","rehabilitation_code06","rehabilitation_code07","rehabilitation_code08","rehabilitation_code09","rehabilitation_code10","anesthetizingmanage_flag","anesthetizingmanage_specday","anesthetizingmanage_cancelday","homerecuperation_flag","homerecuperation_specday","homerecuperation_cancelday","synthesiswhenstaying_flag","synthesiswhenstaying_specday","synthesiswhenstaying_cancelday","homelateflag","homelateokday","homelatecanday","caremixkind","fullmoveflag","resthpflag","resthpcarekind","resthpbednum","resthpokdate","resthpcandate","resthpcarenrskind","resthpcarebednum","resthpcareokdate","resthpcarecandate","resthpsbednum","nrmhpflag","nrmhpcarekind","nrmhpbedtotalnum","menthpflag","menthpcarekind","menthpbednum","tubhpflag","tubhpcarekind","tubhpbednum","infhpflag","infhpflag1","infhpflag2","infhpbedflag","infhpbednum","hospiceflag","hospicebednum","hospiceokdate","hospicecandate","hpfuncestflag","hpfuncestkind","hpfuncestokdate","hpfuncestcandate","clolyhpkind","clolyhpokdate","clolyhpcandate","clhpkind","clhpokdate","clhpcandate","cldephpkind","cldephpokdate","cldephpcandate","disasthpflag","d1emerhpflag","d2emerhpflag","d3emerhpflag","emergencyclinic","trialcoreflag","trialcore_div","trialcoreokdate","trialcorecandate","dementiaflag","dementiaokdate","dementiacandate","sphealth_exploration","sphealth_guidance","hiadhpflag","hiadhpcode1","hiadhpkind1","hiadhpcode2","hiadhpkind2","hiadhpcode3","hiadhpkind3","hiadhpcode4","hiadhpkind4","hiadhpcode5","hiadhpkind5","hiadhpcode6","hiadhpkind6","hiadhpcode7","hiadhpkind7","hiadhpcode8","hiadhpkind8","hiadhpcode9","hiadhpkind9","hiadhpcode10","hiadhpkind10","hiadhpcode11","hiadhpkind11","hiadhpcode12","hiadhpkind12","hiadhpcode13","hiadhpkind13","hiadhpcode14","hiadhpkind14","hiadhpcode15","hiadhpkind15","hiadhpcode16","hiadhpkind16","hiadhpcode17","hiadhpkind17","hiadhpcode18","hiadhpkind18","hiadhpcode19","hiadhpkind19","hiadhpcode20","hiadhpkind20","hiadhpcode21","hiadhpkind21","hiadhpcode22","hiadhpkind22","hiadhpcode23","hiadhpkind23","hiadhpcode24","hiadhpkind24","hiadhpcode25","hiadhpkind25","hiadhpcode26","hiadhpkind26","hiadhpcode27","hiadhpkind27","hiadhpcode28","hiadhpkind28","hiadhpcode29","hiadhpkind29","hiadhpcode30","hiadhpkind30","hiadhpcode31","hiadhpkind31","hiadhpcode32","hiadhpkind32","hiadhpcode33","hiadhpkind33","hiadhpcode34","hiadhpkind34","hiadhpcode35","hiadhpkind35","hiadhpcode36","hiadhpkind36","hiadhpcode37","hiadhpkind37","hiadhpcode38","hiadhpkind38","hiadhpcode39","hiadhpkind39","hiadhpcode40","hiadhpkind40","hitechhpflag","hitechhpkind1","hitechhpkind2","hitechhpkind3","hitechhpkind4","hitechhpkind5","hitechhpkind6","hitechhpkind7","hitechhpkind8","hitechhpkind9","hitechhpkind10","hitechhpkind11","hitechhpkind12","hitechhpkind13","hitechhpkind14","hitechhpkind15","hitechhpkind16","hitechhpkind17","hitechhpkind18","hitechhpkind19","hitechhpkind20","policymedical_flag","policymedical_code01","policymedical_content01","policymedical_code02","policymedical_content02","policymedical_code03","policymedical_content03","policymedical_code04","policymedical_content04","policymedical_code05","policymedical_content05","policymedical_code06","policymedical_content06","policymedical_code07","policymedical_content07","policymedical_code08","policymedical_content08","policymedical_code09","policymedical_content09","policymedical_code10","policymedical_content10","policymedical_code11","policymedical_content11","policymedical_code12","policymedical_content12","policymedical_code13","policymedical_content13","policymedical_code14","policymedical_content14","policymedical_code15","policymedical_content15","policymedical_code16","policymedical_content16","policymedical_code17","policymedical_content17","policymedical_code18","policymedical_content18","policymedical_code19","policymedical_content19","policymedical_code20","policymedical_content20","visitcarestflag","visitcarestation_id","visitcarestation_code","visitcarestation_yobi","opendate","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" -"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","19971001","","","","","","","","","","","","","","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009900631","1","20171009","","1","2017","20171009","","","","","","","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","1","19971001","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","","","NULL","","","NULL","","","NULL","","","","","NULL","","NULL","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","3","","","","","","","","","","","","","","","","","","","","1","1","2","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","0","12","","20","","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" "009901649","","","","1","2009","20171010","","","","","","","","NULL","","","","","","","","","1","20121201","","1","20080901","","","","20080331","","","","","","","1","20080701","","1","99","","","","","","","","","","","","","","","","","","","","1","20100401","","","","","","","","1","01","02","03","","","","","","","","1","19970701","","1","20130101","","1","20060401","","","","","1","9","1","I001","43","20061001","","","NULL","","","43","1","B999","120","","","NULL","","","NULL","","","","","NULL","","NULL","","","1","12","20131101","","","","","","","","","","","","1","1","","","","","","","","","","1","1","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1","11","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","201710","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" -"009990146","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171009","20171011","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" +"009990146","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComInstAtt","2023/05/09 10:39:02","com_inst_att_mapper" "12345678999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","clsComInstAtt","2023/05/09 10:10:10","com_inst_att_mapper" "99999999999","9","20230510","20230511","2","2023","20230514","5","20230516","20230517","8","20230519","20230520","1","22.1","20230523","20230524","5","20230526","20230527","8","20230529","20230530","1","20230502","20230503","4","20230505","20230506","7","20230508","20230509","0","20230501","20230402","3","20230404","20230405","6","20230407","20230408","9","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","0","20230701","20230702","3","20230704","20230705","6","20230707","20230708","9","80","81","82","83","84","85","86","87","88","89","0","20230901","20230902","3","20230904","20230905","6","20230907","20230908","9","20231001","20231011","2","3","4","105","106","20231007","20231008","109","110","20231101","20231102","113","4","0115","116","7","0118","119","0","0121","122","3","4","5","6","127","8","129","20230130","20230131","2","33","20230104","20230105","6","20230107","20230108","9","20230104","20230101","2","20230103","20230104","5","6","7","8","9","0","1","20230102","20230403","4","20230105","20230106","7","8","9","160","1","162","3","164","5","166","7","168","9","170","1","172","3","174","5","176","7","178","9","180","1","182","3","184","5","186","7","188","9","190","1","192","3","194","5","196","7","198","9","200","1","202","3","204","5","206","7","208","9","210","1","212","3","214","5","216","7","218","9","220","1","222","3","224","5","226","7","228","9","230","1","232","3","234","5","236","7","238","9","0","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","1","62","3","64","5","66","7","68","9","70","1","72","3","74","5","76","7","78","9","80","1","82","3","84","5","86","7","88","9","90","1","92","3","94","5","96","7","98","9","00","1","2","3","0000304","05","202303","20171009","20230509","NULL","NULL","NULL","NULL","2017/10/09 18:31:09","aaaa","2023/05/09 10:10:10","aaaa" + diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py index f54f641c..0721905d 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_inst_att/test_com_inst_att_mapper.py @@ -86,7 +86,7 @@ class TestComInstAttMapper: actual_select_sql = f"SELECT * FROM src05.com_inst_att WHERE dcf_dsf_inst_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'] + self.smallint_columns + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.smallint_columns assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) # 動的日付項目の個別確認 line_number = 0 From 80d4b0355761a21d9183982826e69c876767bc42 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Wed, 10 May 2023 10:26:22 +0900 Subject: [PATCH 36/57] =?UTF-8?q?feat:=20=E5=8F=82=E8=80=83=E3=80=81?= =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=97=E3=81=A7=E9=80=A3=E7=95=AA=E9=A0=85?= =?UTF-8?q?=E7=9B=AE=E3=82=92=E5=87=A6=E7=90=86=E3=81=99=E3=82=8B=E9=83=A8?= =?UTF-8?q?=E5=88=86=E3=81=AE=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF=E3=82=BF?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index a02f2965..70df59e1 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -823,19 +823,17 @@ class ComInstAttMapper(UltmarcTableMapper): # 地域連携クリティカルパス if len(self.record.critical_flag) > 0: set_clauses.append('critical_flag = :critical_flag') + # 項目クリア判断 + is_aggregate_item_clear = self.record.critical_flag == '@' + if is_aggregate_item_clear: + self.query_parameter['critical_flag'] = None # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 21): num = str(i).zfill(2) # 2桁で0埋め - setting_item = 'critical_code' + num + ' = :critical_code' + num - set_clauses.append(setting_item) - - if self.record.critical_flag == '@': - self.query_parameter['critical_flag'] = None - # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) - for i in range(1, 21): - num = str(i).zfill(2) - setting_item = 'critical_code' + num - self.query_parameter[setting_item] = None + setting_item_name = f'critical_code{num}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') + if is_aggregate_item_clear: + self.query_parameter[setting_item_name] = None # 薬剤管理指導料 if len(self.record.drgmgthp_flag) > 0: From a8a808682efbb65fdb334a715e7ad489c70cb40d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 10 May 2023 14:38:33 +0900 Subject: [PATCH 37/57] =?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_prefc_med_base_mapper.py | 455 ++++++++++++++++++ .../utmp_tables/tables/com_prefc_med_base.py | 157 ++++++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_alma/test_com_alma_mapper.py | 4 +- .../com_prefc_med_base/__init__.py | 0 .../com_prefc_med_base_delete.csv | 3 + .../com_prefc_med_base_insert.csv | 6 + .../com_prefc_med_base_update.csv | 6 + .../db_com_prefc_med_base_before_delete.csv | 6 + .../db_com_prefc_med_base_before_update.csv | 9 + .../expect_com_prefc_med_base_delete.csv | 3 + .../expect_com_prefc_med_base_insert.csv | 7 + .../expect_com_prefc_med_base_update.csv | 9 + .../test_com_prefc_med_base_mapper.py | 196 ++++++++ 14 files changed, 862 insertions(+), 3 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py new file mode 100644 index 00000000..7605fc30 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_base_mapper.py @@ -0,0 +1,455 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_base import ComPrefcMedBase + + +class ComPrefcMedBaseMapper(UltmarcTableMapper): + """レイアウト区分132: COM_都道府県医療機能情報(基本)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_base + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_base + ( + dcf_dsf_inst_cd, + info_date, + home_page, + hppre_flg, + expre_flg, + trial_flg, + trial_contcount, + trialwhet_from, + trialwhet_to, + equipment_flg, + cos_disease_flg, + cos_surgery, + specialclinic_flg, + establishment_flg, + critical_flg, + cop_system, + sys_exists_flg, + sys_inspection, + sys_prescription, + sys_reserv, + icduse_flg, + echart_flg, + fulltime_flg, + fulltime_count, + ge_patient_avg, + mt_patient_avg, + mc_patient_avg, + ca_patient_avg, + pys_patient_avg, + tub_patient_avg, + inf_patient_avg, + patient_avg_sum, + patient_avg_from, + patient_avg_to, + cl_patient_avg, + cl_patient_avg_from, + cl_patient_avg_to, + hm_patient_avg, + hm_patient_avg_from, + hm_patient_avg_to, + ge_patient_ex, + mt_patient_ex, + mc_patient_ex, + ca_patient_ex, + pys_patient_ex, + tub_patient_ex, + inf_patient_ex, + patient_ex_sum, + patient_ex_from, + patient_ex_to, + cl_patient_ex, + cl_patient_ex_from, + cl_patient_ex_to, + hm_patient_ex, + hm_patient_ex_from, + hm_patient_ex_to, + ge_stay_avg, + mt_stay_avg, + mc_stay_avg, + ca_stay_avg, + pys_stay_avg, + tub_stay_avg, + inf_stay_avg, + stay_avg_sum, + stay_avg_from, + stay_avg_to, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :info_date, + :home_page, + :hppre_flg, + :expre_flg, + :trial_flg, + :trial_cont_count, + :trial_whet_from, + :trial_whet_to, + :equipment_flg, + :cos_disease_flg, + :cos_surgery, + :specialclinic_flg, + :establishment_flg, + :critical_flg, + :cop_system, + :sys_exists_flg, + :sys_inspection, + :sys_prescription, + :sys_reserv, + :icduse_flg, + :echart_flg, + :fulltime_flg, + :fulltime_count, + :ge_patient_avg, + :mt_patient_avg, + :mc_patient_avg, + :ca_patient_avg, + :pys_patient_avg, + :tub_patient_avg, + :inf_patient_avg, + :patient_avg_sum, + :patient_avg_from, + :patient_avg_to, + :cl_patient_avg, + :cl_patient_avg_from, + :cl_patient_avg_to, + :hm_patient_avg, + :hm_patient_avg_from, + :hm_patient_avg_to, + :ge_patient_ex, + :mt_patient_ex, + :mc_patient_ex, + :ca_patient_ex, + :pys_patient_ex, + :tub_patient_ex, + :inf_patient_ex, + :patient_ex_sum, + :patient_ex_from, + :patient_ex_to, + :cl_patient_ex, + :cl_patient_ex_from, + :cl_patient_ex_to, + :hm_patient_ex, + :hm_patient_ex_from, + :hm_patient_ex_to, + :ge_stay_avg, + :mt_stay_avg, + :mc_stay_avg, + :ca_stay_avg, + :pys_stay_avg, + :tub_stay_avg, + :inf_stay_avg, + :stay_avg_sum, + :stay_avg_from, + :stay_avg_to, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_base + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_base + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + """ + + record: ComPrefcMedBase + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedBase) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 + return self.__make_update_query() + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # 情報年月日 + if len(self.record.info_date) > 0: + set_clauses.append('info_date = :info_date') + if self.record.info_date == '@': + self.query_parameter['info_date'] = None + + # 案内用ホームページアドレス + if len(self.record.home_page) > 0: + set_clauses.append('home_page = :home_page') + if self.record.home_page == '@': + self.query_parameter['home_page'] = None + + # 院内処方フラグ + if len(self.record.hppre_flg) > 0: + set_clauses.append('hppre_flg = :hppre_flg') + if self.record.hppre_flg == '@': + self.query_parameter['hppre_flg'] = None + + # 院外処方フラグ + if len(self.record.expre_flg) > 0: + set_clauses.append('expre_flg = :expre_flg') + if self.record.expre_flg == '@': + self.query_parameter['expre_flg'] = None + + # 治験の実施 + if len(self.record.trial_flg) > 0: + set_clauses.append('trial_flg = :trial_flg') + set_clauses.append('trial_contcount = :trial_cont_count') + set_clauses.append('trialwhet_from = :trial_whet_from') + set_clauses.append('trialwhet_to = :trial_whet_to') + if self.record.trial_flg == '@': + self.query_parameter['trial_flg'] = None + self.query_parameter['trial_cont_count'] = None + self.query_parameter['trial_whet_from'] = None + self.query_parameter['trial_whet_to'] = None + + # 保有する施設設備フラグ + if len(self.record.equipment_flg) > 0: + set_clauses.append('equipment_flg = :equipment_flg') + if self.record.equipment_flg == '@': + self.query_parameter['equipment_flg'] = None + + # 対応することができる疾患・治療の内容フラグ + if len(self.record.cos_disease_flg) > 0: + set_clauses.append('cos_disease_flg = :cos_disease_flg') + if self.record.cos_disease_flg == '@': + self.query_parameter['cos_disease_flg'] = None + + # 対応することができる短期滞在手術フラグ + if len(self.record.cos_surgery) > 0: + set_clauses.append('cos_surgery = :cos_surgery') + if self.record.cos_surgery == '@': + self.query_parameter['cos_surgery'] = None + + # 専門外来フラグ + if len(self.record.specialclinic_flg) > 0: + set_clauses.append('specialclinic_flg = :specialclinic_flg') + if self.record.specialclinic_flg == '@': + self.query_parameter['specialclinic_flg'] = None + + # 地域医療連携体制_窓口設置フラグ + if len(self.record.establishment_flg) > 0: + set_clauses.append('establishment_flg = :establishment_flg') + if self.record.establishment_flg == '@': + self.query_parameter['establishment_flg'] = None + + # 地域医療連携体制_地域連携パスフラグ + if len(self.record.critical_flg) > 0: + set_clauses.append('critical_flg = :critical_flg') + if self.record.critical_flg == '@': + self.query_parameter['critical_flg'] = None + + # 入院診療計画策定時における院内の連携体制 + if len(self.record.cop_system) > 0: + set_clauses.append('cop_system = :cop_system') + if self.record.cop_system == '@': + self.query_parameter['cop_system'] = None + + # オーダリングシステム + if len(self.record.sys_exists_flg) > 0: + set_clauses.append('sys_exists_flg = :sys_exists_flg') + set_clauses.append('sys_inspection = :sys_inspection') + set_clauses.append('sys_prescription = :sys_prescription') + set_clauses.append('sys_reserv = :sys_reserv') + if self.record.sys_exists_flg == '@': + self.query_parameter['sys_exists_flg'] = None + self.query_parameter['sys_inspection'] = None + self.query_parameter['sys_prescription'] = None + self.query_parameter['sys_reserv'] = None + + # ICDコード利用フラグ + if len(self.record.icduse_flg) > 0: + set_clauses.append('icduse_flg = :icduse_flg') + if self.record.icduse_flg == '@': + self.query_parameter['icduse_flg'] = None + + # 電子カルテフラク + if len(self.record.echart_flg) > 0: + set_clauses.append('echart_flg = :echart_flg') + if self.record.echart_flg == '@': + self.query_parameter['echart_flg'] = None + + # 専任従事者 + if len(self.record.fulltime_flg) > 0: + set_clauses.append('fulltime_flg = :fulltime_flg') + set_clauses.append('fulltime_count = :fulltime_count') + if self.record.fulltime_flg == '@': + self.query_parameter['fulltime_flg'] = None + self.query_parameter['fulltime_count'] = None + + # 病床患者数平均 + if len(self.record.ge_patient_avg) > 0: + set_clauses.append('ge_patient_avg = :ge_patient_avg') + set_clauses.append('mt_patient_avg = :mt_patient_avg') + set_clauses.append('mc_patient_avg = :mc_patient_avg') + set_clauses.append('ca_patient_avg = :ca_patient_avg') + set_clauses.append('pys_patient_avg = :pys_patient_avg') + set_clauses.append('tub_patient_avg = :inf_patient_avg') + set_clauses.append('inf_patient_avg = :tub_patient_avg') + set_clauses.append('patient_avg_sum = :patient_avg_sum') + set_clauses.append('patient_avg_from = :patient_avg_from') + set_clauses.append('patient_avg_to = :patient_avg_to') + if self.record.ge_patient_avg == '@': + self.query_parameter['ge_patient_avg'] = None + self.query_parameter['mt_patient_avg'] = None + self.query_parameter['mc_patient_avg'] = None + self.query_parameter['ca_patient_avg'] = None + self.query_parameter['pys_patient_avg'] = None + self.query_parameter['inf_patient_avg'] = None + self.query_parameter['tub_patient_avg'] = None + self.query_parameter['patient_avg_sum'] = None + self.query_parameter['patient_avg_from'] = None + self.query_parameter['patient_avg_to'] = None + + # 患者数平均 + if len(self.record.cl_patient_avg) > 0: + set_clauses.append('cl_patient_avg = :cl_patient_avg') + set_clauses.append('cl_patient_avg_from = :cl_patient_avg_from') + set_clauses.append('cl_patient_avg_to = :cl_patient_avg_to') + if self.record.cl_patient_avg == '@': + self.query_parameter['cl_patient_avg'] = None + self.query_parameter['cl_patient_avg_from'] = None + self.query_parameter['cl_patient_avg_to'] = None + + # 患者数平均 + if len(self.record.hm_patient_avg) > 0: + set_clauses.append('hm_patient_avg = :hm_patient_avg') + set_clauses.append('hm_patient_avg_from = :hm_patient_avg_from') + set_clauses.append('hm_patient_avg_to = :hm_patient_avg_to') + if self.record.hm_patient_avg == '@': + self.query_parameter['hm_patient_avg'] = None + self.query_parameter['hm_patient_avg_from'] = None + self.query_parameter['hm_patient_avg_to'] = None + + # 患者数延数 + if len(self.record.ge_patient_ex) > 0: + set_clauses.append('ge_patient_ex = :ge_patient_ex') + set_clauses.append('mt_patient_ex = :mt_patient_ex') + set_clauses.append('mc_patient_ex = :mc_patient_ex') + set_clauses.append('ca_patient_ex = :ca_patient_ex') + set_clauses.append('pys_patient_ex = :pys_patient_ex') + set_clauses.append('tub_patient_ex = :tub_patient_ex') + set_clauses.append('inf_patient_ex = :inf_patient_ex') + set_clauses.append('patient_ex_sum = :patient_ex_sum') + set_clauses.append('patient_ex_from = :patient_ex_from') + set_clauses.append('patient_ex_to = :patient_ex_to') + if self.record.ge_patient_ex == '@': + self.query_parameter['ge_patient_ex'] = None + self.query_parameter['mt_patient_ex'] = None + self.query_parameter['mc_patient_ex'] = None + self.query_parameter['ca_patient_ex'] = None + self.query_parameter['pys_patient_ex'] = None + self.query_parameter['tub_patient_ex'] = None + self.query_parameter['inf_patient_ex'] = None + self.query_parameter['patient_ex_sum'] = None + self.query_parameter['patient_ex_from'] = None + self.query_parameter['patient_ex_to'] = None + + # 患者数延数 + if len(self.record.cl_patient_ex) > 0: + set_clauses.append('cl_patient_ex = :cl_patient_ex') + set_clauses.append('cl_patient_ex_from = :cl_patient_ex_from') + set_clauses.append('cl_patient_ex_to = :cl_patient_ex_to') + if self.record.cl_patient_ex == '@': + self.query_parameter['cl_patient_ex'] = None + self.query_parameter['cl_patient_ex_from'] = None + self.query_parameter['cl_patient_ex_to'] = None + + # 患者数延数 + if len(self.record.hm_patient_ex) > 0: + set_clauses.append('hm_patient_ex = :hm_patient_ex') + set_clauses.append('hm_patient_ex_from = :hm_patient_ex_from') + set_clauses.append('hm_patient_ex_to = :hm_patient_ex_to') + if self.record.hm_patient_ex == '@': + self.query_parameter['hm_patient_ex'] = None + self.query_parameter['hm_patient_ex_from'] = None + self.query_parameter['hm_patient_ex_to'] = None + + # 平均在院日数 + if len(self.record.ge_stay_avg) > 0: + set_clauses.append('ge_stay_avg = :ge_stay_avg') + set_clauses.append('mt_stay_avg = :mt_stay_avg') + set_clauses.append('mc_stay_avg = :mc_stay_avg') + set_clauses.append('ca_stay_avg = :ca_stay_avg') + set_clauses.append('pys_stay_avg = :pys_stay_avg') + set_clauses.append('tub_stay_avg = :tub_stay_avg') + set_clauses.append('inf_stay_avg = :inf_stay_avg') + set_clauses.append('stay_avg_sum = :stay_avg_sum') + set_clauses.append('stay_avg_from = :stay_avg_from') + set_clauses.append('stay_avg_to = :stay_avg_to') + if self.record.ge_stay_avg == '@': + self.query_parameter['ge_stay_avg'] = None + self.query_parameter['mt_stay_avg'] = None + self.query_parameter['mc_stay_avg'] = None + self.query_parameter['ca_stay_avg'] = None + self.query_parameter['pys_stay_avg'] = None + self.query_parameter['tub_stay_avg'] = None + self.query_parameter['inf_stay_avg'] = None + self.query_parameter['stay_avg_sum'] = None + self.query_parameter['stay_avg_from'] = None + self.query_parameter['stay_avg_to'] = None + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + return update_query diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py new file mode 100644 index 00000000..56b64a7b --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py @@ -0,0 +1,157 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedBase(UltmarcTable): + """レイアウト区分132: COM_都道府県医療機能情報(基本)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備)10/8asa + maint_flag: str # 修正区分 + adddel_div: str # 予備/追加削除区分 + maint_date: str # メンテナンス年月日 + trn_date: str # 予備/転送年月日 + info_date: str # 情報年月日 + home_page: str # 案内用ホームページアドレス + hppre_flg: str # 院内処方フラグ + expre_flg: str # 院外処方フラグ + trial_flg: str # 治験の実施フラグ + trial_cont_count: str # 治験の実施_契約件数 + trial_whet_from: str # 治験の実施_期間自 + trial_whet_to: str # 治験の実施_期間至 + equipment_flg: str # 保有する施設設備フラグ + cos_disease_flg: str # 対応することができる疾患・治療の内容フラグ + cos_surgery: str # 対応することができる短期滞在手術フラグ + specialclinic_flg: str # 専門外来フラグ + establishment_flg: str # 地域医療連携体制_窓口設置フラグ + critical_flg: str # 地域医療連携体制_地域連携パスフラグ + cop_system: str # 入院診療計画策定時における院内の連携体制 + sys_exists_flg: str # オーダリングシステム_有無フラグ + sys_inspection: str # オーダリングシステム_検査 + sys_prescription: str # オーダリングシステム_処方 + sys_reserv: str # オーダリングシステム_予約 + icduse_flg: str # ICDコード利用フラグ + echart_flg: str # 電子カルテフラク + fulltime_flg: str # 専任従事者フラグ + fulltime_count: str # 専任従事者数 + ge_patient_avg: str # 病床患者数平均(一般) + mt_patient_avg: str # 病床患者数平均(療養) + mc_patient_avg: str # 病床患者数平均(療養(医療)) + ca_patient_avg: str # 病床患者数平均(療養(介護)) + pys_patient_avg: str # 病床患者数平均(精神) + tub_patient_avg: str # 病床患者数平均(結核) + inf_patient_avg: str # 病床患者数平均(感染症) + patient_avg_sum: str # 病床患者数平均(全体) + patient_avg_from: str # 病床患者数平均_期間自(病床種別) + patient_avg_to: str # 病床患者数平均_期間至(病床種別) + cl_patient_avg: str # 患者数平均(外来) + cl_patient_avg_from: str # 病床患者数平均_期間自(外来) + cl_patient_avg_to: str # 病床患者数平均_期間至(外来) + hm_patient_avg: str # 患者数平均(在宅) + hm_patient_avg_from: str # 病床患者数平均_期間自(在宅) + hm_patient_avg_to: str # 病床患者数平均_期間至(在宅) + ge_patient_ex: str # 患者数延数(一般) + mt_patient_ex: str # 患者数延数(療養) + mc_patient_ex: str # 病床患者数平均(療養(医療)) + ca_patient_ex: str # 病床患者数平均(療養(介護)) + pys_patient_ex: str # 患者数延数(精神) + tub_patient_ex: str # 患者数延数(結核) + inf_patient_ex: str # 患者数延数(感染症) + patient_ex_sum: str # 患者数延数(全体) + patient_ex_from: str # 患者数延数_期間自(病床種別) + patient_ex_to: str # 患者数延数_期間至(病床種別) + cl_patient_ex: str # 患者数延数(外来) + cl_patient_ex_from: str # 患者数延数_期間自(外来) + cl_patient_ex_to: str # 患者数延数_期間至(外来) + hm_patient_ex: str # 患者数延数(在宅) + hm_patient_ex_from: str # 患者数延数_期間自(在宅) + hm_patient_ex_to: str # 患者数延数_期間至(在宅) + ge_stay_avg: str # 平均在院日数(一般) + mt_stay_avg: str # 平均在院日数(療養) + mc_stay_avg: str # 平均在院日数(療養(医療)) + ca_stay_avg: str # 平均在院日数(療養(介護)) + pys_stay_avg: str # 平均在院日数(精神) + tub_stay_avg: str # 平均在院日数(結核) + inf_stay_avg: str # 平均在院日数(感染症) + stay_avg_sum: str # 平均在院日数(全体) + stay_avg_from: str # 平均在院日数_期間自 + stay_avg_to: str # 平均在院日数_期間至 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.adddel_div = record[5].strip() + self.maint_date = record[6].strip() + self.trn_date = record[7].strip() + self.info_date = record[8].strip() + self.home_page = record[9].strip() + self.hppre_flg = record[10].strip() + self.expre_flg = record[11].strip() + self.trial_flg = record[12].strip() + self.trial_cont_count = record[13].strip() + self.trial_whet_from = record[14].strip() + self.trial_whet_to = record[15].strip() + self.equipment_flg = record[16].strip() + self.cos_disease_flg = record[17].strip() + self.cos_surgery = record[18].strip() + self.specialclinic_flg = record[19].strip() + self.establishment_flg = record[20].strip() + self.critical_flg = record[21].strip() + self.cop_system = record[22].strip() + self.sys_exists_flg = record[23].strip() + self.sys_inspection = record[24].strip() + self.sys_prescription = record[25].strip() + self.sys_reserv = record[26].strip() + self.icduse_flg = record[27].strip() + self.echart_flg = record[28].strip() + self.fulltime_flg = record[29].strip() + self.fulltime_count = record[30].strip() + self.ge_patient_avg = record[31].strip() + self.mt_patient_avg = record[32].strip() + self.mc_patient_avg = record[33].strip() + self.ca_patient_avg = record[34].strip() + self.pys_patient_avg = record[35].strip() + self.tub_patient_avg = record[36].strip() + self.inf_patient_avg = record[37].strip() + self.patient_avg_sum = record[38].strip() + self.patient_avg_from = record[39].strip() + self.patient_avg_to = record[40].strip() + self.cl_patient_avg = record[41].strip() + self.cl_patient_avg_from = record[42].strip() + self.cl_patient_avg_to = record[43].strip() + self.hm_patient_avg = record[44].strip() + self.hm_patient_avg_from = record[45].strip() + self.hm_patient_avg_to = record[46].strip() + self.ge_patient_ex = record[47].strip() + self.mt_patient_ex = record[48].strip() + self.mc_patient_ex = record[49].strip() + self.ca_patient_ex = record[50].strip() + self.pys_patient_ex = record[51].strip() + self.tub_patient_ex = record[52].strip() + self.inf_patient_ex = record[53].strip() + self.patient_ex_sum = record[54].strip() + self.patient_ex_from = record[55].strip() + self.patient_ex_to = record[56].strip() + self.cl_patient_ex = record[57].strip() + self.cl_patient_ex_from = record[58].strip() + self.cl_patient_ex_to = record[59].strip() + self.hm_patient_ex = record[60].strip() + self.hm_patient_ex_from = record[61].strip() + self.hm_patient_ex_to = record[62].strip() + self.ge_stay_avg = record[63].strip() + self.mt_stay_avg = record[64].strip() + self.mc_stay_avg = record[65].strip() + self.ca_stay_avg = record[66].strip() + self.pys_stay_avg = record[67].strip() + self.tub_stay_avg = record[68].strip() + self.inf_stay_avg = record[69].strip() + self.stay_avg_sum = record[70].strip() + self.stay_avg_from = record[71].strip() + self.stay_avg_to = record[72].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) 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 c6c8bc68..95f6ecc7 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 @@ -30,6 +30,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_mapper import \ ComDrMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper import \ ComDrSosietyMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_base_mapper import \ + ComPrefcMedBaseMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -53,7 +55,7 @@ COM_TABLE_LIST = { # COM_専門分野 "511": ComSpFieldMapper, # COM_都道府県医療機能情報(基本) - "132": NullMapper, + "132": ComPrefcMedBaseMapper, # COM_都道府県医療機能情報(施設設備) "133": NullMapper, # COM_都道府県医療機能情報(疾患治療) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py index 8390096f..375ed954 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py @@ -28,13 +28,13 @@ class TestComAlmaMapper: # 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): diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv new file mode 100644 index 00000000..fc160243 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_delete.csv @@ -0,0 +1,3 @@ +"132","00","9900194","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","00","9901649","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","00","9929798","","B","1","20170406","20170408","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv new file mode 100644 index 00000000..81dd90b1 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_insert.csv @@ -0,0 +1,6 @@ +"132","00","9900146","","A","2","20141113","20141114","20140624","","1","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20130401","20140331","49.8","20130401","20140331","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331" +"132","00","9900194","","A","2","20141113","20141114","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4","","","","","","","","20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331","","","","","","","","","","","","","","","","","18.7","","","","","","0.0","","20100401","20110331" +"132","00","9901649","","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","00","9901679","","A","2","20141113","20141114","20140627","http://www.kai-sei-kai.com/","1","","","","","","1","1","1","1","1","","1","","","","","1","","1","2","58.5","229.2","102.3","131.3","","","","","20130401","20140331","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","20.4","641.3","533.2","749.2","","","","","20130401","20140331" +"132","00","9929798","","A","2","20141113","20141114","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331" +"132","99","9999999","99","A","2","20141113","20141114","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv new file mode 100644 index 00000000..7c7c790a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/com_prefc_med_base_update.csv @@ -0,0 +1,6 @@ +"132","00","9900146","","B","","20141113","20141114","@","http://yahoo.co.jp/","@","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","","55.5","66.6","","","","","","","" +"132","00","9900194","","B","","20141113","20141114","20121101","http://www.hospital.misawa.aomori.jp/","","","@","","","","","","","","@","","@","@","","","","","","","","@","","","","","","","","","","@","","","@","","","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","@","","","","","","","","","" +"132","00","9901679","","B","","20141113","20141114","20171009","","","","","","","","@","@","@","@","","","","","1","2","3","5","4","@","","@","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","@","","","","","","","","","" +"132","99","9999999","99","A","2","20141113","20141114","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" +"132","99","9999999","00","A","2","20141113","20141114","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@","@" +"132","99","9999999","11","A","2","20141113","20141114","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv new file mode 100644 index 00000000..71ec28ac --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_delete.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","NULL","NULL","NULL","NULL","1","1","1","1","NULL","1","NULL","NULL","NULL","NULL","NULL","1","1","1","3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009929798","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv new file mode 100644 index 00000000..36e197b0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/db_com_prefc_med_base_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","20140624","","1","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20130401","20140331","49.8","20130401","20140331","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4","","","","","","","","20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331","","","","","","","","","","","","","","","","","18.7","","","","","","0.0","","20100401","20110331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901679","20140627","http://www.kai-sei-kai.com/","1","","","","","","1","1","1","1","1","","1","","","","","1","","1","2","58.5","229.2","102.3","131.3","","","","","20130401","20140331","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","20.4","641.3","533.2","749.2","","","","","20130401","20140331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009929798","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"99999999900","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" +"99999999999","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" +"99999999911","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv new file mode 100644 index 00000000..8c2f6318 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_delete.csv @@ -0,0 +1,3 @@ +"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/11 21:20:37","clsComPrefcMedBase" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv new file mode 100644 index 00000000..306d8b30 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_insert.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","20140624","","1","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20130401","20140331","49.8","20130401","20140331","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","1","0","20100401","20110331","1","1","1","1","1","1","1","1","1","1","1","1","1","1","3","205.4","","","","","","","","20100401","20110331","468.1","20100401","20110331","8.3","20100401","20110331","","","","","","","","","","","","","","","","","18.7","","","","","","0.0","","20100401","20110331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" +"009901679","20140627","http://www.kai-sei-kai.com/","1","","","","","","1","1","1","1","1","","1","","","","","1","","1","2","58.5","229.2","102.3","131.3","","","","","20130401","20140331","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","20.4","641.3","533.2","749.2","","","","","20130401","20140331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" +"009929798","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" +"99999999999","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2023/05/09 20:39:15","com_prefc_med_base_mapper","2023/05/09 20:39:15","com_prefc_med_base_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv new file mode 100644 index 00000000..032b6891 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/expect_com_prefc_med_base_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","info_date","home_page","hppre_flg","expre_flg","trial_flg","trial_contcount","trialwhet_from","trialwhet_to","equipment_flg","cos_disease_flg","cos_surgery","specialclinic_flg","establishment_flg","critical_flg","cop_system","sys_exists_flg","sys_inspection","sys_prescription","sys_reserv","icduse_flg","echart_flg","fulltime_flg","fulltime_count","ge_patient_avg","mt_patient_avg","mc_patient_avg","ca_patient_avg","pys_patient_avg","tub_patient_avg","inf_patient_avg","patient_avg_sum","patient_avg_from","patient_avg_to","cl_patient_avg","cl_patient_avg_from","cl_patient_avg_to","hm_patient_avg","hm_patient_avg_from","hm_patient_avg_to","ge_patient_ex","mt_patient_ex","mc_patient_ex","ca_patient_ex","pys_patient_ex","tub_patient_ex","inf_patient_ex","patient_ex_sum","patient_ex_from","patient_ex_to","cl_patient_ex","cl_patient_ex_from","cl_patient_ex_to","hm_patient_ex","hm_patient_ex_from","hm_patient_ex_to","ge_stay_avg","mt_stay_avg","mc_stay_avg","ca_stay_avg","pys_stay_avg","tub_stay_avg","inf_stay_avg","stay_avg_sum","stay_avg_from","stay_avg_to","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","NULL","http://yahoo.co.jp/","NULL","","","","","","1","1","","","","","","","","","","","","","","18.8","","","","","","","","20171009","20171009","55.5","","","","","","","","","","","","","","","","","","","","","","39.3","","","","","","","","20130401","20140331","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 11:49:28","com_prefc_med_base_mapper" +"009900194","20121101","http://www.hospital.misawa.aomori.jp/","1","1","NULL","NULL","NULL","NULL","1","1","1","1","NULL","1","NULL","NULL","NULL","NULL","NULL","1","1","1","3","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","111","112","113","114","115","116","117","118","20170101","20171010","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 14:52:00","com_prefc_med_base_mapper" +"009901649","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"009901679","20171009","http://www.kai-sei-kai.com/","1","","","","","","NULL","NULL","NULL","NULL","1","","1","","","","","5","4","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","96.0","20130401","20140331","","","","","","","","","","","","","","","","","","","","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2023/05/09 11:49:28","com_prefc_med_base_mapper" +"009929798","20130611","http://www.urakawa.jrc.or.jp/","1","","","","","","1","1","1","1","1","","1","","","","","","","1","1","114.6","46.6","","","39.9","0.0","0.0","","20120401","20130331","481.6","20120401","20130331","16.2","20120401","20130331","","","","","","","","","","","","","","","","","15.6","555.3","","","169.4","0.0","0.0","","20120401","20130331","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2017/10/08 20:57:12","clsComPrefcMedBase" +"99999999900","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","20130331","20230510","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","com_prefc_med_base_mapper" +"99999999911","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedBase","2000/05/09 20:39:15","com_prefc_med_base_mapper" +"99999999999","20130611","aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbz","1","2","3","4444","20150101","20160101","1","1","1","1","1","1","1","1","1","1","1","1","1","1","123","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","12345.6","20120401","20130331","12345.6","20120401","20130331","123467","123467","123467","123467","123467","123467","123467","123467","20200202","20200202","123467","20200202","20200202","123467","20200202","20200202","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","12345.6","20120401","20130331","20130331","NULL","NULL","NULL","NULL","NULL","2000/05/09 20:39:15","aaaaa","2000/05/09 20:39:15","aaaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py new file mode 100644 index 00000000..ab6fca06 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_base/test_com_prefc_med_base_mapper.py @@ -0,0 +1,196 @@ +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_prefc_med_base_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 TestComPrefcMedBaseMapper: + """レイアウト区分132: 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_prefc_med_base_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, 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_prefc_med_base_insert.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_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_prefc_med_base_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'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_prefc_med_base_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_base', + 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_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, 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_prefc_med_base_update.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_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_prefc_med_base_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_base', {'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_prefc_med_base_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_base', + 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_prefc_med_base_mapper.ComPrefcMedBaseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_base_mapper.ComPrefcMedBaseMapper, 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_prefc_med_base_delete.csv')) + primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_prefc_med_base WHERE dcf_dsf_inst_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}が、期待値以降であること' From dbbe67bb7ed50789cd8da91c6bc6b5c9be3cb89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 10 May 2023 15:09:17 +0900 Subject: [PATCH 38/57] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=97=E3=81=AE?= =?UTF-8?q?=E6=8C=87=E6=91=98=E4=BA=8B=E9=A0=85=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 111 +++++++----------- 1 file changed, 45 insertions(+), 66 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index 70df59e1..a09f4361 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -868,28 +868,17 @@ class ComInstAttMapper(UltmarcTableMapper): # 疾患別リハビリテーション料 if len(self.record.rehabilitation_flag) > 0: set_clauses.append('rehabilitation_flag = :rehabilitation_flag') - set_clauses.append('rehabilitation_code01= :rehabilitation_code01') - set_clauses.append('rehabilitation_code02= :rehabilitation_code02') - set_clauses.append('rehabilitation_code03= :rehabilitation_code03') - set_clauses.append('rehabilitation_code04= :rehabilitation_code04') - set_clauses.append('rehabilitation_code05= :rehabilitation_code05') - set_clauses.append('rehabilitation_code06= :rehabilitation_code06') - set_clauses.append('rehabilitation_code07= :rehabilitation_code07') - set_clauses.append('rehabilitation_code08= :rehabilitation_code08') - set_clauses.append('rehabilitation_code09= :rehabilitation_code09') - set_clauses.append('rehabilitation_code10= :rehabilitation_code10') - if self.record.rehabilitation_flag == '@': + # 項目クリア判断 + is_aggregate_item_clear = self.record.rehabilitation_flag == '@' + if is_aggregate_item_clear: self.query_parameter['rehabilitation_flag'] = None - self.query_parameter['rehabilitation_code01'] = None - self.query_parameter['rehabilitation_code02'] = None - self.query_parameter['rehabilitation_code03'] = None - self.query_parameter['rehabilitation_code04'] = None - self.query_parameter['rehabilitation_code05'] = None - self.query_parameter['rehabilitation_code06'] = None - self.query_parameter['rehabilitation_code07'] = None - self.query_parameter['rehabilitation_code08'] = None - self.query_parameter['rehabilitation_code09'] = None - self.query_parameter['rehabilitation_code10'] = None + # 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) + for i in range(1, 11): + num = str(i).zfill(2) # 2桁で0埋め + setting_item_name = f'rehabilitation_code{num}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') + if is_aggregate_item_clear: + self.query_parameter[setting_item_name] = None # 麻酔管理料 if len(self.record.anesthetizing_manage_flag) > 0: @@ -1120,66 +1109,56 @@ class ComInstAttMapper(UltmarcTableMapper): # 先進医療実施医療機関 if len(self.record.hiadhp_flag) > 0: set_clauses.append('hiadhpflag = :hiadhp_flag') + # 項目クリア判断 + is_aggregate_item_clear = self.record.hiadhp_flag == '@' + if is_aggregate_item_clear: + self.query_parameter['hiadhp_flag'] = None # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 41): - num = str(i) - setting_item = 'hiadhpcode' + num + ' = :hiadhp_code' + num - set_clauses.append(setting_item) - setting_item = 'hiadhpkind' + num + ' = :hiadhp_kind' + num - set_clauses.append(setting_item) - - if self.record.hiadhp_flag == '@': - self.query_parameter['hiadhp_flag'] = None - - # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) - for i in range(1, 41): - num = str(i) - setting_item = 'hiadhp_code' + num - self.query_parameter[setting_item] = None - setting_item = 'hiadhp_kind' + num - self.query_parameter[setting_item] = None + setting_db_name_code = f'hiadhpcode{i}' + setting_dn_name_kind = f'hiadhpkind{i}' + setting_item_name_code = f'hiadhp_code{i}' + setting_item_name_kind = f'hiadhp_kind{i}' + set_clauses.append(f'{setting_db_name_code} = :{setting_item_name_code}') + set_clauses.append(f'{setting_dn_name_kind} = :{setting_item_name_kind}') + if is_aggregate_item_clear: + self.query_parameter[setting_item_name_code] = None + self.query_parameter[setting_item_name_kind] = None # 先端医療実施医療機関 if len(self.record.hitechhp_flag) > 0: set_clauses.append('hitechhpflag = :hitechhp_flag') - + # 項目クリア判断 + is_aggregate_item_clear = self.record.hitechhp_flag == '@' + if is_aggregate_item_clear: + self.query_parameter['hitechhp_flag'] = None # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 21): - num = str(i) - setting_item = 'hitechhpkind' + num + ' = :hitechhp_kind' + num - set_clauses.append(setting_item) - - if self.record.hitechhp_flag == '@': - self.query_parameter['hitechhp_flag'] = None - - # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) - for i in range(1, 21): - num = str(i) - setting_item = 'hitechhp_kind' + num - self.query_parameter[setting_item] = None + setting_db_name = f'hitechhpkind{i}' + setting_item_name = f'hitechhp_kind{i}' + set_clauses.append(f'{setting_db_name} = :{setting_item_name}') + if is_aggregate_item_clear: + self.query_parameter[setting_item_name] = None # 政策医療 if len(self.record.policy_medical_flag) > 0: set_clauses.append('policymedical_flag = :policy_medical_flag') - + # 項目クリア判断 + is_aggregate_item_clear = self.record.policy_medical_flag == '@' + if is_aggregate_item_clear: + self.query_parameter['policy_medical_flag'] = None # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 21): num = str(i).zfill(2) # 2桁で0埋め - setting_item = 'policymedical_code' + num + ' = :policy_medical_code' + num - set_clauses.append(setting_item) - setting_item = 'policymedical_content' + num + ' = :policy_medical_content' + num - set_clauses.append(setting_item) - - if self.record.policy_medical_flag == '@': - self.query_parameter['policy_medical_flag'] = None - - # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) - for i in range(1, 21): - num = str(i).zfill(2) # 2桁で0埋め - setting_item = 'policy_medical_code' + num - self.query_parameter[setting_item] = None - setting_item = 'policy_medical_content' + num - self.query_parameter[setting_item] = None + setting_db_name_code = f'policymedical_code{num}' + setting_db_name_content = f'policymedical_content{num}' + setting_item_name_code = f'policy_medical_code{num}' + setting_item_name_content = f'policy_medical_content{num}' + set_clauses.append(f'{setting_db_name_code} = :{setting_item_name_code}') + set_clauses.append(f'{setting_db_name_content} = :{setting_item_name_content}') + if is_aggregate_item_clear: + self.query_parameter[setting_item_name_code] = None + self.query_parameter[setting_item_name_content] = None # 訪問看護ステーション if len(self.record.visitcarest_flag) > 0: From ba04227f5fb04bb1dc4751269c7eddcbafb92587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Wed, 10 May 2023 15:11:31 +0900 Subject: [PATCH 39/57] =?UTF-8?q?=E6=96=87=E8=A8=80=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/table_mapper/concrete/com_inst_att_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index a09f4361..cbb80e20 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -4,7 +4,7 @@ from src.batch.ultmarc.utmp_tables.tables.com_inst_att import ComInstAtt class ComInstAttMapper(UltmarcTableMapper): - """レイアウト区分111: COM_施設属税 登録処理""" + """レイアウト区分111: COM_施設属性 登録処理""" # レコード存在確認SQL RECORD_EXISTS_QUERY = """\ From fe8d0fd14295ed63eaafd937eb5bb0167aca16d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 08:39:34 +0900 Subject: [PATCH 40/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E6=96=BD=E8=A8=AD=E8=A8=AD=E5=82=99=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_prefc_med_equpment_mapper.py | 104 ++++++++ .../utmp_tables/tables/com_prefc_med_base.py | 2 +- .../tables/com_prefc_med_equpment.py | 30 +++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_prefc_med_equpment/__init__.py | 0 .../com_prefc_med_equpment_delete.csv | 3 + .../com_prefc_med_equpment_insert.csv | 6 + .../com_prefc_med_equpment_update.csv | 7 + ...b_com_prefc_med_equpment_before_delete.csv | 7 + ...b_com_prefc_med_equpment_before_update.csv | 8 + .../expect_com_prefc_med_equpment_delete.csv | 4 + .../expect_com_prefc_med_equpment_insert.csv | 7 + .../expect_com_prefc_med_equpment_update.csv | 8 + .../test_com_prefc_med_equpment_mapper.py | 250 ++++++++++++++++++ 14 files changed, 438 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py new file mode 100644 index 00000000..dcfd8114 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py @@ -0,0 +1,104 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import ComPrefcMedEqupment + + +class ComPrefcMedEqupmentMapper(UltmarcTableMapper): + """レイアウト区分132: COM_都道府県医療機能情報(施設設備)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_equpment + ( + dcf_dsf_inst_cd, + equipment_code, + bednum, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :equipment_code, + :bed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_equpment + SET + bednum = :bed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + equipment_code = :equipment_code + """ + + record: ComPrefcMedEqupment + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedEqupment) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 self.record.bed_num is not None: + if self.record.bed_num == '@': + self.query_parameter['bed_num'] = None + return self.UPDATE_QUERY + else: + return None diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py index 56b64a7b..fd9342ff 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_base.py @@ -5,7 +5,7 @@ class ComPrefcMedBase(UltmarcTable): """レイアウト区分132: COM_都道府県医療機能情報(基本)""" dcfhp_id: str # DCFコード(レコードID) dcfhp_code: str # DCFコード(施設コード) - dcfhp_yobi: str # DCFコード(予備)10/8asa + dcfhp_yobi: str # DCFコード(予備) maint_flag: str # 修正区分 adddel_div: str # 予備/追加削除区分 maint_date: str # メンテナンス年月日 diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py new file mode 100644 index 00000000..7b592b9d --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py @@ -0,0 +1,30 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedEqupment(UltmarcTable): + """レイアウト区分132: COM_都道府県医療機能情報(施設設備)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + equipment_code: str # 施設設備コード + bed_num: str # 病床数 + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4] + self.equipment_code = record[5].strip() + self.adddel_div = record[6] + self.bed_num = record[9] + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.bed_num = self.bed_num if len(self.bed_num) > 0 else None + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) 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 95f6ecc7..f3fbcef1 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 @@ -32,6 +32,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_sosiety_mapper i ComDrSosietyMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_base_mapper import \ ComPrefcMedBaseMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_equpment_mapper import \ + ComPrefcMedEqupmentMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -57,7 +59,7 @@ COM_TABLE_LIST = { # COM_都道府県医療機能情報(基本) "132": ComPrefcMedBaseMapper, # COM_都道府県医療機能情報(施設設備) - "133": NullMapper, + "133": ComPrefcMedEqupmentMapper, # COM_都道府県医療機能情報(疾患治療) "134": NullMapper, # COM_都道府県医療機能情報(短期滞在手術) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv new file mode 100644 index 00000000..826055ac --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_delete.csv @@ -0,0 +1,3 @@ +"133","00","9900194","","B","008","1","20141211","20141213","" +"133","00","9901649","","B","009","1","20141211","20141213","" +"133","00","9901679","","B","015","1","20141211","20141213","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv new file mode 100644 index 00000000..b5882b97 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_insert.csv @@ -0,0 +1,6 @@ +"133","00","9900146","","A","012","2","20141113","20141114","0" +"133","00","9900194","","A","008","2","20141113","20141114","32" +"133","00","9901649","","A","009","2","20141113","20141114","3" +"133","00","9901679","","A","015","2","20141113","20141114","" +"133","00","9904439","","A","006","2","20141113","20141114","" +"133","00","9929798","","A","010","2","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv new file mode 100644 index 00000000..24111866 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/com_prefc_med_equpment_update.csv @@ -0,0 +1,7 @@ +"133","99","9999999","99","B","111","2","20141113","20141114","" +"133","00","9900146","","B","012","2","20141113","20141114","@" +"133","00","9900194","","B","008","2","20141113","20141114","@" +"133","00","9901649","","B","009","2","20141113","20141114","6" +"133","00","9901679","","B","015","2","20141113","20141114","@" +"133","00","9904439","","B","006","2","20141113","20141114","10" +"133","00","9929798","","B","010","2","20141113","20141114","9" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv new file mode 100644 index 00000000..94330b4f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","012","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009900194","008","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009901649","009","6","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009901679","015","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009904439","006","10","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009929798","010","9","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv new file mode 100644 index 00000000..c75a3f89 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/db_com_prefc_med_equpment_before_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","012","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009900194","008","32","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009901649","009","3","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009901679","015","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009904439","006","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"009929798","010","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" +"99999999999","111","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv new file mode 100644 index 00000000..32074199 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","012","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009904439","006","10","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" +"009929798","010","9","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/11 21:20:37","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv new file mode 100644 index 00000000..caad9918 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_insert.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","012","0","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009900194","008","32","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009901649","009","3","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009901679","015","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009904439","006","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" +"009929798","010","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 10:57:12","com_prefc_med_equpment_mapper","2023/05/10 10:57:12","com_prefc_med_equpment_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv new file mode 100644 index 00000000..88bc0809 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/expect_com_prefc_med_equpment_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","equipment_code","bednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","012","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009900194","008","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009901649","009","6","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009901679","015","NULL","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009904439","006","10","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"009929798","010","9","20171008","20230510","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2023/05/10 11:49:28","com_prefc_med_equpment_mapper" +"99999999999","111","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedEquipment","2017/10/08 20:57:12","clsPrefcMedEquipment" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py new file mode 100644 index 00000000..78d33244 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_equpment/test_com_prefc_med_equpment_mapper.py @@ -0,0 +1,250 @@ +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_prefc_med_equpment_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 TestComPrefcMedEqupmentMapper: + """レイアウト区分133: 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_prefc_med_equpment_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, 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_prefc_med_equpment_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(施設設備)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_equpment_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'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_prefc_med_equpment_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_equpment', + 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_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, 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_prefc_med_equpment_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', '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: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(施設設備)テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_equpment_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_equpment', {'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_prefc_med_equpment_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_equpment', + 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_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_equpment_mapper.ComPrefcMedEqupmentMapper, 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_prefc_med_equpment_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_equipment_code = [{'equipment_code': columns['equipment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_equpment + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + equipment_code = :equipment_code + """ + for param_dcf_dsf_inst_cd, param_equipment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_equipment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_equipment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['bednum', '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: + if actual_col_name == 'bednum': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == int(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 6e9c43ecd8a291ffd48efc9cf0d6b1ba62342174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 09:30:16 +0900 Subject: [PATCH 41/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E7=96=BE=E6=82=A3=E6=B2=BB=E7=99=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_prefc_med_dis_treat_mapper.py | 104 ++++++++ .../tables/com_prefc_med_dis_treat.py | 30 +++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_prefc_med_dis_treat/__init__.py | 0 .../com_prefc_med_dis_treat_delete.csv | 4 + .../com_prefc_med_dis_treat_insert.csv | 8 + .../com_prefc_med_dis_treat_update.csv | 7 + ..._com_prefc_med_dis_treat_before_delete.csv | 8 + ..._com_prefc_med_dis_treat_before_update.csv | 9 + .../expect_com_prefc_med_dis_treat_delete.csv | 4 + .../expect_com_prefc_med_dis_treat_insert.csv | 10 + .../expect_com_prefc_med_dis_treat_update.csv | 9 + .../test_com_prefc_med_dis_treat_mapper.py | 251 ++++++++++++++++++ 13 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py new file mode 100644 index 00000000..42193466 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py @@ -0,0 +1,104 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import ComPrefcMedDisTreat + + +class ComPrefcMedDisTreatMapper(UltmarcTableMapper): + """レイアウト区分133: COM_都道府県医療機能情報(疾患治療)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_dis_treat + ( + dcf_dsf_inst_cd, + treatment_code, + pre_num, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :treatment_code, + :pre_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_dis_treat + SET + pre_num = :pre_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + treatment_code = :treatment_code + """ + + record: ComPrefcMedDisTreat + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedDisTreat) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 self.record.pre_num is not None: + if self.record.pre_num == '@': + self.query_parameter['pre_num'] = None + return self.UPDATE_QUERY + else: + return None diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py new file mode 100644 index 00000000..4e458fe0 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py @@ -0,0 +1,30 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedDisTreat(UltmarcTable): + """レイアウト区分133: COM_都道府県医療機能情報(疾患治療)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + treatment_code: str # 疾患治療コード + pre_num: str # 前年比 + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1] + self.dcfhp_code = record[2] + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4] + self.treatment_code = record[5].strip() + self.adddel_div = record[6] + self.pre_num = record[9] + + # smallint型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.pre_num = self.pre_num if len(self.pre_num) > 0 else None + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) 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 f3fbcef1..38dc1f27 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 @@ -34,6 +34,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_base_mapp ComPrefcMedBaseMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_equpment_mapper import \ ComPrefcMedEqupmentMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_dis_treat_mapper import \ + ComPrefcMedDisTreatMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -61,7 +63,7 @@ COM_TABLE_LIST = { # COM_都道府県医療機能情報(施設設備) "133": ComPrefcMedEqupmentMapper, # COM_都道府県医療機能情報(疾患治療) - "134": NullMapper, + "134": ComPrefcMedDisTreatMapper, # COM_都道府県医療機能情報(短期滞在手術) "135": NullMapper, # COM_都道府県医療機能情報(専門外来) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv new file mode 100644 index 00000000..7c1bb46d --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_delete.csv @@ -0,0 +1,4 @@ +"134","00","9901679","","B","2201","1","20141205","20141213","" +"134","00","9901679","","B","2203","1","20141205","20141213","" +"134","00","9901679","","B","2205","1","20141205","20141213","" +"134","00","9901679","","B","2206","1","20141205","20141213","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv new file mode 100644 index 00000000..037c46c2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_insert.csv @@ -0,0 +1,8 @@ +"134","00","9901649","","A","1001","2","20141113","20141114","" +"134","00","9901679","","A","2201","2","20141113","20141114","" +"134","00","9901679","","A","2203","2","20141113","20141114","2789" +"134","00","9901679","","A","2205","2","20141113","20141114","2033" +"134","00","9901679","","A","2206","2","20141113","20141114","0" +"134","00","9929798","","A","0902","2","20141113","20141114","" +"134","00","9929798","","A","0915","2","20141113","20141114","" +"134","99","9999999","99","A","1234","2","20141113","20141114","123456" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv new file mode 100644 index 00000000..4def216a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/com_prefc_med_dis_treat_update.csv @@ -0,0 +1,7 @@ +"134","00","9901649","","B","1001","2","20141113","20141114","0" +"134","00","9901679","","B","2203","2","20141113","20141114","@" +"134","00","9901679","","B","2205","2","20141113","20141114","1987" +"134","00","9901679","","B","2206","2","20141113","20141114","@" +"134","00","9929798","","B","0902","2","20141113","20141114","0" +"134","00","9929798","","B","0915","2","20141113","20141114","543" +"134","99","9999999","99","B","1234","2","20141113","20141114","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv new file mode 100644 index 00000000..ee268b92 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_delete.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2205","1987","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009901679","2206","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0902","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0915","543","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv new file mode 100644 index 00000000..aad1b86e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/db_com_prefc_med_dis_treat_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","2789","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2205","2033","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2206","0","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009929798","0902","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009929798","0915","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"99999999999","1234","1111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv new file mode 100644 index 00000000..d1d53673 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_delete.csv @@ -0,0 +1,4 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0902","0","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" +"009929798","0915","543","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/11 21:20:37","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv new file mode 100644 index 00000000..819aa6dc --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_insert.csv @@ -0,0 +1,10 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009901679","2201","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009901679","2203","2789","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009901679","2205","2033","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009901679","2206","0","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009929798","0902","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"009929798","0915","NULL","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" +"99999999999","1234","123456","20230510","NULL","NULL","NULL","NULL","NULL","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper","2023/05/10 20:57:12","com_prefc_med_dis_treat_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv new file mode 100644 index 00000000..baecab69 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/expect_com_prefc_med_dis_treat_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","treatment_code","pre_num","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","1001","0","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2201","NULL","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" +"009901679","2203","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2205","1987","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009901679","2206","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009929798","0902","0","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"009929798","0915","543","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2023/05/11 08:49:28","com_prefc_med_dis_treat_mapper" +"99999999999","1234","1111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedDisTreat","2017/10/08 20:57:12","clsPrefcMedDisTreat" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py new file mode 100644 index 00000000..a0597df9 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_dis_treat/test_com_prefc_med_dis_treat_mapper.py @@ -0,0 +1,251 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_dis_treat_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 TestComPrefcMedDisTreatMapper: + """レイアウト区分134: 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_prefc_med_dis_treat_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, 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_prefc_med_dis_treat_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', 'regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_都道府県医療機能情報(疾患治療)テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_dis_treat_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'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_prefc_med_dis_treat_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_dis_treat', + 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_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, 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_prefc_med_dis_treat_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', '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: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_都道府県医療機能情報(疾患治療)テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_dis_treat_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_dis_treat', {'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_prefc_med_dis_treat_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_dis_treat', + 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_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_dis_treat_mapper.ComPrefcMedDisTreatMapper, 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_prefc_med_dis_treat_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_treatment_code = [{'treatment_code': columns['treatment_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_dis_treat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + treatment_code = :treatment_code + """ + for param_dcf_dsf_inst_cd, param_treatment_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_treatment_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_treatment_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['pre_num', '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: + if actual_col_name == 'pre_num': + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 83fcca6bbc42a31fbd81879b07546464d8900a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 09:51:51 +0900 Subject: [PATCH 42/57] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=97=E5=87=A6?= =?UTF-8?q?=E7=90=86=E4=BF=AE=E6=AD=A3=EF=BC=88=E5=A4=89=E6=95=B0=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_inst_att_mapper.py | 305 +++++----- .../utmp_tables/tables/com_inst_att.py | 560 +++++++++--------- 2 files changed, 430 insertions(+), 435 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index cbb80e20..f1b52afd 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -478,148 +478,148 @@ class ComInstAttMapper(UltmarcTableMapper): :sphealth_exploration, :sphealth_guidance, :hiadhp_flag, - :hiadhp_code1, - :hiadhp_kind1, - :hiadhp_code2, - :hiadhp_kind2, - :hiadhp_code3, - :hiadhp_kind3, - :hiadhp_code4, - :hiadhp_kind4, - :hiadhp_code5, - :hiadhp_kind5, - :hiadhp_code6, - :hiadhp_kind6, - :hiadhp_code7, - :hiadhp_kind7, - :hiadhp_code8, - :hiadhp_kind8, - :hiadhp_code9, - :hiadhp_kind9, - :hiadhp_code10, - :hiadhp_kind10, - :hiadhp_code11, - :hiadhp_kind11, - :hiadhp_code12, - :hiadhp_kind12, - :hiadhp_code13, - :hiadhp_kind13, - :hiadhp_code14, - :hiadhp_kind14, - :hiadhp_code15, - :hiadhp_kind15, - :hiadhp_code16, - :hiadhp_kind16, - :hiadhp_code17, - :hiadhp_kind17, - :hiadhp_code18, - :hiadhp_kind18, - :hiadhp_code19, - :hiadhp_kind19, - :hiadhp_code20, - :hiadhp_kind20, - :hiadhp_code21, - :hiadhp_kind21, - :hiadhp_code22, - :hiadhp_kind22, - :hiadhp_code23, - :hiadhp_kind23, - :hiadhp_code24, - :hiadhp_kind24, - :hiadhp_code25, - :hiadhp_kind25, - :hiadhp_code26, - :hiadhp_kind26, - :hiadhp_code27, - :hiadhp_kind27, - :hiadhp_code28, - :hiadhp_kind28, - :hiadhp_code29, - :hiadhp_kind29, - :hiadhp_code30, - :hiadhp_kind30, - :hiadhp_code31, - :hiadhp_kind31, - :hiadhp_code32, - :hiadhp_kind32, - :hiadhp_code33, - :hiadhp_kind33, - :hiadhp_code34, - :hiadhp_kind34, - :hiadhp_code35, - :hiadhp_kind35, - :hiadhp_code36, - :hiadhp_kind36, - :hiadhp_code37, - :hiadhp_kind37, - :hiadhp_code38, - :hiadhp_kind38, - :hiadhp_code39, - :hiadhp_kind39, - :hiadhp_code40, - :hiadhp_kind40, + :hiadhpcode1, + :hiadhpkind1, + :hiadhpcode2, + :hiadhpkind2, + :hiadhpcode3, + :hiadhpkind3, + :hiadhpcode4, + :hiadhpkind4, + :hiadhpcode5, + :hiadhpkind5, + :hiadhpcode6, + :hiadhpkind6, + :hiadhpcode7, + :hiadhpkind7, + :hiadhpcode8, + :hiadhpkind8, + :hiadhpcode9, + :hiadhpkind9, + :hiadhpcode10, + :hiadhpkind10, + :hiadhpcode11, + :hiadhpkind11, + :hiadhpcode12, + :hiadhpkind12, + :hiadhpcode13, + :hiadhpkind13, + :hiadhpcode14, + :hiadhpkind14, + :hiadhpcode15, + :hiadhpkind15, + :hiadhpcode16, + :hiadhpkind16, + :hiadhpcode17, + :hiadhpkind17, + :hiadhpcode18, + :hiadhpkind18, + :hiadhpcode19, + :hiadhpkind19, + :hiadhpcode20, + :hiadhpkind20, + :hiadhpcode21, + :hiadhpkind21, + :hiadhpcode22, + :hiadhpkind22, + :hiadhpcode23, + :hiadhpkind23, + :hiadhpcode24, + :hiadhpkind24, + :hiadhpcode25, + :hiadhpkind25, + :hiadhpcode26, + :hiadhpkind26, + :hiadhpcode27, + :hiadhpkind27, + :hiadhpcode28, + :hiadhpkind28, + :hiadhpcode29, + :hiadhpkind29, + :hiadhpcode30, + :hiadhpkind30, + :hiadhpcode31, + :hiadhpkind31, + :hiadhpcode32, + :hiadhpkind32, + :hiadhpcode33, + :hiadhpkind33, + :hiadhpcode34, + :hiadhpkind34, + :hiadhpcode35, + :hiadhpkind35, + :hiadhpcode36, + :hiadhpkind36, + :hiadhpcode37, + :hiadhpkind37, + :hiadhpcode38, + :hiadhpkind38, + :hiadhpcode39, + :hiadhpkind39, + :hiadhpcode40, + :hiadhpkind40, :hitechhp_flag, - :hitechhp_kind1, - :hitechhp_kind2, - :hitechhp_kind3, - :hitechhp_kind4, - :hitechhp_kind5, - :hitechhp_kind6, - :hitechhp_kind7, - :hitechhp_kind8, - :hitechhp_kind9, - :hitechhp_kind10, - :hitechhp_kind11, - :hitechhp_kind12, - :hitechhp_kind13, - :hitechhp_kind14, - :hitechhp_kind15, - :hitechhp_kind16, - :hitechhp_kind17, - :hitechhp_kind18, - :hitechhp_kind19, - :hitechhp_kind20, + :hitechhpkind1, + :hitechhpkind2, + :hitechhpkind3, + :hitechhpkind4, + :hitechhpkind5, + :hitechhpkind6, + :hitechhpkind7, + :hitechhpkind8, + :hitechhpkind9, + :hitechhpkind10, + :hitechhpkind11, + :hitechhpkind12, + :hitechhpkind13, + :hitechhpkind14, + :hitechhpkind15, + :hitechhpkind16, + :hitechhpkind17, + :hitechhpkind18, + :hitechhpkind19, + :hitechhpkind20, :policy_medical_flag, - :policy_medical_code01, - :policy_medical_content01, - :policy_medical_code02, - :policy_medical_content02, - :policy_medical_code03, - :policy_medical_content03, - :policy_medical_code04, - :policy_medical_content04, - :policy_medical_code05, - :policy_medical_content05, - :policy_medical_code06, - :policy_medical_content06, - :policy_medical_code07, - :policy_medical_content07, - :policy_medical_code08, - :policy_medical_content08, - :policy_medical_code09, - :policy_medical_content09, - :policy_medical_code10, - :policy_medical_content10, - :policy_medical_code11, - :policy_medical_content11, - :policy_medical_code12, - :policy_medical_content12, - :policy_medical_code13, - :policy_medical_content13, - :policy_medical_code14, - :policy_medical_content14, - :policy_medical_code15, - :policy_medical_content15, - :policy_medical_code16, - :policy_medical_content16, - :policy_medical_code17, - :policy_medical_content17, - :policy_medical_code18, - :policy_medical_content18, - :policy_medical_code19, - :policy_medical_content19, - :policy_medical_code20, - :policy_medical_content20, + :policymedical_code01, + :policymedical_content01, + :policymedical_code02, + :policymedical_content02, + :policymedical_code03, + :policymedical_content03, + :policymedical_code04, + :policymedical_content04, + :policymedical_code05, + :policymedical_content05, + :policymedical_code06, + :policymedical_content06, + :policymedical_code07, + :policymedical_content07, + :policymedical_code08, + :policymedical_content08, + :policymedical_code09, + :policymedical_content09, + :policymedical_code10, + :policymedical_content10, + :policymedical_code11, + :policymedical_content11, + :policymedical_code12, + :policymedical_content12, + :policymedical_code13, + :policymedical_content13, + :policymedical_code14, + :policymedical_content14, + :policymedical_code15, + :policymedical_content15, + :policymedical_code16, + :policymedical_content16, + :policymedical_code17, + :policymedical_content17, + :policymedical_code18, + :policymedical_content18, + :policymedical_code19, + :policymedical_content19, + :policymedical_code20, + :policymedical_content20, :visitcarest_flag, :visitcarestation_id, :visitcarestation_code, @@ -1115,12 +1115,10 @@ class ComInstAttMapper(UltmarcTableMapper): self.query_parameter['hiadhp_flag'] = None # 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 41): - setting_db_name_code = f'hiadhpcode{i}' - setting_dn_name_kind = f'hiadhpkind{i}' - setting_item_name_code = f'hiadhp_code{i}' - setting_item_name_kind = f'hiadhp_kind{i}' - set_clauses.append(f'{setting_db_name_code} = :{setting_item_name_code}') - set_clauses.append(f'{setting_dn_name_kind} = :{setting_item_name_kind}') + setting_item_name_code = f'hiadhpcode{i}' + setting_item_name_kind = f'hiadhpkind{i}' + set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}') + set_clauses.append(f'{setting_item_name_kind} = :{setting_item_name_kind}') if is_aggregate_item_clear: self.query_parameter[setting_item_name_code] = None self.query_parameter[setting_item_name_kind] = None @@ -1134,9 +1132,8 @@ class ComInstAttMapper(UltmarcTableMapper): self.query_parameter['hitechhp_flag'] = None # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 21): - setting_db_name = f'hitechhpkind{i}' - setting_item_name = f'hitechhp_kind{i}' - set_clauses.append(f'{setting_db_name} = :{setting_item_name}') + setting_item_name = f'hitechhpkind{i}' + set_clauses.append(f'{setting_item_name} = :{setting_item_name}') if is_aggregate_item_clear: self.query_parameter[setting_item_name] = None @@ -1150,12 +1147,10 @@ class ComInstAttMapper(UltmarcTableMapper): # 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する) for i in range(1, 21): num = str(i).zfill(2) # 2桁で0埋め - setting_db_name_code = f'policymedical_code{num}' - setting_db_name_content = f'policymedical_content{num}' - setting_item_name_code = f'policy_medical_code{num}' - setting_item_name_content = f'policy_medical_content{num}' - set_clauses.append(f'{setting_db_name_code} = :{setting_item_name_code}') - set_clauses.append(f'{setting_db_name_content} = :{setting_item_name_content}') + setting_item_name_code = f'policymedical_code{num}' + setting_item_name_content = f'policymedical_content{num}' + set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}') + set_clauses.append(f'{setting_item_name_content} = :{setting_item_name_content}') if is_aggregate_item_clear: self.query_parameter[setting_item_name_code] = None self.query_parameter[setting_item_name_content] = None diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py index 90f02cd2..695b247f 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_inst_att.py @@ -157,148 +157,148 @@ class ComInstAtt(UltmarcTable): sphealth_exploration: str # 特定健康診査実施機 sphealth_guidance: str # 特定保健指導実施機 hiadhp_flag: str # 先端医療・高度医療技術実施医療機関フラグ - hiadhp_code1: str # 先端医療・高度医療技術実施医療機関1(コード) - hiadhp_kind1: str # 先端医療・高度医療技術実施医療機関1(区分) - hiadhp_code2: str # 先端医療・高度医療技術実施医療機関2(コード) - hiadhp_kind2: str # 先端医療・高度医療技術実施医療機関2(区分) - hiadhp_code3: str # 先端医療・高度医療技術実施医療機関3(コード) - hiadhp_kind3: str # 先端医療・高度医療技術実施医療機関3(区分) - hiadhp_code4: str # 先端医療・高度医療技術実施医療機関4(コード) - hiadhp_kind4: str # 先端医療・高度医療技術実施医療機関4(区分) - hiadhp_code5: str # 先端医療・高度医療技術実施医療機関5(コード) - hiadhp_kind5: str # 先端医療・高度医療技術実施医療機関5(区分) - hiadhp_code6: str # 先端医療・高度医療技術実施医療機関6(コード) - hiadhp_kind6: str # 先端医療・高度医療技術実施医療機関6(区分) - hiadhp_code7: str # 先端医療・高度医療技術実施医療機関7(コード) - hiadhp_kind7: str # 先端医療・高度医療技術実施医療機関7(区分) - hiadhp_code8: str # 先端医療・高度医療技術実施医療機関8(コード) - hiadhp_kind8: str # 先端医療・高度医療技術実施医療機関8(区分) - hiadhp_code9: str # 先端医療・高度医療技術実施医療機関9(コード) - hiadhp_kind9: str # 先端医療・高度医療技術実施医療機関9(区分) - hiadhp_code10: str # 先端医療・高度医療技術実施医療機関10(コード) - hiadhp_kind10: str # 先端医療・高度医療技術実施医療機関10(区分) - hiadhp_code11: str # 先端医療・高度医療技術実施医療機関11(コード) - hiadhp_kind11: str # 先端医療・高度医療技術実施医療機関11(区分) - hiadhp_code12: str # 先端医療・高度医療技術実施医療機関12(コード) - hiadhp_kind12: str # 先端医療・高度医療技術実施医療機関12(区分) - hiadhp_code13: str # 先端医療・高度医療技術実施医療機関13(コード) - hiadhp_kind13: str # 先端医療・高度医療技術実施医療機関13(区分) - hiadhp_code14: str # 先端医療・高度医療技術実施医療機関14(コード) - hiadhp_kind14: str # 先端医療・高度医療技術実施医療機関14(区分) - hiadhp_code15: str # 先端医療・高度医療技術実施医療機関15(コード) - hiadhp_kind15: str # 先端医療・高度医療技術実施医療機関15(区分) - hiadhp_code16: str # 先端医療・高度医療技術実施医療機関16(コード) - hiadhp_kind16: str # 先端医療・高度医療技術実施医療機関16(区分) - hiadhp_code17: str # 先端医療・高度医療技術実施医療機関17(コード) - hiadhp_kind17: str # 先端医療・高度医療技術実施医療機関17(区分) - hiadhp_code18: str # 先端医療・高度医療技術実施医療機関18(コード) - hiadhp_kind18: str # 先端医療・高度医療技術実施医療機関18(区分) - hiadhp_code19: str # 先端医療・高度医療技術実施医療機関19(コード) - hiadhp_kind19: str # 先端医療・高度医療技術実施医療機関19(区分) - hiadhp_code20: str # 先端医療・高度医療技術実施医療機関20(コード) - hiadhp_kind20: str # 先端医療・高度医療技術実施医療機関20(区分) - hiadhp_code21: str # 先端医療・高度医療技術実施医療機関21(コード) - hiadhp_kind21: str # 先端医療・高度医療技術実施医療機関21(区分) - hiadhp_code22: str # 先端医療・高度医療技術実施医療機関22(コード) - hiadhp_kind22: str # 先端医療・高度医療技術実施医療機関22(区分) - hiadhp_code23: str # 先端医療・高度医療技術実施医療機関23(コード) - hiadhp_kind23: str # 先端医療・高度医療技術実施医療機関23(区分) - hiadhp_code24: str # 先端医療・高度医療技術実施医療機関24(コード) - hiadhp_kind24: str # 先端医療・高度医療技術実施医療機関24(区分) - hiadhp_code25: str # 先端医療・高度医療技術実施医療機関25(コード) - hiadhp_kind25: str # 先端医療・高度医療技術実施医療機関25(区分) - hiadhp_code26: str # 先端医療・高度医療技術実施医療機関26(コード) - hiadhp_kind26: str # 先端医療・高度医療技術実施医療機関26(区分) - hiadhp_code27: str # 先端医療・高度医療技術実施医療機関27(コード) - hiadhp_kind27: str # 先端医療・高度医療技術実施医療機関27(区分) - hiadhp_code28: str # 先端医療・高度医療技術実施医療機関28(コード) - hiadhp_kind28: str # 先端医療・高度医療技術実施医療機関28(区分) - hiadhp_code29: str # 先端医療・高度医療技術実施医療機関29(コード) - hiadhp_kind29: str # 先端医療・高度医療技術実施医療機関29(区分) - hiadhp_code30: str # 先端医療・高度医療技術実施医療機関30(コード) - hiadhp_kind30: str # 先端医療・高度医療技術実施医療機関30(区分) - hiadhp_code31: str # 先端医療・高度医療技術実施医療機関31(コード) - hiadhp_kind31: str # 先端医療・高度医療技術実施医療機関31(区分) - hiadhp_code32: str # 先端医療・高度医療技術実施医療機関32(コード) - hiadhp_kind32: str # 先端医療・高度医療技術実施医療機関32(区分) - hiadhp_code33: str # 先端医療・高度医療技術実施医療機関33(コード) - hiadhp_kind33: str # 先端医療・高度医療技術実施医療機関33(区分) - hiadhp_code34: str # 先端医療・高度医療技術実施医療機関34(コード) - hiadhp_kind34: str # 先端医療・高度医療技術実施医療機関34(区分) - hiadhp_code35: str # 先端医療・高度医療技術実施医療機関35(コード) - hiadhp_kind35: str # 先端医療・高度医療技術実施医療機関35(区分) - hiadhp_code36: str # 先端医療・高度医療技術実施医療機関36(コード) - hiadhp_kind36: str # 先端医療・高度医療技術実施医療機関36(区分) - hiadhp_code37: str # 先端医療・高度医療技術実施医療機関37(コード) - hiadhp_kind37: str # 先端医療・高度医療技術実施医療機関37(区分) - hiadhp_code38: str # 先端医療・高度医療技術実施医療機関38(コード) - hiadhp_kind38: str # 先端医療・高度医療技術実施医療機関38(区分) - hiadhp_code39: str # 先端医療・高度医療技術実施医療機関39(コード) - hiadhp_kind39: str # 先端医療・高度医療技術実施医療機関39(区分) - hiadhp_code40: str # 先端医療・高度医療技術実施医療機関40(コード) - hiadhp_kind40: str # 先端医療・高度医療技術実施医療機関40(区分) + hiadhpcode1: str # 先端医療・高度医療技術実施医療機関1(コード) + hiadhpkind1: str # 先端医療・高度医療技術実施医療機関1(区分) + hiadhpcode2: str # 先端医療・高度医療技術実施医療機関2(コード) + hiadhpkind2: str # 先端医療・高度医療技術実施医療機関2(区分) + hiadhpcode3: str # 先端医療・高度医療技術実施医療機関3(コード) + hiadhpkind3: str # 先端医療・高度医療技術実施医療機関3(区分) + hiadhpcode4: str # 先端医療・高度医療技術実施医療機関4(コード) + hiadhpkind4: str # 先端医療・高度医療技術実施医療機関4(区分) + hiadhpcode5: str # 先端医療・高度医療技術実施医療機関5(コード) + hiadhpkind5: str # 先端医療・高度医療技術実施医療機関5(区分) + hiadhpcode6: str # 先端医療・高度医療技術実施医療機関6(コード) + hiadhpkind6: str # 先端医療・高度医療技術実施医療機関6(区分) + hiadhpcode7: str # 先端医療・高度医療技術実施医療機関7(コード) + hiadhpkind7: str # 先端医療・高度医療技術実施医療機関7(区分) + hiadhpcode8: str # 先端医療・高度医療技術実施医療機関8(コード) + hiadhpkind8: str # 先端医療・高度医療技術実施医療機関8(区分) + hiadhpcode9: str # 先端医療・高度医療技術実施医療機関9(コード) + hiadhpkind9: str # 先端医療・高度医療技術実施医療機関9(区分) + hiadhpcode10: str # 先端医療・高度医療技術実施医療機関10(コード) + hiadhpkind10: str # 先端医療・高度医療技術実施医療機関10(区分) + hiadhpcode11: str # 先端医療・高度医療技術実施医療機関11(コード) + hiadhpkind11: str # 先端医療・高度医療技術実施医療機関11(区分) + hiadhpcode12: str # 先端医療・高度医療技術実施医療機関12(コード) + hiadhpkind12: str # 先端医療・高度医療技術実施医療機関12(区分) + hiadhpcode13: str # 先端医療・高度医療技術実施医療機関13(コード) + hiadhpkind13: str # 先端医療・高度医療技術実施医療機関13(区分) + hiadhpcode14: str # 先端医療・高度医療技術実施医療機関14(コード) + hiadhpkind14: str # 先端医療・高度医療技術実施医療機関14(区分) + hiadhpcode15: str # 先端医療・高度医療技術実施医療機関15(コード) + hiadhpkind15: str # 先端医療・高度医療技術実施医療機関15(区分) + hiadhpcode16: str # 先端医療・高度医療技術実施医療機関16(コード) + hiadhpkind16: str # 先端医療・高度医療技術実施医療機関16(区分) + hiadhpcode17: str # 先端医療・高度医療技術実施医療機関17(コード) + hiadhpkind17: str # 先端医療・高度医療技術実施医療機関17(区分) + hiadhpcode18: str # 先端医療・高度医療技術実施医療機関18(コード) + hiadhpkind18: str # 先端医療・高度医療技術実施医療機関18(区分) + hiadhpcode19: str # 先端医療・高度医療技術実施医療機関19(コード) + hiadhpkind19: str # 先端医療・高度医療技術実施医療機関19(区分) + hiadhpcode20: str # 先端医療・高度医療技術実施医療機関20(コード) + hiadhpkind20: str # 先端医療・高度医療技術実施医療機関20(区分) + hiadhpcode21: str # 先端医療・高度医療技術実施医療機関21(コード) + hiadhpkind21: str # 先端医療・高度医療技術実施医療機関21(区分) + hiadhpcode22: str # 先端医療・高度医療技術実施医療機関22(コード) + hiadhpkind22: str # 先端医療・高度医療技術実施医療機関22(区分) + hiadhpcode23: str # 先端医療・高度医療技術実施医療機関23(コード) + hiadhpkind23: str # 先端医療・高度医療技術実施医療機関23(区分) + hiadhpcode24: str # 先端医療・高度医療技術実施医療機関24(コード) + hiadhpkind24: str # 先端医療・高度医療技術実施医療機関24(区分) + hiadhpcode25: str # 先端医療・高度医療技術実施医療機関25(コード) + hiadhpkind25: str # 先端医療・高度医療技術実施医療機関25(区分) + hiadhpcode26: str # 先端医療・高度医療技術実施医療機関26(コード) + hiadhpkind26: str # 先端医療・高度医療技術実施医療機関26(区分) + hiadhpcode27: str # 先端医療・高度医療技術実施医療機関27(コード) + hiadhpkind27: str # 先端医療・高度医療技術実施医療機関27(区分) + hiadhpcode28: str # 先端医療・高度医療技術実施医療機関28(コード) + hiadhpkind28: str # 先端医療・高度医療技術実施医療機関28(区分) + hiadhpcode29: str # 先端医療・高度医療技術実施医療機関29(コード) + hiadhpkind29: str # 先端医療・高度医療技術実施医療機関29(区分) + hiadhpcode30: str # 先端医療・高度医療技術実施医療機関30(コード) + hiadhpkind30: str # 先端医療・高度医療技術実施医療機関30(区分) + hiadhpcode31: str # 先端医療・高度医療技術実施医療機関31(コード) + hiadhpkind31: str # 先端医療・高度医療技術実施医療機関31(区分) + hiadhpcode32: str # 先端医療・高度医療技術実施医療機関32(コード) + hiadhpkind32: str # 先端医療・高度医療技術実施医療機関32(区分) + hiadhpcode33: str # 先端医療・高度医療技術実施医療機関33(コード) + hiadhpkind33: str # 先端医療・高度医療技術実施医療機関33(区分) + hiadhpcode34: str # 先端医療・高度医療技術実施医療機関34(コード) + hiadhpkind34: str # 先端医療・高度医療技術実施医療機関34(区分) + hiadhpcode35: str # 先端医療・高度医療技術実施医療機関35(コード) + hiadhpkind35: str # 先端医療・高度医療技術実施医療機関35(区分) + hiadhpcode36: str # 先端医療・高度医療技術実施医療機関36(コード) + hiadhpkind36: str # 先端医療・高度医療技術実施医療機関36(区分) + hiadhpcode37: str # 先端医療・高度医療技術実施医療機関37(コード) + hiadhpkind37: str # 先端医療・高度医療技術実施医療機関37(区分) + hiadhpcode38: str # 先端医療・高度医療技術実施医療機関38(コード) + hiadhpkind38: str # 先端医療・高度医療技術実施医療機関38(区分) + hiadhpcode39: str # 先端医療・高度医療技術実施医療機関39(コード) + hiadhpkind39: str # 先端医療・高度医療技術実施医療機関39(区分) + hiadhpcode40: str # 先端医療・高度医療技術実施医療機関40(コード) + hiadhpkind40: str # 先端医療・高度医療技術実施医療機関40(区分) hitechhp_flag: str # 先端医療機器フラグ - hitechhp_kind1: str # 先端医療機器1 - hitechhp_kind2: str # 先端医療機器2 - hitechhp_kind3: str # 先端医療機器3 - hitechhp_kind4: str # 先端医療機器4 - hitechhp_kind5: str # 先端医療機器5 - hitechhp_kind6: str # 先端医療機器6 - hitechhp_kind7: str # 先端医療機器7 - hitechhp_kind8: str # 先端医療機器8 - hitechhp_kind9: str # 先端医療機器9 - hitechhp_kind10: str # 先端医療機器10 - hitechhp_kind11: str # 先端医療機器11 - hitechhp_kind12: str # 先端医療機器12 - hitechhp_kind13: str # 先端医療機器13 - hitechhp_kind14: str # 先端医療機器14 - hitechhp_kind15: str # 先端医療機器15 - hitechhp_kind16: str # 先端医療機器16 - hitechhp_kind17: str # 先端医療機器17 - hitechhp_kind18: str # 先端医療機器18 - hitechhp_kind19: str # 先端医療機器19 - hitechhp_kind20: str # 先端医療機器20 + hitechhpkind1: str # 先端医療機器1 + hitechhpkind2: str # 先端医療機器2 + hitechhpkind3: str # 先端医療機器3 + hitechhpkind4: str # 先端医療機器4 + hitechhpkind5: str # 先端医療機器5 + hitechhpkind6: str # 先端医療機器6 + hitechhpkind7: str # 先端医療機器7 + hitechhpkind8: str # 先端医療機器8 + hitechhpkind9: str # 先端医療機器9 + hitechhpkind10: str # 先端医療機器10 + hitechhpkind11: str # 先端医療機器11 + hitechhpkind12: str # 先端医療機器12 + hitechhpkind13: str # 先端医療機器13 + hitechhpkind14: str # 先端医療機器14 + hitechhpkind15: str # 先端医療機器15 + hitechhpkind16: str # 先端医療機器16 + hitechhpkind17: str # 先端医療機器17 + hitechhpkind18: str # 先端医療機器18 + hitechhpkind19: str # 先端医療機器19 + hitechhpkind20: str # 先端医療機器20 policy_medical_flag: str # 政策医療フラグ - policy_medical_code01: str # 政策医療1(コード) - policy_medical_content01: str # 政策医療1(区分) - policy_medical_code02: str # 政策医療2(コード) - policy_medical_content02: str # 政策医療2(区分) - policy_medical_code03: str # 政策医療3(コード) - policy_medical_content03: str # 政策医療3(区分) - policy_medical_code04: str # 政策医療4(コード) - policy_medical_content04: str # 政策医療4(区分) - policy_medical_code05: str # 政策医療5(コード) - policy_medical_content05: str # 政策医療5(区分) - policy_medical_code06: str # 政策医療6(コード) - policy_medical_content06: str # 政策医療6(区分) - policy_medical_code07: str # 政策医療7(コード) - policy_medical_content07: str # 政策医療7(区分) - policy_medical_code08: str # 政策医療8(コード) - policy_medical_content08: str # 政策医療8(区分) - policy_medical_code09: str # 政策医療9(コード) - policy_medical_content09: str # 政策医療9(区分) - policy_medical_code10: str # 政策医療10(コード) - policy_medical_content10: str # 政策医療10(区分) - policy_medical_code11: str # 政策医療11(コード) - policy_medical_content11: str # 政策医療11(区分) - policy_medical_code12: str # 政策医療12(コード) - policy_medical_content12: str # 政策医療12(区分) - policy_medical_code13: str # 政策医療13(コード) - policy_medical_content13: str # 政策医療13(区分) - policy_medical_code14: str # 政策医療14(コード) - policy_medical_content14: str # 政策医療14(区分) - policy_medical_code15: str # 政策医療15(コード) - policy_medical_content15: str # 政策医療15(区分) - policy_medical_code16: str # 政策医療16(コード) - policy_medical_content16: str # 政策医療16(区分) - policy_medical_code17: str # 政策医療17(コード) - policy_medical_content17: str # 政策医療17(区分) - policy_medical_code18: str # 政策医療18(コード) - policy_medical_content18: str # 政策医療18(区分) - policy_medical_code19: str # 政策医療19(コード) - policy_medical_content19: str # 政策医療19(区分) - policy_medical_code20: str # 政策医療20(コード) - policy_medical_content20: str # 政策医療20(区分) + policymedical_code01: str # 政策医療1(コード) + policymedical_content01: str # 政策医療1(区分) + policymedical_code02: str # 政策医療2(コード) + policymedical_content02: str # 政策医療2(区分) + policymedical_code03: str # 政策医療3(コード) + policymedical_content03: str # 政策医療3(区分) + policymedical_code04: str # 政策医療4(コード) + policymedical_content04: str # 政策医療4(区分) + policymedical_code05: str # 政策医療5(コード) + policymedical_content05: str # 政策医療5(区分) + policymedical_code06: str # 政策医療6(コード) + policymedical_content06: str # 政策医療6(区分) + policymedical_code07: str # 政策医療7(コード) + policymedical_content07: str # 政策医療7(区分) + policymedical_code08: str # 政策医療8(コード) + policymedical_content08: str # 政策医療8(区分) + policymedical_code09: str # 政策医療9(コード) + policymedical_content09: str # 政策医療9(区分) + policymedical_code10: str # 政策医療10(コード) + policymedical_content10: str # 政策医療10(区分) + policymedical_code11: str # 政策医療11(コード) + policymedical_content11: str # 政策医療11(区分) + policymedical_code12: str # 政策医療12(コード) + policymedical_content12: str # 政策医療12(区分) + policymedical_code13: str # 政策医療13(コード) + policymedical_content13: str # 政策医療13(区分) + policymedical_code14: str # 政策医療14(コード) + policymedical_content14: str # 政策医療14(区分) + policymedical_code15: str # 政策医療15(コード) + policymedical_content15: str # 政策医療15(区分) + policymedical_code16: str # 政策医療16(コード) + policymedical_content16: str # 政策医療16(区分) + policymedical_code17: str # 政策医療17(コード) + policymedical_content17: str # 政策医療17(区分) + policymedical_code18: str # 政策医療18(コード) + policymedical_content18: str # 政策医療18(区分) + policymedical_code19: str # 政策医療19(コード) + policymedical_content19: str # 政策医療19(区分) + policymedical_code20: str # 政策医療20(コード) + policymedical_content20: str # 政策医療20(区分) visitcarest_flag: str # 訪問看護ステーションフラグ visitcarestation_id: str # 訪問看護ステーション_施設コード(レコードID) visitcarestation_code: str # 訪問看護ステーション_施設コード(施設コード) @@ -509,150 +509,150 @@ class ComInstAtt(UltmarcTable): self.sphealth_guidance = record[157].strip() self.hiadhp_flag = record[158].strip() - self.hiadhp_code1 = record[159].strip() - self.hiadhp_kind1 = record[160].strip() - self.hiadhp_code2 = record[161].strip() - self.hiadhp_kind2 = record[162].strip() - self.hiadhp_code3 = record[163].strip() - self.hiadhp_kind3 = record[164].strip() - self.hiadhp_code4 = record[165].strip() - self.hiadhp_kind4 = record[166].strip() - self.hiadhp_code5 = record[167].strip() - self.hiadhp_kind5 = record[168].strip() - self.hiadhp_code6 = record[169].strip() - self.hiadhp_kind6 = record[170].strip() - self.hiadhp_code7 = record[171].strip() - self.hiadhp_kind7 = record[172].strip() - self.hiadhp_code8 = record[173].strip() - self.hiadhp_kind8 = record[174].strip() - self.hiadhp_code9 = record[175].strip() - self.hiadhp_kind9 = record[176].strip() - self.hiadhp_code10 = record[177].strip() - self.hiadhp_kind10 = record[178].strip() - self.hiadhp_code11 = record[179].strip() - self.hiadhp_kind11 = record[180].strip() - self.hiadhp_code12 = record[181].strip() - self.hiadhp_kind12 = record[182].strip() - self.hiadhp_code13 = record[183].strip() - self.hiadhp_kind13 = record[184].strip() - self.hiadhp_code14 = record[185].strip() - self.hiadhp_kind14 = record[186].strip() - self.hiadhp_code15 = record[187].strip() - self.hiadhp_kind15 = record[188].strip() - self.hiadhp_code16 = record[189].strip() - self.hiadhp_kind16 = record[190].strip() - self.hiadhp_code17 = record[191].strip() - self.hiadhp_kind17 = record[192].strip() - self.hiadhp_code18 = record[193].strip() - self.hiadhp_kind18 = record[194].strip() - self.hiadhp_code19 = record[195].strip() - self.hiadhp_kind19 = record[196].strip() - self.hiadhp_code20 = record[197].strip() - self.hiadhp_kind20 = record[198].strip() - self.hiadhp_code21 = record[199].strip() - self.hiadhp_kind21 = record[200].strip() - self.hiadhp_code22 = record[201].strip() - self.hiadhp_kind22 = record[202].strip() - self.hiadhp_code23 = record[203].strip() - self.hiadhp_kind23 = record[204].strip() - self.hiadhp_code24 = record[205].strip() - self.hiadhp_kind24 = record[206].strip() - self.hiadhp_code25 = record[207].strip() - self.hiadhp_kind25 = record[208].strip() - self.hiadhp_code26 = record[209].strip() - self.hiadhp_kind26 = record[210].strip() - self.hiadhp_code27 = record[211].strip() - self.hiadhp_kind27 = record[212].strip() - self.hiadhp_code28 = record[213].strip() - self.hiadhp_kind28 = record[214].strip() - self.hiadhp_code29 = record[215].strip() - self.hiadhp_kind29 = record[216].strip() - self.hiadhp_code30 = record[217].strip() - self.hiadhp_kind30 = record[218].strip() - self.hiadhp_code31 = record[219].strip() - self.hiadhp_kind31 = record[220].strip() - self.hiadhp_code32 = record[221].strip() - self.hiadhp_kind32 = record[222].strip() - self.hiadhp_code33 = record[223].strip() - self.hiadhp_kind33 = record[224].strip() - self.hiadhp_code34 = record[225].strip() - self.hiadhp_kind34 = record[226].strip() - self.hiadhp_code35 = record[227].strip() - self.hiadhp_kind35 = record[228].strip() - self.hiadhp_code36 = record[229].strip() - self.hiadhp_kind36 = record[230].strip() - self.hiadhp_code37 = record[231].strip() - self.hiadhp_kind37 = record[232].strip() - self.hiadhp_code38 = record[233].strip() - self.hiadhp_kind38 = record[234].strip() - self.hiadhp_code39 = record[235].strip() - self.hiadhp_kind39 = record[236].strip() - self.hiadhp_code40 = record[237].strip() - self.hiadhp_kind40 = record[238].strip() + self.hiadhpcode1 = record[159].strip() + self.hiadhpkind1 = record[160].strip() + self.hiadhpcode2 = record[161].strip() + self.hiadhpkind2 = record[162].strip() + self.hiadhpcode3 = record[163].strip() + self.hiadhpkind3 = record[164].strip() + self.hiadhpcode4 = record[165].strip() + self.hiadhpkind4 = record[166].strip() + self.hiadhpcode5 = record[167].strip() + self.hiadhpkind5 = record[168].strip() + self.hiadhpcode6 = record[169].strip() + self.hiadhpkind6 = record[170].strip() + self.hiadhpcode7 = record[171].strip() + self.hiadhpkind7 = record[172].strip() + self.hiadhpcode8 = record[173].strip() + self.hiadhpkind8 = record[174].strip() + self.hiadhpcode9 = record[175].strip() + self.hiadhpkind9 = record[176].strip() + self.hiadhpcode10 = record[177].strip() + self.hiadhpkind10 = record[178].strip() + self.hiadhpcode11 = record[179].strip() + self.hiadhpkind11 = record[180].strip() + self.hiadhpcode12 = record[181].strip() + self.hiadhpkind12 = record[182].strip() + self.hiadhpcode13 = record[183].strip() + self.hiadhpkind13 = record[184].strip() + self.hiadhpcode14 = record[185].strip() + self.hiadhpkind14 = record[186].strip() + self.hiadhpcode15 = record[187].strip() + self.hiadhpkind15 = record[188].strip() + self.hiadhpcode16 = record[189].strip() + self.hiadhpkind16 = record[190].strip() + self.hiadhpcode17 = record[191].strip() + self.hiadhpkind17 = record[192].strip() + self.hiadhpcode18 = record[193].strip() + self.hiadhpkind18 = record[194].strip() + self.hiadhpcode19 = record[195].strip() + self.hiadhpkind19 = record[196].strip() + self.hiadhpcode20 = record[197].strip() + self.hiadhpkind20 = record[198].strip() + self.hiadhpcode21 = record[199].strip() + self.hiadhpkind21 = record[200].strip() + self.hiadhpcode22 = record[201].strip() + self.hiadhpkind22 = record[202].strip() + self.hiadhpcode23 = record[203].strip() + self.hiadhpkind23 = record[204].strip() + self.hiadhpcode24 = record[205].strip() + self.hiadhpkind24 = record[206].strip() + self.hiadhpcode25 = record[207].strip() + self.hiadhpkind25 = record[208].strip() + self.hiadhpcode26 = record[209].strip() + self.hiadhpkind26 = record[210].strip() + self.hiadhpcode27 = record[211].strip() + self.hiadhpkind27 = record[212].strip() + self.hiadhpcode28 = record[213].strip() + self.hiadhpkind28 = record[214].strip() + self.hiadhpcode29 = record[215].strip() + self.hiadhpkind29 = record[216].strip() + self.hiadhpcode30 = record[217].strip() + self.hiadhpkind30 = record[218].strip() + self.hiadhpcode31 = record[219].strip() + self.hiadhpkind31 = record[220].strip() + self.hiadhpcode32 = record[221].strip() + self.hiadhpkind32 = record[222].strip() + self.hiadhpcode33 = record[223].strip() + self.hiadhpkind33 = record[224].strip() + self.hiadhpcode34 = record[225].strip() + self.hiadhpkind34 = record[226].strip() + self.hiadhpcode35 = record[227].strip() + self.hiadhpkind35 = record[228].strip() + self.hiadhpcode36 = record[229].strip() + self.hiadhpkind36 = record[230].strip() + self.hiadhpcode37 = record[231].strip() + self.hiadhpkind37 = record[232].strip() + self.hiadhpcode38 = record[233].strip() + self.hiadhpkind38 = record[234].strip() + self.hiadhpcode39 = record[235].strip() + self.hiadhpkind39 = record[236].strip() + self.hiadhpcode40 = record[237].strip() + self.hiadhpkind40 = record[238].strip() self.hitechhp_flag = record[239].strip() - self.hitechhp_kind1 = record[240].strip() - self.hitechhp_kind2 = record[241].strip() - self.hitechhp_kind3 = record[242].strip() - self.hitechhp_kind4 = record[243].strip() - self.hitechhp_kind5 = record[244].strip() - self.hitechhp_kind6 = record[245].strip() - self.hitechhp_kind7 = record[246].strip() - self.hitechhp_kind8 = record[247].strip() - self.hitechhp_kind9 = record[248].strip() - self.hitechhp_kind10 = record[249].strip() - self.hitechhp_kind11 = record[250].strip() - self.hitechhp_kind12 = record[251].strip() - self.hitechhp_kind13 = record[252].strip() - self.hitechhp_kind14 = record[253].strip() - self.hitechhp_kind15 = record[254].strip() - self.hitechhp_kind16 = record[255].strip() - self.hitechhp_kind17 = record[256].strip() - self.hitechhp_kind18 = record[257].strip() - self.hitechhp_kind19 = record[258].strip() - self.hitechhp_kind20 = record[259].strip() + self.hitechhpkind1 = record[240].strip() + self.hitechhpkind2 = record[241].strip() + self.hitechhpkind3 = record[242].strip() + self.hitechhpkind4 = record[243].strip() + self.hitechhpkind5 = record[244].strip() + self.hitechhpkind6 = record[245].strip() + self.hitechhpkind7 = record[246].strip() + self.hitechhpkind8 = record[247].strip() + self.hitechhpkind9 = record[248].strip() + self.hitechhpkind10 = record[249].strip() + self.hitechhpkind11 = record[250].strip() + self.hitechhpkind12 = record[251].strip() + self.hitechhpkind13 = record[252].strip() + self.hitechhpkind14 = record[253].strip() + self.hitechhpkind15 = record[254].strip() + self.hitechhpkind16 = record[255].strip() + self.hitechhpkind17 = record[256].strip() + self.hitechhpkind18 = record[257].strip() + self.hitechhpkind19 = record[258].strip() + self.hitechhpkind20 = record[259].strip() self.policy_medical_flag = record[260].strip() - self.policy_medical_code01 = record[261].strip() - self.policy_medical_content01 = record[262].strip() - self.policy_medical_code02 = record[263].strip() - self.policy_medical_content02 = record[264].strip() - self.policy_medical_code03 = record[265].strip() - self.policy_medical_content03 = record[266].strip() - self.policy_medical_code04 = record[267].strip() - self.policy_medical_content04 = record[268].strip() - self.policy_medical_code05 = record[269].strip() - self.policy_medical_content05 = record[270].strip() - self.policy_medical_code06 = record[271].strip() - self.policy_medical_content06 = record[272].strip() - self.policy_medical_code07 = record[273].strip() - self.policy_medical_content07 = record[274].strip() - self.policy_medical_code08 = record[275].strip() - self.policy_medical_content08 = record[276].strip() - self.policy_medical_code09 = record[277].strip() - self.policy_medical_content09 = record[278].strip() - self.policy_medical_code10 = record[279].strip() - self.policy_medical_content10 = record[280].strip() - self.policy_medical_code11 = record[281].strip() - self.policy_medical_content11 = record[282].strip() - self.policy_medical_code12 = record[283].strip() - self.policy_medical_content12 = record[284].strip() - self.policy_medical_code13 = record[285].strip() - self.policy_medical_content13 = record[286].strip() - self.policy_medical_code14 = record[287].strip() - self.policy_medical_content14 = record[288].strip() - self.policy_medical_code15 = record[289].strip() - self.policy_medical_content15 = record[290].strip() - self.policy_medical_code16 = record[291].strip() - self.policy_medical_content16 = record[292].strip() - self.policy_medical_code17 = record[293].strip() - self.policy_medical_content17 = record[294].strip() - self.policy_medical_code18 = record[295].strip() - self.policy_medical_content18 = record[296].strip() - self.policy_medical_code19 = record[297].strip() - self.policy_medical_content19 = record[298].strip() - self.policy_medical_code20 = record[299].strip() - self.policy_medical_content20 = record[300].strip() + self.policymedical_code01 = record[261].strip() + self.policymedical_content01 = record[262].strip() + self.policymedical_code02 = record[263].strip() + self.policymedical_content02 = record[264].strip() + self.policymedical_code03 = record[265].strip() + self.policymedical_content03 = record[266].strip() + self.policymedical_code04 = record[267].strip() + self.policymedical_content04 = record[268].strip() + self.policymedical_code05 = record[269].strip() + self.policymedical_content05 = record[270].strip() + self.policymedical_code06 = record[271].strip() + self.policymedical_content06 = record[272].strip() + self.policymedical_code07 = record[273].strip() + self.policymedical_content07 = record[274].strip() + self.policymedical_code08 = record[275].strip() + self.policymedical_content08 = record[276].strip() + self.policymedical_code09 = record[277].strip() + self.policymedical_content09 = record[278].strip() + self.policymedical_code10 = record[279].strip() + self.policymedical_content10 = record[280].strip() + self.policymedical_code11 = record[281].strip() + self.policymedical_content11 = record[282].strip() + self.policymedical_code12 = record[283].strip() + self.policymedical_content12 = record[284].strip() + self.policymedical_code13 = record[285].strip() + self.policymedical_content13 = record[286].strip() + self.policymedical_code14 = record[287].strip() + self.policymedical_content14 = record[288].strip() + self.policymedical_code15 = record[289].strip() + self.policymedical_content15 = record[290].strip() + self.policymedical_code16 = record[291].strip() + self.policymedical_content16 = record[292].strip() + self.policymedical_code17 = record[293].strip() + self.policymedical_content17 = record[294].strip() + self.policymedical_code18 = record[295].strip() + self.policymedical_content18 = record[296].strip() + self.policymedical_code19 = record[297].strip() + self.policymedical_content19 = record[298].strip() + self.policymedical_code20 = record[299].strip() + self.policymedical_content20 = record[300].strip() self.visitcarest_flag = record[301].strip() self.visitcarestation_id = record[302].strip() From b2e365871322852163f4b9b607cffe46619296ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 13:56:27 +0900 Subject: [PATCH 43/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E7=9F=AD=E6=9C=9F=E6=BB=9E=E5=9C=A8=E6=89=8B=E8=A1=93?= =?UTF-8?q?=EF=BC=89=EF=BC=88=E5=B0=82=E9=96=80=E5=A4=96=E6=9D=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_prefc_med_dis_treat_mapper.py | 2 +- .../com_prefc_med_sojourn_ope_mapper.py | 95 +++++++ .../com_prefc_med_sp_outpat_mapper.py | 125 +++++++++ .../tables/com_prefc_med_sojourn_ope.py | 25 ++ .../tables/com_prefc_med_sp_outpat.py | 29 +++ .../ultmarc_table_mapper_factory.py | 8 +- .../com_prefc_med_sojourn_ope/__init__.py | 0 .../com_prefc_med_sojourn_ope_delete.csv | 3 + .../com_prefc_med_sojourn_ope_insert.csv | 7 + .../com_prefc_med_sojourn_ope_update.csv | 4 + ...om_prefc_med_sojourn_ope_before_delete.csv | 10 + ...om_prefc_med_sojourn_ope_before_update.csv | 8 + ...xpect_com_prefc_med_sojourn_ope_delete.csv | 7 + ...xpect_com_prefc_med_sojourn_ope_insert.csv | 8 + ...xpect_com_prefc_med_sojourn_ope_update.csv | 10 + .../test_com_prefc_med_sojourn_ope_mapper.py | 238 ++++++++++++++++++ .../com_prefc_med_sp_outpat/__init__.py | 0 .../com_prefc_med_sp_outpat_delete.csv | 1 + .../com_prefc_med_sp_outpat_insert.csv | 7 + .../com_prefc_med_sp_outpat_update.csv | 6 + ..._com_prefc_med_sp_outpat_before_delete.csv | 7 + ..._com_prefc_med_sp_outpat_before_update.csv | 9 + .../expect_com_prefc_med_sp_outpat_delete.csv | 6 + .../expect_com_prefc_med_sp_outpat_insert.csv | 8 + .../expect_com_prefc_med_sp_outpat_update.csv | 9 + .../test_com_prefc_med_sp_outpat_mapper.py | 238 ++++++++++++++++++ 26 files changed, 867 insertions(+), 3 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py index 42193466..26486dd3 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py @@ -95,7 +95,7 @@ class ComPrefcMedDisTreatMapper(UltmarcTableMapper): return self.INSERT_QUERY # 存在する場合はUpdate - # 病床数が空の場合は更新しない + # 前年件数が空の場合は更新しない if self.record.pre_num is not None: if self.record.pre_num == '@': self.query_parameter['pre_num'] = None diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py new file mode 100644 index 00000000..f2c84587 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sojourn_ope_mapper.py @@ -0,0 +1,95 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sojourn_ope import ComPrefcMedSojournOpe + + +class ComPrefcMedSojournOpeMapper(UltmarcTableMapper): + """レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_sojourn_ope + ( + dcf_dsf_inst_cd, + cos_surgery_code, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :cos_surgery_code, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_sojourn_ope + SET + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + cos_surgery_code = :cos_surgery_code + """ + + record: ComPrefcMedSojournOpe + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedSojournOpe) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py new file mode 100644 index 00000000..182616d5 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_sp_outpat_mapper.py @@ -0,0 +1,125 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sp_outpat import ComPrefcMedSpOutpat + + +class ComPrefcMedSpOutpatMapper(UltmarcTableMapper): + """レイアウト区分136: COM_都道府県医療機能情報(専門外来)""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_prefc_med_sp_outpat + ( + dcf_dsf_inst_cd, + specialclinic_name, + sort_key, + sectsub_cd, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :dcfdsf_inst_code, + :specialclinic_name, + :sort_key, + :sectsub_cd, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ変更用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_prefc_med_sp_outpat + SET + {update_columns} + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcfdsf_inst_code + AND + specialclinic_name = :specialclinic_name + """ + + record: ComPrefcMedSpOutpat + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPrefcMedSpOutpat) + 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): + # 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除 + if self.record.maint_flag == 'B' and self.record.adddel_div == '1': + self.queries.append(self.PHYSICAL_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 + return self.__make_update_query() + + def __make_update_query(self): + set_clauses = [] # 設定項目 + + # ソートキー + if len(self.record.sort_key) > 0: + set_clauses.append('sort_key = :sort_key') + + # 分類補助コード + if len(self.record.sectsub_cd) > 0: + set_clauses.append('sectsub_cd = :sectsub_cd') + if self.record.sectsub_cd == '@': + self.query_parameter['sectsub_cd'] = None + + update_columns = ','.join(set_clauses) + # 何も更新項目が無い場合はNoneとする(更新処理は行わない) + if len(update_columns) == 0: + return None + else: + # 末尾にカンマを付けてSET句を完成させる + update_columns += ',' + update_query = self.UPDATE_QUERY.format( + update_columns=update_columns + ) + return update_query diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py new file mode 100644 index 00000000..96b3ad0a --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py @@ -0,0 +1,25 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedSojournOpe(UltmarcTable): + """レイアウト区分132: COM_都道府県医療機能情報(短期滞在手術)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + cos_surgery_code: str # 短期滞在手術コード + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.cos_surgery_code = record[5].strip() + self.adddel_div = record[6].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py new file mode 100644 index 00000000..c26fc8e0 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sp_outpat.py @@ -0,0 +1,29 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComPrefcMedSpOutpat(UltmarcTable): + """レイアウト区分136: COM_都道府県医療機能情報(専門外来)""" + dcfhp_id: str # DCFコード(レコードID) + dcfhp_code: str # DCFコード(施設コード) + dcfhp_yobi: str # DCFコード(予備) + specialclinic_name: str # 専門外来名 + sort_key: str # ソートキー + sectsub_cd: str # 分類補助コード + adddel_div: str # 追加削除区分 + maint_flag: str # 修正区分 + + dcfdsf_inst_code: str # DCFDSF施設コード + + def __init__(self, record: list[str]): + super().__init__(record) + self.dcfhp_id = record[1].strip() + self.dcfhp_code = record[2].strip() + self.dcfhp_yobi = record[3].strip() + self.maint_flag = record[4].strip() + self.specialclinic_name = record[5].strip() + self.adddel_div = record[6].strip() + self.sort_key = record[9].strip() + self.sectsub_cd = record[10].strip() + + # DCFDSF施設コード + self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi]) 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 48a20d38..04626286 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 @@ -36,6 +36,10 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_equpment_ ComPrefcMedEqupmentMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_dis_treat_mapper import \ ComPrefcMedDisTreatMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sojourn_ope_mapper import \ + ComPrefcMedSojournOpeMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sp_outpat_mapper import \ + ComPrefcMedSpOutpatMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \ ComCopHpMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ @@ -67,9 +71,9 @@ COM_TABLE_LIST = { # COM_都道府県医療機能情報(疾患治療) "134": ComPrefcMedDisTreatMapper, # COM_都道府県医療機能情報(短期滞在手術) - "135": NullMapper, + "135": ComPrefcMedSojournOpeMapper, # COM_都道府県医療機能情報(専門外来) - "136": NullMapper, + "136": ComPrefcMedSpOutpatMapper, # COM_診療科目 "001": NullMapper, # COM_病院種別 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv new file mode 100644 index 00000000..0e25331e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_delete.csv @@ -0,0 +1,3 @@ +"135","00","9901679","","B","101","1","20141210","20141213" +"135","00","9901679","","B","102","1","20141209","20141213" +"135","00","9901679","","B","111","1","20141208","20141213" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv new file mode 100644 index 00000000..daf6f1f9 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_insert.csv @@ -0,0 +1,7 @@ +"135","00","9900146","","A","213","2","20141113","20141114" +"135","00","9900146","","A","214","2","20141113","20141114" +"135","00","9900146","","A","215","2","20141113","20141114" +"135","00","9901679","","A","101","2","20141113","20141114" +"135","00","9901679","","A","102","2","20141113","20141114" +"135","00","9929798","","A","110","2","20141113","20141114" +"135","00","9929798","","A","111","2","20141113","20141114" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv new file mode 100644 index 00000000..5c75d14c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/com_prefc_med_sojourn_ope_update.csv @@ -0,0 +1,4 @@ +"135","00","9901679","","B","101","2","20141113","20141114" +"135","00","9901679","","B","111","2","20141113","20141114" +"135","00","9929798","","B","111","2","20141113","20141114" +"135","00","9929798","","B","211","2","20141113","20141114" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv new file mode 100644 index 00000000..90f5e825 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_delete.csv @@ -0,0 +1,10 @@ +"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","111","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv new file mode 100644 index 00000000..72dda2ae --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/db_com_prefc_med_sojourn_ope_before_update.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv new file mode 100644 index 00000000..5adfd71e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" +"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv new file mode 100644 index 00000000..995277be --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_insert.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","213","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009900146","214","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009900146","215","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009901679","101","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009901679","102","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009929798","110","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" +"009929798","111","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv new file mode 100644 index 00000000..d4377bc4 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/expect_com_prefc_med_sojourn_ope_update.csv @@ -0,0 +1,10 @@ +"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","101","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009901679","111","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp" +"009929798","111","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" +"009929798","211","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py new file mode 100644 index 00000000..ad87a43a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sojourn_ope/test_com_prefc_med_sojourn_ope_mapper.py @@ -0,0 +1,238 @@ +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_prefc_med_sojourn_ope_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 TestComPrefcMedSojournOpeMapper: + """レイアウト区分135: 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_prefc_med_sojourn_ope_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, 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_prefc_med_sojourn_ope_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_prefc_med_sojourn_ope_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'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_prefc_med_sojourn_ope_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sojourn_ope', + 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_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, 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_prefc_med_sojourn_ope_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_prefc_med_sojourn_ope_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'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_prefc_med_sojourn_ope_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sojourn_ope', + 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_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, 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_prefc_med_sojourn_ope_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sojourn_ope + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + cos_surgery_code = :cos_surgery_code + """ + for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_cos_surgery_code}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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}が、期待値以降であること' diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv new file mode 100644 index 00000000..4ce0fddb --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_delete.csv @@ -0,0 +1 @@ +"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","20141211","20141213","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv new file mode 100644 index 00000000..ae233f9b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_insert.csv @@ -0,0 +1,7 @@ +"136","00","9901649","","A","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","030" +"136","00","9904439","","A","テスト アルコール症専門外来","2","20141113","20141114","1","019" +"136","00","9904439","","A","テスト メンタルヘルス専門外来","2","20141113","20141114","7","019" +"136","00","9904439","","A","テスト 禁煙専門外来","2","20141113","20141114","2","001" +"136","00","9904439","","A","テスト 糖尿病外来","2","20141113","20141114","7","006" +"136","00","9929798","","A","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","014" +"136","99","9999999","99","A","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","2","20141113","20141114","111","222" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv new file mode 100644 index 00000000..e157aee6 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/com_prefc_med_sp_outpat_update.csv @@ -0,0 +1,6 @@ +"136","00","9901649","","B","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","019" +"136","00","9904439","","B","テスト 禁煙専門外来","2","20141113","20141114","2","@" +"136","00","9904439","","B","テスト 糖尿病外来","2","20141113","20141114","7","001" +"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","@" +"136","99","9999999","11","B","あいうえお","2","20141113","20141114","","999" +"136","99","9999999","99","B","あいうえお","2","20141113","20141114","","" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv new file mode 100644 index 00000000..6e0c952c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_delete.csv @@ -0,0 +1,7 @@ +"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv new file mode 100644 index 00000000..3266575e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/db_com_prefc_med_sp_outpat_before_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","テスト 小児 内分泌・腎臓外来","5","030","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","001","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","006","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"99999999911","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv new file mode 100644 index 00000000..6184e1ce --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_delete.csv @@ -0,0 +1,6 @@ +"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" +"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv new file mode 100644 index 00000000..26abd18a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_insert.csv @@ -0,0 +1,8 @@ +"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","テスト 小児 内分泌・腎臓外来","5","030","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"009904439","テスト アルコール症専門外来","1","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"009904439","テスト メンタルヘルス専門外来","7","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"009904439","テスト 禁煙専門外来","2","001","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"009904439","テスト 糖尿病外来","7","006","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" +"99999999999","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","111","222","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv new file mode 100644 index 00000000..33d5e48f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/expect_com_prefc_med_sp_outpat_update.csv @@ -0,0 +1,9 @@ +"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" +"009904439","テスト 禁煙専門外来","2","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009904439","テスト 糖尿病外来","7","001","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper" +"99999999911","あいうえお","123","999","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:57:12","com_prefc_med_sp_outpat_mapper" +"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py new file mode 100644 index 00000000..04932cf8 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_prefc_med_sp_outpat/test_com_prefc_med_sp_outpat_mapper.py @@ -0,0 +1,238 @@ +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_prefc_med_sp_outpat_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 TestComPrefcMedSpOutpatMapper: + """レイアウト区分136: 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_prefc_med_sp_outpat_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, 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_prefc_med_sp_outpat_insert.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_prefc_med_sp_outpat_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'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_prefc_med_sp_outpat_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sp_outpat', + 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_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, 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_prefc_med_sp_outpat_update.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_prefc_med_sp_outpat_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'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_prefc_med_sp_outpat_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_prefc_med_sp_outpat', + 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_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, 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_prefc_med_sp_outpat_delete.csv')) + primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list] + primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_prefc_med_sp_outpat + WHERE + dcf_dsf_inst_cd = :dcf_dsf_inst_cd + AND + specialclinic_name = :specialclinic_name + """ + for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_dcf_dsf_inst_cd, **param_specialclinic_name}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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}が、期待値以降であること' From d0076bceb95e23fe6982d1258d5d0399c3548a2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 15:54:17 +0900 Subject: [PATCH 44/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E5=8C=BB=E7=99=82=E5=9C=8F=EF=BC=BF=E9=83=BD=E9=81=93?= =?UTF-8?q?=E5=BA=9C=E7=9C=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_med_prefc_mapper.py | 129 ++++++++++ .../utmp_tables/tables/com_med_prefc.py | 48 ++++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_med_prefc/__init__.py | 0 .../com_med_prefc/com_med_prefc_delete.csv | 3 + .../com_med_prefc/com_med_prefc_insert.csv | 4 + .../com_med_prefc/com_med_prefc_update.csv | 3 + .../db_com_med_prefc_before_delete.csv | 4 + .../db_com_med_prefc_before_update.csv | 4 + .../expect_com_med_prefc_delete.csv | 2 + .../expect_com_med_prefc_insert.csv | 5 + .../expect_com_med_prefc_update.csv | 4 + .../test_com_med_prefc_mapper.py | 220 ++++++++++++++++++ 13 files changed, 429 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py new file mode 100644 index 00000000..475a6b9a --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_prefc_mapper.py @@ -0,0 +1,129 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_prefc import ComMedPrefc + + +class ComMedPrefcMapper(UltmarcTableMapper): + """レイアウト区分121: COM_医療圏都道府県 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_prefc + WHERE + pref_code = :pref_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_prefc + ( + pref_code, + rev_date, + post_date, + psy_bednumtg, + psy_bednumgen, + psy_bednumdate, + psy_eqbednum, + tb_bednumtg, + tb_bednumgen, + tb_bednumdate, + tb_eqbednum, + inf_bednumtg, + inf_bednumgen, + inf_bednumdate, + inf_eqbednum, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :pref_code, + :rev_date, + :post_date, + :psy_bednum_tg, + :psy_bednum_gen, + :psy_bednum_date, + :psy_eqbed_num, + :tb_bednum_tg, + :tb_bednum_gen, + :tb_bednum_date, + :tb_eqbed_num, + :inf_bednum_tg, + :inf_bednum_gen, + :inf_bednum_date, + :inf_eqbed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_med_prefc + SET + rev_date = :rev_date, + post_date = :post_date, + psy_bednumtg = :psy_bednum_tg, + psy_bednumgen = :psy_bednum_gen, + psy_bednumdate = :psy_bednum_date, + psy_eqbednum = :psy_eqbed_num, + tb_bednumtg = :tb_bednum_tg, + tb_bednumgen = :tb_bednum_gen, + tb_bednumdate = :tb_bednum_date, + tb_eqbednum = :tb_eqbed_num, + inf_bednumtg = :inf_bednum_tg, + inf_bednumgen = :inf_bednum_gen, + inf_bednumdate = :inf_bednum_date, + inf_eqbednum = :inf_eqbed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + pref_code = :pref_code + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_med_prefc + WHERE + pref_code = :pref_code + """ + + record: ComMedPrefc + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedPrefc) + 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.maintflag == 'C': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py new file mode 100644 index 00000000..e08adc88 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_prefc.py @@ -0,0 +1,48 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedPrefc(UltmarcTable): + """レイアウト区分121: COM_医療圏都道府県""" + pref_code: str # 都道府県コード + rev_date: str # 医療圏メンテナンス年月日 + post_date: str # 公示年月日 + psy_bednum_tg: str # 精神_基準病床数 or 整備目標数 + psy_bednum_gen: str # 精神_既存病床数(病床数) + psy_bednum_date: str # 精神_既存病床数(年月日) + psy_eqbed_num: str # 精神_過不足病床数(差引) + tb_bednum_tg: str # 結核_基準病床数 or 整備目標数 + tb_bednum_gen: str # 結核_既存病床数(病床数) + tb_bednum_date: str # 結核_既存病床数(年月日) + tb_eqbed_num: str # 結核_過不足病床数(差引) + inf_bednum_tg: str # 感染症_基準病床数 or 整備目標数 + inf_bednum_gen: str # 感染症_既存病床数(病床数) + inf_bednum_date: str # 感染症_既存病床数(年月日) + inf_eqbed_num: str # 感染症_過不足病床数(差引) + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.pref_code = record[1] + self.maintflag = record[2] + self.rev_date = record[5] + self.post_date = record[6] + self.psy_bednum_tg = record[7].strip() + self.psy_bednum_gen = record[8].strip() + self.psy_bednum_date = record[9] + self.psy_eqbed_num = record[10] + self.tb_bednum_tg = record[11].strip() + self.tb_bednum_gen = record[12].strip() + self.tb_bednum_date = record[13] + self.tb_eqbed_num = record[14] + self.inf_bednum_tg = record[15].strip() + self.inf_bednum_gen = record[16].strip() + self.inf_bednum_date = record[17] + self.inf_eqbed_num = record[18] + + # decimal型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.psy_bednum_tg = self.psy_bednum_tg if len(self.psy_bednum_tg) > 0 else None + self.psy_bednum_gen = self.psy_bednum_gen if len(self.psy_bednum_gen) > 0 else None + self.tb_bednum_tg = self.tb_bednum_tg if len(self.tb_bednum_tg) > 0 else None + self.tb_bednum_gen = self.tb_bednum_gen if len(self.tb_bednum_gen) > 0 else None + self.inf_bednum_tg = self.inf_bednum_tg if len(self.inf_bednum_tg) > 0 else None + self.inf_bednum_gen = self.inf_bednum_gen if len(self.inf_bednum_gen) > 0 else None 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 479253dc..7a60ed63 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 @@ -34,6 +34,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_att_mapper imp ComInstAttMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \ ComCopHpMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper import \ + ComMedPrefcMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -103,7 +105,7 @@ COM_TABLE_LIST = { # COM_政策医療 "028": ComPolicyMedMapper, # COM_医療圏都道府県 - "121": NullMapper, + "121": ComMedPrefcMapper, # COM_医療圏3次マスタ "122": NullMapper, # COM_二次医療圏 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/__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_prefc/com_med_prefc_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv new file mode 100644 index 00000000..2416d338 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_delete.csv @@ -0,0 +1,3 @@ +"121","01","C","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","09","C","20141118","20141122","","","","","","","","","","","","","","" +"121","03","C","20141118","20141122","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv new file mode 100644 index 00000000..0f161d10 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_insert.csv @@ -0,0 +1,4 @@ +"121","01","A","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","02","A","20141118","20141122","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12" +"121","03","A","20141118","20141122","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0" +"121","99","A","","","20140101","20130329","123456","123456","20120930","1234567","123456","123456","20120930","1234567","123456","123465","20120930","1234567" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv new file mode 100644 index 00000000..0c5f5b39 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/com_med_prefc_update.csv @@ -0,0 +1,3 @@ +"121","01","A","20141118","20141122","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4" +"121","02","A","20141118","20141122","","","","","","","","","","","","","","" +"121","03","B","20141118","20141122","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv new file mode 100644 index 00000000..892066e1 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_delete.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" +"03","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv new file mode 100644 index 00000000..d5ea9119 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/db_com_med_prefc_before_update.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" +"02","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" +"03","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:00:05","clsComMedPrefc" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv new file mode 100644 index 00000000..891196ec --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_delete.csv @@ -0,0 +1,2 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2017/10/19 12:01:04","clsComMedPrefc" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv new file mode 100644 index 00000000..a6b694f7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_insert.csv @@ -0,0 +1,5 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"02","20160601","20130722","3870","4511","20130101","641","60","66","20130101","6","32","20","20130101","-12","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"03","20140101","20130329","4420","4454","20120930","34","30","137","20120930","107","40","40","20120930","0","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" +"99","20140101","20130329","123456","123456","20120930","1234567","123456","123456","20120930","1234567","123456","123465","20120930","1234567","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 12:00:05","com_med_prefc_mapper","2023/05/11 12:00:05","com_med_prefc_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv new file mode 100644 index 00000000..7d595e49 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/expect_com_med_prefc_update.csv @@ -0,0 +1,4 @@ +"pref_code","rev_date","post_date","psy_bednumtg","psy_bednumgen","psy_bednumdate","psy_eqbednum","tb_bednumtg","tb_bednumgen","tb_bednumdate","tb_eqbednum","inf_bednumtg","inf_bednumgen","inf_bednumdate","inf_eqbednum","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","20130501","20130329","18967","19615","20130201","648","143","205","20130201","62","98","94","20130201","-4","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" +"02","","","NULL","NULL","","","NULL","NULL","","","NULL","NULL","","","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" +"03","20170101","20170329","9420","9454","20170930","39","39","139","20170930","707","70","70","20170930","7","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 12:00:05","clsComMedPrefc","2023/05/11 12:01:04","com_med_prefc_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py new file mode 100644 index 00000000..495e1cca --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py @@ -0,0 +1,220 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_med_prefc_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 TestComMedPrefcMapper: + """レイアウト区分121: COM_医療圏都道府県""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # decimal型のカラム群 + decimal_columns = [ + 'psy_bednumtg', + 'psy_bednumgen', + 'tb_bednumtg', + 'tb_bednumgen', + 'inf_bednumtg', + 'inf_bednumgen' + ] + + @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_prefc_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, 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_prefc_insert.csv')) + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code IN ({','.join(primary_keys)})" + actual_data_list = self.db.execute_select(actual_select_sql) + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏都道府県テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_prefc_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'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_prefc_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_prefc', + 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_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, 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_prefc_update.csv')) + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code 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'] + self.decimal_columns + 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: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医療圏都道府県テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_med_prefc_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_prefc', {'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_prefc_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_prefc', + 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_prefc_mapper.ComMedPrefcMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_prefc_mapper.ComMedPrefcMapper, 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_prefc_delete.csv')) + primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code 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'] + self.decimal_columns + 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: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 022f164eb4df7e5d6366157f8d402e31eb488db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 15:55:24 +0900 Subject: [PATCH 45/57] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py index 375ed954..8390096f 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/test_com_alma_mapper.py @@ -28,13 +28,13 @@ class TestComAlmaMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From 2dd99b06bab404f07316c1f5c2ebe57efc3601dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 17:02:56 +0900 Subject: [PATCH 46/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E5=8C=BB=E7=99=82=E5=9C=8F=EF=BC=BF=EF=BC=93=E6=AC=A1?= =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_thrd_med_mapper.py | 98 ++++++++ .../utmp_tables/tables/com_thrd_med.py | 16 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_thrd_med/__init__.py | 0 .../com_thrd_med/com_thrd_med_delete.csv | 3 + .../com_thrd_med/com_thrd_med_insert.csv | 4 + .../com_thrd_med/com_thrd_med_update.csv | 3 + .../db_com_thrd_med_before_delete.csv | 4 + .../db_com_thrd_med_before_update.csv | 4 + .../expect_com_thrd_med_delete.csv | 2 + .../expect_com_thrd_med_insert.csv | 5 + .../expect_com_thrd_med_update.csv | 4 + .../com_thrd_med/test_com_thrd_med_mapper.py | 236 ++++++++++++++++++ 13 files changed, 382 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py new file mode 100644 index 00000000..a51eb4be --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_thrd_med_mapper.py @@ -0,0 +1,98 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_thrd_med import ComThrdMed + + +class ComThrdMedMapper(UltmarcTableMapper): + """レイアウト区分122: COM_医療圏3次マスタ 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_thrd_med + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_thrd_med + ( + prefcode, + thrd_cd, + thrd_med_sphe_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :pref_code, + :thrd_cd, + :thrd_med_sphe_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_thrd_med + SET + thrd_med_sphe_name = :thrd_med_sphe_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_thrd_med + WHERE + prefcode = :pref_code + AND + thrd_cd = :thrd_cd + """ + + record: ComThrdMed + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComThrdMed) + 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.maintflag == 'C': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py new file mode 100644 index 00000000..600e1632 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_thrd_med.py @@ -0,0 +1,16 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComThrdMed(UltmarcTable): + """レイアウト区分122: COM_医療圏3次マスタ""" + pref_code: str # 都道府県コード + thrd_cd: str # 3次コード + thrd_med_sphe_name: str # 3次医療圏名称 + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.pref_code = record[1] + self.thrd_cd = record[2] + self.maintflag = record[3] + self.thrd_med_sphe_name = record[6] 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 0f206875..4c078280 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 @@ -46,6 +46,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper impor ComCopHpMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper import \ ComMedPrefcMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper import \ + ComThrdMedMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -117,7 +119,7 @@ COM_TABLE_LIST = { # COM_医療圏都道府県 "121": ComMedPrefcMapper, # COM_医療圏3次マスタ - "122": NullMapper, + "122": ComThrdMedMapper, # COM_二次医療圏 "123": NullMapper, # COM_医療圏都道府県市町村対照表 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv new file mode 100644 index 00000000..39844d66 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_delete.csv @@ -0,0 +1,3 @@ +"122","01","1","C","20141118","20141122","" +"122","01","2","C","20141118","20141122","オホーツク" +"122","01","9","C","20141118","20141122","道北" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv new file mode 100644 index 00000000..6c299222 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_insert.csv @@ -0,0 +1,4 @@ +"122","01","1","A","20141118","20141122","道南" +"122","01","2","A","20141118","20141122","" +"122","01","3","A","20141118","20141122","道北" +"122","99","12345678","A","","","あいうえおかきくけこあいうえおかきくけこ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv new file mode 100644 index 00000000..3050ce0d --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/com_thrd_med_update.csv @@ -0,0 +1,3 @@ +"122","01","1","A","20141118","20141122","" +"122","01","2","A","20141118","20141122","オホーツク" +"122","01","3","B","20141118","20141122","道北" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv new file mode 100644 index 00000000..475396aa --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_delete.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" +"01","2","オホーツク","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" +"01","3","道北","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv new file mode 100644 index 00000000..5c15d8c0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/db_com_thrd_med_before_update.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","道南","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" +"01","2","","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" +"01","3","道北","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 15:58:13","clsComThrdMed" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv new file mode 100644 index 00000000..513fbde7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_delete.csv @@ -0,0 +1,2 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","3","道北","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2017/10/19 16:10:36","clsComThrdMed" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv new file mode 100644 index 00000000..68dc24d7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_insert.csv @@ -0,0 +1,5 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","道南","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"01","2","","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"01","3","道北","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" +"99","12345678","あいうえおかきくけこあいうえおかきくけこ","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 15:58:13","com_thrd_med_mapper","2023/05/11 15:58:13","com_thrd_med_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv new file mode 100644 index 00000000..29268282 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/expect_com_thrd_med_update.csv @@ -0,0 +1,4 @@ +"prefcode","thrd_cd","thrd_med_sphe_name","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","1","","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" +"01","2","オホーツク","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" +"01","3","道北","20171019","20230511","NULL","NULL","NULL","NULL","2017/10/19 15:58:13","clsComThrdMed","2023/05/11 16:10:36","com_thrd_med_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py new file mode 100644 index 00000000..43c11960 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py @@ -0,0 +1,236 @@ +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_thrd_med_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 TestComThrdMedMapper: + """レイアウト区分122: COM_医療圏3次マスタ""" + + 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_医療圏3次マスタテーブルにレコードを登録する + 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_thrd_med_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, 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_thrd_med_insert.csv')) + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏3次マスタテーブルのレコードを更新する + 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_thrd_med_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'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_thrd_med_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_thrd_med', + 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_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, 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_thrd_med_update.csv')) + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_医療圏3次マスタテーブルのレコードを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_thrd_med_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_thrd_med', {'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_thrd_med_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_thrd_med', + 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_thrd_med_mapper.ComThrdMedMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_thrd_med_mapper.ComThrdMedMapper, 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_thrd_med_delete.csv')) + primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] + primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_thrd_med + WHERE + prefcode = :prefcode + AND thrd_cd = :thrd_cd\ + """ + for param_prefcode, param_thrd_cd in zip(primary_keys_prefcode, primary_keys_thrd_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefcode, **param_thrd_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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}が、期待値以降であること' From 662a214f3bec0293faf7b25d1eedf85f8e31e41d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 11 May 2023 17:04:35 +0900 Subject: [PATCH 47/57] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E5=A4=96=E3=81=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/com_thrd_med/test_com_thrd_med_mapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py index 43c11960..738d570a 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py @@ -28,13 +28,13 @@ class TestComThrdMedMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From 2f94215e94726c711d8b179be26618df09c4134a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 09:24:17 +0900 Subject: [PATCH 48/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E5=8C=BB=E7=99=82=E5=9C=8F=EF=BC=BF=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E5=8C=BB=E7=99=82=E5=9C=8F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_snd_med_sphe_mapper.py | 113 ++++++++ .../utmp_tables/tables/com_snd_med_sphe.py | 30 +++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_snd_med_sphe/__init__.py | 0 .../com_snd_med_sphe_delete.csv | 3 + .../com_snd_med_sphe_insert.csv | 4 + .../com_snd_med_sphe_update.csv | 3 + .../db_com_snd_med_sphe_before_delete.csv | 4 + .../db_com_snd_med_sphe_before_update.csv | 4 + .../expect_com_snd_med_sphe_delete.csv | 2 + .../expect_com_snd_med_sphe_insert.csv | 5 + .../expect_com_snd_med_sphe_update.csv | 4 + .../test_com_snd_med_sphe_mapper.py | 255 ++++++++++++++++++ 13 files changed, 430 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py new file mode 100644 index 00000000..e8007319 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py @@ -0,0 +1,113 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_snd_med_sphe import ComSenMedSphe + + +class ComSenMedSpheMapper(UltmarcTableMapper): + """レイアウト区分123: COM_医療圏二次医療圏 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_snd_med_sphe + ( + prefc_cd, + med_sphe_cd, + thrd_cd, + snd_med_sphe_name, + requd_bed_or_equip_target, + exist_bed_num, + exist_bed_num_regist_ymd, + plsmns_bed_num, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :prefc_cd, + :med_sphe_cd, + :thrd_cd, + :snd_med_sphe_name, + :requd_bed_or_equip_target, + :exist_bed_num, + :exist_bed_num_regist_ymd, + :plsmns_bed_num, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_snd_med_sphe + SET + thrd_cd = :thrd_cd, + snd_med_sphe_name = :snd_med_sphe_name, + requd_bed_or_equip_target = :requd_bed_or_equip_target, + exist_bed_num = :exist_bed_num, + exist_bed_num_regist_ymd = :exist_bed_num_regist_ymd, + plsmns_bed_num = :plsmns_bed_num, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + + # 修正区分が「C(削除)」の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + """ + + record: ComSenMedSphe + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComSenMedSphe) + 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.maintflag == 'C': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py new file mode 100644 index 00000000..c5e241db --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py @@ -0,0 +1,30 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComSenMedSphe(UltmarcTable): + """レイアウト区分123: COM_医療圏二次医療圏""" + prefc_cd: str # 県コード + med_sphe_cd: str # 医療圏コード + thrd_cd: str # 3次コード + snd_med_sphe_name: str # 2次医療圏名 + requd_bed_or_equip_target: str # 基準病床数 or 整備目標数 + exist_bed_num: str # 既存病床数(病床数) + exist_bed_num_regist_ymd: str # 既存病床数(年月日) + plsmns_bed_num: str # 過不足病床数 + maintflag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.prefc_cd = record[1] + self.med_sphe_cd = record[2] + self.maintflag = record[3] + self.snd_med_sphe_name = record[6] + self.thrd_cd = record[7] + self.requd_bed_or_equip_target = record[8].strip() + self.exist_bed_num = record[9].strip() + self.exist_bed_num_regist_ymd = record[10] + self.plsmns_bed_num = record[11] + + # decimal型のカラム値は、空文字で渡ってきた場合はNULLに変換する + self.requd_bed_or_equip_target = self.requd_bed_or_equip_target if len(self.requd_bed_or_equip_target) > 0 else None + self.exist_bed_num = self.exist_bed_num if len(self.exist_bed_num) > 0 else None 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 4c078280..05c36138 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 @@ -48,6 +48,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper im ComMedPrefcMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper import \ ComThrdMedMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_snd_med_sphe_mapper import \ + ComSenMedSpheMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -121,7 +123,7 @@ COM_TABLE_LIST = { # COM_医療圏3次マスタ "122": ComThrdMedMapper, # COM_二次医療圏 - "123": NullMapper, + "123": ComSenMedSpheMapper, # COM_医療圏都道府県市町村対照表 "124": NullMapper } diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv new file mode 100644 index 00000000..61c5c614 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_delete.csv @@ -0,0 +1,3 @@ +"123","01","01","C","20141113","20141114","","","","","","" +"123","01","02","C","20141113","20141114","南檜山圏","1","213","216","20130201","3" +"123","01","09","C","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv new file mode 100644 index 00000000..690a500f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_insert.csv @@ -0,0 +1,4 @@ +"123","01","01","A","20141113","20141114","南渡島圏","1","4475","5020","20130201","545" +"123","01","02","A","20141113","20141114","","","","","","" +"123","01","03","B","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" +"123","99","99","A","","","あいうえおかきくけこあいうえおかきくけこ","9","123456","123456","20130201","1234567" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv new file mode 100644 index 00000000..348ff11c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/com_snd_med_sphe_update.csv @@ -0,0 +1,3 @@ +"123","01","01","A","20141113","20141114","","","","","","" +"123","01","02","A","20141113","20141114","南檜山圏","1","213","216","20130201","3" +"123","01","03","B","20141113","20141114","北渡島檜山圏","1","389","484","20130201","95" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv new file mode 100644 index 00000000..8fab7f4b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_delete.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","","","NULL","NULL","","","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" +"01","02","1","南檜山圏","213","216","20130201","3","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv new file mode 100644 index 00000000..23b503f5 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/db_com_snd_med_sphe_before_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","1","南渡島圏","4475","5020","20130201","545","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" +"01","02","","","NULL","NULL","","","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:35:59","clsComSndMedSphe" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv new file mode 100644 index 00000000..3ec5fff5 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_delete.csv @@ -0,0 +1,2 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20171019","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2017/10/19 17:38:48","clsComSndMedSphe" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv new file mode 100644 index 00000000..f5a43770 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_insert.csv @@ -0,0 +1,5 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","1","南渡島圏","4475","5020","20130201","545","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"01","02","","","NULL","NULL","","","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" +"99","99","9","あいうえおかきくけこあいうえおかきくけこ","123456","123456","20130201","1234567","NULL","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/12 05:35:59","com_snd_med_sphe_mapper","2023/05/12 05:35:59","com_snd_med_sphe_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv new file mode 100644 index 00000000..6e212e05 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/expect_com_snd_med_sphe_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","thrd_cd","snd_med_sphe_name","requd_bed_or_equip_target","exist_bed_num","exist_bed_num_regist_ymd","plsmns_bed_num","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","","","NULL","NULL","","","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" +"01","02","1","南檜山圏","213","216","20130201","3","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" +"01","03","1","北渡島檜山圏","389","484","20130201","95","NULL","20171019","20230512","NULL","NULL","NULL","NULL","2017/10/19 17:35:59","clsComSndMedSphe","2023/05/12 05:38:48","com_snd_med_sphe_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py new file mode 100644 index 00000000..60378f4e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py @@ -0,0 +1,255 @@ +import os.path as path +from datetime import datetime +from decimal import Decimal + +import pytest + +from src.batch.common.batch_context import BatchContext +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_snd_med_sphe_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 TestComSenMedSphe: + """レイアウト区分123: COM_医療圏二次医療圏""" + + db: Database + batch_context: BatchContext + test_file_path: str = path.dirname(__file__) + + # decimal型のカラム群 + decimal_columns = [ + 'requd_bed_or_equip_target', + 'exist_bed_num' + ] + + @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_snd_med_sphe_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, 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_snd_med_sphe_insert.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_update_record(self): + """ + Cases: + COM_医療圏二次医療圏テーブルのレコードを更新する + Arranges: + - CSVデータを用意し、読み込む + - 更新対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_snd_med_sphe_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'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_snd_med_sphe_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_snd_med_sphe', + 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_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, 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_snd_med_sphe_update.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + 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: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + def test_logical_delete(self): + """ + Cases: + COM_医療圏二次医療圏テーブルのレコードを1件論理削除する + Arranges: + - CSVデータを用意し、読み込む + - 削除対象となるレコードを登録する + Expects: + - 登録内容が期待値と一致すること + """ + + # Arrange + # 処理日設定 + self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + # テスト用のCSVを読み込む + test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_snd_med_sphe_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_snd_med_sphe', {'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_snd_med_sphe_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_snd_med_sphe', + 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_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, 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_snd_med_sphe_delete.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_snd_med_sphe + WHERE + prefc_cd = :prefc_cd + AND med_sphe_cd = :med_sphe_cd\ + """ + for param_prefc_cd, param_med_sphe_cd in zip(primary_keys_prefc_cd, primary_keys_med_sphe_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date'] + self.decimal_columns + 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: + if actual_col_name in self.decimal_columns: + if expect_row[expect_col_name] is not None and len(expect_row[expect_col_name]) > 0: + assert actual_row[actual_col_name] == Decimal(expect_row[expect_col_name]), f'{line_number}行目:{actual_col_name}が、期待値と一致すること' + else: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' From 7f8b16a0c6f839f34b95ba62191c57966894be9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 11:36:02 +0900 Subject: [PATCH 49/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E5=8C=BB=E7=99=82=E5=9C=8F=EF=BC=BF=E9=83=BD=E9=81=93?= =?UTF-8?q?=E5=BA=9C=E7=9C=8C=E5=B8=82=E7=94=BA=E6=9D=91=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E8=A1=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_med_area_city_mapper.py | 117 ++++++++ .../utmp_tables/tables/com_med_area_city.py | 24 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_med_area_city/__init__.py | 0 .../com_med_area_city_delete.csv | 3 + .../com_med_area_city_insert.csv | 3 + .../com_med_area_city_update.csv | 3 + .../db_com_med_area_city_before_delete.csv | 4 + .../db_com_med_area_city_before_update.csv | 4 + .../expect_com_med_area_city_delete.csv | 2 + .../expect_com_med_area_city_insert.csv | 4 + .../expect_com_med_area_city_update.csv | 4 + .../test_com_med_area_city_mapper.py | 269 ++++++++++++++++++ 13 files changed, 440 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py new file mode 100644 index 00000000..e046d558 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_med_area_city_mapper.py @@ -0,0 +1,117 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_med_area_city import ComMedAreaCity + + +class ComMedAreaCityMapper(UltmarcTableMapper): + """レイアウト区分124: COM_医療圏都道府県市町村対応表 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_med_area_city + ( + prefc_cd, + med_sphe_cd, + jis_prefc_cd, + jis_city_cd, + zen_prefcode, + zen_medareacode, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :prefc_cd, + :med_sphe_cd, + :jis_prefc_cd, + :jis_city_cd, + :zen_prefcode, + :zen_medareacode, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # データ更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_med_area_city + SET + zen_prefcode = :zen_prefcode, + zen_medareacode = :zen_medareacode, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + PHYSICAL_DELETE_QUERY = """\ + DELETE FROM + src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + + record: ComMedAreaCity + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComMedAreaCity) + 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): + # 『修正区分がB(修正)かつ追加削除区分が1(退職)』の場合、物理削除 + if self.record.maintflag == 'B' and self.record.addDelDiv == '1': + self.queries.append(self.PHYSICAL_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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py new file mode 100644 index 00000000..a1e0e4cc --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_med_area_city.py @@ -0,0 +1,24 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComMedAreaCity(UltmarcTable): + """レイアウト区分124: COM_医療圏都道府県市町村対応表""" + prefc_cd: str # 県コード + med_sphe_cd: str # 医療圏コード + jis_prefc_cd: str # JIS都道府県コード + jis_city_cd: str # JIS市区町村コード + zen_prefcode: str # 移動元2次コード(都道府県) + zen_medareacode: str # 移動元2次コード(医療圏コード) + maintflag: str # 修正区分 + addDelDiv: str # 追加削除区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.prefc_cd = record[1] + self.med_sphe_cd = record[2] + self.maintflag = record[3] + self.jis_prefc_cd = record[4] + self.jis_city_cd = record[5] + self.addDelDiv = record[6] + self.zen_prefcode = record[9].strip() + self.zen_medareacode = record[10].strip() 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 05c36138..335e2538 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 @@ -50,6 +50,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper imp ComThrdMedMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_snd_med_sphe_mapper import \ ComSenMedSpheMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_area_city_mapper import \ + ComMedAreaCityMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -125,7 +127,7 @@ COM_TABLE_LIST = { # COM_二次医療圏 "123": ComSenMedSpheMapper, # COM_医療圏都道府県市町村対照表 - "124": NullMapper + "124": ComMedAreaCityMapper } diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/__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_area_city/com_med_area_city_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv new file mode 100644 index 00000000..126012d4 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv @@ -0,0 +1,3 @@ +"124","1","1","B","1","202","1","20141113","20141114","","" +"124","1","1","B","1","900","1","20141113","20141114","1","2" +"124","1","1","B","1","331","1","20141113","20141114","1","1" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv new file mode 100644 index 00000000..e8bf727d --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_insert.csv @@ -0,0 +1,3 @@ +"124","01","01","A","01","202","2","20141113","20141114","01","03" +"124","01","01","A","01","236","2","20141113","20141114","","" +"124","01","01","B","01","331","2","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv new file mode 100644 index 00000000..7ec208ae --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_update.csv @@ -0,0 +1,3 @@ +"124","01","01","A","01","202","2","20141113","20141114","","" +"124","01","01","A","01","236","2","20141113","20141114","01","02" +"124","01","01","B","01","331","2","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv new file mode 100644 index 00000000..756a99ce --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_delete.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","","","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" +"01","01","01","236","01","02","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" +"01","01","01","331","01","01","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv new file mode 100644 index 00000000..dc0c8280 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/db_com_med_area_city_before_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","01","03","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" +"01","01","01","236","","","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" +"01","01","01","331","01","01","NULL","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 10:54:42","clsComMedAreaCity" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv new file mode 100644 index 00000000..378928e3 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_delete.csv @@ -0,0 +1,2 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","236","01","02","NULL","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2017/10/20 11:26:33","clsComMedAreaCity" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv new file mode 100644 index 00000000..35406b92 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_insert.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","01","03","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" +"01","01","01","236","","","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" +"01","01","01","331","01","01","NULL","20230512","NULL","NULL","NULL","NULL","NULL","2023/05/12 10:54:42","com_med_area_city_mapper","2023/05/12 10:54:42","com_med_area_city_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv new file mode 100644 index 00000000..e45e2614 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/expect_com_med_area_city_update.csv @@ -0,0 +1,4 @@ +"prefc_cd","med_sphe_cd","jis_prefc_cd","jis_city_cd","zen_prefcode","zen_medareacode","mod_ymd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id" +"01","01","01","202","","","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" +"01","01","01","236","01","02","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" +"01","01","01","331","01","01","NULL","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 10:54:42","clsComMedAreaCity","2023/05/12 11:26:33","com_med_area_city_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py new file mode 100644 index 00000000..1e0bfcc3 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py @@ -0,0 +1,269 @@ +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_area_city_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 TestComMedAreaCityMapper: + """レイアウト区分124: 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_area_city_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_med_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, 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_area_city_insert.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date'] + assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns) + # 動的日付項目の個別確認 + line_number = 0 + for actual_row, expect_row in zip(actual_data_list, expect_data_list): + line_number += 1 + for actual_col_name, expect_col_name in zip(actual_row, expect_row): + if actual_col_name in ignore_columns: + assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' + + 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_area_city_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'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_area_city_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_area_city', + 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_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, 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_area_city_update.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_area_city_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_med_area_city', {'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_area_city_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_med_area_city', + 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_area_city_mapper.ComMedAreaCityMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_med_area_city_mapper.ComMedAreaCityMapper, 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_area_city_delete.csv')) + primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] + primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] + primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] + primary_keys_jis_city_cd = [{'jis_city_cd': columns['jis_city_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_med_area_city + WHERE + prefc_cd = :prefc_cd + AND + med_sphe_cd = :med_sphe_cd + AND + jis_prefc_cd = :jis_prefc_cd + AND + jis_city_cd = :jis_city_cd + """ + for param_prefc_cd, param_med_sphe_cd, param_keys_jis_prefc_cd, param_jis_city_cd in zip( + primary_keys_prefc_cd, + primary_keys_med_sphe_cd, + primary_keys_jis_prefc_cd, + primary_keys_jis_city_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_prefc_cd, **param_med_sphe_cd, **param_keys_jis_prefc_cd, **param_jis_city_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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}が、期待値以降であること' From 23524711946da96e057c4aa2d40983d8adebe994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 13:08:30 +0900 Subject: [PATCH 50/57] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E5=90=8D?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_snd_med_sphe_mapper.py | 8 ++++---- .../ultmarc/utmp_tables/tables/com_snd_med_sphe.py | 2 +- .../utmp_tables/ultmarc_table_mapper_factory.py | 4 ++-- .../test_com_snd_med_sphe_mapper.py | 14 +++++++------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py index e8007319..c1c50269 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_snd_med_sphe_mapper.py @@ -1,9 +1,9 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper -from src.batch.ultmarc.utmp_tables.tables.com_snd_med_sphe import ComSenMedSphe +from src.batch.ultmarc.utmp_tables.tables.com_snd_med_sphe import ComSndMedSphe -class ComSenMedSpheMapper(UltmarcTableMapper): +class ComSndMedSpheMapper(UltmarcTableMapper): """レイアウト区分123: COM_医療圏二次医療圏 登録処理""" # レコード存在確認SQL @@ -82,10 +82,10 @@ class ComSenMedSpheMapper(UltmarcTableMapper): med_sphe_cd = :med_sphe_cd """ - record: ComSenMedSphe + record: ComSndMedSphe def __init__(self, record: list[str], db) -> None: - super().__init__(record, db, ComSenMedSphe) + super().__init__(record, db, ComSndMedSphe) program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) # モジュール名をクエリパラメータに設定 self.query_parameter['program_name'] = program_name diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py index c5e241db..b1b33e66 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_snd_med_sphe.py @@ -1,7 +1,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable -class ComSenMedSphe(UltmarcTable): +class ComSndMedSphe(UltmarcTable): """レイアウト区分123: COM_医療圏二次医療圏""" prefc_cd: str # 県コード med_sphe_cd: str # 医療圏コード 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 335e2538..6ff9bf70 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 @@ -49,7 +49,7 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_prefc_mapper im from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_thrd_med_mapper import \ ComThrdMedMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_snd_med_sphe_mapper import \ - ComSenMedSpheMapper + ComSndMedSpheMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_med_area_city_mapper import \ ComMedAreaCityMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ @@ -125,7 +125,7 @@ COM_TABLE_LIST = { # COM_医療圏3次マスタ "122": ComThrdMedMapper, # COM_二次医療圏 - "123": ComSenMedSpheMapper, + "123": ComSndMedSpheMapper, # COM_医療圏都道府県市町村対照表 "124": ComMedAreaCityMapper } diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py index 60378f4e..78ff4708 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py @@ -15,7 +15,7 @@ from tests.testing_utility import (assert_table_results, create_ultmarc_test_data_from_csv) -class TestComSenMedSphe: +class TestComSndMedSphe: """レイアウト区分123: COM_医療圏二次医療圏""" db: Database @@ -66,8 +66,8 @@ class TestComSenMedSphe: # Act for line_number, line in enumerate(test_dat_file, start=1): - sut: com_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) - assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' sut.make_query() sut.execute_queries() @@ -138,8 +138,8 @@ class TestComSenMedSphe: # Act for line_number, line in enumerate(test_dat_file, start=1): - sut: com_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) - assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' sut.make_query() sut.execute_queries() @@ -212,8 +212,8 @@ class TestComSenMedSphe: # Act for line_number, line in enumerate(test_dat_file, start=1): - sut: com_snd_med_sphe_mapper.ComSenMedSphe = create_ultmarc_table_mapper_sut(line, self.db) - assert type(sut) is com_snd_med_sphe_mapper.ComSenMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' + sut: com_snd_med_sphe_mapper.ComSndMedSphe = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_snd_med_sphe_mapper.ComSndMedSpheMapper, f'{line_number}行目:マッパークラスが期通りか' sut.make_query() sut.execute_queries() From a806b5602ef99b66e1e7f8707ef2610eea36eeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 15:13:31 +0900 Subject: [PATCH 51/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E8=A8=BA=E7=99=82=E7=A7=91=E7=9B=AE--=E4=BD=9C?= =?UTF-8?q?=E6=88=90=E4=B8=AD=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_trt_course_mapper.py | 99 +++++++++++++++++++ .../utmp_tables/tables/com_trt_course.py | 18 ++++ 2 files changed, 117 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py new file mode 100644 index 00000000..e8b4388f --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_trt_course_mapper.py @@ -0,0 +1,99 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_trt_course import ComTrtCourse + + +class ComTrtCourseMapper(UltmarcTableMapper): + """レイアウト区分001: COM_診療科目 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_trt_course + WHERE + trt_course_cd = :trt_course_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_trt_course + ( + trt_course_cd, + trt_course_name_kana, + trt_course_name_abb, + trt_course_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :trt_course_cd, + :trt_course_name_kana, + :trt_course_name_abb, + :trt_course_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_trt_course + SET + trt_course_name_kana = :trt_course_name_kana, + trt_course_name_abb = :trt_course_name_abb, + trt_course_name = :trt_course_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + trt_course_cd = :trt_course_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_trt_course + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + trt_course_cd = :trt_course_cd + """ + record: ComTrtCourse + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComTrtCourse) + 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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py new file mode 100644 index 00000000..0bc0612d --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_trt_course.py @@ -0,0 +1,18 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComTrtCourse(UltmarcTable): + """レイアウト区分001: COM_診療科目""" + trt_course_cd: str # 診療科目コード + trt_course_name_kana: str # 診療科目名カナ + trt_course_name_abb: str # 診療科目名略称 + trt_course_name: str # 診療科目名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.trt_course_cd = record[1] + self.maint_flag = record[2] + self.trt_course_name_abb = record[5] + self.trt_course_name = record[6] + self.trt_course_name_kana = record[7] From 5341dc4186748cb42e471aa5ee36c506c2b3d0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 16:02:30 +0900 Subject: [PATCH 52/57] =?UTF-8?q?=E7=89=A9=E7=90=86=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=AE=E3=83=86=E3=82=B9=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_med_area_city/com_med_area_city_delete.csv | 6 +++--- .../com_med_area_city/test_com_med_area_city_mapper.py | 6 ++++-- .../table_mapper/com_med_prefc/test_com_med_prefc_mapper.py | 6 ++++-- .../com_snd_med_sphe/test_com_snd_med_sphe_mapper.py | 6 ++++-- .../table_mapper/com_thrd_med/test_com_thrd_med_mapper.py | 6 ++++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv index 126012d4..631fe4f9 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/com_med_area_city_delete.csv @@ -1,3 +1,3 @@ -"124","1","1","B","1","202","1","20141113","20141114","","" -"124","1","1","B","1","900","1","20141113","20141114","1","2" -"124","1","1","B","1","331","1","20141113","20141114","1","1" +"124","01","01","B","01","202","1","20141113","20141114","","" +"124","01","01","B","01","900","1","20141113","20141114","01","02" +"124","01","01","B","01","331","1","20141113","20141114","01","01" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py index 1e0bfcc3..0b208ab0 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_area_city/test_com_med_area_city_mapper.py @@ -187,10 +187,10 @@ class TestComMedAreaCityMapper: else: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' - def test_logical_delete(self): + def test_physical_delete(self): """ Cases: - COM_医療圏都道府県市町村対応表テーブルのレコードを1件論理削除する + COM_医療圏都道府県市町村対応表テーブルのレコードを1件物理削除する Arranges: - CSVデータを用意し、読み込む - 削除対象となるレコードを登録する @@ -227,6 +227,8 @@ class TestComMedAreaCityMapper: # Assert # 期待値ファイルを読み込む expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_area_city_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_med_area_city')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] primary_keys_jis_prefc_cd = [{'jis_prefc_cd': columns['jis_prefc_cd']} for columns in expect_data_list] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py index 495e1cca..02424dbd 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_med_prefc/test_com_med_prefc_mapper.py @@ -158,10 +158,10 @@ class TestComMedPrefcMapper: else: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' - def test_logical_delete(self): + def test_physical_delete(self): """ Cases: - COM_医療圏都道府県テーブルのレコードを1件論理削除する + COM_医療圏都道府県テーブルのレコードを1件物理削除する Arranges: - CSVデータを用意し、読み込む - 削除対象となるレコードを登録する @@ -198,6 +198,8 @@ class TestComMedPrefcMapper: # Assert # 期待値ファイルを読み込む expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_med_prefc_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_med_prefc')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' primary_keys = [f"'{primary_key['pref_code']}'" for primary_key in expect_data_list] actual_select_sql = f"SELECT * FROM src05.com_med_prefc WHERE pref_code IN ({','.join(primary_keys)})" actual_data_list = self.db.execute_select(actual_select_sql) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py index 78ff4708..82e12baa 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_snd_med_sphe/test_com_snd_med_sphe_mapper.py @@ -180,10 +180,10 @@ class TestComSndMedSphe: else: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' - def test_logical_delete(self): + def test_physical_delete(self): """ Cases: - COM_医療圏二次医療圏テーブルのレコードを1件論理削除する + COM_医療圏二次医療圏テーブルのレコードを1件物理削除する Arranges: - CSVデータを用意し、読み込む - 削除対象となるレコードを登録する @@ -220,6 +220,8 @@ class TestComSndMedSphe: # Assert # 期待値ファイルを読み込む expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_snd_med_sphe_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_snd_med_sphe')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' primary_keys_prefc_cd = [{'prefc_cd': columns['prefc_cd']} for columns in expect_data_list] primary_keys_med_sphe_cd = [{'med_sphe_cd': columns['med_sphe_cd']} for columns in expect_data_list] actual_data_list = [] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py index 738d570a..5440f431 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_thrd_med/test_com_thrd_med_mapper.py @@ -165,10 +165,10 @@ class TestComThrdMedMapper: else: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' - def test_logical_delete(self): + def test_physical_delete(self): """ Cases: - COM_医療圏3次マスタテーブルのレコードを1件論理削除する + COM_医療圏3次マスタテーブルのレコードを1件物理削除する Arranges: - CSVデータを用意し、読み込む - 削除対象となるレコードを登録する @@ -205,6 +205,8 @@ class TestComThrdMedMapper: # Assert # 期待値ファイルを読み込む expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_thrd_med_delete.csv')) + actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_thrd_med')[0]['count_num'] + assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること' primary_keys_prefcode = [{'prefcode': columns['prefcode']} for columns in expect_data_list] primary_keys_thrd_cd = [{'thrd_cd': columns['thrd_cd']} for columns in expect_data_list] actual_data_list = [] From bbb49cf28ce9b2a26423804bd305b0a1dbafd351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 12 May 2023 17:53:48 +0900 Subject: [PATCH 53/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E8=A8=BA=E7=99=82=E7=A7=91=E7=9B=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_alma_mapper.py | 5 +- .../ultmarc_table_mapper_factory.py | 4 +- .../com_alma/expect_com_alma_delete.csv | 2 +- .../com_alma/expect_com_alma_update.csv | 2 +- .../table_mapper/com_trt_course/__init__.py | 0 .../com_trt_course/com_trt_course_delete.csv | 7 + .../com_trt_course/com_trt_course_insert.csv | 7 + .../com_trt_course/com_trt_course_update.csv | 6 + .../db_com_trt_course_before_delete.csv | 7 + .../db_com_trt_course_before_update.csv | 7 + .../expect_com_trt_course_delete.csv | 8 + .../expect_com_trt_course_insert.csv | 8 + .../expect_com_trt_course_update.csv | 7 + .../test_com_trt_course_mapper.py | 197 ++++++++++++++++++ 14 files changed, 260 insertions(+), 7 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py index 699cbe6c..27055955 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_mapper.py @@ -89,7 +89,4 @@ class ComAlmaMapper(UltmarcTableMapper): return self.INSERT_QUERY # 存在する場合ではUpdate - if self.record.alma == '': - return None - else: - return self.UPDATE_QUERY + return self.UPDATE_QUERY 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 8f5771a2..ceb8a322 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 @@ -44,6 +44,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_att_mapper imp ComInstAttMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \ ComCopHpMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_trt_course_mapper import \ + ComTrtCourseMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -77,7 +79,7 @@ COM_TABLE_LIST = { # COM_都道府県医療機能情報(専門外来) "136": ComPrefcMedSpOutpatMapper, # COM_診療科目 - "001": NullMapper, + "001": ComTrtCourseMapper, # COM_病院種別 "002": NullMapper, # COM_出身校学部識別 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv index afaca4a8..6cb36d4b 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_delete.csv @@ -2,7 +2,7 @@ "001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" "002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" "003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" -"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","clsComAlma" +"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" "005","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" "006","福島医","20171020","20171020","20171020","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:43:15","com_alma_mapper" "007","群馬大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:43:15","com_alma_mapper","2017/10/20 10:43:15","com_alma_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv index 4fc8b3bc..f25889be 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma/expect_com_alma_update.csv @@ -2,7 +2,7 @@ "001","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" "002","札幌医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" "003","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" -"004","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","clsComAlma" +"004","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:27:33","com_alma_mapper" "005","福島医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" "006","東北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","clsComAlma","2017/10/20 10:35:27","com_alma_mapper" "007","神大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 10:27:33","com_alma_mapper","2017/10/20 10:35:27","com_alma_mapper" \ No newline at end of file diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv new file mode 100644 index 00000000..a676cbda --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_delete.csv @@ -0,0 +1,7 @@ +"001","A01","A","20141113","20141114","","","" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","C","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" +"001","A07","A","20141113","20141114","内薬","内科(薬物療法)","ナイカ(ヤクブツリヨウホウ)" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv new file mode 100644 index 00000000..e3b96df2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_insert.csv @@ -0,0 +1,7 @@ +"001","A01","A","20141113","20141114","内","一般内科","イツパンナイカ" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" +"001","A06","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","999","A","","","あいうえ","あいうえおかきくけこあいうえおかきくけこ","アイウエオカキクケコアイウエオカキクケコケコ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv new file mode 100644 index 00000000..e092df90 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/com_trt_course_update.csv @@ -0,0 +1,6 @@ +"001","A01","A","20141113","20141114","","","" +"001","A02","A","20141113","20141114","腫瘍","腫瘍科","シユヨウカ" +"001","A03","A","20141113","20141114","腫内","腫瘍内科","シユヨウナイカ" +"001","A04","A","20141113","20141114","腫疼","腫瘍内科(疼痛緩和)","シユヨウナイカ(トウツウカンワ)" +"001","A05","A","20141113","20141114","内循","内科(循環器)","ナイカ(ジユンカンキ)" +"001","A06","A","20141113","20141114","血腫","血液・腫瘍内科","ケツエキ.シユヨウナイカ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv new file mode 100644 index 00000000..19181a3b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_delete.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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" +"A01","","","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:59:56","clsComTrtCourse" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv new file mode 100644 index 00000000..2dc257c0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/db_com_trt_course_before_update.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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" +"A01","イツパンナイカ","内","一般内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" +"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 8:54:31","clsComTrtCourse" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv new file mode 100644 index 00000000..a60d80b4 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_delete.csv @@ -0,0 +1,8 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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" +"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20171020","20230512","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/11 09:16:56","com_trt_course_mapper" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2017/10/20 9:16:56","com_trt_course_mapper" +"A07","ナイカ(ヤクブツリヨウホウ)","内薬","内科(薬物療法)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:16:56","com_trt_course_mapper","2017/10/20 9:16:56","com_trt_course_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv new file mode 100644 index 00000000..6c9ce9f1 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_insert.csv @@ -0,0 +1,8 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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" +"999","アイウエオカキクケコアイウエオカキクケコケコ","あいうえ","あいうえおかきくけこあいうえおかきくけこ","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A01","イツパンナイカ","内","一般内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A05","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" +"A06","ナイカ(ジユンカンキ)","内循","内科(循環器)","20230512","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","com_trt_course_mapper","2017/10/20 8:54:31","com_trt_course_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv new file mode 100644 index 00000000..1bc94e34 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/expect_com_trt_course_update.csv @@ -0,0 +1,7 @@ +"trt_course_cd","trt_course_name_kana","trt_course_name_abb","trt_course_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" +"A01","","","","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A02","シユヨウカ","腫瘍","腫瘍科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A03","シユヨウナイカ","腫内","腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A04","シユヨウナイカ(トウツウカンワ)","腫疼","腫瘍内科(疼痛緩和)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A05","ナイカ(ジユンカンキ)","内循","内科(循環器)","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" +"A06","ケツエキ.シユヨウナイカ","血腫","血液・腫瘍内科","20171020","20230512","NULL","NULL","NULL","NULL","NULL","2017/10/20 8:54:31","clsComTrtCourse","2023/05/12 8:59:56","com_trt_course_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py new file mode 100644 index 00000000..70862c22 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_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_trt_course_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 TestComTrtCourseMapper: + """レイアウト区分001: 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_trt_course_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_insert.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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_trt_course_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_course_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_update.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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_trt_course_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_trt_course', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + # テストデータをDBに登録 + # DBデータを読み込む + test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_course_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_trt_course', + test_data.keys(), + test_data.values() + ) + self.db.execute(insert_sql, insert_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_trt_course_mapper.ComTrtCourseMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_trt_course_mapper.ComTrtCourseMapper, 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_trt_course_delete.csv')) + primary_keys = [f"'{primary_key['trt_course_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_trt_course WHERE trt_course_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 8a82a53046f0507333e9fdd9333f96dd39cde591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 15 May 2023 09:00:29 +0900 Subject: [PATCH 54/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E7=97=85=E9=99=A2=E7=A8=AE=E5=88=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_hp_assrt_mapper.py | 93 +++++++++ .../utmp_tables/tables/com_hp_assrt.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_hp_assrt/__init__.py | 0 .../com_hp_assrt/com_hp_assrt_delete.csv | 7 + .../com_hp_assrt/com_hp_assrt_insert.csv | 7 + .../com_hp_assrt/com_hp_assrt_update.csv | 6 + .../db_com_hp_assrt_before_delete.csv | 7 + .../db_com_hp_assrt_before_update.csv | 8 + .../expect_com_hp_assrt_delete.csv | 7 + .../expect_com_hp_assrt_insert.csv | 8 + .../expect_com_hp_assrt_update.csv | 8 + .../com_hp_assrt/test_com_hp_assrt_mapper.py | 197 ++++++++++++++++++ .../test_com_trt_course_mapper.py | 4 +- 14 files changed, 367 insertions(+), 3 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py new file mode 100644 index 00000000..d18f824a --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_hp_assrt_mapper.py @@ -0,0 +1,93 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_hp_assrt import ComHpAssrt + + +class ComHpAssrtMapper(UltmarcTableMapper): + """レイアウト区分002: COM_病院種別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_hp_assrt + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_hp_assrt + ( + hp_assrt_cd, + hp_assrt_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :hp_assrt_cd, + :hp_assrt_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_hp_assrt + SET + hp_assrt_name = :hp_assrt_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_hp_assrt + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + hp_assrt_cd = :hp_assrt_cd + """ + record: ComHpAssrt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComHpAssrt) + 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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py new file mode 100644 index 00000000..e47e6513 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_hp_assrt.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComHpAssrt(UltmarcTable): + """レイアウト区分002: 病院種別""" + hp_assrt_cd: str # 病院種別コード + hp_assrt_name: str # 病院種別名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.hp_assrt_cd = record[1] + self.maint_flag = record[2] + self.hp_assrt_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 ceb8a322..7382ebc7 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 @@ -46,6 +46,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper impor ComCopHpMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_trt_course_mapper import \ ComTrtCourseMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hp_assrt_mapper import \ + ComHpAssrtMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -81,7 +83,7 @@ COM_TABLE_LIST = { # COM_診療科目 "001": ComTrtCourseMapper, # COM_病院種別 - "002": NullMapper, + "002": ComHpAssrtMapper, # COM_出身校学部識別 "003": NullMapper, # COM_出身校 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv new file mode 100644 index 00000000..fa9dfadd --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_delete.csv @@ -0,0 +1,7 @@ +"002","1","A","20141113","20141114","" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","C","20141113","20141114","歯科" +"002","6","A","20141113","20141114","伝染" +"002","7","A","20141113","20141114","診療所" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv new file mode 100644 index 00000000..e2ee7c48 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_insert.csv @@ -0,0 +1,7 @@ +"002","1","A","20141113","20141114","一般" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","A","20141113","20141114","伝染" +"002","6","A","20141113","20141114","歯科" +"002","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv new file mode 100644 index 00000000..6d0fe490 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/com_hp_assrt_update.csv @@ -0,0 +1,6 @@ +"002","1","A","20141113","20141114","" +"002","2","A","20141113","20141114","精神" +"002","3","A","20141113","20141114","結核" +"002","4","A","20141113","20141114","ハンセン" +"002","5","A","20141113","20141114","歯科" +"002","6","A","20141113","20141114","伝染" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv new file mode 100644 index 00000000..68440eee --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_delete.csv @@ -0,0 +1,7 @@ +"hp_assrt_cd","hp_assrt_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" +"1","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"2","精神","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"3","結核","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"4","ハンセン","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"5","歯科","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" +"6","伝染","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:46:18","clsComHpAssrt" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv new file mode 100644 index 00000000..79619900 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/db_com_hp_assrt_before_update.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_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" +"1","一般","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"2","精神","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"3","結核","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"4","ハンセン","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"5","伝染","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"6","歯科","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2017/10/20 9:39:05","clsComHpAssrt" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv new file mode 100644 index 00000000..54dc2039 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_delete.csv @@ -0,0 +1,7 @@ +"hp_assrt_cd","hp_assrt_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" +"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"5","歯科","20171020","20171020","20230515","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" +"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/14 8:46:18","com_hp_assrt_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv new file mode 100644 index 00000000..c4343da0 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_insert.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_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" +"1","一般","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"2","精神","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"3","結核","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"4","ハンセン","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"5","伝染","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"6","歯科","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","com_hp_assrt_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv new file mode 100644 index 00000000..fe04619b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/expect_com_hp_assrt_update.csv @@ -0,0 +1,8 @@ +"hp_assrt_cd","hp_assrt_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" +"1","","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"2","精神","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"3","結核","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"4","ハンセン","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"5","歯科","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"6","伝染","20171020","20230515","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:39:05","clsComHpAssrt","2023/05/15 8:46:18","com_hp_assrt_mapper" +"9","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/15 7:39:05","com_hp_assrt_mapper","2023/05/15 7:39:05","aaaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_mapper.py new file mode 100644 index 00000000..08f02dec --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_hp_assrt/test_com_hp_assrt_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_hp_assrt_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 TestComHpAssrtMapper: + """レイアウト区分002: 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_hp_assrt_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_insert.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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_hp_assrt_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'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_hp_assrt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hp_assrt', + 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_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_update.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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_hp_assrt_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_hp_assrt', {'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_hp_assrt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_hp_assrt', + 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_hp_assrt_mapper.ComHpAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_hp_assrt_mapper.ComHpAssrtMapper, 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_hp_assrt_delete.csv')) + primary_keys = [f"'{primary_key['hp_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_hp_assrt WHERE hp_assrt_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}が、期待値以降であること' diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py index 70862c22..9646fc63 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_trt_course/test_com_trt_course_mapper.py @@ -28,13 +28,13 @@ class TestComTrtCourseMapper: # setup self.db = database self.db.connect() - # self.db.begin() + self.db.begin() # testing yield # teardown - # self.db.rollback() + self.db.rollback() self.db.disconnect() def test_insert_record(self): From 9be7262e9b403dadeb313b4c8478679c09d855bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 15 May 2023 11:08:36 +0900 Subject: [PATCH 55/57] =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90?= =?UTF-8?q?=EF=BC=88=E5=87=BA=E8=BA=AB=E6=A0=A1=E5=AD=A6=E9=83=A8=E8=AD=98?= =?UTF-8?q?=E5=88=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_alma_depart_disc_mapper.py | 107 ++++++++ .../tables/com_alma_depart_disc.py | 20 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../com_alma_depart_disc/__init__.py | 0 .../com_alma_depart_disc_delete.csv | 7 + .../com_alma_depart_disc_insert.csv | 7 + .../com_alma_depart_disc_update.csv | 6 + .../db_com_alma_depart_disc_before_delete.csv | 7 + .../db_com_alma_depart_disc_before_update.csv | 8 + .../expect_com_alma_depart_disc_delete.csv | 8 + .../expect_com_alma_depart_disc_insert.csv | 8 + .../expect_com_alma_depart_disc_update.csv | 8 + .../test_com_alma_depart_disc_mapper.py | 236 ++++++++++++++++++ 13 files changed, 425 insertions(+), 1 deletion(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py new file mode 100644 index 00000000..b5a57aad --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_alma_depart_disc_mapper.py @@ -0,0 +1,107 @@ +from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ + UltmarcTableMapper +from src.batch.ultmarc.utmp_tables.tables.com_alma_depart_disc import ComAlmaDepartDisc + + +class ComAlmaDepartDiscMapper(UltmarcTableMapper): + """レイアウト区分003: COM_出身校学部識別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_alma_depart_disc + ( + alma_cd, + depart_disc_cd, + estab_e, + estab_y, + alma_name, + regist_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :alma_cd, + :depart_disc_cd, + :estab_e, + :estab_y, + :alma_name, + :execute_date_str_ymd, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE + src05.com_alma_depart_disc + SET + estab_e = :estab_e, + estab_y = :estab_y, + alma_name = :alma_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_alma_depart_disc + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + alma_cd = :alma_cd + AND + depart_disc_cd = :depart_disc_cd + """ + record: ComAlmaDepartDisc + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComAlmaDepartDisc) + 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 + return self.UPDATE_QUERY diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py new file mode 100644 index 00000000..ae508b35 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_alma_depart_disc.py @@ -0,0 +1,20 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComAlmaDepartDisc(UltmarcTable): + """レイアウト区分003: COM_出身校学部識別""" + alma_cd: str # 出身校コード + depart_disc_cd: str # 学部識別コード + estab_e: str # 創立元号 + estab_y: str # 創立年 + alma_name: str # 出身校名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.alma_cd = record[1] + self.depart_disc_cd = record[2] + self.maint_flag = record[3] + self.alma_name = record[6] + self.estab_e = record[7] + self.estab_y = record[8] 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 7382ebc7..5b4ca696 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 @@ -48,6 +48,8 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_trt_course_mapper i ComTrtCourseMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hp_assrt_mapper import \ ComHpAssrtMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_alma_depart_disc_mapper import \ + ComAlmaDepartDiscMapper from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \ NullMapper @@ -85,7 +87,7 @@ COM_TABLE_LIST = { # COM_病院種別 "002": ComHpAssrtMapper, # COM_出身校学部識別 - "003": NullMapper, + "003": ComAlmaDepartDiscMapper, # COM_出身校 "004": ComAlmaMapper, # COM_役職 diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv new file mode 100644 index 00000000..430eb8d2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_delete.csv @@ -0,0 +1,7 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","","8","21" +"003","003","1","A","20141113","20141114","岩手医","8","21" +"003","004","1","C","20141113","20141114","弘大","8","21" +"003","004","2","A","20141113","20141114","岩手医","4","19" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv new file mode 100644 index 00000000..3525f111 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_insert.csv @@ -0,0 +1,7 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","札幌医","3","20" +"003","003","1","A","20141113","20141114","弘大","3","19" +"003","004","1","A","20141113","20141114","岩手医","3","03" +"003","999","9","A","","","あいうえおかきくけこあいうえおかきくけこあいうえお","1","99" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv new file mode 100644 index 00000000..7f9d64aa --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/com_alma_depart_disc_update.csv @@ -0,0 +1,6 @@ +"003","001","1","A","20141113","20141114","北大","1","09" +"003","001","2","A","20141113","20141114","北大","3","40" +"003","001","3","A","20141113","20141114","北大","3","42" +"003","002","1","A","20141113","20141114","","8","21" +"003","003","1","A","20141113","20141114","岩手医","8","21" +"003","004","1","A","20141113","20141114","弘大","8","21" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv new file mode 100644 index 00000000..9b7b0649 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_delete.csv @@ -0,0 +1,7 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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" +"001","1","1","09","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"001","2","3","40","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"001","3","3","42","北大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"002","1","8","21","","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"003","1","8","21","岩手医","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" +"004","1","8","21","弘大","20171020","20171020","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 10:06:16","clsComAlmaDepartDisc" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv new file mode 100644 index 00000000..64e33084 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/db_com_alma_depart_disc_before_update.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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" +"001","1","1","09","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"001","2","3","40","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"001","3","3","42","北大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"002","1","3","20","札幌医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"003","1","3","19","弘大","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"004","1","3","03","岩手医","20171020","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2017/10/20 9:54:51","clsComAlmaDepartDisc" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv new file mode 100644 index 00000000..9774279b --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_delete.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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" +"001","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"004","1","8","21","弘大","20171020","20171020","20230514","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:22:05","com_alma_depart_disc_mapper" +"004","2","4","19","岩手医","20230514","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 10:22:05","com_alma_depart_disc_mapper","2023/05/14 10:22:05","com_alma_depart_disc_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv new file mode 100644 index 00000000..23c77252 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_insert.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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" +"001","1","1","09","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"002","1","3","20","札幌医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"003","1","3","19","弘大","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"004","1","3","03","岩手医","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","com_alma_depart_disc_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv new file mode 100644 index 00000000..69a09486 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/expect_com_alma_depart_disc_update.csv @@ -0,0 +1,8 @@ +"alma_cd","depart_disc_cd","estab_e","estab_y","alma_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" +"001","1","1","09","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"001","2","3","40","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"001","3","3","42","北大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"002","1","8","21","","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"003","1","8","21","岩手医","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"004","1","8","21","弘大","20171020","20230514","NULL","NULL","NULL","NULL","NULL","2017/10/20 9:54:51","clsComAlmaDepartDisc","2023/05/14 10:06:16","com_alma_depart_disc_mapper" +"999","9","1","99","あいうえおかきくけこあいうえおかきくけこあいうえお","20230515","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/14 9:54:51","com_alma_depart_disc_mapper","2023/05/14 9:54:51","aaaa" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py new file mode 100644 index 00000000..b3881eac --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_alma_depart_disc/test_com_alma_depart_disc_mapper.py @@ -0,0 +1,236 @@ +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_alma_depart_disc_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 TestComAlmaDepartDiscMapper: + """レイアウト区分003: 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_alma_depart_disc_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_insert.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_alma_depart_disc_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'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_alma_depart_disc_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma_depart_disc', + 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_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_update.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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_alma_depart_disc_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_alma_depart_disc', {'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_alma_depart_disc_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_alma_depart_disc', + 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_alma_depart_disc_mapper.ComAlmaDepartDiscMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_alma_depart_disc_mapper.ComAlmaDepartDiscMapper, 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_alma_depart_disc_delete.csv')) + primary_keys_alma_cd = [{'alma_cd': columns['alma_cd']} for columns in expect_data_list] + primary_keys_depart_disc_cd = [{'depart_disc_cd': columns['depart_disc_cd']} for columns in expect_data_list] + actual_data_list = [] + sp_field_select_sql = """\ + SELECT * FROM src05.com_alma_depart_disc + WHERE + alma_cd = :alma_cd + AND depart_disc_cd = :depart_disc_cd\ + """ + for param_alma_cd, param_depart_disc_cd in zip(primary_keys_alma_cd, primary_keys_depart_disc_cd): + sp_field_data = self.db.execute_select( + sp_field_select_sql, + {**param_alma_cd, **param_depart_disc_cd}) + assert len(sp_field_data) == 1, '1件取得できていること' + actual_data_list.append(sp_field_data[0]) + + # 期待値検査 + 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 75dfa77d78a88e88b3278e6569613caa495afbba Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Mon, 15 May 2023 13:38:09 +0900 Subject: [PATCH 56/57] =?UTF-8?q?style:=20=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/com_prefc_med_dis_treat_mapper.py | 5 +++-- .../table_mapper/concrete/com_prefc_med_equpment_mapper.py | 5 +++-- .../src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py | 2 +- .../ultmarc/utmp_tables/tables/com_med_func_valuation.py | 2 +- .../src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py | 2 +- .../ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py | 2 +- .../ultmarc/utmp_tables/tables/com_prefc_med_equpment.py | 2 +- .../ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py | 2 +- .../com_dr_wrkplace/test_com_dr_wrkplace_mapper.py | 2 +- .../com_nurse_assrt/test_com_nurse_assrt_mapper.py | 5 +++-- 10 files changed, 16 insertions(+), 13 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py index 26486dd3..6298160b 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_dis_treat_mapper.py @@ -1,10 +1,11 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper -from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import ComPrefcMedDisTreat +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_dis_treat import \ + ComPrefcMedDisTreat class ComPrefcMedDisTreatMapper(UltmarcTableMapper): - """レイアウト区分133: COM_都道府県医療機能情報(疾患治療)""" + """レイアウト区分134: COM_都道府県医療機能情報(疾患治療)""" # レコード存在確認SQL RECORD_EXISTS_QUERY = """\ diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py index dcfd8114..ed9cf467 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_prefc_med_equpment_mapper.py @@ -1,10 +1,11 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper -from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import ComPrefcMedEqupment +from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_equpment import \ + ComPrefcMedEqupment class ComPrefcMedEqupmentMapper(UltmarcTableMapper): - """レイアウト区分132: COM_都道府県医療機能情報(施設設備)""" + """レイアウト区分133: COM_都道府県医療機能情報(施設設備)""" # レコード存在確認SQL RECORD_EXISTS_QUERY = """\ diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py index 9472206d..421357b9 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_dr_wrkplace.py @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComDrWrkplace(UltmarcTable): - """レイアウト区分501-01:COM_医師勤務先""" + """レイアウト区分502 :COM_医師勤務先""" maint_flag: str # 修正区分 dcfdr_id: str # 個人コード(ID) dcfdr_code: str # 個人コード(個人コード) 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 index 6ed14c07..9eab1f21 100644 --- 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 @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComMedFuncValuation(UltmarcTable): - """レイアウト区分023: COM_医療機器評価""" + """レイアウト区分024: COM_医療機器評価""" maint_flag: str # 修正区分 med_func_valuation_cd: str # 医療機器評価コード med_func_valuation_name: str # 医療機器評価名称(漢字) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py index 710b9a0a..6a7fdb4e 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComNurseAssrt(UltmarcTable): - """レイアウト区分022: COM_看護種別""" + """レイアウト区分023: COM_看護種別""" nurse_assrt_cd: str # 看護種別コード nurse_assrt_name: str # 看護種別名 maint_flag: str # 修正区分 diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py index 4e458fe0..f7bacedd 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_dis_treat.py @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComPrefcMedDisTreat(UltmarcTable): - """レイアウト区分133: COM_都道府県医療機能情報(疾患治療)""" + """レイアウト区分134: COM_都道府県医療機能情報(疾患治療)""" dcfhp_id: str # DCFコード(レコードID) dcfhp_code: str # DCFコード(施設コード) dcfhp_yobi: str # DCFコード(予備) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py index 7b592b9d..491a0a3f 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_equpment.py @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComPrefcMedEqupment(UltmarcTable): - """レイアウト区分132: COM_都道府県医療機能情報(施設設備)""" + """レイアウト区分133: COM_都道府県医療機能情報(施設設備)""" dcfhp_id: str # DCFコード(レコードID) dcfhp_code: str # DCFコード(施設コード) dcfhp_yobi: str # DCFコード(予備) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py index 96b3ad0a..4320bab2 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_prefc_med_sojourn_ope.py @@ -2,7 +2,7 @@ from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable class ComPrefcMedSojournOpe(UltmarcTable): - """レイアウト区分132: COM_都道府県医療機能情報(短期滞在手術)""" + """レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)""" dcfhp_id: str # DCFコード(レコードID) dcfhp_code: str # DCFコード(施設コード) dcfhp_yobi: str # DCFコード(予備) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py index 89e65b54..b0d57a25 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_dr_wrkplace/test_com_dr_wrkplace_mapper.py @@ -15,7 +15,7 @@ from tests.testing_utility import (assert_table_results, class TestComDrWrkplaceMapper: - """COM_DCF医師勤務先""" + """レイアウト区分502: COM_DCF医師勤務先""" db: Database batch_context: BatchContext diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py index e7bea2a5..49bf7c8f 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py @@ -4,7 +4,8 @@ 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_nurse_assrt_mapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import \ + com_nurse_assrt_mapper from src.db.database import Database from tests.testing_utility import (assert_table_results, create_db_data_from_csv, @@ -15,7 +16,7 @@ from tests.testing_utility import (assert_table_results, class TestComNurseAssrtMapper: - """レイアウト区分004: COM_出身校""" + """レイアウト区分023: COM_看護種別""" db: Database batch_context: BatchContext From b73f46718451f6c6f206f10b174c35aecf66debc Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Mon, 15 May 2023 13:40:05 +0900 Subject: [PATCH 57/57] =?UTF-8?q?fix:=20=E3=82=A2=E3=83=AB=E3=83=88?= =?UTF-8?q?=E3=83=9E=E3=83=BC=E3=82=AF=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E3=83=90=E3=83=83=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3=E3=82=B0=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/src/aws/s3.py | 4 ++-- .../src/batch/ultmarc/ultmarc_process.py | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/ecs/jskult-batch-daily/src/aws/s3.py b/ecs/jskult-batch-daily/src/aws/s3.py index 2ac3efe6..68ed0a7c 100644 --- a/ecs/jskult-batch-daily/src/aws/s3.py +++ b/ecs/jskult-batch-daily/src/aws/s3.py @@ -68,11 +68,11 @@ class UltmarcBucket(S3Bucket): return temporary_file_path def backup_dat_file(self, dat_file_key: str, datetime_key: str): + # バックアップバケットにコピー ultmarc_backup_bucket = UltmarcBackupBucket() backup_key = f'{ultmarc_backup_bucket._folder}/{datetime_key}/{dat_file_key.replace(f"{self._folder}/", "")}' self._s3_client.copy(self._bucket_name, dat_file_key, ultmarc_backup_bucket._bucket_name, backup_key) - - def delete_dat_file(self, dat_file_key: str): + # コピー元のファイルを削除 self._s3_client.delete_file(self._bucket_name, dat_file_key) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py b/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py index 5f234bf7..b511a9c8 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/ultmarc_process.py @@ -45,17 +45,14 @@ def exec_import(): dat_file_name = dat_file_info['filename'] logger.info(f"{dat_file_name}を取り込みます") - # ファイルをバックアップ - # 現行は、jobctrl_dailyの先頭でやっている - ultmarc_bucket.backup_dat_file(dat_file_name, batch_context.syor_date) # datファイルをダウンロード local_file_path = ultmarc_bucket.download_dat_file(dat_file_name) dat_file = DatFile.from_path(local_file_path) # アルトマーク取り込み実行 _import_to_ultmarc_table(dat_file) - # 処理後、ファイルをS3から削除する - logger.info(f'取り込み処理が完了したため、datファイルを削除。ファイル名={dat_file_name}') - ultmarc_bucket.delete_dat_file(dat_file_name) + # 処理後ファイルをバックアップ + ultmarc_bucket.backup_dat_file(dat_file_name, batch_context.syor_date) + logger.info(f'取り込み処理が完了したため、datファイルをバックアップ。ファイル名={dat_file_name}') # アルトマーク取込済をマーク batch_context.is_ultmarc_imported = True logger.info('アルトマーク取込処理: 終了')