This commit is contained in:
@ -10,8 +10,6 @@ from clients import clients as c
|
|||||||
from clients.vitacore import schema as s
|
from clients.vitacore import schema as s
|
||||||
from shared.redis import client as cache
|
from shared.redis import client as cache
|
||||||
|
|
||||||
from . import mock
|
|
||||||
|
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
router = APIRouter(
|
router = APIRouter(
|
||||||
prefix='/user',
|
prefix='/user',
|
||||||
@ -229,8 +227,3 @@ async def queue(user: Annotated[bool, Depends(login)]):
|
|||||||
'vks_patient_link': None,
|
'vks_patient_link': None,
|
||||||
'doctor_spec_name': 'врач-терапевт',
|
'doctor_spec_name': 'врач-терапевт',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@router.get('/findPat')
|
|
||||||
async def find_pat(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.findpat[0]
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class VITACORE_API(AsyncClient):
|
|||||||
|
|
||||||
match req.status_code:
|
match req.status_code:
|
||||||
case st.HTTP_200_OK:
|
case st.HTTP_200_OK:
|
||||||
return s.WorkersModel.model_validate(req.json())
|
return s.WorkersModel.model_validate(req.json()['workers'])
|
||||||
case _:
|
case _:
|
||||||
self.logger.error(req.json())
|
self.logger.error(req.json())
|
||||||
raise e.UnknownException
|
raise e.UnknownException
|
||||||
@ -67,6 +67,12 @@ class VITACORE_API(AsyncClient):
|
|||||||
match req.status_code:
|
match req.status_code:
|
||||||
case st.HTTP_200_OK:
|
case st.HTTP_200_OK:
|
||||||
return s.EntriesModel.model_validate(req.json())
|
return s.EntriesModel.model_validate(req.json())
|
||||||
|
case st.HTTP_206_PARTIAL_CONTENT:
|
||||||
|
error = s.ErrorModel.model_validate(req.json())
|
||||||
|
|
||||||
|
if error.error == 'Не найдены записи по указанному patId':
|
||||||
|
return s.EntriesModel(Entries=[])
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
self.logger.error(req.json())
|
self.logger.error(req.json())
|
||||||
raise e.UnknownException
|
raise e.UnknownException
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
from datetime import datetime
|
from datetime import date, datetime
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
|
class ErrorModel(BaseModel):
|
||||||
|
error: str = Field(title='Текст ошибки')
|
||||||
|
|
||||||
|
|
||||||
class TrustedPersonModel(BaseModel):
|
class TrustedPersonModel(BaseModel):
|
||||||
parentSnils: str = Field(
|
parentSnils: str = Field(
|
||||||
title='СНИЛС представителя', examples=['156-125-394 57']
|
title='СНИЛС представителя', examples=['156-125-394 57']
|
||||||
@ -282,13 +286,15 @@ class MedExamDictModel(BaseModel):
|
|||||||
|
|
||||||
class ResultModel(BaseModel):
|
class ResultModel(BaseModel):
|
||||||
Resource: str = Field(title='Врач', examples=['Изотова Г.М.'])
|
Resource: str = Field(title='Врач', examples=['Изотова Г.М.'])
|
||||||
ExaminationId: str = Field(
|
ExaminationId: str | None = Field(
|
||||||
title='Идентификатор осмотра',
|
title='Идентификатор осмотра',
|
||||||
examples=['4d8550e6-7ad8-46f7-b874-9b20c673d168'],
|
examples=['4d8550e6-7ad8-46f7-b874-9b20c673d168'],
|
||||||
|
default=None,
|
||||||
)
|
)
|
||||||
DiagResultId: str = Field(
|
DiagResultId: str | None = Field(
|
||||||
title='Идентификатор результата исследования',
|
title='Идентификатор результата исследования',
|
||||||
examples=['77312a5f-0498-4656-8215-9cf151ec2a9b'],
|
examples=['77312a5f-0498-4656-8215-9cf151ec2a9b'],
|
||||||
|
default=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -383,9 +389,7 @@ class HospExaminationsModel(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class RouteToDoctorModel(BaseModel):
|
class RouteToDoctorModel(BaseModel):
|
||||||
RouteDate: datetime = Field(
|
RouteDate: date = Field(title='Дата направления', examples=['2025-07-17'])
|
||||||
title='Дата направления', examples=['2025-07-17']
|
|
||||||
)
|
|
||||||
SpecialityCode: str = Field(title='Код специальности', examples=['013'])
|
SpecialityCode: str = Field(title='Код специальности', examples=['013'])
|
||||||
SpecialityName: str = Field(
|
SpecialityName: str = Field(
|
||||||
title='Наименование специальности', examples=['Кардиолог']
|
title='Наименование специальности', examples=['Кардиолог']
|
||||||
@ -393,9 +397,7 @@ class RouteToDoctorModel(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class RouteToDiagnosticModel(BaseModel):
|
class RouteToDiagnosticModel(BaseModel):
|
||||||
RouteDate: datetime = Field(
|
RouteDate: date = Field(title='Дата направления', examples=['2025-08-06'])
|
||||||
title='Дата направления', examples=['2025-08-06']
|
|
||||||
)
|
|
||||||
ResearchCode: str = Field(title='Код услуги', examples=['B03.016.003'])
|
ResearchCode: str = Field(title='Код услуги', examples=['B03.016.003'])
|
||||||
ResearchName: str = Field(
|
ResearchName: str = Field(
|
||||||
title='Наименование услуги',
|
title='Наименование услуги',
|
||||||
@ -417,7 +419,7 @@ class HospDestinationModel(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class ExamModel(BaseModel):
|
class ExamModel(BaseModel):
|
||||||
ExaminationDate: datetime = Field(
|
ExaminationDate: date = Field(
|
||||||
title='Дата осмотра', examples=['2025-08-04']
|
title='Дата осмотра', examples=['2025-08-04']
|
||||||
)
|
)
|
||||||
ExaminationTime: str = Field(title='Время осмотра', examples=['09:21'])
|
ExaminationTime: str = Field(title='Время осмотра', examples=['09:21'])
|
||||||
@ -438,7 +440,7 @@ class ExamModel(BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class HospitalizationModel(BaseModel):
|
class BaseHospitalizationModel(BaseModel):
|
||||||
EventID: str = Field(
|
EventID: str = Field(
|
||||||
title='Идентификатор случая госпитализации',
|
title='Идентификатор случая госпитализации',
|
||||||
examples=['ddfa23ea-b0de-4d88-8abe-7d6a7a241df1'],
|
examples=['ddfa23ea-b0de-4d88-8abe-7d6a7a241df1'],
|
||||||
@ -454,14 +456,6 @@ class HospitalizationModel(BaseModel):
|
|||||||
'сердечной недостаточности'
|
'сердечной недостаточности'
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
Diagnosis: str = Field(
|
|
||||||
title='Текущий диагноз',
|
|
||||||
examples=[
|
|
||||||
'I11.9 | Гипертензивная [гипертоническая] болезнь с '
|
|
||||||
'преимущественным поражением сердца без (застойной) '
|
|
||||||
'сердечной недостаточности'
|
|
||||||
],
|
|
||||||
)
|
|
||||||
HospitalizationType: str = Field(
|
HospitalizationType: str = Field(
|
||||||
title='Тип госпитализации', examples=['экстренная']
|
title='Тип госпитализации', examples=['экстренная']
|
||||||
)
|
)
|
||||||
@ -470,19 +464,31 @@ class HospitalizationModel(BaseModel):
|
|||||||
)
|
)
|
||||||
Division: str = Field(title='Отделение', examples=['Кардиология №1'])
|
Division: str = Field(title='Отделение', examples=['Кардиология №1'])
|
||||||
LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'])
|
LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'])
|
||||||
|
|
||||||
|
|
||||||
|
class HospitalizationModel(BaseHospitalizationModel):
|
||||||
|
Diagnosis: str = Field(
|
||||||
|
title='Текущий диагноз',
|
||||||
|
examples=[
|
||||||
|
'I11.9 | Гипертензивная [гипертоническая] болезнь с '
|
||||||
|
'преимущественным поражением сердца без (застойной) '
|
||||||
|
'сердечной недостаточности'
|
||||||
|
],
|
||||||
|
)
|
||||||
Exams: list[ExamModel] = Field(title='Список осмотров')
|
Exams: list[ExamModel] = Field(title='Список осмотров')
|
||||||
|
|
||||||
|
|
||||||
class HospitalizationsModel(BaseModel):
|
class HospitalizationsModel(BaseModel):
|
||||||
Hospitalizations: list[HospitalizationModel] = Field(
|
Hospitalizations: list[HospitalizationModel | BaseHospitalizationModel] = (
|
||||||
title='Список госпитализаций'
|
Field(title='Список госпитализаций')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RecommendationModel(BaseModel):
|
class RecommendationModel(BaseModel):
|
||||||
Type: str = Field(title='Тип осмотра', examples=['Осмотр', 'Эпикриз'])
|
Type: str = Field(title='Тип осмотра', examples=['Осмотр', 'Эпикриз'])
|
||||||
DateTime: datetime = Field(
|
DateTime: str = Field(
|
||||||
title='Дата и время создания', examples=['18.07.2025 8:30:43']
|
title='Дата и время создания',
|
||||||
|
examples=['18.07.2025 8:30:43'],
|
||||||
)
|
)
|
||||||
Recommendation: str = Field(
|
Recommendation: str = Field(
|
||||||
title='Текст рекомендации', examples=['рекомендации тест']
|
title='Текст рекомендации', examples=['рекомендации тест']
|
||||||
@ -523,7 +529,7 @@ class DiagnosticResultModel(BaseModel):
|
|||||||
title='Идентификатор результата исследования',
|
title='Идентификатор результата исследования',
|
||||||
examples=['1407910a-1901-4b21-be2d-0ef89041f4fe'],
|
examples=['1407910a-1901-4b21-be2d-0ef89041f4fe'],
|
||||||
)
|
)
|
||||||
ContainsFile: str = Field(
|
ContainsFile: int = Field(
|
||||||
title='Признак наличия файла исследования (из ЛИС)', examples=['0']
|
title='Признак наличия файла исследования (из ЛИС)', examples=['0']
|
||||||
)
|
)
|
||||||
PostingDate: datetime = Field(
|
PostingDate: datetime = Field(
|
||||||
|
|||||||
Reference in New Issue
Block a user