295 lines
8.0 KiB
Markdown
295 lines
8.0 KiB
Markdown
|
|
# CLQMS MVP Roadmap
|
||
|
|
|
||
|
|
## Executive Summary
|
||
|
|
|
||
|
|
**CLQMS (Clinical Laboratory Quality Management System)** - A comprehensive laboratory information system for clinical diagnostics.
|
||
|
|
|
||
|
|
### Current State
|
||
|
|
- ✅ Authentication & authorization
|
||
|
|
- ✅ Patient management (CRUD)
|
||
|
|
- ✅ Visit management with ADT tracking
|
||
|
|
- ✅ Order entry (create orders with specimens and tests)
|
||
|
|
- ✅ Master data management (contacts, locations, containers, organization, tests)
|
||
|
|
- ⚠️ Dashboard (static mock data)
|
||
|
|
- ❌ **Results management** (CRITICAL GAP)
|
||
|
|
- ❌ **Report viewing** (CRITICAL GAP)
|
||
|
|
|
||
|
|
### MVP Goal
|
||
|
|
Enable end-to-end laboratory workflow: Patient → Visit → Order → Results → Report
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 1: Core Laboratory Workflow (CRITICAL - Weeks 1-3)
|
||
|
|
|
||
|
|
### 1.1 Results Management System
|
||
|
|
**Priority: CRITICAL** - Without results, this is not a laboratory system
|
||
|
|
|
||
|
|
#### API Endpoints Available:
|
||
|
|
- `GET /api/results` - List results (with filters by order_id, patient_id)
|
||
|
|
- `GET /api/results/{id}` - Get single result detail
|
||
|
|
- `PATCH /api/results/{id}` - Update result with auto-validation
|
||
|
|
- `DELETE /api/results/{id}` - Soft delete result
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Results Entry Page**
|
||
|
|
- View results by order or patient
|
||
|
|
- Batch entry mode for efficient data input
|
||
|
|
- Auto-validation against reference ranges (L/H flags)
|
||
|
|
- Support for different result types: NMRIC, RANGE, TEXT, VSET
|
||
|
|
|
||
|
|
2. **Results Review & Verification**
|
||
|
|
- List results pending verification
|
||
|
|
- Bulk verify results
|
||
|
|
- Critical/high-low flag highlighting
|
||
|
|
|
||
|
|
3. **Results History**
|
||
|
|
- Cumulative patient results view
|
||
|
|
- Trend charts for numeric results
|
||
|
|
- Delta checking (compare with previous results)
|
||
|
|
|
||
|
|
#### UI Components Needed:
|
||
|
|
- ResultsEntryPage.svelte
|
||
|
|
- ResultInputModal.svelte (handles different result types)
|
||
|
|
- ResultsByOrderView.svelte
|
||
|
|
- ResultsByPatientView.svelte
|
||
|
|
- CriticalResultsAlert.svelte
|
||
|
|
|
||
|
|
#### API Client:
|
||
|
|
- `src/lib/api/results.js` (NEW)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 1.2 Report Generation & Viewing
|
||
|
|
**Priority: CRITICAL** - Final output of laboratory work
|
||
|
|
|
||
|
|
#### API Endpoints Available:
|
||
|
|
- `GET /api/reports/{orderID}` - Generate HTML lab report
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Report Viewer**
|
||
|
|
- View HTML reports in browser
|
||
|
|
- Print-friendly layout
|
||
|
|
- PDF export capability (browser print to PDF)
|
||
|
|
|
||
|
|
2. **Report Status Tracking**
|
||
|
|
- Track order status: ORD → SCH → ANA → VER → REV → REP
|
||
|
|
- Visual status indicators
|
||
|
|
|
||
|
|
#### UI Components Needed:
|
||
|
|
- ReportViewerModal.svelte
|
||
|
|
- ReportPrintView.svelte
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 1.3 Live Dashboard
|
||
|
|
**Priority: HIGH** - Replace static data with real metrics
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Real-time Metrics**
|
||
|
|
- Pending orders count (from orders API)
|
||
|
|
- Today's results count (from results API)
|
||
|
|
- Critical results count (filter results by flag)
|
||
|
|
- Active patients count (from patients API)
|
||
|
|
|
||
|
|
2. **Activity Feed**
|
||
|
|
- Recent orders created
|
||
|
|
- Recent results received
|
||
|
|
- Recent patients registered
|
||
|
|
|
||
|
|
#### Implementation:
|
||
|
|
- Update `src/routes/(app)/dashboard/+page.svelte`
|
||
|
|
- Add dashboard API endpoint if needed
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 2: Order Management Enhancement (Weeks 4-5)
|
||
|
|
|
||
|
|
### 2.1 Order Workflow Management
|
||
|
|
**Priority: HIGH**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Order Status Tracking**
|
||
|
|
- Visual pipeline: Ordered → Scheduled → Analysis → Verified → Reviewed → Reported
|
||
|
|
- Bulk status updates
|
||
|
|
|
||
|
|
2. **Order Details Enhancement**
|
||
|
|
- View specimens associated with order
|
||
|
|
- View test results within order
|
||
|
|
- Direct link to results entry from order
|
||
|
|
|
||
|
|
#### API Endpoints:
|
||
|
|
- `POST /api/ordertest/status` - Update order status (already available)
|
||
|
|
- `GET /api/ordertest/{id}?include=details` - Get order with specimens/tests
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2.2 Specimen Tracking
|
||
|
|
**Priority: MEDIUM**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Specimen Management**
|
||
|
|
- View specimens by order
|
||
|
|
- Update specimen status (collected, received, processed)
|
||
|
|
- Print specimen labels
|
||
|
|
|
||
|
|
#### API Endpoints Available:
|
||
|
|
- `GET /api/specimen` - List specimens
|
||
|
|
- `GET /api/specimen/{id}` - Get specimen details
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 3: Master Data & Configuration (Week 6)
|
||
|
|
|
||
|
|
### 3.1 Test Management Enhancement
|
||
|
|
**Priority: MEDIUM**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Test Catalog Browser**
|
||
|
|
- Improved search and filtering
|
||
|
|
- View test details with reference ranges
|
||
|
|
- Test-to-container mappings
|
||
|
|
|
||
|
|
#### Already Implemented:
|
||
|
|
- Tests CRUD in master-data/tests
|
||
|
|
- Test mappings in master-data/testmap
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3.2 Reference Range Management
|
||
|
|
**Priority: LOW**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Reference Range Setup**
|
||
|
|
- Manage numeric reference ranges (refnum)
|
||
|
|
- Manage text reference values (reftxt)
|
||
|
|
- Age and sex-specific ranges
|
||
|
|
|
||
|
|
#### API Note:
|
||
|
|
Reference ranges are managed through test definition endpoints
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 4: Quality & Compliance Features (Weeks 7-8)
|
||
|
|
|
||
|
|
### 4.1 Critical Results Management
|
||
|
|
**Priority: MEDIUM**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Critical Results Alerting**
|
||
|
|
- Real-time critical result notifications
|
||
|
|
- Acknowledgment tracking
|
||
|
|
- Escalation workflow
|
||
|
|
|
||
|
|
#### API Endpoints:
|
||
|
|
- Use results API with flag filtering
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4.2 Audit Trail
|
||
|
|
**Priority: LOW**
|
||
|
|
|
||
|
|
#### Features:
|
||
|
|
1. **Activity Logging**
|
||
|
|
- Track who modified results
|
||
|
|
- Track order status changes
|
||
|
|
- Patient data access logs
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Implementation Priority Matrix
|
||
|
|
|
||
|
|
| Feature | Priority | Effort | Impact | Phase |
|
||
|
|
|---------|----------|--------|--------|-------|
|
||
|
|
| Results Entry | CRITICAL | High | Critical | Phase 1 |
|
||
|
|
| Results Verification | CRITICAL | Medium | Critical | Phase 1 |
|
||
|
|
| Report Viewing | CRITICAL | Low | Critical | Phase 1 |
|
||
|
|
| Live Dashboard | HIGH | Medium | High | Phase 1 |
|
||
|
|
| Order Workflow | HIGH | Medium | High | Phase 2 |
|
||
|
|
| Specimen Tracking | MEDIUM | Medium | Medium | Phase 2 |
|
||
|
|
| Critical Results | MEDIUM | Medium | Medium | Phase 4 |
|
||
|
|
| Reference Ranges | LOW | Medium | Low | Phase 3 |
|
||
|
|
| Audit Trail | LOW | High | Low | Phase 4 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Technical Implementation Notes
|
||
|
|
|
||
|
|
### API Client Pattern
|
||
|
|
Following existing patterns in `src/lib/api/`:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
// src/lib/api/results.js
|
||
|
|
import { get, patch, del } from './client.js';
|
||
|
|
|
||
|
|
export async function fetchResults(params = {}) {
|
||
|
|
const query = new URLSearchParams(params).toString();
|
||
|
|
return get(query ? `/api/results?${query}` : '/api/results');
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function fetchResultById(id) {
|
||
|
|
return get(`/api/results/${id}`);
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function updateResult(id, data) {
|
||
|
|
return patch(`/api/results/${id}`, data);
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function deleteResult(id) {
|
||
|
|
return del(`/api/results/${id}`);
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Route Structure
|
||
|
|
```
|
||
|
|
src/routes/(app)/
|
||
|
|
├── dashboard/ # Update with live data
|
||
|
|
├── patients/ # ✅ Exists
|
||
|
|
├── visits/ # ✅ Exists
|
||
|
|
├── orders/ # ✅ Exists (enhance)
|
||
|
|
├── results/ # NEW - Results management
|
||
|
|
│ ├── +page.svelte
|
||
|
|
│ ├── entry/
|
||
|
|
│ │ └── +page.svelte
|
||
|
|
│ └── verification/
|
||
|
|
│ └── +page.svelte
|
||
|
|
└── reports/ # NEW - Report viewing
|
||
|
|
└── +page.svelte
|
||
|
|
```
|
||
|
|
|
||
|
|
### Database Schema Relationships
|
||
|
|
```
|
||
|
|
Patient (1) → (N) Visits
|
||
|
|
Patient (1) → (N) Orders
|
||
|
|
Visit (1) → (N) Orders
|
||
|
|
Visit (1) → (N) ADT Records
|
||
|
|
Order (1) → (N) Specimens
|
||
|
|
Order (1) → (N) Results
|
||
|
|
Order (1) → (N) PatRes (test records)
|
||
|
|
Specimen (1) → (N) Results
|
||
|
|
Test Definition (1) → (N) Results
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Success Criteria for MVP
|
||
|
|
|
||
|
|
1. **End-to-end workflow works**: Can register patient → create visit → create order → enter results → view report
|
||
|
|
2. **Results validation**: System correctly flags high/low results based on reference ranges
|
||
|
|
3. **Order tracking**: Can track order status through the pipeline
|
||
|
|
4. **Dashboard**: Shows real metrics, not static data
|
||
|
|
5. **Reports**: Can generate and view HTML reports for orders
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Future Enhancements (Post-MVP)
|
||
|
|
|
||
|
|
1. **Instrument Integration** - Edge API for automated result import
|
||
|
|
2. **Barcoding/Labeling** - Specimen label printing
|
||
|
|
3. **QC Management** - Quality control charts and rules
|
||
|
|
4. **Billing Integration** - Connect to billing system
|
||
|
|
5. **External Lab Interface** - Send orders to reference labs
|
||
|
|
6. **Mobile App** - Phlebotomy collection app
|
||
|
|
7. **Patient Portal** - Patients can view their results
|
||
|
|
8. **Analytics** - Advanced reporting and statistics
|
||
|
|
|