# apollo-level2-web-dev/l2b7-project-ph-healthcare-backend architecture

> Architecture diagram of the GitHub repository apollo-level2-web-dev/l2b7-project-ph-healthcare-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend
- Repository: https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend

## Overview

PH Healthcare System is an Express REST backend for patient registration and healthcare workflows. Its request path is client → Express routing → feature handler/service → database or integration → JSON response. The README says authentication is the only working feature today and describes appointments, schedules, payments, and other capabilities as planned; the tree and sampled sources nevertheless contain modules for them, so those appear as code subsystems, not claims of production readiness. Source excerpts establish selected calls; unsampled modules are represented cautiously, with evidence limits reflected in the edges.

Main entry points: [`src/app.ts`](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app.ts) (Express API), [`src/app/lib/prisma.ts`](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/prisma.ts) (PostgreSQL Access), [`src/app/module/chat/chat.service.ts`](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/chat/chat.service.ts) (Healthcare Chat), [`src/server.ts`](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/server.ts) (Server Startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["API Platform"]
  node_api["Express API<br/>[app.ts]"]
  node_server["Server Startup<br/>[server.ts]"]
  node_errors["Error Handling"]
end

subgraph group_identity["Identity"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_auth_handlers["Auth Handlers<br/>[auth.controller.ts]"]
  node_auth_routes["Auth Routes<br/>[auth.route.ts]"]
  node_auth_guard["JWT Role Guard<br/>[checkAuth.ts]"]
end

subgraph group_care["Care Workflows"]
  node_appointments["Appointments"]
  node_appointment_handlers["Appointment Handlers"]
  node_doctors["Doctor Management<br/>[doctor.service.ts]"]
  node_schedules["Schedules"]
  node_payments["Payments<br/>[payment.service.ts]"]
  node_prescriptions["Prescriptions"]
  node_users["User Management<br/>[user.service.ts]"]
end

subgraph group_support["Supporting Features"]
  node_analytics["Analytics"]
  node_chat["Healthcare Chat<br/>[chat.service.ts]"]
  node_indexer["Doctor Indexing<br/>[chat.indexer.ts]"]
end

subgraph group_integrations["Infrastructure"]
  node_database[("PostgreSQL Access<br/>[prisma.ts]")]
  node_redis[("Redis Cache<br/>[redis.ts]")]
  node_bkash["bKash Payments<br/>[bkash.ts]"]
  node_email["Email Service<br/>[nodemailer.ts]"]
  node_cloudinary["Cloudinary Uploads<br/>[cloudinary.ts]"]
  node_llm["LLM Client<br/>[llm.ts]"]
  node_vectors[("Vector Store<br/>[vectorStore.ts]")]
end

node_client(("API Client"))

node_client -->|"sends requests"| node_api
node_api -->|"routes to"| node_auth_routes
node_api -->|"routes to"| node_appointment_handlers
node_api -->|"routes to"| node_doctors
node_api -->|"routes to"| node_schedules
node_api -->|"routes to"| node_payments
node_api -->|"routes to"| node_prescriptions
node_api -->|"routes to"| node_users
node_api -->|"routes to"| node_analytics
node_api -->|"routes to"| node_chat
node_api -->|"handles errors"| node_errors
node_auth_routes -->|"dispatches"| node_auth_handlers
node_auth_routes -->|"uses guard"| node_auth_guard
node_auth_handlers -->|"calls"| node_auth
node_auth -->|"reads and writes"| node_database
node_auth -->|"reads and writes"| node_redis
node_auth -->|"sends mail"| node_email
node_auth_guard -->|"checks user"| node_database
node_appointment_handlers -->|"calls"| node_appointments
node_appointments -->|"reads and writes"| node_database
node_appointments -->|"gets token"| node_bkash
node_appointments -->|"sends mail"| node_email
node_doctors -->|"reads and writes"| node_database
node_doctors -->|"uploads files"| node_cloudinary
node_doctors -->|"updates embedding"| node_indexer
node_schedules -->|"reads and writes"| node_database
node_payments -->|"reads and writes"| node_database
node_prescriptions -->|"reads and writes"| node_database
node_prescriptions -->|"uploads files"| node_cloudinary
node_users -->|"reads and writes"| node_database
node_analytics -->|"queries"| node_database
node_chat -->|"calls model"| node_llm
node_chat -->|"searches vectors"| node_vectors
node_chat -->|"uses cache"| node_redis
node_chat -->|"reads data"| node_database
node_indexer -->|"reads doctors"| node_database
node_indexer -->|"writes vectors"| node_vectors
node_server -->|"starts listening"| node_api
node_server -->|"connects"| node_database
node_server -->|"connects"| node_redis
node_server -->|"reindexes doctors"| node_indexer

click node_api "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app.ts"
click node_server "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/server.ts"
click node_errors "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/middleware/globalErrorHandler.ts"
click node_auth "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.service.ts"
click node_auth_handlers "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.controller.ts"
click node_auth_routes "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.route.ts"
click node_auth_guard "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/middleware/checkAuth.ts"
click node_appointments "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/appointment/appointment.service.ts"
click node_appointment_handlers "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/appointment/appointment.controller.ts"
click node_doctors "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/doctor/doctor.service.ts"
click node_schedules "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/schedule/schedule.service.ts"
click node_payments "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/payment/payment.service.ts"
click node_prescriptions "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/prescription/prescription.service.ts"
click node_users "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/user/user.service.ts"
click node_analytics "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/analytics/analytics.service.ts"
click node_chat "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/chat/chat.service.ts"
click node_indexer "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/chat/chat.indexer.ts"
click node_database "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/prisma.ts"
click node_redis "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/redis.ts"
click node_bkash "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/bkash.ts"
click node_email "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/nodemailer.ts"
click node_cloudinary "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/cloudinary.ts"
click node_llm "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/llm.ts"
click node_vectors "https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/vectorStore.ts"

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_api,node_server,node_errors,node_client toneBlue
class node_auth,node_auth_handlers,node_auth_routes,node_auth_guard toneAmber
class node_appointments,node_appointment_handlers,node_doctors,node_schedules,node_payments,node_prescriptions,node_users toneMint
class node_analytics,node_chat,node_indexer toneRose
class node_database,node_redis,node_bkash,node_email,node_cloudinary,node_llm,node_vectors toneIndigo
```

## Components

### API Platform

- [Express API](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app.ts): `src/app.ts`
- [Server Startup](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/server.ts): `src/server.ts`
- [Error Handling](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/middleware/globalErrorHandler.ts): `src/app/middleware/globalErrorHandler.ts`

### Identity

- [Authentication](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.service.ts): `src/app/module/auth/auth.service.ts`
- [Auth Handlers](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.controller.ts): `src/app/module/auth/auth.controller.ts`
- [Auth Routes](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/auth/auth.route.ts): `src/app/module/auth/auth.route.ts`
- [JWT Role Guard](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/middleware/checkAuth.ts): `src/app/middleware/checkAuth.ts`

### Care Workflows

- [Appointments](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/appointment/appointment.service.ts): `src/app/module/appointment/appointment.service.ts`
- [Appointment Handlers](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/appointment/appointment.controller.ts): `src/app/module/appointment/appointment.controller.ts`
- [Doctor Management](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/doctor/doctor.service.ts): `src/app/module/doctor/doctor.service.ts`
- [Schedules](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/schedule/schedule.service.ts): `src/app/module/schedule/schedule.service.ts`
- [Payments](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/payment/payment.service.ts): `src/app/module/payment/payment.service.ts`
- [Prescriptions](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/prescription/prescription.service.ts): `src/app/module/prescription/prescription.service.ts`
- [User Management](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/user/user.service.ts): `src/app/module/user/user.service.ts`

### Supporting Features

- [Analytics](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/analytics/analytics.service.ts): `src/app/module/analytics/analytics.service.ts`
- [Healthcare Chat](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/chat/chat.service.ts): `src/app/module/chat/chat.service.ts`
- [Doctor Indexing](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/module/chat/chat.indexer.ts): `src/app/module/chat/chat.indexer.ts`

### Infrastructure

- [PostgreSQL Access](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/prisma.ts): `src/app/lib/prisma.ts`
- [Redis Cache](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/redis.ts): `src/app/lib/redis.ts`
- [bKash Payments](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/bkash.ts): `src/app/lib/bkash.ts`
- [Email Service](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/nodemailer.ts): `src/app/lib/nodemailer.ts`
- [Cloudinary Uploads](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/cloudinary.ts): `src/app/lib/cloudinary.ts`
- [LLM Client](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/llm.ts): `src/app/lib/llm.ts`
- [Vector Store](https://github.com/apollo-level2-web-dev/l2b7-project-ph-healthcare-backend/blob/main/src/app/lib/vectorStore.ts): `src/app/lib/vectorStore.ts`

### Other components

- **API Client**

## Connections

- API Client → Express API: sends requests (evidence: `src/app.ts`)
- Express API → Auth Routes: routes to (evidence: `src/app.ts`)
- Express API → Appointment Handlers: routes to (evidence: `src/app.ts`)
- Express API → Doctor Management: routes to (evidence: `src/app.ts`)
- Express API → Schedules: routes to (evidence: `src/app.ts`)
- Express API → Payments: routes to (evidence: `src/app.ts`)
- Express API → Prescriptions: routes to (evidence: `src/app.ts`)
- Express API → User Management: routes to (evidence: `src/app.ts`)
- Express API → Analytics: routes to (evidence: `src/app.ts`)
- Express API → Healthcare Chat: routes to (evidence: `src/app.ts`)
- Express API → Error Handling: handles errors (evidence: `src/app.ts`)
- Auth Routes → Auth Handlers: dispatches (evidence: `src/app/module/auth/auth.route.ts`)
- Auth Routes → JWT Role Guard: uses guard (evidence: `src/app/module/auth/auth.route.ts`)
- Auth Handlers → Authentication: calls (evidence: `src/app/module/auth/auth.controller.ts`)
- Authentication → PostgreSQL Access: reads and writes (evidence: `src/app/module/auth/auth.service.ts`)
- Authentication → Redis Cache: reads and writes (evidence: `src/app/module/auth/auth.service.ts`)
- Authentication → Email Service: sends mail (evidence: `src/app/module/auth/auth.service.ts`)
- JWT Role Guard → PostgreSQL Access: checks user (evidence: `src/app/middleware/checkAuth.ts`)
- Appointment Handlers → Appointments: calls (evidence: `src/app/module/appointment/appointment.controller.ts`)
- Appointments → PostgreSQL Access: reads and writes (evidence: `src/app/module/appointment/appointment.service.ts`)
- Appointments → bKash Payments: gets token (evidence: `src/app/module/appointment/appointment.service.ts`)
- Appointments → Email Service: sends mail (evidence: `src/app/module/appointment/appointment.service.ts`)
- Doctor Management → PostgreSQL Access: reads and writes (evidence: `src/app/module/doctor/doctor.service.ts`)
- Doctor Management → Cloudinary Uploads: uploads files (evidence: `src/app/module/doctor/doctor.service.ts`)
- Doctor Management → Doctor Indexing: updates embedding (evidence: `src/app/module/doctor/doctor.service.ts`)
- Schedules → PostgreSQL Access: reads and writes (evidence: `src/app/module/schedule/schedule.service.ts`)
- Payments → PostgreSQL Access: reads and writes (evidence: `src/app/module/payment/payment.service.ts`)
- Prescriptions → PostgreSQL Access: reads and writes (evidence: `src/app/module/prescription/prescription.service.ts`)
- Prescriptions → Cloudinary Uploads: uploads files (evidence: `src/app/module/prescription/prescription.service.ts`)
- User Management → PostgreSQL Access: reads and writes (evidence: `src/app/module/user/user.service.ts`)
- Analytics → PostgreSQL Access: queries (evidence: `src/app/module/analytics/analytics.service.ts`)
- Healthcare Chat → LLM Client: calls model (evidence: `src/app/module/chat/chat.service.ts`)
- Healthcare Chat → Vector Store: searches vectors (evidence: `src/app/module/chat/chat.service.ts`)
- Healthcare Chat → Redis Cache: uses cache (evidence: `src/app/module/chat/chat.service.ts`)
- Healthcare Chat → PostgreSQL Access: reads data (evidence: `src/app/module/chat/chat.service.ts`)
- Doctor Indexing → PostgreSQL Access: reads doctors (evidence: `src/app/module/chat/chat.indexer.ts`)
- Doctor Indexing → Vector Store: writes vectors (evidence: `src/app/module/chat/chat.indexer.ts`)
- Server Startup → Express API: starts listening (evidence: `src/server.ts`)
- Server Startup → PostgreSQL Access: connects (evidence: `src/server.ts`)
- Server Startup → Redis Cache: connects (evidence: `src/server.ts`)
- Server Startup → Doctor Indexing: reindexes doctors (evidence: `src/server.ts`)
