@startuml
hide methods
left to right direction
skinparam classAttributeIconSize 0


class CenterCoordinator {
}

class VaccinationCenter {
type
name
phoneNumber
e-mailAddress
faxNumber
websiteAddress
openingHour
closingHour
slotDuration
MaxNumberOfVaccinesPerSlot
centerCapacity
}

class CSVFile{
}

class Appointment {
}

class Arrival{
}

class VaccineType{
code
designation
}

class Vaccine{
name
brand
}

class "VaccineAdministration" as VaccineAdministration{
}

class VaccineAdministrationProcess {
numberOfDoses
}

class DoseAdministration{
doseNumber
timePreviousToCurrentDose
dosage
recoveryTime
}

class SNSUser {
SNSUserNumber
phoneNumber
emailAddress
Birthdate
CitizenCardNumber
Sex
}


CenterCoordinator "1" -- "1" VaccinationCenter : runs >

CenterCoordinator "1" -- "*" CSVFile: loads >

CSVFile "*" -- "1" VaccinationCenter: has previous data of >

VaccinationCenter "1" -- "*" Appointment: is place of >

Arrival "1"--"1" Appointment: to attend >

Appointment "1"--"1" Date: has a certain >
Appointment "1"--"1" Time: has a certain >
Appointment "*" -- "1" Vaccine: to take >
Appointment "*"--"1" SNSUser:created by >

Arrival "1"--"1" Date: has an entry >
Arrival "1"--"1"Time: has an entry >

SNSUser "1"--"1..*" Arrival:performs >

Vaccine "*" -- "1" VaccineType : is of >

VaccineAdministration "0..*"--"1" VaccinationCenter: occurs on >
VaccineAdministration "0..*"--"1" SNSUser: performed on >
VaccineAdministration "1"--"1" Appointment: occurs on >
VaccineAdministration "1..*" -- "1" Vaccine: of a >
VaccineAdministration "1..*" -- "1" Date: occurs on >
VaccineAdministration "1..*" -- "1" Time: occurs on >

VaccineAdministrationProcess "1" -- "*" DoseAdministration: has >
VaccineAdministrationProcess "*" -- "1" AgeGroup: administered on >
VaccineAdministrationProcess "*" -- "1" Vaccine : of >

Company "1" -- "*" VaccineAdministrationProcess: administers >


@enduml