Новые эндпоинты
All checks were successful
Build And Push / publish (push) Successful in 1m34s

This commit is contained in:
2025-09-29 08:30:36 +03:00
parent d15666d0e8
commit aed85d5201
3 changed files with 156 additions and 7 deletions

View File

@ -26,3 +26,27 @@ class VITACORE_API(AsyncClient):
case _:
self.logger.error(req.json())
raise e.UnknownException
async def getDepartments(self):
req = await self.get('/getDepartments')
match req.status_code:
case st.HTTP_200_OK:
return [
s.DepartmentModel.model_validate(i) for i in req.json()
]
case _:
self.logger.error(req.json())
raise e.UnknownException
async def getWorkers(self, departmentId: str):
req = await self.get(
'/getWorkers', params={'departmentId': departmentId}
)
match req.status_code:
case st.HTTP_200_OK:
return s.WorkersModel.model_validate(req.json())
case _:
self.logger.error(req.json())
raise e.UnknownException

View File

@ -1,3 +1,5 @@
from datetime import datetime
from pydantic import BaseModel, Field
@ -62,3 +64,113 @@ class ProfileModel(BaseModel):
trustedPersons: list[TrustedPersonModel] = Field(
title='Информация о представителе',
)
class DepartmentAddressModel(BaseModel):
type: str = Field(
title='для МО: «Юридический», для филиалов «Фактический»',
examples=['«Юридический»'],
)
display: str = Field(
title='Адрес строкой',
examples=['420097, г.Казань, ул.Заслонова, д.5'],
)
latitude: float | None = Field(
title='Широта, при наличии', examples=[55.789], default=None
)
longitude: float | None = Field(
title='Долгота, при наличии', examples=[37.789], default=None
)
class DepartmentModel(BaseModel):
id: str = Field(
title='Идентификатор МО/Филиала',
examples=['a3677271-3385-4f27-a65d-c3430b7c61c2'],
)
OID: str = Field(
title='OID МО / Филиала', examples=['1.2.643.5.1.13.13.12.2.16.1084']
)
parentId: str | None = Field(
title='Идентификатор вышестоящего подразделения',
examples=['a3677271-3385-4f27-a65d-c3430b7c61c2'],
)
code: str = Field(
title='Региональный код или код ТФОМС',
examples=['0000000000'],
)
fullname: str = Field(
title='Полное наименование',
examples=['ГБУЗС "Тестовая медицинская организация"'],
)
shortname: str = Field(
title='Краткое наименование',
examples=['ГБУЗС "Тестовая медицинская организация"'],
)
type: str = Field(
title='Тип подразделения (для МО: «Юридический»'
', для филиалов: Стационар / Поликлиника / ФАП / Амбулатория)',
examples=['Юридическое лицо'],
)
inn: str = Field(title='ИНН', examples=['0000000000'])
kpp: str = Field(title='КПП', examples=['0000000000'])
ogrn: str = Field(title='ОГРН', examples=['1149204047816'])
address: list[DepartmentAddressModel]
class WorkersPositionModel(BaseModel):
id: str = Field(
title='Идентификатор сотрудника в связке с должностью',
examples=['41019'],
)
dateBegin: datetime = Field(
title='Дата приёма на работу', examples=['01.08.2022']
)
departmentId: str = Field(
title='ID ФИЛИАЛА',
examples=['10ea04ca-339a-4867-aab4-d9a83b7e9098'],
)
departmentName: str = Field(
title='Краткое наименование филиала',
examples=['Поликлиника'],
)
positionName: str = Field(
title='Тип должности.Наименование (POST_TYPE)',
examples=['Врач-онколог'],
)
positionFedCode: str = Field(
title='Тип должности.Код (POST_TYPE)',
examples=['3037'],
)
positionRegName: str | None = Field(
title='ФРМР. Должности медицинского персонала',
examples=['врач-онколог'],
)
positionSpecialityCode: str = Field(
title='Код специальности по V021',
examples=['41'],
)
positionSpecialityName: str = Field(
title='Наименование специальности по V021',
examples=['Онкология'],
)
rate: float = Field(
title='Ставка',
examples=[0.5],
)
class WorkersModel(BaseModel):
id: str = Field(
title='Идентификатор сотрудника',
examples=['dc911302-5044-46f4-b935-c6ffd85eb68f'],
)
SNILS: str = Field(
title='СНИЛС',
examples=['059-486-659 26'],
)
firstName: str = Field(title='Имя', examples=['Владимир'])
lastName: str = Field(title='Фамилия', examples=['Камашев'])
middleName: str = Field(title='Отчество', examples=['Михайлович'])
birthDate: datetime = Field(title='Дата рождения', examples=['30.05.1961'])
positions: list[WorkersPositionModel]