Патч
Some checks failed
Build And Push / publish (push) Has been cancelled

This commit is contained in:
2025-11-27 13:28:58 +03:00
parent 45a4123708
commit f3c9cb42d6
12 changed files with 172 additions and 88 deletions

View File

@ -93,3 +93,19 @@ class TMK_API(AsyncClient):
case _:
self.logger.error(req.json())
raise e.UnknownException
async def getInfo(self, guid: str):
token = await self.get_token()
req = await self.get(
'/getTMKInfo',
headers={'Authorization': f'Bearer {token}'},
params={'guid': guid},
)
match req.status_code:
case st.HTTP_200_OK:
return s.QueueModel.model_validate(req.json())
case _:
self.logger.error(req.json())
raise e.UnknownException

View File

@ -58,27 +58,28 @@ class VITACORE_API(AsyncClient):
raise e.UnknownException
async def findBySnils(self, snils: str):
data = await self.get_cache(f'vitacore_findBySnils:{snils}')
data = await self.get_cache(f'vitacore_findBySnils2:{snils}')
if data:
return s.PatientsModel.model_validate(data)
return s.PatientModel.model_validate(data)
token = await self.get_token()
req = await self.get(
'/findBySnils',
'/findBySnils2',
params={'snils': snils},
headers={'Authorization': f'Bearer {token}'},
)
match req.status_code:
case st.HTTP_200_OK:
model = s.PatientsModel.model_validate(req.json())
model = s.PatientModel.model_validate(req.json())
await self.set_cache(
f'vitacore_findBySnils:{snils}',
f'vitacore_findBySnils2:{snils}',
model.model_dump_json(),
14400,
)
return model
case _:
self.logger.error(req.json())
raise e.UnknownException
@ -177,10 +178,7 @@ class VITACORE_API(AsyncClient):
async def getEntries(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
@ -204,11 +202,9 @@ class VITACORE_API(AsyncClient):
async def getVaccsReport(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getVaccsReport',
params={'patId': patId},
@ -221,7 +217,11 @@ class VITACORE_API(AsyncClient):
case st.HTTP_206_PARTIAL_CONTENT:
error = s.ErrorModel.model_validate(req.json())
if error.error == 'Не найдены записи по указанному patId':
if (
error.error == 'Не найдены записи по указанному patId'
or error.error
== 'Не найдены вакцинации по данному пациенту'
):
return s.VaccsReportModel(content='')
case _:
self.logger.error(req.json())
@ -242,11 +242,9 @@ class VITACORE_API(AsyncClient):
async def getRoutesList(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getRoutesList',
params={'patId': patId},
@ -273,11 +271,9 @@ class VITACORE_API(AsyncClient):
raise e.UnknownException
async def getHospExaminations(self, patId: str, examId: str | None = None):
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
token = await self.get_token()
req = await self.get(
'/getHospExaminations',
@ -306,11 +302,9 @@ class VITACORE_API(AsyncClient):
async def getCurrHosp(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getCurrHosp',
params={'patId': patId},
@ -335,11 +329,9 @@ class VITACORE_API(AsyncClient):
async def getHosps(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getHosps',
params={'patId': patId},
@ -367,11 +359,9 @@ class VITACORE_API(AsyncClient):
async def getHospRecommendations(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getHospRecommendations',
params={'patId': patId},
@ -401,11 +391,9 @@ class VITACORE_API(AsyncClient):
async def getHospRoutes(self, patId: str):
token = await self.get_token()
if (
patId == 'a72d18cf-c152-4b9e-b8be-313234b87400'
or patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd'
):
if patId == '9a4d4b06-5928-4101-b95e-e5ba03a1abfd':
patId = 'b66a85f1-4aaa-4db8-942a-2de44341824e'
req = await self.get(
'/getHospRoutes',
params={'patId': patId},

View File

@ -1,14 +1,19 @@
from datetime import datetime
from pydantic import BaseModel, Field, field_validator
from pydantic import BaseModel, ConfigDict, Field, field_validator
class ErrorModel(BaseModel):
error: str = Field(title='Текст ошибки')
model_config = ConfigDict(
validate_by_alias=True,
validate_by_name=True,
)
error: str = Field(title='Текст ошибки', alias='message')
class PatientModel(BaseModel):
id: str = Field(
patId: str = Field(
title='Идентификатор пациента',
examples=['b62e9f22-a871-4c52-96d6-559c707a716d'],
)
@ -18,18 +23,6 @@ class PatientModel(BaseModel):
middleName: str = Field(title='Отчество', examples=['Пациентович'])
birthDate: datetime = Field(title='Дата рождения', examples=['2024-10-16'])
gender: str = Field(title='Пол', examples=['М'])
docType: str = Field(title='Тип документа', examples=['Паспорт РФ'])
docSer: str = Field(title='Серия документа', examples=['12 34'])
docNum: str = Field(title='Номер документа', examples=['999999'])
polNum: str = Field(title='Номер полиса', examples=['999999'])
address1: str = Field(
title='Адрес проживания',
examples=['г. Москва, ул. Пушкина, д. 1'],
)
class PatientsModel(BaseModel):
patients: list[PatientModel]
class TrustedPersonModel(BaseModel):
@ -215,7 +208,9 @@ class WorkerModel(BaseModel):
firstName: str = Field(title='Имя', examples=['Владимир'])
lastName: str = Field(title='Фамилия', examples=['Камашев'])
middleName: str = Field(title='Отчество', examples=['Михайлович'])
birthDate: datetime = Field(title='Дата рождения', examples=['30.05.1961'])
birthDate: datetime | None = Field(
title='Дата рождения', examples=['30.05.1961'], default=None
)
positions: list[WorkersPositionModel]
@ -411,9 +406,10 @@ class ExaminationModel(BaseModel):
'style="BORDER-TOP: #ffffff 1px..... </TABLE>'
],
)
Recommendation: str = Field(
Recommendation: str | None = Field(
title='Идентификатор результата исследования',
examples=['рекомендации 1 тест'],
default=None,
)
SEMDs: list[SEMDModel] | None = Field(title='Список СЭМД', default=None)
@ -688,6 +684,10 @@ class PatientFLGModel(BaseModel):
title='Контингент (флюорография)',
examples=['Неорганизованное население'],
)
PrgDecision: str | None = Field(
title='Решение (флюорография)',
examples=['Требует дообследования'],
)
class DiagResultFileModel(BaseModel):