diff --git a/ecs/jskult-webapp/.env.example b/ecs/jskult-webapp/.env.example index d6fcbdcc..0630afe4 100644 --- a/ecs/jskult-webapp/.env.example +++ b/ecs/jskult-webapp/.env.example @@ -22,6 +22,6 @@ AWS_REGION=ap-northeast-1 AUTHORIZE_ENDPOINT=oauth2/authorize TOKEN_ENDPOINT=oauth2/token BIO_SEARCH_RESULT_MAX_COUNT=35000 -UTL_SEARCH_RESULT_MAX_COUNT=500 +ULTMARC_SEARCH_RESULT_MAX_COUNT=500 SESSION_EXPIRE_MINUTE=20 LOG_LEVEL=DEBUG \ No newline at end of file diff --git a/ecs/jskult-webapp/src/controller/ultmarc.py b/ecs/jskult-webapp/src/controller/ultmarc.py index 00678cb0..5e9c046f 100644 --- a/ecs/jskult-webapp/src/controller/ultmarc.py +++ b/ecs/jskult-webapp/src/controller/ultmarc.py @@ -4,10 +4,10 @@ from fastapi import APIRouter, Depends, Request from src.depends.services import get_service from src.model.internal.session import UserSession -from src.model.request.ultmarc_doctor import (UltmarcDoctorInfoModel, - UltmarcDoctorSearchModel) +from src.model.request.ultmarc_doctor import ( + UltmarcDoctorInfoModel, UltmarcDoctorSearchModel) from src.model.request.ultmarc_inst import (UltmarcInstInfoModel, - UltmarcInstModel) + UltmarcInstSearchModel) from src.router.session_router import AuthenticatedRoute from src.services.batch_status_service import BatchStatusService from src.services.session_service import set_session @@ -21,6 +21,10 @@ router.route_class = AuthenticatedRoute # Views # ######################### +######################### +# アルトマーク施設検索 # +######################### + @router.get('/instSearch') def ultmarc_inst_view( @@ -33,7 +37,7 @@ def ultmarc_inst_view( is_batch_processing = batch_status_service.is_batch_processing() # 検索項目の取得(都道府県・施設区分) - ultmarc = ultmarc_service.ultmarc_inst_view(session) + ultmarc = ultmarc_service.prepare_ultmarc_inst_search_view() ultmarc.is_batch_processing = is_batch_processing # セッション書き換え @@ -57,7 +61,7 @@ def ultmarc_inst_view( @router.post('/instSearch') def search_inst( request: Request, - ultmarc_inst_form: Optional[UltmarcInstModel] = Depends(UltmarcInstModel.as_form), + ultmarc_inst_form: Optional[UltmarcInstSearchModel] = Depends(UltmarcInstSearchModel.as_form), ultmarc_service: UltmarcViewService = Depends(get_service(UltmarcViewService)), batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)) ): @@ -70,7 +74,7 @@ def search_inst( ultmarc_inst_data = ultmarc_service.search_inst_data(ultmarc_inst_form) # 検索項目の取得(都道府県・施設区分) - ultmarc = ultmarc_service.ultmarc_inst_view(session) + ultmarc = ultmarc_service.prepare_ultmarc_inst_search_view() ultmarc.is_batch_processing = is_batch_processing ultmarc.inst_data = ultmarc_inst_data ultmarc.form_data = ultmarc_inst_form @@ -92,6 +96,10 @@ def search_inst( ) return templates_response +######################### +# アルトマーク施設詳細 # +######################### + @router.get('/instInfo') def ultmarc_inst_info_view( @@ -105,8 +113,8 @@ def ultmarc_inst_info_view( is_batch_processing = batch_status_service.is_batch_processing() # 施設情報の取得 - ultmarc = ultmarc_service.info_ultmarc_inst_view(id, session) - # バッチ起動判定の取得 + ultmarc = ultmarc_service.prepare_ultmarc_inst_info_view(id) + # バッチ起動判定 ultmarc.is_batch_processing = is_batch_processing # inst_id ultmarc.inst_id = id @@ -133,7 +141,7 @@ def ultmarc_inst_info_view( return templates_response -@router.post('/instInfo') +@ router.post('/instInfo') def ultmarc_inst_info_search( request: Request, ultmarc_inst_form: Optional[UltmarcInstInfoModel] = Depends(UltmarcInstInfoModel.as_form), @@ -147,7 +155,7 @@ def ultmarc_inst_info_search( inst_id = ultmarc_inst_form.inst_id.split(',') # 施設情報の取得 - ultmarc = ultmarc_service.info_ultmarc_inst_view(inst_id[ultmarc_inst_form.page_num], session) + ultmarc = ultmarc_service.prepare_ultmarc_inst_info_view(inst_id[ultmarc_inst_form.page_num]) # バッチ起動判定の取得 ultmarc.is_batch_processing = is_batch_processing @@ -175,6 +183,10 @@ def ultmarc_inst_info_search( ) return templates_response +######################### +# アルトマーク医師検索 # +######################### + @router.get('/docSearch') def ultmarc_doctor_view( @@ -187,7 +199,7 @@ def ultmarc_doctor_view( is_batch_processing = batch_status_service.is_batch_processing() # 検索項目の取得(都道府県) - ultmarc = ultmarc_service.prepare_ultmarc_doctor_view(session) + ultmarc = ultmarc_service.prepare_ultmarc_doctor_search_view() ultmarc.is_batch_processing = is_batch_processing # セッション書き換え @@ -218,14 +230,14 @@ def search_doc( session: UserSession = request.session # バッチ処理中ステータスを取得 - # is_batch_processing = batch_status_service.is_batch_processing() + is_batch_processing = batch_status_service.is_batch_processing() # 医師データを検索 ultmarc_doctor_data = ultmarc_service.search_doctor_data(ultmarc_doctor_form) # 検索項目などのデータを取得 - ultmarc = ultmarc_service.prepare_ultmarc_doctor_view(session) - ultmarc.is_batch_processing = batch_status_service.is_batch_processing() + ultmarc = ultmarc_service.prepare_ultmarc_doctor_search_view() + ultmarc.is_batch_processing = is_batch_processing ultmarc.doctor_data = ultmarc_doctor_data ultmarc.form_data = ultmarc_doctor_form @@ -246,6 +258,10 @@ def search_doc( ) return templates_response +######################### +# アルトマーク医師詳細 # +######################### + @router.get('/docInfo') def ultmarc_doctor_info_view( @@ -259,7 +275,7 @@ def ultmarc_doctor_info_view( is_batch_processing = batch_status_service.is_batch_processing() # 医師情報の取得 - ultmarc = ultmarc_service.info_ultmarc_doctor_view(id, session) + ultmarc = ultmarc_service.prepare_ultmarc_doctor_info_view(id) # バッチ起動判定の取得 ultmarc.is_batch_processing = is_batch_processing # doc_id @@ -301,7 +317,7 @@ def ultmarc_doctor_info_search( doc_id = ultmarc_doctor_form.doc_id.split(',') # 医師情報の取得 - ultmarc = ultmarc_service.info_ultmarc_doctor_view(doc_id[ultmarc_doctor_form.page_num], session) + ultmarc = ultmarc_service.prepare_ultmarc_doctor_info_view(doc_id[ultmarc_doctor_form.page_num]) # バッチ起動判定の取得 ultmarc.is_batch_processing = is_batch_processing # doc_id diff --git a/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py b/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py index 135869b9..e1fd6224 100644 --- a/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py +++ b/ecs/jskult-webapp/src/model/request/ultmarc_doctor.py @@ -19,6 +19,7 @@ class UltmarcDoctorSearchModel(BaseModel): trt_course_name: Optional[str] alma: Optional[str] grad_y: Optional[str] + pagination_pageNumber: Optional[int] @classmethod def as_form( @@ -33,7 +34,8 @@ class UltmarcDoctorSearchModel(BaseModel): ctrl_blng_sec_name: str = Form(None), ctrl_trt_course_name: str = Form(None), ctrl_alma: str = Form(None), - ctrl_grad_y: str = Form(None) + ctrl_grad_y: str = Form(None), + pagination_pageNumber: str = Form(None) ): return cls( @@ -47,7 +49,8 @@ class UltmarcDoctorSearchModel(BaseModel): blng_sec_name=ctrl_blng_sec_name, trt_course_name=ctrl_trt_course_name, alma=ctrl_alma, - grad_y=ctrl_grad_y + grad_y=ctrl_grad_y, + pagination_pageNumber=pagination_pageNumber ) diff --git a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py index 1b5972ff..8f28df30 100644 --- a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py +++ b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py @@ -7,7 +7,7 @@ from src.util.sanitize import sanitize @sanitize -class UltmarcInstModel(BaseModel): +class UltmarcInstSearchModel(BaseModel): dcf_dsf_inst_cd: Optional[str] inst_div_cd: Optional[str] form_inst_name_kanji: Optional[str] @@ -17,6 +17,7 @@ class UltmarcInstModel(BaseModel): prefc_cd: Optional[str] delFlg: Optional[str] inst_addr: Optional[str] + pagination_pageNumber: Optional[int] @classmethod def as_form( @@ -29,7 +30,8 @@ class UltmarcInstModel(BaseModel): ctrl_inst_phone_number: str = Form(None), ctrl_prefc_cd: str = Form(None), delFlg_ctrl: str = Form(None), - ctrl_inst_addr: str = Form(None) + ctrl_inst_addr: str = Form(None), + pagination_pageNumber: str = Form(None) ): return cls( dcf_dsf_inst_cd=ctrl_dcf_dsf_inst_cd, @@ -40,7 +42,8 @@ class UltmarcInstModel(BaseModel): inst_phone_number=ctrl_inst_phone_number, prefc_cd=ctrl_prefc_cd, delFlg=delFlg_ctrl, - inst_addr=ctrl_inst_addr + inst_addr=ctrl_inst_addr, + pagination_pageNumber=pagination_pageNumber ) diff --git a/ecs/jskult-webapp/src/model/view/bio_view_model.py b/ecs/jskult-webapp/src/model/view/bio_view_model.py index 70017932..8f5e4875 100644 --- a/ecs/jskult-webapp/src/model/view/bio_view_model.py +++ b/ecs/jskult-webapp/src/model/view/bio_view_model.py @@ -127,7 +127,7 @@ class BioViewModel(BaseModel): return len(self.bio_data) == 0 def is_data_overflow_max_length(self): - return len(self.bio_data) >= environment.BIO_SEARCH_RESULT_MAX_COUNT + return len(self.bio_data) > environment.BIO_SEARCH_RESULT_MAX_COUNT def _format_date_string(self, date_string): if date_string is None: diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_info_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_info_view_model.py index ddbd5542..e84a3f3f 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_info_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_info_view_model.py @@ -27,42 +27,6 @@ class UltmarcDoctorInfoViewModel(BaseModel): post_cnt: Optional[int] page_num: Optional[int] - # 医師コード - def is_input_dcf_pcf_dr_cd(self): - return self.doctor_info_data.dcf_pcf_dr_cd or '' - - # 氏名(漢字) - def is_input_dr_name(self): - return self.doctor_info_data.dr_name or '' - - # 氏名(かな・カナ) - def is_input_dr_name_kana(self): - return self.doctor_info_data.dr_name_kana or '' - - # 性別 - def is_input_sex(self): - return self.doctor_info_data.sex or '' - - # 出身大学 - def is_input_alma(self): - return self.doctor_info_data.alma or '' - - # 出身県 - def is_input_hometown(self): - return self.doctor_info_data.hometown or '' - - # 卒年 - def is_input_grad_y(self): - return self.doctor_info_data.grad_y or '' - - # 登録年 - def is_input_drday_y(self): - return self.doctor_info_data.drday_y or '' - - # 開業年 - def is_input_estab_y(self): - return self.doctor_info_data.estab_y or '' - # 現在のページ(表示用) def is_page_num_view(self): return self.page_num + 1 @@ -77,6 +41,7 @@ class UltmarcDoctorInfoViewModel(BaseModel): return 'disabled' return '' + # 生年月日 def is_input_birthday_fromat(self): return self._format_date_string(self.doctor_info_data.birthday) @@ -88,9 +53,6 @@ class UltmarcDoctorInfoViewModel(BaseModel): def is_input_trt_course_data_size(self): return len(self.trt_coursed_data) - def is_data_string_empty_fromat(self, data_string): - return data_string or '' - def disabled_button(self): return 'disabled' if self.is_data_empty() or self.is_data_overflow_max_length() else '' @@ -101,7 +63,7 @@ class UltmarcDoctorInfoViewModel(BaseModel): return len(self.doctor_data) == 0 def is_data_overflow_max_length(self): - return len(self.doctor_data) >= environment.UTL_SEARCH_RESULT_MAX_COUNT + return len(self.doctor_data) > environment.ULTMARC_SEARCH_RESULT_MAX_COUNT def _format_date_string(self, date_string): if date_string is None: 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 a97956fd..0cb0123d 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 @@ -21,6 +21,12 @@ class UltmarcDoctorViewModel(BaseModel): 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_pagination_pageNumber(self): + if not self.is_form_submitted(): + return 1 + return self.form_data.pagination_pageNumber or 1 + # 医師コード def is_input_dcf_pcf_dr_cd(self): if not self.is_form_submitted(): @@ -102,7 +108,7 @@ class UltmarcDoctorViewModel(BaseModel): return len(self.doctor_data) == 0 def is_data_overflow_max_length(self): - return len(self.doctor_data) >= environment.UTL_SEARCH_RESULT_MAX_COUNT + return len(self.doctor_data) > environment.ULTMARC_SEARCH_RESULT_MAX_COUNT def _selected_value(self, form_value: str, current_value: str): return 'selected' if form_value == current_value else '' diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_inst_info_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_inst_info_view_model.py index 7caad57b..4244bef4 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_inst_info_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_inst_info_view_model.py @@ -17,171 +17,30 @@ class UltmarcInstInfoViewModel(BaseModel): post_cnt: Optional[int] page_num: Optional[int] - # 施設コード - def is_input_dcf_dsf_inst_cd(self): - return self.inst_info_data.dcf_dsf_inst_cd or '' - # 未確認 def is_checked_unconf_flg(self): return 'checked' if self.inst_info_data.unconf_flg == '1' else '' - # 施設コード変換先 - def is_input_dup_opp_cd(self): - return self.inst_info_data.dup_opp_cd or '' - - # 休院店開始年月 - def is_input_close_start_ym(self): - return self.inst_info_data.close_start_ym or '' - # 休院店 def is_checked_close_flg(self): return 'checked' if self.inst_info_data.close_flg == '1' else '' - # 削除予定理由 - def is_input_delete_sche_reason_cd(self): - return self.inst_info_data.delete_sche_reason_cd or '' - - def is_input_delete_sche_reason(self): - return self.inst_info_data.delete_sche_reason or '' - - # 削除日 - def is_input_abolish_ymd(self): - return self.inst_info_data.abolish_ymd or '' - - # 開業予定年月 - def is_input_estab_sche_ym(self): - return self.inst_info_data.estab_sche_ym or '' - # 開業 def is_checked_estab_sche_flg(self): return 'checked' if self.inst_info_data.estab_sche_flg == '1' else '' - # 正式施設名(カナ) - def is_input_form_inst_name_kana(self): - return self.inst_info_data.form_inst_name_kana or '' - - # 正式施設名(漢字) - def is_input_form_inst_name_kanji(self): - return self.inst_info_data.form_inst_name_kanji or '' - - # 略式施設名(カナ) - def is_input_inst_name_kana(self): - return self.inst_info_data.inst_name_kana or '' - - # 施設区分名 - def is_input_inst_div_name(self): - return self.inst_info_data.inst_div_name or '' - - # 略式施設名(漢字) - def is_input_inst_name_kanji(self): - return self.inst_info_data.inst_name_kanji or '' - - # 経営体 - def is_input_manage_cd(self): - return self.inst_info_data.manage_cd or '' - - def is_input_manage_name(self): - return self.inst_info_data.manage_name or '' - - # 郵便番号 - def is_input_postal_number(self): - return self.inst_info_data.postal_number or '' - # 住所不明 def is_checked_addr_unknown_reason_cd(self): return 'checked' if self.inst_info_data.addr_unknown_reason_cd else '' - # 施設電話番号 - def is_input_inst_phone_number(self): - return self.inst_info_data.inst_phone_number or '' - # 開業 def is_checked_phone_number_non_flg(self): return 'checked' if self.inst_info_data.phone_number_non_flg == '1' else '' - # 住所(カナ) - def is_input_inst_addr_kana(self): - return self.inst_info_data.inst_addr_kana or '' - - # 住所(漢字) - def is_input_inst_addr(self): - return self.inst_info_data.inst_addr or '' - - # 病院種別 - def is_input_hp_assrt_name(self): - return self.inst_info_data.hp_assrt_name or '' - # 再審査区分 def is_checked_re_exam_cd(self): return 'checked' if self.inst_info_data.re_exam_cd else '' - # 関連大学親名 - def is_input_rltd_univ_prnt_cd(self): - return self.inst_info_data.rltd_univ_prnt_cd or '' - - def is_input_parent_name(self): - return self.inst_info_data.parent_name or '' - - # 微生物 - def is_input_insp_item_micrb(self): - return self.inst_info_data.insp_item_micrb or '' - - # 血清 - def is_input_insp_item_serum(self): - return self.inst_info_data.insp_item_serum or '' - - # 血液 - def is_input_insp_item_blood(self): - return self.inst_info_data.insp_item_blood or '' - - # 病理 - def is_input_insp_item_patho(self): - return self.inst_info_data.insp_item_patho or '' - - # 寄生虫 - def is_input_insp_item_paras(self): - return self.inst_info_data.insp_item_paras or '' - - # 生化 - def is_input_insp_item_biochem(self): - return self.inst_info_data.insp_item_biochem or '' - - # RI - def is_input_insp_item_ri(self): - return self.inst_info_data.insp_item_ri or '' - - # 特務医務室 - def is_input_dcf_prnt_inst_cd(self): - return self.inst_info_data.dcf_prnt_inst_cd or '' - - # 一般 - def is_input_prmit_bed_num_gen(self): - return self.inst_info_data.prmit_bed_num_gen or '' - - # 療養 - def is_input_prmit_bed_num_rcup(self): - return self.inst_info_data.prmit_bed_num_rcup or '' - - # 精神 - def is_input_prmit_bed_num_mental(self): - return self.inst_info_data.prmit_bed_num_mental or '' - - # 感染症 - def is_input_prmit_bed_num_infection(self): - return self.inst_info_data.prmit_bed_num_infection or '' - - # 結核 - def is_input_prmit_bed_num_tuber(self): - return self.inst_info_data.prmit_bed_num_tuber or '' - - # その他 - def is_input_prmit_bed_num_other(self): - return self.inst_info_data.prmit_bed_num_other or '' - - # 合計 - def is_input_prmit_bed_num_sum(self): - return self.inst_info_data.prmit_bed_num_sum or '' - # 病棟閉鎖 def is_checked_ward_abolish_flg(self): return 'checked' if self.inst_info_data.ward_abolish_flg == '1' else '' @@ -190,26 +49,6 @@ class UltmarcInstInfoViewModel(BaseModel): def is_checked_ward_abolish_flg_part(self): return 'checked' if self.inst_info_data.ward_abolish_flg == '2' else '' - # 病床数(定員) - def is_input_bed_num(self): - return self.inst_info_data.bed_num or '' - - # メンテ年月日 - def is_input_prmit_bed_maint_ymd(self): - return self.inst_info_data.prmit_bed_maint_ymd or '' - - # 代表者個人コード - def is_input_inst_repre_cd(self): - return self.inst_info_data.inst_repre_cd or '' - - # 施設代表者(カナ) - def is_input_inst_repre_kana(self): - return self.inst_info_data.inst_repre_kana or '' - - # 施設代表者(漢字) - def is_input_inst_repre(self): - return self.inst_info_data.inst_repre or '' - # 修正年月日 def is_input_sys_update_date(self): sys_update_date = str(self.inst_info_data.sys_update_date) @@ -239,9 +78,6 @@ class UltmarcInstInfoViewModel(BaseModel): return 0 return len(self.inst_trt_coursed_data) - def is_data_string_empty_fromat(self, data_string): - return data_string or '' - def disabled_button(self): return 'disabled' if self.is_data_empty() or self.is_data_overflow_max_length() else '' @@ -252,4 +88,4 @@ class UltmarcInstInfoViewModel(BaseModel): return len(self.doctor_data) == 0 def is_data_overflow_max_length(self): - return len(self.doctor_data) >= environment.UTL_SEARCH_RESULT_MAX_COUNT + return len(self.doctor_data) > environment.ULTMARC_SEARCH_RESULT_MAX_COUNT diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py index f98794d3..6215f8bf 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py @@ -6,7 +6,7 @@ from pydantic import BaseModel from src.model.db.inst_div_master import InstDivMasterModel from src.model.db.prefc_master import PrefcMasterModel from src.model.db.ultmarc_inst import UltmarcInstDBModel -from src.model.request.ultmarc_inst import UltmarcInstModel +from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.system_var import environment @@ -16,13 +16,19 @@ class UltmarcInstViewModel(BaseModel): prefc_models: list[PrefcMasterModel] inst_div_models: list[InstDivMasterModel] inst_data: Optional[list[UltmarcInstDBModel]] = [] - form_data: Optional[UltmarcInstModel] + form_data: Optional[UltmarcInstSearchModel] 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.inst_data], ensure_ascii=False, default=date_handler) + # ページネーションのページ番号 + def is_input_pagination_pageNumber(self): + if not self.is_form_submitted(): + return 1 + return self.form_data.pagination_pageNumber or 1 + # ULT施設コード def is_input_dcf_dsf_inst_cd(self): if not self.is_form_submitted(): @@ -102,7 +108,7 @@ class UltmarcInstViewModel(BaseModel): return len(self.inst_data) == 0 def is_data_overflow_max_length(self): - return len(self.inst_data) >= environment.UTL_SEARCH_RESULT_MAX_COUNT + return len(self.inst_data) >= environment.ULTMARC_SEARCH_RESULT_MAX_COUNT def _selected_value(self, form_value: str, current_value: str): return 'selected' if form_value == current_value else '' diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py index 2ceebd0a..95e8605c 100644 --- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py +++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py @@ -2,7 +2,7 @@ from src.db import sql_condition as condition from src.db.sql_condition import SQLCondition from src.model.db.ultmarc_inst import UltmarcInstDBModel from src.model.db.ultmarc_inst_info import UltmarcInstInfoDBModel -from src.model.request.ultmarc_inst import UltmarcInstModel +from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.repositories.base_repository import BaseRepository from src.util.string_util import is_not_empty @@ -30,11 +30,11 @@ class UltmarcInstRepository(BaseRepository): \ """ - def fetch_many(self, parameter: UltmarcInstModel) -> list[UltmarcInstDBModel]: + def fetch_many(self, parameter: UltmarcInstSearchModel) -> list[UltmarcInstDBModel]: try: self._database.connect() # 文字列の検索を部分一致にするため、モデルをコピー。以降はこのコピーを使用する。 - clone_parameter = UltmarcInstModel(**parameter.dict()) + clone_parameter = UltmarcInstSearchModel(**parameter.dict()) where_clause = self.__build_condition(clone_parameter) query = self.FETCH_SQL.format(where_clause=where_clause) result = self._database.execute_select(query, clone_parameter.dict()) @@ -48,7 +48,7 @@ class UltmarcInstRepository(BaseRepository): finally: self._database.disconnect() - def __build_condition(self, parameter: UltmarcInstModel): + def __build_condition(self, parameter: UltmarcInstSearchModel): where_clauses: list[SQLCondition] = [] # ULT施設コード diff --git a/ecs/jskult-webapp/src/services/ultmarc_view_service.py b/ecs/jskult-webapp/src/services/ultmarc_view_service.py index 44f99cda..5c441421 100644 --- a/ecs/jskult-webapp/src/services/ultmarc_view_service.py +++ b/ecs/jskult-webapp/src/services/ultmarc_view_service.py @@ -1,7 +1,6 @@ from src.aws.aws_api_client import AWSAPIClient -from src.model.internal.session import UserSession from src.model.request.ultmarc_doctor import UltmarcDoctorSearchModel -from src.model.request.ultmarc_inst import UltmarcInstModel +from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.model.view.ultmarc_doctor_info_view_model import \ UltmarcDoctorInfoViewModel from src.model.view.ultmarc_doctor_view_model import UltmarcDoctorViewModel @@ -66,10 +65,13 @@ class UltmarcViewService(BaseService): self.ultmarc_doctor_wrkplace_his_repository = repositories['ultmarc_doctor_wrkplace_his_repository'] self.ultmarc_specialist_license_repository = repositories['ultmarc_specialist_license_repository'] - def prepare_ultmarc_doctor_view( - self, - session: UserSession + ######################### + # アルトマーク医師 # + ######################### + def prepare_ultmarc_doctor_search_view( + self ) -> UltmarcDoctorViewModel: + # 医師一覧画面の表示データ取得 # 都道府県リストを取得 prefcs = self.prefc_repository.fetch_all() @@ -78,58 +80,15 @@ class UltmarcViewService(BaseService): ) return ultmarc - def ultmarc_inst_view( - self, - session: UserSession - ) -> UltmarcInstViewModel: - # 都道府県リストを取得 - prefcs = self.prefc_repository.fetch_all() - # 施設区分リストを取得 - inst_div = self.inst_div_repository.fetch_all() - - ultmarc = UltmarcInstViewModel( - prefc_models=prefcs, - inst_div_models=inst_div - ) - return ultmarc - - def search_inst_data(self, search_params: UltmarcInstModel): - # 施設データを検索 - ultmarc_inst_data = self.ultmarc_inst_repository.fetch_many(parameter=search_params) - return ultmarc_inst_data - - def info_ultmarc_inst_view( - self, - id, - session: UserSession - ) -> UltmarcInstInfoViewModel: - - # 施設情報画面の表示データ取得 - # 施設情報を取得 - inst_info = self.ultmarc_inst_repository.fetch_one(id) - # 診療科目情報を取得 - inst_trt_course = self.ultmarc_inst_trt_course_repository.fetch_many(id) - # 医師件数を取得 - doctor_count = self.ultmarc_doctor_wrkplace_repository.fetch_count(id) - - ultmarc = UltmarcInstInfoViewModel( - inst_info_data=inst_info, - inst_trt_coursed_data=inst_trt_course, - doctor_wrkplace_count=doctor_count - ) - return ultmarc - def search_doctor_data(self, search_params: UltmarcDoctorSearchModel): # 医師データを検索 ultmarc_doctor_data = self.ultmarc_doctor_repository.fetch_many(parameter=search_params) return ultmarc_doctor_data - def info_ultmarc_doctor_view( + def prepare_ultmarc_doctor_info_view( self, - id, - session: UserSession + id ) -> UltmarcDoctorInfoViewModel: - # 医師情報画面の表示データ取得 # 医師情報を取得 doctor_info = self.ultmarc_doctor_repository.fetch_one(id) @@ -153,3 +112,45 @@ class UltmarcViewService(BaseService): doctor_wrkplace_his_data=wrkplace_his ) return ultmarc + + ######################### + # アルトマーク施設 # + ######################### + def prepare_ultmarc_inst_search_view( + self + ) -> UltmarcInstViewModel: + # 施設一覧画面の表示データ取得 + # 都道府県リストを取得 + prefcs = self.prefc_repository.fetch_all() + # 施設区分リストを取得 + inst_div = self.inst_div_repository.fetch_all() + + ultmarc = UltmarcInstViewModel( + prefc_models=prefcs, + inst_div_models=inst_div + ) + return ultmarc + + def search_inst_data(self, search_params: UltmarcInstSearchModel): + # 施設データを検索 + ultmarc_inst_data = self.ultmarc_inst_repository.fetch_many(parameter=search_params) + return ultmarc_inst_data + + def prepare_ultmarc_inst_info_view( + self, + id + ) -> UltmarcInstInfoViewModel: + # 施設情報画面の表示データ取得 + # 施設情報を取得 + inst_info = self.ultmarc_inst_repository.fetch_one(id) + # 診療科目情報を取得 + inst_trt_course = self.ultmarc_inst_trt_course_repository.fetch_many(id) + # 医師件数を取得 + doctor_count = self.ultmarc_doctor_wrkplace_repository.fetch_count(id) + + ultmarc = UltmarcInstInfoViewModel( + inst_info_data=inst_info, + inst_trt_coursed_data=inst_trt_course, + doctor_wrkplace_count=doctor_count + ) + return ultmarc diff --git a/ecs/jskult-webapp/src/system_var/environment.py b/ecs/jskult-webapp/src/system_var/environment.py index 91b661b3..c5bf66ef 100644 --- a/ecs/jskult-webapp/src/system_var/environment.py +++ b/ecs/jskult-webapp/src/system_var/environment.py @@ -19,7 +19,7 @@ DB_PASSWORD = os.environ['DB_PASSWORD'] DB_SCHEMA = os.environ['DB_SCHEMA'] BIO_SEARCH_RESULT_MAX_COUNT = int(os.environ['BIO_SEARCH_RESULT_MAX_COUNT']) -UTL_SEARCH_RESULT_MAX_COUNT = int(os.environ['UTL_SEARCH_RESULT_MAX_COUNT']) +ULTMARC_SEARCH_RESULT_MAX_COUNT = int(os.environ['ULTMARC_SEARCH_RESULT_MAX_COUNT']) SESSION_EXPIRE_MINUTE = int(os.environ['SESSION_EXPIRE_MINUTE']) LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO') diff --git a/ecs/jskult-webapp/src/templates/bioSearchList.html b/ecs/jskult-webapp/src/templates/bioSearchList.html index 2ab9b7cb..32ca883a 100644 --- a/ecs/jskult-webapp/src/templates/bioSearchList.html +++ b/ecs/jskult-webapp/src/templates/bioSearchList.html @@ -176,7 +176,7 @@ {% if bio.is_form_submitted() and bio.is_data_overflow_max_length() %}
| ULT施設コード | @@ -196,31 +196,30 @@|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - {{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_data.dcf_dsf_inst_cd)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_data.inst_name_kanji)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_data.blng_sec_name)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_data.univ_post_name)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_data.post_name)}} | -{{ultmarc.is_input_ymd_fromat(doctor_wrkplace_data.aply_start_ymd)}} | ++ {{doctor_wrkplace_data.dcf_dsf_inst_cd or ''}} | +{{doctor_wrkplace_data.inst_name_kanji or ''}} | +{{doctor_wrkplace_data.blng_sec_name or ''}} | +{{doctor_wrkplace_data.univ_post_name or ''}} | +{{doctor_wrkplace_data.post_name or ''}} | +{{doctor_wrkplace_data.aply_start_ymd or ''}} | 9999/99/99 | |
| - {{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_his_data.dcf_dsf_inst_cd)}} - | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_his_data.inst_name_kanji)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_his_data.blng_sec_name)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_his_data.univ_post_name)}} | -{{ultmarc.is_data_string_empty_fromat(doctor_wrkplace_his_data.post_name)}} | -{{ultmarc.is_input_ymd_fromat(doctor_wrkplace_his_data.aply_start_ymd)}} | -{{ultmarc.is_input_ymd_fromat(doctor_wrkplace_his_data.aply_end_ymd)}} | ++ {{doctor_wrkplace_his_data.dcf_dsf_inst_cd or ''}} | +{{doctor_wrkplace_his_data.inst_name_kanji or ''}} | +{{doctor_wrkplace_his_data.blng_sec_name or ''}} | +{{doctor_wrkplace_his_data.univ_post_name or ''}} | +{{doctor_wrkplace_his_data.post_name or ''}} | +{{doctor_wrkplace_his_data.aply_start_ymd or ''}} | +{{doctor_wrkplace_his_data.aply_end_ymd or ''}} |