From 284f36f801bcaf7e06b37b010dcf2fc4c896ef93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 11 Apr 2023 13:36:42 +0900 Subject: [PATCH 01/30] =?UTF-8?q?feat:=20=E6=B4=97=E6=9B=BF=E7=94=A8?= =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E4=BD=9C=E6=88=90=E3=81=AE=E5=AE=9F?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stored_procedure/inst_merge_t_create.sql | 48 ++++++++++++++ .../v_inst_merge_t_create.sql | 65 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 rds_mysql/stored_procedure/inst_merge_t_create.sql create mode 100644 rds_mysql/stored_procedure/v_inst_merge_t_create.sql diff --git a/rds_mysql/stored_procedure/inst_merge_t_create.sql b/rds_mysql/stored_procedure/inst_merge_t_create.sql new file mode 100644 index 00000000..4f7e1b44 --- /dev/null +++ b/rds_mysql/stored_procedure/inst_merge_t_create.sql @@ -0,0 +1,48 @@ +-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する +CREATE PROCEDURE src05.inst_merge_t_create() +SQL SECURITY INVOKER +BEGIN + -- 例外処理 + -- エラーが発生した場合に一時テーブルの削除を実施 + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; + ROLLBACK; + SIGNAL SQLSTATE '45000' + SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; + END; + + SET @error_state = NULL, @error_msg = NULL; + START TRANSACTION; + + TRUNCATE TABLE internal05.inst_merge_t; + + INSERT INTO + internal05.inst_merge_t ( + dcf_dsf_inst_cd, + dup_opp_cd, + form_inst_name_kanji, + form_inst_name_kana, + inst_addr, + prefc_cd + ) + SELECT + di.dcf_inst_cd, + di.dcf_inst_cd_new, + ci.form_inst_name_kanji, + ci.form_inst_name_kana, + ci.inst_addr, + ci.prefc_cd + FROM + dcf_inst_merge di + LEFT OUTER JOIN com_inst ci + ON di.dcf_inst_cd_new = ci.dcf_dsf_inst_cd + WHERE + ci.delete_flg = '0' + AND STR_TO_DATE(di.tekiyo_month, '%Y%m') <= (SELECT STR_TO_DATE(syor_date, '%Y%m%d') FROM hdke_tbl) + AND di.muko_flg = '0' + AND di.enabled_flg = 'Y'; + + COMMIT; +END diff --git a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql new file mode 100644 index 00000000..bbc05090 --- /dev/null +++ b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql @@ -0,0 +1,65 @@ +-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する +CREATE PROCEDURE src05.v_inst_merge_t_create() +SQL SECURITY INVOKER +BEGIN + -- 例外処理 + -- エラーが発生した場合に一時テーブルの削除を実施 + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; + ROLLBACK; + SIGNAL SQLSTATE '45000' + SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; + END; + + SET @error_state = NULL, @error_msg = NULL; + START TRANSACTION; + + TRUNCATE TABLE internal05.v_inst_merge_t; + + INSERT INTO + internal05.v_inst_merge_t ( + v_inst_cd, + v_inst_cd_merge, + fcl_name, + fcl_kn_name, + fmt_addr, + prft_cd + ) + SELECT + vv.v_inst_cd, + vv.v_inst_cd_merg, + fv.fcl_name, + fv.fcl_kn_name, + fv.fmt_addr, + fv.prft_cd + FROM + src05.vop_hco_merge_v vv, + src05.fcl_mst_v fv + INNER JOIN ( + SELECT + v_inst_cd, + MAX(sub_num) AS sno + FROM + src05.fcl_mst_v + GROUP BY + v_inst_cd + ) fmv1 + ON fv.v_inst_cd = fmv1.v_inst_cd + AND fv.sub_num = fmv1.sno + WHERE + vv.v_inst_cd_merg = fv.v_inst_cd + AND STR_TO_DATE(vv.apply_dt, '%Y-%m-%d') <= ( + SELECT + STR_TO_DATE(syor_date, '%Y%m%d') + FROM + src05.hdke_tbl + ) + AND ((fcl_type IN ('A1','A0')) OR fcl_type BETWEEN '20' AND '29') + AND fv.rec_sts_kbn != '9' + ORDER BY + STR_TO_DATE(vv.apply_dt, '%Y-%m-%d') ASC; + + COMMIT; +END From 4e97b0b38e89bd7b42b4b4e22a2abca363e71f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 12 Apr 2023 15:15:15 +0900 Subject: [PATCH 02/30] =?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 --- .../stored_procedure/inst_merge_t_create.sql | 21 +++++----- .../v_inst_merge_t_create.sql | 38 ++++++++----------- 2 files changed, 24 insertions(+), 35 deletions(-) diff --git a/rds_mysql/stored_procedure/inst_merge_t_create.sql b/rds_mysql/stored_procedure/inst_merge_t_create.sql index 4f7e1b44..b6a2bcca 100644 --- a/rds_mysql/stored_procedure/inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/inst_merge_t_create.sql @@ -3,7 +3,6 @@ CREATE PROCEDURE src05.inst_merge_t_create() SQL SECURITY INVOKER BEGIN -- 例外処理 - -- エラーが発生した場合に一時テーブルの削除を実施 DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @@ -14,7 +13,6 @@ BEGIN END; SET @error_state = NULL, @error_msg = NULL; - START TRANSACTION; TRUNCATE TABLE internal05.inst_merge_t; @@ -28,21 +26,20 @@ BEGIN prefc_cd ) SELECT - di.dcf_inst_cd, - di.dcf_inst_cd_new, + dim.dcf_inst_cd, + dim.dcf_inst_cd_new, ci.form_inst_name_kanji, ci.form_inst_name_kana, ci.inst_addr, ci.prefc_cd FROM - dcf_inst_merge di - LEFT OUTER JOIN com_inst ci - ON di.dcf_inst_cd_new = ci.dcf_dsf_inst_cd + src05.dcf_inst_merge dim + LEFT OUTER JOIN src05.com_inst ci + ON dim.dcf_inst_cd_new = ci.dcf_dsf_inst_cd WHERE - ci.delete_flg = '0' - AND STR_TO_DATE(di.tekiyo_month, '%Y%m') <= (SELECT STR_TO_DATE(syor_date, '%Y%m%d') FROM hdke_tbl) - AND di.muko_flg = '0' - AND di.enabled_flg = 'Y'; + ci.delete_flg = '0' + AND src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date() + AND dim.muko_flg = '0' + AND dim.enabled_flg = 'Y'; - COMMIT; END diff --git a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql index bbc05090..7f8006cc 100644 --- a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql @@ -3,7 +3,6 @@ CREATE PROCEDURE src05.v_inst_merge_t_create() SQL SECURITY INVOKER BEGIN -- 例外処理 - -- エラーが発生した場合に一時テーブルの削除を実施 DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @@ -14,7 +13,6 @@ BEGIN END; SET @error_state = NULL, @error_msg = NULL; - START TRANSACTION; TRUNCATE TABLE internal05.v_inst_merge_t; @@ -28,15 +26,15 @@ BEGIN prft_cd ) SELECT - vv.v_inst_cd, - vv.v_inst_cd_merg, - fv.fcl_name, - fv.fcl_kn_name, - fv.fmt_addr, - fv.prft_cd + vhmv.v_inst_cd, + vhmv.v_inst_cd_merg, + fmv.fcl_name, + fmv.fcl_kn_name, + fmv.fmt_addr, + fmv.prft_cd FROM - src05.vop_hco_merge_v vv, - src05.fcl_mst_v fv + src05.vop_hco_merge_v vhmv, + src05.fcl_mst_v fmv INNER JOIN ( SELECT v_inst_cd, @@ -45,21 +43,15 @@ BEGIN src05.fcl_mst_v GROUP BY v_inst_cd - ) fmv1 - ON fv.v_inst_cd = fmv1.v_inst_cd - AND fv.sub_num = fmv1.sno + ) max_sno_fmv + ON fmv.v_inst_cd = max_sno_fmv.v_inst_cd + AND fmv.sub_num = max_sno_fmv.sno WHERE - vv.v_inst_cd_merg = fv.v_inst_cd - AND STR_TO_DATE(vv.apply_dt, '%Y-%m-%d') <= ( - SELECT - STR_TO_DATE(syor_date, '%Y%m%d') - FROM - src05.hdke_tbl - ) + vhmv.v_inst_cd_merg = fmv.v_inst_cd + AND STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') <= src05.get_syor_date() AND ((fcl_type IN ('A1','A0')) OR fcl_type BETWEEN '20' AND '29') - AND fv.rec_sts_kbn != '9' + AND fmv.rec_sts_kbn != '9' ORDER BY - STR_TO_DATE(vv.apply_dt, '%Y-%m-%d') ASC; + STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') ASC; - COMMIT; END From 4cc3c10a7aca4da5e303bd14def7ee428438d161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 12 Apr 2023 15:48:35 +0900 Subject: [PATCH 03/30] =?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 --- rds_mysql/stored_procedure/inst_merge_t_create.sql | 1 - rds_mysql/stored_procedure/v_inst_merge_t_create.sql | 1 - 2 files changed, 2 deletions(-) diff --git a/rds_mysql/stored_procedure/inst_merge_t_create.sql b/rds_mysql/stored_procedure/inst_merge_t_create.sql index b6a2bcca..62463b53 100644 --- a/rds_mysql/stored_procedure/inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/inst_merge_t_create.sql @@ -7,7 +7,6 @@ BEGIN BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; - ROLLBACK; SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; END; diff --git a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql index 7f8006cc..f9b5eb30 100644 --- a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/v_inst_merge_t_create.sql @@ -7,7 +7,6 @@ BEGIN BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; - ROLLBACK; SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; END; From 7cb4535634e05e93d0124de57c89b444a395b47f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Mon, 17 Apr 2023 17:56:30 +0900 Subject: [PATCH 04/30] =?UTF-8?q?feat:=20=E3=83=AD=E3=82=B0=E5=87=BA?= =?UTF-8?q?=E5=8A=9B=E6=A9=9F=E8=83=BD=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => src05}/inst_merge_t_create.sql | 18 +++++++++++++++++ .../{ => src05}/v_inst_merge_t_create.sql | 20 +++++++++++++++---- 2 files changed, 34 insertions(+), 4 deletions(-) rename rds_mysql/stored_procedure/{ => src05}/inst_merge_t_create.sql (52%) rename rds_mysql/stored_procedure/{ => src05}/v_inst_merge_t_create.sql (55%) diff --git a/rds_mysql/stored_procedure/inst_merge_t_create.sql b/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql similarity index 52% rename from rds_mysql/stored_procedure/inst_merge_t_create.sql rename to rds_mysql/stored_procedure/src05/inst_merge_t_create.sql index 62463b53..3d12307a 100644 --- a/rds_mysql/stored_procedure/inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql @@ -7,14 +7,28 @@ BEGIN BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; + call medaca_common.put_error_log('internal05', 'src05.inst_merge_t_create', JSON_OBJECT(), + 'src05.inst_merge_t_createでエラーが発生', @error_state, @error_msg); SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; END; SET @error_state = NULL, @error_msg = NULL; + call medaca_common.put_info_log('internal05', 'src05.inst_merge_t_create', JSON_OBJECT(), + 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 開始' + ); + TRUNCATE TABLE internal05.inst_merge_t; + call medaca_common.put_info_log('internal05', 'src05.inst_merge_t_create', JSON_OBJECT(), + 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 終了' + ); + + call medaca_common.put_info_log('internal05', 'src05.inst_merge_t_create', JSON_OBJECT(), + 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成② 開始' + ); + INSERT INTO internal05.inst_merge_t ( dcf_dsf_inst_cd, @@ -41,4 +55,8 @@ BEGIN AND dim.muko_flg = '0' AND dim.enabled_flg = 'Y'; + call medaca_common.put_info_log('internal05', 'src05.inst_merge_t_create', JSON_OBJECT(), + 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成② 終了' + ); + END diff --git a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql b/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql similarity index 55% rename from rds_mysql/stored_procedure/v_inst_merge_t_create.sql rename to rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql index f9b5eb30..665c4ec5 100644 --- a/rds_mysql/stored_procedure/v_inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/src05/v_inst_merge_t_create.sql @@ -7,14 +7,25 @@ BEGIN BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; + call medaca_common.put_error_log('internal05', 'src05.v_inst_merge_t_create', JSON_OBJECT(), + 'src05.v_inst_merge_t_createでエラーが発生', @error_state, @error_msg); SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; END; SET @error_state = NULL, @error_msg = NULL; + call medaca_common.put_info_log('internal05', 'src05.v_inst_merge_t_create', JSON_OBJECT(), + '【洗替】3:HCO施設コードの洗替① 開始'); + TRUNCATE TABLE internal05.v_inst_merge_t; + call medaca_common.put_info_log('internal05', 'src05.v_inst_merge_t_create', JSON_OBJECT(), + '【洗替】3:HCO施設コードの洗替① 終了'); + + call medaca_common.put_info_log('internal05', 'src05.v_inst_merge_t_create', JSON_OBJECT(), + '【洗替】3:HCO施設コードの洗替② 開始'); + INSERT INTO internal05.v_inst_merge_t ( v_inst_cd, @@ -48,9 +59,10 @@ 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 ((fcl_type IN ('A1','A0')) OR fcl_type BETWEEN '20' AND '29') - AND fmv.rec_sts_kbn != '9' - ORDER BY - STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') ASC; + 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('internal05', 'src05.v_inst_merge_t_create', JSON_OBJECT(), + '【洗替】3:HCO施設コードの洗替② 終了' ); END From f3e8c5a0670befc11788aedce770be866a86a6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 18 Apr 2023 10:47:44 +0900 Subject: [PATCH 05/30] =?UTF-8?q?feat:=20=E6=B4=97=E3=81=84=E6=9B=BF?= =?UTF-8?q?=E3=81=88=E7=94=A8=E3=83=9E=E3=82=B9=E3=82=BF=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E5=87=A6=E7=90=86=E7=94=A8=E3=81=AEpython=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/batch/datachange/res_mak_inst_lau.py | 20 +++++++++++++++ .../src/batch/jissekiaraigae.py | 25 +++++++++++-------- ecs/jskult-batch-daily/src/db/database.py | 5 +++- 3 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/datachange/res_mak_inst_lau.py diff --git a/ecs/jskult-batch-daily/src/batch/datachange/res_mak_inst_lau.py b/ecs/jskult-batch-daily/src/batch/datachange/res_mak_inst_lau.py new file mode 100644 index 00000000..bfd359a1 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/datachange/res_mak_inst_lau.py @@ -0,0 +1,20 @@ +from src.db.database import Database +from src.error.exceptions import BatchOperationException +from src.logging.get_logger import get_logger + +logger = get_logger('実績洗替') + + +def batch_process(): + db = Database.get_instance() + try: + db.connect() + except Exception as e: + logger.info("実績洗替 データベース接続に失敗") + raise BatchOperationException(e) + + logger.info('実績洗替 開始') + db.execute('CALL src05.v_inst_merge_t_create()') + db.execute('CALL src05.inst_merge_t_create()') + db.disconnect() + logger.info('実績洗替 終了') diff --git a/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py b/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py index 7f5d9fcf..93895f77 100644 --- a/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py +++ b/ecs/jskult-batch-daily/src/batch/jissekiaraigae.py @@ -1,11 +1,14 @@ -from src.batch.datachange import emp_chg_inst_lau -from src.logging.get_logger import get_logger - -logger = get_logger('実績洗替') - - -def batch_process(): - """実績洗替処理""" - logger.info('Start Jisseki Araigae Batch PGM.') - # 施設担当者洗替 - emp_chg_inst_lau.batch_process() +from src.batch.datachange import emp_chg_inst_lau +from src.batch.datachange import res_mak_inst_lau +from src.logging.get_logger import get_logger + +logger = get_logger('実績洗替') + + +def batch_process(): + """実績洗替処理""" + logger.info('Start Jisseki Araigae Batch PGM.') + # 洗替用マスタ作成 + res_mak_inst_lau.batch_process() + # 施設担当者洗替 + emp_chg_inst_lau.batch_process() diff --git a/ecs/jskult-batch-daily/src/db/database.py b/ecs/jskult-batch-daily/src/db/database.py index 7e8f845c..0317bc21 100644 --- a/ecs/jskult-batch-daily/src/db/database.py +++ b/ecs/jskult-batch-daily/src/db/database.py @@ -83,7 +83,10 @@ class Database: Raises: DBException: 接続失敗 """ - self.__connection = self.__engine.connect() + try: + self.__connection = self.__engine.connect() + except Exception as e: + raise DBException(e) def execute_select(self, select_query: str, parameters=None) -> list[dict]: """SELECTクエリを実行します。 From 73a234462a7b9511a6813c4e5bcc46876d1e0418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Tue, 18 Apr 2023 14:48:21 +0900 Subject: [PATCH 06/30] =?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 --- .../stored_procedure/src05/v_inst_merge_t_create.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 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 d550d121..fb609b8c 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 @@ -23,15 +23,15 @@ BEGIN SET @error_state = NULL, @error_msg = NULL; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】3:HCO施設コードの洗替① 開始'); + 'V施設統合マスタ(洗替処理一時テーブル)作成① 開始'); TRUNCATE TABLE internal05.v_inst_merge_t; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】3:HCO施設コードの洗替① 終了'); + 'V施設統合マスタ(洗替処理一時テーブル)作成① 終了'); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】3:HCO施設コードの洗替② 開始'); + 'V施設統合マスタ(洗替処理一時テーブル)作成② 開始'); INSERT INTO internal05.v_inst_merge_t ( @@ -70,6 +70,6 @@ BEGIN AND fmv.rec_sts_kbn != '9'; call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, - '【洗替】3:HCO施設コードの洗替② 終了' ); + 'V施設統合マスタ(洗替処理一時テーブル)作成② 終了' ); END From 81e1fc8abb5e5df82e2867d6bbea3db56d38c438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Wed, 19 Apr 2023 10:25:25 +0900 Subject: [PATCH 07/30] =?UTF-8?q?feat:=20=E4=BE=8B=E5=A4=96=E5=87=A6?= =?UTF-8?q?=E7=90=86=E3=81=AE=E6=A8=AA=E5=B1=95=E9=96=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datachange/create_inst_merge_for_laundering.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/datachange/create_inst_merge_for_laundering.py b/ecs/jskult-batch-daily/src/batch/datachange/create_inst_merge_for_laundering.py index 2e03188f..f631d460 100644 --- a/ecs/jskult-batch-daily/src/batch/datachange/create_inst_merge_for_laundering.py +++ b/ecs/jskult-batch-daily/src/batch/datachange/create_inst_merge_for_laundering.py @@ -10,14 +10,15 @@ def batch_process(): try: db.connect() + + logger.debug('処理開始') + call_v_inst_merge_t_create(db) + call_inst_merge_t_create(db) + logger.debug('処理終了') except Exception as e: raise BatchOperationException(e) - - logger.info('処理開始') - call_v_inst_merge_t_create(db) - call_inst_merge_t_create(db) - db.disconnect() - logger.info('処理終了') + finally: + db.disconnect() def call_v_inst_merge_t_create(db: Database): From aca55d20f9ab44a66a7642c35c563402105a979b Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 20 Apr 2023 10:55:23 +0900 Subject: [PATCH 08/30] =?UTF-8?q?feat:=20=E3=83=90=E3=83=83=E3=83=81?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E3=82=BF=E3=82=B9=E3=82=AF=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task_settings/batch_daily_task_settings.env | 16 ++++++++++++++++ .../batch_lanudering_task_settings.env | 8 ++++++++ .../batch_monthly_task_settings.env | 10 ++++++++++ .../task_settings/dbdump_task_settings.env | 7 +++++++ 4 files changed, 41 insertions(+) create mode 100644 s3/config/jskult/task_settings/batch_daily_task_settings.env create mode 100644 s3/config/jskult/task_settings/batch_lanudering_task_settings.env create mode 100644 s3/config/jskult/task_settings/batch_monthly_task_settings.env create mode 100644 s3/config/jskult/task_settings/dbdump_task_settings.env diff --git a/s3/config/jskult/task_settings/batch_daily_task_settings.env b/s3/config/jskult/task_settings/batch_daily_task_settings.env new file mode 100644 index 00000000..2590fe79 --- /dev/null +++ b/s3/config/jskult/task_settings/batch_daily_task_settings.env @@ -0,0 +1,16 @@ +# jskult batch daily task environment file. +LOG_LEVEL=DEBUG +ULTMARC_DATA_FOLDER=recv +VJSK_DATA_RECEIVE_FOLDER=recv +VJSK_DATA_SEND_FOLDER=send +ULTMARC_BACKUP_FOLDER=ultmarc +VJSK_BACKUP_FOLDER=vjsk +JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar +JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME=jskult_holiday_list.txt +JSKULT_CONFIG_CALENDAR_WHOLESALER_STOCK_FILENAME=jskult_wholesaler_stock_input_day_list.txt +SALES_LAUNDERING_EXTRACT_DATE_PERIOD=0 +SALES_LAUNDERING_TARGET_TABLE_NAME=src05.sales_lau +DB_CONNECTION_MAX_RETRY_ATTEMPT=4 +DB_CONNECTION_RETRY_INTERVAL_INIT=5 +DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS=5 +DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS=50 diff --git a/s3/config/jskult/task_settings/batch_lanudering_task_settings.env b/s3/config/jskult/task_settings/batch_lanudering_task_settings.env new file mode 100644 index 00000000..23a40f3f --- /dev/null +++ b/s3/config/jskult/task_settings/batch_lanudering_task_settings.env @@ -0,0 +1,8 @@ +# jskult batch lanudering task environment file. +LOG_LEVEL=DEBUG +SALES_LAUNDERING_EXTRACT_DATE_PERIOD=7 +SALES_LAUNDERING_TARGET_TABLE_NAME=src05.sales_lau_all +DB_CONNECTION_MAX_RETRY_ATTEMPT=4 +DB_CONNECTION_RETRY_INTERVAL_INIT=5 +DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS=5 +DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS=50 diff --git a/s3/config/jskult/task_settings/batch_monthly_task_settings.env b/s3/config/jskult/task_settings/batch_monthly_task_settings.env new file mode 100644 index 00000000..441779df --- /dev/null +++ b/s3/config/jskult/task_settings/batch_monthly_task_settings.env @@ -0,0 +1,10 @@ +# jskult batch monthly task environment file. +LOG_LEVEL=DEBUG +ARISJ_DATA_FOLDER=DATA +ARISJ_BACKUP_FOLDER=arisj +JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar +JSKULT_CONFIG_CALENDAR_ARISJ_OUTPUT_DAY_LIST_FILE_NAME=jskult_arisj_output_day_list.txt +DB_CONNECTION_MAX_RETRY_ATTEMPT=4 +DB_CONNECTION_RETRY_INTERVAL_INIT=5 +DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS=5 +DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS=50 diff --git a/s3/config/jskult/task_settings/dbdump_task_settings.env b/s3/config/jskult/task_settings/dbdump_task_settings.env new file mode 100644 index 00000000..9620ee44 --- /dev/null +++ b/s3/config/jskult/task_settings/dbdump_task_settings.env @@ -0,0 +1,7 @@ +# jskult db dump task environment file. +LOG_LEVEL=DEBUG +DUMP_BACKUP_FOLDER=dump +DB_CONNECTION_MAX_RETRY_ATTEMPT=4 +DB_CONNECTION_RETRY_INTERVAL_INIT=5 +DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS=5 +DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS=50 From 102e3318e4de5750b138a2a613d7875716644b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=9C=A8=E8=A6=81?= Date: Thu, 20 Apr 2023 13:35:46 +0900 Subject: [PATCH 09/30] =?UTF-8?q?feat:=20=E6=96=BD=E8=A8=AD=E6=8B=85?= =?UTF-8?q?=E5=BD=93=E8=80=85=E3=83=9E=E3=82=B9=E3=82=BF=E6=B4=97=E6=9B=BF?= =?UTF-8?q?=E3=81=AE=E5=8B=95=E4=BD=9C=E3=81=AB=E5=A4=89=E5=8C=96=E3=81=8C?= =?UTF-8?q?=E7=94=9F=E3=81=98=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=80=81inst=5Fmerge=5Ft=5Fcreate=E3=83=97=E3=83=AD=E3=82=B7?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=83=A3=E3=83=BC=E3=81=AESQL=E3=82=92?= =?UTF-8?q?=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/inst_merge_t_create.sql | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql b/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql index 0afdedad..74472fcc 100644 --- a/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql +++ b/rds_mysql/stored_procedure/src05/inst_merge_t_create.sql @@ -56,11 +56,12 @@ BEGIN src05.dcf_inst_merge dim LEFT OUTER JOIN src05.com_inst ci ON dim.dcf_inst_cd_new = ci.dcf_dsf_inst_cd + AND ci.delete_flg = '0' WHERE - ci.delete_flg = '0' - AND src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date() - AND dim.muko_flg = '0' - AND dim.enabled_flg = 'Y'; + dim.muko_flg = '0' + AND dim.dcf_inst_cd_new IS NOT NULL + AND dim.enabled_flg = 'Y' + AND src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date(); call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成② 終了' From 5eb217a048248eca988c78c16ed3f2ea7205e2ec Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 20 Apr 2023 15:53:27 +0900 Subject: [PATCH 10/30] =?UTF-8?q?feat:=20Web=E3=82=A2=E3=83=97=E3=83=AA?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E3=82=BF?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E8=A8=AD=E5=AE=9A=E3=83=95=E3=82=A1=E3=82=A4?= =?UTF-8?q?=E3=83=AB=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- s3/config/jskult/task_settings/web_task_settings.env | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 s3/config/jskult/task_settings/web_task_settings.env diff --git a/s3/config/jskult/task_settings/web_task_settings.env b/s3/config/jskult/task_settings/web_task_settings.env new file mode 100644 index 00000000..9cd4ecf8 --- /dev/null +++ b/s3/config/jskult/task_settings/web_task_settings.env @@ -0,0 +1,6 @@ +# webapp task environment file. +AWS_REGION=ap-northeast-1 +AUTHORIZE_ENDPOINT=oauth2/authorize +TOKEN_ENDPOINT=oauth2/token +BIO_SEARCH_RESULT_MAX_COUNT=35000 +SESSION_EXPIRE_MINUTE=20 From b0fbacc2eb4b961b71fa1c94271e39b0854683c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 20 Apr 2023 14:28:05 +0900 Subject: [PATCH 11/30] =?UTF-8?q?=E5=85=88=E9=80=B2=E5=8C=BB=E7=99=82?= =?UTF-8?q?=E6=A9=9F=E5=99=A8=E3=80=80=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py index ebea9e55..faf872ad 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -1,6 +1,6 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete import ( com_alma_mapper, com_dr_wrkplace_mapper, com_hamtec_mapper, - com_inst_mapper, null_mapper) + com_inst_mapper, com_pharm_mapper, com_forfront_med_equip_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database @@ -60,7 +60,7 @@ COM_TABLE_LIST = { # COM_高度先進医療 "021": com_hamtec_mapper.ComHamtecMapper, # COM_先端医療機器 - "022": null_mapper.NullMapper, + "022": com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, # COM_看護種別 "023": null_mapper.NullMapper, # COM_医療機能評価 From 5047c9c02ab65f3f8e3d7583c66e8d9d9972a3c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 20 Apr 2023 14:28:56 +0900 Subject: [PATCH 12/30] =?UTF-8?q?=E5=85=88=E9=80=B2=E5=8C=BB=E7=99=82?= =?UTF-8?q?=E6=A9=9F=E5=99=A8=E3=80=80=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_forfront_med_equip_mapper.py | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py new file mode 100644 index 00000000..62496980 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_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_forfront_med_equip import ComForfrontMedEquip + + +class ComForfrontMedEquipMapper(UltmarcTableMapper): + """レイアウト区分102: COM_薬局 登録処理 """ + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_forfront_med_equip + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_forfront_med_equip + ( + forfront_med_equip_cd, + forfront_med_equip_name, + regist_ymd, + update_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :hi_medicmach_code, + :hi_medicmach_name, + :execute_datetime, + :execute_datetime, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + # 更新用SQL + UPDATE_QUERY = """\ + UPDATE src05.com_forfront_med_equip + SET + forfront_med_equip_name = :hi_medicmach_name, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + + # 修正区分が「C(削除)」の場合の更新SQL + # 削除年月日 ← システム日付 + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_forfront_med_equip + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_date_str_ymd, + update_prgm_id = :program_name + WHERE + forfront_med_equip_cd = :hi_medicmach_code + """ + record: ComForfrontMedEquip + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComPharm) + 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.hi_medicmach_name != '': + self.queries.append(update_query) + return From da81de238d2136a70447d7985d5e59673b853e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 20 Apr 2023 14:29:27 +0900 Subject: [PATCH 13/30] =?UTF-8?q?=E5=85=88=E9=80=B2=E5=8C=BB=E7=99=82?= =?UTF-8?q?=E6=A9=9F=E5=99=A8=E3=80=80=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utmp_tables/tables/com_forfront_med_equip.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py new file mode 100644 index 00000000..261ca07c --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py @@ -0,0 +1,15 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComForfrontMedEquip(UltmarcTable): + """レイアウト区分022: COM_先端医療機器""" + hi_medicmach_code: str # 先進医療機器コード + hi_medicmach_name: str # 先端医療機器名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + + self.hi_medicmach_code = record[1] + self.hi_medicmach_name = record[4] + self.maint_flag = record[2] From d3fd0f7898ad3dbb14a55ee7727fcd8137c70018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Thu, 20 Apr 2023 18:32:06 +0900 Subject: [PATCH 14/30] =?UTF-8?q?=E5=85=88=E9=80=B2=E5=8C=BB=E7=99=82?= =?UTF-8?q?=E6=A9=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_forfront_med_equip_mapper.py | 16 +- .../tables/com_forfront_med_equip.py | 3 +- .../com_forfront_med_equip/__init__.py | 0 .../com_forfront_med_equip_delete.csv | 1 + .../com_forfront_med_equip_insert.csv | 1 + .../com_forfront_med_equip_update.csv | 2 + ...b_com_forfront_med_equip_before_delete.csv | 2 + ...b_com_forfront_med_equip_before_update.csv | 3 + .../expect_com_forfront_med_equip_delete.csv | 2 + .../expect_com_forfront_med_equip_insert.csv | 2 + .../expect_com_forfront_med_equip_update.csv | 3 + .../test_com_forfront_med_equip_mapper.py | 197 ++++++++++++++++++ 12 files changed, 222 insertions(+), 10 deletions(-) create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py index 62496980..3c4c4e18 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py @@ -1,10 +1,10 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ - UltmarcTableMapper +UltmarcTableMapper + from src.batch.ultmarc.utmp_tables.tables.com_forfront_med_equip import ComForfrontMedEquip - class ComForfrontMedEquipMapper(UltmarcTableMapper): - """レイアウト区分102: COM_薬局 登録処理 """ + """レイアウト区分022: COM_先進医療機器 登録処理 """ # レコード存在確認SQL RECORD_EXISTS_QUERY = """\ @@ -32,8 +32,8 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): VALUES ( :hi_medicmach_code, :hi_medicmach_name, - :execute_datetime, - :execute_datetime, + :execute_date_str_ymd, + :execute_date_str_ymd, NULL, :execute_datetime, :program_name, @@ -59,7 +59,7 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): src05.com_forfront_med_equip SET delete_ymd = :execute_date_str_ymd, - sys_update_date = :execute_date_str_ymd, + sys_update_date = :execute_datetime, update_prgm_id = :program_name WHERE forfront_med_equip_cd = :hi_medicmach_code @@ -67,7 +67,7 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): record: ComForfrontMedEquip def __init__(self, record: list[str], db) -> None: - super().__init__(record, db, ComPharm) + super().__init__(record, db, ComForfrontMedEquip) program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている) # モジュール名をクエリパラメータに設定 self.query_parameter['program_name'] = program_name @@ -89,5 +89,5 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): # 更新の場合 if self.record.hi_medicmach_name != '': - self.queries.append(update_query) + self.queries.append(self.UPDATE_QUERY) return diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py index 261ca07c..a7559d0e 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_forfront_med_equip.py @@ -9,7 +9,6 @@ class ComForfrontMedEquip(UltmarcTable): def __init__(self, record: list[str]): super().__init__(record) - self.hi_medicmach_code = record[1] - self.hi_medicmach_name = record[4] + self.hi_medicmach_name = record[5] self.maint_flag = record[2] diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv new file mode 100644 index 00000000..11deb49c --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv @@ -0,0 +1 @@ +"022","99","C",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv new file mode 100644 index 00000000..80c3e354 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv @@ -0,0 +1 @@ +"022","99","A",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv new file mode 100644 index 00000000..251fc712 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv @@ -0,0 +1,2 @@ +"022","98","B",,,"" +"022","99","B",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv new file mode 100644 index 00000000..2153bc3e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv @@ -0,0 +1,2 @@ +"forfront_med_equip_cd","forfront_med_equip_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" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv new file mode 100644 index 00000000..416587f9 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv @@ -0,0 +1,3 @@ +"forfront_med_equip_cd","forfront_med_equip_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" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv new file mode 100644 index 00000000..9d109626 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv @@ -0,0 +1,2 @@ +"forfront_med_equip_cd","forfront_med_equip_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" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv new file mode 100644 index 00000000..2153bc3e --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv @@ -0,0 +1,2 @@ +"forfront_med_equip_cd","forfront_med_equip_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" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv new file mode 100644 index 00000000..b5527022 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv @@ -0,0 +1,3 @@ +"forfront_med_equip_cd","forfront_med_equip_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" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" 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 new file mode 100644 index 00000000..b5d4cc09 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/test_com_forfront_med_equip_mapper.py @@ -0,0 +1,197 @@ +import os.path as path +from datetime import datetime + +import pytest + +from src.batch.common.batch_config import BatchConfig +from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_forfront_med_equip_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 TestComForfrontMedEquipMapper: + """ レイアウト区分022: COM_先端医療機器 """ + + db: Database + batch_config: BatchConfig + test_file_path: str = path.dirname(__file__) + + @pytest.fixture(autouse=True, scope='function') + def pre_test(self, database: Database): + """ テスト実行前後処理 """ + self.batch_config = BatchConfig.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_config.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_forfront_med_equip_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, 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_forfront_med_equip_insert.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + 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'] + 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_config.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_forfront_med_equip_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'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_forfront_med_equip_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_forfront_med_equip', + 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_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, 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_forfront_med_equip_update.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + 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'] + 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_config.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_forfront_med_equip_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_forfront_med_equip', {'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_forfront_med_equip_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_forfront_med_equip', + 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_forfront_med_equip_mapper.ComForfrontMedEquipMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, 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_forfront_med_equip_delete.csv')) + primary_keys = [f"'{primary_key['forfront_med_equip_cd']}'" for primary_key in expect_data_list] + 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'] + 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 8efa0e9204621acf0d507ab572d8bbce8b444100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 09:36:57 +0900 Subject: [PATCH 15/30] =?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_forfront_med_equip_mapper.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py index 3c4c4e18..d8ed1786 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py @@ -91,3 +91,6 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): if self.record.hi_medicmach_name != '': self.queries.append(self.UPDATE_QUERY) return + else: + return None + From 79447d3534e403a01f739f8f07d123c816f0a2c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 10:07:33 +0900 Subject: [PATCH 16/30] =?UTF-8?q?=E5=B7=AE=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_forfront_med_equip_mapper.py | 7 ++++--- .../utmp_tables/ultmarc_table_mapper_factory.py | 2 +- .../test_com_forfront_med_equip_mapper.py | 12 ++++++------ ecs/jskult-batch-daily/tests/testing_utility.py | 7 ++++--- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py index d8ed1786..00ebc987 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py @@ -1,8 +1,9 @@ from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ -UltmarcTableMapper + UltmarcTableMapper from src.batch.ultmarc.utmp_tables.tables.com_forfront_med_equip import ComForfrontMedEquip + class ComForfrontMedEquipMapper(UltmarcTableMapper): """レイアウト区分022: COM_先進医療機器 登録処理 """ @@ -92,5 +93,5 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): self.queries.append(self.UPDATE_QUERY) return else: - return None - + self.queries.append(None) + return 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 faf872ad..54507832 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_pharm_mapper, com_forfront_med_equip_mapper, null_mapper) + com_inst_mapper, com_forfront_med_equip_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database 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 b5d4cc09..fccc56ad 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 @@ -3,7 +3,7 @@ from datetime import datetime import pytest -from src.batch.common.batch_config import BatchConfig +from src.batch.common.batch_context import BatchContext from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_forfront_med_equip_mapper from src.db.database import Database from tests.testing_utility import (assert_table_results, @@ -18,13 +18,13 @@ class TestComForfrontMedEquipMapper: """ レイアウト区分022: COM_先端医療機器 """ db: Database - batch_config: BatchConfig + batch_context: BatchContext test_file_path: str = path.dirname(__file__) @pytest.fixture(autouse=True, scope='function') def pre_test(self, database: Database): """ テスト実行前後処理 """ - self.batch_config = BatchConfig.get_instance() + self.batch_context = BatchContext.get_instance() # setup self.db = database self.db.connect() @@ -50,7 +50,7 @@ class TestComForfrontMedEquipMapper: # Arrange # 処理日設定 - self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + 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_forfront_med_equip_insert.csv')) # 一旦全データをDBから削除 @@ -95,7 +95,7 @@ class TestComForfrontMedEquipMapper: # Arrange # 処理日設定 - self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + 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_forfront_med_equip_update.csv')) # 一旦全データをDBから削除 @@ -152,7 +152,7 @@ class TestComForfrontMedEquipMapper: # Arrange # 処理日設定 - self.batch_config.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d') + 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_forfront_med_equip_delete.csv')) # 一旦全データをDBから削除 diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index e95da8e7..5a6c3a42 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -1,5 +1,5 @@ -"""テスト用共通処理関数""" import csv +import os import tempfile from datetime import datetime @@ -22,12 +22,13 @@ def create_ultmarc_test_data_from_csv(file_path: str) -> DatFile: """ # 一度、Shift-JISファイルで書き出す - with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932') as tmp_file: + with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932', delete=False) as tmp_file: tmp_file.write(csv_file.read()) tmp_file.seek(0) tmpfile_path = tmp_file.name - dat_file = DatFile.from_path(tmpfile_path) + dat_file = DatFile.from_path(tmpfile_path) + os.unlink(tmpfile_path) return dat_file From 55674e03e9fa5877f36423f14139aacc78c784ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 10:17:36 +0900 Subject: [PATCH 17/30] =?UTF-8?q?win=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-batch-daily/tests/testing_utility.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ecs/jskult-batch-daily/tests/testing_utility.py b/ecs/jskult-batch-daily/tests/testing_utility.py index e95da8e7..5a6c3a42 100644 --- a/ecs/jskult-batch-daily/tests/testing_utility.py +++ b/ecs/jskult-batch-daily/tests/testing_utility.py @@ -1,5 +1,5 @@ -"""テスト用共通処理関数""" import csv +import os import tempfile from datetime import datetime @@ -22,12 +22,13 @@ def create_ultmarc_test_data_from_csv(file_path: str) -> DatFile: """ # 一度、Shift-JISファイルで書き出す - with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932') as tmp_file: + with open(file_path, encoding='utf8') as csv_file, tempfile.NamedTemporaryFile('w', encoding='cp932', delete=False) as tmp_file: tmp_file.write(csv_file.read()) tmp_file.seek(0) tmpfile_path = tmp_file.name - dat_file = DatFile.from_path(tmpfile_path) + dat_file = DatFile.from_path(tmpfile_path) + os.unlink(tmpfile_path) return dat_file From d64d6d2d4589c236f2f3a12612d979b20da714a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 15:38:13 +0900 Subject: [PATCH 18/30] =?UTF-8?q?=E5=85=88=E7=AB=AF=E5=8C=BB=E7=99=82?= =?UTF-8?q?=E6=A9=9F=E5=99=A8=E3=80=80=E5=8D=98=E4=BD=93=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_forfront_med_equip_mapper.py | 5 ++--- .../com_forfront_med_equip_delete.csv | 6 ++++++ .../com_forfront_med_equip_insert.csv | 6 ++++++ .../com_forfront_med_equip_update.csv | 7 ++++++- .../db_com_forfront_med_equip_before_delete.csv | 6 ++++++ .../db_com_forfront_med_equip_before_update.csv | 10 ++++++++-- .../expect_com_forfront_med_equip_delete.csv | 8 +++++++- .../expect_com_forfront_med_equip_insert.csv | 8 +++++++- .../expect_com_forfront_med_equip_update.csv | 10 ++++++++-- .../test_com_forfront_med_equip_mapper.py | 4 ++-- 10 files changed, 58 insertions(+), 12 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py index 00ebc987..2892d074 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_forfront_med_equip_mapper.py @@ -5,7 +5,7 @@ from src.batch.ultmarc.utmp_tables.tables.com_forfront_med_equip import ComForfr class ComForfrontMedEquipMapper(UltmarcTableMapper): - """レイアウト区分022: COM_先進医療機器 登録処理 """ + """レイアウト区分022: COM_先端医療機器 登録処理 """ # レコード存在確認SQL RECORD_EXISTS_QUERY = """\ @@ -23,7 +23,6 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): forfront_med_equip_cd, forfront_med_equip_name, regist_ymd, - update_ymd, delete_ymd, sys_regist_date, regist_prgm_id, @@ -34,7 +33,6 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): :hi_medicmach_code, :hi_medicmach_name, :execute_date_str_ymd, - :execute_date_str_ymd, NULL, :execute_datetime, :program_name, @@ -47,6 +45,7 @@ class ComForfrontMedEquipMapper(UltmarcTableMapper): UPDATE src05.com_forfront_med_equip SET forfront_med_equip_name = :hi_medicmach_name, + update_ymd = :execute_date_str_ymd, sys_update_date = :execute_datetime, update_prgm_id = :program_name WHERE diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv index 11deb49c..39f5dce7 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv @@ -1 +1,7 @@ +"022","11","A","20141113","20141114","" +"022","12","A","20141113","20141114","X線CT" +"022","13","A","20141113","20141114","CR" +"022","14","C","20141113","20141114","血管造影システム" +"022","15","A","20141113","20141114","アンガー型カメラ" +"022","16","A","20141113","20141114","SPECT" "022","99","C",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv index 80c3e354..fe5ae507 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_insert.csv @@ -1 +1,7 @@ +"022","11","A","20141113","20141114","MRI" +"022","12","A","20141113","20141114","X線CT" +"022","13","A","20141113","20141114","CR" +"022","14","A","20141113","20141114","血管造影システム" +"022","15","A","20141113","20141114","SPECT" +"022","16","A","20141113","20141114","アンガー型カメラ" "022","99","A",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv index 251fc712..5ae8452f 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_update.csv @@ -1,2 +1,7 @@ -"022","98","B",,,"" +"022","11","B","20141113","20141114","" +"022","12","B","20141113","20141114","X線CT" +"022","13","B","20141113","20141114","CR" +"022","14","B","20141113","20141114","血管造影システム" +"022","15","B","20141113","20141114","アンガー型カメラ" +"022","16","B","20141113","20141114","SPECT" "022","99","B",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv index 2153bc3e..e9b7e50d 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_delete.csv @@ -1,2 +1,8 @@ "forfront_med_equip_cd","forfront_med_equip_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" +"11","MRI","20171023","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","clsComForfrontMedEqu" +"12","X線CT","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"13","CR","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"14","血管造影システム","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"15","アンガー型カメラ","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" +"16","SPECT","20171023","20171023","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","clsComForfrontMedEqu" "99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv index 416587f9..716c01cc 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/db_com_forfront_med_equip_before_update.csv @@ -1,3 +1,9 @@ "forfront_med_equip_cd","forfront_med_equip_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" -"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" -"99","あいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえおあいうえお","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"12","X線CT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"13","CR","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"15","SPECT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"16","アンガー型カメラ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv index 9d109626..0eead53f 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_delete.csv @@ -1,2 +1,8 @@ "forfront_med_equip_cd","forfront_med_equip_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" -"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"11","MRI","20171023","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:07:41","clsComForfrontMedEqu" +"12","X線CT","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"13","CR","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"14","血管造影システム","20171023","20171023","20230421","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:14:25","com_forfront_med_equip_mapper" +"15","アンガー型カメラ","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"16","SPECT","20171023","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230421","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv index 2153bc3e..4c37e0fd 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_insert.csv @@ -1,2 +1,8 @@ "forfront_med_equip_cd","forfront_med_equip_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" -"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"12","X線CT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"13","CR","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"15","SPECT","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"16","アンガー型カメラ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","com_forfront_med_equip_mapper","2017/10/23 15:01:26","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv index b5527022..133e13a9 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/expect_com_forfront_med_equip_update.csv @@ -1,3 +1,9 @@ "forfront_med_equip_cd","forfront_med_equip_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" -"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" -"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230420","20230420","20230420","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"11","MRI","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/21 10:01:26","clsComForfrontMedEqu","2017/10/23 10:07:41","com_forfront_med_equip_mapper" +"12","X線CT","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"13","CR","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 10:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"14","血管造影システム","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"15","アンガー型カメラ","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"16","SPECT","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2017/10/23 15:01:26","clsComForfrontMedEqu","2017/10/23 15:10:02","com_forfront_med_equip_mapper" +"98","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" +"99","亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ","20230421","20230421","NULL","NULL","NULL","NULL","NULL","2023/04/19 00:00:00","com_forfront_med_equip_mapper","2023/04/19 00:00:00","com_forfront_med_equip_mapper" 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..73292fd8 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 @@ -28,13 +28,13 @@ class TestComForfrontMedEquipMapper: # 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 9aea1a589ad5de1af902f096ac5bb679ab11b4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 16:24:45 +0900 Subject: [PATCH 19/30] =?UTF-8?q?DB=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=82=92=E5=A4=96=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_com_forfront_med_equip_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_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 73292fd8..fccc56ad 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 @@ -28,13 +28,13 @@ class TestComForfrontMedEquipMapper: # 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 3bdc7495b5b65e16def9fc1907c2b74216cef82a Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 21 Apr 2023 16:28:47 +0900 Subject: [PATCH 20/30] =?UTF-8?q?feat:=20=E6=97=A5=E6=AC=A1=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=83=81=E3=81=AEStepFunctions=E3=82=92=E4=BD=9C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stepfunctions/TOOLS/convert_config.yaml | 47 +++++++++++- .../r-jskult-batch-daily-state.json | 72 +++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index be3baa0e..b2822e23 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -20,6 +20,14 @@ resource: - &STG_SG_ECS_ALL "sg-051e0fb9925539592" # セキュリティグループ(ecs-crm-datafetch) - &STG_SG_CRM_DATAFETCH "sg-0b20b7bb1cb1ab886" + # セキュリティグループ(ecs-jskult-batch-daily) + - &STG_SG_JSKULT_BATCH_DAILY "sg-020b3f6a5a6d6a3a0" + # セキュリティグループ(ecs-jskult-batch-monthly) + - &STG_SG_JSKULT_BATCH_MONTHLY "sg-05c7ad620d69e6f5f" + # セキュリティグループ(ecs-jskult-dbdump) + - &STG_SG_JSKULT_DBDUMP "sg-0967779af13538a8e" + # セキュリティグループ(ecs-jskult-batch-laundering) + - &STG_SG_JSKULT_BATCH_LAUNDERING "sg-00b9ea30c5c6bb77a" # 本番環境 product: # サブネット(PrivateSubnet1) @@ -30,7 +38,15 @@ resource: - &PRD_SG_ECS_ALL "sg-05df4823fc789b0fa" # セキュリティグループ(ecs-crm-datafetch) - &PRD_SG_CRM_DATAFETCH "sg-04de7fc3357d852af" - + # TODO: 本番リリース時にIDを正式化する + # セキュリティグループ(ecs-jskult-batch-daily) + - &PRD_SG_JSKULT_BATCH_DAILY "sg-xxxxxxxxxxxxxxxx" + # セキュリティグループ(ecs-jskult-batch-monthly) + - &PRD_SG_JSKULT_BATCH_MONTHLY "sg-xxxxxxxxxxxxxxxx" + # セキュリティグループ(ecs-jskult-dbdump) + - &PRD_SG_JSKULT_DBDUMP "sg-xxxxxxxxxxxxxxxx" + # セキュリティグループ(ecs-jskult-batch-laundering) + - &PRD_SG_JSKULT_BATCH_LAUNDERING "sg-xxxxxxxxxxxxxxxx" config: r-crm-datafetch-state: # ステージング環境 @@ -74,3 +90,32 @@ config: AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID # 東京リージョン REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + r-jskult-batch-daily-state: + # ステージング環境 + staging: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *STG_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *STG_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *STG_SG_ECS_ALL + # セキュリティグループ(ecs-crm-datafetch) + SG_JSKULT_BATCH_DAILY: *STG_SG_JSKULT_BATCH_DAILY + # 本番環境 + product: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *PRD_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *PRD_SG_ECS_ALL + # セキュリティグループ(ecs-crm-datafetch) + SG_JSKULT_BATCH_DAILY: *PRD_SG_JSKULT_BATCH_DAILY diff --git a/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json b/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json new file mode 100644 index 00000000..10f36de2 --- /dev/null +++ b/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json @@ -0,0 +1,72 @@ +{ + "Comment": "MeDaCA 実消化&アルトマーク 日次バッチ起動ステートマシン", + "StartAt": "params", + "States": { + "params": { + "Comment": "パラメータ設定", + "Type": "Pass", + "Parameters": { + "sns": { + "TopicArn": "arn:aws:sns:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:nds-notice-#{ENV_NAME}" + }, + "ecs": { + "Cluster": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:cluster/mbj-newdwh2021-#{ENV_NAME}-jskult-batch-daily-ecs", + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "Subnets": [ + "#{SUBNET_PRI_1A}", + "#{SUBNET_PRI_1D}" + ], + "SecurityGroups": [ + "#{SG_ECS_ALL}", + "#{SG_JSKULT_BATCH_DAILY}" + ], + "AssignPublicIp": "DISABLED" + } + } + } + }, + "ResultPath": "$.params", + "Next": "exec-batch-daily" + }, + "exec-batch-daily": { + "Comment": "実消化&アルトマーク 日次バッチ", + "Type": "Task", + "Resource": "arn:aws:states:::ecs:runTask.sync", + "Parameters": { + "Cluster.$": "$.params.ecs.Cluster", + "LaunchType.$": "$.params.ecs.LaunchType", + "TaskDefinition": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:task-definition/mbj-newdwh2021-#{ENV_NAME}-task-jskult-batch-daily", + "NetworkConfiguration.$": "$.params.ecs.NetworkConfiguration" + }, + "Retry": [ + { + "ErrorEquals": ["States.ALL"], + "BackoffRate": 2, + "IntervalSeconds": 5, + "MaxAttempts": 3 + } + ], + "Catch": [ + { + "ErrorEquals": ["States.ALL"], + "ResultPath": "$.result", + "Next": "ErrorEnd" + } + ], + "ResultPath": "$.result", + "Next": "NormalEnd" + }, + "NormalEnd": { + "Comment": "正常終了", + "Type": "Succeed" + }, + "ErrorEnd": { + "Comment": "異常終了", + "Type": "Fail", + "Error": "StatesError", + "Cause": "StepFunctions ErrorEnd" + } + } +} From b52f8e6611812c6dbaaefcb94cfd72a2837b9876 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 21 Apr 2023 16:37:27 +0900 Subject: [PATCH 21/30] =?UTF-8?q?feat:=20=E6=9C=88=E6=AC=A1=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=83=81=E3=81=AE=E3=82=B9=E3=83=86=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=83=9E=E3=82=B7=E3=83=B3=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stepfunctions/TOOLS/convert_config.yaml | 37 +++++++++- .../r-jskult-batch-monthly-state.json | 72 +++++++++++++++++++ 2 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index b2822e23..ef81ab5e 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -48,6 +48,7 @@ resource: # セキュリティグループ(ecs-jskult-batch-laundering) - &PRD_SG_JSKULT_BATCH_LAUNDERING "sg-xxxxxxxxxxxxxxxx" config: + # CRMデータ取得 r-crm-datafetch-state: # ステージング環境 staging: @@ -77,6 +78,7 @@ config: SG_ECS_ALL: *PRD_SG_ECS_ALL # セキュリティグループ(ecs-crm-datafetch) SG_CRM_DATAFETCH: *PRD_SG_CRM_DATAFETCH + # データ登録処理 r-data-import-state: # ステージング環境 staging: @@ -90,6 +92,7 @@ config: AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID # 東京リージョン REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # 実消化&アルトマーク 日次バッチ r-jskult-batch-daily-state: # ステージング環境 staging: @@ -103,7 +106,7 @@ config: SUBNET_PRI_1D: *STG_SUBNET_PRI_1D # セキュリティグループ(ecs-all) SG_ECS_ALL: *STG_SG_ECS_ALL - # セキュリティグループ(ecs-crm-datafetch) + # セキュリティグループ(ecs-jskut-batch-daily) SG_JSKULT_BATCH_DAILY: *STG_SG_JSKULT_BATCH_DAILY # 本番環境 product: @@ -117,5 +120,35 @@ config: SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D # セキュリティグループ(ecs-all) SG_ECS_ALL: *PRD_SG_ECS_ALL - # セキュリティグループ(ecs-crm-datafetch) + # セキュリティグループ(ecs-jskut-batch-daily) SG_JSKULT_BATCH_DAILY: *PRD_SG_JSKULT_BATCH_DAILY + # 実消化&アルトマーク 月次バッチ + r-jskult-batch-monthly-state: + # ステージング環境 + staging: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *STG_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *STG_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *STG_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-batch-daily) + SG_JSKULT_BATCH_MONTHLY: *STG_SG_JSKULT_BATCH_MONTHLY + # 本番環境 + product: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *PRD_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *PRD_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-batch-daily) + SG_JSKULT_BATCH_MONTHLY: *PRD_SG_JSKULT_BATCH_MONTHLY diff --git a/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json b/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json new file mode 100644 index 00000000..e149bc4a --- /dev/null +++ b/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json @@ -0,0 +1,72 @@ +{ + "Comment": "MeDaCA 実消化&アルトマーク 月次バッチ起動ステートマシン", + "StartAt": "params", + "States": { + "params": { + "Comment": "パラメータ設定", + "Type": "Pass", + "Parameters": { + "sns": { + "TopicArn": "arn:aws:sns:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:nds-notice-#{ENV_NAME}" + }, + "ecs": { + "Cluster": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:cluster/mbj-newdwh2021-#{ENV_NAME}-jskult-batch-monthly-ecs", + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "Subnets": [ + "#{SUBNET_PRI_1A}", + "#{SUBNET_PRI_1D}" + ], + "SecurityGroups": [ + "#{SG_ECS_ALL}", + "#{SG_JSKULT_BATCH_MONTHLY}" + ], + "AssignPublicIp": "DISABLED" + } + } + } + }, + "ResultPath": "$.params", + "Next": "exec-batch-monthly" + }, + "exec-batch-monthly": { + "Comment": "実消化&アルトマーク 日次バッチ", + "Type": "Task", + "Resource": "arn:aws:states:::ecs:runTask.sync", + "Parameters": { + "Cluster.$": "$.params.ecs.Cluster", + "LaunchType.$": "$.params.ecs.LaunchType", + "TaskDefinition": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:task-definition/mbj-newdwh2021-#{ENV_NAME}-task-jskult-batch-monthly", + "NetworkConfiguration.$": "$.params.ecs.NetworkConfiguration" + }, + "Retry": [ + { + "ErrorEquals": ["States.ALL"], + "BackoffRate": 2, + "IntervalSeconds": 5, + "MaxAttempts": 3 + } + ], + "Catch": [ + { + "ErrorEquals": ["States.ALL"], + "ResultPath": "$.result", + "Next": "ErrorEnd" + } + ], + "ResultPath": "$.result", + "Next": "NormalEnd" + }, + "NormalEnd": { + "Comment": "正常終了", + "Type": "Succeed" + }, + "ErrorEnd": { + "Comment": "異常終了", + "Type": "Fail", + "Error": "StatesError", + "Cause": "StepFunctions ErrorEnd" + } + } +} From a5d48cbff8e85b71d86b2ab8a103a74267e1dd08 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 21 Apr 2023 17:12:02 +0900 Subject: [PATCH 22/30] =?UTF-8?q?feat:=20=E6=97=A5=E6=AC=A1dump=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E3=81=AE=E3=82=B9=E3=83=86=E3=83=BC=E3=83=88=E3=83=9E?= =?UTF-8?q?=E3=82=B7=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stepfunctions/TOOLS/convert_config.yaml | 30 ++++++++ .../r-jskult-batch-daily-state.json | 2 +- .../r-jskult-batch-monthly-state.json | 2 +- .../r-jskult-dbdump-state.json | 72 +++++++++++++++++++ 4 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index ef81ab5e..172bfbbd 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -152,3 +152,33 @@ config: SG_ECS_ALL: *PRD_SG_ECS_ALL # セキュリティグループ(ecs-jskut-batch-daily) SG_JSKULT_BATCH_MONTHLY: *PRD_SG_JSKULT_BATCH_MONTHLY + # 実消化&アルトマーク 日次dump取得 + r-jskult-dbdump-state: + # ステージング環境 + staging: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *STG_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *STG_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *STG_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-dbdump) + SG_JSKULT_DBDUMP: *STG_SG_JSKULT_DBDUMP + # 本番環境 + product: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *PRD_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *PRD_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-dbdump) + SG_JSKULT_DBDUMP: *PRD_SG_JSKULT_DBDUMP diff --git a/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json b/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json index 10f36de2..07964c60 100644 --- a/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json +++ b/stepfunctions/r-jskult-batch-daily-state/r-jskult-batch-daily-state.json @@ -31,7 +31,7 @@ "Next": "exec-batch-daily" }, "exec-batch-daily": { - "Comment": "実消化&アルトマーク 日次バッチ", + "Comment": "実消化&アルトマーク 日次バッチ起動", "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { diff --git a/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json b/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json index e149bc4a..468127bc 100644 --- a/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json +++ b/stepfunctions/r-jskult-batch-monthly-state/r-jskult-batch-monthly-state.json @@ -31,7 +31,7 @@ "Next": "exec-batch-monthly" }, "exec-batch-monthly": { - "Comment": "実消化&アルトマーク 日次バッチ", + "Comment": "実消化&アルトマーク 月次バッチ起動", "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { diff --git a/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json b/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json new file mode 100644 index 00000000..dbcfb4b4 --- /dev/null +++ b/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json @@ -0,0 +1,72 @@ +{ + "Comment": "MeDaCA 実消化&アルトマーク 日次dump取得ステートマシン", + "StartAt": "params", + "States": { + "params": { + "Comment": "パラメータ設定", + "Type": "Pass", + "Parameters": { + "sns": { + "TopicArn": "arn:aws:sns:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:nds-notice-#{ENV_NAME}" + }, + "ecs": { + "Cluster": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:cluster/mbj-newdwh2021-#{ENV_NAME}-jskult-dbdump-ecs", + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "Subnets": [ + "#{SUBNET_PRI_1A}", + "#{SUBNET_PRI_1D}" + ], + "SecurityGroups": [ + "#{SG_ECS_ALL}", + "#{SG_JSKULT_DBDUMP}" + ], + "AssignPublicIp": "DISABLED" + } + } + } + }, + "ResultPath": "$.params", + "Next": "exec-batch-monthly" + }, + "exec-batch-monthly": { + "Comment": "実消化&アルトマーク 日次dump取得起動", + "Type": "Task", + "Resource": "arn:aws:states:::ecs:runTask.sync", + "Parameters": { + "Cluster.$": "$.params.ecs.Cluster", + "LaunchType.$": "$.params.ecs.LaunchType", + "TaskDefinition": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:task-definition/mbj-newdwh2021-#{ENV_NAME}-task-jskult-dbdump", + "NetworkConfiguration.$": "$.params.ecs.NetworkConfiguration" + }, + "Retry": [ + { + "ErrorEquals": ["States.ALL"], + "BackoffRate": 2, + "IntervalSeconds": 5, + "MaxAttempts": 3 + } + ], + "Catch": [ + { + "ErrorEquals": ["States.ALL"], + "ResultPath": "$.result", + "Next": "ErrorEnd" + } + ], + "ResultPath": "$.result", + "Next": "NormalEnd" + }, + "NormalEnd": { + "Comment": "正常終了", + "Type": "Succeed" + }, + "ErrorEnd": { + "Comment": "異常終了", + "Type": "Fail", + "Error": "StatesError", + "Cause": "StepFunctions ErrorEnd" + } + } +} From efdc0a0a2398f1c616a120d8a38f377242a00576 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 21 Apr 2023 17:42:43 +0900 Subject: [PATCH 23/30] =?UTF-8?q?feat:=20=E5=AE=9F=E7=B8=BE=E5=85=A8?= =?UTF-8?q?=E4=BB=B6=E6=B4=97=E6=9B=BF=E3=83=90=E3=83=83=E3=83=81=E3=81=AE?= =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=83=88=E3=83=9E=E3=82=B7=E3=83=B3?= =?UTF-8?q?=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stepfunctions/TOOLS/convert_config.yaml | 34 ++++++++- .../r-jskult-batch-laundering-state.json | 72 +++++++++++++++++++ .../r-jskult-dbdump-state.json | 4 +- 3 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 stepfunctions/r-jskult-batch-laundering-state/r-jskult-batch-laundering-state.json diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index 172bfbbd..c68ae70a 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -136,7 +136,7 @@ config: SUBNET_PRI_1D: *STG_SUBNET_PRI_1D # セキュリティグループ(ecs-all) SG_ECS_ALL: *STG_SG_ECS_ALL - # セキュリティグループ(ecs-jskut-batch-daily) + # セキュリティグループ(ecs-jskut-batch-monthly) SG_JSKULT_BATCH_MONTHLY: *STG_SG_JSKULT_BATCH_MONTHLY # 本番環境 product: @@ -150,7 +150,7 @@ config: SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D # セキュリティグループ(ecs-all) SG_ECS_ALL: *PRD_SG_ECS_ALL - # セキュリティグループ(ecs-jskut-batch-daily) + # セキュリティグループ(ecs-jskut-batch-monthly) SG_JSKULT_BATCH_MONTHLY: *PRD_SG_JSKULT_BATCH_MONTHLY # 実消化&アルトマーク 日次dump取得 r-jskult-dbdump-state: @@ -182,3 +182,33 @@ config: SG_ECS_ALL: *PRD_SG_ECS_ALL # セキュリティグループ(ecs-jskut-dbdump) SG_JSKULT_DBDUMP: *PRD_SG_JSKULT_DBDUMP + # 実消化&アルトマーク 実績洗替バッチ + r-jskult-batch-laundering-state: + # ステージング環境 + staging: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *STG_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *STG_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *STG_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-batch-laundering) + SG_JSKULT_BATCH_LAUNDERING: *STG_SG_JSKULT_BATCH_LAUNDERING + # 本番環境 + product: + # AWSアカウントID + AWS_ACCOUNT_ID: *AWS_ACCOUNT_ID + # 東京リージョン + REGION_AP_NORTHEAST_1: *REGION_AP_NORTHEAST_1 + # サブネット(PrivateSubnet1) + SUBNET_PRI_1A: *PRD_SUBNET_PRI_1A + # サブネット(PrivateSubnet2) + SUBNET_PRI_1D: *PRD_SUBNET_PRI_1D + # セキュリティグループ(ecs-all) + SG_ECS_ALL: *PRD_SG_ECS_ALL + # セキュリティグループ(ecs-jskut-batch-laundering) + SG_JSKULT_BATCH_LAUNDERING: *STG_SG_JSKULT_BATCH_LAUNDERING diff --git a/stepfunctions/r-jskult-batch-laundering-state/r-jskult-batch-laundering-state.json b/stepfunctions/r-jskult-batch-laundering-state/r-jskult-batch-laundering-state.json new file mode 100644 index 00000000..c720e349 --- /dev/null +++ b/stepfunctions/r-jskult-batch-laundering-state/r-jskult-batch-laundering-state.json @@ -0,0 +1,72 @@ +{ + "Comment": "MeDaCA 実消化&アルトマーク 実績全件洗替バッチ起動ステートマシン", + "StartAt": "params", + "States": { + "params": { + "Comment": "パラメータ設定", + "Type": "Pass", + "Parameters": { + "sns": { + "TopicArn": "arn:aws:sns:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:nds-notice-#{ENV_NAME}" + }, + "ecs": { + "Cluster": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:cluster/mbj-newdwh2021-#{ENV_NAME}-jskult-batch-laundering-ecs", + "LaunchType": "FARGATE", + "NetworkConfiguration": { + "AwsvpcConfiguration": { + "Subnets": [ + "#{SUBNET_PRI_1A}", + "#{SUBNET_PRI_1D}" + ], + "SecurityGroups": [ + "#{SG_ECS_ALL}", + "#{SG_JSKULT_BATCH_LAUNDERING}" + ], + "AssignPublicIp": "DISABLED" + } + } + } + }, + "ResultPath": "$.params", + "Next": "exec-batch-laundering" + }, + "exec-batch-laundering": { + "Comment": "実消化&アルトマーク 実績全件洗替バッチ起動", + "Type": "Task", + "Resource": "arn:aws:states:::ecs:runTask.sync", + "Parameters": { + "Cluster.$": "$.params.ecs.Cluster", + "LaunchType.$": "$.params.ecs.LaunchType", + "TaskDefinition": "arn:aws:ecs:#{REGION_AP_NORTHEAST_1}:#{AWS_ACCOUNT_ID}:task-definition/mbj-newdwh2021-#{ENV_NAME}-task-jskult-batch-laundering", + "NetworkConfiguration.$": "$.params.ecs.NetworkConfiguration" + }, + "Retry": [ + { + "ErrorEquals": ["States.ALL"], + "BackoffRate": 2, + "IntervalSeconds": 5, + "MaxAttempts": 3 + } + ], + "Catch": [ + { + "ErrorEquals": ["States.ALL"], + "ResultPath": "$.result", + "Next": "ErrorEnd" + } + ], + "ResultPath": "$.result", + "Next": "NormalEnd" + }, + "NormalEnd": { + "Comment": "正常終了", + "Type": "Succeed" + }, + "ErrorEnd": { + "Comment": "異常終了", + "Type": "Fail", + "Error": "StatesError", + "Cause": "StepFunctions ErrorEnd" + } + } +} diff --git a/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json b/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json index dbcfb4b4..47fc9208 100644 --- a/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json +++ b/stepfunctions/r-jskult-dbdump-state/r-jskult-dbdump-state.json @@ -28,9 +28,9 @@ } }, "ResultPath": "$.params", - "Next": "exec-batch-monthly" + "Next": "exec-dbdump" }, - "exec-batch-monthly": { + "exec-dbdump": { "Comment": "実消化&アルトマーク 日次dump取得起動", "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", From a50d021ae5639f997425f5d3bc0dafb2603cc1ec Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Fri, 21 Apr 2023 17:44:27 +0900 Subject: [PATCH 24/30] =?UTF-8?q?feat:=20=E3=82=BF=E3=82=B9=E3=82=AF?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D?= =?UTF-8?q?=E3=81=AEtypo=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ing_task_settings.env => batch_laundering_task_settings.env} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename s3/config/jskult/task_settings/{batch_lanudering_task_settings.env => batch_laundering_task_settings.env} (84%) diff --git a/s3/config/jskult/task_settings/batch_lanudering_task_settings.env b/s3/config/jskult/task_settings/batch_laundering_task_settings.env similarity index 84% rename from s3/config/jskult/task_settings/batch_lanudering_task_settings.env rename to s3/config/jskult/task_settings/batch_laundering_task_settings.env index 23a40f3f..c80314cf 100644 --- a/s3/config/jskult/task_settings/batch_lanudering_task_settings.env +++ b/s3/config/jskult/task_settings/batch_laundering_task_settings.env @@ -1,4 +1,4 @@ -# jskult batch lanudering task environment file. +# jskult batch laundering task environment file. LOG_LEVEL=DEBUG SALES_LAUNDERING_EXTRACT_DATE_PERIOD=7 SALES_LAUNDERING_TARGET_TABLE_NAME=src05.sales_lau_all From ae27ee5c815f6c3b5db5f9772edd46730ee64cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Fri, 21 Apr 2023 18:49:07 +0900 Subject: [PATCH 25/30] =?UTF-8?q?=E7=9C=8B=E8=AD=B7=E7=A8=AE=E5=88=A5?= =?UTF-8?q?=E3=80=80=E6=96=B0=E8=A6=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concrete/com_nurse_assrt_mapper.py | 98 +++++++++ .../utmp_tables/tables/com_nurse_assrt.py | 14 ++ .../ultmarc_table_mapper_factory.py | 4 +- .../table_mapper/com_nurse_assrt/__init__.py | 0 .../com_nurse_assrt_delete.csv | 7 + .../com_nurse_assrt_insert.csv | 7 + .../com_nurse_assrt_update.csv | 6 + .../db_com_nurse_assrt_before_delete.csv | 7 + .../db_com_nurse_assrt_before_update.csv | 7 + .../expect_com_nurse_assrt_delete.csv | 8 + .../expect_com_nurse_assrt_insert.csv | 8 + .../expect_com_nurse_assrt_update.csv | 7 + .../test_com_nurse_assrt_mapper.py | 197 ++++++++++++++++++ 13 files changed, 368 insertions(+), 2 deletions(-) create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py create mode 100644 ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/__init__.py create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv create mode 100644 ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_mapper.py new file mode 100644 index 00000000..6d1086f0 --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_nurse_assrt_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_nurse_assrt import ComNurseAssrt + + +class ComNurseAssrtMapper(UltmarcTableMapper): + """レイアウト区分023: COM_看護種別 登録処理""" + + # レコード存在確認SQL + RECORD_EXISTS_QUERY = """\ + SELECT + COUNT(*) AS count_num + FROM + src05.com_nurse_assrt + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + # データ登録用SQL + INSERT_QUERY = """\ + INSERT INTO src05.com_nurse_assrt + ( + nurse_assrt_cd, + nurse_assrt_name, + regist_ymd, + delete_ymd, + sys_regist_date, + regist_prgm_id, + sys_update_date, + update_prgm_id + ) + VALUES ( + :nurse_assrt_cd, + :nurse_assrt_name, + :execute_date_str_ymd, + NULL, + :execute_datetime, + :program_name, + :execute_datetime, + :program_name + ) + """ + + UPDATE_QUERY = """\ + UPDATE + src05.com_nurse_assrt + SET + nurse_assrt_name = :nurse_assrt_name, + update_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + + # 修正区分が「C(削除)」の場合の更新SQL + LOGICAL_DELETE_QUERY = """\ + UPDATE + src05.com_nurse_assrt + SET + delete_ymd = :execute_date_str_ymd, + sys_update_date = :execute_datetime, + update_prgm_id = :program_name + WHERE + nurse_assrt_cd = :nurse_assrt_cd + """ + record: ComNurseAssrt + + def __init__(self, record: list[str], db) -> None: + super().__init__(record, db, ComNurseAssrt) + 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 + + # 更新する項目が無い場合 + if self.record.nurse_assrt_name == '': + return None + else: + # 更新する項目がある場合はUpdate + return self.UPDATE_QUERY 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 new file mode 100644 index 00000000..710b9a0a --- /dev/null +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/tables/com_nurse_assrt.py @@ -0,0 +1,14 @@ +from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable + + +class ComNurseAssrt(UltmarcTable): + """レイアウト区分022: COM_看護種別""" + nurse_assrt_cd: str # 看護種別コード + nurse_assrt_name: str # 看護種別名 + maint_flag: str # 修正区分 + + def __init__(self, record: list[str]): + super().__init__(record) + self.nurse_assrt_cd = record[1] + self.nurse_assrt_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 ebea9e55..5896fc21 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/ultmarc_table_mapper_factory.py @@ -1,6 +1,6 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete import ( com_alma_mapper, com_dr_wrkplace_mapper, com_hamtec_mapper, - com_inst_mapper, null_mapper) + com_inst_mapper, com_nurse_assrt_mapper, null_mapper) from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \ UltmarcTableMapper from src.db.database import Database @@ -62,7 +62,7 @@ COM_TABLE_LIST = { # COM_先端医療機器 "022": null_mapper.NullMapper, # COM_看護種別 - "023": null_mapper.NullMapper, + "023": com_nurse_assrt_mapper.ComNurseAssrtMapper, # COM_医療機能評価 "024": null_mapper.NullMapper, # COM_地域クリティカルパス diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/__init__.py b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_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_nurse_assrt/com_nurse_assrt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv new file mode 100644 index 00000000..9eafda82 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv @@ -0,0 +1,7 @@ +"023","3991","A","20141113","20141114","" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","C","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","4105","A","20141113","20141114","療養型介護療養施設サービス費" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv new file mode 100644 index 00000000..b12393f2 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_insert.csv @@ -0,0 +1,7 @@ +"023","3991","A","20141113","20141114","診療所療養型種別不明" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","A","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","9999","A","20141113","20141114","ああああああああああいいいいいいいいいいううううううううううええええええええええおおおおおおか" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv new file mode 100644 index 00000000..2eac2208 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_update.csv @@ -0,0 +1,6 @@ +"023","3991","A","20141113","20141114","" +"023","4101","A","20141113","20141114","療養型介護療養施設サービス費(Ⅰ)" +"023","4102","A","20141113","20141114","療養型介護療養施設サービス費(Ⅱ)" +"023","4103","A","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" +"023","4104","A","20141113","20141114","療養型介護療養施設サービス費種別不明" +"023","4999","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv new file mode 100644 index 00000000..de1019b7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_delete.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_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" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv new file mode 100644 index 00000000..de1019b7 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/db_com_nurse_assrt_before_update.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_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" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","clsComNurseAssrt" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv new file mode 100644 index 00000000..2c4cc78a --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_delete.csv @@ -0,0 +1,8 @@ +"nurse_assrt_cd","nurse_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" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","20230421","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4105","療養型介護療養施設サービス費","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:31:18","com_nurse_assrt_mapper","2017/10/19 10:31:18","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:31:18","com_nurse_assrt_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv new file mode 100644 index 00000000..564adfff --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_insert.csv @@ -0,0 +1,8 @@ +"nurse_assrt_cd","nurse_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" +"3991","診療所療養型種別不明","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4101","療養型介護療養施設サービス費(Ⅰ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費(Ⅳ)","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費種別不明","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" +"9999","ああああああああああいいいいいいいいいいううううううううううええええええええええおおおおおおか","20230421","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:01:14","com_nurse_assrt_mapper","2017/10/19 10:01:14","com_nurse_assrt_mapper" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv new file mode 100644 index 00000000..664f4879 --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/expect_com_nurse_assrt_update.csv @@ -0,0 +1,7 @@ +"nurse_assrt_cd","nurse_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" +"3991","診療所療養型種別不明","20171019","NULL","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:16:17","clsComNurseAssrt" +"4101","療養型介護療養施設サービス費(Ⅰ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4102","療養型介護療養施設サービス費(Ⅱ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4103","療養型介護療養施設サービス費(Ⅲ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4104","療養型介護療養施設サービス費種別不明","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" +"4999","療養型介護療養施設サービス費(Ⅳ)","20171019","20171019","NULL","NULL","NULL","NULL","NULL","2017/10/19 10:16:17","clsComNurseAssrt","2017/10/19 10:18:12","com_nurse_assrt_mapper" 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 new file mode 100644 index 00000000..8794677f --- /dev/null +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/test_com_nurse_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_nurse_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 TestComNurseAssrtMapper: + """レイアウト区分004: 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_nurse_assrt_insert.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_assrt', {'1': '1'}) + self.db.execute(delete_sql, delete_parameter) + + # Act + for line_number, line in enumerate(test_dat_file, start=1): + sut: com_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, 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_nurse_assrt_insert.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_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_nurse_assrt_update.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_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_nurse_assrt_before_update.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_nurse_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_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, 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_nurse_assrt_update.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_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_nurse_assrt_delete.csv')) + # 一旦全データをDBから削除 + delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_nurse_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_nurse_assrt_before_delete.csv')) + for test_data in test_sql_data_list: + insert_sql, insert_parameter = create_insert_sql_with_parameter( + 'src05.com_nurse_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_nurse_assrt_mapper.ComNurseAssrtMapper = create_ultmarc_table_mapper_sut(line, self.db) + assert type(sut) is com_nurse_assrt_mapper.ComNurseAssrtMapper, 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_nurse_assrt_delete.csv')) + primary_keys = [f"'{primary_key['nurse_assrt_cd']}'" for primary_key in expect_data_list] + actual_select_sql = f"SELECT * FROM src05.com_nurse_assrt WHERE nurse_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}が、期待値以降であること' From 45e1f7d87b4ad0897db13bad09dc6b7934591eb9 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Mon, 24 Apr 2023 11:43:54 +0900 Subject: [PATCH 26/30] =?UTF-8?q?fix:=20=E6=B4=97=E3=81=84=E6=9B=BF?= =?UTF-8?q?=E3=81=88=E5=87=A6=E7=90=86=E3=80=81=E6=9C=AC=E7=95=AA=E3=81=AE?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E5=80=A4=E3=83=9F=E3=82=B9=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 --- stepfunctions/TOOLS/convert_config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stepfunctions/TOOLS/convert_config.yaml b/stepfunctions/TOOLS/convert_config.yaml index c68ae70a..eaaf44c8 100644 --- a/stepfunctions/TOOLS/convert_config.yaml +++ b/stepfunctions/TOOLS/convert_config.yaml @@ -211,4 +211,4 @@ config: # セキュリティグループ(ecs-all) SG_ECS_ALL: *PRD_SG_ECS_ALL # セキュリティグループ(ecs-jskut-batch-laundering) - SG_JSKULT_BATCH_LAUNDERING: *STG_SG_JSKULT_BATCH_LAUNDERING + SG_JSKULT_BATCH_LAUNDERING: *PRD_SG_JSKULT_BATCH_LAUNDERING From 120ab82a24bf5c00525b899a1cb515f86a7e4cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 13:03:05 +0900 Subject: [PATCH 27/30] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/com_nurse_assrt/test_com_nurse_assrt_mapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8794677f..e7bea2a5 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 @@ -79,7 +79,7 @@ class TestComNurseAssrtMapper: for actual_row, expect_row in zip(actual_data_list, expect_data_list): line_number += 1 for actual_col_name, expect_col_name in zip(actual_row, expect_row): - if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']: + if actual_col_name in ignore_columns: assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること' def test_update_record(self): From 9476720dc7eea8c26b88de9b8045364c074dfdf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 14:31:27 +0900 Subject: [PATCH 28/30] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E4=BF=AE=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 5bba2dd9c4a07428ace87d7dae0458ea18041795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=8E=E9=96=93?= Date: Mon, 24 Apr 2023 14:39:25 +0900 Subject: [PATCH 29/30] =?UTF-8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_forfront_med_equip/com_forfront_med_equip_delete.csv | 1 + .../table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv | 1 + 2 files changed, 2 insertions(+) diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv index 39f5dce7..36459b1c 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_forfront_med_equip/com_forfront_med_equip_delete.csv @@ -5,3 +5,4 @@ "022","15","A","20141113","20141114","アンガー型カメラ" "022","16","A","20141113","20141114","SPECT" "022","99","C",,,"亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵尾亜居宇絵あ" +"022","98","C","20141113","20141114","血管造影システム" diff --git a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv index 9eafda82..a89aed2c 100644 --- a/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv +++ b/ecs/jskult-batch-daily/tests/batch/ultmarc/utmp_tables/table_mapper/com_nurse_assrt/com_nurse_assrt_delete.csv @@ -5,3 +5,4 @@ "023","4104","A","20141113","20141114","療養型介護療養施設サービス費(Ⅳ)" "023","4999","A","20141113","20141114","療養型介護療養施設サービス費種別不明" "023","4105","A","20141113","20141114","療養型介護療養施設サービス費" +"023","9999","C","20141113","20141114","療養型介護療養施設サービス費(Ⅲ)" From 3ed8363a0f8abc978813447ec4f180d16d27bd50 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Mon, 24 Apr 2023 16:44:40 +0900 Subject: [PATCH 30/30] =?UTF-8?q?feat:=20=E3=82=B3=E3=83=B3=E3=83=95?= =?UTF-8?q?=E3=83=AA=E3=82=AF=E3=83=88=E3=82=92=E8=A7=A3=E6=B6=88=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AB=E3=80=81=E3=83=A2=E3=82=B8?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=83=AB=E3=81=94=E3=81=A8=E3=81=AB=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=88=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table_mapper/concrete/__init__.py | 8 -- .../ultmarc_table_mapper_factory.py | 89 ++++++++++--------- 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py index b0f23166..e69de29b 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/__init__.py @@ -1,8 +0,0 @@ -import glob -import os - -# 同階層内のモジュールを一括でインポート -__all__ = [ - os.path.split(os.path.splitext(file)[0])[1] - for file in glob.glob(os.path.join(os.path.dirname(__file__), '[a-zA-Z0-9]*.py')) -] \ No newline at end of file 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 1a41bf6b..336a6d4b 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,7 +1,17 @@ -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, com_nurse_assrt_mapper, null_mapper) - +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_alma_mapper import \ + ComAlmaMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_dr_wrkplace_mapper import \ + ComDrWrkplaceMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_forfront_med_equip_mapper import \ + ComForfrontMedEquipMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_hamtec_mapper import \ + ComHamtecMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_inst_mapper import \ + ComInstMapper +from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_nurse_assrt_mapper import \ + ComNurseAssrtMapper +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 \ UltmarcTableMapper from src.db.database import Database @@ -10,76 +20,75 @@ from src.db.database import Database COM_TABLE_LIST = { # レコードID固定 # COM_医師学会 - # TODO: 入れ子にしない - "521": null_mapper.NullMapper, + "521": NullMapper, # COM_施設属性 - "111": null_mapper.NullMapper, + "111": NullMapper, # COM_臨床研修病院 - "112": null_mapper.NullMapper, + "112": NullMapper, # COM_医師 - "501": null_mapper.NullMapper, + "501": NullMapper, # COM_施設 - "101": com_inst_mapper.ComInstMapper, + "101": ComInstMapper, # COM_薬局 - "102": null_mapper.NullMapper, + "102": NullMapper, # COM_医師勤務先 - "502": com_dr_wrkplace_mapper.ComDrWrkplaceMapper, + "502": ComDrWrkplaceMapper, # COM_専門分野 - "511": null_mapper.NullMapper, + "511": NullMapper, # COM_都道府県医療機能情報(基本) - "132": null_mapper.NullMapper, + "132": NullMapper, # COM_都道府県医療機能情報(施設設備) - "133": null_mapper.NullMapper, + "133": NullMapper, # COM_都道府県医療機能情報(疾患治療) - "134": null_mapper.NullMapper, + "134": NullMapper, # COM_都道府県医療機能情報(短期滞在手術) - "135": null_mapper.NullMapper, + "135": NullMapper, # COM_都道府県医療機能情報(専門外来) - "136": null_mapper.NullMapper, + "136": NullMapper, # COM_診療科目 - "001": null_mapper.NullMapper, + "001": NullMapper, # COM_病院種別 - "002": null_mapper.NullMapper, + "002": NullMapper, # COM_出身校学部識別 - "003": null_mapper.NullMapper, + "003": NullMapper, # COM_出身校 - "004": com_alma_mapper.ComAlmaMapper, + "004": ComAlmaMapper, # COM_役職 - "005": null_mapper.NullMapper, + "005": NullMapper, # 都道府県マスタ - "006": null_mapper.NullMapper, + "006": NullMapper, # COM_経営体 - "007": null_mapper.NullMapper, + "007": NullMapper, # COM_所属部科 - "008": null_mapper.NullMapper, + "008": NullMapper, # COM_学会 - "009": null_mapper.NullMapper, + "009": NullMapper, # COM_専門医資格 - "010": null_mapper.NullMapper, + "010": NullMapper, # COM_施設区分 - "011": null_mapper.NullMapper, + "011": NullMapper, # COM_高度先進医療 - "021": com_hamtec_mapper.ComHamtecMapper, + "021": ComHamtecMapper, # COM_先端医療機器 - "022": com_forfront_med_equip_mapper.ComForfrontMedEquipMapper, + "022": ComForfrontMedEquipMapper, # COM_看護種別 - "023": com_nurse_assrt_mapper.ComNurseAssrtMapper, + "023": ComNurseAssrtMapper, # COM_医療機能評価 - "024": null_mapper.NullMapper, + "024": NullMapper, # COM_地域クリティカルパス - "026": null_mapper.NullMapper, + "026": NullMapper, # COM_疾患別リハビリテーション科 - "027": null_mapper.NullMapper, + "027": NullMapper, # COM_政策医療 - "028": null_mapper.NullMapper, + "028": NullMapper, # COM_医療圏都道府県 - "121": null_mapper.NullMapper, + "121": NullMapper, # COM_医療圏3次マスタ - "122": null_mapper.NullMapper, + "122": NullMapper, # COM_二次医療圏 - "123": null_mapper.NullMapper, + "123": NullMapper, # COM_医療圏都道府県市町村対照表 - "124": null_mapper.NullMapper + "124": NullMapper }