Compare commits
13 Commits
aed85d5201
...
422adfd503
| Author | SHA1 | Date | |
|---|---|---|---|
| 422adfd503 | |||
| ce36e07266 | |||
| 6bc0cf98a3 | |||
| 355ea5c921 | |||
| 5d84ea567d | |||
| 4be216375c | |||
| d553b93825 | |||
| da772336ee | |||
| 92b889faf5 | |||
| eff590df2b | |||
| 365d6b1696 | |||
| 02a35d0441 | |||
| fa83caf49d |
@ -47,9 +47,129 @@ async def get_workers(departmentId: str):
|
|||||||
return await c.vitacore_api.getWorkers(departmentId)
|
return await c.vitacore_api.getWorkers(departmentId)
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getSpecs')
|
@router.get('/getSpecs', response_model=s.SpecsV021Model)
|
||||||
async def get_specs():
|
async def get_specs():
|
||||||
return mock.specs
|
"""
|
||||||
|
Get list of specialties.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getSpecsV021()
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getEntries', response_model=s.EntriesModel)
|
||||||
|
async def get_entries():
|
||||||
|
"""
|
||||||
|
Get list of entries for user by id.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getEntries(
|
||||||
|
'b172ddc1-bd94-407f-885f-725193dcc502'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getVaccsReport')
|
||||||
|
async def get_vaccs_report():
|
||||||
|
"""
|
||||||
|
Get report of vaccinations for user by id.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getVaccsReport(
|
||||||
|
'6fe66cae-409a-4f56-8ae9-d55d3c38569b'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getMedExamDict')
|
||||||
|
async def get_med_exam_dict():
|
||||||
|
"""
|
||||||
|
Get medical examination dictionary.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getMedExamDict()
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getRoutesList')
|
||||||
|
async def get_routes_list():
|
||||||
|
"""
|
||||||
|
Get list of routes.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getRoutesList(
|
||||||
|
'4e6de5f7-4dc9-451b-bf0d-7a64a9b8c279'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@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.get('/getCurrHosp')
|
||||||
|
async def get_curr_hosp():
|
||||||
|
"""
|
||||||
|
Get current hospitalization.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getCurrHosp(
|
||||||
|
'b708e782-4f83-4f3b-8639-512c0c9637bf'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getHosps')
|
||||||
|
async def get_hosps():
|
||||||
|
"""
|
||||||
|
Get list of hospitals.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getHosps(
|
||||||
|
'b708e782-4f83-4f3b-8639-512c0c9637bf'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getHospRecommendations')
|
||||||
|
async def get_hosp_recommendations():
|
||||||
|
"""
|
||||||
|
Get list of recommended hospitals.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getHospRecommendations(
|
||||||
|
'b708e782-4f83-4f3b-8639-512c0c9637bf'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getHospRoutes')
|
||||||
|
async def get_hosp_routes():
|
||||||
|
"""
|
||||||
|
Get list of recommended hospitals.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getHospRoutes(
|
||||||
|
'3092e1c5-e08b-4654-a027-82be90fe8a49'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getDiagnosticResults')
|
||||||
|
async def get_diagnostic_results():
|
||||||
|
"""
|
||||||
|
Get list of diagnostic results.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getDiagnosticResults(
|
||||||
|
'4867cc79-9805-4ae2-98d3-2f822848635e'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getELNs')
|
||||||
|
async def get_eln():
|
||||||
|
"""
|
||||||
|
Get list of ELNs.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getELNs('d4493f1c-fcbb-4242-99e6-32328bed53b9')
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/getPatFLG')
|
||||||
|
async def get_pat_flg():
|
||||||
|
"""
|
||||||
|
Get list of ELNs.
|
||||||
|
"""
|
||||||
|
return await c.vitacore_api.getPatFLG(
|
||||||
|
'0bf2e271-e565-42a8-924e-0017bcdedecd'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.post('/measurement', status_code=status.HTTP_202_ACCEPTED)
|
@router.post('/measurement', status_code=status.HTTP_202_ACCEPTED)
|
||||||
@ -114,58 +234,3 @@ async def queue(user: Annotated[bool, Depends(login)]):
|
|||||||
@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]
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getHosps')
|
|
||||||
async def get_hosps():
|
|
||||||
return mock.hosps
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getELNS')
|
|
||||||
async def get_elns(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.elns[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getVaccsReport')
|
|
||||||
async def get_vaccs_report(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.vacs[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getDiagnosticResults')
|
|
||||||
async def get_diagnostic_results(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.diagnosticResults
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getCurrHosp')
|
|
||||||
async def get_curr_hosp(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.currHosp[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getPatFLG')
|
|
||||||
async def get_pat_flg(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.patFLG[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getEntries')
|
|
||||||
async def get_entries(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.entries[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getRoutesList')
|
|
||||||
async def get_routes_list(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.routesList[0]
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getMedExamDict')
|
|
||||||
async def get_med_exam_dict(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.medexamDict
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getHospRecommendations')
|
|
||||||
async def get_hosp_recommendations(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.hospRecommendations
|
|
||||||
|
|
||||||
|
|
||||||
@router.get('/getHospRoutes')
|
|
||||||
async def get_hosp_routes(user: Annotated[str, Depends(login)]):
|
|
||||||
return mock.hospRoutes
|
|
||||||
|
|||||||
@ -50,3 +50,138 @@ class VITACORE_API(AsyncClient):
|
|||||||
case _:
|
case _:
|
||||||
self.logger.error(req.json())
|
self.logger.error(req.json())
|
||||||
raise e.UnknownException
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getSpecsV021(self):
|
||||||
|
req = await self.get('/getSpecsV021')
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.SpecsV021Model.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getEntries(self, patId: str):
|
||||||
|
req = await self.get('/getEntries', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.EntriesModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getVaccsReport(self, patId: str):
|
||||||
|
req = await self.get('/getVaccsReport', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.VaccsReportModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getMedExamDict(self):
|
||||||
|
req = await self.get('/getMedExamDict')
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.MedExamDictModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getRoutesList(self, patId: str):
|
||||||
|
req = await self.get('/getRoutesList', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.RoutesListModel.model_validate(req.json())
|
||||||
|
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
|
||||||
|
|
||||||
|
async def getCurrHosp(self, patId: str):
|
||||||
|
req = await self.get('/getCurrHosp', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.HospitalizationsModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getHosps(self, patId: str):
|
||||||
|
req = await self.get('/getHosps', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.HospitalizationsModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getHospRecommendations(self, patId: str):
|
||||||
|
req = await self.get(
|
||||||
|
'/getHospRecommendations', params={'patId': patId}
|
||||||
|
)
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.HospRecommendationsModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getHospRoutes(self, patId: str):
|
||||||
|
req = await self.get('/getHospRoutes', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.HospRoutesModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getDiagnosticResults(self, patId: str):
|
||||||
|
req = await self.get('/getDiagnosticResults', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.DiagnosticResultsModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getELNs(self, patId: str):
|
||||||
|
req = await self.get('/getELNs', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.ELNsModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|
||||||
|
async def getPatFLG(self, patId: str):
|
||||||
|
req = await self.get('/getPatFLG', params={'patId': patId})
|
||||||
|
|
||||||
|
match req.status_code:
|
||||||
|
case st.HTTP_200_OK:
|
||||||
|
return s.PatientFLGModel.model_validate(req.json())
|
||||||
|
case _:
|
||||||
|
self.logger.error(req.json())
|
||||||
|
raise e.UnknownException
|
||||||
|
|||||||
@ -174,3 +174,457 @@ class WorkersModel(BaseModel):
|
|||||||
middleName: str = Field(title='Отчество', examples=['Михайлович'])
|
middleName: str = Field(title='Отчество', examples=['Михайлович'])
|
||||||
birthDate: datetime = Field(title='Дата рождения', examples=['30.05.1961'])
|
birthDate: datetime = Field(title='Дата рождения', examples=['30.05.1961'])
|
||||||
positions: list[WorkersPositionModel]
|
positions: list[WorkersPositionModel]
|
||||||
|
|
||||||
|
|
||||||
|
class SpecialityV021Model(BaseModel):
|
||||||
|
SpecialityID: str = Field(
|
||||||
|
title='Код спциальности по справочнику V021', examples=['1']
|
||||||
|
)
|
||||||
|
SpecialityName: str = Field(
|
||||||
|
title='Наимнование спциальности по справочнику V021',
|
||||||
|
examples=['Авиационная и космическая медицина'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpecsV021Model(BaseModel):
|
||||||
|
SpecialitiesV021: list[SpecialityV021Model]
|
||||||
|
|
||||||
|
|
||||||
|
class EntryModel(BaseModel):
|
||||||
|
DateTime: datetime = Field(
|
||||||
|
title='Дата и время записи',
|
||||||
|
examples=['2022-08-01T00:00:00.000Z'],
|
||||||
|
)
|
||||||
|
TicketType: str = Field(title='Тип талона', examples=['Первичный'])
|
||||||
|
EntryPlace: str = Field(
|
||||||
|
title='Место записи',
|
||||||
|
examples=['Регистратура'],
|
||||||
|
)
|
||||||
|
EntryType: str = Field(
|
||||||
|
title='Тип записи', examples=['Запись на прием к врачу']
|
||||||
|
)
|
||||||
|
Place: str = Field(
|
||||||
|
title='Кабинет приёма',
|
||||||
|
examples=['6'],
|
||||||
|
)
|
||||||
|
ResourceName: str = Field(
|
||||||
|
title='ФИО врача или наимнование кабинета полностью',
|
||||||
|
examples=['Сиразетдинов Рамзис Халафутдинович'],
|
||||||
|
)
|
||||||
|
Speciality: str = Field(
|
||||||
|
title='Специальность',
|
||||||
|
examples=['Врач общей практики (семейный врач)'],
|
||||||
|
)
|
||||||
|
Branch: str = Field(
|
||||||
|
title='Подразделение',
|
||||||
|
examples=['Главное здание'],
|
||||||
|
)
|
||||||
|
LpuName: str = Field(
|
||||||
|
title='Наименование МО',
|
||||||
|
examples=['ГАУЗ Азнакаевская ЦРБ'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class EntriesModel(BaseModel):
|
||||||
|
Entries: list[EntryModel]
|
||||||
|
|
||||||
|
|
||||||
|
class VaccsReportModel(BaseModel):
|
||||||
|
content: str = Field(
|
||||||
|
title='Содержимое документа в формате .doc '
|
||||||
|
'(сжатое методом кодирования Base64)'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MedExamItemModel(BaseModel):
|
||||||
|
AgeGroupName: str = Field(
|
||||||
|
title='Наименование возрастной группы',
|
||||||
|
examples=['ДВН 1 этап. приказ 404н'],
|
||||||
|
)
|
||||||
|
# AgeGroupCriteria
|
||||||
|
Required: str = Field(
|
||||||
|
title='Обязательность',
|
||||||
|
examples=['Обязательный/Дополнительный'],
|
||||||
|
)
|
||||||
|
Type: str = Field(
|
||||||
|
title='Тип',
|
||||||
|
examples=['Специальность/Услуга'],
|
||||||
|
)
|
||||||
|
MedicalServiceCode: str = Field(
|
||||||
|
title='Код услуги',
|
||||||
|
examples=['B04.010.002'],
|
||||||
|
)
|
||||||
|
MedicalServiceName: str = Field(
|
||||||
|
title='Наименрование услуги',
|
||||||
|
examples=['Осмотр фельдшером (акушеркой) или врачом акушером'],
|
||||||
|
)
|
||||||
|
SpecialityName: str = Field(
|
||||||
|
title='Специальность',
|
||||||
|
examples=['Акушер-гинеколог'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MedExamTypeModel(BaseModel):
|
||||||
|
Name: str = Field(
|
||||||
|
title='Наименование медосмотра',
|
||||||
|
examples=['ДВН 1 этап. приказ 404н'],
|
||||||
|
)
|
||||||
|
Code: str = Field(
|
||||||
|
title='Код медосмотра',
|
||||||
|
examples=['024'],
|
||||||
|
)
|
||||||
|
MedExamItems: list[MedExamItemModel]
|
||||||
|
|
||||||
|
|
||||||
|
class MedExamDictModel(BaseModel):
|
||||||
|
MedExamTypes: list[MedExamTypeModel]
|
||||||
|
|
||||||
|
|
||||||
|
class ResultModel(BaseModel):
|
||||||
|
Resource: str = Field(title='Врач', examples=['Изотова Г.М.'])
|
||||||
|
ExaminationId: str = Field(
|
||||||
|
title='Идентификатор осмотра',
|
||||||
|
examples=['4d8550e6-7ad8-46f7-b874-9b20c673d168'],
|
||||||
|
)
|
||||||
|
DiagResultId: str = Field(
|
||||||
|
title='Идентификатор результата исследования',
|
||||||
|
examples=['77312a5f-0498-4656-8215-9cf151ec2a9b'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RouteModel(BaseModel):
|
||||||
|
Type: str = Field(
|
||||||
|
title='Тип',
|
||||||
|
examples=['ROUTE_TO_DOCTOR_INSPECTION', 'ROUTE_TO_DIAGNOSTICS'],
|
||||||
|
)
|
||||||
|
CreationDateTime: datetime = Field(
|
||||||
|
title='Дата и время создания', examples=['2025-03-24 14:49']
|
||||||
|
)
|
||||||
|
Name: str = Field(
|
||||||
|
title='Наименование услуги / специальности',
|
||||||
|
examples=['Кардиолог [1259]', 'Общий анализ крови [B03.016.002]'],
|
||||||
|
)
|
||||||
|
EntryPlace: str | None = Field(
|
||||||
|
title='Кабинет приёма',
|
||||||
|
examples=['Каб.№211 Шайдуллина Г.И. (Кардиолог)', None],
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
EntryResName: str | None = Field(
|
||||||
|
title='ФИО врача или кабинета полностью',
|
||||||
|
examples=['Каб.№211 Шайдуллина Г.И. (Кардиолог)', None],
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
|
ResultExits: str = Field(title='Исполнение', examples=['0', '1'])
|
||||||
|
Result: ResultModel | None = Field(
|
||||||
|
title='Связка осмотра/услуги с выполнением направления', default=None
|
||||||
|
)
|
||||||
|
LpuName: str | None = Field(
|
||||||
|
title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'], default=None
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoutesListModel(BaseModel):
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая госпитализации',
|
||||||
|
examples=['a268e6d7-618c-4b83-97ca-c9dc8b79b55b'],
|
||||||
|
)
|
||||||
|
EventDate: datetime = Field(
|
||||||
|
title='Дата обращения', examples=['2025-03-17']
|
||||||
|
)
|
||||||
|
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=[
|
||||||
|
'<TABLE id=e0f61ef0-8f5e-42c6-95b6-4074715902e6 class=Complaint '
|
||||||
|
'style="BORDER-TOP: #ffffff 1px..... </TABLE>'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
Recommendation: str = Field(
|
||||||
|
title='Идентификатор результата исследования',
|
||||||
|
examples=['рекомендации 1 тест'],
|
||||||
|
)
|
||||||
|
SEMDs: list[SEMDModel] = Field(title='Список СЭМД')
|
||||||
|
|
||||||
|
|
||||||
|
class HospExaminationsModel(BaseModel):
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая госпитализации',
|
||||||
|
examples=['2f7d395d-f5fc-4a0e-af2d-855324f6e7f1'],
|
||||||
|
)
|
||||||
|
EventDate: datetime = Field(
|
||||||
|
title='Дата обращения', examples=['2025-08-01']
|
||||||
|
)
|
||||||
|
LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'])
|
||||||
|
Examinations: list[ExaminationModel] = Field(title='Список осмотров')
|
||||||
|
|
||||||
|
|
||||||
|
class RouteToDoctorModel(BaseModel):
|
||||||
|
RouteDate: datetime = Field(
|
||||||
|
title='Дата направления', examples=['2025-07-17']
|
||||||
|
)
|
||||||
|
SpecialityCode: str = Field(title='Код специальности', examples=['013'])
|
||||||
|
SpecialityName: str = Field(
|
||||||
|
title='Наименование специальности', examples=['Кардиолог']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RouteToDiagnosticModel(BaseModel):
|
||||||
|
RouteDate: datetime = Field(
|
||||||
|
title='Дата направления', examples=['2025-08-06']
|
||||||
|
)
|
||||||
|
ResearchCode: str = Field(title='Код услуги', examples=['B03.016.003'])
|
||||||
|
ResearchName: str = Field(
|
||||||
|
title='Наименование услуги',
|
||||||
|
examples=['Общий (клинический) анализ крови'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class HospDestinationModel(BaseModel):
|
||||||
|
Signa: str = Field(
|
||||||
|
title='Сигнатура назначения',
|
||||||
|
examples=[
|
||||||
|
'Diphenhydraminum+Oleum foliorum Menthae piperitae+'
|
||||||
|
'Tinctura Leonuri+Ethylbromisovalerinatum капли для приема внутрь'
|
||||||
|
' 25 мл x 1 доза. \nВнутрь (перорально) (утром) 3 раза через день'
|
||||||
|
'(08:00, 13:00, 18:00). Повторять 2 раза. Назначил:Изотова Г.М.'
|
||||||
|
' (Сердечно-сосудистый хирург)'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ExamModel(BaseModel):
|
||||||
|
ExaminationDate: datetime = Field(
|
||||||
|
title='Дата осмотра', examples=['2025-08-04']
|
||||||
|
)
|
||||||
|
ExaminationTime: str = Field(title='Время осмотра', examples=['09:21'])
|
||||||
|
Status: str = Field(title='Состояние при осмотре', examples=[''])
|
||||||
|
Post: str = Field(title='Врач', examples=['Шайдуллина Г.И. (Кардиолог)'])
|
||||||
|
MedicalExaminationType: str = Field(
|
||||||
|
title='Тип медицинского осмотра',
|
||||||
|
examples=['Осмотр врача-консультанта'],
|
||||||
|
)
|
||||||
|
RoutesToDoctor: list[RouteToDoctorModel] | None = Field(
|
||||||
|
title='Направления ко врачу', default=None
|
||||||
|
)
|
||||||
|
RoutesToDiagnostic: list[RouteToDiagnosticModel] | None = Field(
|
||||||
|
title='Направления на услугу', default=None
|
||||||
|
)
|
||||||
|
HospDestinations: list[HospDestinationModel] | None = Field(
|
||||||
|
title='Лекарственные назначения', default=None
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class HospitalizationModel(BaseModel):
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая госпитализации',
|
||||||
|
examples=['ddfa23ea-b0de-4d88-8abe-7d6a7a241df1'],
|
||||||
|
)
|
||||||
|
CreationDateTime: datetime = Field(
|
||||||
|
title='Дата и время регистрации', examples=['2025-07-10 17:29']
|
||||||
|
)
|
||||||
|
ReceptionDiagnosis: str = Field(
|
||||||
|
title='Диагноз при поступлении',
|
||||||
|
examples=[
|
||||||
|
'I11.9 | Гипертензивная [гипертоническая] болезнь с '
|
||||||
|
'преимущественным поражением сердца без (застойной) '
|
||||||
|
'сердечной недостаточности'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
Diagnosis: str = Field(
|
||||||
|
title='Текущий диагноз',
|
||||||
|
examples=[
|
||||||
|
'I11.9 | Гипертензивная [гипертоническая] болезнь с '
|
||||||
|
'преимущественным поражением сердца без (застойной) '
|
||||||
|
'сердечной недостаточности'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
HospitalizationType: str = Field(
|
||||||
|
title='Тип госпитализации', examples=['экстренная']
|
||||||
|
)
|
||||||
|
HospitalizationReason: str = Field(
|
||||||
|
title='Причина госпитализации', examples=['заболевание']
|
||||||
|
)
|
||||||
|
Division: str = Field(title='Отделение', examples=['Кардиология №1'])
|
||||||
|
LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'])
|
||||||
|
Exams: list[ExamModel] = Field(title='Список осмотров')
|
||||||
|
|
||||||
|
|
||||||
|
class HospitalizationsModel(BaseModel):
|
||||||
|
Hospitalizations: list[HospitalizationModel] = Field(
|
||||||
|
title='Список госпитализаций'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RecommendationModel(BaseModel):
|
||||||
|
Type: str = Field(title='Тип осмотра', examples=['Осмотр', 'Эпикриз'])
|
||||||
|
DateTime: datetime = Field(
|
||||||
|
title='Дата и время создания', examples=['18.07.2025 8:30:43']
|
||||||
|
)
|
||||||
|
Recommendation: str = Field(
|
||||||
|
title='Текст рекомендации', examples=['рекомендации тест']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class HospRecommendationsModel(BaseModel):
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая госпитализации',
|
||||||
|
examples=['ddfa23ea-b0de-4d88-8abe-7d6a7a241df1'],
|
||||||
|
)
|
||||||
|
EventDate: datetime = Field(
|
||||||
|
title='Дата обращения', examples=['2025-07-10']
|
||||||
|
)
|
||||||
|
Recommendations: list[RecommendationModel] = Field(
|
||||||
|
title='Список рекомендаций'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class HospRoutesModel(BaseModel):
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая госпитализации',
|
||||||
|
examples=['b8227793-0f40-40f0-b8aa-9fc00cc13b96'],
|
||||||
|
)
|
||||||
|
EventDate: datetime = Field(
|
||||||
|
title='Дата обращения', examples=['2025-07-21']
|
||||||
|
)
|
||||||
|
RoutesToDoctor: list[RouteToDoctorModel] = Field(
|
||||||
|
title='Направления ко врачу'
|
||||||
|
)
|
||||||
|
RoutesToDiagnostic: list[RouteToDiagnosticModel] = Field(
|
||||||
|
title='Направления на услугу'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class DiagnosticResultModel(BaseModel):
|
||||||
|
DiagResultID: str = Field(
|
||||||
|
title='Идентификатор результата исследования',
|
||||||
|
examples=['1407910a-1901-4b21-be2d-0ef89041f4fe'],
|
||||||
|
)
|
||||||
|
ContainsFile: str = Field(
|
||||||
|
title='Признак наличия файла исследования (из ЛИС)', examples=['0']
|
||||||
|
)
|
||||||
|
PostingDate: datetime = Field(
|
||||||
|
title='Дата направления', examples=['2025-05-06']
|
||||||
|
)
|
||||||
|
MedServiceCode: str = Field(
|
||||||
|
title='Код исследования', examples=['A12.05.004.002']
|
||||||
|
)
|
||||||
|
MedServiceName: str = Field(
|
||||||
|
title='Наименование исследования',
|
||||||
|
examples=[
|
||||||
|
'Проба на совместимость перед переливанием эритроцитов по '
|
||||||
|
'неполным антителам (IgG)'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
PostName: str = Field(title='Врач', examples=['Сиразиева Г.Р.'])
|
||||||
|
PostSpec: str = Field(title='Специальность', examples=['Терапевт'])
|
||||||
|
LpuName: str = Field(title='Наименование МО', examples=['ГАУЗ "ГКБ №7"'])
|
||||||
|
EventID: str = Field(
|
||||||
|
title='Идентификатор случая',
|
||||||
|
examples=['36cf2c90-fdad-4961-899c-652c5e0817a9'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class DiagnosticResultsModel(BaseModel):
|
||||||
|
DainosticsResults: list[DiagnosticResultModel] = Field(
|
||||||
|
title='Список результатов исследований'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ProlongationModel(BaseModel):
|
||||||
|
StartDate: datetime = Field(
|
||||||
|
title='Дата продления с', examples=['2020-10-21']
|
||||||
|
)
|
||||||
|
ProlongationDate: str = Field(
|
||||||
|
title='Дата продления до', examples=['2020-10-25']
|
||||||
|
)
|
||||||
|
Post: str = Field(
|
||||||
|
title='Врач',
|
||||||
|
examples=['Ахсанова Р.М. (Врач общей практики (семейный врач))'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class PatientELNModel(BaseModel):
|
||||||
|
PatientSNILS: str = Field(
|
||||||
|
title='СНИЛС болеющего', examples=['000-000-600 01']
|
||||||
|
)
|
||||||
|
Number: str = Field(
|
||||||
|
title='Номер листа нетрудоспособности', examples=['910040906829']
|
||||||
|
)
|
||||||
|
OpenDate: datetime = Field(title='Дата открытия', examples=['2020-10-21'])
|
||||||
|
DateClose: datetime = Field(title='Дата закрытия', examples=['2020-10-25'])
|
||||||
|
WorkDate: datetime = Field(
|
||||||
|
title='Дата выхода на работу', examples=['2020-10-26']
|
||||||
|
)
|
||||||
|
DaysCount: int = Field(
|
||||||
|
title='Количество дней нетрудоспособности', examples=[5]
|
||||||
|
)
|
||||||
|
Cause: str = Field(
|
||||||
|
title='Причина нетрудоспособности',
|
||||||
|
examples=[
|
||||||
|
'Заболевание (в том числе профессиональное заболевание и его '
|
||||||
|
'обострение)'
|
||||||
|
],
|
||||||
|
)
|
||||||
|
Prolongations: list[ProlongationModel] = Field(title='Продления')
|
||||||
|
LpuName: str = Field(
|
||||||
|
title='Наименование МО', examples=['ГАУЗ Новошешминская ЦРБ']
|
||||||
|
)
|
||||||
|
BranchAddress: str = Field(
|
||||||
|
title='Адрес подразделения выдачи',
|
||||||
|
examples=['Республика Татарстан,с.Новошешминск, ул.Майская, д.8'],
|
||||||
|
)
|
||||||
|
FssLnStatus: str = Field(title='Статус ЭЛН в ФСС', examples=['30'])
|
||||||
|
SentSNILS: str = Field(
|
||||||
|
title='СНИЛС получателя ЭЛН (отправленный в ФСС)',
|
||||||
|
examples=['00000060001'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ELNsModel(BaseModel):
|
||||||
|
PatientELNs: list[PatientELNModel] = Field(
|
||||||
|
title='Список электронных листов нетрудоспособности'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class PatientFLGModel(BaseModel):
|
||||||
|
id: str = Field(
|
||||||
|
title='Идентификатор пациента',
|
||||||
|
examples=['0bf2e271-e565-42a8-924e-0017bcdedecd'],
|
||||||
|
)
|
||||||
|
SNILS: str = Field(title='СНИЛС', examples=['127-192-834 66'])
|
||||||
|
LastFgDate: str = Field(
|
||||||
|
title='Дата последнего флюрографического осмотра',
|
||||||
|
examples=['2020-09-24'],
|
||||||
|
)
|
||||||
|
NextPrgDate: str = Field(
|
||||||
|
title='Дата следующего флюорографического осмотра',
|
||||||
|
examples=['2021-09-24'],
|
||||||
|
)
|
||||||
|
PrgContingent: str = Field(
|
||||||
|
title='Контингент (флюорография)',
|
||||||
|
examples=['Неорганизованное население'],
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user