checkup draft create list

This commit is contained in:
dderbentsov
2023-07-22 16:30:55 +03:00
parent 4ff74c63eb
commit 9c5b389849
7 changed files with 71 additions and 10 deletions

View File

@@ -1,5 +1,6 @@
export PYTHONPATH='/home/dd/astra/medical_information/src' export PYTHONPATH='/home/dd/astra/medical_information/src'
export POSTGRES_DB='medical_info_db' export POSTGRES_DB='medical_info_db'
docker start 9a9653ea37ca
CREATE DATABASE medical_info_db; CREATE DATABASE medical_info_db;
alembic revision --autogenerate -m 'initial' alembic revision --autogenerate -m 'initial'

View File

@@ -12,8 +12,9 @@ def create_app() -> FastAPI:
return 'ok' 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(medical_cards.router)
app.include_router(checkups.router)
return app return app

View File

@@ -1,9 +1,9 @@
from pydantic import BaseModel from pydantic import BaseModel
from pydantic.types import UUID4 from pydantic.types import UUID4, Json
from typing import List, Optional, Any
class MedicalCard(BaseModel): class MedicalCardResponse(BaseModel):
number: str id: UUID4
person_id: UUID4
class Config: class Config:
orm_mode = True orm_mode = True
@@ -12,3 +12,28 @@ class MedicalCardCreate(BaseModel):
number: str number: str
person_id: UUID4 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]

View 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)

View File

@@ -3,18 +3,18 @@ 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 MedicalCard, MedicalCardCreate from medical_info.db.schemas import MedicalCardResponse, MedicalCardCreate
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')
@router.get('/', response_model=List[MedicalCard]) @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]: ) -> List[models.MedicalCard]:
return medical_cards_service.list() 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( async def create_medical_card(
medical_card: MedicalCardCreate, medical_cards_service: MedicalCardService = Depends(get_medical_cards_service) medical_card: MedicalCardCreate, medical_cards_service: MedicalCardService = Depends(get_medical_cards_service)
) -> models.MedicalCard: ) -> models.MedicalCard:

View File

@@ -4,8 +4,12 @@ from sqlalchemy.orm import Session
from medical_info.db.session import get_session from medical_info.db.session import get_session
from .medical_cards import MedicalCardService from .medical_cards import MedicalCardService
from .checkups import CheckupService
def get_medical_cards_service(db_session: Session = Depends(get_session)) -> MedicalCardService: def get_medical_cards_service(db_session: Session = Depends(get_session)) -> MedicalCardService:
return MedicalCardService(db_session) 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')

View 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)