192 lines
6.3 KiB
Python
192 lines
6.3 KiB
Python
from logging import getLogger
|
||
|
||
from fastapi import status as st
|
||
from httpx import AsyncClient
|
||
|
||
from core.config import settings
|
||
from shared import exceptions as e
|
||
|
||
from . import schema as s
|
||
|
||
|
||
class VITACORE_API(AsyncClient):
|
||
def __init__(self):
|
||
self.logger = getLogger(__name__)
|
||
super().__init__(base_url=settings.VITACORE_BASE_URL)
|
||
|
||
async def findBySnils(self, snils: str):
|
||
return
|
||
|
||
async def getProfile(self, patId: str):
|
||
req = await self.get('/getProfile', params={'patId': patId})
|
||
|
||
match req.status_code:
|
||
case st.HTTP_200_OK:
|
||
return s.ProfileModel.model_validate(req.json())
|
||
case _:
|
||
self.logger.error(req.json())
|
||
raise e.UnknownException
|
||
|
||
async def getDepartments(self):
|
||
req = await self.get('/getDepartments')
|
||
|
||
match req.status_code:
|
||
case st.HTTP_200_OK:
|
||
return s.OrganizationsModel.model_validate(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()['workers'])
|
||
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 st.HTTP_206_PARTIAL_CONTENT:
|
||
error = s.ErrorModel.model_validate(req.json())
|
||
|
||
if error.error == 'Не найдены записи по указанному patId':
|
||
return s.EntriesModel(Entries=[])
|
||
|
||
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
|