diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py index 140270f1..93ea9625 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_inst_att_mapper.py @@ -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 diff --git a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py index 90b9d9a0..0ce325e4 100644 --- a/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py +++ b/ecs/jskult-batch-daily/src/batch/ultmarc/utmp_tables/table_mapper/concrete/com_sp_field_mapper.py @@ -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