fix: COM_施設属性 項目クリアの考慮漏れ コードの修正。テストもパス

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2023-11-28 19:11:55 +09:00
parent dc52b23919
commit d9a2144801
2 changed files with 279 additions and 196 deletions

View File

@ -677,6 +677,10 @@ class ComInstAttMapper(UltmarcTableMapper):
def __make_upsert_query(self):
# レコードの存在確認
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 「@」による項目クリアを設定
self.__set_clearing_item()
# 存在しない場合はInsert
if record_count[0]['count_num'] == 0:
self.queries.append(self.INSERT_QUERY)
@ -693,40 +697,24 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('dpc_flag = :dpc_flag')
set_clauses.append('dpc_specday = :dpc_spec_day')
set_clauses.append('dpc_cancelday = :dpc_cancel_day')
if self.record.dpc_flag == '@':
self.query_parameter['dpc_flag'] = None
self.query_parameter['dpc_spec_day'] = None
self.query_parameter['dpc_cancel_day'] = None
# DPC準備病院
if len(self.record.predpc_flag) > 0:
set_clauses.append('predpc_flag = :predpc_flag')
set_clauses.append('predpc_specday = :predpc_spec_day')
set_clauses.append('predpc_cancelday = :predpc_cancel_day')
if self.record.predpc_flag == '@':
self.query_parameter['predpc_flag'] = None
self.query_parameter['predpc_spec_day'] = None
self.query_parameter['predpc_cancel_day'] = None
# がん診療連携拠点病院
if len(self.record.cancer_flag) > 0:
set_clauses.append('cancer_flag = :cancer_flag')
set_clauses.append('cancer_specday = :cancer_spec_day')
set_clauses.append('cancer_cancelday = :cancer_cancel_day')
if self.record.cancer_flag == '@':
self.query_parameter['cancer_flag'] = None
self.query_parameter['cancer_spec_day'] = None
self.query_parameter['cancer_cancel_day'] = None
# 特定機能病院
if len(self.record.funchp_flag) > 0:
set_clauses.append('funchpflag = :funchp_flag')
set_clauses.append('funchpokdate = :funchp_ok_date')
set_clauses.append('funchpcandate = :funchp_can_date')
if self.record.funchp_flag == '@':
self.query_parameter['funchp_flag'] = None
self.query_parameter['funchp_ok_date'] = None
self.query_parameter['funchp_can_date'] = None
# 地域医療支援病院
if len(self.record.areasuphp_flag) > 0:
@ -734,203 +722,122 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('areasuphpintrate = :areasuphp_intrate')
set_clauses.append('areasuphpokdate = :areasuphp_ok_date')
set_clauses.append('areasuphpcandate = :areasuphp_can_date')
if self.record.areasuphp_flag == '@':
self.query_parameter['areasuphp_flag'] = None
self.query_parameter['areasuphp_intrate'] = None
self.query_parameter['areasuphp_ok_date'] = None
self.query_parameter['areasuphp_can_date'] = None
# 超急性期脳卒中加算
if len(self.record.acuthp_add_flag) > 0:
set_clauses.append('acuthpaddflag = :acuthp_add_flag')
set_clauses.append('acuthpaddokdate = :acuthp_add_ok_date')
set_clauses.append('acuthpaddcandate = :acuthp_add_can_date')
if self.record.acuthp_add_flag == '@':
self.query_parameter['acuthp_add_flag'] = None
self.query_parameter['acuthp_add_ok_date'] = None
self.query_parameter['acuthp_add_can_date'] = None
# 総合入院体制加算
if len(self.record.genadmisiion_flag) > 0:
set_clauses.append('genadmisiionflag = :genadmisiion_flag')
set_clauses.append('genadmisiionfokdate = :genadmisiion_ok_date')
set_clauses.append('genadmisiionfcandate = :genadmisiion_can_date')
if self.record.genadmisiion_flag == '@':
self.query_parameter['genadmisiion_flag'] = None
self.query_parameter['genadmisiion_ok_date'] = None
self.query_parameter['genadmisiion_can_date'] = None
# 医師事務作業補助体制加算
if len(self.record.assistance_flag) > 0:
set_clauses.append('assistanceflag = :assistance_flag')
set_clauses.append('assistanceokdate = :assistance_ok_date')
set_clauses.append('assistancecandate = :assistance_can_date')
if self.record.assistance_flag == '@':
self.query_parameter['assistance_flag'] = None
self.query_parameter['assistance_ok_date'] = None
self.query_parameter['assistance_can_date'] = None
# 診療録管理体制加算
if len(self.record.diagnosis_treatment_flag) > 0:
set_clauses.append('diagnosistreatment_flag = :diagnosis_treatment_flag')
set_clauses.append('diagnosistreatment_specday = :diagnosis_treatment_spec_day')
set_clauses.append('diagnosistreatment_cancelday = :diagnosis_treatment_cancel_day')
if self.record.diagnosis_treatment_flag == '@':
self.query_parameter['diagnosis_treatment_flag'] = None
self.query_parameter['diagnosis_treatment_spec_day'] = None
self.query_parameter['diagnosis_treatment_cancel_day'] = None
# 医療安全対策加算
if len(self.record.safety_flag) > 0:
set_clauses.append('safety_flag = :safety_flag')
set_clauses.append('safety_specday = :safety_spec_day')
set_clauses.append('safety_cancelday = :safety_cancel_day')
if self.record.safety_flag == '@':
self.query_parameter['safety_flag'] = None
self.query_parameter['safety_spec_day'] = None
self.query_parameter['safety_cancel_day'] = None
# 褥瘡ハイリスク患者ケア加算
if len(self.record.highrisk_flag) > 0:
set_clauses.append('highrisk_flag = :highrisk_flag')
set_clauses.append('highrisk_specday = :highrisk_spec_day')
set_clauses.append('highrisk_cancelday = :highrisk_cancel_day')
if self.record.highrisk_flag == '@':
self.query_parameter['highrisk_flag'] = None
self.query_parameter['highrisk_spec_day'] = None
self.query_parameter['highrisk_cancel_day'] = None
# 地域連携小児夜間・休日診療料
if len(self.record.infant_and_holiday_flag) > 0:
set_clauses.append('infantandholiday_flag = :infant_and_holiday_flag')
set_clauses.append('infantandholiday_specday = :infant_and_holiday_spec_day')
set_clauses.append('infantandholiday_cancelday = :infant_and_holiday_cancel_day')
if self.record.infant_and_holiday_flag == '@':
self.query_parameter['infant_and_holiday_flag'] = None
self.query_parameter['infant_and_holiday_spec_day'] = None
self.query_parameter['infant_and_holiday_cancel_day'] = None
# 開放型病院
if len(self.record.ophp_flag) > 0:
set_clauses.append('ophpflag = :ophp_flag')
set_clauses.append('ophpokdate = :ophpok_date')
set_clauses.append('ophpcandate = :ophpcan_date')
if self.record.ophp_flag == '@':
self.query_parameter['ophp_flag'] = None
self.query_parameter['ophpok_date'] = None
self.query_parameter['ophpcan_date'] = None
# 地域連携クリティカルパス
if len(self.record.critical_flag) > 0:
set_clauses.append('critical_flag = :critical_flag')
# 項目クリア判断
is_aggregate_item_clear = self.record.critical_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['critical_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
num = str(i).zfill(2) # 2桁で0埋め
setting_item_name = f'critical_code{num}'
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 薬剤管理指導料
if len(self.record.drgmgthp_flag) > 0:
set_clauses.append('drgmgthpflag = :drgmgthp_flag')
set_clauses.append('drgmgthpokdate = :drgmgthp_ok_date')
set_clauses.append('drgmgthpcandate = :drgmgthp_can_date')
if self.record.drgmgthp_flag == '@':
self.query_parameter['drgmgthp_flag'] = None
self.query_parameter['drgmgthp_ok_date'] = None
self.query_parameter['drgmgthp_can_date'] = None
# 画像診断管理加算
if len(self.record.image_diagnosis_flag) > 0:
set_clauses.append('imagediagnosis_flag = :image_diagnosis_flag')
set_clauses.append('imagediagnosis_specifiedday = :image_diagnosis_specified_day')
set_clauses.append('imagediagnosis_cancelday = :image_diagnosis_cancel_day')
if self.record.image_diagnosis_flag == '@':
self.query_parameter['image_diagnosis_flag'] = None
self.query_parameter['image_diagnosis_specified_day'] = None
self.query_parameter['image_diagnosis_cancel_day'] = None
# 外来化学療法加算
if len(self.record.chemotherapy_flag) > 0:
set_clauses.append('chemotherapy_flag = :chemotherapy_flag')
set_clauses.append('chemotherapy_specday = :chemotherapy_spec_day')
set_clauses.append('chemotherapy_cancelday = :chemotherapy_cancel_day')
if self.record.chemotherapy_flag == '@':
self.query_parameter['chemotherapy_flag'] = None
self.query_parameter['chemotherapy_spec_day'] = None
self.query_parameter['chemotherapy_cancel_day'] = None
# 疾患別リハビリテーション料
if len(self.record.rehabilitation_flag) > 0:
set_clauses.append('rehabilitation_flag = :rehabilitation_flag')
# 項目クリア判断
is_aggregate_item_clear = self.record.rehabilitation_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['rehabilitation_flag'] = None
# 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 11):
num = str(i).zfill(2) # 2桁で0埋め
setting_item_name = f'rehabilitation_code{num}'
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 麻酔管理料
if len(self.record.anesthetizing_manage_flag) > 0:
set_clauses.append('anesthetizingmanage_flag = :anesthetizing_manage_flag')
set_clauses.append('anesthetizingmanage_specday = :anesthetizing_manage_spec_day')
set_clauses.append('anesthetizingmanage_cancelday = :anesthetizing_manage_can_day')
if self.record.anesthetizing_manage_flag == '@':
self.query_parameter['anesthetizing_manage_flag'] = None
self.query_parameter['anesthetizing_manage_spec_day'] = None
self.query_parameter['anesthetizing_manage_can_day'] = None
# 在宅療養支援病院・診療所
if len(self.record.home_recuperation_flag) > 0:
set_clauses.append('homerecuperation_flag = :home_recuperation_flag')
set_clauses.append('homerecuperation_specday = :home_recuperation_spec_day')
set_clauses.append('homerecuperation_cancelday = :home_recuperation_cancel_day')
if self.record.home_recuperation_flag == '@':
self.query_parameter['home_recuperation_flag'] = None
self.query_parameter['home_recuperation_spec_day'] = None
self.query_parameter['home_recuperation_cancel_day'] = None
# 在宅時医学総合管理料
if len(self.record.synthesis_when_staying_flag) > 0:
set_clauses.append('synthesiswhenstaying_flag = :synthesis_when_staying_flag')
set_clauses.append('synthesiswhenstaying_specday = :synthesis_when_staying_spec_day')
set_clauses.append('synthesiswhenstaying_cancelday = :synthesis_when_staying_can_day')
if self.record.synthesis_when_staying_flag == '@':
self.query_parameter['synthesis_when_staying_flag'] = None
self.query_parameter['synthesis_when_staying_spec_day'] = None
self.query_parameter['synthesis_when_staying_can_day'] = None
# 在宅末期医療総合診療料
if len(self.record.home_late_flag) > 0:
set_clauses.append('homelateflag = :home_late_flag')
set_clauses.append('homelateokday = :home_late_ok_day')
set_clauses.append('homelatecanday = :home_late_can_day')
if self.record.home_late_flag == '@':
self.query_parameter['home_late_flag'] = None
self.query_parameter['home_late_ok_day'] = None
self.query_parameter['home_late_can_day'] = None
# ケアミックス区分
if len(self.record.caremix_kind) > 0:
set_clauses.append('caremixkind = :caremix_kind')
if self.record.caremix_kind == '@':
self.query_parameter['caremix_kind'] = None
# 完全型・移行型区分
if len(self.record.fullmove_flag) > 0:
set_clauses.append('fullmoveflag = :fullmove_flag')
if self.record.fullmove_flag == '@':
self.query_parameter['fullmove_flag'] = None
# 療養型病床群
if sum(len(item) for item in self.record.resthp_items) > 0:
@ -947,65 +854,35 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('resthpcarecandate = :resthp_care_can_date')
# 合計
set_clauses.append('resthpsbednum = :resthp_sbed_num')
if self.record.resthp_flag == '@':
self.query_parameter['resthp_flag'] = None
self.query_parameter['resthp_care_kind'] = None
self.query_parameter['resthp_bed_num'] = None
self.query_parameter['resthp_ok_date'] = None
self.query_parameter['resthp_can_date'] = None
self.query_parameter['resthp_care_nrs_kind'] = None
self.query_parameter['resthp_care_bed_num'] = None
self.query_parameter['resthp_care_ok_date'] = None
self.query_parameter['resthp_care_can_date'] = None
self.query_parameter['resthp_sbed_num'] = None
# 一般病棟
if len(self.record.nrmhp_flag) > 0:
set_clauses.append('nrmhpflag = :nrmhp_flag')
set_clauses.append('nrmhpcarekind = :nrmhp_care_kind')
set_clauses.append('nrmhpbedtotalnum = :nrmhp_bed_total_num')
if self.record.nrmhp_flag == '@':
self.query_parameter['nrmhp_flag'] = None
self.query_parameter['nrmhp_care_kind'] = None
self.query_parameter['nrmhp_bed_total_num'] = None
# 精神病棟
if len(self.record.menthp_flag) > 0:
set_clauses.append('menthpflag = :menthp_flag')
set_clauses.append('menthpcarekind = :menthp_care_kind')
set_clauses.append('menthpbednum = :menthp_bed_num')
if self.record.menthp_flag == '@':
self.query_parameter['menthp_flag'] = None
self.query_parameter['menthp_care_kind'] = None
self.query_parameter['menthp_bed_num'] = None
# 結核病棟
if len(self.record.tubhp_flag) > 0:
set_clauses.append('tubhpflag = :tubhp_flag')
set_clauses.append('tubhpcarekind = :tubhp_care_kind')
set_clauses.append('tubhpbednum = :tubhp_bed_num')
if self.record.tubhp_flag == '@':
self.query_parameter['tubhp_flag'] = None
self.query_parameter['tubhp_care_kind'] = None
self.query_parameter['tubhp_bed_num'] = None
# 感染症指定医療機関
if len(self.record.infhp_flag) > 0:
set_clauses.append('infhpflag = :infhp_flag')
set_clauses.append('infhpflag1 = :infhp_flag1')
set_clauses.append('infhpflag2 = :infhp_flag2')
if self.record.infhp_flag == '@':
self.query_parameter['infhp_flag'] = None
self.query_parameter['infhp_flag1'] = None
self.query_parameter['infhp_flag2'] = None
# 感染症病床
if len(self.record.infhp_bed_flag) > 0:
set_clauses.append('infhpbedflag = :infhp_bed_flag')
set_clauses.append('infhpbednum = :infhp_bed_num')
if self.record.infhp_bed_flag == '@':
self.query_parameter['infhp_bed_flag'] = None
self.query_parameter['infhp_bed_num'] = None
# 緩和ケア病棟設置病院
if len(self.record.hospice_flag) > 0:
@ -1013,11 +890,6 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('hospicebednum = :hospice_bed_num')
set_clauses.append('hospiceokdate = :hospice_ok_date')
set_clauses.append('hospicecandate = :hospice_can_date')
if self.record.hospice_flag == '@':
self.query_parameter['hospice_flag'] = None
self.query_parameter['hospice_bed_num'] = None
self.query_parameter['hospice_ok_date'] = None
self.query_parameter['hospice_can_date'] = None
# 医療機能評価
if len(self.record.hpfunce_st_flag) > 0:
@ -1025,11 +897,6 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('hpfuncestkind = :hpfunce_st_kind')
set_clauses.append('hpfuncestokdate = :hpfunce_st_ok_date')
set_clauses.append('hpfuncestcandate = :hpfunce_st_can_date')
if self.record.hpfunce_st_flag == '@':
self.query_parameter['hpfunce_st_flag'] = None
self.query_parameter['hpfunce_st_kind'] = None
self.query_parameter['hpfunce_st_ok_date'] = None
self.query_parameter['hpfunce_st_can_date'] = None
# 臨床研修指定病院
if sum(len(item) for item in self.record.cl_items) > 0:
@ -1045,38 +912,20 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('cldephpkind = :cldephp_kind')
set_clauses.append('cldephpokdate = :cldephp_ok_date')
set_clauses.append('cldephpcandate = :cldephp_can_date')
if self.record.clolyhp_kind == '@':
self.query_parameter['clolyhp_kind'] = None
self.query_parameter['clolyhp_ok_date'] = None
self.query_parameter['clolyhp_can_date'] = None
self.query_parameter['clhp_kind'] = None
self.query_parameter['clhp_ok_date'] = None
self.query_parameter['clhp_can_date'] = None
self.query_parameter['cldephp_kind'] = None
self.query_parameter['cldephp_ok_date'] = None
self.query_parameter['cldephp_can_date'] = None
# 災害拠点病院
if len(self.record.disasthp_flag) > 0:
set_clauses.append('disasthpflag = :disasthp_flag')
if self.record.disasthp_flag == '@':
self.query_parameter['disasthp_flag'] = None
# 救急医療
if len(self.record.d1emerhp_flag) > 0:
set_clauses.append('d1emerhpflag = :d1emerhp_flag')
set_clauses.append('d2emerhpflag = :d2emerhp_flag')
set_clauses.append('d3emerhpflag = :d3emerhp_flag')
if self.record.d1emerhp_flag == '@':
self.query_parameter['d1emerhp_flag'] = None
self.query_parameter['d2emerhp_flag'] = None
self.query_parameter['d3emerhp_flag'] = None
# 救急告示診療所
if len(self.record.emergency_clinic) > 0:
set_clauses.append('emergencyclinic = :emergency_clinic')
if self.record.emergency_clinic == '@':
self.query_parameter['emergency_clinic'] = None
# 治験中核病院
if len(self.record.trial_core_flag) > 0:
@ -1084,72 +933,42 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('trialcore_div = :trial_core_div')
set_clauses.append('trialcoreokdate = :trial_core_ok_date')
set_clauses.append('trialcorecandate = :trial_core_can_date')
if self.record.trial_core_flag == '@':
self.query_parameter['trial_core_flag'] = None
self.query_parameter['trial_core_div'] = None
self.query_parameter['trial_core_ok_date'] = None
self.query_parameter['trial_core_can_date'] = None
# 認知症疾患医療センター
if len(self.record.dementia_flag) > 0:
set_clauses.append('dementiaflag = :dementia_flag')
set_clauses.append('dementiaokdate = :dementia_okd_ate')
set_clauses.append('dementiacandate = :dementia_can_date')
if self.record.dementia_flag == '@':
self.query_parameter['dementia_flag'] = None
self.query_parameter['dementia_okd_ate'] = None
self.query_parameter['dementia_can_date'] = None
# 特定健康診査実施機関
if len(self.record.sphealth_exploration) > 0:
set_clauses.append('sphealth_exploration = :sphealth_exploration')
if self.record.sphealth_exploration == '@':
self.query_parameter['sphealth_exploration'] = None
# 特定保健指導実施機関
if len(self.record.sphealth_guidance) > 0:
set_clauses.append('sphealth_guidance = :sphealth_guidance')
if self.record.sphealth_guidance == '@':
self.query_parameter['sphealth_guidance'] = None
# 先進医療実施医療機関
if len(self.record.hiadhp_flag) > 0:
set_clauses.append('hiadhpflag = :hiadhp_flag')
# 項目クリア判断
is_aggregate_item_clear = self.record.hiadhp_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['hiadhp_flag'] = None
# 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 41):
setting_item_name_code = f'hiadhpcode{i}'
setting_item_name_kind = f'hiadhpkind{i}'
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
set_clauses.append(f'{setting_item_name_kind} = :{setting_item_name_kind}')
if is_aggregate_item_clear:
self.query_parameter[setting_item_name_code] = None
self.query_parameter[setting_item_name_kind] = None
# 先端医療実施医療機関
if len(self.record.hitechhp_flag) > 0:
set_clauses.append('hitechhpflag = :hitechhp_flag')
# 項目クリア判断
is_aggregate_item_clear = self.record.hitechhp_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['hitechhp_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
setting_item_name = f'hitechhpkind{i}'
set_clauses.append(f'{setting_item_name} = :{setting_item_name}')
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 政策医療
if len(self.record.policy_medical_flag) > 0:
set_clauses.append('policymedical_flag = :policy_medical_flag')
# 項目クリア判断
is_aggregate_item_clear = self.record.policy_medical_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['policy_medical_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
num = str(i).zfill(2) # 2桁で0埋め
@ -1157,9 +976,6 @@ class ComInstAttMapper(UltmarcTableMapper):
setting_item_name_content = f'policymedical_content{num}'
set_clauses.append(f'{setting_item_name_code} = :{setting_item_name_code}')
set_clauses.append(f'{setting_item_name_content} = :{setting_item_name_content}')
if is_aggregate_item_clear:
self.query_parameter[setting_item_name_code] = None
self.query_parameter[setting_item_name_content] = None
# 訪問看護ステーション
if len(self.record.visitcarest_flag) > 0:
@ -1167,17 +983,10 @@ class ComInstAttMapper(UltmarcTableMapper):
set_clauses.append('visitcarestation_id = :visitcarestation_id')
set_clauses.append('visitcarestation_code = :visitcarestation_code')
set_clauses.append('visitcarestation_yobi = :visitcarestation_yobi')
if self.record.visitcarest_flag == '@':
self.query_parameter['visitcarest_flag'] = None
self.query_parameter['visitcarestation_id'] = None
self.query_parameter['visitcarestation_code'] = None
self.query_parameter['visitcarestation_yobi'] = None
# 開設年月
if len(self.record.open_date) > 0:
set_clauses.append('opendate = :open_date')
if self.record.open_date == '@':
self.query_parameter['open_date'] = None
update_columns = ','.join(set_clauses)
# 何も更新項目が無い場合はNoneとする更新処理は行わない
@ -1190,3 +999,277 @@ class ComInstAttMapper(UltmarcTableMapper):
update_columns=update_columns
)
return update_query
def __set_clearing_item(self):
# DPC対象病院
if self.record.dpc_flag == '@':
self.query_parameter['dpc_flag'] = None
self.query_parameter['dpc_spec_day'] = None
self.query_parameter['dpc_cancel_day'] = None
# DPC準備病院
if self.record.predpc_flag == '@':
self.query_parameter['predpc_flag'] = None
self.query_parameter['predpc_spec_day'] = None
self.query_parameter['predpc_cancel_day'] = None
# がん診療連携拠点病院
if self.record.cancer_flag == '@':
self.query_parameter['cancer_flag'] = None
self.query_parameter['cancer_spec_day'] = None
self.query_parameter['cancer_cancel_day'] = None
# 特定機能病院
if self.record.funchp_flag == '@':
self.query_parameter['funchp_flag'] = None
self.query_parameter['funchp_ok_date'] = None
self.query_parameter['funchp_can_date'] = None
# 地域医療支援病院
if self.record.areasuphp_flag == '@':
self.query_parameter['areasuphp_flag'] = None
self.query_parameter['areasuphp_intrate'] = None
self.query_parameter['areasuphp_ok_date'] = None
self.query_parameter['areasuphp_can_date'] = None
# 超急性期脳卒中加算
if self.record.acuthp_add_flag == '@':
self.query_parameter['acuthp_add_flag'] = None
self.query_parameter['acuthp_add_ok_date'] = None
self.query_parameter['acuthp_add_can_date'] = None
# 総合入院体制加算
if self.record.genadmisiion_flag == '@':
self.query_parameter['genadmisiion_flag'] = None
self.query_parameter['genadmisiion_ok_date'] = None
self.query_parameter['genadmisiion_can_date'] = None
# 医師事務作業補助体制加算
if self.record.assistance_flag == '@':
self.query_parameter['assistance_flag'] = None
self.query_parameter['assistance_ok_date'] = None
self.query_parameter['assistance_can_date'] = None
# 診療録管理体制加算
if self.record.diagnosis_treatment_flag == '@':
self.query_parameter['diagnosis_treatment_flag'] = None
self.query_parameter['diagnosis_treatment_spec_day'] = None
self.query_parameter['diagnosis_treatment_cancel_day'] = None
# 医療安全対策加算
if self.record.safety_flag == '@':
self.query_parameter['safety_flag'] = None
self.query_parameter['safety_spec_day'] = None
self.query_parameter['safety_cancel_day'] = None
# 褥瘡ハイリスク患者ケア加算
if self.record.highrisk_flag == '@':
self.query_parameter['highrisk_flag'] = None
self.query_parameter['highrisk_spec_day'] = None
self.query_parameter['highrisk_cancel_day'] = None
# 地域連携小児夜間・休日診療料
if self.record.infant_and_holiday_flag == '@':
self.query_parameter['infant_and_holiday_flag'] = None
self.query_parameter['infant_and_holiday_spec_day'] = None
self.query_parameter['infant_and_holiday_cancel_day'] = None
# 開放型病院
if self.record.ophp_flag == '@':
self.query_parameter['ophp_flag'] = None
self.query_parameter['ophpok_date'] = None
self.query_parameter['ophpcan_date'] = None
# 地域連携クリティカルパス
is_aggregate_item_clear = self.record.critical_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['critical_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
num = str(i).zfill(2) # 2桁で0埋め
setting_item_name = f'critical_code{num}'
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 薬剤管理指導料
if self.record.drgmgthp_flag == '@':
self.query_parameter['drgmgthp_flag'] = None
self.query_parameter['drgmgthp_ok_date'] = None
self.query_parameter['drgmgthp_can_date'] = None
# 画像診断管理加算
if self.record.image_diagnosis_flag == '@':
self.query_parameter['image_diagnosis_flag'] = None
self.query_parameter['image_diagnosis_specified_day'] = None
self.query_parameter['image_diagnosis_cancel_day'] = None
# 外来化学療法加算
if self.record.chemotherapy_flag == '@':
self.query_parameter['chemotherapy_flag'] = None
self.query_parameter['chemotherapy_spec_day'] = None
self.query_parameter['chemotherapy_cancel_day'] = None
# 疾患別リハビリテーション料
is_aggregate_item_clear = self.record.rehabilitation_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['rehabilitation_flag'] = None
# 10個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 11):
num = str(i).zfill(2) # 2桁で0埋め
setting_item_name = f'rehabilitation_code{num}'
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 麻酔管理料
if self.record.anesthetizing_manage_flag == '@':
self.query_parameter['anesthetizing_manage_flag'] = None
self.query_parameter['anesthetizing_manage_spec_day'] = None
self.query_parameter['anesthetizing_manage_can_day'] = None
# 在宅療養支援病院・診療所
if self.record.home_recuperation_flag == '@':
self.query_parameter['home_recuperation_flag'] = None
self.query_parameter['home_recuperation_spec_day'] = None
self.query_parameter['home_recuperation_cancel_day'] = None
# 在宅時医学総合管理料
if self.record.synthesis_when_staying_flag == '@':
self.query_parameter['synthesis_when_staying_flag'] = None
self.query_parameter['synthesis_when_staying_spec_day'] = None
self.query_parameter['synthesis_when_staying_can_day'] = None
# 在宅末期医療総合診療料
if self.record.home_late_flag == '@':
self.query_parameter['home_late_flag'] = None
self.query_parameter['home_late_ok_day'] = None
self.query_parameter['home_late_can_day'] = None
# ケアミックス区分
if self.record.caremix_kind == '@':
self.query_parameter['caremix_kind'] = None
# 完全型・移行型区分
if self.record.fullmove_flag == '@':
self.query_parameter['fullmove_flag'] = None
# 療養型病床群
if self.record.resthp_flag == '@':
# 医療型
self.query_parameter['resthp_flag'] = None
self.query_parameter['resthp_care_kind'] = None
self.query_parameter['resthp_bed_num'] = None
self.query_parameter['resthp_ok_date'] = None
self.query_parameter['resthp_can_date'] = None
# 介護型
self.query_parameter['resthp_care_nrs_kind'] = None
self.query_parameter['resthp_care_bed_num'] = None
self.query_parameter['resthp_care_ok_date'] = None
self.query_parameter['resthp_care_can_date'] = None
# 合計
self.query_parameter['resthp_sbed_num'] = None
# 一般病棟
if self.record.nrmhp_flag == '@':
self.query_parameter['nrmhp_flag'] = None
self.query_parameter['nrmhp_care_kind'] = None
self.query_parameter['nrmhp_bed_total_num'] = None
# 精神病棟
if self.record.menthp_flag == '@':
self.query_parameter['menthp_flag'] = None
self.query_parameter['menthp_care_kind'] = None
self.query_parameter['menthp_bed_num'] = None
# 結核病棟
if self.record.tubhp_flag == '@':
self.query_parameter['tubhp_flag'] = None
self.query_parameter['tubhp_care_kind'] = None
self.query_parameter['tubhp_bed_num'] = None
# 感染症指定医療機関
if self.record.infhp_flag == '@':
self.query_parameter['infhp_flag'] = None
self.query_parameter['infhp_flag1'] = None
self.query_parameter['infhp_flag2'] = None
# 感染症病床
if self.record.infhp_bed_flag == '@':
self.query_parameter['infhp_bed_flag'] = None
self.query_parameter['infhp_bed_num'] = None
# 緩和ケア病棟設置病院
if self.record.hospice_flag == '@':
self.query_parameter['hospice_flag'] = None
self.query_parameter['hospice_bed_num'] = None
self.query_parameter['hospice_ok_date'] = None
self.query_parameter['hospice_can_date'] = None
# 医療機能評価
if self.record.hpfunce_st_flag == '@':
self.query_parameter['hpfunce_st_flag'] = None
self.query_parameter['hpfunce_st_kind'] = None
self.query_parameter['hpfunce_st_ok_date'] = None
self.query_parameter['hpfunce_st_can_date'] = None
# 臨床研修指定病院
if self.record.clolyhp_kind == '@':
# 基幹型病院1
self.query_parameter['clolyhp_kind'] = None
self.query_parameter['clolyhp_ok_date'] = None
self.query_parameter['clolyhp_can_date'] = None
# 基幹型病院2群指定
self.query_parameter['clhp_kind'] = None
self.query_parameter['clhp_ok_date'] = None
self.query_parameter['clhp_can_date'] = None
# 協力型病院(群指定)
self.query_parameter['cldephp_kind'] = None
self.query_parameter['cldephp_ok_date'] = None
self.query_parameter['cldephp_can_date'] = None
# 災害拠点病院
if self.record.disasthp_flag == '@':
self.query_parameter['disasthp_flag'] = None
# 救急医療
if self.record.d1emerhp_flag == '@':
self.query_parameter['d1emerhp_flag'] = None
self.query_parameter['d2emerhp_flag'] = None
self.query_parameter['d3emerhp_flag'] = None
# 救急告示診療所
if self.record.emergency_clinic == '@':
self.query_parameter['emergency_clinic'] = None
# 治験中核病院
if self.record.trial_core_flag == '@':
self.query_parameter['trial_core_flag'] = None
self.query_parameter['trial_core_div'] = None
self.query_parameter['trial_core_ok_date'] = None
self.query_parameter['trial_core_can_date'] = None
# 認知症疾患医療センター
if self.record.dementia_flag == '@':
self.query_parameter['dementia_flag'] = None
self.query_parameter['dementia_okd_ate'] = None
self.query_parameter['dementia_can_date'] = None
# 特定健康診査実施機関
if self.record.sphealth_exploration == '@':
self.query_parameter['sphealth_exploration'] = None
# 特定保健指導実施機関
if self.record.sphealth_guidance == '@':
self.query_parameter['sphealth_guidance'] = None
# 先進医療実施医療機関
is_aggregate_item_clear = self.record.hiadhp_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['hiadhp_flag'] = None
# 40個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 41):
setting_item_name_code = f'hiadhpcode{i}'
setting_item_name_kind = f'hiadhpkind{i}'
if is_aggregate_item_clear:
self.query_parameter[setting_item_name_code] = None
self.query_parameter[setting_item_name_kind] = None
# 先端医療実施医療機関
is_aggregate_item_clear = self.record.hitechhp_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['hitechhp_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
setting_item_name = f'hitechhpkind{i}'
if is_aggregate_item_clear:
self.query_parameter[setting_item_name] = None
# 政策医療
# 項目クリア判断
is_aggregate_item_clear = self.record.policy_medical_flag == '@'
if is_aggregate_item_clear:
self.query_parameter['policy_medical_flag'] = None
# 20個分の項目設定(rangeの第2引数の数字はループに含まれないため、+1を指定する)
for i in range(1, 21):
num = str(i).zfill(2) # 2桁で0埋め
setting_item_name_code = f'policymedical_code{num}'
setting_item_name_content = f'policymedical_content{num}'
if is_aggregate_item_clear:
self.query_parameter[setting_item_name_code] = None
self.query_parameter[setting_item_name_content] = None
# 訪問看護ステーション
if self.record.visitcarest_flag == '@':
self.query_parameter['visitcarest_flag'] = None
self.query_parameter['visitcarestation_id'] = None
self.query_parameter['visitcarestation_code'] = None
self.query_parameter['visitcarestation_yobi'] = None
# 開設年月
if self.record.open_date == '@':
self.query_parameter['open_date'] = None
return

View File

@ -105,7 +105,7 @@ class ComSpFieldMapper(UltmarcTableMapper):
# レコードの存在確認
record_count = self.db.execute_select(self.RECORD_EXISTS_QUERY, self.query_parameter)
# 項目クリアを設定
# 「@」による項目クリアを設定
self.__set_clearing_item()
# 存在しない場合はInsert