checkup draft create list
This commit is contained in:
@@ -12,8 +12,9 @@ def create_app() -> FastAPI:
|
||||
return 'ok'
|
||||
|
||||
|
||||
from medical_info.routers import medical_cards
|
||||
from medical_info.routers import medical_cards, checkups
|
||||
|
||||
app.include_router(medical_cards.router)
|
||||
app.include_router(checkups.router)
|
||||
|
||||
return app
|
||||
@@ -1,9 +1,9 @@
|
||||
from pydantic import BaseModel
|
||||
from pydantic.types import UUID4
|
||||
from pydantic.types import UUID4, Json
|
||||
from typing import List, Optional, Any
|
||||
|
||||
class MedicalCard(BaseModel):
|
||||
number: str
|
||||
person_id: UUID4
|
||||
class MedicalCardResponse(BaseModel):
|
||||
id: UUID4
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
@@ -11,4 +11,29 @@ class MedicalCard(BaseModel):
|
||||
class MedicalCardCreate(BaseModel):
|
||||
number: str
|
||||
person_id: UUID4
|
||||
|
||||
|
||||
class CheckupDetail(BaseModel):
|
||||
id: UUID4
|
||||
medical_card_id: UUID4
|
||||
medic_id: UUID4
|
||||
claims: Optional[List[str]]
|
||||
allergies: Optional[List[str]]
|
||||
diseases: Optional[List[str]]
|
||||
medicines: Optional[List[str]]
|
||||
disease_process: Optional[str]
|
||||
visual_inspection: Optional[str]
|
||||
dental_formula: Optional[Any]
|
||||
dental_formula_ext: Optional[Json]
|
||||
class Config:
|
||||
orm_mode = True
|
||||
class CheckupCreate(BaseModel):
|
||||
medical_card_id: UUID4
|
||||
medic_id: UUID4
|
||||
claims: Optional[List[str]]
|
||||
allergies: Optional[List[str]]
|
||||
diseases: Optional[List[str]]
|
||||
medicines: Optional[List[str]]
|
||||
disease_process: Optional[str]
|
||||
visual_inspection: Optional[str]
|
||||
dental_formula: Optional[Any]
|
||||
dental_formula_ext: Optional[Json]
|
||||
21
src/medical_info/routers/checkups.py
Normal file
21
src/medical_info/routers/checkups.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from fastapi import Depends
|
||||
from fastapi.routing import APIRouter
|
||||
from typing import List
|
||||
|
||||
from medical_info.db import models
|
||||
from medical_info.db.schemas import CheckupDetail, CheckupCreate
|
||||
from medical_info.services import CheckupService, get_checkups_service
|
||||
|
||||
router = APIRouter(prefix='/checkups')
|
||||
|
||||
@router.get('/', response_model=List[CheckupDetail])
|
||||
def list_checkups(
|
||||
checkups_service: CheckupService = Depends(get_checkups_service)
|
||||
) -> List[models.Checkup]:
|
||||
return checkups_service.list()
|
||||
|
||||
@router.post('/', status_code=201, response_model=CheckupDetail)
|
||||
async def create_checkup(
|
||||
checkup: CheckupCreate, checkups_service: CheckupService = Depends(get_checkups_service)
|
||||
) -> models.Checkup:
|
||||
return checkups_service.create(checkup)
|
||||
@@ -3,18 +3,18 @@ from fastapi.routing import APIRouter
|
||||
from typing import List
|
||||
|
||||
from medical_info.db import models
|
||||
from medical_info.db.schemas import MedicalCard, MedicalCardCreate
|
||||
from medical_info.db.schemas import MedicalCardResponse, MedicalCardCreate
|
||||
from medical_info.services import MedicalCardService, get_medical_cards_service
|
||||
|
||||
router = APIRouter(prefix='/medical_cards')
|
||||
|
||||
@router.get('/', response_model=List[MedicalCard])
|
||||
@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()
|
||||
|
||||
@router.post('/', status_code=201, response_model=MedicalCard)
|
||||
@router.post('/', status_code=201, response_model=MedicalCardResponse)
|
||||
async def create_medical_card(
|
||||
medical_card: MedicalCardCreate, medical_cards_service: MedicalCardService = Depends(get_medical_cards_service)
|
||||
) -> models.MedicalCard:
|
||||
|
||||
@@ -4,8 +4,12 @@ from sqlalchemy.orm import Session
|
||||
from medical_info.db.session import get_session
|
||||
|
||||
from .medical_cards import MedicalCardService
|
||||
from .checkups import CheckupService
|
||||
|
||||
def get_medical_cards_service(db_session: Session = Depends(get_session)) -> MedicalCardService:
|
||||
return MedicalCardService(db_session)
|
||||
|
||||
__all__ = ('get_medical_cards_service')
|
||||
def get_checkups_service(db_session: Session = Depends(get_session)) -> CheckupService:
|
||||
return CheckupService(db_session)
|
||||
|
||||
__all__ = ('get_medical_cards_service', 'get_checkups_service')
|
||||
9
src/medical_info/services/checkups.py
Normal file
9
src/medical_info/services/checkups.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from typing import Any
|
||||
from medical_info.db.models import Checkup
|
||||
from medical_info.db.schemas import CheckupCreate
|
||||
from medical_info.services.base import BaseService
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
class CheckupService(BaseService[Checkup, CheckupCreate, Any]):
|
||||
def __init__(self, db_session: Session):
|
||||
super(CheckupService, self).__init__(Checkup, db_session)
|
||||
Reference in New Issue
Block a user