diff --git a/ecs/jskult-webapp/src/controller/ultmarc.py b/ecs/jskult-webapp/src/controller/ultmarc.py index a42d1ccc..133f6c64 100644 --- a/ecs/jskult-webapp/src/controller/ultmarc.py +++ b/ecs/jskult-webapp/src/controller/ultmarc.py @@ -66,7 +66,6 @@ def search_doc( ultmarc_service: UltmarcViewService = Depends(get_service(UltmarcViewService)), batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) ): - # error_log(date("Y/m/d H:i:s") . " [INFO] UserId:" . $UserId . "\r\n", 3, "$execLog"); session: UserSession = request.session # バッチ処理中の場合、機能を利用させない # is_batch_processing = batch_status_service.is_batch_processing() @@ -82,10 +81,6 @@ def search_doc( ultmarc.doctor_data = ultmarc_doctor_data ultmarc.form_data = ultmarc_doctor_form - # bio: BioViewModel = bio_service.prepare_bio_view(session) - # bio.bio_data = ultmarc_doctor_data - # bio.form_data = bio_form - # セッション書き換え session.update( actions=[ diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py index 02ac88a0..ea2afe48 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py @@ -6,7 +6,6 @@ from typing import Optional from pydantic import BaseModel from src.model.db.prefc_master import PrefcMasterModel -# from src.model.db.doctor_view import DoctorViewModel from src.model.request.ultmarc_doctor import UltmarcDoctorModel from src.model.view.bio_disp_model import BisDisplayModel from src.system_var import environment @@ -16,58 +15,49 @@ class UltmarcDoctorViewModel(BaseModel): subtitle: str = '医師検索一覧' is_batch_processing: Optional[bool] prefc_models: list[PrefcMasterModel] - # doctor_models: list[DoctorViewModel] doctor_data: Optional[list[BisDisplayModel]] = [] form_data: Optional[UltmarcDoctorModel] - def display_wholesaler_names(self): - display_names = [ - f'{whs_model.rec_whs_cd}-{whs_model.rec_whs_sub_cd}:{whs_model.nm}' - for whs_model in self.doctor_models - ] - return display_names - def ultmarc_data_json_str(self): def date_handler(obj): return obj.isoformat() if hasattr(obj, 'isoformat') else obj return json.dumps([model.dict() for model in self.doctor_data], ensure_ascii=False, default=date_handler) -# ************************** のま作 ************************** # 医師コード def is_input_dcf_pcf_dr_cd(self): if not self.is_form_submitted(): return '' - return self.form_data.dcf_pcf_dr_cd + return self.form_data.dcf_pcf_dr_cd or '' # 氏名(漢字) def is_input_dr_name(self): if not self.is_form_submitted(): return '' - return self.form_data.dr_name + return self.form_data.dr_name or '' # 氏名(かな・カナ) def is_input_dr_name_kana(self): if not self.is_form_submitted(): return '' - return self.form_data.dr_name_kana + return self.form_data.dr_name_kana or '' # 勤務先コード def is_input_dcf_dsf_inst_cd(self): if not self.is_form_submitted(): return '' - return self.form_data.dcf_dsf_inst_cd + return self.form_data.dcf_dsf_inst_cd or '' # 勤務先名(漢字) def is_input_form_inst_name_kanji(self): if not self.is_form_submitted(): return '' - return self.form_data.form_inst_name_kanji + return self.form_data.form_inst_name_kanji or '' # 勤務先名(かな・カナ) def is_input_form_inst_name_kana(self): if not self.is_form_submitted(): return '' - return self.form_data.form_inst_name_kana + return self.form_data.form_inst_name_kana or '' # 勤務先都道府県 def is_selected_prefc_cd(self, selected_prefc_cd): @@ -79,73 +69,25 @@ class UltmarcDoctorViewModel(BaseModel): def is_input_blng_sec_name(self): if not self.is_form_submitted(): return '' - return self.form_data.blng_sec_name + return self.form_data.blng_sec_name or '' # 診療科目(漢字) def is_input_trt_course_name(self): if not self.is_form_submitted(): return '' - return self.form_data.trt_course_name + return self.form_data.trt_course_name or '' # 出身大学(漢字) def is_input_alma(self): if not self.is_form_submitted(): return '' - return self.form_data.alma + return self.form_data.alma or '' # 卒年 - def is_grad_y(self): + def is_input_grad_y(self): if not self.is_form_submitted(): return '' - return self.form_data.grad_y -# ************************** のま作 ************************** - - # def is_selected_org_kbn(self, selected_org_kbn): - # if not self.is_form_submitted(): - # return '' - # return self._selected_value(self.form_data.org_kbn, selected_org_kbn) - - # def is_input_rec_ymd_from(self): - # if not self.is_form_submitted(): - # return '' - - # return self._format_date_string(self.form_data.rec_ymd_from) - - # def is_input_rec_ymd_to(self): - # if not self.is_form_submitted(): - # return '' - - # return self._format_date_string(self.form_data.rec_ymd_to) - - # def is_input_lot_num(self): - # if not self.is_form_submitted(): - # return '' - - # return self.form_data.rec_lot_num or '' - - # def is_selected_data_kbn(self, selected_data_kbn): - # if not self.is_form_submitted(): - # return '' - - # return self._selected_value(self.form_data.data_kbn, selected_data_kbn) - - # def is_input_rev_hsdnymd_srk_from(self): - # if not self.is_form_submitted(): - # return '' - - # return self._format_date_string(self.form_data.rev_hsdnymd_srk_from) - - # def is_input_rev_hsdnymd_srk_to(self): - # if not self.is_form_submitted(): - # return '' - - # return self._format_date_string(self.form_data.rev_hsdnymd_srk_to) - - # def is_checked_iko_flg(self): - # if not self.is_form_submitted(): - # return '' - - # return 'checked' if self.form_data.ikoFlg else '' + return self.form_data.grad_y or '' def disabled_button(self): return 'disabled' if self.is_data_empty() or self.is_data_overflow_max_length() else '' diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py index f9651d98..f9293893 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py @@ -81,20 +81,20 @@ class UltmarcDoctorRepository(BaseRepository): if is_not_empty(parameter.dcf_dsf_inst_cd): # 必ず部分一致で検索 parameter.dcf_dsf_inst_cd = f'%{parameter.dcf_dsf_inst_cd}%' - where_clauses.append(SQLCondition('com_inst.dcf_dsf_inst_cd', - condition.LIKE, 'dcf_dsf_inst_cd')) + where_clauses.append(SQLCondition( + 'com_inst.dcf_dsf_inst_cd', condition.LIKE, 'dcf_dsf_inst_cd')) # 勤務先名(漢字) if is_not_empty(parameter.form_inst_name_kanji): # 必ず部分一致で検索 parameter.form_inst_name_kanji = f'%{parameter.form_inst_name_kanji}%' - where_clauses.append(SQLCondition('form_inst_name_kanji', condition.LIKE, - 'form_inst_name_kanji')) + where_clauses.append(SQLCondition( + 'form_inst_name_kanji', condition.LIKE, 'form_inst_name_kanji')) # 勤務先名(かな・カナ) if is_not_empty(parameter.form_inst_name_kana): # 必ず部分一致で検索 parameter.form_inst_name_kana = f'%{parameter.form_inst_name_kana}%' - where_clauses.append(SQLCondition('form_inst_name_kana', condition.LIKE, - 'form_inst_name_kana')) + where_clauses.append(SQLCondition( + 'form_inst_name_kana', condition.LIKE, 'form_inst_name_kana')) # 勤務先都道府県 if is_not_empty(parameter.prefc_cd): @@ -104,8 +104,8 @@ class UltmarcDoctorRepository(BaseRepository): if is_not_empty(parameter.blng_sec_name): # 必ず部分一致で検索 parameter.blng_sec_name = f'%{parameter.blng_sec_name}%' - where_clauses.append(SQLCondition('com_blng_sec.blng_sec_name', - condition.LIKE, 'blng_sec_name')) + where_clauses.append(SQLCondition( + 'com_blng_sec.blng_sec_name', condition.LIKE, 'blng_sec_name')) # 診療科目(漢字) if is_not_empty(parameter.trt_course_name): diff --git a/ecs/jskult-webapp/src/services/ultmarc_view_service.py b/ecs/jskult-webapp/src/services/ultmarc_view_service.py index 0fd38f18..140863e7 100644 --- a/ecs/jskult-webapp/src/services/ultmarc_view_service.py +++ b/ecs/jskult-webapp/src/services/ultmarc_view_service.py @@ -8,16 +8,10 @@ from src.aws.aws_api_client import AWSAPIClient from src.aws.s3 import S3Client from src.model.internal.session import UserSession from src.model.request.ultmarc_doctor import UltmarcDoctorModel -from src.model.view.bio_disp_model import BisDisplayModel from src.model.view.ultmarc_doctor_view_model import UltmarcDoctorViewModel from src.repositories.base_repository import BaseRepository -from src.repositories.bio_sales_view_repository import BioSalesViewRepository from src.repositories.prefc_master_repository import PrefcMasterRepository from src.repositories.ultmarc_doctor_repository import UltmarcDoctorRepository -from src.repositories.pharmacy_product_master_repository import \ - PharmacyProductMasterRepository -from src.repositories.wholesaler_master_repository import \ - WholesalerMasterRepository from src.services.base_service import BaseService from src.system_var import constants, environment @@ -52,58 +46,3 @@ class UltmarcViewService(BaseService): # 医師データを検索 ultmarc_doctor_data = self.ultmarc_doctor_repository.fetch_many(parameter=search_params) return ultmarc_doctor_data - - # def search_download_bio_data(self, search_params: BioModel): - # # 生物由来データをダウンロードするために、DBから検索した結果をデータフレームに変換 - # bio_sales_data_frame = self.bio_sales_repository.fetch_as_data_frame(parameter=search_params) - # return bio_sales_data_frame - - # def write_excel_file(self, data_frame: pd.DataFrame, user_id: str, timestamp: datetime): - # # Excelに書き込み - # output_file_path = path.join(constants.BIO_TEMPORARY_FILE_DIR_PATH, - # f'Result_{user_id}_{timestamp:%Y%m%d%H%M%S%f}.xlsx') - - # # テンプレートファイルをコピーして出力ファイルの枠だけを作る - # shutil.copyfile( - # src=constants.BIO_EXCEL_TEMPLATE_FILE_PATH, - # dst=output_file_path - # ) - # # ExcelWriterの追記モード(`mode`='a')でファイルを開く - # # `engine``='openpyxlは、追記モードでExcelを開くためのおまじない(xlsxしか動作しないが、こちらが出すものなので問題ナシ) - # # 既存シートへの書き込みは、`if_sheet_exists='overlay'を指定する - # with pd.ExcelWriter(output_file_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer: - # # `sheet_name`引数を省略した場合は、「Sheet1」に書き込む。 - # # DF内のヘッダと連番を書き込みたくない場合、`header`と`index`をFalseに指定する。 - # # `startrow`と`startcol`で、Excelの書き込み位置を決定する。省略した場合はA1セルから書く。 - # data_frame.to_excel(writer, header=False, index=False, startrow=1, startcol=0) - - # return output_file_path - - # def write_csv_file(self, data_frame: pd.DataFrame, user_id: str, header: list[str], timestamp: datetime): - # # csvに書き込み - # output_file_path = path.join(constants.BIO_TEMPORARY_FILE_DIR_PATH, - # f'Result_{user_id}_{timestamp:%Y%m%d%H%M%S%f}.csv') - # # 横長のDataFrameとするため、ヘッダーの加工処理 - # header_data = {} - # for df_column, header_column in zip(data_frame.columns, header): - # header_data[df_column] = header_column - - # header_df = pd.DataFrame([header_data], index=None) - # output_df = pd.concat([header_df, data_frame]) - # # ヘッダー行としてではなく、1レコードとして出力する - # output_df.to_csv(output_file_path, index=False, header=False) - - # return output_file_path - - # def upload_bio_data_file(self, local_file_path: str) -> None: - # bucket_name = environment.BIO_ACCESS_LOG_BUCKET - # # TODO: フォルダを変える - # file_key = f'bio/{path.basename(local_file_path)}' - # self.s3_client.upload_file(local_file_path, bucket_name, file_key) - - # def generate_download_file_url(self, local_file_path: str, user_id: str, kind: str) -> str: - # bucket_name = environment.BIO_ACCESS_LOG_BUCKET - # # TODO: フォルダを変える - # file_key = f'bio/{path.basename(local_file_path)}' - # download_filename = f'{user_id}_生物由来卸販売データ.{kind}' - # return self.s3_client.generate_presigned_url(bucket_name, file_key, download_filename) diff --git a/ecs/jskult-webapp/src/static/css/ultStyle.css b/ecs/jskult-webapp/src/static/css/ultStyle.css index 936cef77..3f1850d0 100644 --- a/ecs/jskult-webapp/src/static/css/ultStyle.css +++ b/ecs/jskult-webapp/src/static/css/ultStyle.css @@ -46,18 +46,18 @@ table{ } .scroll_table::-webkit-scrollbar { - height: 5px; - width: 10px; + height: 5px; + width: 10px; } .scroll_table::-webkit-scrollbar-track { - border-radius: 5px; - background: #eee; + border-radius: 5px; + background: #eee; } .scroll_table::-webkit-scrollbar-thumb { - border-radius: 5px; - background: #666; + border-radius: 5px; + background: #666; } .ult_bt { @@ -361,7 +361,7 @@ table{ } .docHeader_bt{ - width: 40%;s + width: 40%; } /* アルトマーク課題管理表No.2の修正 8% → 10% */ @@ -405,18 +405,18 @@ table{ } .docSearchScroll::-webkit-scrollbar { - height: 5px; - width: 10px; + height: 5px; + width: 10px; } .docSearchScroll::-webkit-scrollbar-track { - border-radius: 5px; - background: #eee; + border-radius: 5px; + background: #eee; } .docSearchScroll::-webkit-scrollbar-thumb { - border-radius: 5px; - background: #666; + border-radius: 5px; + background: #666; } .allOnOffButton{ @@ -471,18 +471,18 @@ table{ } .scroll::-webkit-scrollbar { - height: 5px; - width: 10px; + height: 5px; + width: 10px; } .scroll::-webkit-scrollbar-track { - border-radius: 5px; - background: #eee; + border-radius: 5px; + background: #eee; } .scroll::-webkit-scrollbar-thumb { - border-radius: 5px; - background: #666; + border-radius: 5px; + background: #666; } .rightBoderLine{ diff --git a/ecs/jskult-webapp/src/templates/docSearch.html b/ecs/jskult-webapp/src/templates/docSearch.html index dc187eb4..475578fa 100644 --- a/ecs/jskult-webapp/src/templates/docSearch.html +++ b/ecs/jskult-webapp/src/templates/docSearch.html @@ -1,13 +1,3 @@ - -
@@ -16,137 +6,17 @@ require_once('/home/nds_dwh/webroot/common/function/getDateBatchJSString.php'); {% endwith %} - - - - - - - - - - - - - - @@ -155,17 +25,9 @@ if (!isset($isDBSuccess)) {