clqms-fe1/docs/MVP_IMPLEMENTATION_PLAN.md

267 lines
7.0 KiB
Markdown
Raw Normal View History

# MVP Implementation Plan - CLQMS Frontend
**Goal:** Deliver core functionality for daily laboratory operations within shortest timeframe.
**Estimated Time:** 2-3 weeks
**Priority:** Critical features for production use
---
## Phase 1: Test Ordering System (Week 1)
**Use Cases:** UC-5a, UC-5b
**Priority:** HIGHEST - Core lab functionality
### API Endpoints Needed (Backend)
```
POST /api/orders # Create new test order
GET /api/orders/:oid # Get order details
PATCH /api/orders/:oid # Update order
GET /api/orders # List/search orders
POST /api/specimens # Create specimen records
GET /api/specimens/:sid # Get specimen details
GET /api/orders/:oid/specimens # List specimens for order
```
### Frontend Implementation
#### 1.1 Create Order Management Module
**New Files:**
- `src/routes/(app)/orders/+page.svelte` - Order list/search page
- `src/routes/(app)/orders/new/+page.svelte` - New order creation
- `src/routes/(app)/orders/[oid]/+page.svelte` - Order detail/edit
- `src/lib/api/orders.js` - Order API client
- `src/lib/api/specimens.js` - Specimen API client
#### 1.2 Order List Page Features
- Search by OID, Patient ID, Patient Name
- Filter by status (SC, IP, CM, CL)
- Date range filter
- Quick actions: View, Edit, Print labels
- Table columns: OID, Patient, Date, Tests, Status
#### 1.3 New Order Page Features
- Patient/PVID selection (search existing or quick admit)
- Test selection with search
- Specimen requirements display
- Comments/attachments
- Print label options (checkboxes):
- Print Patient Label
- Print Order Label
- Print Specimen Label
- Auto-generate OID and SID on save
#### 1.4 Order Status Validation
- Prevent editing if status = CL (Closed)
- Prevent editing if status = AC (Archived)
- Prevent editing if status = DL (Deleted)
- Prevent removing tests that have results
#### 1.5 Specimen Management
- Auto-create specimen records per test
- Display SID list after order creation
- Basic specimen tracking view
---
## Phase 2: Patient Discharge (Week 1-2)
**Use Cases:** UC-04a, UC-04b
**Priority:** HIGH - Essential for visit lifecycle
### API Endpoints Needed (Backend)
```
POST /api/patvisit/:pvid/discharge # Create discharge ADT (A03)
POST /api/patvisit/:pvid/cancel-discharge # Cancel discharge (A13)
GET /api/orders/pvid/:pvid/open # Check for open orders
```
### Frontend Implementation
#### 2.1 Update Visit Management
**Modify:**
- `src/routes/(app)/patients/+page.svelte` - Add discharge actions
- `src/routes/(app)/patients/VisitFormModal.svelte` - Add discharge button
**New Files:**
- `src/routes/(app)/patients/DischargeModal.svelte` - Discharge confirmation
- `src/routes/(app)/patients/CancelDischargeModal.svelte` - Cancel discharge
#### 2.2 Discharge Features
- Discharge button on active visits
- Validation: Check for open test orders (status: A, IP, SC, HD)
- If open orders exist: Show warning, block discharge
- ADT Code: A03 (Discharge)
- Required fields: Discharge date
- After discharge: Visit marked as closed (no more edits)
#### 2.3 Cancel Discharge Features
- Available only for Supervisor Lab, Manajer Lab
- ADT Code: A13 (Cancel Discharge)
- Re-opens visit for editing
- Available in visit actions menu
---
## Phase 3: Patient Transfer (Week 2)
**Use Cases:** UC-04
**Priority:** MEDIUM-HIGH - Common daily operation
### API Endpoints Needed (Backend)
```
POST /api/patvisit/:pvid/transfer # Create transfer ADT (A02)
```
### Frontend Implementation
#### 3.1 Transfer Feature
**Modify:**
- `src/routes/(app)/patients/VisitFormModal.svelte` - Add transfer section
**New Files:**
- `src/routes/(app)/patients/TransferModal.svelte` - Location transfer
#### 3.2 Transfer Features
- Transfer button on active visits
- Location dropdown (from master data)
- ADT Code: A02 (Patient Transfer)
- Update visit LocationID
- Track location history via ADT
---
## Phase 4: Patient Link (Basic) (Week 2-3)
**Use Cases:** UC-02b
**Priority:** MEDIUM - Data quality improvement
### API Endpoints Needed (Backend)
```
GET /api/patient/search-duplicates # Find potential duplicates
POST /api/patient/link # Link patients (A24)
GET /api/patient/:pid/linked # Get linked patients
```
### Frontend Implementation
#### 4.1 Patient Link Module
**New Files:**
- `src/routes/(app)/patients/link/+page.svelte` - Patient link page
- `src/lib/api/patient-links.js` - Link API client
#### 4.2 Link Features
- Search by: Identifier (KTP/Passport), Name + DOB + Address
- Display matching patients
- Select destination (surviving) PID
- Select source PID(s) to link
- Confirmation dialog
- ADT Code: A24 (Link Patient)
- Validation: Prevent multi-level links, prevent linking already-linked sources
#### 4.3 Visual Indicator
- Show "Linked" badge on patient records
- Display linked PIDs in patient detail
---
## Navigation Updates
### Sidebar Changes
Add to Laboratory section:
```
Laboratory
├── Patients (existing)
├── Orders (NEW)
├── Specimens (NEW)
└── Patient Links (NEW)
```
---
## Database Schema Requirements (Backend)
### Orders Table
```sql
ordertest:
- OrderID (OID)
- InternalOID
- PVID
- EffDate (future orders)
- EndDate (closed)
- ArchiveDate
- DelDate
- Comments
- CreatedBy, CreatedDate
orderstatus:
- InternalOID
- OrderStatus (SC, IP, CM, CL, AC, DL)
- StatusDate
ordertestdetail:
- InternalOID
- TestSiteID
- TestSequence
```
### Specimens Table
```sql
specimens:
- SpecimenID (SID)
- InternalSID
- InternalOID
- TestSiteID
- CollectionDate
- ReceivedDate
- ContainerID
- Status
```
---
## Testing Checklist
### Test Ordering
- [ ] Create new order with multiple tests
- [ ] Search orders by patient name
- [ ] Edit pending order (SC status)
- [ ] Attempt to edit closed order (should fail)
- [ ] Print labels (UI only)
- [ ] View specimen list
### Discharge
- [ ] Discharge patient with no open orders
- [ ] Attempt discharge with open orders (should block)
- [ ] Cancel discharge (supervisor only)
- [ ] Verify visit locked after discharge
### Transfer
- [ ] Transfer patient to new location
- [ ] Verify location history updated
### Patient Link
- [ ] Search duplicates by identifier
- [ ] Link two patients
- [ ] Verify destination patient shows cumulative data
- [ ] Verify source patient marked as linked
---
## Out of Scope (MVP)
The following features are **NOT** included in MVP but documented for future phases:
- Multi-site authentication (UC-01 enhancements)
- Password expiration/lockout
- Patient Unlink (UC-02c)
- Cancel Admission (UC-03b)
- Change Attending/Consulting Doctor (UC-03c, UC-03d)
- Advanced duplicate detection with address matching
- Audit log viewing
- Specimen label printing integration
- Result entry integration
---
## Success Criteria
1. Users can create test orders linked to patients
2. Users can discharge patients (when no open orders)
3. Users can transfer patients between locations
4. Users can link duplicate patient records
5. Order status validation prevents invalid edits
6. All operations create proper ADT audit records