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)
|
||||
|
||||
|
||||
@router.get('/getSpecs')
|
||||
@router.get('/getSpecs', response_model=s.SpecsV021Model)
|
||||
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)
|
||||
@ -114,58 +234,3 @@ async def queue(user: Annotated[bool, Depends(login)]):
|
||||
@router.get('/findPat')
|
||||
async def find_pat(user: Annotated[str, Depends(login)]):
|
||||
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 _:
|
||||
self.logger.error(req.json())
|
||||
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=['Михайлович'])
|
||||
birthDate: datetime = Field(title='Дата рождения', examples=['30.05.1961'])
|
||||
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