VIP super ultra draft medical card search)

This commit is contained in:
dderbentsov
2023-08-03 03:34:25 +03:00
parent e88a29ea32
commit a30fb1584f
3 changed files with 32 additions and 14 deletions

View File

@@ -7,30 +7,44 @@ from pydantic import parse_obj_as
from pydantic.types import UUID4
from medical_info.db import schemas, models
import requests
from starlette.exceptions import HTTPException
class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
def __init__(self, db_session: Session):
super(MedicalCardService, self).__init__(MedicalCard, db_session)
def list(self, searchstring: str) -> Any:
objs = self.db_session.query(models.MedicalCard).all()
medical_cards = parse_obj_as(List[schemas.MedicalCard], objs)
#TODO установи корректные коды ошибки
if searchstring is None or searchstring == '':
raise HTTPException(status_code=404, detail='searchstring is required')
medical_cards = [medical_card.dict() for medical_card in medical_cards]
# personal_information_host = 'http://localhost:8001/persons'
personal_information_host = os.getenv('ASTRA-PESONAL-INFORMATION')
#personal_information_host = 'http://localhost:8001/persons'
#TODO обобщение хоста personal_info
#TODO обработка ошибок ответа сервиса personal_info
# CONTINUE
person_response = requests.get(f'{personal_information_host}/?full_name={searchstring}')
persons = person_response.json()
person_ids = [person['id'] for person in persons]
# person_response = requests.get(f'{personal_information_host}/{obj.person_id}')
if len(person_ids) < 1:
return []
person = {'full_name': 'Жижин Антон Семенович', 'birth_date': '2012-03-10'}
objs = self.db_session.query(models.MedicalCard).filter(models.MedicalCard.person_id.in_(person_ids)).all()
medical_cards = parse_obj_as(List[schemas.MedicalCard], objs)
medical_cards = [medical_card.dict() for medical_card in medical_cards]
res = list()
for m in medical_cards:
print(m)
m["person"] = person
return medical_cards
person = next(filter(lambda person: str(person["id"]) == str(m["person_id"]) , persons), None)
if person is not None:
m['person'] = {**person}
res.append(m)
return res
def get(self, id: UUID4) -> Optional[schemas.MedicalCardDetail]:
obj: Optional[models.MedicalCard] = self.db_session.get(self.model, id)