From da772336ee1ee2c881f812354768eeffcc4ca738 Mon Sep 17 00:00:00 2001 From: Miwory Date: Tue, 30 Sep 2025 10:53:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=8D=D0=BD=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=20get?= =?UTF-8?q?HospExaminations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/users/v1/router.py | 11 ++++++++ src/clients/vitacore/api.py | 13 ++++++++++ src/clients/vitacore/schema.py | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/src/apps/users/v1/router.py b/src/apps/users/v1/router.py index aa025dd..fd49aa3 100644 --- a/src/apps/users/v1/router.py +++ b/src/apps/users/v1/router.py @@ -93,6 +93,17 @@ async def get_routes_list(): ) +@router.get('/getHospExaminations') +async def get_hosp_examinations(): + """ + Get list of hospital examinations. + """ + return await c.vitacore_api.getHospExaminations( + '7bbdac30-9a33-4f13-9458-2c229c0c20f5', + 'f22be2c9-8e68-42d6-851e-fbf4a5e8f657', + ) + + @router.post('/measurement', status_code=status.HTTP_202_ACCEPTED) async def measurement( user: Annotated[str, Depends(login)], diff --git a/src/clients/vitacore/api.py b/src/clients/vitacore/api.py index 3b99d9a..a2355d1 100644 --- a/src/clients/vitacore/api.py +++ b/src/clients/vitacore/api.py @@ -100,3 +100,16 @@ class VITACORE_API(AsyncClient): case _: self.logger.error(req.json()) raise e.UnknownException + + async def getHospExaminations(self, patId: str, examId: str): + req = await self.get( + '/getHospExaminations', + params={'patId': patId, 'examId': examId}, + ) + + match req.status_code: + case st.HTTP_200_OK: + return s.HospExaminationsModel.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 9f58aa9..206f117 100644 --- a/src/clients/vitacore/schema.py +++ b/src/clients/vitacore/schema.py @@ -333,3 +333,50 @@ class RoutesListModel(BaseModel): ) LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"']) Routes: list[RouteModel] = Field(title='Список направлений') + + +class SEMDModel(BaseModel): + SEMDContent: str = Field( + title='СЭМД (XML сжатый методом шифрования Base64)', + examples=['77u/PD94bWwgdmVyc2lvbj0iMS...'], + ) + + +class ExaminationModel(BaseModel): + ExaminationId: str = Field( + title='Идентификатор осмотра', + examples=['f22be2c9-8e68-42d6-851e-fbf4a5e8f657'], + ) + DateTime: str = Field( + title='Дата и время создания', examples=['01.08.2025 15:47:15'] + ) + Resource: str = Field( + title='Врач', examples=['Абдуллина Ирина Владимировна'] + ) + Speciality: str = Field( + title='Специальность врача', examples=['Акушер-гинеколог'] + ) + ExaminationText: str = Field( + title='Текст осмотра', + examples=[ + '