@startuml hide circle hide empty members skinparam linetype ortho class "Slot" as Sl #SkyBlue { - start - end - serviceType - appointmentType ... + reference(Schedule) + reference(HealthcareService) } class "Schedule" as Sc #SkyBlue { + actor.reference(Practitioner) + actor.reference(PractitionerRole) } class "Practitioner" as PS #LimeGreen { - identifier : IDNPS - specialty ... } class "PractitionerRole" as PR #LimeGreen { - location (contained) + reference(Practitioner) + reference(Organization) } class "HealthcareService" as HS #LimeGreen { + providedBy.reference(Organization) } class "Organization" as Orga #LimeGreen { - identifier : IDNST - name - telecom } class "Appointment" as Ap #SkyBlue { - status - start - end - created ... + participant.actor.reference(Practitioner) + participant.actor.reference(HealthcareService) } PR "0..*"-->"1" Orga PR "1..*"-->"1" PS Ap "0..*"-->"0..1" PS Ap "0..*"-->"1" HS Sc "0..*"-->"1" PS Sl "1..*"-->"1" Sc Sl "0..*"-->"1" HS Sc "1"-->"1" PR HS "1"-->"1" Orga @enduml