From 54cd6872e4468af3507ded40828963cf0cab05e6 Mon Sep 17 00:00:00 2001 From: dderbentsov Date: Sat, 22 Jul 2023 16:57:20 +0300 Subject: [PATCH] checkup detail --- src/medical_info/db/schemas/__init__.py | 3 +- src/medical_info/db/schemas/checkup.py | 34 +++++++++++++++++++++ src/medical_info/db/schemas/medical_card.py | 26 ---------------- src/medical_info/routers/checkups.py | 15 ++++++--- 4 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 src/medical_info/db/schemas/checkup.py diff --git a/src/medical_info/db/schemas/__init__.py b/src/medical_info/db/schemas/__init__.py index d604cc2..c8cbafb 100644 --- a/src/medical_info/db/schemas/__init__.py +++ b/src/medical_info/db/schemas/__init__.py @@ -1 +1,2 @@ -from .medical_card import * \ No newline at end of file +from .medical_card import * +from .checkup import * \ No newline at end of file diff --git a/src/medical_info/db/schemas/checkup.py b/src/medical_info/db/schemas/checkup.py new file mode 100644 index 0000000..2db60dd --- /dev/null +++ b/src/medical_info/db/schemas/checkup.py @@ -0,0 +1,34 @@ +from pydantic import BaseModel +from pydantic.types import UUID4, Json +from typing import List, Optional, Any +from datetime import datetime + +class CheckupBase(BaseModel): + id: UUID4 + medic_id: UUID4 + created_at: datetime + + class Config: + orm_mode = True + +class CheckupDetail(CheckupBase): + 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 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] \ No newline at end of file diff --git a/src/medical_info/db/schemas/medical_card.py b/src/medical_info/db/schemas/medical_card.py index c661ae8..f18af80 100644 --- a/src/medical_info/db/schemas/medical_card.py +++ b/src/medical_info/db/schemas/medical_card.py @@ -11,29 +11,3 @@ class MedicalCardResponse(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] \ No newline at end of file diff --git a/src/medical_info/routers/checkups.py b/src/medical_info/routers/checkups.py index 7bba593..ebbc12e 100644 --- a/src/medical_info/routers/checkups.py +++ b/src/medical_info/routers/checkups.py @@ -1,20 +1,27 @@ from fastapi import Depends from fastapi.routing import APIRouter -from typing import List +from typing import List, Optional +from pydantic.types import UUID4 from medical_info.db import models -from medical_info.db.schemas import CheckupDetail, CheckupCreate +from medical_info.db.schemas import CheckupCreate, CheckupBase, CheckupDetail from medical_info.services import CheckupService, get_checkups_service router = APIRouter(prefix='/checkups') -@router.get('/', response_model=List[CheckupDetail]) +@router.get('/', response_model=List[CheckupBase]) 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) +@router.get('/{checkup_id}', response_model=CheckupDetail) +async def get_checkup( + checkup_id: UUID4, checkups_service: CheckupService = Depends(get_checkups_service) +) -> Optional[models.Checkup]: + return checkups_service.get(checkup_id) + +@router.post('/', status_code=201, response_model=CheckupBase) async def create_checkup( checkup: CheckupCreate, checkups_service: CheckupService = Depends(get_checkups_service) ) -> models.Checkup: