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