From e69aab6573219ef89bf266a70d50c798352cb36b Mon Sep 17 00:00:00 2001 From: dderbentsov Date: Thu, 20 Jul 2023 02:10:58 +0300 Subject: [PATCH] init --- .gitignore | 2 ++ notes.txt | 3 ++ setup.py | 13 ++++++++ src/db/__init__.py | 0 src/db/models.py | 36 +++++++++++++++++++++++ src/medical_info/__init__.py | 0 src/medical_info/app.py | 19 ++++++++++++ src/medical_info/main.py | 3 ++ src/medical_info/routers/__init__.py | 0 src/medical_info/routers/medical_cards.py | 9 ++++++ 10 files changed, 85 insertions(+) create mode 100644 .gitignore create mode 100644 notes.txt create mode 100644 setup.py create mode 100644 src/db/__init__.py create mode 100644 src/db/models.py create mode 100644 src/medical_info/__init__.py create mode 100644 src/medical_info/app.py create mode 100644 src/medical_info/main.py create mode 100644 src/medical_info/routers/__init__.py create mode 100644 src/medical_info/routers/medical_cards.py 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" +