feat(pmr): create PMR data layer and TypeScript types

- Add src/types/pmr.ts with interfaces for Patient, Consultation, Medication, Problem, Investigation, Document
- Add src/data/consultations.ts with 5 roles mapped to clinical consultation format
- Add src/data/medications.ts with 18 skills as medications across Active/Clinical/PRN categories
- Add src/data/problems.ts with 11 achievements/problems using traffic light status system
- Add src/data/investigations.ts with 5 projects as clinical investigations
- Add src/data/documents.ts with 5 education/certification documents
- Add src/data/patient.ts with patient demographic data

All data matches CV_v4.md exactly (dates, numbers, achievements).
Task 1 of 15 complete.
This commit is contained in:
2026-02-11 00:37:20 +00:00
parent 9e01356df8
commit 2033a93ecb
7 changed files with 790 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
export interface CodedEntry {
code: string
description: string
}
export interface Consultation {
id: string
date: string
organization: string
orgColor: string
role: string
duration: string
isCurrent: boolean
history: string
examination: string[]
plan: string[]
codedEntries: CodedEntry[]
}
export interface PrescribingHistoryEntry {
year: number
description: string
}
export interface Medication {
id: string
name: string
dose: number
frequency: 'Daily' | 'Weekly' | 'Monthly' | 'As needed'
startYear: number
status: 'Active' | 'Historical'
category: 'Active' | 'Clinical' | 'PRN'
prescribingHistory: PrescribingHistoryEntry[]
}
export interface Problem {
id: string
code: string
description: string
since?: string
resolved?: string
status: 'Active' | 'In Progress' | 'Resolved'
outcome?: string
narrative?: string
linkedConsultations?: string[]
}
export interface InvestigationResult {
label: string
value: string
}
export interface Investigation {
id: string
name: string
requestedYear: number
reportedYear?: number
status: 'Complete' | 'Ongoing' | 'Live'
resultSummary: string
requestingClinician: string
methodology: string
results: string[]
techStack: string[]
externalUrl?: string
}
export type DocumentType = 'Certificate' | 'Registration' | 'Results' | 'Research'
export interface Document {
id: string
type: DocumentType
title: string
date: string
source: string
classification?: string
institution?: string
duration?: string
researchDetail?: string
researchGrade?: string
notes?: string
}
export interface Patient {
name: string
displayName: string
dob: string
nhsNumber: string
nhsNumberTooltip: string
address: string
phone: string
email: string
linkedin: string
status: string
badge: string
qualification: string
university: string
registrationYear: string
}
export type ViewId = 'summary' | 'consultations' | 'medications' | 'problems' | 'investigations' | 'documents' | 'referrals'
export interface NavItem {
id: ViewId
label: string
icon: string
}
export interface ReferralFormData {
priority: 'Urgent' | 'Routine' | 'Two-Week Wait'
referrerName: string
referrerEmail: string
referrerOrg?: string
reason: string
contactMethod: 'Email' | 'Phone' | 'LinkedIn'
}