348 lines
12 KiB
Python
348 lines
12 KiB
Python
from typing import Optional
|
||
|
||
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_inst import (UltmarcInstInfoModel,
|
||
UltmarcInstSearchModel)
|
||
from src.router.session_router import AuthenticatedRoute
|
||
from src.services.batch_status_service import BatchStatusService
|
||
from src.services.session_service import set_session
|
||
from src.services.ultmarc_view_service import UltmarcViewService
|
||
from src.templates import templates
|
||
|
||
router = APIRouter()
|
||
router.route_class = AuthenticatedRoute
|
||
|
||
#########################
|
||
# Views #
|
||
#########################
|
||
|
||
#########################
|
||
# アルトマーク施設検索 #
|
||
#########################
|
||
|
||
|
||
@router.get('/instSearch')
|
||
def ultmarc_inst_view(
|
||
request: Request,
|
||
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.prepare_ultmarc_inst_search_view()
|
||
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(
|
||
'instSearch.html', {
|
||
'request': request,
|
||
'ultmarc': ultmarc,
|
||
},
|
||
headers={'session_key': session_key}
|
||
)
|
||
return templates_response
|
||
|
||
|
||
@router.post('/instSearch')
|
||
def search_inst(
|
||
request: Request,
|
||
ultmarc_inst_form: Optional[UltmarcInstSearchModel] = Depends(UltmarcInstSearchModel.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()
|
||
|
||
# 施設データを検索
|
||
ultmarc_inst_data = ultmarc_service.search_inst_data(ultmarc_inst_form)
|
||
|
||
# 検索項目の取得(都道府県・施設区分)
|
||
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.unescape()
|
||
|
||
# セッション書き換え
|
||
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(
|
||
'instSearch.html', {
|
||
'request': request,
|
||
'ultmarc': ultmarc,
|
||
},
|
||
headers={'session_key': session_key}
|
||
)
|
||
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.prepare_ultmarc_inst_info_view(id)
|
||
# バッチ起動判定
|
||
ultmarc.is_batch_processing = is_batch_processing
|
||
# inst_id
|
||
ultmarc.inst_id = id
|
||
# ページ総数(件数)
|
||
ultmarc.post_cnt = 1
|
||
# ページ数(表示するページNo)
|
||
ultmarc.page_num = 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()
|
||
|
||
inst_id = ultmarc_inst_form.inst_id.split(',')
|
||
|
||
# 施設情報の取得
|
||
ultmarc = ultmarc_service.prepare_ultmarc_inst_info_view(inst_id[ultmarc_inst_form.page_num])
|
||
|
||
# バッチ起動判定の取得
|
||
ultmarc.is_batch_processing = is_batch_processing
|
||
# inst_id
|
||
ultmarc.inst_id = ultmarc_inst_form.inst_id
|
||
# ページ総数(件数)
|
||
ultmarc.post_cnt = len(inst_id)
|
||
# ページ数(表示するページNo)
|
||
ultmarc.page_num = ultmarc_inst_form.page_num
|
||
|
||
# セッション書き換え
|
||
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,
|
||
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.prepare_ultmarc_doctor_search_view()
|
||
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(
|
||
'docSearch.html', {
|
||
'request': request,
|
||
'ultmarc': ultmarc,
|
||
},
|
||
headers={'session_key': session_key}
|
||
)
|
||
return templates_response
|
||
|
||
|
||
@router.post('/docSearch')
|
||
def search_doc(
|
||
request: Request,
|
||
ultmarc_doctor_form: Optional[UltmarcDoctorSearchModel] = Depends(UltmarcDoctorSearchModel.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()
|
||
|
||
# 医師データを検索
|
||
ultmarc_doctor_data = ultmarc_service.search_doctor_data(ultmarc_doctor_form)
|
||
|
||
# 検索項目などのデータを取得
|
||
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.unescape()
|
||
|
||
# セッション書き換え
|
||
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(
|
||
'docSearch.html', {
|
||
'request': request,
|
||
'ultmarc': ultmarc,
|
||
},
|
||
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()
|
||
|
||
# 医師情報の取得
|
||
ultmarc = ultmarc_service.prepare_ultmarc_doctor_info_view(id)
|
||
# バッチ起動判定の取得
|
||
ultmarc.is_batch_processing = is_batch_processing
|
||
# doc_id
|
||
ultmarc.doc_id = id
|
||
# ページ総数(件数)
|
||
ultmarc.post_cnt = 1
|
||
# ページ数(表示するページNo)
|
||
ultmarc.page_num = 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(
|
||
'docInfo.html', {
|
||
'request': request,
|
||
'ultmarc': ultmarc,
|
||
},
|
||
headers={'session_key': session_key}
|
||
)
|
||
return templates_response
|
||
|
||
|
||
@router.post('/docInfo')
|
||
def ultmarc_doctor_info_search(
|
||
request: Request,
|
||
ultmarc_doctor_form: Optional[UltmarcDoctorInfoModel] = Depends(UltmarcDoctorInfoModel.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()
|
||
|
||
doc_id = ultmarc_doctor_form.doc_id.split(',')
|
||
|
||
# 医師情報の取得
|
||
ultmarc = ultmarc_service.prepare_ultmarc_doctor_info_view(doc_id[ultmarc_doctor_form.page_num])
|
||
# バッチ起動判定の取得
|
||
ultmarc.is_batch_processing = is_batch_processing
|
||
# doc_id
|
||
ultmarc.doc_id = ultmarc_doctor_form.doc_id
|
||
# ページ総数(件数)
|
||
ultmarc.post_cnt = len(doc_id)
|
||
# ページ数(表示するページNo)
|
||
ultmarc.page_num = ultmarc_doctor_form.page_num
|
||
|
||
# セッション書き換え
|
||
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
|