diff --git a/src/apps/users/v1/router.py b/src/apps/users/v1/router.py index 92e18f9..6c3a54b 100644 --- a/src/apps/users/v1/router.py +++ b/src/apps/users/v1/router.py @@ -207,8 +207,9 @@ async def measurement( serial_number: Annotated[str, Body()], ekg: UploadFile, ): - # patient = await c.tdn_api.patient_search(tdn_access_token, user.vita_id) - patientUid = 'e5708e5a-62e0-4318-a510-7860a31d92d9' + vitaId = '109df850-2268-49fb-bb78-2e0f3c57314d' + patient = await c.tdn_api.patient_search(tdn_access_token, vitaId) + patientUid = patient['items'][0]['uid'] observations = await c.tdn_api.observations_search( tdn_access_token, patientUid ) diff --git a/src/apps/vitacore/__init__.py b/src/apps/vitacore/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/apps/vitacore/v1/__init__.py b/src/apps/vitacore/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/clients/vitacore/api.py b/src/clients/vitacore/api.py index debe865..7afa6f0 100644 --- a/src/clients/vitacore/api.py +++ b/src/clients/vitacore/api.py @@ -143,7 +143,7 @@ class VITACORE_API(AsyncClient): match req.status_code: case st.HTTP_200_OK: - return s.WorkersModel.model_validate(req.json()['workers']) + return s.WorkersModel.model_validate(req.json()) case _: self.logger.error(req.json()) raise e.UnknownException @@ -163,7 +163,9 @@ class VITACORE_API(AsyncClient): async def getEntries(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + req = await self.get( '/getEntries', params={'patId': patId}, @@ -185,7 +187,8 @@ class VITACORE_API(AsyncClient): async def getVaccsReport(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getVaccsReport', params={'patId': patId}, @@ -219,7 +222,8 @@ class VITACORE_API(AsyncClient): async def getRoutesList(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getRoutesList', params={'patId': patId}, @@ -246,7 +250,8 @@ class VITACORE_API(AsyncClient): raise e.UnknownException async def getHospExaminations(self, patId: str, examId: str | None = None): - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' token = await self.get_token() req = await self.get( '/getHospExaminations', @@ -275,7 +280,8 @@ class VITACORE_API(AsyncClient): async def getCurrHosp(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getCurrHosp', params={'patId': patId}, @@ -300,7 +306,8 @@ class VITACORE_API(AsyncClient): async def getHosps(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getHosps', params={'patId': patId}, @@ -328,7 +335,8 @@ class VITACORE_API(AsyncClient): async def getHospRecommendations(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getHospRecommendations', params={'patId': patId}, @@ -358,7 +366,8 @@ class VITACORE_API(AsyncClient): async def getHospRoutes(self, patId: str): token = await self.get_token() - # patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' + if patId == 'a72d18cf-c152-4b9e-b8be-313234b87400': + patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e' req = await self.get( '/getHospRoutes', params={'patId': patId}, diff --git a/src/clients/vitacore/schema.py b/src/clients/vitacore/schema.py index b2cc0a7..35dc413 100644 --- a/src/clients/vitacore/schema.py +++ b/src/clients/vitacore/schema.py @@ -1,6 +1,6 @@ from datetime import datetime -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator class ErrorModel(BaseModel): @@ -180,21 +180,30 @@ class WorkersPositionModel(BaseModel): title='ФРМР. Должности медицинского персонала', examples=['врач-онколог'], ) - positionSpecialityCode: str = Field( + positionSpecialityCode: str | None = Field( title='Код специальности по V021', examples=['41'], + default=None, ) - positionSpecialityName: str = Field( + positionSpecialityName: str | None = Field( title='Наименование специальности по V021', examples=['Онкология'], + default=None, ) rate: float = Field( title='Ставка', examples=[0.5], ) + @field_validator('rate', mode='before') + def convert_comma(cls, v: str | float): + if isinstance(v, str): + return v.replace(',', '.') -class WorkersModel(BaseModel): + return v + + +class WorkerModel(BaseModel): id: str = Field( title='Идентификатор сотрудника', examples=['dc911302-5044-46f4-b935-c6ffd85eb68f'], @@ -210,6 +219,10 @@ class WorkersModel(BaseModel): positions: list[WorkersPositionModel] +class WorkersModel(BaseModel): + Workers: list[WorkerModel] + + class SpecialityV021Model(BaseModel): SpecialityID: str = Field( title='Код спциальности по справочнику V021', examples=['1']