作業中(一時コミット)

This commit is contained in:
野間 2023-05-02 14:02:13 +09:00
parent 68c6ea576a
commit a92191adb1
14 changed files with 564 additions and 101 deletions

View File

@ -1,7 +1,6 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_inst import ComInst
import datetime
class ComInstMapper(UltmarcTableMapper):
@ -79,55 +78,55 @@ class ComInstMapper(UltmarcTableMapper):
update_prgm_id
)
VALUES (
dcfdsf_inst_code,
hp_class_code,
hp_addr_lost_code,
hp_name_kana,
hp_ryaku_name_kana,
hp_name,
hp_ryaku_name,
univ_prnt_code,
bed_num,
close_flag,
open_flag,
close_year_month,
open_year_month,
close_flag2,
inst_repre_code,
president_kana,
president,
tel_nothing_flag,
uncheck_flag,
hp_tel,
hp_addr_kana,
hp_addr,
hp_zip_code,
village_code,
pref_code,
city_code,
hp_addr_number,
addr_cnt_kana,
addr_cnt,
mgt_class_code,
hpdel_code,
hp_kind_code,
dup_opp_code,
inspect_code1,
inspect_code2,
inspect_code3,
inspect_code4,
inspect_code5,
inspect_code6,
inspect_code7,
reexam_flagc,
bed_num_gen,
bed_num_psy,
bed_num_tub,
bed_num_epi,
bed_num_sum,
bed_num_gen2,
bed_num_rest,
bed_class_maint_date,
:dcfdsf_inst_code,
:hp_class_code,
:hp_addr_lost_code,
:hp_name_kana,
:hp_ryaku_name_kana,
:hp_name,
:hp_ryaku_name,
:univ_prnt_code,
:bed_num,
:close_flag,
:open_flag,
:close_year_month,
:open_year_month,
:close_flag2,
:inst_repre_code,
:president_kana,
:president,
:tel_nothing_flag,
:uncheck_flag,
:hp_tel,
:hp_addr_kana,
:hp_addr,
:hp_zip_code,
:village_code,
:pref_code,
:city_code,
:hp_addr_number,
:addr_cnt_kana,
:addr_cnt,
:mgt_class_code,
:hpdel_code,
:hp_kind_code,
:dup_opp_code,
:inspect_code1,
:inspect_code2,
:inspect_code3,
:inspect_code4,
:inspect_code5,
:inspect_code6,
:inspect_code7,
:reexam_flag,
:bed_num_gen,
:bed_num_psy,
:bed_num_tub,
:bed_num_epi,
:bed_num_sum,
:bed_num_gen2,
:bed_num_rest,
:bed_class_maint_date,
1,
NULL,
0,
@ -177,7 +176,7 @@ class ComInstMapper(UltmarcTableMapper):
)
VALUES (
:dcfdsf_inst_code,
:insert_trt_course_cd,
{trt_course_cd},
:execute_date_str_ymd,
:execute_datetime,
:program_name,
@ -205,13 +204,13 @@ class ComInstMapper(UltmarcTableMapper):
"""
# データ更新用SQL(COM_特養医務室)
UPDATE_SSPCARE_QUERY = """\
UPDATE_SPCARE_QUERY = """\
UPDATE
src05.com_spcare_med_office_dat
SET
dcf_prnt_inst_cd = :dcf_prnt_inst_code,
update_ymd = :execute_date_str_ymd,
delete_ymd = :delete_ymd,
delete_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
@ -219,7 +218,7 @@ class ComInstMapper(UltmarcTableMapper):
"""
# データ登録用SQL(COM_特養医務室)
INSERT_INST_SSPCARE_QUERY = """\
INSERT_SPCARE_QUERY = """\
INSERT INTO src05.com_spcare_med_office_dat
(
dcf_chld_inst_cd,
@ -258,23 +257,23 @@ class ComInstMapper(UltmarcTableMapper):
return
# 追加、更新の場合
self.queries.append(self.__make_upsert_query())
self.__make_upsert_query()
return
def __make_upsert_query(self):
# レコードの存在確認
# レコードの存在確認(施設)
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
# 存在しない場合はInsert
self.queries.append(self.INSERT_INST_QUERY)
# 存在する場合はUpdate(施設)
self.__make_update_query()
else:
# 存在する場合はUpdate(施設)
self.__make_update_query()
# 施設診療科目の削除挿入
self.__make_delete_insert_trt_query
# 特養医務室の追加更新
# 特養医務室の追加更新
self.__make_upsert_spcare_query
return
@ -315,17 +314,10 @@ class ComInstMapper(UltmarcTableMapper):
if len(self.record.hp_zip_code) > 0:
set_clauses.append('postal_number = :hp_zip_code')
# <<<<< 住所関連不明 >>>>>>
# 町字コード
if len(self.record.village_code) > 0:
# 町字コード・都道府県コード・市区町村コード
if len(self.record.village_code + self.record.pref_code + self.record.city_code) > 0:
set_clauses.append('village_cd = :village_code')
# 都道府県コード
if len(self.record.pref_code) > 0:
set_clauses.append('prefc_cd = :pref_code')
# 市区町村コード
if len(self.record.city_code) > 0:
set_clauses.append('city_cd = :city_code')
# 住所カウント
@ -333,16 +325,14 @@ class ComInstMapper(UltmarcTableMapper):
set_clauses.append('addr_cnt_kana = :addr_cnt_kana')
set_clauses.append('addr_cnt = :addr_cnt')
# 住所表示番号@いるの?
# 住所表示番号
if len(self.record.hp_addr_number) > 0:
set_clauses.append('addr_display_number = :hp_addr_number')
# 経営体コード@いるの?
# 経営体コード
if len(self.record.mgt_class_code) > 0:
set_clauses.append('manage_cd = :mgt_class_code')
# <<<<< 住所関連不明 >>>>>>
# 病院種別
if len(self.record.hp_kind_code) > 0:
set_clauses.append('hp_assrt_cd = :hp_kind_code')
@ -446,9 +436,7 @@ class ComInstMapper(UltmarcTableMapper):
self.query_parameter['bed_class_maint_date'] = ''
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
# <<<<< 後で書き直そう >>>>>>>>>
if len(self.record.bed_num_sum + self.record.bed_num_psy + self.record.bed_num_tub + self.record.bed_num_epi +
self.record.bed_num_gen + self.record.bed_num_gen2 + self.record.bed_num_rest) > 0:
if sum(len(item) for item in self.record.prmit_bed) > 0:
set_clauses.append('prmit_bed_num_sum = :bed_num_sum')
set_clauses.append('prmit_bed_num_mental = :bed_num_psy')
set_clauses.append('prmit_bed_num_tuber = :bed_num_tub')
@ -466,9 +454,7 @@ class ComInstMapper(UltmarcTableMapper):
self.query_parameter['bed_num_rest'] = ''
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
# <<<<< 後で書き直そう >>>>>>>>>
if len(self.record.inspect_code1 + self.record.inspect_code2 + self.record.inspect_code3 + self.record.inspect_code4 +
self.record.inspect_code5 + self.record.inspect_code6 + self.record.inspect_code7) > 0:
if sum(len(item) for item in self.record.insp_item) > 0:
set_clauses.append('insp_item_micrb = :inspect_code1')
set_clauses.append('insp_item_serum = :inspect_code2')
set_clauses.append('insp_item_blood = :inspect_code3')
@ -500,23 +486,23 @@ class ComInstMapper(UltmarcTableMapper):
def __make_delete_insert_trt_query(self):
# 施設診療科目の削除挿入
delins_flg = False
for i in range(0, 60):
if len(self.record.medsbj_code[i]) > 0:
delins_flg = True
break
if not delins_flg:
if sum(len(item) for item in self.record.medsbj_code) == 0:
return
# 削除
self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY)
if len(self.record.medsbj_code[0]) != "@":
for i in range(0, 60):
if len(self.record.medsbj_code[i]) > 0:
self.query_parameter['insert_trt_course_cd'] = self.record.medsbj_code[i]
self.queries.append(self.INSERT_INST_TRT_QUERY)
if len(self.record.medsbj_code[0]) == "@":
return
# 診療科目160
for medsbj_code in self.record.medsbj_code:
if len(medsbj_code) > 0:
insert_query = self.INSERT_INST_TRT_QUERY.format(
trt_course_cd=medsbj_code
)
self.queries.append(insert_query)
return
def __make_upsert_spcare_query(self):
@ -528,14 +514,15 @@ class ComInstMapper(UltmarcTableMapper):
record_count = self.db.execute_select(self.RECORD_EXISTS_SPCARE_QUERY, self.query_parameter)
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
self.queries.append(self.INSERT_INST_SSPCARE_QUERY)
self.queries.append(self.INSERT_SPCARE_QUERY)
return
# 存在する場合はUpdate
if self.record.dcf_prnt_inst_code == "@":
self.query_parameter['dcf_prnt_inst_code'] = ''
self.query_parameter['delete_ymd'] = datetime.datetime.now().strftime('%Y%m%d')
else:
self.query_parameter['delete_ymd'] = ''
self.queries.append(self.UPDATE_SPCARE_QUERY)
return

View File

@ -48,7 +48,7 @@ class ComInst(UltmarcTable):
open_year_month: str # 開業予定年月
close_flag: str # 休院フラグ
close_year_month: str # 休院開始年月
medsbj_code = [] # 診療科目160
medsbj_code: list # 診療科目160
hp_kind_code: str # 病院種別
reexam_flag: str # 再審査区分
assoc_parrent_id: str # 関連大学親コードレコードID
@ -84,8 +84,8 @@ class ComInst(UltmarcTable):
dup_opp_code: str # 重複時相手先コード
dcf_prnt_inst_code: str # DCF親施設コード
delete_ymd: str # 削除年月日(COM_特養医務室データ)
insert_trt_course_cd: str # 診療科目コード(COM_施設診療科目)
prmit_bed: list # 許可ベッド(集合項目)
insp_item: list # 検査項目(集合項目)
def __init__(self, record: list[str]):
super().__init__(record)
@ -135,10 +135,10 @@ class ComInst(UltmarcTable):
self.close_flag = record[44].strip()
self.close_year_month = record[45].strip()
# 診療科目160
# 診療科目160(csvカラム番号 46 105)
num = 46
for i in range(0, 60):
self.medsbj_code[i] = record[num]
self.medsbj_code = [record[num]]
num += 1
self.hp_kind_code = record[106].strip()
@ -196,5 +196,24 @@ class ComInst(UltmarcTable):
self.dr_addr_kana3.zfill(2)
self.dr_addr_kana4.zfill(2)
self.delete_ymd = ''
self.insert_trt_course_cd = ''
# 許可ベッド(集合項目)
self.prmit_bed = [
self.bed_num_sum,
self.bed_num_psy,
self.bed_num_tub,
self.bed_num_epi,
self.bed_num_gen,
self.bed_num_gen2,
self.bed_num_rest
]
# 検査項目(集合項目)
self.insp_item = [
self.inspect_code1,
self.inspect_code2,
self.inspect_code3,
self.inspect_code4,
self.inspect_code5,
self.inspect_code6,
self.inspect_code7
]

View File

@ -0,0 +1 @@
"101","22","33333","44","A","20230606","200230607","8","9","10","11","12","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえお","アイウエオカクキケコアイウエオカクキケコ","7","18","19","20","21","123-4522","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","25","26","27","28","29","30","31","32","33","4","35","36","37","38","39","40","あいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコ","3","202304","5","202306","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","7","8","8","10","11","2","113","20230114","115","6","7","8","9","0","1","2","3","4","5","6","7","8","99","333333","11"
1 101 22 33333 44 A 20230606 200230607 8 9 10 11 12 あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ あいうえおかきくけこあいうえおかきくけこあいうえお アイウエオカクキケコアイウエオカクキケコ 7 18 19 20 21 123-4522 アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ 25 26 27 28 29 30 31 32 33 4 35 36 37 38 39 40 あいうえおかきくけこあいうえおかきくけこ アイウエオカクキケコ 3 202304 5 202306 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 7 8 8 10 11 2 113 20230114 115 6 7 8 9 0 1 2 3 4 5 6 7 8 99 333333 11

View File

@ -0,0 +1,2 @@
"dcf_dsf_inst_cd","inst_div_cd","addr_unknown_reason_cd","form_inst_name_kana","inst_name_kana","form_inst_name_kanji","inst_name_kanji","rltd_univ_prnt_cd","bed_num","close_flg","estab_sche_flg","close_start_ym","estab_sche_ym","ward_abolish_flg","inst_repre_cd","inst_repre_kana","inst_repre","phone_number_non_flg","unconf_flg","inst_phone_number","inst_addr_kana","inst_addr","postal_number","village_cd","prefc_cd","city_cd","addr_display_number","addr_cnt_kana","addr_cnt","manage_cd","delete_sche_reason_cd","hp_assrt_cd","dup_opp_cd","insp_item_micrb","insp_item_serum","insp_item_blood","insp_item_patho","insp_item_paras","insp_item_biochem","insp_item_ri","re_exam_cd","prmit_bed_num_other","prmit_bed_num_mental","prmit_bed_num_tuber","prmit_bed_num_infection","prmit_bed_num_sum","prmit_bed_num_gen","prmit_bed_num_rcup","prmit_bed_maint_ymd","inst_pharm_div","abolish_ymd","delete_flg","filler_1","filler_2","filler_3","filler_4","filler_5","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"223333344","37","7","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","アイウエオカクキケコアイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","あいうえおかきくけこあいうえおかきくけこあいうえお","81011","113","5","3","202306","202304","2","383940","アイウエオカクキケコ","あいうえおかきくけこあいうえおかきくけこ","4","8","35","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ","123-4522","18192021","18","19","25","30313233","26272829","36","9","7","101112","2","3","4","5","6","7","8","8","9","6","7","8","115","0","1","20230114","1","NULL","0","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","NULL","2023/04/12 00:00:00","com_inst_mapper","2023/04/12 00:00:00","com_inst_mapper"
1 dcf_dsf_inst_cd inst_div_cd addr_unknown_reason_cd form_inst_name_kana inst_name_kana form_inst_name_kanji inst_name_kanji rltd_univ_prnt_cd bed_num close_flg estab_sche_flg close_start_ym estab_sche_ym ward_abolish_flg inst_repre_cd inst_repre_kana inst_repre phone_number_non_flg unconf_flg inst_phone_number inst_addr_kana inst_addr postal_number village_cd prefc_cd city_cd addr_display_number addr_cnt_kana addr_cnt manage_cd delete_sche_reason_cd hp_assrt_cd dup_opp_cd insp_item_micrb insp_item_serum insp_item_blood insp_item_patho insp_item_paras insp_item_biochem insp_item_ri re_exam_cd prmit_bed_num_other prmit_bed_num_mental prmit_bed_num_tuber prmit_bed_num_infection prmit_bed_num_sum prmit_bed_num_gen prmit_bed_num_rcup prmit_bed_maint_ymd inst_pharm_div abolish_ymd delete_flg filler_1 filler_2 filler_3 filler_4 filler_5 regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 223333344 37 7 アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ アイウエオカクキケコアイウエオカクキケコ あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこあいうえお 81011 113 5 3 202306 202304 2 383940 アイウエオカクキケコ あいうえおかきくけこあいうえおかきくけこ 4 8 35 あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ アイウエオカクキケコアイウエオカクキケコアイウエオカクキケコ 123-4522 18192021 18 19 25 30313233 26272829 36 9 7 101112 2 3 4 5 6 7 8 8 9 6 7 8 115 0 1 20230114 1 NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 2023/04/12 00:00:00 com_inst_mapper 2023/04/12 00:00:00 com_inst_mapper

View File

@ -0,0 +1,2 @@
"dcf_chld_inst_cd","dcf_prnt_inst_cd","regist_ymd","update_ymd","delete_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"293031","20230427NULLNULL","20230427","NULL","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
1 dcf_chld_inst_cd dcf_prnt_inst_cd regist_ymd update_ymd delete_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 293031 20230427NULLNULL 20230427 NULL NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper

View File

@ -0,0 +1,61 @@
"dcf_dsf_inst_cd","trt_course_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"223333344","47","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","48","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","49","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","50","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","51","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","52","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","53","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","54","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","55","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","56","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","57","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","58","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","59","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","60","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","61","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","62","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","63","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","64","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","65","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","66","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","67","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","68","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","69","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","70","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","71","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","72","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","73","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","74","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","75","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","76","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","77","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","78","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","79","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","80","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","81","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","82","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","83","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","84","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","85","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","86","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","87","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","88","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","89","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","90","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","91","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","92","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","93","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","94","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","95","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","96","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","97","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","98","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","99","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","100","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","101","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","102","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","103","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","104","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","105","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
"223333344","106","20230427","NULL","NULL","NULL","NULL","NULL","2023/05/01 16:16:43","com_inst_mapper","2023/05/01 16:16:43","com_inst_mapper"
1 dcf_dsf_inst_cd trt_course_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 223333344 47 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
3 223333344 48 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
4 223333344 49 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
5 223333344 50 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
6 223333344 51 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
7 223333344 52 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
8 223333344 53 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
9 223333344 54 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
10 223333344 55 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
11 223333344 56 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
12 223333344 57 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
13 223333344 58 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
14 223333344 59 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
15 223333344 60 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
16 223333344 61 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
17 223333344 62 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
18 223333344 63 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
19 223333344 64 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
20 223333344 65 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
21 223333344 66 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
22 223333344 67 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
23 223333344 68 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
24 223333344 69 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
25 223333344 70 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
26 223333344 71 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
27 223333344 72 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
28 223333344 73 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
29 223333344 74 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
30 223333344 75 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
31 223333344 76 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
32 223333344 77 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
33 223333344 78 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
34 223333344 79 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
35 223333344 80 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
36 223333344 81 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
37 223333344 82 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
38 223333344 83 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
39 223333344 84 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
40 223333344 85 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
41 223333344 86 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
42 223333344 87 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
43 223333344 88 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
44 223333344 89 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
45 223333344 90 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
46 223333344 91 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
47 223333344 92 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
48 223333344 93 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
49 223333344 94 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
50 223333344 95 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
51 223333344 96 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
52 223333344 97 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
53 223333344 98 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
54 223333344 99 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
55 223333344 100 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
56 223333344 101 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
57 223333344 102 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
58 223333344 103 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
59 223333344 104 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
60 223333344 105 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper
61 223333344 106 20230427 NULL NULL NULL NULL NULL 2023/05/01 16:16:43 com_inst_mapper 2023/05/01 16:16:43 com_inst_mapper

View File

@ -0,0 +1,391 @@
import os.path as path
from datetime import datetime
import pytest
from src.batch.common.batch_context import BatchContext
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_inst_mapper
from src.db.database import Database
from tests.testing_utility import (assert_table_results,
create_db_data_from_csv,
create_delete_sql_with_parameter,
create_insert_sql_with_parameter,
create_ultmarc_table_mapper_sut,
create_ultmarc_test_data_from_csv)
class TestComInstMapper:
"""レイアウト区分101: COM_施設"""
db: Database
batch_context: BatchContext
test_file_path: str = path.dirname(__file__)
@pytest.fixture(autouse=True, scope='function')
def pre_test(self, database: Database):
"""テスト実行前後処理"""
self.batch_context = BatchContext.get_instance()
# setup
self.db = database
self.db.connect()
# self.db.begin()
# testing
yield
# teardown
# self.db.rollback()
self.db.disconnect()
def test_insert_record(self):
"""
Cases:
COM_施設テーブルにレコードを登録する
Arranges:
- CSVデータを用意し読み込む
- 追加対象となるレコードを削除する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む(施設)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_insert.csv'))
primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in [
'bed_num',
'prmit_bed_num_other',
'prmit_bed_num_mental',
'prmit_bed_num_tuber',
'prmit_bed_num_infection',
'prmit_bed_num_sum',
'prmit_bed_num_gen',
'prmit_bed_num_rcup',
'regist_ymd',
'sys_regist_date',
'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(施設診療科目)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_insert.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_inst_trt_course
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND trt_course_cd = :trt_course_cd\
"""
for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd):
sp_trt_data = self.db.execute_select(
sp_field_select_sql,
{**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd})
assert len(sp_trt_data) == 1, '1件取得できていること'
actual_data_list.append(sp_trt_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(特養医務室データ)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_insert.csv'))
primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_update_record(self):
"""
Cases:
COM_施設テーブルのレコードを更新する
Arranges:
- CSVデータを用意し読み込む
- 更新対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む(施設)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_inst',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# DBデータを読み込む(施設診療科目)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_inst_trt_course',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# DBデータを読み込む(特養医務室)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_spcare_med_office_dat',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む(施設)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_update.csv'))
primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(施設診療科目)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_update.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_inst_trt_course
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND trt_course_cd = :trt_course_cd\
"""
for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd):
sp_trt_data = self.db.execute_select(
sp_field_select_sql,
{**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd})
assert len(sp_trt_data) == 1, '1件取得できていること'
actual_data_list.append(sp_trt_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(特養医務室データ)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_update.csv'))
primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_logical_delete(self):
"""
Cases:
COM_施設テーブルのレコードを1件論理削除する
Arranges:
- CSVデータを用意し読み込む
- 削除対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_inst_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_inst_trt_course', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_spcare_med_office_dat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む(施設)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_inst_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_inst',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# DBデータを読み込む(施設診療科目)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_trt_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_inst_trt_course',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# DBデータを読み込む(特養医務室)
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_spcare_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_spcare_med_office_dat',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_inst_mapper.ComInstMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_inst_mapper.ComInstMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む(施設)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_inst_delete.csv'))
primary_keys = [f"'{primary_key['dcf_dsf_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_inst WHERE dcf_dsf_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'delete_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(施設診療科目)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_trt_delete.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_trt_course_cd = [{'trt_course_cd': columns['trt_course_cd']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_inst_trt_course
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND trt_course_cd = :trt_course_cd\
"""
for primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_trt_course_cd):
sp_trt_data = self.db.execute_select(
sp_field_select_sql,
{**primary_keys_dcf_dsf_inst_cd, **primary_keys_trt_course_cd})
assert len(sp_trt_data) == 1, '1件取得できていること'
actual_data_list.append(sp_trt_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
# 期待値ファイルを読み込む(特養医務室データ)
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_delete.csv'))
primary_keys = [f"'{primary_key['dcf_chld_inst_cd']}'" for primary_key in expect_data_list]
actual_select_sql = f"SELECT * FROM src05.com_spcare_med_office_dat WHERE dcf_chld_inst_cd IN ({','.join(primary_keys)})"
actual_data_list = self.db.execute_select(actual_select_sql)
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ['regist_ymd', 'sys_regist_date', 'sys_update_date']:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'