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.
- package/LICENSE.txt +13 -0
- package/README.md +117 -0
- package/database/config/db-init.js +67 -53
- package/database/models/appointments.js +35 -20
- package/database/models/clinics.js +25 -13
- package/database/models/diseases.js +21 -13
- package/database/models/districts.js +55 -0
- package/database/models/news.js +25 -0
- package/database/models/user-addresses.js +21 -14
- package/database/models/users.js +69 -26
- package/database/services/admin/create-clinic.js +18 -6
- package/database/services/admin/db-analytics.js +42 -16
- package/database/services/admin/index.js +6 -6
- package/database/services/admin/manage-staff.js +47 -17
- package/database/services/doctor/conduct-exam.js +26 -20
- package/database/services/doctor/get-schedule.js +26 -18
- package/database/services/doctor/index.js +6 -6
- package/database/services/doctor/patient-access.js +34 -25
- package/database/services/patient/book-appointment.js +37 -17
- package/database/services/patient/calc-district.js +70 -21
- package/database/services/patient/get-profile.js +49 -21
- package/database/services/patient/index.js +5 -5
- package/env_init.js +55 -0
- package/index.d.ts +38 -24
- package/index.js +48 -25
- package/migrate-diseases.js +192 -120
- package/package.json +3 -3
- package/public/css/admin.css +80 -80
- package/public/css/auth.css +52 -44
- package/public/css/doctor.css +131 -125
- package/public/css/home.css +155 -0
- package/public/html/dashboard-admin.html +423 -101
- package/public/html/dashboard-doctor.html +155 -66
- package/public/html/dashboard-patient.html +199 -94
- package/public/html/home/about.html +0 -0
- package/public/html/home/contact.html +0 -0
- package/public/html/home/info.html +0 -0
- package/public/html/home.html +159 -0
- package/public/html/login.html +73 -43
- package/public/js/admin.js +329 -165
- package/public/js/auth.js +45 -41
- package/public/js/doctor.js +117 -103
- package/public/js/home.js +113 -0
- package/public/js/patient.js +130 -108
- package/server/midleware.js +33 -13
- package/server/permissions.js +105 -43
- package/server/server.js +517 -176
- package/README +0 -161
- package/test.js +0 -27
|
@@ -1,78 +1,167 @@
|
|
|
1
|
-
<!
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Вы вошли как:
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
29
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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
|
-
<!
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
33
|
-
<div class="section-box" style="border-top: 4px solid #2563eb
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
<
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|