@startuml  US02_DM
hide methods
skinparam classAttributeIconSize 0


class Appointment {}

class VaccineType {
  -code 
  -description
  -technology
}

class SNSUser {
  - citizenCard
  - snsNumber
  - name
  - birthDay
  - gender
  - phoneNumber
  - email
  - address
}

class VaccinationCenter{
  -name
  -address
  -emailAddress
  -phoneNumber
  -faxNumber
  -websiteAddress
  -openingHours  
  -closingHours
  -slotDuration
  -maximumVaccinesPerSlot
  -coordinator
  -createdAt
}

class Company{
  -designation
}

class Receptionist {}

class Employee {
  -id
  -name
  -email
  -phone
  -address
  -citizenCardNumber
  -roleId
}

class SMSSender {}

Company "1" -- "*" Appointment : knows >
Appointment "1"  -- "1" VaccineType : has >
Appointment "*" -- "1" VaccinationCenter : is held in >
Company "1" -- "*" VaccinationCenter : knows >
Appointment "*" -- "1" Receptionist : scheduled by >
Receptionist "1" -- "1" SNSUser : schedules for >
Appointment "1" -- "1" SNSUser : has >
Employee "1" -- "0..1" Receptionist : play as >
Company -- Employee : knows >
Appointment "1" -- "0..1" SMSSender : triggers >


@enduml