Skip to content

FredAmartey/ImmunET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImmunET

Pet Immunization Record Application

Comprehensive system developed for veterinary doctors to efficiently manage and track pet immunization records. The system facilitates the creation and editing of vaccine schedules, with the ability to generate reports. It allows veterinarians to manage pet and owner information. The system enables the signing of immunization records to mark them as complete, as well as generate daily immunization bills. Additionally, it provides the functionality to generate comprehensive immunization reports covering all vaccinations administered to date. Furthermore, it incorporates features for tracking pet vitals before and after vaccination for potential diagnostic purposes in case of any health issues.

CodeBase UML

Code UML

ER-Diagram

ER Diagram

Models

  classDiagram
    
    class ShotRecord {
      <<abstract>>
      + abstract boolean isComplete()
      + abstract List<ShotDTO> getShotDTO()
      + abstract void generateSchedule()
    }
    class VaccineFactory {
      + getInstance() VaccineFactory
      + getVaccine(String name, int frequency, String intervalsCSV, int offset) Vaccine
    }

    class ShotFactory {
      + getInstance() ShotFactory
      + getObject() ShotRecord
    }

    class Vaccine {
      - String name
      - int frequency
      - List<Integer> intervals
      - int offset
      - boolean default
      - Species species
      - float cost
      + isDefault() boolean
      + Vaccine(String name, int frequency, String intervalsCSV, int offset, Species s, Boolean default) Vaccine
      + static parseIntervals(String intervalsCSV) Integer[]
      + getShotRecord(Date dob) ShotRecord
      + save() void
    }

    class ImmunizationStatus {
      <<enumeration>>
      PENDING
      DELAYED
      COMPLETE
    }

    class Schedule {
      - int id
      - Date scheduledDate
      - Date administeredDate
      - ImmunizationStatus status
      - Doctor doctor
      + Schedule(Date scheduledDate, Date administeredDate) Schedule
      - updateStatus() void
      + isDelayed() boolean
      + isComplete() boolean
      + markComplete(Doctor d) void
      + setScheduledDate(Date date) void
      + setAdministeredDate(Date date) void
      - save() void
    }

    class SingleShotRecord {
      - Vaccine vaccine
      - Schedule schedule
      + SingleShotRecord(Vaccine v) SingleShotRecord
      + markComplete(Doctor signedDoctor) void
      + static getByScheduleId(int scheduleID) ShotRecord

      + isComplete() boolean
      + getShotDTO() List<ShotDTO>
      - generateSchedule() void 
    }

    class MultiShotRecord {
      - Vaccine vaccine
      - List<Schedule> schedules
      + MultiShotRecord(Vaccine v) MultiShotRecord
      + markComplete(int scheduleID, Doctor signedDoctor) void
      + static getByScheduleId(int scheduleID) ShotRecord

      + isComplete() boolean
      + getShotDTO() List<ShotDTO>
      - generateSchedule() void
    }
    class Gender {
      <<enumeration>>
      MALE
      FEMALE
    }

    class Species {
      <<enumeration>>
      CANINE
      FELINE
      AVIAN
    }
    note for Pet "getShotRecords() Gives list of shot record or empty if pet immunization record already exists"
    class Pet {
      - int id
      - String name
      - Date dob
      - Gender gender
      - Species s
      + Pet(String name, Date dob, Gender gender, Species s) Pet
      + save() void
      + getShotRecords() List<ShotRecord>
    }

    class DuplicateShotRecordException {
      <<exception>>
      String message
    }
    class ScheduleNotFoundException {
      <<exception>>
      String message
    }

    class ImmunizationReport {
      - List<ShotRecord> immunizationRecords
      - Pet pet
      + ImmunizationReport(Pet p) ImmunizationReport
      - load(Pet p) void
      + create() void
      + addShotRecord(Vaccine v) void
      + shotRecordExists(Vaccine v) boolean
      - addDefaultShotRecords(Species s) void
      + completeShot(int scheduleID, Doctor signedDoctor) void
      + getCompletedShotsTillDate() List<ShotRecord>
      + getTodaysShots() List<ShotRecord>
      + getTodaysCompletedShots() List<ShotRecord>
      + getUpcomingScheduledShots() List<ShotRecord>
    }

    class User {
      # String username
      # String password
      # String billing_address
    }

    class Person {
      # String name
      # String address
      # Date dob
    }

    class Owner {
      # String name
      # String address
      # Date dob
      + Owner(name, dob, address) Owner
      + getPets() List<Pet>
    }


    class Doctor {
      # String name
      # String address
      # Date dob
      # String username
      # String password
      # String billing_address
      - String clinic_address
      - float service_cost
    }


    class BillStatus {
      <<enumeration>>
      CANCELLED
      PAID
      PENDING
    }

    class BillItemType {
      <<enumeration>>
      SERVICE
      VACCINE
    }

    class BillItemFactory {
      + getInstance() BillItemFactory
      + getItem(Doctor d) Item
      + getItem(ShotRecord s) Item
    }

    class BillItem {
      - int id
      - String name
      - float cost
      - BillItemType type
      + BillItem(String name, float cost, BillItemType type) BillItem
    }

    class Bill {
      - static final TAX_RATE
      - int id
      - User from
      - Person to
      - List<BillItem> items
      - Date billing_date
      - float tax_percent
      + getTaxInfo() TaxDTO
      + save() void
      + getSum() float
      + getTax() float
      + getSummary() BillSummaryDTO
      + Bill(List<ShotRecords> items, Doctor d, Person o) Bill
    }
    
    class BillType {
      <<enumeration>>
      DAILY
      COMPLETE
    }

    class BillFactory {
      + getInstance() BillFactory
      + getImmunizationBill(ImmunizationReport report) Bill
    }
    
    User --|> Person : Inheritance
    Doctor --|> User : Inheritance
    Owner --|> Person : Inheritance
    SingleShotRecord --|> ShotRecord: Inheritance
    MultiShotRecord --|> ShotRecord: Inheritance
    ShotRecord *-- ImmunizationReport : Composition
    Pet *-- ImmunizationReport
    Schedule *-- ShotRecord : Composition
    Schedule ..|> Vaccine : Realization
    Schedule --> ImmunizationStatus
    Pet --> Gender
    Pet --> Species
    Vaccine --> Species: Association
    ShotFactory..SingleShotRecord
    ShotFactory..MultiShotRecord
    VaccineFactory..Vaccine
    BillItemFactory..BillItem
    BillItemType --> BillItem
    BillFactory --> BillType
    Bill --> BillStatus
    BillFactory..Bill
    BillItem *-- Bill : Composition
    
Loading

Utility

    classDiagram
    class Utility {
      + static generateId() int
      + static formatDate(Date d) String
    }
Loading

DTO

  classDiagram
  class DoctorDTO {
      - int id 
      - String name
    }
    class ScheduleDTO {
      - Date scheduled_date
      - Date administered_date
      - String status 
      - DoctorDTO doctor 
    }
    class ShotDTO {
      - String name
      - List<ScheduleDTO> shot_schedule
    }

    class PetDTO {
      - String name
      - int id
      - Date dob
      - String gender
    }
    class ImmunizationReportDTO {
      - List<ShotDTO> shots
      - PetDTO pet
    }
    class TaxDTO {
      - float tax_rate
      - float tax_amount
    }
    class CustomerDTO {
      - String name
      - String phone
    }
    class BillingUserDTO {
      - String name
      - String address
      - String phone
    }
    class BillItemsDTO {
      - String name
      - float price
      - String type
    }
    class BillSummaryDTO {
      - CustomerDTO customer
      - BillingUserDTO user
      - TaxDTO tax
      - List<BillItemsDTO> items
    }
Loading

Documentation Helper

  • Use the MERMAID TO PNG to extract the PNG (Note: It replaces the markdown with image so make sure to remove image in README.md file)
  • Move the images to docs file

About

Pet Immunization Record App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published