This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from json import dumps
|
from json import dumps
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from typing import Annotated, Any
|
from typing import Annotated
|
||||||
|
|
||||||
from fastapi import APIRouter, Body, Depends, status
|
from fastapi import APIRouter, Body, Depends, status
|
||||||
|
|
||||||
@ -23,11 +23,30 @@ router = APIRouter(
|
|||||||
|
|
||||||
@router.get('/getProfile', response_model=s.ProfileModel)
|
@router.get('/getProfile', response_model=s.ProfileModel)
|
||||||
async def get_profile():
|
async def get_profile():
|
||||||
|
"""
|
||||||
|
Get profile of user by id.
|
||||||
|
"""
|
||||||
return await c.vitacore_api.getProfile(
|
return await c.vitacore_api.getProfile(
|
||||||
'b62e9f22-a871-4c52-96d6-559c707a716d'
|
'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')
|
@router.get('/getSpecs')
|
||||||
async def get_specs():
|
async def get_specs():
|
||||||
return mock.specs
|
return mock.specs
|
||||||
@ -92,12 +111,6 @@ async def queue(user: Annotated[bool, Depends(login)]):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getDepartments')
|
|
||||||
async def get_departments():
|
|
||||||
data: dict[Any, Any] = {}
|
|
||||||
return data
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/findPat')
|
@router.get('/findPat')
|
||||||
async def find_pat(user: Annotated[str, Depends(login)]):
|
async def find_pat(user: Annotated[str, Depends(login)]):
|
||||||
return mock.findpat[0]
|
return mock.findpat[0]
|
||||||
|
|||||||
@ -26,3 +26,27 @@ class VITACORE_API(AsyncClient):
|
|||||||
case _:
|
case _:
|
||||||
self.logger.error(req.json())
|
self.logger.error(req.json())
|
||||||
raise e.UnknownException
|
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
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
@ -62,3 +64,113 @@ class ProfileModel(BaseModel):
|
|||||||
trustedPersons: list[TrustedPersonModel] = Field(
|
trustedPersons: list[TrustedPersonModel] = Field(
|
||||||
title='Информация о представителе',
|
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]
|
||||||
|
|||||||
Reference in New Issue
Block a user