fix: COM_施設 項目クリアの考慮漏れ コードの修正。テストもパス。
This commit is contained in:
parent
5d882ccbc5
commit
dcbe8d70a6
@ -263,6 +263,10 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
def __make_upsert_query(self):
|
||||
# レコードの存在確認(施設)
|
||||
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
|
||||
|
||||
# 「@」による項目クリアを設定
|
||||
self.__set_clearing_item()
|
||||
|
||||
if record_count[0]['count_num'] == 0:
|
||||
# 存在しない場合はInsert
|
||||
self.queries.append(self.INSERT_INST_QUERY)
|
||||
@ -344,96 +348,64 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
# 未確認フラグ
|
||||
if len(self.record.uncheck_flag) > 0:
|
||||
set_clauses.append('unconf_flg = :uncheck_flag')
|
||||
if self.record.uncheck_flag == '@':
|
||||
self.query_parameter['uncheck_flag'] = None
|
||||
|
||||
# 削除予定理由コード
|
||||
if len(self.record.hpdel_code) > 0:
|
||||
set_clauses.append('delete_sche_reason_cd = :hpdel_code')
|
||||
if self.record.hpdel_code == '@':
|
||||
self.query_parameter['hpdel_code'] = None
|
||||
|
||||
# 重複時相手先コード
|
||||
if len(self.record.dup_opp_code) > 0:
|
||||
set_clauses.append('dup_opp_cd = :dup_opp_code')
|
||||
if self.record.duphp_id == '@':
|
||||
self.query_parameter['dup_opp_code'] = None
|
||||
|
||||
# 住所不明理由コード
|
||||
if len(self.record.hp_addr_lost_code) > 0:
|
||||
set_clauses.append('addr_unknown_reason_cd = :hp_addr_lost_code')
|
||||
if self.record.hp_addr_lost_code == '@':
|
||||
self.query_parameter['hp_addr_lost_code'] = None
|
||||
|
||||
# 電話番号なしフラグ
|
||||
if len(self.record.tel_nothing_flag) > 0:
|
||||
set_clauses.append('phone_number_non_flg = :tel_nothing_flag')
|
||||
if self.record.tel_nothing_flag == '@':
|
||||
self.query_parameter['tel_nothing_flag'] = None
|
||||
|
||||
# 電話番号
|
||||
if len(self.record.hp_tel) > 0:
|
||||
set_clauses.append('inst_phone_number = :hp_tel')
|
||||
if self.record.hp_tel == '@':
|
||||
self.query_parameter['hp_tel'] = None
|
||||
|
||||
# 施設代表者コード
|
||||
if len(self.record.inst_repre_code) > 0:
|
||||
set_clauses.append('inst_repre_cd = :inst_repre_code')
|
||||
if self.record.president_id == '@':
|
||||
self.query_parameter['inst_repre_code'] = None
|
||||
|
||||
# 代表者(カナ)
|
||||
if len(self.record.president_kana) > 0:
|
||||
set_clauses.append('inst_repre_kana = :president_kana')
|
||||
if self.record.president_kana == '@':
|
||||
self.query_parameter['president_kana'] = None
|
||||
|
||||
# 代表者(漢字) ※「@」が大文字
|
||||
if len(self.record.president) > 0:
|
||||
set_clauses.append('inst_repre = :president')
|
||||
if self.record.president == '@':
|
||||
self.query_parameter['president'] = None
|
||||
|
||||
# 開業予定フラグ・開業予定年月
|
||||
if len(self.record.open_flag + self.record.open_year_month) > 0:
|
||||
set_clauses.append('estab_sche_flg = :open_flag')
|
||||
set_clauses.append('estab_sche_ym = :open_year_month')
|
||||
if self.record.open_flag == '@':
|
||||
self.query_parameter['open_flag'] = None
|
||||
self.query_parameter['open_year_month'] = None
|
||||
|
||||
# 休院フラグ・休院開始年月
|
||||
if len(self.record.close_flag + self.record.close_year_month) > 0:
|
||||
set_clauses.append('close_flg = :close_flag')
|
||||
set_clauses.append('close_start_ym = :close_year_month')
|
||||
if self.record.close_flag == '@':
|
||||
self.query_parameter['close_flag'] = None
|
||||
self.query_parameter['close_year_month'] = None
|
||||
|
||||
# 関連大学親コード
|
||||
if len(self.record.univ_prnt_code) > 0:
|
||||
set_clauses.append('rltd_univ_prnt_cd = :univ_prnt_code')
|
||||
if self.record.assoc_parrent_id == '@':
|
||||
self.query_parameter['univ_prnt_code'] = None
|
||||
|
||||
# 病棟閉鎖フラグ
|
||||
if len(self.record.close_flag2) > 0:
|
||||
set_clauses.append('ward_abolish_flg = :close_flag2')
|
||||
if self.record.close_flag2 == '@':
|
||||
self.query_parameter['close_flag2'] = None
|
||||
|
||||
# 病床数(定員)
|
||||
if self.record.bed_num is not None:
|
||||
set_clauses.append('bed_num = :bed_num')
|
||||
if self.record.bed_num == '@':
|
||||
self.query_parameter['bed_num'] = None
|
||||
|
||||
# 許可病床メンテ日付
|
||||
if len(self.record.bed_class_maint_date) > 0:
|
||||
set_clauses.append('prmit_bed_maint_ymd = :bed_class_maint_date')
|
||||
if self.record.bed_class_maint_date == '@':
|
||||
self.query_parameter['bed_class_maint_date'] = None
|
||||
|
||||
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
|
||||
if not self.record.prmit_bed.count(None) == len(self.record.prmit_bed):
|
||||
@ -444,14 +416,6 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
set_clauses.append('prmit_bed_num_other = :bed_num_gen')
|
||||
set_clauses.append('prmit_bed_num_gen = :bed_num_gen2')
|
||||
set_clauses.append('prmit_bed_num_rcup = :bed_num_rest')
|
||||
if self.record.bed_num_sum == '@':
|
||||
self.query_parameter['bed_num_sum'] = None
|
||||
self.query_parameter['bed_num_psy'] = None
|
||||
self.query_parameter['bed_num_tub'] = None
|
||||
self.query_parameter['bed_num_epi'] = None
|
||||
self.query_parameter['bed_num_gen'] = None
|
||||
self.query_parameter['bed_num_gen2'] = None
|
||||
self.query_parameter['bed_num_rest'] = None
|
||||
|
||||
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
|
||||
if sum(len(item) for item in self.record.insp_item) > 0:
|
||||
@ -462,14 +426,6 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
set_clauses.append('insp_item_paras = :inspect_code5')
|
||||
set_clauses.append('insp_item_biochem = :inspect_code6')
|
||||
set_clauses.append('insp_item_ri = :inspect_code7')
|
||||
if self.record.inspect_code1 == '@':
|
||||
self.query_parameter['inspect_code1'] = None
|
||||
self.query_parameter['inspect_code2'] = None
|
||||
self.query_parameter['inspect_code3'] = None
|
||||
self.query_parameter['inspect_code4'] = None
|
||||
self.query_parameter['inspect_code5'] = None
|
||||
self.query_parameter['inspect_code6'] = None
|
||||
self.query_parameter['inspect_code7'] = None
|
||||
|
||||
update_columns = ','.join(set_clauses)
|
||||
# 何も更新項目が無い場合は更新処理は行わない
|
||||
@ -494,6 +450,7 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
# 削除
|
||||
self.queries.append(self.PHYSICAL_DELETE_TRT_QUERY)
|
||||
|
||||
# 診療科目の1つ目の値がクリアマーク(@)の場合、診療科目を登録しない
|
||||
if self.record.medsbj_code[0] == "@":
|
||||
return
|
||||
|
||||
@ -516,10 +473,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:
|
||||
# 特養医務室の集合項目の値がクリアマーク(@)の場合、登録しない
|
||||
if self.record.dcfhp_92id == "@":
|
||||
return
|
||||
|
||||
self.queries.append(self.INSERT_SPCARE_QUERY)
|
||||
return
|
||||
|
||||
# 存在する場合はUpdate
|
||||
# 特養医務室の集合項目の値がクリアマーク(@)の場合、DCF親施設コードをクリアし、削除日を設定
|
||||
if self.record.dcfhp_92id == "@":
|
||||
self.query_parameter['dcf_prnt_inst_code'] = None
|
||||
self.query_parameter['delete_ymd'] = self.query_parameter['execute_date_str_ymd']
|
||||
@ -529,3 +491,73 @@ class ComInstMapper(UltmarcTableMapper):
|
||||
self.queries.append(self.UPDATE_SPCARE_QUERY)
|
||||
|
||||
return
|
||||
|
||||
def __set_clearing_item(self):
|
||||
|
||||
# 未確認フラグ
|
||||
if self.record.uncheck_flag == '@':
|
||||
self.query_parameter['uncheck_flag'] = None
|
||||
# 削除予定理由コード
|
||||
if self.record.hpdel_code == '@':
|
||||
self.query_parameter['hpdel_code'] = None
|
||||
# 重複時相手先コード
|
||||
if self.record.duphp_id == '@':
|
||||
self.query_parameter['dup_opp_code'] = None
|
||||
# 住所不明理由コード
|
||||
if self.record.hp_addr_lost_code == '@':
|
||||
self.query_parameter['hp_addr_lost_code'] = None
|
||||
# 電話番号なしフラグ
|
||||
if self.record.tel_nothing_flag == '@':
|
||||
self.query_parameter['tel_nothing_flag'] = None
|
||||
# 電話番号
|
||||
if self.record.hp_tel == '@':
|
||||
self.query_parameter['hp_tel'] = None
|
||||
# 施設代表者コード
|
||||
if self.record.president_id == '@':
|
||||
self.query_parameter['inst_repre_code'] = None
|
||||
# 代表者(カナ)
|
||||
if self.record.president_kana == '@':
|
||||
self.query_parameter['president_kana'] = None
|
||||
# 代表者(漢字) ※全角文字のため、クリアマーク「@」が大文字
|
||||
if self.record.president == '@':
|
||||
self.query_parameter['president'] = None
|
||||
# 開業予定フラグ・開業予定年月
|
||||
if self.record.open_flag == '@':
|
||||
self.query_parameter['open_flag'] = None
|
||||
self.query_parameter['open_year_month'] = None
|
||||
# 休院フラグ・休院開始年月
|
||||
if self.record.close_flag == '@':
|
||||
self.query_parameter['close_flag'] = None
|
||||
self.query_parameter['close_year_month'] = None
|
||||
# 関連大学親コード
|
||||
if self.record.assoc_parrent_id == '@':
|
||||
self.query_parameter['univ_prnt_code'] = None
|
||||
# 病棟閉鎖フラグ
|
||||
if self.record.close_flag2 == '@':
|
||||
self.query_parameter['close_flag2'] = None
|
||||
# 病床数(定員)
|
||||
if self.record.bed_num == '@':
|
||||
self.query_parameter['bed_num'] = None
|
||||
# 許可病床メンテ日付
|
||||
if self.record.bed_class_maint_date == '@':
|
||||
self.query_parameter['bed_class_maint_date'] = None
|
||||
# 許可ベッド数(合計、精神、結核、感染、その他、一般病床、療養病床)
|
||||
if self.record.bed_num_sum == '@':
|
||||
self.query_parameter['bed_num_sum'] = None
|
||||
self.query_parameter['bed_num_psy'] = None
|
||||
self.query_parameter['bed_num_tub'] = None
|
||||
self.query_parameter['bed_num_epi'] = None
|
||||
self.query_parameter['bed_num_gen'] = None
|
||||
self.query_parameter['bed_num_gen2'] = None
|
||||
self.query_parameter['bed_num_rest'] = None
|
||||
# 検査項目(微生物、血清、血液、病理、寄生虫、生化、RI)
|
||||
if self.record.inspect_code1 == '@':
|
||||
self.query_parameter['inspect_code1'] = None
|
||||
self.query_parameter['inspect_code2'] = None
|
||||
self.query_parameter['inspect_code3'] = None
|
||||
self.query_parameter['inspect_code4'] = None
|
||||
self.query_parameter['inspect_code5'] = None
|
||||
self.query_parameter['inspect_code6'] = None
|
||||
self.query_parameter['inspect_code7'] = None
|
||||
|
||||
return
|
||||
|
||||
@ -134,6 +134,8 @@ class TestComInstMapper:
|
||||
|
||||
# 期待値ファイルを読み込む(特養医務室データ)
|
||||
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_spcare_insert.csv'))
|
||||
actual_record_count = self.db.execute_select('SELECT COUNT(*) AS count_num FROM src05.com_spcare_med_office_dat')[0]['count_num']
|
||||
assert actual_record_count == len(expect_data_list), 'DBのレコード件数が期待値の件数と一致すること'
|
||||
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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user