diff --git a/ecs/jskult-webapp/src/controller/ultmarc.py b/ecs/jskult-webapp/src/controller/ultmarc.py
index 133f6c64..399ca6e4 100644
--- a/ecs/jskult-webapp/src/controller/ultmarc.py
+++ b/ecs/jskult-webapp/src/controller/ultmarc.py
@@ -7,10 +7,8 @@ from starlette import status
from src.depends.services import get_service
from src.model.internal.session import UserSession
from src.model.request.ultmarc_doctor import UltmarcDoctorModel
-from src.model.view.bio_view_model import BioViewModel
from src.router.session_router import AuthenticatedRoute
from src.services.batch_status_service import BatchStatusService
-from src.services.bio_view_service import BioViewService
from src.services.ultmarc_view_service import UltmarcViewService
from src.services.session_service import set_session
from src.system_var import constants
@@ -97,3 +95,40 @@ def search_doc(
headers={'session_key': session_key}
)
return templates_response
+
+
+@router.get('/docInfo')
+def ultmarc_doctor_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()
+
+ # 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)
+ # バッチ起動判定の取得
+ ultmarc.is_batch_processing = is_batch_processing
+
+ # セッション書き換え
+ 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(
+ 'docInfo.html', {
+ 'request': request,
+ 'ultmarc': ultmarc,
+ },
+ headers={'session_key': session_key}
+ )
+ return templates_response
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_doctor_info.py b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_info.py
new file mode 100644
index 00000000..6f20dfb9
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_info.py
@@ -0,0 +1,18 @@
+from typing import Optional
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcDoctorInfoDBModel(BaseDBModel):
+ dcf_pcf_dr_cd: Optional[str]
+ dr_name: Optional[str]
+ dr_name_kana: Optional[str]
+ sex: Optional[str]
+ birthday: Optional[str]
+ alma: Optional[str]
+ hometown: Optional[str]
+ grad_y: Optional[str]
+ drday_y: Optional[str]
+ estab_y: Optional[str]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace.py b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace.py
new file mode 100644
index 00000000..c8f555cc
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace.py
@@ -0,0 +1,15 @@
+from typing import Optional
+from datetime import date
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcDoctorWrkplaceDBModel(BaseDBModel):
+ dcf_dsf_inst_cd: Optional[str]
+ inst_name_kanji: Optional[str]
+ blng_sec_name: Optional[str]
+ univ_post_name: Optional[str]
+ post_name: Optional[str]
+ aply_start_ymd: Optional[date]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_his.py b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_his.py
new file mode 100644
index 00000000..3fe3de38
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_doctor_wrkplace_his.py
@@ -0,0 +1,16 @@
+from typing import Optional
+from datetime import date
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcDoctorWrkplaceHisDBModel(BaseDBModel):
+ dcf_dsf_inst_cd: Optional[str]
+ inst_name_kanji: Optional[str]
+ blng_sec_name: Optional[str]
+ univ_post_name: Optional[str]
+ post_name: Optional[str]
+ aply_start_ymd: Optional[date]
+ aply_end_ymd: Optional[date]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_sosiety.py b/ecs/jskult-webapp/src/model/db/ultmarc_sosiety.py
new file mode 100644
index 00000000..ab76e4db
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_sosiety.py
@@ -0,0 +1,10 @@
+from typing import Optional
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcSosietyDBModel(BaseDBModel):
+ sosiety_cd: Optional[str]
+ sosiety_name: Optional[str]
diff --git a/ecs/jskult-webapp/src/model/db/ultmarc_specialist_license.py b/ecs/jskult-webapp/src/model/db/ultmarc_specialist_license.py
new file mode 100644
index 00000000..8cccb4eb
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_specialist_license.py
@@ -0,0 +1,10 @@
+from typing import Optional
+
+from src.model.db.base_db_model import BaseDBModel
+from src.util.sanitize import sanitize
+
+
+@sanitize
+class UltmarcSpecialistLicenseDBModel(BaseDBModel):
+ specialist_cd: Optional[str]
+ specialist_license_name: 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
new file mode 100644
index 00000000..23908fce
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/db/ultmarc_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 UltmarcTrtCoursedbmodel(BaseDBModel):
+ trt_course_name: Optional[str]
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
new file mode 100644
index 00000000..1cfbcf5f
--- /dev/null
+++ b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_info_view_model.py
@@ -0,0 +1,97 @@
+import json
+from collections import OrderedDict
+from datetime import datetime
+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_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
+
+
+class UltmarcDoctorInfoViewModel(BaseModel):
+ subtitle: str = '医師情報'
+ is_batch_processing: Optional[bool]
+ doctor_info_data: Optional[UltmarcDoctorInfoDBModel]
+ trt_coursed_data: Optional[list[UltmarcTrtCoursedbmodel]]
+ sosiety_data: Optional[list[UltmarcSosietyDBModel]]
+ specialist_license_data: Optional[list[UltmarcSpecialistLicenseDBModel]]
+ doctor_wrkplace_data: Optional[list[UltmarcDoctorWrkplaceDBModel]]
+ doctor_wrkplace_his_data: Optional[list[UltmarcDoctorWrkplaceHisDBModel]]
+
+ 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 ''
+
+ # 氏名(漢字)
+ 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_input_birthday_fromat(self):
+ return self._format_date_string(self.doctor_info_data.birthday)
+
+ 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 ''
+
+ 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.BIO_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')
+
+ 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 f9293893..60f1543d 100644
--- a/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_doctor_repository.py
@@ -2,6 +2,7 @@ from src.db import sql_condition as condition
from src.db.sql_condition import SQLCondition
from src.model.db.ultmarc_doctor import UltmarcDoctorDBModel
from src.model.request.ultmarc_doctor import UltmarcDoctorModel
+from src.model.db.ultmarc_doctor_info import UltmarcDoctorInfoDBModel
from src.repositories.base_repository import BaseRepository
from src.util.string_util import is_not_empty
@@ -15,7 +16,7 @@ class UltmarcDoctorRepository(BaseRepository):
com_inst.form_inst_name_kanji,
com_inst.dcf_dsf_inst_cd,
com_blng_sec.blng_sec_name,
- com_trt_course.trt_course_name,
+ GROUP_CONCAT(com_trt_course.trt_course_name separator ' / ') AS trt_course_name,
com_post.form_post_name,
com_alma.alma,
com_dr.grad_y,
@@ -33,6 +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
ORDER BY
com_dr.dcf_pcf_dr_cd,
com_dr_wrkplace.dcf_dsf_inst_cd,
@@ -128,3 +130,38 @@ class UltmarcDoctorRepository(BaseRepository):
where_clauses_str = ' AND '.join([condition.apply() for condition in where_clauses])
return where_clauses_str
+
+ FETCH_ONE_SQL = """\
+ SELECT
+ com_dr.dcf_pcf_dr_cd,
+ com_dr.dr_name,
+ com_dr.dr_name_kana,
+ com_sex.sex,
+ com_dr.birthday,
+ com_alma.alma,
+ com_hometown.hometown,
+ com_dr.grad_y,
+ com_dr.drday_y,
+ com_dr.estab_y
+ FROM src05.com_dr
+ LEFT JOIN src05.com_sex ON com_dr.sex_cd = com_sex.sex_cd
+ LEFT JOIN src05.com_alma ON com_dr.alma_cd = com_alma.alma_cd
+ LEFT JOIN src05.com_hometown ON com_dr.hometown_cd = com_hometown.hometown_cd
+ WHERE dcf_pcf_dr_cd = :id
+ """
+
+ def fetch_one(self, id) -> UltmarcDoctorInfoDBModel:
+ try:
+ self._database.connect()
+ query = self.FETCH_ONE_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcDoctorInfoDBModel(**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_dr_wrkplace_his_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py
new file mode 100644
index 00000000..14f0de45
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_his_repository.py
@@ -0,0 +1,39 @@
+from src.model.db.ultmarc_doctor_wrkplace_his import UltmarcDoctorWrkplaceHisDBModel
+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
+ WHERE com_dr.dcf_pcf_dr_cd = :id
+ ORDER BY com_dr_wrkplace.aply_start_ymd DESC
+ """
+
+ def fetch_many(self, id) -> list[UltmarcDoctorWrkplaceHisDBModel]:
+ try:
+ self._database.connect()
+ query = self.FETCH_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcDoctorWrkplaceHisDBModel(**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_dr_wrkplace_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py
new file mode 100644
index 00000000..fd1295d7
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_dr_wrkplace_repository.py
@@ -0,0 +1,39 @@
+from src.model.db.ultmarc_doctor_wrkplace import UltmarcDoctorWrkplaceDBModel
+from src.repositories.base_repository import BaseRepository
+
+
+class UltmarcDoctorWrkplaceRepository(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
+ WHERE com_dr.dcf_pcf_dr_cd = :id
+ ORDER BY com_dr_wrkplace.aply_start_ymd DESC
+ """
+
+ def fetch_many(self, id) -> list[UltmarcDoctorWrkplaceDBModel]:
+ try:
+ self._database.connect()
+ query = self.FETCH_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcDoctorWrkplaceDBModel(**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_sosiety_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_sosiety_repository.py
new file mode 100644
index 00000000..e3c9ac13
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_sosiety_repository.py
@@ -0,0 +1,30 @@
+from src.model.db.ultmarc_sosiety import UltmarcSosietyDBModel
+from src.repositories.base_repository import BaseRepository
+
+
+class UltmarcSosietyRepository(BaseRepository):
+
+ FETCH_SQL = """\
+ SELECT com_sosiety.sosiety_cd, com_sosiety.sosiety_name
+ FROM src05.com_dr
+ LEFT JOIN src05.com_dr_sosiety ON com_dr.dcf_pcf_dr_cd = com_dr_sosiety.dcf_pcf_dr_cd
+ LEFT JOIN src05.com_sosiety ON com_dr_sosiety.sosiety_cd = com_sosiety.sosiety_cd
+ WHERE com_dr.dcf_pcf_dr_cd = :id
+ ORDER BY com_sosiety.sosiety_cd
+ """
+
+ def fetch_many(self, id) -> list[UltmarcSosietyDBModel]:
+ try:
+ self._database.connect()
+ query = self.FETCH_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcSosietyDBModel(**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_specialist_license_repository.py b/ecs/jskult-webapp/src/repositories/ultmarc_specialist_license_repository.py
new file mode 100644
index 00000000..35632081
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_specialist_license_repository.py
@@ -0,0 +1,31 @@
+from src.model.db.ultmarc_specialist_license import UltmarcSpecialistLicenseDBModel
+from src.repositories.base_repository import BaseRepository
+
+
+class UltmarcSpecialistLicenseRepository(BaseRepository):
+
+ FETCH_SQL = """\
+ SELECT
+ com_specialist_license.specialist_cd, com_specialist_license.specialist_license_name
+ FROM src05.com_dr
+ LEFT JOIN src05.com_sp_field ON com_dr.dcf_pcf_dr_cd = com_sp_field.dcf_pcf_dr_cd
+ LEFT JOIN src05.com_specialist_license ON com_sp_field.specialist_cd = com_specialist_license.specialist_cd
+ WHERE com_dr.dcf_pcf_dr_cd = :id
+ ORDER BY com_specialist_license.specialist_cd
+ """
+
+ def fetch_many(self, id) -> UltmarcSpecialistLicenseDBModel:
+ try:
+ self._database.connect()
+ query = self.FETCH_SQL
+ result = self._database.execute_select(query, {'id': id})
+ models = [UltmarcSpecialistLicenseDBModel(**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
new file mode 100644
index 00000000..f50fc02a
--- /dev/null
+++ b/ecs/jskult-webapp/src/repositories/ultmarc_trt_course_repository.py
@@ -0,0 +1,31 @@
+from src.model.db.ultmarc_trt_course import UltmarcTrtCoursedbmodel
+from src.repositories.base_repository import BaseRepository
+
+
+class UltmarcTrtCourseRepository(BaseRepository):
+
+ FETCH_SQL = """\
+ SELECT trt_course_name
+ FROM src05.com_dr
+ LEFT JOIN src05.com_dr_trt_course ON com_dr.dcf_pcf_dr_cd = com_dr_trt_course.dcf_pcf_dr_cd
+ LEFT JOIN src05.com_trt_course ON com_dr_trt_course.trt_course_cd = com_trt_course.trt_course_cd
+ WHERE com_dr.dcf_pcf_dr_cd = :id
+ ORDER BY com_trt_course.trt_course_cd
+ """
+
+ 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]
+ 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/services/ultmarc_view_service.py b/ecs/jskult-webapp/src/services/ultmarc_view_service.py
index 140863e7..1b207c5e 100644
--- a/ecs/jskult-webapp/src/services/ultmarc_view_service.py
+++ b/ecs/jskult-webapp/src/services/ultmarc_view_service.py
@@ -9,9 +9,15 @@ 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.ultmarc_doctor_view_model import UltmarcDoctorViewModel
+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
from src.repositories.ultmarc_doctor_repository import UltmarcDoctorRepository
+from src.repositories.ultmarc_trt_course_repository import UltmarcTrtCourseRepository
+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
+from src.repositories.ultmarc_specialist_license_repository import UltmarcSpecialistLicenseRepository
from src.services.base_service import BaseService
from src.system_var import constants, environment
@@ -19,16 +25,31 @@ from src.system_var import constants, environment
class UltmarcViewService(BaseService):
REPOSITORIES = {
'ultmarc_doctor_repository': UltmarcDoctorRepository,
- 'prefc_repository': PrefcMasterRepository
+ 'prefc_repository': PrefcMasterRepository,
+ 'ultmarc_trt_course_repository': UltmarcTrtCourseRepository,
+ 'ultmarc_sosiety_repository': UltmarcSosietyRepository,
+ 'ultmarc_doctor_wrkplace_repository': UltmarcDoctorWrkplaceRepository,
+ 'ultmarc_doctor_wrkplace_his_repository': UltmarcDoctorWrkplaceHisRepository,
+ 'ultmarc_specialist_license_repository': UltmarcSpecialistLicenseRepository
}
ultmarc_doctor_repository: UltmarcDoctorRepository
prefc_repository: PrefcMasterRepository
+ ultmarc_trt_course_repository: UltmarcTrtCourseRepository
+ ultmarc_sosiety_repository: UltmarcSosietyRepository
+ ultmarc_doctor_wrkplace_repository: UltmarcDoctorWrkplaceRepository
+ ultmarc_doctor_wrkplace_his_repository: UltmarcDoctorWrkplaceHisRepository
+ ultmarc_specialist_license_repository: UltmarcSpecialistLicenseRepository
def __init__(self, repositories: dict[str, BaseRepository], clients: dict[str, AWSAPIClient]) -> None:
super().__init__(repositories, clients)
self.ultmarc_doctor_repository = repositories['ultmarc_doctor_repository']
self.prefc_repository = repositories['prefc_repository']
+ self.ultmarc_trt_course_repository = repositories['ultmarc_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']
+ self.ultmarc_specialist_license_repository = repositories['ultmarc_specialist_license_repository']
def prepare_ultmarc_doctor_view(
self,
@@ -46,3 +67,33 @@ class UltmarcViewService(BaseService):
# 医師データを検索
ultmarc_doctor_data = self.ultmarc_doctor_repository.fetch_many(parameter=search_params)
return ultmarc_doctor_data
+
+ def info_ultmarc_doctor_view(
+ self,
+ id,
+ session: UserSession
+ ) -> UltmarcDoctorInfoViewModel:
+
+ # 医師情報画面の表示データ取得
+ # 医師情報を取得
+ doctor_info = self.ultmarc_doctor_repository.fetch_one(id)
+ # 診療科目情報を取得
+ trt_course = self.ultmarc_trt_course_repository.fetch_many(id)
+ # 所属学会情報を取得
+ sosiety = self.ultmarc_sosiety_repository.fetch_many(id)
+ # 所属学会専門医情報を取得
+ specialist_license = self.ultmarc_specialist_license_repository.fetch_many(id)
+ # 勤務先情報を取得
+ wrkplace = self.ultmarc_doctor_wrkplace_repository.fetch_many(id)
+ # 勤務先履歴情報を取得
+ wrkplace_his = self.ultmarc_doctor_wrkplace_his_repository.fetch_many(id)
+
+ ultmarc = UltmarcDoctorInfoViewModel(
+ doctor_info_data=doctor_info,
+ trt_coursed_data=trt_course,
+ sosiety_data=sosiety,
+ specialist_license_data=specialist_license,
+ doctor_wrkplace_data=wrkplace,
+ doctor_wrkplace_his_data=wrkplace_his
+ )
+ return ultmarc
diff --git a/ecs/jskult-webapp/src/templates/docInfo.html b/ecs/jskult-webapp/src/templates/docInfo.html
new file mode 100644
index 00000000..e9214447
--- /dev/null
+++ b/ecs/jskult-webapp/src/templates/docInfo.html
@@ -0,0 +1,486 @@
+
+
+
+ {% with subtitle = ultmarc.subtitle %}
+ {% include '_header.html' %}
+ {% endwith %}
+ 医師情報
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 所属学会
+
+ |
+
+ 所属学会専門医
+
+ |
+
+
+
+
+ 勤務先履歴
+
+
+
+
+
\ No newline at end of file
diff --git a/ecs/jskult-webapp/src/templates/docSearch.html b/ecs/jskult-webapp/src/templates/docSearch.html
index 475578fa..2168aa3e 100644
--- a/ecs/jskult-webapp/src/templates/docSearch.html
+++ b/ecs/jskult-webapp/src/templates/docSearch.html
@@ -20,19 +20,17 @@
-
-
-
+