diff --git a/References/portfolio-skills.md b/References/portfolio-skills.md new file mode 100644 index 0000000..88be842 --- /dev/null +++ b/References/portfolio-skills.md @@ -0,0 +1,36 @@ +# Portfolio Skills + +## Clinical + +| Skill | Start | Frequency | Roles Used | +|---|---|---|---| +| Medicines Optimisation | 2022 (system-wide) | 3–4x daily | Interim Head, Deputy Head, HCD Pharmacist, Pharmacy Manager, Pre-reg, MPharm | +| Population Health | 2024 | Daily | Interim Head, Deputy Head | +| NICE TA Implementation | 2022 | 1–2x weekly | Interim Head, Deputy Head, HCD Pharmacist | +| Health System Prescribing Management | 2024 | Daily | Interim Head, Deputy Head | +| Health Economics | 2022 | 1–2x daily | Interim Head, Deputy Head, HCD Pharmacist | +| Clinical Pathways | 2022 | Daily | Interim Head, Deputy Head, HCD Pharmacist | +| Formulary & Commissioning | 2022 | Weekly | Interim Head, Deputy Head, HCD Pharmacist | +| Community Pharmacy Practice | 2015 | As needed | Pharmacy Manager, Pre-reg | + +## Technical + +| Skill | Start | Frequency | Roles Used | +|---|---|---|---| +| Python | 2018 | 3x daily | Interim Head, Deputy Head, HCD Pharmacist, Pharmacy Manager | +| SQL | 2023 | 3x daily | Interim Head, Deputy Head, HCD Pharmacist | +| Dashboard Development | 2023 | Weekly | Interim Head, Deputy Head, HCD Pharmacist | +| Data Analysis | 2016 | 4x daily | Interim Head, Deputy Head, HCD Pharmacist, Pharmacy Manager, Pre-reg | +| AI & Prompt Engineering | 2024 | 4x daily | Interim Head, Deputy Head | +| JavaScript / TypeScript | 2020 | As needed | Personal projects | + +## Strategic + +| Skill | Start | Frequency | Roles Used | +|---|---|---|---| +| Executive Communication | 2024 | Bi-monthly | Interim Head, Deputy Head | +| Financial Scenario Modelling | 2022 | Weekly | Interim Head, Deputy Head, HCD Pharmacist | +| Budget Management | 2024 | 2x weekly | Interim Head, Deputy Head | +| Stakeholder Engagement | 2022 | Daily | Interim Head, Deputy Head, HCD Pharmacist | +| Change Management | 2016 | As needed | Interim Head, Deputy Head, HCD Pharmacist, Pharmacy Manager | +| Healthcare Leadership | 2018 | Daily | Interim Head, Deputy Head, HCD Pharmacist, Pharmacy Manager | diff --git a/References/portfolio-skills.md:Zone.Identifier b/References/portfolio-skills.md:Zone.Identifier new file mode 100644 index 0000000..d6c1ec6 Binary files /dev/null and b/References/portfolio-skills.md:Zone.Identifier differ diff --git a/src/components/RepeatMedicationsSubsection.tsx b/src/components/RepeatMedicationsSubsection.tsx index a2ba89a..2cb3346 100644 --- a/src/components/RepeatMedicationsSubsection.tsx +++ b/src/components/RepeatMedicationsSubsection.tsx @@ -1,10 +1,10 @@ import React from 'react' import type { LucideIcon } from 'lucide-react' import { - BarChart3, Code2, Database, PieChart, FileCode2, - Sheet, GitBranch, Workflow, Pill, Users, FileCheck, - TrendingUp, Route, ShieldAlert, Banknote, Handshake, - MessageSquare, UserPlus, RefreshCw, Calculator, Presentation, + BarChart3, Code2, Database, LayoutDashboard, Bot, FileCode2, + Pill, Users, FileCheck, Stethoscope, + TrendingUp, Route, BookOpen, Store, + Presentation, Calculator, Banknote, Handshake, RefreshCw, Crown, ChevronRight, } from 'lucide-react' import { CardHeader } from './Card' @@ -14,10 +14,10 @@ import { getSkillsUICopy } from '@/lib/profile-content' import type { SkillMedication } from '@/types/pmr' const iconMap: Record = { - BarChart3, Code2, Database, PieChart, FileCode2, - Sheet, GitBranch, Workflow, Pill, Users, FileCheck, - TrendingUp, Route, ShieldAlert, Banknote, Handshake, - MessageSquare, UserPlus, RefreshCw, Calculator, Presentation, + BarChart3, Code2, Database, LayoutDashboard, Bot, FileCode2, + Pill, Users, FileCheck, Stethoscope, + TrendingUp, Route, BookOpen, Store, + Presentation, Calculator, Banknote, Handshake, RefreshCw, Crown, } diff --git a/src/components/detail/SkillDetail.tsx b/src/components/detail/SkillDetail.tsx index 04ba7fb..23245bc 100644 --- a/src/components/detail/SkillDetail.tsx +++ b/src/components/detail/SkillDetail.tsx @@ -9,8 +9,8 @@ interface SkillDetailProps { // Category display names const categoryLabels: Record = { Technical: 'Technical', - Domain: 'Healthcare Domain', - Leadership: 'Strategic & Leadership', + Clinical: 'Clinical', + Strategic: 'Strategic', } export function SkillDetail({ skill }: SkillDetailProps) { diff --git a/src/components/detail/SkillsAllDetail.tsx b/src/components/detail/SkillsAllDetail.tsx index c3810ba..d045c11 100644 --- a/src/components/detail/SkillsAllDetail.tsx +++ b/src/components/detail/SkillsAllDetail.tsx @@ -1,10 +1,10 @@ import React, { useEffect, useRef } from 'react' import type { LucideIcon } from 'lucide-react' import { - BarChart3, Code2, Database, PieChart, FileCode2, - Sheet, GitBranch, Workflow, Pill, Users, FileCheck, - TrendingUp, Route, ShieldAlert, Banknote, Handshake, - MessageSquare, UserPlus, RefreshCw, Calculator, Presentation, + BarChart3, Code2, Database, LayoutDashboard, Bot, FileCode2, + Pill, Users, FileCheck, Stethoscope, + TrendingUp, Route, BookOpen, Store, + Presentation, Calculator, Banknote, Handshake, RefreshCw, Crown, ChevronRight, } from 'lucide-react' import { skills } from '@/data/skills' @@ -13,10 +13,10 @@ import { getSkillsUICopy } from '@/lib/profile-content' import type { SkillMedication, SkillCategory } from '@/types/pmr' const iconMap: Record = { - BarChart3, Code2, Database, PieChart, FileCode2, - Sheet, GitBranch, Workflow, Pill, Users, FileCheck, - TrendingUp, Route, ShieldAlert, Banknote, Handshake, - MessageSquare, UserPlus, RefreshCw, Calculator, Presentation, + BarChart3, Code2, Database, LayoutDashboard, Bot, FileCode2, + Pill, Users, FileCheck, Stethoscope, + TrendingUp, Route, BookOpen, Store, + Presentation, Calculator, Banknote, Handshake, RefreshCw, Crown, } interface SkillsAllDetailProps { diff --git a/src/data/llm-prompt.ts b/src/data/llm-prompt.ts index a1024b3..994288f 100644 --- a/src/data/llm-prompt.ts +++ b/src/data/llm-prompt.ts @@ -91,9 +91,9 @@ Mathematics A*, Chemistry B, Politics C. Professional registration required to practise as a pharmacist in Great Britain. ## Skills -Technical: [skill-data-analysis] Data Analysis & Prescribing Analytics (9yr, 95%), [skill-python] Python inc. Pandas (8yr, 90%), [skill-sql] SQL & Database Design (3yr, 88%), [skill-power-bi] Power BI, DAX & Dashboard Development (5yr, 92%), [skill-javascript-typescript] JavaScript/TypeScript (3yr, 70%), [skill-excel] Excel & Spreadsheet Modelling (9yr, 85%), [skill-algorithm-design] Algorithm Design & Clinical Decision Support (3yr, 82%), [skill-data-pipelines] Data Pipelines & ETL (2yr, 75%), [skill-snomed-dmd] SNOMED CT, dm+d & Clinical Coding (3yr, 80%), [skill-ehr-systems] EHR Systems: SystmOne, EMIS, Blueteq (3yr, 78%) -Domain: [skill-medicines-optimisation] Medicines Optimisation & Formulary Management (9yr, 95%), [skill-population-health] Population Health Analytics & Real-World Evidence (3yr, 90%), [skill-nice-ta] NICE TA Implementation & Health Technology Assessment (3yr, 92%), [skill-health-economics] Health Economics & Cost-Effectiveness Analysis (3yr, 80%), [skill-clinical-pathways] Clinical Pathway Development & Prior Authorisation (3yr, 88%), [skill-controlled-drugs] Controlled Drugs & Medicines Safety (1yr, 85%), [skill-commissioning] Commissioning & Primary/Secondary Care Interface (3yr, 82%) -Leadership: [skill-budget-management] Budget Management & Financial Planning (1yr, 90%), [skill-stakeholder-engagement] Stakeholder Engagement & Cross-Organisational Collaboration (3yr, 88%), [skill-pharma-negotiation] Pharmaceutical Negotiation & Commercial Awareness (1yr, 82%), [skill-team-development] Team Development, Training & Coaching (8yr, 85%), [skill-change-management] Change Management & System Transformation (7yr, 80%), [skill-financial-modelling] Financial Scenario Modelling & Forecasting (1yr, 78%), [skill-executive-comms] Executive Communication & Board Reporting (1yr, 85%), [skill-matrix-leadership] Matrix Leadership & Leading Without Authority (3yr, 80%) +Technical: [skill-data-analysis] Data Analysis (10yr, 4x daily), [skill-python] Python (8yr, 3x daily), [skill-sql] SQL (3yr, 3x daily), [skill-dashboard-dev] Dashboard Development (3yr, weekly), [skill-ai-prompt-engineering] AI & Prompt Engineering (2yr, 4x daily), [skill-javascript-typescript] JavaScript/TypeScript (6yr, as needed) +Clinical: [skill-medicines-optimisation] Medicines Optimisation (10yr, 3–4x daily), [skill-population-health] Population Health (2yr, daily), [skill-nice-ta] NICE TA Implementation (4yr, 1–2x weekly), [skill-health-system-prescribing] Health System Prescribing Mgmt (2yr, daily), [skill-health-economics] Health Economics (4yr, 1–2x daily), [skill-clinical-pathways] Clinical Pathways (4yr, daily), [skill-formulary-commissioning] Formulary & Commissioning (4yr, weekly), [skill-community-pharmacy] Community Pharmacy Practice (11yr, as needed) +Strategic: [skill-executive-comms] Executive Communication (2yr, bi-monthly), [skill-financial-modelling] Financial Scenario Modelling (4yr, weekly), [skill-budget-management] Budget Management (2yr, 2x weekly), [skill-stakeholder-engagement] Stakeholder Engagement (4yr, daily), [skill-change-management] Change Management (10yr, as needed), [skill-healthcare-leadership] Healthcare Leadership (8yr, daily) ## Response Rules 1. Answer ONLY from the data above. If the answer is not in the data, say "I don't have that information" – never invent facts, roles, dates, achievements, URLs, or contact details. diff --git a/src/data/profile-content.ts b/src/data/profile-content.ts index c1fe8ad..fd97944 100644 --- a/src/data/profile-content.ts +++ b/src/data/profile-content.ts @@ -67,8 +67,8 @@ export const profileContent: DeepReadonly = { viewAllLabel: 'View all', categories: [ { id: 'Technical', label: 'Technical' }, - { id: 'Domain', label: 'Healthcare Domain' }, - { id: 'Leadership', label: 'Strategic & Leadership' }, + { id: 'Clinical', label: 'Clinical' }, + { id: 'Strategic', label: 'Strategic' }, ], }, }, diff --git a/src/data/skills.ts b/src/data/skills.ts index a16a330..387a8f1 100644 --- a/src/data/skills.ts +++ b/src/data/skills.ts @@ -1,13 +1,13 @@ import type { SkillMedication } from '@/types/pmr' export const skills: SkillMedication[] = [ - // Technical (8 skills) + // Technical (6 skills) { id: 'data-analysis', name: 'Data Analysis', - frequency: 'Twice daily', + frequency: '4x daily', startYear: 2016, - yearsOfExperience: 9, + yearsOfExperience: 10, category: 'Technical', status: 'Active', icon: 'BarChart3', @@ -21,14 +21,14 @@ export const skills: SkillMedication[] = [ { id: 'python', name: 'Python', - frequency: 'Daily', - startYear: 2017, + frequency: '3x daily', + startYear: 2018, yearsOfExperience: 8, category: 'Technical', status: 'Active', icon: 'Code2', prescribingHistory: [ - { year: 2017, description: 'Started: Self-taught during Tesco night shifts for data analysis automation' }, + { year: 2018, description: 'Started: Self-taught during Tesco night shifts for data analysis automation' }, { year: 2019, description: 'Increased: Dashboard development, data pipeline work' }, { year: 2022, description: 'Specialist use: Blueteq automation, Sankey analysis tools' }, { year: 2024, description: 'Advanced: Switching algorithm (14,000 patients), CD monitoring' }, @@ -38,41 +38,53 @@ export const skills: SkillMedication[] = [ { id: 'sql', name: 'SQL', - frequency: 'Daily', - startYear: 2022, + frequency: '3x daily', + startYear: 2023, yearsOfExperience: 3, category: 'Technical', status: 'Active', icon: 'Database', prescribingHistory: [ - { year: 2022, description: 'Started: Gained access to NHS databases, prescribing data querying' }, - { year: 2023, description: 'Increased: Complex joins, data transformation, Blueteq integration' }, - { year: 2024, description: 'Specialist: Comprehensive medicines data table development' }, + { year: 2023, description: 'Started: NHS database access, prescribing data querying' }, + { year: 2024, description: 'Increased: Complex joins, data transformation, Blueteq integration' }, { year: 2025, description: 'Current: Population health data infrastructure' }, ], }, { - id: 'power-bi', - name: 'Power BI', - frequency: 'Once weekly', - startYear: 2020, - yearsOfExperience: 5, + id: 'dashboard-dev', + name: 'Dashboard Development', + frequency: 'Weekly', + startYear: 2023, + yearsOfExperience: 3, category: 'Technical', status: 'Active', - icon: 'PieChart', + icon: 'LayoutDashboard', prescribingHistory: [ - { year: 2020, description: 'Started: Dashboard creation for team reporting' }, - { year: 2022, description: 'Increased: DAX measures, data modelling' }, - { year: 2024, description: 'Advanced: Switching progress dashboards, executive reporting' }, - { year: 2025, description: 'Current: DOAC switching scenario model, executive reporting' }, + { year: 2023, description: 'Started: Power BI dashboards for team reporting and DAX measures' }, + { year: 2024, description: 'Increased: Interactive DOAC switching scenario model, executive reporting' }, + { year: 2025, description: 'Current: Self-serve analytics dashboards, incentive scheme tracking' }, + ], + }, + { + id: 'ai-prompt-engineering', + name: 'AI & Prompt Engineering', + frequency: '4x daily', + startYear: 2024, + yearsOfExperience: 2, + category: 'Technical', + status: 'Active', + icon: 'Bot', + prescribingHistory: [ + { year: 2024, description: 'Started: LLM-assisted code generation and data analysis workflows' }, + { year: 2025, description: 'Current: Agentic coding, prompt design for clinical data extraction' }, ], }, { id: 'javascript-typescript', name: 'JavaScript / TypeScript', - frequency: 'When required', - startYear: 2022, - yearsOfExperience: 3, + frequency: 'As needed', + startYear: 2020, + yearsOfExperience: 6, category: 'Technical', status: 'Active', icon: 'FileCode2', @@ -82,55 +94,15 @@ export const skills: SkillMedication[] = [ { year: 2024, description: 'Current: CV/portfolio development, interactive tools' }, ], }, - { - id: 'excel', - name: 'Excel', - frequency: 'Daily', - startYear: 2016, - yearsOfExperience: 9, - category: 'Technical', - status: 'Active', - icon: 'Sheet', - }, - { - id: 'algorithm-design', - name: 'Algorithm Design', - frequency: 'Once weekly', - startYear: 2022, - yearsOfExperience: 3, - category: 'Technical', - status: 'Active', - icon: 'GitBranch', - prescribingHistory: [ - { year: 2022, description: 'Started: Basic automation logic for form generation' }, - { year: 2024, description: 'Increased: Controlled drug monitoring calculations' }, - { year: 2025, description: 'Current: Patient switching algorithm (14,000 identified)' }, - ], - }, - { - id: 'data-pipelines', - name: 'Data Pipelines', - frequency: 'Once weekly', - startYear: 2023, - yearsOfExperience: 2, - category: 'Technical', - status: 'Active', - icon: 'Workflow', - prescribingHistory: [ - { year: 2022, description: 'Started: ETL processes for Blueteq integration' }, - { year: 2024, description: 'Increased: dm+d standardisation, morphine conversions' }, - { year: 2025, description: 'Current: ICS-wide data infrastructure' }, - ], - }, - // Healthcare Domain (6 skills) + // Clinical (8 skills) { id: 'medicines-optimisation', name: 'Medicines Optimisation', - frequency: 'Twice daily', + frequency: '3–4x daily', startYear: 2016, - yearsOfExperience: 9, - category: 'Domain', + yearsOfExperience: 10, + category: 'Clinical', status: 'Active', icon: 'Pill', prescribingHistory: [ @@ -144,24 +116,23 @@ export const skills: SkillMedication[] = [ id: 'population-health', name: 'Population Health', frequency: 'Daily', - startYear: 2022, - yearsOfExperience: 3, - category: 'Domain', + startYear: 2024, + yearsOfExperience: 2, + category: 'Clinical', status: 'Active', icon: 'Users', prescribingHistory: [ - { year: 2022, description: 'Started: GP prescribing data analysis' }, - { year: 2024, description: 'Increased: 1.2M population coverage' }, - { year: 2025, description: 'Current: ICS-wide health inequality analysis' }, + { year: 2024, description: 'Started: 1.2M population coverage, ICS-wide analytics' }, + { year: 2025, description: 'Current: Health inequality analysis, population-level interventions' }, ], }, { id: 'nice-ta', name: 'NICE TA Implementation', - frequency: 'Once weekly', + frequency: '1–2x weekly', startYear: 2022, - yearsOfExperience: 3, - category: 'Domain', + yearsOfExperience: 4, + category: 'Clinical', status: 'Active', icon: 'FileCheck', prescribingHistory: [ @@ -170,13 +141,27 @@ export const skills: SkillMedication[] = [ { year: 2024, description: 'Current: Tirzepatide (TA1026) commissioning' }, ], }, + { + id: 'health-system-prescribing', + name: 'Health System Prescribing Mgmt', + frequency: 'Daily', + startYear: 2024, + yearsOfExperience: 2, + category: 'Clinical', + status: 'Active', + icon: 'Stethoscope', + prescribingHistory: [ + { year: 2024, description: 'Started: dm+d medicines data table, OME calculations, prescribing infrastructure' }, + { year: 2025, description: 'Current: Patient-level SQL analytics, self-serve prescribing model' }, + ], + }, { id: 'health-economics', name: 'Health Economics', - frequency: 'Once weekly', + frequency: '1–2x daily', startYear: 2022, - yearsOfExperience: 3, - category: 'Domain', + yearsOfExperience: 4, + category: 'Clinical', status: 'Active', icon: 'TrendingUp', prescribingHistory: [ @@ -188,10 +173,10 @@ export const skills: SkillMedication[] = [ { id: 'clinical-pathways', name: 'Clinical Pathways', - frequency: 'Once weekly', + frequency: 'Daily', startYear: 2022, - yearsOfExperience: 3, - category: 'Domain', + yearsOfExperience: 4, + category: 'Clinical', status: 'Active', icon: 'Route', prescribingHistory: [ @@ -201,29 +186,73 @@ export const skills: SkillMedication[] = [ ], }, { - id: 'controlled-drugs', - name: 'Controlled Drugs', - frequency: 'When required', - startYear: 2024, - yearsOfExperience: 1, - category: 'Domain', + id: 'formulary-commissioning', + name: 'Formulary & Commissioning', + frequency: 'Weekly', + startYear: 2022, + yearsOfExperience: 4, + category: 'Clinical', status: 'Active', - icon: 'ShieldAlert', + icon: 'BookOpen', prescribingHistory: [ - { year: 2024, description: 'Started: OME calculation system development' }, - { year: 2024, description: 'Increased: Population-scale monitoring capability' }, - { year: 2025, description: 'Current: High-risk patient identification, diversion detection' }, + { year: 2022, description: 'Started: High-cost drug formulary management, Blueteq prior authorisation' }, + { year: 2024, description: 'Increased: Tirzepatide commissioning, primary care delivery model' }, + { year: 2025, description: 'Current: System-wide formulary governance' }, + ], + }, + { + id: 'community-pharmacy', + name: 'Community Pharmacy Practice', + frequency: 'As needed', + startYear: 2015, + yearsOfExperience: 11, + category: 'Clinical', + status: 'Active', + icon: 'Store', + prescribingHistory: [ + { year: 2015, description: 'Started: Pre-registration training, PGD initiation, palliative care screening' }, + { year: 2016, description: 'Increased: 100-hour contract management, clinical service delivery' }, + { year: 2017, description: 'Advanced: National process adoption, asthma screening innovation' }, ], }, - // Strategic & Leadership (7 skills) + // Strategic (6 skills) + { + id: 'executive-comms', + name: 'Executive Communication', + frequency: 'Bi-monthly', + startYear: 2024, + yearsOfExperience: 2, + category: 'Strategic', + status: 'Active', + icon: 'Presentation', + prescribingHistory: [ + { year: 2024, description: 'Started: CMO presentations, executive stakeholder engagement' }, + { year: 2025, description: 'Current: System-level programme board reporting' }, + ], + }, + { + id: 'financial-modelling', + name: 'Financial Scenario Modelling', + frequency: 'Weekly', + startYear: 2022, + yearsOfExperience: 4, + category: 'Strategic', + status: 'Active', + icon: 'Calculator', + prescribingHistory: [ + { year: 2022, description: 'Started: High-cost drug financial impact modelling' }, + { year: 2024, description: 'Increased: DOAC switching scenario model, rebate mechanics' }, + { year: 2025, description: 'Current: Efficiency programme prioritisation, £215M budget forecasting' }, + ], + }, { id: 'budget-management', name: 'Budget Management', - frequency: 'Daily', + frequency: '2x weekly', startYear: 2024, - yearsOfExperience: 1, - category: 'Leadership', + yearsOfExperience: 2, + category: 'Strategic', status: 'Active', icon: 'Banknote', prescribingHistory: [ @@ -235,10 +264,10 @@ export const skills: SkillMedication[] = [ { id: 'stakeholder-engagement', name: 'Stakeholder Engagement', - frequency: 'Twice daily', + frequency: 'Daily', startYear: 2022, - yearsOfExperience: 3, - category: 'Leadership', + yearsOfExperience: 4, + category: 'Strategic', status: 'Active', icon: 'Handshake', prescribingHistory: [ @@ -247,63 +276,29 @@ export const skills: SkillMedication[] = [ { year: 2025, description: 'Current: System-level programme board reporting' }, ], }, - { - id: 'pharma-negotiation', - name: 'Pharmaceutical Negotiation', - frequency: 'When required', - startYear: 2024, - yearsOfExperience: 1, - category: 'Leadership', - status: 'Active', - icon: 'MessageSquare', - prescribingHistory: [ - { year: 2024, description: 'Started: Rebate terms renegotiation' }, - { year: 2024, description: 'Current: Improved commercial position for ICB' }, - ], - }, - { - id: 'team-development', - name: 'Team Development', - frequency: 'Daily', - startYear: 2017, - yearsOfExperience: 8, - category: 'Leadership', - status: 'Active', - icon: 'UserPlus', - prescribingHistory: [ - { year: 2017, description: 'Started: NVQ3 supervision to technician registration' }, - { year: 2019, description: 'Increased: National induction training development' }, - { year: 2024, description: 'Current: Data fluency training, self-serve tools' }, - ], - }, { id: 'change-management', name: 'Change Management', - frequency: 'Once weekly', - startYear: 2018, - yearsOfExperience: 7, - category: 'Leadership', + frequency: 'As needed', + startYear: 2016, + yearsOfExperience: 10, + category: 'Strategic', status: 'Active', icon: 'RefreshCw', }, { - id: 'financial-modelling', - name: 'Financial Modelling', - frequency: 'Once weekly', - startYear: 2024, - yearsOfExperience: 1, - category: 'Leadership', + id: 'healthcare-leadership', + name: 'Healthcare Leadership', + frequency: 'Daily', + startYear: 2018, + yearsOfExperience: 8, + category: 'Strategic', status: 'Active', - icon: 'Calculator', - }, - { - id: 'executive-comms', - name: 'Executive Communication', - frequency: 'Twice weekly', - startYear: 2024, - yearsOfExperience: 1, - category: 'Leadership', - status: 'Active', - icon: 'Presentation', + icon: 'Crown', + prescribingHistory: [ + { year: 2018, description: 'Started: NHS Mary Seacole Leadership Programme, system-level thinking' }, + { year: 2022, description: 'Increased: ICS-level strategic leadership, cross-sector engagement' }, + { year: 2025, description: 'Current: Interim Head of Population Health, CMO reporting line' }, + ], }, ] diff --git a/src/data/timeline.ts b/src/data/timeline.ts index d0fb2c8..1e9d783 100644 --- a/src/data/timeline.ts +++ b/src/data/timeline.ts @@ -46,32 +46,44 @@ const timelineEntitySeeds: TimelineEntity[] = [ { code: 'SQL001', description: 'Data transformation: practice-level to patient-level analytics' }, ], skills: [ - 'population-health', - 'medicines-optimisation', 'data-analysis', 'python', 'sql', - 'algorithm-design', - 'data-pipelines', - 'budget-management', - 'financial-modelling', - 'stakeholder-engagement', + 'dashboard-dev', + 'ai-prompt-engineering', + 'medicines-optimisation', + 'population-health', + 'nice-ta', + 'health-system-prescribing', + 'health-economics', + 'clinical-pathways', + 'formulary-commissioning', 'executive-comms', + 'financial-modelling', + 'budget-management', + 'stakeholder-engagement', 'change-management', + 'healthcare-leadership', ], skillStrengths: { - 'population-health': 0.95, - 'medicines-optimisation': 0.9, 'data-analysis': 1.0, python: 0.95, sql: 0.95, - 'algorithm-design': 0.9, - 'data-pipelines': 0.8, - 'budget-management': 0.9, - 'financial-modelling': 0.85, - 'stakeholder-engagement': 0.9, + 'dashboard-dev': 0.8, + 'ai-prompt-engineering': 0.85, + 'medicines-optimisation': 0.9, + 'population-health': 0.95, + 'nice-ta': 0.8, + 'health-system-prescribing': 0.9, + 'health-economics': 0.85, + 'clinical-pathways': 0.8, + 'formulary-commissioning': 0.8, 'executive-comms': 0.9, + 'financial-modelling': 0.85, + 'budget-management': 0.9, + 'stakeholder-engagement': 0.9, 'change-management': 0.7, + 'healthcare-leadership': 0.9, }, }, { @@ -113,34 +125,44 @@ const timelineEntitySeeds: TimelineEntity[] = [ { code: 'LEA001', description: 'Team development: data literacy programme' }, ], skills: [ - 'population-health', - 'medicines-optimisation', 'data-analysis', 'python', 'sql', - 'power-bi', - 'controlled-drugs', - 'budget-management', - 'financial-modelling', - 'pharma-negotiation', - 'stakeholder-engagement', - 'team-development', + 'dashboard-dev', + 'ai-prompt-engineering', + 'medicines-optimisation', + 'population-health', + 'nice-ta', + 'health-system-prescribing', + 'health-economics', + 'clinical-pathways', + 'formulary-commissioning', 'executive-comms', + 'financial-modelling', + 'budget-management', + 'stakeholder-engagement', + 'change-management', + 'healthcare-leadership', ], skillStrengths: { - 'population-health': 0.95, - 'medicines-optimisation': 0.9, 'data-analysis': 0.95, python: 0.9, sql: 0.9, - 'power-bi': 0.8, - 'controlled-drugs': 0.7, - 'budget-management': 0.9, - 'financial-modelling': 0.8, - 'pharma-negotiation': 0.7, - 'stakeholder-engagement': 0.9, - 'team-development': 0.8, + 'dashboard-dev': 0.8, + 'ai-prompt-engineering': 0.8, + 'medicines-optimisation': 0.9, + 'population-health': 0.95, + 'nice-ta': 0.8, + 'health-system-prescribing': 0.85, + 'health-economics': 0.8, + 'clinical-pathways': 0.8, + 'formulary-commissioning': 0.75, 'executive-comms': 0.85, + 'financial-modelling': 0.8, + 'budget-management': 0.9, + 'stakeholder-engagement': 0.9, + 'change-management': 0.7, + 'healthcare-leadership': 0.85, }, }, { @@ -178,26 +200,34 @@ const timelineEntitySeeds: TimelineEntity[] = [ { code: 'HTA001', description: 'HTA implementation: multi-specialty pathways across ICS' }, ], skills: [ + 'data-analysis', + 'python', + 'sql', + 'dashboard-dev', 'medicines-optimisation', 'nice-ta', - 'clinical-pathways', 'health-economics', - 'python', - 'data-analysis', - 'sql', - 'algorithm-design', + 'clinical-pathways', + 'formulary-commissioning', + 'financial-modelling', 'stakeholder-engagement', + 'change-management', + 'healthcare-leadership', ], skillStrengths: { + 'data-analysis': 0.8, + python: 0.8, + sql: 0.7, + 'dashboard-dev': 0.6, 'medicines-optimisation': 0.8, 'nice-ta': 0.9, - 'clinical-pathways': 0.9, 'health-economics': 0.7, - python: 0.8, - 'data-analysis': 0.8, - sql: 0.7, - 'algorithm-design': 0.6, + 'clinical-pathways': 0.9, + 'formulary-commissioning': 0.8, + 'financial-modelling': 0.7, 'stakeholder-engagement': 0.7, + 'change-management': 0.6, + 'healthcare-leadership': 0.7, }, }, { @@ -232,22 +262,22 @@ const timelineEntitySeeds: TimelineEntity[] = [ { code: 'LEA002', description: 'Leadership: staff development to technician registration' }, ], skills: [ - 'medicines-optimisation', - 'team-development', 'data-analysis', - 'excel', + 'python', + 'medicines-optimisation', + 'community-pharmacy', 'change-management', - 'budget-management', 'stakeholder-engagement', + 'healthcare-leadership', ], skillStrengths: { - 'medicines-optimisation': 0.9, - 'team-development': 0.8, 'data-analysis': 0.7, - excel: 0.7, + python: 0.6, + 'medicines-optimisation': 0.9, + 'community-pharmacy': 0.9, 'change-management': 0.6, - 'budget-management': 0.5, 'stakeholder-engagement': 0.6, + 'healthcare-leadership': 0.7, }, }, { @@ -278,15 +308,15 @@ const timelineEntitySeeds: TimelineEntity[] = [ ], skills: [ 'medicines-optimisation', + 'community-pharmacy', 'data-analysis', - 'excel', 'change-management', 'stakeholder-engagement', ], skillStrengths: { 'medicines-optimisation': 0.8, + 'community-pharmacy': 0.8, 'data-analysis': 0.5, - excel: 0.6, 'change-management': 0.5, 'stakeholder-engagement': 0.4, }, @@ -324,13 +354,13 @@ const timelineEntitySeeds: TimelineEntity[] = [ ], skills: [ 'medicines-optimisation', + 'community-pharmacy', 'change-management', - 'stakeholder-engagement', ], skillStrengths: { 'medicines-optimisation': 0.7, + 'community-pharmacy': 0.7, 'change-management': 0.4, - 'stakeholder-engagement': 0.3, }, }, { @@ -449,8 +479,8 @@ export const timelineConsultations: Consultation[] = timelineCareerEntities.map( const skillDomainByCategory: Record = { Technical: 'technical', - Domain: 'clinical', - Leadership: 'leadership', + Clinical: 'clinical', + Strategic: 'leadership', } export function buildConstellationData(): { diff --git a/src/lib/search.ts b/src/lib/search.ts index a9bb0ff..ec7fdae 100644 --- a/src/lib/search.ts +++ b/src/lib/search.ts @@ -212,24 +212,23 @@ export function buildEmbeddingTexts(): Array<{ id: string; text: string }> { 'data-analysis': 'Applied across NHS medicines optimisation, identifying £14.6M efficiency programme. Used for prescribing pattern analysis, budget forecasting, and population health analytics serving 1.2M people.', 'python': 'Used to build switching algorithms (14,000 patients, £2.6M savings), controlled drug monitoring systems, Blueteq form automation, and Sankey chart visualisation tools. Self-taught.', 'sql': 'Core tool for patient-level analytics, dm+d data integration, and transforming practice-level data to patient-level SQL analysis. Used across all NHS data roles.', - 'power-bi': 'Built PharMetrics interactive dashboard tracking £215M prescribing budget. Created dashboards used by 200+ clinicians and commissioners across Norfolk & Waveney ICB.', + 'dashboard-dev': 'Built Power BI dashboards tracking £215M prescribing budget, DOAC switching scenario models, and self-serve analytics tools used across Norfolk & Waveney ICB.', + 'ai-prompt-engineering': 'LLM-assisted code generation, data analysis workflows, and agentic coding. Applied to clinical data extraction and portfolio development.', 'javascript-typescript': 'Used for web development including this portfolio website. Built with React, TypeScript, and Vite.', - 'excel': 'Used for financial modelling, data validation, and ad-hoc analysis. Foundational tool across all roles from community pharmacy to NHS ICB.', - 'algorithm-design': 'Designed patient switching algorithm and automated incentive scheme analysis. Applied to real-world GP prescribing data at population scale.', - 'data-pipelines': 'Built automated data processing pipelines for medicines analytics, enabling self-serve models for team data fluency.', 'medicines-optimisation': 'Core domain expertise spanning community pharmacy through to NHS ICB-level population health. Led efficiency programmes worth £14.6M+.', 'population-health': 'Leading population health analytics for 1.2M people across Norfolk & Waveney ICS. Developing patient-level datasets from real-world GP prescribing data.', 'nice-ta': 'Led NICE technology appraisal implementation across high-cost drug pathways. Covered rheumatology, ophthalmology, dermatology, gastroenterology, neurology, and migraine.', + 'health-system-prescribing': 'Built dm+d medicines data table with standardised strength calculations, oral morphine equivalents, and Anticholinergic Burden scoring. Enabled patient-level SQL analytics and self-serve prescribing model.', 'health-economics': 'Financial modelling for DOAC switching programmes, tirzepatide commissioning, and pharmaceutical rebate negotiations.', 'clinical-pathways': 'Wrote most of the Norfolk & Waveney ICB high-cost drug pathways. Created Sankey chart tool for patient pathway visualisation and trust compliance auditing.', - 'controlled-drugs': 'Built Python-based population-scale monitoring system calculating oral morphine equivalents (OME) across all opioid prescriptions. Enables high-risk patient identification and potential diversion detection.', + 'formulary-commissioning': 'High-cost drug formulary management, Blueteq prior authorisation, tirzepatide commissioning with primary care delivery model, and system-wide formulary governance.', + 'community-pharmacy': 'Foundation in community pharmacy practice from pre-registration through to pharmacy management. PGD initiation, clinical screening, 100-hour contract management, and national process adoption.', + 'executive-comms': 'Authored executive papers for ICB board including tirzepatide commissioning advocacy. Presented evidence-based recommendations to CMO bimonthly.', + 'financial-modelling': 'Built interactive DOAC switching dashboard with rebate mechanics, workforce constraints, and patent expiry timelines. Financial projections for tirzepatide commissioning.', 'budget-management': 'Managed £215M NHS prescribing budget with sophisticated forecasting models, variance analysis, and monthly financial reporting to the ICB executive team.', 'stakeholder-engagement': 'Presented to Chief Medical Officer bimonthly. Engaged with GP practices, trusts, commissioners, and pharmaceutical companies across the integrated care system.', - 'pharma-negotiation': 'Renegotiated pharmaceutical rebate terms ahead of patent expiry, securing improved commercial position for the ICB.', - 'team-development': 'Improved team data fluency through training and documentation. Supervised staff through NVQ3 to pharmacy technician registration. Created national induction training at Tesco.', 'change-management': 'Completed NHS Mary Seacole Programme (2018, 78%). Led transformation to patient-level SQL analytics and self-serve analytical models.', - 'financial-modelling': 'Built interactive DOAC switching dashboard with rebate mechanics, workforce constraints, and patent expiry timelines. Financial projections for tirzepatide commissioning.', - 'executive-comms': 'Authored executive papers for ICB board including tirzepatide commissioning advocacy. Presented evidence-based recommendations to CMO bimonthly.', + 'healthcare-leadership': 'NHS Mary Seacole Leadership Programme graduate. ICS-level strategic leadership from HCD Pharmacist through to Interim Head of Population Health with CMO reporting line.', } skills.forEach((skill) => { diff --git a/src/types/pmr.ts b/src/types/pmr.ts index aebddb7..0e7d7a1 100644 --- a/src/types/pmr.ts +++ b/src/types/pmr.ts @@ -131,14 +131,14 @@ export interface SkillMedication { frequency: string startYear: number yearsOfExperience: number - category: 'Technical' | 'Domain' | 'Leadership' + category: 'Technical' | 'Clinical' | 'Strategic' status: 'Active' | 'Historical' icon: string prescribingHistory?: PrescribingHistoryEntry[] } // Skill categories for grouped display -export type SkillCategory = 'Technical' | 'Domain' | 'Leadership' +export type SkillCategory = 'Technical' | 'Clinical' | 'Strategic' // Extended KPI with story content for detail panel export interface KPIStory { diff --git a/src/types/profile-content.ts b/src/types/profile-content.ts index 3258c9c..4916b3f 100644 --- a/src/types/profile-content.ts +++ b/src/types/profile-content.ts @@ -67,7 +67,7 @@ export interface ExperienceEducationUICopy { } export interface SkillsCategoryCopyEntry { - readonly id: 'Technical' | 'Domain' | 'Leadership' + readonly id: 'Technical' | 'Clinical' | 'Strategic' readonly label: string }