diff --git a/src/apps/users/v1/router.py b/src/apps/users/v1/router.py index 495670c..aa025dd 100644 --- a/src/apps/users/v1/router.py +++ b/src/apps/users/v1/router.py @@ -83,6 +83,16 @@ async def get_med_exam_dict(): return await c.vitacore_api.getMedExamDict() +@router.get('/getRoutesList') +async def get_routes_list(): + """ + Get list of routes. + """ + return await c.vitacore_api.getRoutesList( + '4e6de5f7-4dc9-451b-bf0d-7a64a9b8c279' + ) + + @router.post('/measurement', status_code=status.HTTP_202_ACCEPTED) async def measurement( user: Annotated[str, Depends(login)], @@ -172,11 +182,6 @@ async def get_pat_flg(user: Annotated[str, Depends(login)]): return mock.patFLG[0] -@router.get('/getRoutesList') -async def get_routes_list(user: Annotated[str, Depends(login)]): - return mock.routesList[0] - - @router.get('/getHospRecommendations') async def get_hosp_recommendations(user: Annotated[str, Depends(login)]): return mock.hospRecommendations diff --git a/src/clients/vitacore/api.py b/src/clients/vitacore/api.py index 0db9a2c..3b99d9a 100644 --- a/src/clients/vitacore/api.py +++ b/src/clients/vitacore/api.py @@ -90,3 +90,13 @@ class VITACORE_API(AsyncClient): case _: self.logger.error(req.json()) raise e.UnknownException + + async def getRoutesList(self, patId: str): + req = await self.get('/getRoutesList', params={'patId': patId}) + + match req.status_code: + case st.HTTP_200_OK: + return s.RoutesListModel.model_validate(req.json()) + case _: + self.logger.error(req.json()) + raise e.UnknownException diff --git a/src/clients/vitacore/schema.py b/src/clients/vitacore/schema.py index 9c289db..9f58aa9 100644 --- a/src/clients/vitacore/schema.py +++ b/src/clients/vitacore/schema.py @@ -278,3 +278,58 @@ class MedExamTypeModel(BaseModel): class MedExamDictModel(BaseModel): MedExamTypes: list[MedExamTypeModel] + + +class ResultModel(BaseModel): + Resource: str = Field(title='Врач', examples=['Изотова Г.М.']) + ExaminationId: str = Field( + title='Идентификатор осмотра', + examples=['4d8550e6-7ad8-46f7-b874-9b20c673d168'], + ) + DiagResultId: str = Field( + title='Идентификатор результата исследования', + examples=['77312a5f-0498-4656-8215-9cf151ec2a9b'], + ) + + +class RouteModel(BaseModel): + Type: str = Field( + title='Тип', + examples=['ROUTE_TO_DOCTOR_INSPECTION', 'ROUTE_TO_DIAGNOSTICS'], + ) + CreationDateTime: datetime = Field( + title='Дата и время создания', examples=['2025-03-24 14:49'] + ) + Name: str = Field( + title='Наименование услуги / специальности', + examples=['Кардиолог [1259]', 'Общий анализ крови [B03.016.002]'], + ) + EntryPlace: str | None = Field( + title='Кабинет приёма', + examples=['Каб.№211 Шайдуллина Г.И. (Кардиолог)', None], + default=None, + ) + EntryResName: str | None = Field( + title='ФИО врача или кабинета полностью', + examples=['Каб.№211 Шайдуллина Г.И. (Кардиолог)', None], + default=None, + ) + ResultExits: str = Field(title='Исполнение', examples=['0', '1']) + Result: ResultModel | None = Field( + title='Связка осмотра/услуги с выполнением направления', default=None + ) + LpuName: str | None = Field( + title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'], default=None + ) + + +class RoutesListModel(BaseModel): + EventID: str = Field( + title='Идентификатор случая госпитализации', + examples=['a268e6d7-618c-4b83-97ca-c9dc8b79b55b'], + ) + EventDate: datetime = Field( + title='Дата обращения', examples=['2025-03-17'] + ) + LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"']) + Routes: list[RouteModel] = Field(title='Список направлений')