63 lines
2.7 KiB
Markdown
63 lines
2.7 KiB
Markdown
|
|
# CLQMS Frontend - Project Overview
|
||
|
|
|
||
|
|
## Project Purpose
|
||
|
|
CLQMS (Clinical Laboratory Quality Management System) frontend built with SvelteKit. This is a web application for managing clinical laboratory operations including patients, specimens, test orders, results, and laboratory workflows.
|
||
|
|
|
||
|
|
## Tech Stack
|
||
|
|
- **Framework**: SvelteKit (latest with Svelte 5 runes)
|
||
|
|
- **Styling**: TailwindCSS 4 + DaisyUI
|
||
|
|
- **Icons**: Lucide Svelte
|
||
|
|
- **Language**: JavaScript (no TypeScript - KISS principle)
|
||
|
|
- **Build Tool**: Vite
|
||
|
|
- **Package Manager**: pnpm
|
||
|
|
- **Authentication**: JWT tokens with HTTP-only cookies
|
||
|
|
|
||
|
|
## Architecture Principles
|
||
|
|
- **KISS**: Keep It Simple - plain JavaScript, minimal tooling
|
||
|
|
- **Manual API Wrapper**: No codegen, simple fetch-based API client
|
||
|
|
- **File-based Routing**: Standard SvelteKit routing patterns
|
||
|
|
- **Server-side Auth Check**: SvelteKit hooks for session validation
|
||
|
|
|
||
|
|
## Project Structure
|
||
|
|
```
|
||
|
|
src/
|
||
|
|
├── lib/
|
||
|
|
│ ├── api/ # API service functions (client.js, auth.js, valuesets.js, etc.)
|
||
|
|
│ ├── components/ # Reusable Svelte components (DataTable, Modal, SelectDropdown, Sidebar, etc.)
|
||
|
|
│ ├── stores/ # Svelte stores (auth.js, valuesets.js)
|
||
|
|
│ └── utils/ # Utility functions (toast.js)
|
||
|
|
├── routes/ # SvelteKit routes
|
||
|
|
│ ├── +layout.svelte # Root layout
|
||
|
|
│ ├── login/ # Login page
|
||
|
|
│ └── (app)/ # Protected route group
|
||
|
|
│ ├── +layout.svelte # Auth check with sidebar
|
||
|
|
│ ├── dashboard/
|
||
|
|
│ ├── master-data/ # Locations, contacts, specialties, valuesets, geography, occupations, counters
|
||
|
|
│ └── patients/
|
||
|
|
├── app.css # Global styles with Tailwind
|
||
|
|
└── app.html # HTML template
|
||
|
|
```
|
||
|
|
|
||
|
|
## Key Features Implemented
|
||
|
|
- Phase 0: Foundation (Auth, base API client, layouts) ✅
|
||
|
|
- Phase 1: Foundation Data (ValueSets, Locations, Contacts, Occupations, Specialties, Counters, Geography) ✅
|
||
|
|
- Phase 2a: Patient CRUD ✅
|
||
|
|
- Phase 11: Authentication (login/logout, JWT handling) ✅
|
||
|
|
|
||
|
|
## Pending Features
|
||
|
|
- Phase 2b: Advanced Patient Features
|
||
|
|
- Phase 3: Patient Visits (list page exists, needs create/edit forms)
|
||
|
|
- Phase 4: Specimen Management
|
||
|
|
- Phase 5: Test Catalog
|
||
|
|
- Phase 6: Orders
|
||
|
|
- Phase 7: Results & Dashboard
|
||
|
|
- Phase 8: User-defined ValueSets
|
||
|
|
- Phase 9: Organization Structure
|
||
|
|
- Phase 10: Edge API (Instrument Integration)
|
||
|
|
|
||
|
|
## API Proxy Configuration
|
||
|
|
API requests to `/api` are proxied to `http://localhost:8000` in development mode (configured in vite.config.js).
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
- `VITE_API_URL`: Base URL for API (default: empty string, uses proxy in dev)
|