# bhumika-aga/mail-order-pharmacy architecture

> Architecture diagram of the GitHub repository bhumika-aga/mail-order-pharmacy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bhumika-aga/mail-order-pharmacy
- Repository: https://github.com/bhumika-aga/mail-order-pharmacy

## Overview

MediFlow is a mail-order pharmacy platform. Members use the portal to authenticate, browse drugs, manage subscriptions, and request or track refills; admins also manage accounts and refill status. Separate auth, drug, subscription, and refill services own those domains, with refill coordinating prescription checks and stock operations over REST. The README documents the principal service links and security model; sampled source confirms selected controller, service, and persistence behavior. Several unsampled API paths are shown only where the README supports the relationship.

Main entry points: [`frontend/member-portal/src/services/api.ts`](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/frontend/member-portal/src/services/api.ts) (API client), [`backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java`](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java) (Refill orchestration), [`backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java`](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java) (Drug endpoints), [`backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java`](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java) (Subscription endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["Member portal"]
  node_portal_app["Portal routes<br/>[App.tsx]"]
  node_portal_pages["Member workflows"]
  node_portal_api["API client<br/>[api.ts]"]
end

subgraph group_identity["Identity and access"]
  node_auth_api["Auth endpoints"]
  node_user_service["Account management<br/>[UserService.java]"]
  node_user_store[("User accounts<br/>[User.java]")]
  node_member_client["Member data erasure"]
end

subgraph group_catalog["Drug inventory"]
  node_drug_api["Drug endpoints"]
  node_drug_service["Catalog and stock<br/>[DrugService.java]"]
  node_drug_store[("Drug inventory<br/>[DrugLocation.java]")]
end

subgraph group_care["Subscriptions"]
  node_subscription_api["Subscription endpoints"]
  node_subscription_service["Prescription and subscription logic"]
  node_subscription_store[("Member prescriptions")]
  node_subscription_drug_client["Drug availability client"]
end

subgraph group_fulfillment["Refill fulfillment"]
  node_refill_api["Refill endpoints"]
  node_refill_service["Refill orchestration<br/>[RefillService.java]"]
  node_refill_store[("Refill orders<br/>[RefillOrder.java]")]
  node_refill_drug_client["Drug stock client"]
  node_stock_release["Stock release retries"]
  node_pending_release[("Pending releases")]
  node_subscription_client["Prescription and due client"]
end

node_member(("Member or admin"))
node_swagger["API documentation host"]

node_member -->|"uses"| node_portal_app
node_portal_app -->|"routes to"| node_portal_pages
node_portal_pages -.->|"requests data"| node_portal_api
node_portal_api -->|"authenticates"| node_auth_api
node_portal_api -->|"searches drugs"| node_drug_api
node_portal_api -->|"manages subscriptions"| node_subscription_api
node_portal_api -->|"requests refills"| node_refill_api
node_auth_api -->|"delegates to"| node_user_service
node_user_service -->|"saves accounts"| node_user_store
node_user_service -->|"erases member data"| node_member_client
node_member_client -->|"requests erasure"| node_refill_api
node_member_client -->|"requests erasure"| node_subscription_api
node_drug_api -->|"delegates to"| node_drug_service
node_drug_service -->|"reads stock"| node_drug_store
node_subscription_api -->|"delegates to"| node_subscription_service
node_subscription_service -->|"persists prescriptions"| node_subscription_store
node_subscription_service -->|"checks availability"| node_subscription_drug_client
node_subscription_drug_client -->|"verifies availability"| node_drug_api
node_refill_api -.->|"delegates to"| node_refill_service
node_refill_service -->|"persists orders"| node_refill_store
node_refill_service -->|"checks prescriptions and dues"| node_subscription_client
node_subscription_client -->|"gets refill dues"| node_subscription_api
node_refill_service -->|"reserves stock"| node_refill_drug_client
node_refill_drug_client -->|"reserves or releases"| node_drug_api
node_refill_service -->|"queues stock return"| node_stock_release
node_stock_release -->|"stores retries"| node_pending_release
node_stock_release -->|"sends releases"| node_refill_drug_client
node_member -.->|"browses API docs"| node_swagger

click node_portal_app "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/frontend/member-portal/src/App.tsx"
click node_portal_pages "https://github.com/bhumika-aga/mail-order-pharmacy/tree/main/frontend/member-portal/src/pages"
click node_portal_api "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/frontend/member-portal/src/services/api.ts"
click node_auth_api "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/controller/AuthController.java"
click node_user_service "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/service/UserService.java"
click node_user_store "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/entity/User.java"
click node_member_client "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/client/MemberDataClient.java"
click node_drug_api "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java"
click node_drug_service "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/service/DrugService.java"
click node_drug_store "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/entity/DrugLocation.java"
click node_subscription_api "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java"
click node_subscription_service "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/service/SubscriptionService.java"
click node_subscription_store "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/entity/MemberPrescription.java"
click node_subscription_drug_client "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/client/DrugServiceClient.java"
click node_refill_api "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/controller/RefillController.java"
click node_refill_service "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java"
click node_refill_store "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/RefillOrder.java"
click node_refill_drug_client "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/client/DrugServiceClient.java"
click node_stock_release "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/service/StockReleaseService.java"
click node_pending_release "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/PendingStockRelease.java"
click node_subscription_client "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/client/SubscriptionServiceClient.java"
click node_swagger "https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/swagger-aggregator/src/main/java/com/pharmacy/swagger/RootRedirectController.java"

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_portal_app,node_portal_pages,node_portal_api toneBlue
class node_auth_api,node_user_service,node_user_store,node_member_client toneAmber
class node_drug_api,node_drug_service,node_drug_store,node_swagger toneMint
class node_subscription_api,node_subscription_service,node_subscription_store,node_subscription_drug_client toneRose
class node_refill_api,node_refill_service,node_refill_store,node_refill_drug_client,node_stock_release,node_pending_release,node_subscription_client,node_member toneIndigo
```

## Components

### Member portal

- [Portal routes](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/frontend/member-portal/src/App.tsx): `frontend/member-portal/src/App.tsx`
- [Member workflows](https://github.com/bhumika-aga/mail-order-pharmacy/tree/main/frontend/member-portal/src/pages): `frontend/member-portal/src/pages`
- [API client](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/frontend/member-portal/src/services/api.ts): `frontend/member-portal/src/services/api.ts`

### Identity and access

- [Auth endpoints](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/controller/AuthController.java): `backend/auth-microservice/src/main/java/com/pharmacy/auth/controller/AuthController.java`
- [Account management](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/service/UserService.java): `backend/auth-microservice/src/main/java/com/pharmacy/auth/service/UserService.java`
- [User accounts](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/entity/User.java): `backend/auth-microservice/src/main/java/com/pharmacy/auth/entity/User.java`
- [Member data erasure](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/auth-microservice/src/main/java/com/pharmacy/auth/client/MemberDataClient.java): `backend/auth-microservice/src/main/java/com/pharmacy/auth/client/MemberDataClient.java`

### Drug inventory

- [Drug endpoints](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java): `backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java`
- [Catalog and stock](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/service/DrugService.java): `backend/drugs-microservice/src/main/java/com/pharmacy/drugs/service/DrugService.java`
- [Drug inventory](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/drugs-microservice/src/main/java/com/pharmacy/drugs/entity/DrugLocation.java): `backend/drugs-microservice/src/main/java/com/pharmacy/drugs/entity/DrugLocation.java`

### Subscriptions

- [Subscription endpoints](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java): `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java`
- [Prescription and subscription logic](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/service/SubscriptionService.java): `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/service/SubscriptionService.java`
- [Member prescriptions](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/entity/MemberPrescription.java): `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/entity/MemberPrescription.java`
- [Drug availability client](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/subscription-microservice/src/main/java/com/pharmacy/subscription/client/DrugServiceClient.java): `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/client/DrugServiceClient.java`

### Refill fulfillment

- [Refill endpoints](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/controller/RefillController.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/controller/RefillController.java`
- [Refill orchestration](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java`
- [Refill orders](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/RefillOrder.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/RefillOrder.java`
- [Drug stock client](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/client/DrugServiceClient.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/client/DrugServiceClient.java`
- [Stock release retries](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/service/StockReleaseService.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/StockReleaseService.java`
- [Pending releases](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/PendingStockRelease.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/entity/PendingStockRelease.java`
- [Prescription and due client](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/refill-microservice/src/main/java/com/pharmacy/refill/client/SubscriptionServiceClient.java): `backend/refill-microservice/src/main/java/com/pharmacy/refill/client/SubscriptionServiceClient.java`

### Other components

- **Member or admin**
- [API documentation host](https://github.com/bhumika-aga/mail-order-pharmacy/blob/main/backend/swagger-aggregator/src/main/java/com/pharmacy/swagger/RootRedirectController.java): `backend/swagger-aggregator/src/main/java/com/pharmacy/swagger/RootRedirectController.java`

## Connections

- Member or admin → Portal routes: uses (evidence: `README.md`)
- Portal routes → Member workflows: routes to (evidence: `frontend/member-portal/src/App.tsx`)
- Member workflows → API client: requests data
- API client → Auth endpoints: authenticates (evidence: `README.md`)
- API client → Drug endpoints: searches drugs (evidence: `README.md`)
- API client → Subscription endpoints: manages subscriptions (evidence: `README.md`)
- API client → Refill endpoints: requests refills (evidence: `README.md`)
- Auth endpoints → Account management: delegates to (evidence: `backend/auth-microservice/src/main/java/com/pharmacy/auth/controller/AuthController.java`)
- Account management → User accounts: saves accounts (evidence: `backend/auth-microservice/src/main/java/com/pharmacy/auth/service/UserService.java`)
- Account management → Member data erasure: erases member data (evidence: `backend/auth-microservice/src/main/java/com/pharmacy/auth/service/UserService.java`)
- Member data erasure → Refill endpoints: requests erasure (evidence: `README.md`)
- Member data erasure → Subscription endpoints: requests erasure (evidence: `README.md`)
- Drug endpoints → Catalog and stock: delegates to (evidence: `backend/drugs-microservice/src/main/java/com/pharmacy/drugs/controller/DrugController.java`)
- Catalog and stock → Drug inventory: reads stock (evidence: `backend/drugs-microservice/src/main/java/com/pharmacy/drugs/service/DrugService.java`)
- Subscription endpoints → Prescription and subscription logic: delegates to (evidence: `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/controller/SubscriptionController.java`)
- Prescription and subscription logic → Member prescriptions: persists prescriptions (evidence: `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/service/SubscriptionService.java`)
- Prescription and subscription logic → Drug availability client: checks availability (evidence: `backend/subscription-microservice/src/main/java/com/pharmacy/subscription/service/SubscriptionService.java`)
- Drug availability client → Drug endpoints: verifies availability (evidence: `README.md`)
- Refill endpoints → Refill orchestration: delegates to (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/controller/RefillController.java`)
- Refill orchestration → Refill orders: persists orders (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java`)
- Refill orchestration → Prescription and due client: checks prescriptions and dues (evidence: `README.md`)
- Prescription and due client → Subscription endpoints: gets refill dues (evidence: `README.md`)
- Refill orchestration → Drug stock client: reserves stock (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java`)
- Drug stock client → Drug endpoints: reserves or releases (evidence: `README.md`)
- Refill orchestration → Stock release retries: queues stock return (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/RefillService.java`)
- Stock release retries → Pending releases: stores retries (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/StockReleaseService.java`)
- Stock release retries → Drug stock client: sends releases (evidence: `backend/refill-microservice/src/main/java/com/pharmacy/refill/service/StockReleaseService.java`)
- Member or admin → API documentation host: browses API docs
