med-cms 1.0.0-beta.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE.txt +13 -0
  2. package/README.md +117 -0
  3. package/database/config/db-init.js +67 -53
  4. package/database/models/appointments.js +35 -20
  5. package/database/models/clinics.js +25 -13
  6. package/database/models/diseases.js +21 -13
  7. package/database/models/districts.js +55 -0
  8. package/database/models/news.js +25 -0
  9. package/database/models/user-addresses.js +21 -14
  10. package/database/models/users.js +69 -26
  11. package/database/services/admin/create-clinic.js +18 -6
  12. package/database/services/admin/db-analytics.js +42 -16
  13. package/database/services/admin/index.js +6 -6
  14. package/database/services/admin/manage-staff.js +47 -17
  15. package/database/services/doctor/conduct-exam.js +26 -20
  16. package/database/services/doctor/get-schedule.js +26 -18
  17. package/database/services/doctor/index.js +6 -6
  18. package/database/services/doctor/patient-access.js +34 -25
  19. package/database/services/patient/book-appointment.js +37 -17
  20. package/database/services/patient/calc-district.js +70 -21
  21. package/database/services/patient/get-profile.js +49 -21
  22. package/database/services/patient/index.js +5 -5
  23. package/env_init.js +55 -0
  24. package/index.d.ts +38 -24
  25. package/index.js +48 -25
  26. package/migrate-diseases.js +192 -120
  27. package/package.json +3 -3
  28. package/public/css/admin.css +80 -80
  29. package/public/css/auth.css +52 -44
  30. package/public/css/doctor.css +131 -125
  31. package/public/css/home.css +155 -0
  32. package/public/html/dashboard-admin.html +423 -101
  33. package/public/html/dashboard-doctor.html +155 -66
  34. package/public/html/dashboard-patient.html +199 -94
  35. package/public/html/home/about.html +0 -0
  36. package/public/html/home/contact.html +0 -0
  37. package/public/html/home/info.html +0 -0
  38. package/public/html/home.html +159 -0
  39. package/public/html/login.html +73 -43
  40. package/public/js/admin.js +329 -165
  41. package/public/js/auth.js +45 -41
  42. package/public/js/doctor.js +117 -103
  43. package/public/js/home.js +113 -0
  44. package/public/js/patient.js +130 -108
  45. package/server/midleware.js +33 -13
  46. package/server/permissions.js +105 -43
  47. package/server/server.js +517 -176
  48. package/README +0 -161
  49. package/test.js +0 -27
@@ -1,78 +1,167 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html lang="ru">
3
- <head>
4
- <meta charset="UTF-8">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
5
  <title>Панель Врача | MED-CMS</title>
6
- <link rel="stylesheet" href="/med/css/doctor.css">
7
- </head>
8
- <body>
6
+ <link rel="stylesheet" href="/med/css/doctor.css" />
7
+ </head>
8
+ <body>
9
9
  <div class="dashboard">
10
- <header>
11
- <div>
12
- <h1 id="doctorTitle">АРМ Медицинского Сотрудника</h1>
13
- <p style="margin: 5px 0 0 0; font-size: 14px; opacity: 0.9;">
14
- Вы вошли как: <span id="doctorPosition" style="font-weight: bold; text-decoration: underline;">Загрузка должности...</span>
10
+ <header>
11
+ <div>
12
+ <h1 id="doctorTitle">АРМ Медицинского Сотрудника</h1>
13
+ <p style="margin: 5px 0 0 0; font-size: 14px; opacity: 0.9">
14
+ Вы вошли как:
15
+ <span
16
+ id="doctorPosition"
17
+ style="font-weight: bold; text-decoration: underline"
18
+ >Загрузка должности...</span
19
+ >
15
20
  (<span id="doctorName">ФИО</span>)
16
- </p>
17
- </div>
18
- <div style="display: flex; gap: 10px; align-items: center;">
19
- <button onclick="togglePasswordModal()" class="btn-logout" style="background: #2563eb; border-color: #2563eb;">Сменить пароль</button>
20
- <button onclick="logout()" class="btn-logout">Выйти</button>
21
- </div>
22
- </header>
23
- <div id="passwordModal" class="hidden" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); display: flex; justify-content: center; align-items: center; z-index: 9999;">
24
- <div style="background: white; padding: 25px; border-radius: 8px; width: 320px; box-shadow: 0 4px 15px rgba(0,0,0,0.15);">
25
- <h3 style="margin-top:0; color:#1e3a8a;">Смена пароля</h3>
26
- <form id="changePasswordForm">
21
+ </p>
22
+ </div>
23
+ <div style="display: flex; gap: 10px; align-items: center">
24
+ <button
25
+ onclick="togglePasswordModal()"
26
+ class="btn-logout"
27
+ style="background: #2563eb; border-color: #2563eb"
28
+ >
29
+ Сменить пароль
30
+ </button>
31
+ <button onclick="logout()" class="btn-logout">Выйти</button>
32
+ </div>
33
+ </header>
34
+ <div
35
+ id="passwordModal"
36
+ class="hidden"
37
+ style="
38
+ position: fixed;
39
+ top: 0;
40
+ left: 0;
41
+ width: 100%;
42
+ height: 100%;
43
+ background: rgba(0, 0, 0, 0.5);
44
+ display: flex;
45
+ justify-content: center;
46
+ align-items: center;
47
+ z-index: 9999;
48
+ "
49
+ >
50
+ <div
51
+ style="
52
+ background: white;
53
+ padding: 25px;
54
+ border-radius: 8px;
55
+ width: 320px;
56
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
57
+ "
58
+ >
59
+ <h3 style="margin-top: 0; color: #1e3a8a">Смена пароля</h3>
60
+ <form id="changePasswordForm">
27
61
  <div class="form-group">
28
- <label>Текущий пароль</label>
29
- <input type="password" id="oldPassword" required style="width:100%; padding:8px; box-sizing:border-box; border:1px solid #cbd5e1; border-radius:4px;">
62
+ <label>Текущий пароль</label>
63
+ <input
64
+ type="password"
65
+ id="oldPassword"
66
+ required
67
+ style="
68
+ width: 100%;
69
+ padding: 8px;
70
+ box-sizing: border-box;
71
+ border: 1px solid #cbd5e1;
72
+ border-radius: 4px;
73
+ "
74
+ />
30
75
  </div>
31
76
  <div class="form-group">
32
- <label>Новый пароль</label>
33
- <input type="password" id="newPassword" required style="width:100%; padding:8px; box-sizing:border-box; border:1px solid #cbd5e1; border-radius:4px;">
77
+ <label>Новый пароль</label>
78
+ <input
79
+ type="password"
80
+ id="newPassword"
81
+ required
82
+ style="
83
+ width: 100%;
84
+ padding: 8px;
85
+ box-sizing: border-box;
86
+ border: 1px solid #cbd5e1;
87
+ border-radius: 4px;
88
+ "
89
+ />
34
90
  </div>
35
- <div style="display:flex; gap:10px; margin-top:20px;">
36
- <button type="submit" class="btn-save" style="padding:10px; font-size:14px;">Сохранить</button>
37
- <button type="button" onclick="togglePasswordModal()" class="btn-logout" style="color:#0f172a; background:#e2e8f0; border-color:#cbd5e1; width:100%;">Отмена</button>
91
+ <div style="display: flex; gap: 10px; margin-top: 20px">
92
+ <button
93
+ type="submit"
94
+ class="btn-save"
95
+ style="padding: 10px; font-size: 14px"
96
+ >
97
+ Сохранить
98
+ </button>
99
+ <button
100
+ type="button"
101
+ onclick="togglePasswordModal()"
102
+ class="btn-logout"
103
+ style="
104
+ color: #0f172a;
105
+ background: #e2e8f0;
106
+ border-color: #cbd5e1;
107
+ width: 100%;
108
+ "
109
+ >
110
+ Отмена
111
+ </button>
38
112
  </div>
39
- </form>
40
- </div>
41
- </div>
42
- <div class="main-content">
43
- <section class="schedule-section">
44
- <h3>Записи на сегодня</h3>
45
- <ul id="scheduleList" class="patient-list">
46
- <li>Загрузка расписания...</li>
47
- </ul>
48
- </section>
49
- <section class="exam-section hidden" id="examBlock">
50
- <h3>Проведение осмотра: <span id="currentPatientName"></span></h3>
51
- <form id="examForm">
52
- <input type="hidden" id="activeAppointmentId">
53
- <div class="form-group">
54
- <label>Жалобы пациента</label>
55
- <textarea id="examComplaints" required placeholder="Кашель, температура 38.2..."></textarea>
56
- </div>
57
- <div class="form-group">
58
- <label>Объективные данные осмотра</label>
59
- <textarea id="examObjective" required placeholder="Зев гиперемирован, хрипы в легких..."></textarea>
60
- </div>
61
- <div class="form-group">
62
- <label>Личные заметки врача / Лечение</label>
63
- <textarea id="examNotes" placeholder="Рекомендован постельный режим..."></textarea>
64
- </div>
65
- <div class="form-group">
66
- <label>Установить диагноз (Болезнь)</label>
67
- <select id="examDisease" required>
68
- <option value="">-- Выберите диагноз из справочника МКБ --</option>
69
- </select>
70
- </div>
71
- <button type="submit" class="btn-save">Завершить осмотр и внести в статистику</button>
72
- </form>
73
- </section>
113
+ </form>
74
114
  </div>
115
+ </div>
116
+ <div class="main-content">
117
+ <section class="schedule-section">
118
+ <h3>Записи на сегодня</h3>
119
+ <ul id="scheduleList" class="patient-list">
120
+ <li>Загрузка расписания...</li>
121
+ </ul>
122
+ </section>
123
+ <section class="exam-section hidden" id="examBlock">
124
+ <h3>Проведение осмотра: <span id="currentPatientName"></span></h3>
125
+ <form id="examForm">
126
+ <input type="hidden" id="activeAppointmentId" />
127
+ <div class="form-group">
128
+ <label>Жалобы пациента</label>
129
+ <textarea
130
+ id="examComplaints"
131
+ required
132
+ placeholder="Кашель, температура 38.2..."
133
+ ></textarea>
134
+ </div>
135
+ <div class="form-group">
136
+ <label>Объективные данные осмотра</label>
137
+ <textarea
138
+ id="examObjective"
139
+ required
140
+ placeholder="Зев гиперемирован, хрипы в легких..."
141
+ ></textarea>
142
+ </div>
143
+ <div class="form-group">
144
+ <label>Личные заметки врача / Лечение</label>
145
+ <textarea
146
+ id="examNotes"
147
+ placeholder="Рекомендован постельный режим..."
148
+ ></textarea>
149
+ </div>
150
+ <div class="form-group">
151
+ <label>Установить диагноз (Болезнь)</label>
152
+ <select id="examDisease" required>
153
+ <option value="">
154
+ -- Выберите диагноз из справочника МКБ --
155
+ </option>
156
+ </select>
157
+ </div>
158
+ <button type="submit" class="btn-save">
159
+ Завершить осмотр и внести в статистику
160
+ </button>
161
+ </form>
162
+ </section>
163
+ </div>
75
164
  </div>
76
165
  <script src="/med/js/doctor.js"></script>
77
- </body>
78
- </html>
166
+ </body>
167
+ </html>
@@ -1,113 +1,218 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html lang="ru">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Личный кабинет пациента | MED-CMS</title>
7
- <link rel="stylesheet" href="/med/css/auth.css">
7
+ <link rel="stylesheet" href="/med/css/auth.css" />
8
8
  <style>
9
- body { display: block; height: auto; padding: 20px; box-sizing: border-box; }
10
- .container { max-width: 900px; margin: 0 auto; background: white; padding: 25px; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
11
- header { display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #e2e8f0; padding-bottom: 15px; margin-bottom: 20px; }
12
- .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }
13
- .section-box { border: 1px solid #e2e8f0; padding: 15px; border-radius: 6px; background: #f8fafc; }
14
- h3 { margin-top: 0; color: #1e3a8a; }
15
- .badge { background: #dbeafe; color: #1e40af; padding: 4px 8px; border-radius: 4px; font-weight: bold; font-size: 14px; }
16
- .record-card { background: white; border-left: 4px solid #2563eb; padding: 12px; margin-bottom: 10px; border-radius: 0 4px 4px 0; box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
17
- .record-card.future { border-left-color: #10b981; }
18
- .btn-logout { background-color: #ef4444; color: white; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-weight: bold; }
19
- .btn-logout:hover { background-color: #dc2626; }
9
+ body {
10
+ display: block;
11
+ height: auto;
12
+ padding: 20px;
13
+ box-sizing: border-box;
14
+ }
15
+ .container {
16
+ max-width: 900px;
17
+ margin: 0 auto;
18
+ background: white;
19
+ padding: 25px;
20
+ border-radius: 8px;
21
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
22
+ }
23
+ header {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ align-items: center;
27
+ border-bottom: 2px solid #e2e8f0;
28
+ padding-bottom: 15px;
29
+ margin-bottom: 20px;
30
+ }
31
+ .grid {
32
+ display: grid;
33
+ grid-template-columns: 1fr 1fr;
34
+ gap: 20px;
35
+ margin-bottom: 25px;
36
+ }
37
+ .section-box {
38
+ border: 1px solid #e2e8f0;
39
+ padding: 15px;
40
+ border-radius: 6px;
41
+ background: #f8fafc;
42
+ }
43
+ h3 {
44
+ margin-top: 0;
45
+ color: #1e3a8a;
46
+ }
47
+ .badge {
48
+ background: #dbeafe;
49
+ color: #1e40af;
50
+ padding: 4px 8px;
51
+ border-radius: 4px;
52
+ font-weight: bold;
53
+ font-size: 14px;
54
+ }
55
+ .record-card {
56
+ background: white;
57
+ border-left: 4px solid #2563eb;
58
+ padding: 12px;
59
+ margin-bottom: 10px;
60
+ border-radius: 0 4px 4px 0;
61
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.02);
62
+ }
63
+ .record-card.future {
64
+ border-left-color: #10b981;
65
+ }
66
+ .btn-logout {
67
+ background-color: #ef4444;
68
+ color: white;
69
+ border: none;
70
+ padding: 8px 16px;
71
+ border-radius: 4px;
72
+ cursor: pointer;
73
+ font-weight: bold;
74
+ }
75
+ .btn-logout:hover {
76
+ background-color: #dc2626;
77
+ }
20
78
  </style>
21
- </head>
22
- <body>
79
+ </head>
80
+ <body>
23
81
  <div class="container">
24
- <header>
25
- <div>
26
- <h2 id="patientName">Загрузка профиля...</h2>
27
- <p id="patientEmail" style="color: #64748b; margin: 5px 0 0 0;"></p>
28
- </div>
29
- <button onclick="logout()" class="btn-logout">Выйти</button>
30
- </header>
82
+ <header>
83
+ <div>
84
+ <h2 id="patientName">Загрузка профиля...</h2>
85
+ <p id="patientEmail" style="color: #64748b; margin: 5px 0 0 0"></p>
86
+ </div>
87
+ <button onclick="logout()" class="btn-logout">Выйти</button>
88
+ </header>
31
89
 
32
- <div class="grid">
33
- <div class="section-box" style="border-top: 4px solid #2563eb;">
34
- <h3>📅 Запись на прием к врачу</h3>
35
- <form id="bookingForm">
36
- <div class="form-group" style="margin-bottom: 10px;">
37
- <label>Выберите специалиста</label>
38
- <select id="bookingDoctor" required>
90
+ <div class="grid">
91
+ <div class="section-box" style="border-top: 4px solid #2563eb">
92
+ <h3>📅 Запись на прием к врачу</h3>
93
+ <form id="bookingForm">
94
+ <div class="form-group" style="margin-bottom: 10px">
95
+ <label>Выберите специалиста</label>
96
+ <select id="bookingDoctor" required>
39
97
  <option value="">-- Загрузка списка врачей... --</option>
40
- </select>
41
- </div>
42
- <div class="grid" style="grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px;">
43
- <div class="form-group" style="margin-bottom: 0;">
44
- <label>Дата приема</label>
45
- <input type="date" id="bookingDate" required>
98
+ </select>
46
99
  </div>
47
- <div class="form-group" style="margin-bottom: 0;">
100
+ <div
101
+ class="grid"
102
+ style="
103
+ grid-template-columns: 1fr 1fr;
104
+ gap: 10px;
105
+ margin-bottom: 10px;
106
+ "
107
+ >
108
+ <div class="form-group" style="margin-bottom: 0">
109
+ <label>Дата приема</label>
110
+ <input type="date" id="bookingDate" required />
111
+ </div>
112
+ <div class="form-group" style="margin-bottom: 0">
48
113
  <label>Время (Слот)</label>
49
114
  <select id="bookingTime" required>
50
- <option value="">-- Время --</option>
51
- <option value="08:00">08:00</option>
52
- <option value="08:30">08:30</option>
53
- <option value="09:00">09:00</option>
54
- <option value="09:30">09:30</option>
55
- <option value="10:00">10:00</option>
56
- <option value="10:00">10:30</option>
57
- <option value="10:00">11:00</option>
58
- <option value="10:00">11:30</option>
59
- <option value="10:00">12:00</option>
60
- <option value="10:00">12:30</option>
61
- <option value="10:00">13:00</option>
62
- <option value="10:00">13:30</option>
63
- <option value="14:00">14:00</option>
64
- <option value="14:30">14:30</option>
65
- <option value="08:00">15:00</option>
66
- <option value="08:30">15:30</option>
67
- <option value="09:00">16:00</option>
68
- <option value="09:30">16:30</option>
69
- <option value="10:00">17:00</option>
70
- <option value="14:00">17:30</option>
71
- <option value="14:30">18:00</option>
72
- <option value="14:30">18:30</option>
73
- <option value="14:30">19:00</option>
74
- <option value="14:30">19:30</option>
115
+ <option value="">-- Время --</option>
116
+ <option value="08:00">08:00</option>
117
+ <option value="08:30">08:30</option>
118
+ <option value="09:00">09:00</option>
119
+ <option value="09:30">09:30</option>
120
+ <option value="10:00">10:00</option>
121
+ <option value="10:00">10:30</option>
122
+ <option value="10:00">11:00</option>
123
+ <option value="10:00">11:30</option>
124
+ <option value="10:00">12:00</option>
125
+ <option value="10:00">12:30</option>
126
+ <option value="10:00">13:00</option>
127
+ <option value="10:00">13:30</option>
128
+ <option value="14:00">14:00</option>
129
+ <option value="14:30">14:30</option>
130
+ <option value="08:00">15:00</option>
131
+ <option value="08:30">15:30</option>
132
+ <option value="09:00">16:00</option>
133
+ <option value="09:30">16:30</option>
134
+ <option value="10:00">17:00</option>
135
+ <option value="14:00">17:30</option>
136
+ <option value="14:30">18:00</option>
137
+ <option value="14:30">18:30</option>
138
+ <option value="14:30">19:00</option>
139
+ <option value="14:30">19:30</option>
75
140
  </select>
141
+ </div>
76
142
  </div>
143
+ <button
144
+ type="submit"
145
+ class="btn"
146
+ style="padding: 10px; background-color: #2563eb"
147
+ >
148
+ Забронировать талон
149
+ </button>
150
+ </form>
77
151
  </div>
78
- <button type="submit" class="btn" style="padding: 10px; background-color: #2563eb;">Забронировать талон</button>
79
- </form>
80
- </div>
81
- <div class="section-box">
82
- <h3>📍 Мой медицинский участок</h3>
83
- <div id="districtInfo" style="margin-bottom: 15px;">
84
- <p>Участок и кабинет не определены. Укажите адрес проживания ниже.</p>
85
- </div>
86
- <form id="addressForm">
87
- <h4 style="margin: 10px 0;">Обновить адрес проживания</h4>
88
- <div class="form-group" style="margin-bottom: 10px;">
89
- <input type="text" id="addrCity" placeholder="Город (например, Минск)" required>
90
- </div>
91
- <div class="grid" style="grid-template-columns: 2fr 1fr; gap: 10px; margin-bottom: 10px;">
92
- <input type="text" id="addrStreet" placeholder="Улица (например, Пушкина)" required>
93
- <input type="text" id="addrHouse" placeholder="Дом / Корпус" required>
94
- </div>
95
- <button type="submit" class="btn" style="padding: 8px;">Сохранить адрес и рассчитать участок</button>
96
- </form>
152
+ <div class="section-box">
153
+ <h3>📍 Мой медицинский участок</h3>
154
+ <div id="districtInfo" style="margin-bottom: 15px">
155
+ <p>
156
+ Участок и кабинет не определены. Укажите адрес проживания ниже.
157
+ </p>
158
+ </div>
159
+ <form id="addressForm">
160
+ <h4 style="margin: 10px 0">Обновить адрес проживания</h4>
161
+ <div class="form-group" style="margin-bottom: 10px">
162
+ <input
163
+ type="text"
164
+ id="addrCity"
165
+ placeholder="Город (например, Минск)"
166
+ required
167
+ />
97
168
  </div>
98
- <div class="section-box">
99
- <h3>ℹ️ Справка пациента</h3>
100
- <p>При заполнении адреса наша медицинская система **автоматически распределяет** вас к нужной поликлинике, терапевтическому участку и назначает постоянный кабинет для посещения.</p>
101
- <p>Ниже отображается ваша полная электронная медицинская карта: диагнозы, рекомендации и рецепты на лекарства, выписанные врачами во время осмотров.</p>
169
+ <div
170
+ class="grid"
171
+ style="
172
+ grid-template-columns: 2fr 1fr;
173
+ gap: 10px;
174
+ margin-bottom: 10px;
175
+ "
176
+ >
177
+ <input
178
+ type="text"
179
+ id="addrStreet"
180
+ placeholder="Улица (например, Пушкина)"
181
+ required
182
+ />
183
+ <input
184
+ type="text"
185
+ id="addrHouse"
186
+ placeholder="Дом / Корпус"
187
+ required
188
+ />
102
189
  </div>
190
+ <button type="submit" class="btn" style="padding: 8px">
191
+ Сохранить адрес и рассчитать участок
192
+ </button>
193
+ </form>
103
194
  </div>
104
- <section class="section-box" style="background: #ffffff;">
105
- <h3>📋 Моя электронная медицинская карта и история приемов</h3>
106
- <div id="medicalHistoryList">
107
- <p style="color: #64748b;">Загрузка истории болезни...</p>
108
- </div>
109
- </section>
195
+ <div class="section-box">
196
+ <h3>ℹ️ Справка пациента</h3>
197
+ <p>
198
+ При заполнении адреса наша медицинская система **автоматически
199
+ распределяет** вас к нужной поликлинике, терапевтическому участку и
200
+ назначает постоянный кабинет для посещения.
201
+ </p>
202
+ <p>
203
+ Ниже отображается ваша полная электронная медицинская карта:
204
+ диагнозы, рекомендации и рецепты на лекарства, выписанные врачами во
205
+ время осмотров.
206
+ </p>
207
+ </div>
208
+ </div>
209
+ <section class="section-box" style="background: #ffffff">
210
+ <h3>📋 Моя электронная медицинская карта и история приемов</h3>
211
+ <div id="medicalHistoryList">
212
+ <p style="color: #64748b">Загрузка истории болезни...</p>
213
+ </div>
214
+ </section>
110
215
  </div>
111
216
  <script src="/med/js/patient.js"></script>
112
- </body>
217
+ </body>
113
218
  </html>
File without changes
File without changes
File without changes