commit e69aab6573219ef89bf266a70d50c798352cb36b Author: dderbentsov Date: Thu Jul 20 02:10:58 2023 +0300 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c5e0573 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.cpython +__pycache__ \ No newline at end of file diff --git a/notes.txt b/notes.txt new file mode 100644 index 0000000..aba6264 --- /dev/null +++ b/notes.txt @@ -0,0 +1,3 @@ +export PYTHONPATH='/home/dd/astra/medical_information/src' + +uvicorn --reload --port 8000 medical_info.main:app \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a10f153 --- /dev/null +++ b/setup.py @@ -0,0 +1,13 @@ +from setuptools import find_packages, setup + +install_requires = ['fastapi', 'uvicorn'] + +setup( + name='medical_info', + install_requires=install_requires, + use_scm_version=True, + setup_requires=['setuptools_scm'], + packages=find_packages(where='src'), + package_dir={'':'src'}, + include_package_data=True, +) \ No newline at end of file diff --git a/src/db/__init__.py b/src/db/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/db/models.py b/src/db/models.py new file mode 100644 index 0000000..2397f1f --- /dev/null +++ b/src/db/models.py @@ -0,0 +1,36 @@ +import uuid +from typing import Any +import datetime + +import sqlalchemy as sa +from sqlalchemy.dialects.postgresql import UUID, ARRAY +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import relationship, DeclarativeBase +from sqlalchemy.sql.schema import ForeignKey + +class Base(DeclarativeBase): + pass + +class BaseModel(Base): + __abstract__ = True + + id = sa.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, index=True) + created_at = sa.Column(sa.TIMESTAMP, nullable=False, default=datetime.datetime.now()) + updated_at = sa.Column(sa.TIMESTAMP, nullable=False, default=datetime.datetime.now(), onupdate=datetime.datetime.now()) + +class MedicalCard(BaseModel): + number = sa.Column(sa.String(100), nullable=False) + checkups = relationship('Checkup', back_populates='medical_card') + confidant_persons = sa.Column(ARRAY(UUID(as_uuid=True))) + + +class Checkup(BaseModel): + medical_card_id = sa.Column(UUID(as_uuid=True), sa.ForeignKey("medical_cards.id"), nullable=False) + medical_card = relationship('MedicalCard', back_populates='medical_cards') + medic_id = sa.Column(UUID(as_uuid=True)) + claims = sa.Column(ARRAY(String)) # жалобы + allergies = sa.Column(ARRAY(String)) # аллергологический анамнез + diseases = sa.Column(ARRAY(String)) # перенесенные и сопутствующие заболевания + medicines = sa.Column(ARRAY(String)) # принимаемые лекарственные препараты + disease_process = sa.Column(sa.Text) # Развитие настоящего заболевания + visual_inspection = sa.Column(ARRAY(String)) # внешний осмотр diff --git a/src/medical_info/__init__.py b/src/medical_info/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/medical_info/app.py b/src/medical_info/app.py new file mode 100644 index 0000000..d012819 --- /dev/null +++ b/src/medical_info/app.py @@ -0,0 +1,19 @@ +from fastapi import FastAPI + +def create_app() -> FastAPI: + app = FastAPI ( + title='medical_info', + description='Medical Information Service', + version='1.0' + ) + + @app.get('/health') + async def health() -> str: + return 'ok' + + + from medical_info.routers import medical_cards + + app.include_router(medical_cards.router) + + return app \ No newline at end of file diff --git a/src/medical_info/main.py b/src/medical_info/main.py new file mode 100644 index 0000000..ff80116 --- /dev/null +++ b/src/medical_info/main.py @@ -0,0 +1,3 @@ +from medical_info.app import create_app + +app = create_app() \ No newline at end of file diff --git a/src/medical_info/routers/__init__.py b/src/medical_info/routers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/medical_info/routers/medical_cards.py b/src/medical_info/routers/medical_cards.py new file mode 100644 index 0000000..ca84881 --- /dev/null +++ b/src/medical_info/routers/medical_cards.py @@ -0,0 +1,9 @@ +from fastapi import Depends +from fastapi.routing import APIRouter + +router = APIRouter(prefix='/medical_cards') + +@router.get('/') +def list_persons(): + return "ok" +