summaryrefslogtreecommitdiff
path: root/assignments/final/module-2.puml
blob: da483e7bf3b5c787313e8b800609fd84971258aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
@startuml
!define Table(name,desc) class name as "desc" << (T,#FFAAAA) >>
!define primary_key(x) <b>x</b>
!define foreign_key(x) <color:purple>x</color>
hide methods
hide stereotypes

' entities
Table(accounts, "accounts") {
  primary_key(id)
  name
  address
  birth_date
  phone_number
  pager_number
  created_at
  updated_at
}

Table(beds, "beds") {
  primary_key(id)
  bed_number
  room_number
  foreign_key(care_centre_id)
  foreign_key(patient_id)
  created_at
  updated_at
}

Table(care_centres, "care_centres") {
  primary_key(id)
  foreign_key(nurse_id)
  name
  location
  created_at
  updated_at
}

Table(consumptions, "consumptions") {
  primary_key(id)
  foreign_key(patient_id)
  foreign_key(item_id)
  consumed_at
  quantity
  total_cost
  created_at
  updated_at
}

Table(items, "items") {
  primary_key(id)
  sku
  description
  unit_cost
  created_at
  updated_at
}

Table(laboratories, "laboratories") {
  primary_key(id)
  name
  location
  created_at
  updated_at
}

Table(patients, "patients") {
  primary_key(id)
  foreign_key(account_id)
  foreign_key(physician_id)
  foreign_key(referring_physician_id)
  contacted_at : datetime
  created_at
  updated_at
}

Table(shifts, "shifts") {
  primary_key(id)
  foreign_key(care_centre_id)
  foreign_key(employee_id)
  started_at
  ended_at
  created_at
  updated_at
}

Table(staff, "staff") {
  primary_key(id)
  foreign_key(account_id)
  foreign_key(laboratory_id)
  type
  hired_at
  qualifications
  created_at
  updated_at
}

Table(treatments, "treatments") {
  primary_key(id)
  foreign_key(patient_id)
  name
  number
  occurred_at
  results
  created_at
  updated_at
}

Table(visits, "visits") {
  primary_key(id)
  foreign_key(patient_id)
  scheduled_at
  comments
  created_at
  updated_at
}

Table(volunteers, "volunteers") {
  primary_key(id)
  foreign_key(account_id)
  skill
  created_at
  updated_at
}

beds --> care_centres : "belongs to"
beds --> patients : "belongs to"

consumptions --> patients : "belongs to"
consumptions --> items : "belongs to"
consumptions --> staff : "belongs to"

patients --> accounts : "belongs to"
patients --> staff : "belongs to"
volunteers --> accounts : "belongs to"

shifts --> care_centres : "belongs to"
shifts --> staff : "belongs to"

staff --> accounts : "belongs to"
staff --> laboratories : "belongs to"

treatments --> staff : "belongs to"
treatments --> patients : "belongs to"

visits --> patients : "belongs to"

@enduml