Redesign CVMIS system 2

This commit is contained in:
2026-02-13 16:42:45 +00:00
parent 000df670a3
commit e13a073a6f
26 changed files with 24405 additions and 0 deletions
+204
View File
@@ -0,0 +1,204 @@
# Reference: Tasks 12-15 — Bottom Tiles
## Task 12: LastConsultation Tile
### File: `src/components/tiles/LastConsultationTile.tsx`
**Layout:** Full-width card.
**Content:**
- CardHeader: green dot + "LAST CONSULTATION" + right text "Most recent role"
**Header info row:**
- `display: flex`, `flex-wrap: wrap`, `gap: 16px`
- `margin-bottom: 14px`, `padding-bottom: 14px`, `border-bottom: 1px solid var(--border-light)`
- Each field:
- Label: 10px, uppercase, `letter-spacing: 0.06em`, text-tertiary
- Value: 11.5px, 600 weight, text-primary
| Label | Value |
|-------|-------|
| Date | May 2025 |
| Organisation | NHS Norfolk & Waveney ICB |
| Type | Permanent · Full-time |
| Band | 8a |
**Role title:**
- "Interim Head, Population Health & Data Analysis"
- 13.5px, 600 weight, `color: var(--accent)` (#0D6E6E)
- `margin-bottom: 12px`
**Bullet list:**
- `list-style: none`, flex column, `gap: 7px`
- Each bullet: 12.5px, text-primary, `padding-left: 16px`, `line-height: 1.5`
- Pseudo `::before`: 5px circle, accent color (#0D6E6E), `opacity: 0.5`, positioned left at top 7px
**Bullets** (from first consultation's examination array):
- Led a cross-functional team of 12 across data, analytics, and population health workstreams
- Oversaw £220M prescribing budget with full analytical accountability and reporting to ICB board
- Identified £14.6M in efficiency savings through data-driven prescribing interventions
- Designed and deployed Power BI dashboards used by 200+ clinicians and commissioners
- Spearheaded SQL analytics transformation, migrating legacy Access databases to modern data stack
- Established team data literacy programme, upskilling 30+ non-technical staff in data interpretation
**Data:** `import { consultations } from '@/data/consultations'` — use `consultations[0]` (the most recent).
Map consultation fields:
- date → Date field
- organization → Organisation field
- role → Role title
- examination array → Bullet points
---
## Task 13: CareerActivity Tile
### File: `src/components/tiles/CareerActivityTile.tsx`
**Layout:** Full-width card.
**Content:**
- CardHeader: teal dot + "CAREER ACTIVITY" + right text "Full timeline"
**Activity grid:**
- `display: grid`, `grid-template-columns: 1fr 1fr`, `gap: 10px`
- Below 900px: `grid-template-columns: 1fr` (single column)
**Each activity item:**
- `display: flex`, `gap: 10px`
- `padding: 10px 12px`
- `background: var(--bg)` (#F0F5F4)
- `border-radius: var(--radius-sm)` (6px)
- `border: 1px solid var(--border-light)`
- 12px font
- `transition: border-color 0.15s`
- Hover: `border-color: var(--accent-border)`
**Dot (left):**
- 8px circle, flex-shrink-0, `margin-top: 2px` (aligns with text)
- Color by type:
- Role: teal (#0D6E6E)
- Project: amber (#D97706)
- Certification: green (#059669)
- Education: purple (#7C3AED)
**Content (right):**
- Title: 600 weight, text-primary, `line-height: 1.3`
- Meta: 11px, text-secondary, `margin-top: 2px`
- Date: 10px, mono font, text-tertiary, `margin-top: 3px`
**Building the timeline data:**
Merge entries from multiple data sources, sorted newest-first:
```typescript
type ActivityType = 'role' | 'project' | 'cert' | 'edu'
interface ActivityEntry {
id: string
type: ActivityType
title: string
meta: string
date: string
sortYear: number // for sorting
}
```
Sources:
1. `consultations` → type "role": title=role, meta=organization, date=duration
2. `investigations` (selected key ones) → type "project": title=name, meta=short description, date=year
3. `documents` where type='Certificate' → type "cert": title=title, meta=source, date=date
4. `documents` where type='Results' (MPharm) → type "edu": title=title, meta=source, date=date
Match the concept HTML entries:
| Type | Title | Meta | Date |
|------|-------|------|------|
| role | Interim Head, Population Health & Data Analysis | NHS Norfolk & Waveney ICB | 2024 2025 |
| project | £220M Prescribing Budget Oversight | Lead analyst & budget owner | 2024 |
| role | Senior Data Analyst — Medicines Optimisation | NHS Norfolk & Waveney ICB | 2021 2024 |
| project | SQL Analytics Transformation | Legacy migration project lead | 2025 |
| cert | Power BI Data Analyst Associate | Microsoft Certified | 2023 |
| role | Prescribing Data Pharmacist | NHS Norwich CCG | 2018 2021 |
| cert | Clinical Pharmacy Diploma | Professional development | 2019 |
| role | Community Pharmacist | Boots UK | 2016 2018 |
| edu | MPharm (Hons) — 2:1 | University of East Anglia | 2011 2015 |
| cert | GPhC Registration | General Pharmaceutical Council | August 2016 |
**Expansion prep:** Activity items should accept onClick for Task 16 (expand to show full role/project detail).
---
## Task 14: Education Tile
### File: `src/components/tiles/EducationTile.tsx`
**Layout:** Full-width card, below Career Activity.
**Content:**
- CardHeader: purple dot (#7C3AED) + "EDUCATION"
**Education entries:**
Vertical stack of education items.
Each item:
- `padding: 7px 10px`
- `background: var(--surface)` (#FFFFFF)
- `border: 1px solid var(--border-light)`
- `border-radius: var(--radius-sm)` (6px)
- 11.5px, text-primary
Structure:
- Degree name: 600 weight, `display: block`
- Detail: text-secondary, 11px, `margin-top: 2px`
**Entries** (from CV):
| Degree | Detail |
|--------|--------|
| MPharm (Hons) — 2:1 | University of East Anglia · 2015 |
| NHS Leadership Academy — Mary Seacole Programme | 2018 · 78% |
| A-Levels: Mathematics (A*), Chemistry (B), Politics (C) | Highworth Grammar School · 20092011 |
**Data:** Filter `src/data/documents.ts` for education entries, or hardcode from CV since the documents data may not have all education entries.
Note: The concept HTML only shows the MPharm entry. But the CV has more education. Include all CV education entries.
---
## Task 15: Projects Tile
### File: `src/components/tiles/ProjectsTile.tsx`
**Layout:** Full-width card, prominent position.
**Content:**
- CardHeader: amber dot + "ACTIVE PROJECTS"
**Project entries:**
Vertical list, styled as interactive items.
Each project:
- `display: flex`, `align-items: flex-start`, `gap: 8px`
- `padding: 7px 10px`
- `background: var(--surface)`, `border: 1px solid var(--border-light)`
- `border-radius: var(--radius-sm)` (6px)
- 11.5px, text-primary
- Hover: `border-color: var(--accent-border)`
- `transition: border-color 0.15s`
Structure:
- **Status dot** (7px circle, flex-shrink-0, `margin-top: 4px`):
- Complete: success (#059669)
- Ongoing: accent (#0D6E6E)
- Live: success with pulse animation
- **Project name**: text-primary, flex 1
- **Year badge**: 10px, mono font, text-tertiary, `margin-left: auto`, flex-shrink-0
**Data:** `import { investigations } from '@/data/investigations'`
Map investigations to projects:
- name → Project name
- status → dot color
- requestedYear → Year badge
- resultSummary → Available for expansion (Task 16)
**Expansion prep:** Each item should accept onClick for Task 16 (expand to show methodology, tech stack, results).