fix: finish all patient related upgrades
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
const BLOOD_TYPE_LABELS = {
|
||||
APositive: 'A+',
|
||||
ANegative: 'A-',
|
||||
BPositive: 'B+',
|
||||
BNegative: 'B-',
|
||||
AbPositive: 'AB+',
|
||||
AbNegative: 'AB-',
|
||||
OPositive: 'O+',
|
||||
ONegative: 'O-',
|
||||
'A+': 'A+',
|
||||
'A-': 'A-',
|
||||
'B+': 'B+',
|
||||
'B-': 'B-',
|
||||
'AB+': 'AB+',
|
||||
'AB-': 'AB-',
|
||||
'O+': 'O+',
|
||||
'O-': 'O-',
|
||||
}
|
||||
|
||||
const DEPARTMENT_LABELS = {
|
||||
Icu: 'ICU',
|
||||
GeneralMedicine: 'General Medicine',
|
||||
Emergency: 'Emergency',
|
||||
Cardiology: 'Cardiology',
|
||||
Surgery: 'Surgery',
|
||||
Pediatrics: 'Pediatrics',
|
||||
ICU: 'ICU',
|
||||
GENERAL_MEDICINE: 'General Medicine',
|
||||
EMERGENCY: 'Emergency',
|
||||
CARDIOLOGY: 'Cardiology',
|
||||
SURGERY: 'Surgery',
|
||||
PEDIATRICS: 'Pediatrics',
|
||||
}
|
||||
|
||||
const GENDER_LABELS = {
|
||||
M: 'Male',
|
||||
F: 'Female',
|
||||
O: 'Other',
|
||||
U: 'Unknown',
|
||||
}
|
||||
|
||||
export function formatBloodType(value) {
|
||||
if (value == null || value === '') return '—'
|
||||
return BLOOD_TYPE_LABELS[value] ?? String(value)
|
||||
}
|
||||
|
||||
export function formatDepartment(value) {
|
||||
if (value == null || value === '') return '—'
|
||||
return DEPARTMENT_LABELS[value] ?? String(value).replace(/_/g, ' ')
|
||||
}
|
||||
|
||||
export function formatGender(value) {
|
||||
if (value == null || value === '') return '—'
|
||||
return GENDER_LABELS[value] ?? value
|
||||
}
|
||||
|
||||
export function computeAge(dateOfBirth, asOf = new Date()) {
|
||||
if (!dateOfBirth) return null
|
||||
const dob = new Date(dateOfBirth)
|
||||
if (Number.isNaN(dob.getTime())) return null
|
||||
|
||||
let age = asOf.getFullYear() - dob.getFullYear()
|
||||
const monthDelta = asOf.getMonth() - dob.getMonth()
|
||||
if (monthDelta < 0 || (monthDelta === 0 && asOf.getDate() < dob.getDate())) {
|
||||
age -= 1
|
||||
}
|
||||
return age
|
||||
}
|
||||
|
||||
export function formatDateOfBirth(dateOfBirth) {
|
||||
if (!dateOfBirth) return '—'
|
||||
const d = new Date(dateOfBirth)
|
||||
if (Number.isNaN(d.getTime())) return dateOfBirth
|
||||
return d.toLocaleDateString([], { year: 'numeric', month: 'short', day: 'numeric' })
|
||||
}
|
||||
|
||||
export function formatDobWithAge(dateOfBirth) {
|
||||
const formatted = formatDateOfBirth(dateOfBirth)
|
||||
const age = computeAge(dateOfBirth)
|
||||
if (age == null) return formatted
|
||||
return `${formatted} (${age}y)`
|
||||
}
|
||||
|
||||
export function hasKnownAllergies(allergies) {
|
||||
return Boolean(allergies?.trim())
|
||||
}
|
||||
|
||||
export function formatAllergiesDisplay(allergies) {
|
||||
return hasKnownAllergies(allergies) ? allergies.trim() : 'NKDA'
|
||||
}
|
||||
Reference in New Issue
Block a user