draft list medical_card

This commit is contained in:
dderbentsov
2023-08-02 01:22:07 +03:00
parent 54cd6872e4
commit f68d46ec21
3 changed files with 44 additions and 8 deletions

View File

@@ -1,13 +1,30 @@
from pydantic import BaseModel from pydantic import BaseModel
from pydantic.types import UUID4, Json from pydantic.types import UUID4, Json
from typing import List, Optional, Any from typing import List, Optional, Any
from datetime import date, datetime
class Person(BaseModel):
full_name: str
birth_date: date
class MedicalCardResponse(BaseModel): class MedicalCardResponse(BaseModel):
id: UUID4 id: UUID4
number: Optional[str]
person: Person
created_at: Optional[datetime]
class MedicalCardCreate(BaseModel):
number: str
person_id: UUID4
class MedicalCardBase(BaseModel):
id: UUID4
class Config: class Config:
orm_mode = True orm_mode = True
class MedicalCardCreate(BaseModel): class MedicalCards(BaseModel):
number: str __root__: List[MedicalCardBase]
person_id: UUID4 class Config:
orm_mode = True

View File

@@ -3,7 +3,7 @@ from fastapi.routing import APIRouter
from typing import List from typing import List
from medical_info.db import models from medical_info.db import models
from medical_info.db.schemas import MedicalCardResponse, MedicalCardCreate from medical_info.db.schemas import MedicalCardResponse, MedicalCardCreate, MedicalCardBase
from medical_info.services import MedicalCardService, get_medical_cards_service from medical_info.services import MedicalCardService, get_medical_cards_service
router = APIRouter(prefix='/medical_cards') router = APIRouter(prefix='/medical_cards')
@@ -11,8 +11,8 @@ router = APIRouter(prefix='/medical_cards')
@router.get('/', response_model=List[MedicalCardResponse]) @router.get('/', response_model=List[MedicalCardResponse])
def list_medical_cards( def list_medical_cards(
medical_cards_service: MedicalCardService = Depends(get_medical_cards_service) medical_cards_service: MedicalCardService = Depends(get_medical_cards_service)
) -> List[models.MedicalCard]: ):
return medical_cards_service.list() return medical_cards_service.list('sss')
@router.post('/', status_code=201, response_model=MedicalCardResponse) @router.post('/', status_code=201, response_model=MedicalCardResponse)
async def create_medical_card( async def create_medical_card(

View File

@@ -1,9 +1,28 @@
from typing import Any from typing import Any, List
from medical_info.db.models import MedicalCard from medical_info.db.models import MedicalCard
from medical_info.db.schemas import MedicalCardCreate from medical_info.db.schemas import MedicalCardCreate, MedicalCardBase, MedicalCardResponse, MedicalCards
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
class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]): class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
def __init__(self, db_session: Session): def __init__(self, db_session: Session):
super(MedicalCardService, self).__init__(MedicalCard, db_session) super(MedicalCardService, self).__init__(MedicalCard, db_session)
def list(self, searchstring: str) -> dict:
medical_cards_rows = self.db_session.query(MedicalCard).all()
medical_cards = parse_obj_as(List[MedicalCardBase], medical_cards_rows)
# medical_cards = MedicalCards.from_orm(medical_cards_rows)
medical_cards = [medical_card.dict() for medical_card in medical_cards]
# medical_cards = medical_cards["__root__"]
print(medical_cards)
person = {'full_name': 'Жижин Антон Семенович', 'birth_date': '2012-03-10'}
for m in medical_cards:
print(m)
m["person"] = person
return medical_cards