diff --git a/ecs/jskult-webapp/.env.example b/ecs/jskult-webapp/.env.example
index f330f3d5..c604e43e 100644
--- a/ecs/jskult-webapp/.env.example
+++ b/ecs/jskult-webapp/.env.example
@@ -22,4 +22,5 @@ AWS_REGION=ap-northeast-1
AUTHORIZE_ENDPOINT=oauth2/authorize
TOKEN_ENDPOINT=oauth2/token
BIO_SEARCH_RESULT_MAX_COUNT=35000
+SEARCH_RESULT_MAX_COUNT=500
SESSION_EXPIRE_MINUTE=20
diff --git a/ecs/jskult-webapp/src/controller/ultmarc.py b/ecs/jskult-webapp/src/controller/ultmarc.py
index f4747bc8..914826c9 100644
--- a/ecs/jskult-webapp/src/controller/ultmarc.py
+++ b/ecs/jskult-webapp/src/controller/ultmarc.py
@@ -1,18 +1,15 @@
from typing import Optional
-from fastapi import APIRouter, Depends, HTTPException, Request
-from fastapi.exceptions import HTTPException
-from starlette import status
+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 UltmarcDoctorModel, UltmarcDoctorInfoModel
-from src.model.request.ultmarc_inst import UltmarcInstModel
+from src.model.request.ultmarc_inst import UltmarcInstModel, UltmarcInstInfoModel
from src.router.session_router import AuthenticatedRoute
from src.services.batch_status_service import BatchStatusService
from src.services.ultmarc_view_service import UltmarcViewService
from src.services.session_service import set_session
-from src.system_var import constants
from src.templates import templates
router = APIRouter()
@@ -33,9 +30,6 @@ def ultmarc_inst_view(
# バッチ処理中の場合、機能を利用させない
is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
-
# 検索項目の取得(都道府県・施設区分)
ultmarc = ultmarc_service.ultmarc_inst_view(session)
ultmarc.is_batch_processing = is_batch_processing
@@ -66,10 +60,9 @@ def search_inst(
batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService))
):
session: UserSession = request.session
+
# バッチ処理中の場合、機能を利用させない
# is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
# 施設データを検索
ultmarc_inst_data = ultmarc_service.search_inst_data(ultmarc_inst_form)
@@ -98,6 +91,89 @@ def search_inst(
return templates_response
+@router.get('/instInfo')
+def ultmarc_inst_info_view(
+ request: Request,
+ id: str,
+ batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService)),
+ ultmarc_service: UltmarcViewService = Depends(get_service(UltmarcViewService))
+):
+ session: UserSession = request.session
+ # バッチ処理中の場合、機能を利用させない
+ is_batch_processing = batch_status_service.is_batch_processing()
+
+ # 施設情報の取得
+ ultmarc = ultmarc_service.info_ultmarc_inst_view(id, session)
+ # バッチ起動判定の取得
+ ultmarc.is_batch_processing = is_batch_processing
+ # instId
+ ultmarc.instId = id
+ # ページ総数(件数)
+ ultmarc.postCnt = 1
+ # ページ数(表示するページNo)
+ ultmarc.pageNum = 0
+
+ # セッション書き換え
+ session.update(
+ actions=[
+ UserSession.last_access_time.set(UserSession.new_last_access_time()),
+ UserSession.record_expiration_time.set(UserSession.new_record_expiration_time()),
+ ]
+ )
+ session_key = set_session(session)
+ templates_response = templates.TemplateResponse(
+ 'instInfo.html', {
+ 'request': request,
+ 'ultmarc': ultmarc,
+ },
+ headers={'session_key': session_key}
+ )
+ return templates_response
+
+
+@router.post('/instInfo')
+def ultmarc_inst_info_search(
+ request: Request,
+ ultmarc_inst_form: Optional[UltmarcInstInfoModel] = Depends(UltmarcInstInfoModel.as_form),
+ ultmarc_service: UltmarcViewService = Depends(get_service(UltmarcViewService)),
+ batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService))
+):
+ session: UserSession = request.session
+ # バッチ処理中の場合、機能を利用させない
+ is_batch_processing = batch_status_service.is_batch_processing()
+
+ instId = ultmarc_inst_form.instId.split(',')
+
+ # 施設情報の取得
+ ultmarc = ultmarc_service.info_ultmarc_inst_view(instId[ultmarc_inst_form.pageNum], session)
+
+ # バッチ起動判定の取得
+ ultmarc.is_batch_processing = is_batch_processing
+ # InstId
+ ultmarc.instId = ultmarc_inst_form.instId
+ # ページ総数(件数)
+ ultmarc.postCnt = len(instId)
+ # ページ数(表示するページNo)
+ ultmarc.pageNum = ultmarc_inst_form.pageNum
+
+ # セッション書き換え
+ session.update(
+ actions=[
+ UserSession.last_access_time.set(UserSession.new_last_access_time()),
+ UserSession.record_expiration_time.set(UserSession.new_record_expiration_time()),
+ ]
+ )
+ session_key = set_session(session)
+ templates_response = templates.TemplateResponse(
+ 'instInfo.html', {
+ 'request': request,
+ 'ultmarc': ultmarc,
+ },
+ headers={'session_key': session_key}
+ )
+ return templates_response
+
+
@router.get('/docSearch')
def ultmarc_doctor_view(
request: Request,
@@ -108,9 +184,6 @@ def ultmarc_doctor_view(
# バッチ処理中の場合、機能を利用させない
is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
-
# 検索項目の取得(都道府県)
ultmarc = ultmarc_service.prepare_ultmarc_doctor_view(session)
ultmarc.is_batch_processing = is_batch_processing
@@ -141,10 +214,9 @@ def search_doc(
batch_status_service: BatchStatusService = Depends(get_service(BatchStatusService))
):
session: UserSession = request.session
+
# バッチ処理中の場合、機能を利用させない
# is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
# 医師データを検索
ultmarc_doctor_data = ultmarc_service.search_doctor_data(ultmarc_doctor_form)
@@ -184,9 +256,6 @@ def ultmarc_doctor_info_view(
# バッチ処理中の場合、機能を利用させない
is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
-
# 医師情報の取得
ultmarc = ultmarc_service.info_ultmarc_doctor_view(id, session)
# バッチ起動判定の取得
@@ -227,9 +296,6 @@ def ultmarc_doctor_info_search(
# バッチ処理中の場合、機能を利用させない
is_batch_processing = batch_status_service.is_batch_processing()
- # if batch_status_service.is_batch_processing():
- # raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=constants.LOGOUT_REASON_BATCH_PROCESSING)
-
docId = ultmarc_doctor_form.docId.split(',')
# 医師情報の取得
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_count.py b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_count.py
new file mode 100644
index 00000000..4482eab9
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_count.py
@@ -0,0 +1,9 @@
+from typing import Optional
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcDoctorWrkplaceCountDBModel(BaseDBModel):
+ count: Optional[int]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_inst_info.py b/ecs/jskult-webapp/src/model/db/ultmarc_inst_info.py
new file mode 100644
index 00000000..a72b38a9
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_inst_info.py
@@ -0,0 +1,57 @@
+from typing import Optional
+from datetime import datetime
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcInstInfoDBModel(BaseDBModel):
+ dcf_dsf_inst_cd: Optional[str]
+ unconf_flg: Optional[str]
+ dup_opp_cd: Optional[str]
+ close_start_ym: Optional[str]
+ close_flg: Optional[str]
+ delete_sche_reason_cd: Optional[str]
+ abolish_ymd: Optional[str]
+ estab_sche_ym: Optional[str]
+ estab_sche_flg: Optional[str]
+ form_inst_name_kana: Optional[str]
+ form_inst_name_kanji: Optional[str]
+ inst_name_kana: Optional[str]
+ inst_name_kanji: Optional[str]
+ manage_cd: Optional[str]
+ postal_number: Optional[str]
+ inst_phone_number: Optional[str]
+ addr_unknown_reason_cd: Optional[str]
+ phone_number_non_flg: Optional[str]
+ inst_addr_kana: Optional[str]
+ inst_addr: Optional[str]
+ re_exam_cd: Optional[str]
+ rltd_univ_prnt_cd: Optional[str]
+ insp_item_micrb: Optional[str]
+ insp_item_serum: Optional[str]
+ insp_item_blood: Optional[str]
+ insp_item_patho: Optional[str]
+ insp_item_paras: Optional[str]
+ insp_item_biochem: Optional[str]
+ insp_item_ri: Optional[str]
+ prmit_bed_num_gen: Optional[str]
+ prmit_bed_num_rcup: Optional[str]
+ prmit_bed_num_mental: Optional[str]
+ prmit_bed_num_infection: Optional[str]
+ prmit_bed_num_tuber: Optional[str]
+ prmit_bed_num_other: Optional[str]
+ prmit_bed_num_sum: Optional[str]
+ ward_abolish_flg: Optional[str]
+ bed_num: Optional[str]
+ prmit_bed_maint_ymd: Optional[str]
+ inst_repre_cd: Optional[str]
+ inst_repre_kana: Optional[str]
+ inst_repre: Optional[str]
+ sys_update_date: Optional[datetime]
+ delete_sche_reason: Optional[str]
+ inst_div_name: Optional[str]
+ manage_name: Optional[str]
+ hp_assrt_name: Optional[str]
+ parent_name: Optional[str]
+ dcf_prnt_inst_cd: Optional[str]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_inst_trt_course.py b/ecs/jskult-webapp/src/model/db/ultmarc_inst_trt_course.py
new file mode 100644
index 00000000..7c2ef6de
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_inst_trt_course.py
@@ -0,0 +1,9 @@
+from typing import Optional
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcInstTrtCourseDBModel(BaseDBModel):
+ trt_course_name_abb: Optional[str]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_trt_course.py b/ecs/jskult-webapp/src/model/db/ultmarc_trt_course.py
index 23908fce..788d9748 100644
--- a/ecs/jskult-webapp/src/model/db/ultmarc_trt_course.py
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_trt_course.py
@@ -5,5 +5,5 @@ from src.util.sanitize import sanitize
@sanitize
-class UltmarcTrtCoursedbmodel(BaseDBModel):
+class UltmarcTrtCourseDBModel(BaseDBModel):
trt_course_name: Optional[str]
diff --git a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py
index f7919612..8b9a52c6 100644
--- a/ecs/jskult-webapp/src/model/request/ultmarc_inst.py
+++ b/ecs/jskult-webapp/src/model/request/ultmarc_inst.py
@@ -45,17 +45,17 @@ class UltmarcInstModel(BaseModel):
class UltmarcInstInfoModel(BaseModel):
- docId: Optional[str]
+ instId: Optional[str]
pageNum: Optional[int]
@classmethod
def as_form(
cls,
- docId: str = Form(None),
+ instId: str = Form(None),
pageNum: str = Form(None)
):
return cls(
- docId=docId,
+ instId=instId,
pageNum=int(pageNum)
)
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 993bea14..0af599d4 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
@@ -1,17 +1,13 @@
-import json
-from collections import OrderedDict
-from datetime import datetime
+from datetime import datetime, date
from typing import Optional
-
from pydantic import BaseModel
from src.model.db.ultmarc_doctor_info import UltmarcDoctorInfoDBModel
-from src.model.db.ultmarc_trt_course import UltmarcTrtCoursedbmodel
+from src.model.db.ultmarc_trt_course import UltmarcTrtCourseDBModel
from src.model.db.ultmarc_sosiety import UltmarcSosietyDBModel
from src.model.db.ultmarc_specialist_license import UltmarcSpecialistLicenseDBModel
from src.model.db.ultmarc_doctor_wrkplace import UltmarcDoctorWrkplaceDBModel
from src.model.db.ultmarc_doctor_wrkplace_his import UltmarcDoctorWrkplaceHisDBModel
-
from src.system_var import environment
@@ -19,7 +15,7 @@ class UltmarcDoctorInfoViewModel(BaseModel):
subtitle: str = '医師情報'
is_batch_processing: Optional[bool]
doctor_info_data: Optional[UltmarcDoctorInfoDBModel]
- trt_coursed_data: Optional[list[UltmarcTrtCoursedbmodel]]
+ trt_coursed_data: Optional[list[UltmarcTrtCourseDBModel]]
sosiety_data: Optional[list[UltmarcSosietyDBModel]]
specialist_license_data: Optional[list[UltmarcSpecialistLicenseDBModel]]
doctor_wrkplace_data: Optional[list[UltmarcDoctorWrkplaceDBModel]]
@@ -28,11 +24,6 @@ class UltmarcDoctorInfoViewModel(BaseModel):
postCnt: Optional[int]
pageNum: Optional[int]
- 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):
return self.doctor_info_data.dcf_pcf_dr_cd or ''
@@ -86,6 +77,11 @@ class UltmarcDoctorInfoViewModel(BaseModel):
def is_input_birthday_fromat(self):
return self._format_date_string(self.doctor_info_data.birthday)
+ def is_input_ymd_fromat(self, ymd):
+ if ymd is None:
+ return ''
+ return ymd.strftime('%Y/%m/%d')
+
def is_input_trt_course_data_size(self):
return len(self.trt_coursed_data)
@@ -102,13 +98,16 @@ class UltmarcDoctorInfoViewModel(BaseModel):
return len(self.doctor_data) == 0
def is_data_overflow_max_length(self):
- return len(self.doctor_data) >= environment.BIO_SEARCH_RESULT_MAX_COUNT
+ return len(self.doctor_data) >= environment.SEARCH_RESULT_MAX_COUNT
def _format_date_string(self, date_string):
if date_string is None:
return ''
- date = datetime.strptime(date_string, '%Y%m%d')
- return date.strftime('%Y/%m/%d')
+ date_str = datetime.strptime(date_string, '%Y%m%d')
+ return date_str.strftime('%Y/%m/%d')
def _selected_value(self, form_value: str, current_value: str):
return 'selected' if form_value == current_value else ''
+
+ def is_octor_wrkplace_data_count(self):
+ return len(self.doctor_wrkplace_data)
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 ea2afe48..47f55454 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
@@ -7,7 +7,7 @@ from pydantic import BaseModel
from src.model.db.prefc_master import PrefcMasterModel
from src.model.request.ultmarc_doctor import UltmarcDoctorModel
-from src.model.view.bio_disp_model import BisDisplayModel
+from src.model.db.ultmarc_doctor import UltmarcDoctorDBModel
from src.system_var import environment
@@ -15,7 +15,7 @@ class UltmarcDoctorViewModel(BaseModel):
subtitle: str = '医師検索一覧'
is_batch_processing: Optional[bool]
prefc_models: list[PrefcMasterModel]
- doctor_data: Optional[list[BisDisplayModel]] = []
+ doctor_data: Optional[list[UltmarcDoctorDBModel]] = []
form_data: Optional[UltmarcDoctorModel]
def ultmarc_data_json_str(self):
@@ -65,6 +65,11 @@ class UltmarcDoctorViewModel(BaseModel):
return ''
return self._selected_value(self.form_data.prefc_cd, selected_prefc_cd)
+ def is_input_form_prefc_cd(self):
+ if not self.is_form_submitted():
+ return ''
+ return self.form_data.prefc_cd or ''
+
# 所属部科(漢字)
def is_input_blng_sec_name(self):
if not self.is_form_submitted():
@@ -99,13 +104,13 @@ class UltmarcDoctorViewModel(BaseModel):
return len(self.doctor_data) == 0
def is_data_overflow_max_length(self):
- return len(self.doctor_data) >= environment.BIO_SEARCH_RESULT_MAX_COUNT
+ return len(self.doctor_data) >= environment.SEARCH_RESULT_MAX_COUNT
def _format_date_string(self, date_string):
if date_string is None:
return ''
- date = datetime.strptime(date_string, '%Y%m%d')
- return date.strftime('%Y/%m/%d')
+ date_str = datetime.strptime(date_string, '%Y%m%d')
+ return date_str.strftime('%Y/%m/%d')
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
new file mode 100644
index 00000000..6d64e04f
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/view/ultmarc_inst_info_view_model.py
@@ -0,0 +1,264 @@
+import json
+from collections import OrderedDict
+from datetime import datetime
+from typing import Optional
+
+from pydantic import BaseModel
+
+from src.model.db.ultmarc_inst_info import UltmarcInstInfoDBModel
+from src.model.db.ultmarc_inst_trt_course import UltmarcInstTrtCourseDBModel
+
+from src.system_var import environment
+
+
+class UltmarcInstInfoViewModel(BaseModel):
+ subtitle: str = '施設情報'
+ is_batch_processing: Optional[bool]
+ inst_info_data: Optional[UltmarcInstInfoDBModel]
+ inst_trt_coursed_data: Optional[list[UltmarcInstTrtCourseDBModel]]
+ doctor_wrkplace_count: Optional[int]
+ instId: Optional[str]
+ postCnt: Optional[int]
+ pageNum: Optional[int]
+
+ # 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_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 ''
+
+ # 一部病棟閉鎖
+ 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)
+ return sys_update_date[:10]
+
+ # 勤務医師ボタン表示
+ def is_disabled_doctor_wrkplace(self):
+ return 'disabled' if self.doctor_wrkplace_count == 0 else ''
+
+ # 現在のページ(表示用)
+ def is_pageNum_view(self):
+ return self.pageNum + 1
+
+ # 前ボタン
+ def is_disabled_prev(self):
+ return 'disabled' if self.pageNum == 0 else ''
+
+ # 次ボタン
+ def is_disabled_next(self):
+ if self.pageNum == self.postCnt - 1:
+ return 'disabled'
+ return ''
+
+ # 診療科目のデータ件数
+ def is_input_inst_trt_course_data_size(self):
+ if self.inst_trt_coursed_data is None:
+ 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 ''
+
+ def is_form_submitted(self):
+ return self.form_data is not None
+
+ def is_data_empty(self):
+ return len(self.doctor_data) == 0
+
+ def is_data_overflow_max_length(self):
+ return len(self.doctor_data) >= environment.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 a0b5107c..e728945a 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
@@ -7,7 +7,7 @@ from pydantic import BaseModel
from src.model.db.prefc_master import PrefcMasterModel
from src.model.db.inst_div_master import InstDivMasterModel
from src.model.request.ultmarc_inst import UltmarcInstModel
-from src.model.view.bio_disp_model import BisDisplayModel
+from src.model.db.ultmarc_inst import UltmarcInstDBModel
from src.system_var import environment
@@ -16,7 +16,7 @@ class UltmarcInstViewModel(BaseModel):
is_batch_processing: Optional[bool]
prefc_models: list[PrefcMasterModel]
inst_div_models: list[InstDivMasterModel]
- inst_data: Optional[list[BisDisplayModel]] = []
+ inst_data: Optional[list[UltmarcInstDBModel]] = []
form_data: Optional[UltmarcInstModel]
def ultmarc_data_json_str(self):
@@ -25,7 +25,7 @@ class UltmarcInstViewModel(BaseModel):
return json.dumps([model.dict() for model in self.inst_data], ensure_ascii=False, default=date_handler)
# ULT施設コード
- def is_input_dcf_dsf_inst_cdd(self):
+ def is_input_dcf_dsf_inst_cd(self):
if not self.is_form_submitted():
return ''
return self.form_data.dcf_dsf_inst_cd or ''
@@ -36,6 +36,11 @@ class UltmarcInstViewModel(BaseModel):
return ''
return self._selected_value(self.form_data.inst_div_cd, selected_inst_div_cd)
+ def is_input_form_inst_div_cd(self):
+ if not self.is_form_submitted():
+ return ''
+ return self.form_data.inst_div_cd or ''
+
# ULT施設名(漢字)
def is_input_form_inst_name_kanji(self):
if not self.is_form_submitted():
@@ -63,9 +68,14 @@ class UltmarcInstViewModel(BaseModel):
# 削除施設表示
def is_checked_delFlg(self):
if not self.is_form_submitted():
- return ''
+ return 'checked'
return self._checked_value(self.form_data.delFlg)
+ def is_input_delFlg(self):
+ if not self.is_form_submitted():
+ return ''
+ return self.form_data.delFlg or ''
+
# ULT施設住所
def is_input_inst_addr(self):
if not self.is_form_submitted():
@@ -78,6 +88,11 @@ class UltmarcInstViewModel(BaseModel):
return ''
return self._selected_value(self.form_data.prefc_cd, selected_prefc_cd)
+ def is_input_form_prefc_cd(self):
+ if not self.is_form_submitted():
+ return ''
+ return self.form_data.prefc_cd or ''
+
def disabled_button(self):
return 'disabled' if self.is_data_empty() or self.is_data_overflow_max_length() else ''
@@ -85,16 +100,16 @@ class UltmarcInstViewModel(BaseModel):
return self.form_data is not None
def is_data_empty(self):
- return len(self.doctor_data) == 0
+ return len(self.inst_data) == 0
def is_data_overflow_max_length(self):
- return len(self.doctor_data) >= environment.BIO_SEARCH_RESULT_MAX_COUNT
+ return len(self.inst_data) >= environment.SEARCH_RESULT_MAX_COUNT
def _format_date_string(self, date_string):
if date_string is None:
return ''
- date = datetime.strptime(date_string, '%Y%m%d')
- return date.strftime('%Y/%m/%d')
+ date_str = datetime.strptime(date_string, '%Y%m%d')
+ return date_str.strftime('%Y/%m/%d')
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_doctor_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py
index 60f1543d..5860148c 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py
@@ -34,7 +34,7 @@ class UltmarcDoctorRepository(BaseRepository):
LEFT JOIN src05.com_alma ON com_dr.alma_cd = com_alma.alma_cd
WHERE
{where_clause}
- GROUP BY com_dr.dcf_pcf_dr_cd
+ GROUP BY com_dr.dcf_pcf_dr_cd, com_inst.dcf_dsf_inst_cd, com_blng_sec.blng_sec_cd
ORDER BY
com_dr.dcf_pcf_dr_cd,
com_dr_wrkplace.dcf_dsf_inst_cd,
@@ -127,6 +127,13 @@ class UltmarcDoctorRepository(BaseRepository):
parameter.grad_y = f'%{parameter.grad_y}%'
where_clauses.append(SQLCondition('grad_y', condition.LIKE, 'grad_y'))
+ # 検索条件が入力されていない場合
+ # if not where_clauses:
+ # where_clauses.append(SQLCondition(
+ # '', '', '(LENGTH(com_inst.abolish_ymd) = 0 OR com_inst.abolish_ymd IS NULL)', literal=True))
+ # where_clauses.append(SQLCondition(
+ # '', '', '(LENGTH(com_dr.abolish_ymd) = 0 OR com_dr.abolish_ymd IS NULL)', literal=True))
+
where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses])
return where_clauses_str
diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py
index 14f0de45..67ab328d 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py
@@ -5,21 +5,23 @@ from src.repositories.base_repository import BaseRepository
class UltmarcDoctorWrkplaceHisRepository(BaseRepository):
FETCH_SQL = """\
- SELECT
- com_inst.dcf_dsf_inst_cd,
- com_inst.inst_name_kanji,
- com_blng_sec.blng_sec_name,
- univ_post.form_post_name AS univ_post_name,
- post.form_post_name AS post_name,
- com_dr_wrkplace.aply_start_ymd
- FROM src05.com_dr
- LEFT JOIN src05.com_dr_wrkplace ON com_dr.dcf_pcf_dr_cd = com_dr_wrkplace.dcf_pcf_dr_cd
- LEFT JOIN src05.com_inst ON com_dr_wrkplace.dcf_dsf_inst_cd = com_inst.dcf_dsf_inst_cd
- LEFT JOIN src05.com_blng_sec ON com_dr_wrkplace.blng_sec_cd = com_blng_sec.blng_sec_cd
- LEFT JOIN src05.com_post as univ_post ON com_dr_wrkplace.identity_cd = univ_post.post_cd
- LEFT JOIN src05.com_post as post ON com_dr_wrkplace.post_cd = post.post_cd
+ SELECT
+ com_inst.dcf_dsf_inst_cd,
+ com_inst.inst_name_kanji,
+ com_blng_sec.blng_sec_name,
+ univ_post.form_post_name as univ_post_name,
+ post.form_post_name as post_name,
+ com_dr_wrkplace_his.aply_start_ymd,
+ com_dr_wrkplace_his.aply_end_ymd
+ FROM com_dr
+ LEFT JOIN com_dr_wrkplace_his ON com_dr.dcf_pcf_dr_cd = com_dr_wrkplace_his.dcf_pcf_dr_cd
+ LEFT JOIN com_inst ON com_dr_wrkplace_his.dcf_dsf_inst_cd = com_inst.dcf_dsf_inst_cd
+ LEFT JOIN com_blng_sec ON com_dr_wrkplace_his.blng_sec_cd = com_blng_sec.blng_sec_cd
+ LEFT JOIN com_post as univ_post ON com_dr_wrkplace_his.identity_cd = univ_post.post_cd
+ LEFT JOIN com_post as post ON com_dr_wrkplace_his.post_cd = post.post_cd
WHERE com_dr.dcf_pcf_dr_cd = :id
- ORDER BY com_dr_wrkplace.aply_start_ymd DESC
+ ORDER BY com_dr_wrkplace_his.aply_end_ymd DESC,
+ com_dr_wrkplace_his.aply_start_ymd DESC
"""
def fetch_many(self, id) -> list[UltmarcDoctorWrkplaceHisDBModel]:
diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py
index fd1295d7..cc6a9dc3 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py
@@ -1,4 +1,6 @@
from src.model.db.ultmarc_doctor_wrkplace import UltmarcDoctorWrkplaceDBModel
+from src.model.db.ultmarc_doctor_wrkplace_count import UltmarcDoctorWrkplaceCountDBModel
+
from src.repositories.base_repository import BaseRepository
@@ -37,3 +39,25 @@ class UltmarcDoctorWrkplaceRepository(BaseRepository):
raise e
finally:
self._database.disconnect()
+
+ FETCH_COUNT_SQL = """\
+ SELECT COUNT(*) AS count
+ FROM src05.com_dr_wrkplace
+ WHERE dcf_dsf_inst_cd = :id
+ """
+
+ def fetch_count(self, id) -> UltmarcDoctorWrkplaceCountDBModel:
+ try:
+ self._database.connect()
+ query = self.FETCH_COUNT_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcDoctorWrkplaceCountDBModel(**r) for r in result]
+ if len(models) == 0:
+ return 0
+ return models[0].count
+ except Exception as e:
+ # TODO: ファイルへの書き出しはloggerでやる
+ print(f"[ERROR] DB Error : Exception={e.args}")
+ raise e
+ finally:
+ self._database.disconnect()
diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py
index 438c429d..2cf08f77 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_repository.py
@@ -1,6 +1,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.repositories.base_repository import BaseRepository
from src.util.string_util import is_not_empty
@@ -95,14 +96,94 @@ class UltmarcInstRepository(BaseRepository):
where_clauses.append(SQLCondition('inst_addr', condition.LIKE, 'inst_addr'))
# 削除表示フラグ
- if is_not_empty(parameter.delFlg):
+ if is_not_empty(parameter.delFlg) == False:
# 論理和での検索
where_clauses.append(SQLCondition('', '', '(length(abolish_ymd) = 0 OR abolish_ymd IS NULL)', literal=True))
# 検索条件が入力されていない場合
- if not where_clauses:
- where_clauses.append(SQLCondition('', '', '(length(abolish_ymd) = 0 OR abolish_ymd IS NULL)', literal=True))
+ # if not where_clauses:
+ # where_clauses.append(SQLCondition('', '', '(length(abolish_ymd) = 0 OR abolish_ymd IS NULL)', literal=True))
where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses])
return where_clauses_str
+
+ FETCH_ONE_SQL = """\
+ SELECT
+ com_inst.dcf_dsf_inst_cd,
+ com_inst.unconf_flg,
+ com_inst.dup_opp_cd,
+ com_inst.close_start_ym,
+ com_inst.close_flg,
+ com_inst.delete_sche_reason_cd,
+ com_inst.abolish_ymd,
+ com_inst.estab_sche_ym,
+ com_inst.estab_sche_flg,
+ com_inst.form_inst_name_kana,
+ com_inst.form_inst_name_kanji,
+ com_inst.inst_name_kana,
+ com_inst.inst_name_kanji,
+ com_inst.manage_cd,
+ com_inst.postal_number,
+ com_inst.inst_phone_number,
+ com_inst.addr_unknown_reason_cd,
+ com_inst.phone_number_non_flg,
+ com_inst.inst_addr_kana,
+ com_inst.inst_addr,
+ com_inst.re_exam_cd,
+ com_inst.rltd_univ_prnt_cd,
+ com_inst.insp_item_micrb,
+ com_inst.insp_item_serum,
+ com_inst.insp_item_blood,
+ com_inst.insp_item_patho,
+ com_inst.insp_item_paras,
+ com_inst.insp_item_biochem,
+ com_inst.insp_item_ri,
+ com_inst.prmit_bed_num_gen,
+ com_inst.prmit_bed_num_rcup,
+ com_inst.prmit_bed_num_mental,
+ com_inst.prmit_bed_num_infection,
+ com_inst.prmit_bed_num_tuber,
+ com_inst.prmit_bed_num_other,
+ com_inst.prmit_bed_num_sum,
+ com_inst.ward_abolish_flg,
+ com_inst.bed_num,
+ com_inst.prmit_bed_maint_ymd,
+ com_inst.inst_repre_cd,
+ com_inst.inst_repre_kana,
+ com_inst.inst_repre,
+ com_inst.sys_update_date,
+ com_inst_delete_sche_reason.delete_sche_reason,
+ com_inst_div.inst_div_name,
+ com_manage.manage_name,
+ com_hp_assrt.hp_assrt_name,
+ parent_inst.form_inst_name_kanji as parent_name,
+ com_spcare_med_office_dat.dcf_prnt_inst_cd
+ FROM src05.com_inst
+ LEFT JOIN src05.com_inst_div ON com_inst.inst_div_cd = com_inst_div.inst_div_cd
+ LEFT JOIN src05.com_inst_delete_sche_reason ON com_inst.delete_sche_reason_cd = com_inst_delete_sche_reason.delete_sche_reason_cd
+ LEFT JOIN src05.com_manage ON com_inst.manage_cd = com_manage.manage_cd
+ LEFT JOIN src05.com_inst_addr_unknown_reason ON com_inst.addr_unknown_reason_cd = com_inst_addr_unknown_reason.addr_unknown_reason_cd
+ LEFT JOIN src05.com_hp_assrt ON com_hp_assrt.hp_assrt_cd = com_inst.hp_assrt_cd
+ LEFT JOIN src05.com_re_exam ON com_inst.re_exam_cd = com_re_exam.re_exam_cd
+ LEFT JOIN src05.com_spcare_med_office_dat ON com_inst.dcf_dsf_inst_cd = com_spcare_med_office_dat.dcf_chld_inst_cd
+ LEFT JOIN src05.com_inst as parent_inst ON com_inst.rltd_univ_prnt_cd = parent_inst.dcf_dsf_inst_cd
+ WHERE com_inst.dcf_dsf_inst_cd = :id
+ \
+ """
+
+ def fetch_one(self, id) -> UltmarcInstInfoDBModel:
+ try:
+ self._database.connect()
+ query = self.FETCH_ONE_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcInstInfoDBModel(**r) for r in result]
+ if len(models) == 0:
+ return None
+ return models[0]
+ except Exception as e:
+ # TODO: ファイルへの書き出しはloggerでやる
+ print(f"[ERROR] DB Error : Exception={e.args}")
+ raise e
+ finally:
+ self._database.disconnect()
diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_inst_trt_course_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_inst_trt_course_repository.py
new file mode 100644
index 00000000..eaee391a
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_inst_trt_course_repository.py
@@ -0,0 +1,31 @@
+from src.model.db.ultmarc_inst_trt_course import UltmarcInstTrtCourseDBModel
+from src.repositories.base_repository import BaseRepository
+
+
+class UltmarcInstTrtCourseRepository(BaseRepository):
+
+ FETCH_SQL = """\
+ SELECT trt_course_name_abb
+ FROM src05.com_inst
+ JOIN src05.com_inst_trt_course ON com_inst.dcf_dsf_inst_cd = com_inst_trt_course.dcf_dsf_inst_cd
+ LEFT JOIN src05.com_trt_course ON com_inst_trt_course.trt_course_cd = com_trt_course.trt_course_cd
+ WHERE com_inst.dcf_dsf_inst_cd = :id
+ ORDER BY com_trt_course.trt_course_cd
+ """
+
+ def fetch_many(self, id) -> list[UltmarcInstTrtCourseDBModel]:
+ try:
+ self._database.connect()
+ query = self.FETCH_SQL
+ result = self._database.execute_select(query, {'id': id})
+
+ models = [UltmarcInstTrtCourseDBModel(**r) for r in result]
+ if len(models) == 0:
+ return None
+ return models
+ except Exception as e:
+ # TODO: ファイルへの書き出しはloggerでやる
+ print(f"[ERROR] DB Error : Exception={e.args}")
+ raise e
+ finally:
+ self._database.disconnect()
diff --git a/ecs/jskult-webapp/src/repositories/ultmarc_trt_course_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_trt_course_repository.py
index f50fc02a..c76032a3 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_trt_course_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_trt_course_repository.py
@@ -1,4 +1,4 @@
-from src.model.db.ultmarc_trt_course import UltmarcTrtCoursedbmodel
+from src.model.db.ultmarc_trt_course import UltmarcTrtCourseDBModel
from src.repositories.base_repository import BaseRepository
@@ -13,13 +13,13 @@ class UltmarcTrtCourseRepository(BaseRepository):
ORDER BY com_trt_course.trt_course_cd
"""
- def fetch_many(self, id) -> list[UltmarcTrtCoursedbmodel]:
+ def fetch_many(self, id) -> list[UltmarcTrtCourseDBModel]:
try:
self._database.connect()
query = self.FETCH_SQL
result = self._database.execute_select(query, {'id': id})
- models = [UltmarcTrtCoursedbmodel(**r) for r in result]
+ models = [UltmarcTrtCourseDBModel(**r) for r in result]
if len(models) == 0:
return None
return models
diff --git a/ecs/jskult-webapp/src/services/ultmarc_view_service.py b/ecs/jskult-webapp/src/services/ultmarc_view_service.py
index 65cc57a0..d8103c93 100644
--- a/ecs/jskult-webapp/src/services/ultmarc_view_service.py
+++ b/ecs/jskult-webapp/src/services/ultmarc_view_service.py
@@ -11,6 +11,7 @@ from src.model.request.ultmarc_doctor import UltmarcDoctorModel
from src.model.request.ultmarc_inst import UltmarcInstModel
from src.model.view.ultmarc_doctor_view_model import UltmarcDoctorViewModel
from src.model.view.ultmarc_inst_view_model import UltmarcInstViewModel
+from src.model.view.ultmarc_inst_info_view_model import UltmarcInstInfoViewModel
from src.model.view.ultmarc_doctor_info_view_model import UltmarcDoctorInfoViewModel
from src.repositories.base_repository import BaseRepository
from src.repositories.prefc_master_repository import PrefcMasterRepository
@@ -18,6 +19,7 @@ from src.repositories.inst_master_repository import InstDivMasterRepository
from src.repositories.ultmarc_inst_repository import UltmarcInstRepository
from src.repositories.ultmarc_doctor_repository import UltmarcDoctorRepository
from src.repositories.ultmarc_trt_course_repository import UltmarcTrtCourseRepository
+from src.repositories.ultmarc_inst_trt_course_repository import UltmarcInstTrtCourseRepository
from src.repositories.ultmarc_sosiety_repository import UltmarcSosietyRepository
from src.repositories.ultmarc_dr_wrkplace_repository import UltmarcDoctorWrkplaceRepository
from src.repositories.ultmarc_dr_wrkplace_his_repository import UltmarcDoctorWrkplaceHisRepository
@@ -33,6 +35,7 @@ class UltmarcViewService(BaseService):
'inst_div_repository': InstDivMasterRepository,
'ultmarc_inst_repository': UltmarcInstRepository,
'ultmarc_trt_course_repository': UltmarcTrtCourseRepository,
+ 'ultmarc_inst_trt_course_repository': UltmarcInstTrtCourseRepository,
'ultmarc_sosiety_repository': UltmarcSosietyRepository,
'ultmarc_doctor_wrkplace_repository': UltmarcDoctorWrkplaceRepository,
'ultmarc_doctor_wrkplace_his_repository': UltmarcDoctorWrkplaceHisRepository,
@@ -44,6 +47,7 @@ class UltmarcViewService(BaseService):
inst_div_repository: InstDivMasterRepository
ultmarc_inst_repository: UltmarcInstRepository
ultmarc_trt_course_repository: UltmarcTrtCourseRepository
+ ultmarc_inst_trt_course_repository: UltmarcInstTrtCourseRepository
ultmarc_sosiety_repository: UltmarcSosietyRepository
ultmarc_doctor_wrkplace_repository: UltmarcDoctorWrkplaceRepository
ultmarc_doctor_wrkplace_his_repository: UltmarcDoctorWrkplaceHisRepository
@@ -56,6 +60,7 @@ class UltmarcViewService(BaseService):
self.inst_div_repository = repositories['inst_div_repository']
self.ultmarc_inst_repository = repositories['ultmarc_inst_repository']
self.ultmarc_trt_course_repository = repositories['ultmarc_trt_course_repository']
+ self.ultmarc_inst_trt_course_repository = repositories['ultmarc_inst_trt_course_repository']
self.ultmarc_sosiety_repository = repositories['ultmarc_sosiety_repository']
self.ultmarc_doctor_wrkplace_repository = repositories['ultmarc_doctor_wrkplace_repository']
self.ultmarc_doctor_wrkplace_his_repository = repositories['ultmarc_doctor_wrkplace_his_repository']
@@ -93,6 +98,27 @@ class UltmarcViewService(BaseService):
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: UltmarcDoctorModel):
# 医師データを検索
ultmarc_doctor_data = self.ultmarc_doctor_repository.fetch_many(parameter=search_params)
diff --git a/ecs/jskult-webapp/src/system_var/environment.py b/ecs/jskult-webapp/src/system_var/environment.py
index aed9916c..cd54d35d 100644
--- a/ecs/jskult-webapp/src/system_var/environment.py
+++ b/ecs/jskult-webapp/src/system_var/environment.py
@@ -19,4 +19,5 @@ 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'])
-SESSION_EXPIRE_MINUTE=int(os.environ['SESSION_EXPIRE_MINUTE'])
\ No newline at end of file
+SEARCH_RESULT_MAX_COUNT = int(os.environ['SEARCH_RESULT_MAX_COUNT'])
+SESSION_EXPIRE_MINUTE = int(os.environ['SESSION_EXPIRE_MINUTE'])
diff --git a/ecs/jskult-webapp/src/templates/docInfo.html b/ecs/jskult-webapp/src/templates/docInfo.html
index 1202faee..7e807303 100644
--- a/ecs/jskult-webapp/src/templates/docInfo.html
+++ b/ecs/jskult-webapp/src/templates/docInfo.html
@@ -33,7 +33,7 @@
diff --git a/ecs/jskult-webapp/src/templates/docSearch.html b/ecs/jskult-webapp/src/templates/docSearch.html
index c3168212..403b7f33 100644
--- a/ecs/jskult-webapp/src/templates/docSearch.html
+++ b/ecs/jskult-webapp/src/templates/docSearch.html
@@ -22,7 +22,7 @@
-
+ {% if ultmarc.is_form_submitted() and ultmarc.is_data_overflow_max_length() %}
+
+ 検索結果が最大件数を超えました。検索条件を見直しして下さい。
+
+ {% endif %}
+ {% if ultmarc.is_form_submitted() and ultmarc.is_data_empty() %}
+
+ 対象のデータが存在しません。
+
+ {% endif %}
+
@@ -156,8 +166,24 @@
const searchResultData = JSON.parse(searchResultString)
if (searchResultData.length == 0) {
return
- }
- $(".pagination").pagination({
+ }else if(searchResultData.length > 500){
+ return
+ }
+ // 検索条件をセッションに入れる
+ sessionStorage.clear();
+ sessionStorage.setItem('ctrl_dcf_pcf_dr_cd','{{ultmarc.is_input_dcf_pcf_dr_cd()}}');
+ sessionStorage.setItem('ctrl_dr_name','{{ultmarc.is_input_dr_name()}}');
+ sessionStorage.setItem('ctrl_dr_name_kana','{{ultmarc.is_input_dr_name_kana()}}');
+ sessionStorage.setItem('ctrl_dcf_dsf_inst_cd','{{ultmarc.is_input_dcf_dsf_inst_cd()}}');
+ sessionStorage.setItem('ctrl_form_inst_name_kanji','{{ultmarc.is_input_form_inst_name_kanji()}}');
+ sessionStorage.setItem('ctrl_form_inst_name_kana','{{ultmarc.is_input_form_inst_name_kana()}}');
+ sessionStorage.setItem('ctrl_prefc_cd','{{ultmarc.is_input_form_prefc_cd()}}');
+ sessionStorage.setItem('ctrl_blng_sec_name','{{ultmarc.is_input_blng_sec_name()}}');
+ sessionStorage.setItem('ctrl_trt_course_name','{{ultmarc.is_input_trt_course_name()}}');
+ sessionStorage.setItem('ctrl_alma','{{ultmarc.is_input_alma()}}');
+ sessionStorage.setItem('ctrl_grad_y','{{ultmarc.is_input_grad_y()}}');
+
+ $(".pagination").pagination({
dataSource: function(done) {
done(searchResultData)
},
@@ -175,6 +201,11 @@
})
});
+ function OnLinkClick(){
+ sessionStorage.clear();
+ return true;
+ }
+
function pagination_content(datas) {
const display_keys = [
'dcf_pcf_dr_cd',
@@ -192,7 +223,7 @@
if(key=='dcf_pcf_dr_cd')
inner_content = `${data['dcf_pcf_dr_cd'] || ''} `;
if(key=='dcf_dsf_inst_cd')
- inner_content = `${data['form_inst_name_kanji'] || ''} `;
+ inner_content = `${data['form_inst_name_kanji'] || ''} `;
return `${inner_content || ''} `
});
return `
@@ -208,7 +239,7 @@
})
}
- // 配列パラメータを加工にする
+ 配列パラメータを加工にする
function CheckBoxListPocessing()
{
var vals = []; // 配列を定義
diff --git a/ecs/jskult-webapp/src/templates/instInfo.html b/ecs/jskult-webapp/src/templates/instInfo.html
new file mode 100644
index 00000000..2ce03d2b
--- /dev/null
+++ b/ecs/jskult-webapp/src/templates/instInfo.html
@@ -0,0 +1,285 @@
+
+
+
+ {% with subtitle = ultmarc.subtitle %}
+ {% include '_header.html' %}
+ {% endwith %}
+
+
+
+
+
+
+
+
+ {{ultmarc.subtitle}}
+
+ {% if ultmarc.is_batch_processing %}
+ 日次バッチ処理中のため、データが正しく表示されない可能性があります
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ecs/jskult-webapp/src/templates/instSearch.html b/ecs/jskult-webapp/src/templates/instSearch.html
index 92db85ae..15988f05 100644
--- a/ecs/jskult-webapp/src/templates/instSearch.html
+++ b/ecs/jskult-webapp/src/templates/instSearch.html
@@ -7,7 +7,7 @@
\ No newline at end of file
diff --git a/s3/config/jskult/task_settings/web_task_settings.env b/s3/config/jskult/task_settings/web_task_settings.env
index 9cd4ecf8..b10c9342 100644
--- a/s3/config/jskult/task_settings/web_task_settings.env
+++ b/s3/config/jskult/task_settings/web_task_settings.env
@@ -4,3 +4,4 @@ AUTHORIZE_ENDPOINT=oauth2/authorize
TOKEN_ENDPOINT=oauth2/token
BIO_SEARCH_RESULT_MAX_COUNT=35000
SESSION_EXPIRE_MINUTE=20
+SEARCH_RESULT_MAX_COUNT=500