Skip to main content

Medical

Entities Definition

This file defines the medical structure within the Roll Claw domain model.

Implementation

Medical Definition

File: domain/entities/medical.pseudo

// Medical Entities

class MedicalProcedure {
// Identity
string id

// Properties
MedicalProcedureType type
Date date
MedicalProvider provider // Entity reference instead of string
string notes
List<VaccinationType> vaccinations // if applicable
Cat cat
boolean wasEmergency
float cost
string outcome
Person transportBy
List<string> medications
List<Symptom> treatedSymptoms
boolean requiresFollowUp
Date followUpDate
boolean wasSuccessfulProcedure

// Methods
function getDocumentation()
function wasSuccessful()
function needsFollowUp()
function getDaysUntilFollowUp(Date currentDate)
function recordOutcome(string outcome, Date date)
function linkToCondition(MedicalCondition condition)
function getVaccinationExpiryDate()
function getProcedureLocation()
function getTransportDetails()
function addMedication(string medication, string dosage, string frequency)
function wasSpayNeuter()
function wasTNR()
}

class MedicalCondition {
// Identity
string id

// Properties
Cat cat
string diagnosis
Date onsetDate
ConditionSeverity initialSeverity
ConditionSeverity currentSeverity
boolean isResolved
Date resolvedDate
string resolutionMethod // "treatment", "euthanasia", "natural recovery", etc.
List<MedicalProcedure> relatedProcedures
List<Symptom> symptoms
string notes
boolean isContagious
boolean isChronic
boolean requiresOngoingCare
List<string> medications
List<Date> followUpDates

// Methods
function updateSeverity(ConditionSeverity newSeverity, Date date)
function addSymptom(Symptom symptom)
function linkProcedure(MedicalProcedure procedure)
function resolve(string method, Date date)
function getProgressHistory()
function getDuration(Date currentDate)
function isWorsening()
function isImproving()
function requiresQuarantine()
function getLatestSymptomObservation()
function recordMedicationAdministration(string medication, Date date, Person by)
function getSeverityTrend()
function addFollowUpDate(Date date)
function getNextFollowUpDate()
}

class Symptom {
// Properties
string name
Date observedDate
Time observedTime
string description
ConditionSeverity severity
Person reportedBy
boolean isActive
Date resolvedDate

// Methods
function updateSeverity(ConditionSeverity newSeverity, Date date)
function resolve(Date date)
function getDuration(Date currentDate)
function isUrgent()
function requiresVetVisit()
}

class HealthAssessment {
// Properties
Cat cat
Date assessmentDate
Person assessor
int weightKg
string bodyCondition // "underweight", "ideal", "overweight"
string coatCondition
string hydrationStatus
string activityLevel
string appetiteLevel
List<Symptom> observedSymptoms
string overallHealth // "excellent", "good", "fair", "poor", "critical"
string notes
boolean needsMedicalAttention

// Methods
function compareWithPrevious(HealthAssessment previous)
function requiresFollowUp()
function generateRecommendations()
function getHealthTrend()
}

class Quarantine {
// Properties
Cat cat
Date startDate
Date plannedEndDate
Date actualEndDate
string reason
Location quarantineLocation
Person managedBy
string outcome
List<MedicalProcedure> proceduresDuringQuarantine
string notes

// Methods
function isActive(Date currentDate)
function getRemainingDays(Date currentDate)
function extendQuarantine(int additionalDays, string reason)
function completeQuarantine(Date date, string outcome)
function recordDailyObservation(Date date, string observation)
function requiresSpecialCare()
function getQuarantineDuration()
}

class MedicationSchedule {
// Properties
Cat cat
string medicationName
string dosage
int frequencyPerDay
List<Time> administrationTimes
Date startDate
Date endDate
MedicalCondition forCondition
string administrationMethod // "oral", "topical", "injection", etc.
List<MedicationAdministration> administrationHistory

// Methods
function recordAdministration(Date date, Time time, Person by)
function getMissedDoses(Date currentDate)
function isCompleted(Date currentDate)
function getRemainingDays(Date currentDate)
function getAdherenceRate()
function getNextDoseTime(Date currentDate, Time currentTime)
}

class MedicationAdministration {
// Properties
string medicationName
Date date
Time time
string dosage
string notes
Person administeredBy
boolean wasSuccessful
string response // how the cat responded

// Methods
function wasDelayed()
function hadAdverseReaction()
}

class VaccinationRecord {
// Properties
Cat cat
VaccinationType type
Date administrationDate
Date expirationDate
MedicalProvider provider
string batchNumber
boolean hadReaction
string reactionDetails

// Methods
function isExpired(Date currentDate)
function getDaysUntilExpiration(Date currentDate)
function requiresBooster(Date currentDate)
function getVaccinationAge()
}
  • See the Domain Model Overview for more information on how this component fits into the overall domain model.