checkup draft create list
This commit is contained in:
@@ -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'
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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]
|
||||||
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 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:
|
||||||
|
|||||||
@@ -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')
|
||||||
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