# nishok-12/meditrain_ai architecture

> Architecture diagram of the GitHub repository nishok-12/meditrain_ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nishok-12/meditrain_ai
- Repository: https://github.com/nishok-12/meditrain_ai

## Overview

#### 1. Purpose and Runtime
MediTrain AI is a Flask-based medical-assistance application with separate doctor and patient chat experiences, disease-related prediction pages, account/profile/history functionality, and a guest quick-chat path. Its executable entry point is `Final_project/app.py`; it runs as a Python 3.8+ web server, locally documented on port 9999 and deployable to Render.

#### 2. Web Application Boundary
`Final_project/app.py` is the central composition point for Flask routes, request handling, template rendering, model/data loading, and persistence. Server-rendered UI templates define the application’s main surfaces:
- `Final_project/templates/home.html`
- `Final_project/templates/chat.html`
- `Final_project/templates/pchat.html`

Authenticated account workflows are represented by `Final_project/templates/login.html`, `Final_project/templates/register.html`, and `Final_project/templates/profile.html`. Static CSS and packaged inference assets are served from `Final_project/static/`.

#### 3. Dual Chat / Guidance Flows
The product distinguishes doctor-oriented and patient-oriented conversational paths, with quick chat available without login and profile/history requiring authentication. The model-development boundary is split by audience:
- `Models/Doctor Model/symptom_disease.ipynb`
- `Models/Doctor Model/disease_treatment.ipynb`
- `Models/Patient Model/disease_symptom.ipynb`
- `Models/Patient Model/disease_treatment.ipynb`

These notebooks are offline training/experimentation artifacts; production inference consumes serialized assets packaged under `Final_project/static/model/`.

#### 4. ML Inference Assets
The deployed application uses locally stored, scratch-built sklearn-style classifiers and text vectorizers rather than a remote model API or pretrained model service. Core prediction artifacts include:
- `Final_project/static/model/logistic_regression_model.pkl`
- `Final_project/static/model/tfidf_vectorizer.pkl`
- `Final_project/static/model/enhanced_treatment_prediction_model.joblib`

Additional disease-specific artifacts support diabetes, heart-disease, and Alzheimer-related views: `diabetes.pkl`, `hdp_model.pkl`, and `alzheimer_model.pkl` in `Final_project/static/model/`. Corresponding page boundaries are `Final_project/templates/diabetes.html`, `Final_project/templates/heart_disease.html`, and `Final_project/templates/alzheimer.html`.

#### 5. Data Pipeline and Knowledge Inputs
Raw Kaggle-derived source data is retained separately from transformed datasets:
- `Datasets/Actual_downloaded_datasets/dataset.csv`
- `Datasets/Actual_downloaded_datasets/symptom_precaution.csv`
- `Datasets/Modifided_datasets/disease.csv`

The runtime receives a curated copy of key CSVs from `Final_project/static/dataset/`, including `symptoms.csv`, `disease.csv`, and `unique_treatments.csv`. This forms the boundary between offline dataset preparation/model training and web-time lookup or prediction.

#### 6. Persistence and Schema Evolution
User data and diagnostic/history-related state are stored in a local SQLite database:
- `Final_project/instance/meditrain.db`

Flask-SQLAlchemy and Flask-Migrate are the intended persistence stack. Migration history and schema evolution are tracked under:
- `Final_project/migrations/env.py`
- `Final_project/migrations/versions/7d25f1a8921a_initial_migration.py`

SQLite is file-backed and appropriate for local/small deployment, but requires persistent disk handling when hosted on Render.

#### 7. Infrastructure and Dependencies
The runtime dependency contract is `Final_project/requirements.txt`, covering Flask, SQLAlchemy/migrations, pandas, fuzzy matching, scikit-learn, and joblib. There are no declared external inference, identity, or managed-database services; model inference and data retrieval occur in-process from repository-packaged files. Render is the documented hosting target, while the application’s stateful SQLite database and large serialized model files are its principal deployment concerns.

Main entry points: [`Final_project/app.py`](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/app.py) (Flask application), [`Datasets/Modifided_datasets/disease.csv`](https://github.com/nishok-12/meditrain_ai/blob/main/Datasets/Modifided_datasets/disease.csv) (Curated training data), [`Final_project/static/model/logistic_regression_model.pkl`](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/model/logistic_regression_model.pkl) (Packaged inference models), [`Final_project/instance/meditrain.db`](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/instance/meditrain.db) (MediTrain SQLite)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Flask web app"]
  node_app["Flask application<br/>Python server<br/>[app.py]"]
  node_main_ui["Home and chat UI<br/>server templates<br/>[chat.html]"]
  node_patient_chat["Patient chat UI<br/>server template<br/>[pchat.html]"]
  node_home["Home UI<br/>server template<br/>[home.html]"]
  node_accounts["Account and profile UI<br/>authenticated templates<br/>[profile.html]"]
  node_disease_pages["Disease prediction pages<br/>server templates<br/>[diabetes.html]"]
end

subgraph group_ml["ML pipeline"]
  node_inference_assets["Packaged inference models<br/>serialized sklearn assets"]
  node_clinical_models["Disease-specific models<br/>serialized predictors<br/>[diabetes.pkl]"]
  node_doctor_notebooks["Doctor model experiments<br/>training notebooks"]
  node_patient_notebooks["Patient model experiments<br/>training notebooks"]
end

subgraph group_data["Data &amp; persistence"]
  node_raw_datasets["Raw Kaggle datasets<br/>source CSVs<br/>[dataset.csv]"]
  node_curated_dataset["Curated training data<br/>transformed CSV<br/>[disease.csv]"]
  node_runtime_csvs["Runtime lookup datasets<br/>packaged CSVs<br/>[symptoms.csv]"]
  node_sqlite[("MediTrain SQLite<br/>local database<br/>[meditrain.db]")]
  node_migrations["Schema migrations<br/>Flask-Migrate<br/>[env.py]"]
end

subgraph group_deploy["Deployment"]
  node_dependencies["Runtime dependencies<br/>Python requirements<br/>[requirements.txt]"]
  node_render{{"Render hosting<br/>deployment target"}}
end

node_app -->|"renders"| node_main_ui
node_app -->|"renders"| node_patient_chat
node_app -->|"renders"| node_home
node_app -->|"renders"| node_accounts
node_app -->|"renders"| node_disease_pages
node_app -->|"loads for chat inference"| node_inference_assets
node_app -->|"loads for predictions"| node_clinical_models
node_app -->|"reads lookups"| node_runtime_csvs
node_app -->|"persists users and history"| node_sqlite
node_migrations -->|"evolves schema"| node_sqlite
node_raw_datasets -->|"prepared into"| node_curated_dataset
node_curated_dataset -->|"training input"| node_doctor_notebooks
node_curated_dataset -->|"training input"| node_patient_notebooks
node_doctor_notebooks -.->|"produces artifacts"| node_inference_assets
node_patient_notebooks -.->|"produces artifacts"| node_inference_assets
node_curated_dataset -.->|"curated copy"| node_runtime_csvs
node_dependencies -->|"defines runtime environment"| node_app
node_render -->|"hosts"| node_app
node_render -.->|"needs persistent storage"| node_sqlite

click node_app "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/app.py"
click node_main_ui "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/chat.html"
click node_patient_chat "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/pchat.html"
click node_home "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/home.html"
click node_accounts "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/profile.html"
click node_disease_pages "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/diabetes.html"
click node_inference_assets "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/model/logistic_regression_model.pkl"
click node_clinical_models "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/model/diabetes.pkl"
click node_doctor_notebooks "https://github.com/nishok-12/meditrain_ai/blob/main/Models/Doctor%20Model/symptom_disease.ipynb"
click node_patient_notebooks "https://github.com/nishok-12/meditrain_ai/blob/main/Models/Patient%20Model/disease_symptom.ipynb"
click node_raw_datasets "https://github.com/nishok-12/meditrain_ai/blob/main/Datasets/Actual_downloaded_datasets/dataset.csv"
click node_curated_dataset "https://github.com/nishok-12/meditrain_ai/blob/main/Datasets/Modifided_datasets/disease.csv"
click node_runtime_csvs "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/dataset/symptoms.csv"
click node_sqlite "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/instance/meditrain.db"
click node_migrations "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/migrations/env.py"
click node_dependencies "https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/requirements.txt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_main_ui,node_patient_chat,node_home,node_accounts,node_disease_pages toneBlue
class node_inference_assets,node_clinical_models,node_doctor_notebooks,node_patient_notebooks toneAmber
class node_raw_datasets,node_curated_dataset,node_runtime_csvs,node_sqlite,node_migrations toneMint
class node_dependencies,node_render toneRose
```

## Components

### Flask web app

- [Flask application](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/app.py): Python server · Central route, rendering, inference, and persistence composition. · `Final_project/app.py`
- [Home and chat UI](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/chat.html): server templates · Doctor and patient chat surfaces. · `Final_project/templates/chat.html`
- [Patient chat UI](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/pchat.html): server template · `Final_project/templates/pchat.html`
- [Home UI](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/home.html): server template · `Final_project/templates/home.html`
- [Account and profile UI](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/profile.html): authenticated templates · Login, registration, profile, and history workflows. · `Final_project/templates/profile.html`
- [Disease prediction pages](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/templates/diabetes.html): server templates · Diabetes, heart disease, and Alzheimer views. · `Final_project/templates/diabetes.html`

### ML pipeline

- [Packaged inference models](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/model/logistic_regression_model.pkl): serialized sklearn assets · Local classifiers and vectorizers loaded in-process. · `Final_project/static/model/logistic_regression_model.pkl`
- [Disease-specific models](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/model/diabetes.pkl): serialized predictors · Diabetes, heart-disease, and Alzheimer prediction assets. · `Final_project/static/model/diabetes.pkl`
- [Doctor model experiments](https://github.com/nishok-12/meditrain_ai/blob/main/Models/Doctor%20Model/symptom_disease.ipynb): training notebooks · Symptom-to-disease and disease-to-treatment development. · `Models/Doctor Model/symptom_disease.ipynb`
- [Patient model experiments](https://github.com/nishok-12/meditrain_ai/blob/main/Models/Patient%20Model/disease_symptom.ipynb): training notebooks · Disease-to-symptom and treatment development. · `Models/Patient Model/disease_symptom.ipynb`

### Data & persistence

- [Raw Kaggle datasets](https://github.com/nishok-12/meditrain_ai/blob/main/Datasets/Actual_downloaded_datasets/dataset.csv): source CSVs · Retained downloaded clinical source data. · `Datasets/Actual_downloaded_datasets/dataset.csv`
- [Curated training data](https://github.com/nishok-12/meditrain_ai/blob/main/Datasets/Modifided_datasets/disease.csv): transformed CSV · `Datasets/Modifided_datasets/disease.csv`
- [Runtime lookup datasets](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/static/dataset/symptoms.csv): packaged CSVs · Curated symptoms, disease, and treatment lookup data. · `Final_project/static/dataset/symptoms.csv`
- [MediTrain SQLite](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/instance/meditrain.db): local database · Stores users and diagnostic/history-related state. · `Final_project/instance/meditrain.db`
- [Schema migrations](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/migrations/env.py): Flask-Migrate · Tracks database schema evolution. · `Final_project/migrations/env.py`

### Deployment

- [Runtime dependencies](https://github.com/nishok-12/meditrain_ai/blob/main/Final_project/requirements.txt): Python requirements · Flask, SQLAlchemy, pandas, sklearn, joblib, and related packages. · `Final_project/requirements.txt`
- **Render hosting**: deployment target · Requires persistent disk for SQLite state.

## Connections

- Flask application → Home and chat UI: renders
- Flask application → Patient chat UI: renders
- Flask application → Home UI: renders
- Flask application → Account and profile UI: renders
- Flask application → Disease prediction pages: renders
- Flask application → Packaged inference models: loads for chat inference
- Flask application → Disease-specific models: loads for predictions
- Flask application → Runtime lookup datasets: reads lookups
- Flask application → MediTrain SQLite: persists users and history
- Schema migrations → MediTrain SQLite: evolves schema
- Raw Kaggle datasets → Curated training data: prepared into
- Curated training data → Doctor model experiments: training input
- Curated training data → Patient model experiments: training input
- Doctor model experiments → Packaged inference models: produces artifacts
- Patient model experiments → Packaged inference models: produces artifacts
- Curated training data → Runtime lookup datasets: curated copy
- Runtime dependencies → Flask application: defines runtime environment
- Render hosting → Flask application: hosts
- Render hosting → MediTrain SQLite: needs persistent storage
