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]