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.types import UUID4, Json
from typing import List, Optional, Any
from datetime import date, datetime
class Person(BaseModel):
full_name: str
birth_date: date
class MedicalCardResponse(BaseModel):
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:
orm_mode = True
class MedicalCardCreate(BaseModel):
number: str
person_id: UUID4
class MedicalCards(BaseModel):
__root__: List[MedicalCardBase]
class Config:
orm_mode = True

View File

@@ -3,7 +3,7 @@ from fastapi.routing import APIRouter
from typing import List
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
router = APIRouter(prefix='/medical_cards')
@@ -11,8 +11,8 @@ router = APIRouter(prefix='/medical_cards')
@router.get('/', response_model=List[MedicalCardResponse])
def list_medical_cards(
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)
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.schemas import MedicalCardCreate
from medical_info.db.schemas import MedicalCardCreate, MedicalCardBase, MedicalCardResponse, MedicalCards
from medical_info.services.base import BaseService
from sqlalchemy.orm import Session
from sqlalchemy.sql.expression import literal
from pydantic import parse_obj_as
class MedicalCardService(BaseService[MedicalCard, MedicalCardCreate, Any]):
def __init__(self, db_session: 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