新規作成(短期滞在手術)(専門外来)

This commit is contained in:
野間 2023-05-11 13:56:27 +09:00
parent 4eed797b79
commit b2e3658713
26 changed files with 867 additions and 3 deletions

View File

@ -95,7 +95,7 @@ class ComPrefcMedDisTreatMapper(UltmarcTableMapper):
return self.INSERT_QUERY
# 存在する場合はUpdate
# 病床数が空の場合は更新しない
# 前年件数が空の場合は更新しない
if self.record.pre_num is not None:
if self.record.pre_num == '@':
self.query_parameter['pre_num'] = None

View File

@ -0,0 +1,95 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sojourn_ope import ComPrefcMedSojournOpe
class ComPrefcMedSojournOpeMapper(UltmarcTableMapper):
"""レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\
SELECT
COUNT(*) AS count_num
FROM
src05.com_prefc_med_sojourn_ope
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
cos_surgery_code = :cos_surgery_code
"""
# データ登録用SQL
INSERT_QUERY = """\
INSERT INTO src05.com_prefc_med_sojourn_ope
(
dcf_dsf_inst_cd,
cos_surgery_code,
regist_ymd,
sys_regist_date,
regist_prgm_id,
sys_update_date,
update_prgm_id
)
VALUES (
:dcfdsf_inst_code,
:cos_surgery_code,
:execute_date_str_ymd,
:execute_datetime,
:program_name,
:execute_datetime,
:program_name
)
"""
# データ変更用SQL
UPDATE_QUERY = """\
UPDATE
src05.com_prefc_med_sojourn_ope
SET
update_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
cos_surgery_code = :cos_surgery_code
"""
# 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除
PHYSICAL_DELETE_QUERY = """\
DELETE FROM
src05.com_prefc_med_sojourn_ope
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
cos_surgery_code = :cos_surgery_code
"""
record: ComPrefcMedSojournOpe
def __init__(self, record: list[str], db) -> None:
super().__init__(record, db, ComPrefcMedSojournOpe)
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
# モジュール名をクエリパラメータに設定
self.query_parameter['program_name'] = program_name
# 読み込んだレコード値もクエリパラメータに追加
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
def make_query(self):
# 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除
if self.record.maint_flag == 'B' and self.record.adddel_div == '1':
self.queries.append(self.PHYSICAL_DELETE_QUERY)
return
# 追加、更新の場合
self.queries.append(self.__make_upsert_query())
return
def __make_upsert_query(self):
# レコードの存在確認
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
return self.INSERT_QUERY
# 存在する場合はUpdate
return self.UPDATE_QUERY

View File

@ -0,0 +1,125 @@
from src.batch.ultmarc.utmp_tables.table_mapper.ultmarc_table_mapper import \
UltmarcTableMapper
from src.batch.ultmarc.utmp_tables.tables.com_prefc_med_sp_outpat import ComPrefcMedSpOutpat
class ComPrefcMedSpOutpatMapper(UltmarcTableMapper):
"""レイアウト区分136: COM_都道府県医療機能情報(専門外来)"""
# レコード存在確認SQL
RECORD_EXISTS_QUERY = """\
SELECT
COUNT(*) AS count_num
FROM
src05.com_prefc_med_sp_outpat
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
specialclinic_name = :specialclinic_name
"""
# データ登録用SQL
INSERT_QUERY = """\
INSERT INTO src05.com_prefc_med_sp_outpat
(
dcf_dsf_inst_cd,
specialclinic_name,
sort_key,
sectsub_cd,
regist_ymd,
sys_regist_date,
regist_prgm_id,
sys_update_date,
update_prgm_id
)
VALUES (
:dcfdsf_inst_code,
:specialclinic_name,
:sort_key,
:sectsub_cd,
:execute_date_str_ymd,
:execute_datetime,
:program_name,
:execute_datetime,
:program_name
)
"""
# データ変更用SQL
UPDATE_QUERY = """\
UPDATE
src05.com_prefc_med_sp_outpat
SET
{update_columns}
update_ymd = :execute_date_str_ymd,
sys_update_date = :execute_datetime,
update_prgm_id = :program_name
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
specialclinic_name = :specialclinic_name
"""
# 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除
PHYSICAL_DELETE_QUERY = """\
DELETE FROM
src05.com_prefc_med_sp_outpat
WHERE
dcf_dsf_inst_cd = :dcfdsf_inst_code
AND
specialclinic_name = :specialclinic_name
"""
record: ComPrefcMedSpOutpat
def __init__(self, record: list[str], db) -> None:
super().__init__(record, db, ComPrefcMedSpOutpat)
program_name = __name__.split('.')[-1] # 当モジュール名(現行から変わっている)
# モジュール名をクエリパラメータに設定
self.query_parameter['program_name'] = program_name
# 読み込んだレコード値もクエリパラメータに追加
self.query_parameter = {**self.query_parameter, **self.record.to_sql_parameter()}
def make_query(self):
# 『修正区分がB(修正)かつ専門医メンテナンス区分が1(退職)』の場合、物理削除
if self.record.maint_flag == 'B' and self.record.adddel_div == '1':
self.queries.append(self.PHYSICAL_DELETE_QUERY)
return
# 追加、更新の場合
self.queries.append(self.__make_upsert_query())
return
def __make_upsert_query(self):
# レコードの存在確認
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
return self.INSERT_QUERY
# 存在する場合ではUpdate
return self.__make_update_query()
def __make_update_query(self):
set_clauses = [] # 設定項目
# ソートキー
if len(self.record.sort_key) > 0:
set_clauses.append('sort_key = :sort_key')
# 分類補助コード
if len(self.record.sectsub_cd) > 0:
set_clauses.append('sectsub_cd = :sectsub_cd')
if self.record.sectsub_cd == '@':
self.query_parameter['sectsub_cd'] = None
update_columns = ','.join(set_clauses)
# 何も更新項目が無い場合はNoneとする更新処理は行わない
if len(update_columns) == 0:
return None
else:
# 末尾にカンマを付けてSET句を完成させる
update_columns += ','
update_query = self.UPDATE_QUERY.format(
update_columns=update_columns
)
return update_query

View File

@ -0,0 +1,25 @@
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComPrefcMedSojournOpe(UltmarcTable):
"""レイアウト区分132: COM_都道府県医療機能情報(短期滞在手術)"""
dcfhp_id: str # DCFコードレコードID
dcfhp_code: str # DCFコード施設コード
dcfhp_yobi: str # DCFコード予備
cos_surgery_code: str # 短期滞在手術コード
adddel_div: str # 追加削除区分
maint_flag: str # 修正区分
dcfdsf_inst_code: str # DCFDSF施設コード
def __init__(self, record: list[str]):
super().__init__(record)
self.dcfhp_id = record[1].strip()
self.dcfhp_code = record[2].strip()
self.dcfhp_yobi = record[3].strip()
self.maint_flag = record[4].strip()
self.cos_surgery_code = record[5].strip()
self.adddel_div = record[6].strip()
# DCFDSF施設コード
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])

View File

@ -0,0 +1,29 @@
from src.batch.ultmarc.utmp_tables.tables.ultmarc_table import UltmarcTable
class ComPrefcMedSpOutpat(UltmarcTable):
"""レイアウト区分136: COM_都道府県医療機能情報(専門外来)"""
dcfhp_id: str # DCFコードレコードID
dcfhp_code: str # DCFコード施設コード
dcfhp_yobi: str # DCFコード予備
specialclinic_name: str # 専門外来名
sort_key: str # ソートキー
sectsub_cd: str # 分類補助コード
adddel_div: str # 追加削除区分
maint_flag: str # 修正区分
dcfdsf_inst_code: str # DCFDSF施設コード
def __init__(self, record: list[str]):
super().__init__(record)
self.dcfhp_id = record[1].strip()
self.dcfhp_code = record[2].strip()
self.dcfhp_yobi = record[3].strip()
self.maint_flag = record[4].strip()
self.specialclinic_name = record[5].strip()
self.adddel_div = record[6].strip()
self.sort_key = record[9].strip()
self.sectsub_cd = record[10].strip()
# DCFDSF施設コード
self.dcfdsf_inst_code = ''.join([self.dcfhp_id, self.dcfhp_code, self.dcfhp_yobi])

View File

@ -36,6 +36,10 @@ from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_equpment_
ComPrefcMedEqupmentMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_dis_treat_mapper import \
ComPrefcMedDisTreatMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sojourn_ope_mapper import \
ComPrefcMedSojournOpeMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_prefc_med_sp_outpat_mapper import \
ComPrefcMedSpOutpatMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.com_cop_hp_mapper import \
ComCopHpMapper
from src.batch.ultmarc.utmp_tables.table_mapper.concrete.null_mapper import \
@ -67,9 +71,9 @@ COM_TABLE_LIST = {
# COM_都道府県医療機能情報(疾患治療)
"134": ComPrefcMedDisTreatMapper,
# COM_都道府県医療機能情報(短期滞在手術)
"135": NullMapper,
"135": ComPrefcMedSojournOpeMapper,
# COM_都道府県医療機能情報(専門外来)
"136": NullMapper,
"136": ComPrefcMedSpOutpatMapper,
# COM_診療科目
"001": NullMapper,
# COM_病院種別

View File

@ -0,0 +1,3 @@
"135","00","9901679","","B","101","1","20141210","20141213"
"135","00","9901679","","B","102","1","20141209","20141213"
"135","00","9901679","","B","111","1","20141208","20141213"
1 135 00 9901679 B 101 1 20141210 20141213
2 135 00 9901679 B 102 1 20141209 20141213
3 135 00 9901679 B 111 1 20141208 20141213

View File

@ -0,0 +1,7 @@
"135","00","9900146","","A","213","2","20141113","20141114"
"135","00","9900146","","A","214","2","20141113","20141114"
"135","00","9900146","","A","215","2","20141113","20141114"
"135","00","9901679","","A","101","2","20141113","20141114"
"135","00","9901679","","A","102","2","20141113","20141114"
"135","00","9929798","","A","110","2","20141113","20141114"
"135","00","9929798","","A","111","2","20141113","20141114"
1 135 00 9900146 A 213 2 20141113 20141114
2 135 00 9900146 A 214 2 20141113 20141114
3 135 00 9900146 A 215 2 20141113 20141114
4 135 00 9901679 A 101 2 20141113 20141114
5 135 00 9901679 A 102 2 20141113 20141114
6 135 00 9929798 A 110 2 20141113 20141114
7 135 00 9929798 A 111 2 20141113 20141114

View File

@ -0,0 +1,4 @@
"135","00","9901679","","B","101","2","20141113","20141114"
"135","00","9901679","","B","111","2","20141113","20141114"
"135","00","9929798","","B","111","2","20141113","20141114"
"135","00","9929798","","B","211","2","20141113","20141114"
1 135 00 9901679 B 101 2 20141113 20141114
2 135 00 9901679 B 111 2 20141113 20141114
3 135 00 9929798 B 111 2 20141113 20141114
4 135 00 9929798 B 211 2 20141113 20141114

View File

@ -0,0 +1,10 @@
"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","101","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","111","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
1 dcf_dsf_inst_cd cos_surgery_code regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009900146 213 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
3 009900146 214 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
4 009900146 215 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
5 009901679 101 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp
6 009901679 102 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
7 009901679 111 20171011 20171011 NULL NULL NULL NULL 2017/10/11 11:49:28 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp
8 009929798 110 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
9 009929798 111 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp
10 009929798 211 20171011 20171011 NULL NULL NULL NULL 2017/10/11 11:49:28 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp

View File

@ -0,0 +1,8 @@
"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","101","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","111","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
1 dcf_dsf_inst_cd cos_surgery_code regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009900146 213 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
3 009900146 214 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
4 009900146 215 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
5 009901679 101 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
6 009901679 102 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
7 009929798 110 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
8 009929798 111 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp

View File

@ -0,0 +1,7 @@
"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","111","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
"009929798","211","20171011","20171011","NULL","NULL","NULL","NULL","2017/10/11 11:49:28","clsPrefcMedSojournOp","2017/10/11 21:20:37","clsPrefcMedSojournOp"
1 dcf_dsf_inst_cd cos_surgery_code regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009900146 213 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
3 009900146 214 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
4 009900146 215 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
5 009929798 110 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
6 009929798 111 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp
7 009929798 211 20171011 20171011 NULL NULL NULL NULL 2017/10/11 11:49:28 clsPrefcMedSojournOp 2017/10/11 21:20:37 clsPrefcMedSojournOp

View File

@ -0,0 +1,8 @@
"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009900146","213","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009900146","214","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009900146","215","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009901679","101","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009901679","102","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009929798","110","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
"009929798","111","20230511","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper","2017/10/08 20:57:12","com_prefc_med_sojourn_ope_mapper"
1 dcf_dsf_inst_cd cos_surgery_code regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009900146 213 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
3 009900146 214 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
4 009900146 215 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
5 009901679 101 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
6 009901679 102 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
7 009929798 110 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper
8 009929798 111 20230511 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper 2017/10/08 20:57:12 com_prefc_med_sojourn_ope_mapper

View File

@ -0,0 +1,10 @@
"dcf_dsf_inst_cd","cos_surgery_code","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009900146","213","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","214","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009900146","215","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","101","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper"
"009901679","102","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009901679","111","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper"
"009929798","110","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2017/10/08 20:57:12","clsPrefcMedSojournOp"
"009929798","111","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsPrefcMedSojournOp","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper"
"009929798","211","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper","2023/05/11 10:49:28","com_prefc_med_sojourn_ope_mapper"
1 dcf_dsf_inst_cd cos_surgery_code regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009900146 213 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
3 009900146 214 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
4 009900146 215 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
5 009901679 101 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper
6 009901679 102 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
7 009901679 111 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper
8 009929798 110 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2017/10/08 20:57:12 clsPrefcMedSojournOp
9 009929798 111 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsPrefcMedSojournOp 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper
10 009929798 211 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper 2023/05/11 10:49:28 com_prefc_med_sojourn_ope_mapper

View File

@ -0,0 +1,238 @@
import os.path as path
from datetime import datetime
import pytest
from src.batch.common.batch_context import BatchContext
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_sojourn_ope_mapper
from src.db.database import Database
from tests.testing_utility import (assert_table_results,
create_db_data_from_csv,
create_delete_sql_with_parameter,
create_insert_sql_with_parameter,
create_ultmarc_table_mapper_sut,
create_ultmarc_test_data_from_csv)
class TestComPrefcMedSojournOpeMapper:
"""レイアウト区分135: COM_都道府県医療機能情報(短期滞在手術)"""
db: Database
batch_context: BatchContext
test_file_path: str = path.dirname(__file__)
@pytest.fixture(autouse=True, scope='function')
def pre_test(self, database: Database):
"""テスト実行前後処理"""
self.batch_context = BatchContext.get_instance()
# setup
self.db = database
self.db.connect()
self.db.begin()
# testing
yield
# teardown
self.db.rollback()
self.db.disconnect()
def test_insert_record(self):
"""
Cases:
COM_都道府県医療機能情報(短期滞在手術)テーブルにレコードを登録する
Arranges:
- CSVデータを用意し読み込む
- 追加対象となるレコードを削除する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_insert.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sojourn_ope
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
cos_surgery_code = :cos_surgery_code
"""
for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_cos_surgery_code})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_update_record(self):
"""
Cases:
COM_都道府県医療機能情報(短期滞在手術)テーブルのレコードを更新する
Arranges:
- CSVデータを用意し読み込む
- 更新対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sojourn_ope_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_prefc_med_sojourn_ope',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_update.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sojourn_ope
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
cos_surgery_code = :cos_surgery_code
"""
for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_cos_surgery_code})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_logical_delete(self):
"""
Cases:
COM_都道府県医療機能情報(短期滞在手術)テーブルのレコードを1件論理削除する
Arranges:
- CSVデータを用意し読み込む
- 削除対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sojourn_ope_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sojourn_ope', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sojourn_ope_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_prefc_med_sojourn_ope',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sojourn_ope_mapper.ComPrefcMedSojournOpeMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sojourn_ope_delete.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_cos_surgery_code = [{'cos_surgery_code': columns['cos_surgery_code']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sojourn_ope
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
cos_surgery_code = :cos_surgery_code
"""
for param_dcf_dsf_inst_cd, param_cos_surgery_code in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_cos_surgery_code):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_cos_surgery_code})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'

View File

@ -0,0 +1 @@
"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","20141211","20141213","",""
1 136 00 9929798 B テスト ストーマ(人工肛門・人工膀胱)専門外来 1 20141211 20141213

View File

@ -0,0 +1,7 @@
"136","00","9901649","","A","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","030"
"136","00","9904439","","A","テスト アルコール症専門外来","2","20141113","20141114","1","019"
"136","00","9904439","","A","テスト メンタルヘルス専門外来","2","20141113","20141114","7","019"
"136","00","9904439","","A","テスト 禁煙専門外来","2","20141113","20141114","2","001"
"136","00","9904439","","A","テスト 糖尿病外来","2","20141113","20141114","7","006"
"136","00","9929798","","A","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","014"
"136","99","9999999","99","A","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","2","20141113","20141114","111","222"
1 136 00 9901649 A テスト 小児 内分泌・腎臓外来 2 20141113 20141114 5 030
2 136 00 9904439 A テスト アルコール症専門外来 2 20141113 20141114 1 019
3 136 00 9904439 A テスト メンタルヘルス専門外来 2 20141113 20141114 7 019
4 136 00 9904439 A テスト 禁煙専門外来 2 20141113 20141114 2 001
5 136 00 9904439 A テスト 糖尿病外来 2 20141113 20141114 7 006
6 136 00 9929798 A テスト ストーマ(人工肛門・人工膀胱)専門外来 2 20141113 20141114 1 014
7 136 99 9999999 99 A あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ 2 20141113 20141114 111 222

View File

@ -0,0 +1,6 @@
"136","00","9901649","","B","テスト 小児 内分泌・腎臓外来","2","20141113","20141114","5","019"
"136","00","9904439","","B","テスト 禁煙専門外来","2","20141113","20141114","2","@"
"136","00","9904439","","B","テスト 糖尿病外来","2","20141113","20141114","7","001"
"136","00","9929798","","B","テスト ストーマ(人工肛門・人工膀胱)専門外来","2","20141113","20141114","1","@"
"136","99","9999999","11","B","あいうえお","2","20141113","20141114","","999"
"136","99","9999999","99","B","あいうえお","2","20141113","20141114","",""
1 136 00 9901649 B テスト 小児 内分泌・腎臓外来 2 20141113 20141114 5 019
2 136 00 9904439 B テスト 禁煙専門外来 2 20141113 20141114 2 @
3 136 00 9904439 B テスト 糖尿病外来 2 20141113 20141114 7 001
4 136 00 9929798 B テスト ストーマ(人工肛門・人工膀胱)専門外来 2 20141113 20141114 1 @
5 136 99 9999999 11 B あいうえお 2 20141113 20141114 999
6 136 99 9999999 99 B あいうえお 2 20141113 20141114

View File

@ -0,0 +1,7 @@
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
1 dcf_dsf_inst_cd specialclinic_name sort_key sectsub_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009901649 テスト 小児 内分泌・腎臓外来 5 019 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp
3 009904439 テスト アルコール症専門外来 1 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
4 009904439 テスト メンタルヘルス専門外来 7 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
5 009904439 テスト 禁煙専門外来 2 NULL 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp
6 009904439 テスト 糖尿病外来 7 001 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp
7 009929798 テスト ストーマ(人工肛門・人工膀胱)専門外来 1 NULL 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp

View File

@ -0,0 +1,9 @@
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009901649","テスト 小児 内分泌・腎臓外来","5","030","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト 禁煙専門外来","2","001","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト 糖尿病外来","7","006","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"99999999911","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
1 dcf_dsf_inst_cd specialclinic_name sort_key sectsub_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009901649 テスト 小児 内分泌・腎臓外来 5 030 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
3 009904439 テスト アルコール症専門外来 1 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
4 009904439 テスト メンタルヘルス専門外来 7 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
5 009904439 テスト 禁煙専門外来 2 001 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
6 009904439 テスト 糖尿病外来 7 006 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
7 009929798 テスト ストーマ(人工肛門・人工膀胱)専門外来 1 014 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
8 99999999911 あいうえお 123 123 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
9 99999999999 あいうえお 123 123 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp

View File

@ -0,0 +1,6 @@
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト 禁煙専門外来","2","NULL","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
"009904439","テスト 糖尿病外来","7","001","20171008","20171011","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/11 21:20:37","clsComPrefcMedSpOutp"
1 dcf_dsf_inst_cd specialclinic_name sort_key sectsub_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009901649 テスト 小児 内分泌・腎臓外来 5 019 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp
3 009904439 テスト アルコール症専門外来 1 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
4 009904439 テスト メンタルヘルス専門外来 7 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
5 009904439 テスト 禁煙専門外来 2 NULL 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp
6 009904439 テスト 糖尿病外来 7 001 20171008 20171011 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/11 21:20:37 clsComPrefcMedSpOutp

View File

@ -0,0 +1,8 @@
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009901649","テスト 小児 内分泌・腎臓外来","5","030","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"009904439","テスト アルコール症専門外来","1","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"009904439","テスト メンタルヘルス専門外来","7","019","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"009904439","テスト 禁煙専門外来","2","001","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"009904439","テスト 糖尿病外来","7","006","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","014","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
"99999999999","あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ","111","222","20230511","NULL","NULL","NULL","NULL","NULL","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper","2023/05/11 10:57:12","com_prefc_med_sp_outpat_mapper"
1 dcf_dsf_inst_cd specialclinic_name sort_key sectsub_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009901649 テスト 小児 内分泌・腎臓外来 5 030 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
3 009904439 テスト アルコール症専門外来 1 019 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
4 009904439 テスト メンタルヘルス専門外来 7 019 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
5 009904439 テスト 禁煙専門外来 2 001 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
6 009904439 テスト 糖尿病外来 7 006 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
7 009929798 テスト ストーマ(人工肛門・人工膀胱)専門外来 1 014 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper
8 99999999999 あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ 111 222 20230511 NULL NULL NULL NULL NULL 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper 2023/05/11 10:57:12 com_prefc_med_sp_outpat_mapper

View File

@ -0,0 +1,9 @@
"dcf_dsf_inst_cd","specialclinic_name","sort_key","sectsub_cd","regist_ymd","update_ymd","regist_date","create_user","update_date","update_user","sys_regist_date","regist_prgm_id","sys_update_date","update_prgm_id"
"009901649","テスト 小児 内分泌・腎臓外来","5","019","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper"
"009904439","テスト アルコール症専門外来","1","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト メンタルヘルス専門外来","7","019","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
"009904439","テスト 禁煙専門外来","2","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper"
"009904439","テスト 糖尿病外来","7","001","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper"
"009929798","テスト ストーマ(人工肛門・人工膀胱)専門外来","1","NULL","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:49:28","com_prefc_med_sp_outpat_mapper"
"99999999911","あいうえお","123","999","20171008","20230511","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2023/05/11 11:57:12","com_prefc_med_sp_outpat_mapper"
"99999999999","あいうえお","123","123","20171008","NULL","NULL","NULL","NULL","NULL","2017/10/08 20:57:12","clsComPrefcMedSpOutp","2017/10/08 20:57:12","clsComPrefcMedSpOutp"
1 dcf_dsf_inst_cd specialclinic_name sort_key sectsub_cd regist_ymd update_ymd regist_date create_user update_date update_user sys_regist_date regist_prgm_id sys_update_date update_prgm_id
2 009901649 テスト 小児 内分泌・腎臓外来 5 019 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2023/05/11 11:49:28 com_prefc_med_sp_outpat_mapper
3 009904439 テスト アルコール症専門外来 1 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
4 009904439 テスト メンタルヘルス専門外来 7 019 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp
5 009904439 テスト 禁煙専門外来 2 NULL 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2023/05/11 11:49:28 com_prefc_med_sp_outpat_mapper
6 009904439 テスト 糖尿病外来 7 001 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2023/05/11 11:49:28 com_prefc_med_sp_outpat_mapper
7 009929798 テスト ストーマ(人工肛門・人工膀胱)専門外来 1 NULL 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2023/05/11 11:49:28 com_prefc_med_sp_outpat_mapper
8 99999999911 あいうえお 123 999 20171008 20230511 NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2023/05/11 11:57:12 com_prefc_med_sp_outpat_mapper
9 99999999999 あいうえお 123 123 20171008 NULL NULL NULL NULL NULL 2017/10/08 20:57:12 clsComPrefcMedSpOutp 2017/10/08 20:57:12 clsComPrefcMedSpOutp

View File

@ -0,0 +1,238 @@
import os.path as path
from datetime import datetime
import pytest
from src.batch.common.batch_context import BatchContext
from src.batch.ultmarc.utmp_tables.table_mapper.concrete import com_prefc_med_sp_outpat_mapper
from src.db.database import Database
from tests.testing_utility import (assert_table_results,
create_db_data_from_csv,
create_delete_sql_with_parameter,
create_insert_sql_with_parameter,
create_ultmarc_table_mapper_sut,
create_ultmarc_test_data_from_csv)
class TestComPrefcMedSpOutpatMapper:
"""レイアウト区分136: COM_都道府県医療機能情報(専門外来)"""
db: Database
batch_context: BatchContext
test_file_path: str = path.dirname(__file__)
@pytest.fixture(autouse=True, scope='function')
def pre_test(self, database: Database):
"""テスト実行前後処理"""
self.batch_context = BatchContext.get_instance()
# setup
self.db = database
self.db.connect()
self.db.begin()
# testing
yield
# teardown
self.db.rollback()
self.db.disconnect()
def test_insert_record(self):
"""
Cases:
COM_都道府県医療機能情報(専門外来)テーブルにレコードを登録する
Arranges:
- CSVデータを用意し読み込む
- 追加対象となるレコードを削除する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_insert.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_insert.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sp_outpat
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
specialclinic_name = :specialclinic_name
"""
for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_specialclinic_name})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_update_record(self):
"""
Cases:
COM_都道府県医療機能情報(専門外来)テーブルのレコードを更新する
Arranges:
- CSVデータを用意し読み込む
- 更新対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_update.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sp_outpat_before_update.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_prefc_med_sp_outpat',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_update.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sp_outpat
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
specialclinic_name = :specialclinic_name
"""
for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_specialclinic_name})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'
def test_logical_delete(self):
"""
Cases:
COM_都道府県医療機能情報(専門外来)テーブルのレコードを1件論理削除する
Arranges:
- CSVデータを用意し読み込む
- 削除対象となるレコードを登録する
Expects:
- 登録内容が期待値と一致すること
"""
# Arrange
# 処理日設定
self.batch_context.syor_date = datetime.strftime(datetime.now(), '%Y/%m/%d')
# テスト用のCSVを読み込む
test_dat_file = create_ultmarc_test_data_from_csv(path.join(self.test_file_path, 'com_prefc_med_sp_outpat_delete.csv'))
# 一旦全データをDBから削除
delete_sql, delete_parameter = create_delete_sql_with_parameter('src05.com_prefc_med_sp_outpat', {'1': '1'})
self.db.execute(delete_sql, delete_parameter)
# テストデータをDBに登録
# DBデータを読み込む
test_sql_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'db_com_prefc_med_sp_outpat_before_delete.csv'))
for test_data in test_sql_data_list:
insert_sql, insert_parameter = create_insert_sql_with_parameter(
'src05.com_prefc_med_sp_outpat',
test_data.keys(),
test_data.values()
)
self.db.execute(insert_sql, insert_parameter)
# Act
for line_number, line in enumerate(test_dat_file, start=1):
sut: com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper = create_ultmarc_table_mapper_sut(line, self.db)
assert type(sut) is com_prefc_med_sp_outpat_mapper.ComPrefcMedSpOutpatMapper, f'{line_number}行目:マッパークラスが期通りか'
sut.make_query()
sut.execute_queries()
# Assert
# 期待値ファイルを読み込む
expect_data_list = create_db_data_from_csv(path.join(self.test_file_path, 'expect_com_prefc_med_sp_outpat_delete.csv'))
primary_keys_dcf_dsf_inst_cd = [{'dcf_dsf_inst_cd': columns['dcf_dsf_inst_cd']} for columns in expect_data_list]
primary_keys_specialclinic_name = [{'specialclinic_name': columns['specialclinic_name']} for columns in expect_data_list]
actual_data_list = []
sp_field_select_sql = """\
SELECT * FROM src05.com_prefc_med_sp_outpat
WHERE
dcf_dsf_inst_cd = :dcf_dsf_inst_cd
AND
specialclinic_name = :specialclinic_name
"""
for param_dcf_dsf_inst_cd, param_specialclinic_name in zip(primary_keys_dcf_dsf_inst_cd, primary_keys_specialclinic_name):
sp_field_data = self.db.execute_select(
sp_field_select_sql,
{**param_dcf_dsf_inst_cd, **param_specialclinic_name})
assert len(sp_field_data) == 1, '1件取得できていること'
actual_data_list.append(sp_field_data[0])
# 期待値検査
ignore_columns = ['regist_ymd', 'update_ymd', 'sys_update_date', 'sys_regist_date']
assert_table_results(actual_data_list, expect_data_list, ignore_col_name=ignore_columns)
# 動的日付項目の個別確認
line_number = 0
for actual_row, expect_row in zip(actual_data_list, expect_data_list):
line_number += 1
for actual_col_name, expect_col_name in zip(actual_row, expect_row):
if actual_col_name in ignore_columns:
if expect_row[expect_col_name] is None:
assert actual_row[actual_col_name] is None, f'{line_number}行目:{actual_col_name}が、登録されていないこと'
else:
assert actual_row[actual_col_name] >= expect_row[expect_col_name], f'{line_number}行目:{actual_col_name}が、期待値以降であること'