draft list medical_card
This commit is contained in:
@@ -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
|
||||||
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user