medical card detail
This commit is contained in:
@@ -24,7 +24,7 @@ class MedicalCardBase(BaseModel):
|
|||||||
class Config:
|
class Config:
|
||||||
orm_mode = True
|
orm_mode = True
|
||||||
|
|
||||||
class AddressCreate(BaseModel):
|
class PersonAddress(BaseModel):
|
||||||
category: str
|
category: str
|
||||||
region: Optional[str]
|
region: Optional[str]
|
||||||
city: Optional[str]
|
city: Optional[str]
|
||||||
@@ -32,11 +32,11 @@ class AddressCreate(BaseModel):
|
|||||||
house: Optional[str]
|
house: Optional[str]
|
||||||
flat: Optional[str]
|
flat: Optional[str]
|
||||||
|
|
||||||
class ContactCreate(BaseModel):
|
class PersonContact(BaseModel):
|
||||||
category: str
|
category: str
|
||||||
value: str
|
value: str
|
||||||
|
|
||||||
class DocumentCreate(BaseModel):
|
class PersonDocument(BaseModel):
|
||||||
category: str
|
category: str
|
||||||
series: str
|
series: str
|
||||||
number: str
|
number: str
|
||||||
@@ -44,17 +44,17 @@ class DocumentCreate(BaseModel):
|
|||||||
issued_at: Optional[date]
|
issued_at: Optional[date]
|
||||||
attachments: Optional[List[str]]
|
attachments: Optional[List[str]]
|
||||||
|
|
||||||
|
|
||||||
class PersonDetail(BaseModel):
|
class PersonDetail(BaseModel):
|
||||||
first_name: str
|
first_name: str
|
||||||
last_name: str
|
last_name: str
|
||||||
patronymic: Optional[str]
|
patronymic: Optional[str]
|
||||||
gender: Optional[str]
|
gender: Optional[str]
|
||||||
birth_date: Optional[date]
|
birth_date: Optional[date]
|
||||||
addresses: Optional[List[AddressCreate]] = []
|
addresses: Optional[List[PersonAddress]] = []
|
||||||
contacts: Optional[List[ContactCreate]] = []
|
contacts: Optional[List[PersonContact]] = []
|
||||||
documents: Optional[List[DocumentCreate]] = []
|
documents: Optional[List[PersonDocument]] = []
|
||||||
photos: Optional[List[str]] = []
|
photos: Optional[List[str]] = []
|
||||||
|
|
||||||
class MedicalCardDetail(BaseModel):
|
class MedicalCardDetail(BaseModel):
|
||||||
id: UUID4
|
id: UUID4
|
||||||
number: str
|
number: str
|
||||||
|
|||||||
@@ -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.db.schemas import MedicalCardCreate, MedicalCardBase, MedicalCardResponse, PersonDetail, MedicalCardDetail
|
||||||
from medical_info.services.base import BaseService
|
from medical_info.services.base import BaseService
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from sqlalchemy.sql.expression import literal
|
|
||||||
from pydantic import parse_obj_as
|
from pydantic import parse_obj_as
|
||||||
|
from pydantic.types import UUID4
|
||||||
|
from medical_info.db import schemas, models
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
|
class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
|
||||||
@@ -23,16 +24,18 @@ class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
|
|||||||
m["person"] = person
|
m["person"] = person
|
||||||
return medical_cards
|
return medical_cards
|
||||||
|
|
||||||
def get(self, id: Any) -> Optional[MedicalCard]:
|
def get(self, id: UUID4) -> Optional[schemas.MedicalCardDetail]:
|
||||||
obj: Optional[MedicalCard] = self.db_session.get(self.model, id)
|
obj: Optional[models.MedicalCard] = self.db_session.get(self.model, id)
|
||||||
if obj is None:
|
if obj is None:
|
||||||
raise HTTPException(status_code=404, detail='NotFound')
|
raise HTTPException(status_code=404, detail='NotFound')
|
||||||
|
|
||||||
personal_information_host = os.getenv('ASTRA-PESONAL-INFORMATION')
|
# personal_information_host = os.getenv('ASTRA-PESONAL-INFORMATION')
|
||||||
# personal_information_host = 'http://localhost:8001/persons'
|
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()
|
person_response = requests.get(f'{personal_information_host}/{obj.person_id}')
|
||||||
medical_info['person'] = PersonDetail(**response.json()).dict()
|
|
||||||
|
medical_info = schemas.MedicalCardDetail.from_orm(obj).dict()
|
||||||
|
medical_info['person'] = schemas.PersonDetail(**person_response.json()).dict()
|
||||||
return medical_info
|
return medical_info
|
||||||
Reference in New Issue
Block a user