175 lines
4.4 KiB
Python
175 lines
4.4 KiB
Python
from datetime import datetime
|
||
from json import dumps
|
||
from logging import getLogger
|
||
from typing import Annotated
|
||
|
||
from fastapi import APIRouter, Body, Depends, status
|
||
|
||
from apps.users.auth import login
|
||
from clients import clients as c
|
||
from clients.vitacore import schema as s
|
||
from shared.redis import client as cache
|
||
|
||
from . import mock
|
||
|
||
logger = getLogger(__name__)
|
||
router = APIRouter(
|
||
prefix='/user',
|
||
tags=[
|
||
'User',
|
||
],
|
||
)
|
||
|
||
|
||
@router.get('/getProfile', response_model=s.ProfileModel)
|
||
async def get_profile():
|
||
"""
|
||
Get profile of user by id.
|
||
"""
|
||
return await c.vitacore_api.getProfile(
|
||
'b62e9f22-a871-4c52-96d6-559c707a716d'
|
||
)
|
||
|
||
|
||
@router.get('/getDepartments', response_model=list[s.DepartmentModel])
|
||
async def get_departments():
|
||
"""
|
||
Get list of departments.
|
||
"""
|
||
return await c.vitacore_api.getDepartments()
|
||
|
||
|
||
@router.get('/getWorkers', response_model=s.WorkersModel)
|
||
async def get_workers(departmentId: str):
|
||
"""
|
||
Get list of workers by department id.
|
||
"""
|
||
return await c.vitacore_api.getWorkers(departmentId)
|
||
|
||
|
||
@router.get('/getSpecs', response_model=s.SpecsV021Model)
|
||
async def get_specs():
|
||
"""
|
||
Get list of specialties.
|
||
"""
|
||
return await c.vitacore_api.getSpecsV021()
|
||
|
||
|
||
@router.post('/measurement', status_code=status.HTTP_202_ACCEPTED)
|
||
async def measurement(
|
||
user: Annotated[str, Depends(login)],
|
||
ad: Annotated[int, Body()],
|
||
sd: Annotated[int, Body()],
|
||
pulse: Annotated[int, Body()],
|
||
created_at: Annotated[datetime, Body()],
|
||
comment: Annotated[str, Body()],
|
||
status: Annotated[str, Body()],
|
||
):
|
||
created = created_at.strftime('%Y-%m-%d %H:%M:%S')
|
||
data = {
|
||
'ad': ad,
|
||
'sd': sd,
|
||
'pulse': pulse,
|
||
'created_at': created,
|
||
'comment': comment,
|
||
'status': status,
|
||
}
|
||
cache_key = f'tdn:measurement:{user}:{created}'
|
||
cache.set(cache_key, dumps(data))
|
||
return
|
||
|
||
|
||
@router.get('/measurements')
|
||
async def measurements(
|
||
user: Annotated[str, Depends(login)],
|
||
):
|
||
data = [cache.get(key) for key in cache.keys(f'tdn:measurement:{user}:*')]
|
||
return data
|
||
|
||
|
||
@router.get('/queue')
|
||
async def queue(user: Annotated[bool, Depends(login)]):
|
||
return {
|
||
'id': 60,
|
||
'guid': '92b3343d-1cb2-47b2-8497-a37e38b6ba24',
|
||
'tmk_date': None,
|
||
'created_at': '2025-04-02 15:21:19.890343',
|
||
'code_mo': '166502',
|
||
'mo_name': 'ГАУЗ "ГКБ№7 ИМ. М.Н.САДЫКОВА"',
|
||
'doctor_spec': '109',
|
||
'doctor_snils': None,
|
||
'patient_name': 'Иванов Петр Федорович',
|
||
'patient_birthday': '1997-03-01',
|
||
'patient_snils': '099-678-666 12',
|
||
'patient_policy': None,
|
||
'patient_phone': '+79123456789',
|
||
'patient_email': None,
|
||
'tmk_status': 1,
|
||
'tmk_status_name': 'Создана',
|
||
'tmk_cancel_reason': None,
|
||
'tmk_cancel_reason_name': None,
|
||
'vks_doctor_link': None,
|
||
'vks_patient_link': None,
|
||
'doctor_spec_name': 'врач-терапевт',
|
||
}
|
||
|
||
|
||
@router.get('/findPat')
|
||
async def find_pat(user: Annotated[str, Depends(login)]):
|
||
return mock.findpat[0]
|
||
|
||
|
||
@router.get('/getHosps')
|
||
async def get_hosps():
|
||
return mock.hosps
|
||
|
||
|
||
@router.get('/getELNS')
|
||
async def get_elns(user: Annotated[str, Depends(login)]):
|
||
return mock.elns[0]
|
||
|
||
|
||
@router.get('/getVaccsReport')
|
||
async def get_vaccs_report(user: Annotated[str, Depends(login)]):
|
||
return mock.vacs[0]
|
||
|
||
|
||
@router.get('/getDiagnosticResults')
|
||
async def get_diagnostic_results(user: Annotated[str, Depends(login)]):
|
||
return mock.diagnosticResults
|
||
|
||
|
||
@router.get('/getCurrHosp')
|
||
async def get_curr_hosp(user: Annotated[str, Depends(login)]):
|
||
return mock.currHosp[0]
|
||
|
||
|
||
@router.get('/getPatFLG')
|
||
async def get_pat_flg(user: Annotated[str, Depends(login)]):
|
||
return mock.patFLG[0]
|
||
|
||
|
||
@router.get('/getEntries')
|
||
async def get_entries(user: Annotated[str, Depends(login)]):
|
||
return mock.entries[0]
|
||
|
||
|
||
@router.get('/getRoutesList')
|
||
async def get_routes_list(user: Annotated[str, Depends(login)]):
|
||
return mock.routesList[0]
|
||
|
||
|
||
@router.get('/getMedExamDict')
|
||
async def get_med_exam_dict(user: Annotated[str, Depends(login)]):
|
||
return mock.medexamDict
|
||
|
||
|
||
@router.get('/getHospRecommendations')
|
||
async def get_hosp_recommendations(user: Annotated[str, Depends(login)]):
|
||
return mock.hospRecommendations
|
||
|
||
|
||
@router.get('/getHospRoutes')
|
||
async def get_hosp_routes(user: Annotated[str, Depends(login)]):
|
||
return mock.hospRoutes
|