diff --git a/src/medical_info/db/schemas/medical_card.py b/src/medical_info/db/schemas/medical_card.py index 3fda385..e2ea7a1 100644 --- a/src/medical_info/db/schemas/medical_card.py +++ b/src/medical_info/db/schemas/medical_card.py @@ -24,7 +24,7 @@ class MedicalCardBase(BaseModel): class Config: orm_mode = True -class AddressCreate(BaseModel): +class PersonAddress(BaseModel): category: str region: Optional[str] city: Optional[str] @@ -32,11 +32,11 @@ class AddressCreate(BaseModel): house: Optional[str] flat: Optional[str] -class ContactCreate(BaseModel): +class PersonContact(BaseModel): category: str value: str -class DocumentCreate(BaseModel): +class PersonDocument(BaseModel): category: str series: str number: str @@ -44,17 +44,17 @@ class DocumentCreate(BaseModel): issued_at: Optional[date] attachments: Optional[List[str]] - class PersonDetail(BaseModel): first_name: str last_name: str patronymic: Optional[str] gender: Optional[str] birth_date: Optional[date] - addresses: Optional[List[AddressCreate]] = [] - contacts: Optional[List[ContactCreate]] = [] - documents: Optional[List[DocumentCreate]] = [] + addresses: Optional[List[PersonAddress]] = [] + contacts: Optional[List[PersonContact]] = [] + documents: Optional[List[PersonDocument]] = [] photos: Optional[List[str]] = [] + class MedicalCardDetail(BaseModel): id: UUID4 number: str diff --git a/src/medical_info/services/medical_cards.py b/src/medical_info/services/medical_cards.py index bb32af8..74b5b8b 100644 --- a/src/medical_info/services/medical_cards.py +++ b/src/medical_info/services/medical_cards.py @@ -3,8 +3,9 @@ from medical_info.db.models import MedicalCard from medical_info.db.schemas import MedicalCardCreate, MedicalCardBase, MedicalCardResponse, PersonDetail, MedicalCardDetail from medical_info.services.base import BaseService from sqlalchemy.orm import Session -from sqlalchemy.sql.expression import literal from pydantic import parse_obj_as +from pydantic.types import UUID4 +from medical_info.db import schemas, models import requests class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]): @@ -23,16 +24,18 @@ class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]): m["person"] = person return medical_cards - def get(self, id: Any) -> Optional[MedicalCard]: - obj: Optional[MedicalCard] = self.db_session.get(self.model, id) + def get(self, id: UUID4) -> Optional[schemas.MedicalCardDetail]: + obj: Optional[models.MedicalCard] = self.db_session.get(self.model, id) if obj is None: raise HTTPException(status_code=404, detail='NotFound') - personal_information_host = os.getenv('ASTRA-PESONAL-INFORMATION') - # personal_information_host = 'http://localhost:8001/persons' + # personal_information_host = os.getenv('ASTRA-PESONAL-INFORMATION') + personal_information_host = 'http://localhost:8001/persons' - response = requests.get(f'{personal_information_host}/{obj.person_id}') + #TODO обработка ошибок ответа сервиса personal_info - medical_info = MedicalCardDetail.from_orm(obj).dict() - medical_info['person'] = PersonDetail(**response.json()).dict() + person_response = requests.get(f'{personal_information_host}/{obj.person_id}') + + medical_info = schemas.MedicalCardDetail.from_orm(obj).dict() + medical_info['person'] = schemas.PersonDetail(**person_response.json()).dict() return medical_info \ No newline at end of file