@startuml
'https://plantuml.com/class-diagram

class SNSUser{
SNS Number
}

class Administrator{
}

class Employee{
ID
Name
}

class Nurse{
}

class Receptionist{
}

class CenterCoordinator{
}

class Vaccine{
}

class VaccinationCenter{
Name
Address
Phone number
E-mail address
Fax number
Website address
Opening and closing hours
Slot duration
Maximum number of vaccines per slot
Capacity
}

class VaccinationCertificate{
Vaccine type
Administration date 
Dossage
}

class RecoveryRoom{
Recovery period
Arrival time
}

class Notification{
textMessage
}

class VaccinationDetails{
Lot number
Administration date
Dossage
Adverse symptoms
}

class VaccineType{
Age group
Time between doses
}


Nurse "1"--"*" Vaccine : administrated by <
Nurse "1"--"*" VaccinationDetails : registered by <
VaccinationDetails -- VaccinationCertificate : needs <
SNSUser "1"--"*" VaccinationCertificate : requested by <
SNSUser "1"--"*" Vaccine : requested by <
SNSUser "1"-- "*" RecoveryRoom : sent to >
SNSUser "1"--"*" VaccinationCenter : chooses >
SNSUser "1"-- "*" VaccinationAppointment : requests >
CenterCoordinator "1"-- "1..*" VaccinationCenter : coordinates >
RecoveryRoom --  Notification : emits >
EmailNotification -up-|> Notification
SMSNotification -up-|> Notification
VaccinationAppointment -- Notification : emits >
VaccinationCenter "1"--"0..1" HealthcareCenter : is of >
VaccinationCenter "1"--"0..1" MassVaccinationCenter : is of >
HealthcareCenter -- ARS : associated with >
HealthcareCenter -- AGES : associated with >
Administrator "1"--"*" VaccinationCenter : manages >
Administrator "1"--"*" Employee : manages >
Employee "1"--"0..1" CenterCoordinator : plays as >
Employee "1"--"0..1" Receptionist : plays as >
Employee "1"--"0..1" Nurse : plays as >
Receptionist "1"--"*" SNSUser : registers >
Receptionist -- WaitingRoom : manages >
Receptionist -- VaccinationAppointment : checks >
WaitingRoom "1"--"*" SNSUser : sent to <
Vaccine "1"--"1..*" VaccineType : is of >


@enduml