@startuml
hide methods
left to right direction
skinparam classAttributeIconSize 0


class Company {
}


class VaccinationCenter {
 -name
 -address
 -emailAddress
 -faxNumber
 -websiteAddress
 -openingHours
 -slotDuration
 -vaccinesPerSlot
}


class CommunityMassVaccinationCenter {

}

class HealthCareCenter {

}

class VaccineType {

}

class Vaccine {

}

class Administrator {
}

class SNSUser {
 -age
 -userNumber
 -phoneNumber
 -emailAddress
}

class Nurse {
}

class Receptionist {
}

class CenterCoordinator {
}

class VaccinationAdministration {
 -lastAdministrationDate
 -nextAdministration
 -dosageApplied
}

class VaccinationProcess {
 -groupAge
 -dosagesNumber
 -vaccineDosage
}

class VaccineSchedule {
}

class VaccinationCertificate {
}

class AdverseReactions {
}

class SMSNotification {
}

class EmailNotification {
}

class ARS {
}

class AGES {
}

class Employee {
}

class User {
}

Administrator "1" -- "*" Employee : configures and manages >
Administrator "1" -- "*" VaccinationCenter : configures and manages >
Administrator "1" -- "*" HealthCareCenter : configures and manages >
Administrator "1" -- "*" Vaccine : configures and manages >
Administrator "1" -- "*" VaccineType : configures and manages >
VaccinationCenter "1" -- "*" HealthCareCenter : acts as >
VaccinationCenter "1" -- "*" CommunityMassVaccinationCenter : acts as >
Company "1" -- "*" VaccinationCenter : manages >
Company "1" -- "1..*" Employee : employees  >
Company "1" -- "1..*" SNSUser : has  >
Company "1" -- "*" Vaccine : administers >
CommunityMassVaccinationCenter "1" -- "1" VaccineType : can administer >
HealthCareCenter "1" -- "*" VaccineType : can administer >
HealthCareCenter "1" -- "1" ARS : is associated with >
HealthCareCenter "1" -- "1" AGES : is associated with >
Nurse "1" -- "*" VaccinationCertificate : delivers and issues >
Nurse "1" -- "*" Vaccine : applies >
Receptionist "1" -- "*" VaccineSchedule : verifies and schedules >
Receptionist "1" -- "*" SNSUser : records data from >
SNSUser "1" -- "*" SMSNotification : can receive >
SNSUser "1" -- "*" EmailNotification : can receive >
SNSUser "1" -- "*" VaccinationCertificate : can ask for >
SNSUser "1" -- "*" Vaccine : can take >
SNSUser "1" -- "*" VaccineSchedule : can schedule >
SNSUser "1" -- "*" AdverseReactions : has >
Vaccine "1" -- "1..*" VaccineType : is of >
Vaccine "1" -- "1..*" VaccinationProcess : has >
VaccineType "1" -- "1" Administrator : created by >
VaccineSchedule "1" -- "1" Vaccine : has >
VaccinationAdministration "1" -- "1" SNSUser : administrated on >
VaccinationAdministration "1" -- "1" Nurse : applied by >
VaccinationAdministration "1" -- "*" AdverseReactions : can generate >
VaccinationAdministration "1" -- "1" VaccineSchedule : fulfills >
VaccinationAdministration "1..*" -- "1" VaccinationProcess : is contained in >


Employee "1" -- "1" User: relates to >
User "1" -- "1" Role: plays >
SNSUser "1" -- "1" User: is a >




 Employee <|-- Administrator 
 Employee <|-- CenterCoordinator
 Employee <|-- Nurse
 Employee <|-- Receptionist

@enduml