После создания реляционной базы данных запускаю Framework Spring Tool Suite и создаю проект (File-New-Spring Starter Project). Появляется окно, в котором надо указать местоположения проекта, задаем имя проекту «HospitalWeb» и указываем тип сборки «Maven», выбрал «Java version 1.8» (Рис. 3.2). Нажимаем «next» и открывается следующее окно, где предлагается выбрать версию «Spring Boot Version 1.5.3» и выбираем какие библиотеки нам надо подключить, чтобы в проекте сразу все подгрузились. (Рис. 3.3). Нажимаем «Finish» и проект подгружает все ресурсы. (Рис. 3.4).
Рис. 3.2 Окно для указания данных для проекта.
Рис. 3.3. Окно для выбора библиотек.
Рис. 3.4 Структура проекта.
Для начала создаем «пакеты» для удобной навигации по проекту. (Рис. 3.5).
Для каждого «пакета» создаем классы и интерфейсы и пишем код. (Рис.3.6).
Рис. 3.5 Навигация по «пакетам».
Рис. 3.6 Полная структура готового проекта.
В «пакете» «com.hospital.configuration» прописываем код для подключения к базе данных «DataBaseConfiguration» указываем локальный хост и логин с паролем. Для перехвата ссылок используем веб конфигурацию «WebConfiguration», а также используем транзакции для манипулирования данными в базе данных «TransactionConfiguration».
В «пакете» «com.hospital.domain» создаем три сущности и печатаем код на Java:
1) «Patient» - содержит идентификатор пациента, имя, фамилию, отчество, дата рождения, логин и пароль;
2) «Doctor» - содержит идентификатор врача, имя, фамилию, отчество, дата рождения, логин и пароль;
3) «DiagnosisAssignment» - содержит идентификатор назначения диагноза, дата поступления пациента, диагноз, название лекарства, тип назначения (процедуры, медикаменты, операции), дата выписки, идентификатор пациента и идентификатор доктора.
В «пакете» «com.hospital.dao» создаем три интерфейса в которых печатаем код, действии с сущностями:
|
1) «DiagnosisAssignmentRepository» - содержит список назначенных диагнозов, добавление назначения пациента, выписка пациента;
2) «DoctorRepository» - содержит логин, добавления доктора, список докторов;
3) «PatienRepository» - содержит логин, добавление пациента, список информации о диагнозе.
В «пакете» «com.hospital.dao.impl» имплементируем методы с интерфейсов из «пакета» «com.hospital.dao» и пишем код на Java для запросов к базе данных MySQL:
1) «DiagnosisAssignmentRepositoryImpl» - содержит запросы к базе данных для диагнозов и назначений;
2) «DoctorRepositoryImpl» - содержит запросы к базе данных для проверки не занят ли этот логин;
3) «PatientRepositoryImpl» - содержит запросы к базе данных для проверки не занят ли этот логин.
В «пакете» «com.hospital.execption» создаем классы для проверки и перехвата ошибок.
1) «InvalidPasswordException» - содержит проверку на ошибки, правильно ли введен пароль;
2) «UserAlreadyExsitsException» - содержит проверку на ошибки, правильно ли введен логин пользователя;
3) «UserNotFoundException» - содержит проверку на ошибки, существует ли логин данного пользователя в базе данных.
В «пакете» «com.hospital.service» создаем сервисы для сущностей, чтобы в дальнейшим из можно было вызывать для дополнительных манипуляции ими.
1) «DiagnosisAssignmentService»;
2) «DoctorService»;
3) «PatientService».
В «пакете» «com.hospital.web.controller» создаем контроллеры для авторизации и регистрации пользователя, функционал для дополнительных меню в приложении.
1) «AuthDoctorController» - содержит код авторизации доктора;
2) «AuthPatientController» - содержит код для авторизации пациента;
3) «IndexController» - содержит код для главного меню веб-приложения;
|
4) «ListUsersController» - содержит код для меню списка пользователей;
5) «PatientController» - содержит код для просмотра информации о истории болезни;
6) «RegDoctorController» - содержит код для регистрации доктора;
7) «RegPatientController» - содержит код для регистрации пациента.
В «пакете» «com.hospital.web.interceptor» создаем классы для перехвата ограничений действий пользователя. Чтобы пользователь не мог зайти в какое-либо меню без авторизации на сайте.
1) «AuthDoctorInterceptor»;
2) «AuthPatientInterceptor»;
3) «DoctorAddingHadlerInterceptor»;
4) «PatientAddingHandlerInterceptor».
В «пакете» «com.hospital.web.manager» создаем компоненты для сессий пользователей.
1) «DoctorManager»;
2) «PatientManager».
После back-end’а, мы переходим к вебу приложения front-end.
Создаем папки в проводнике для навигации по приложению (Рис. 3.7).
Рис. 3.7 Проводник по front-end’у.
В папке «shared» расположен код для оформления фона сайта и различных блоков, приветствий при авторизации пользователя. Дальше идут страницы, по которым на сайте происходит навигация (Рис. 3.7).
Рис 2.7 Дизайн сайта.
1) «addAssignment» - врач назначает пациенту диагноз и лечения (Рис.3.7 и 3.8);
Рис. 3.7 Фрагмент кода добавления диагноза и назначения лечения.
Рис. 3.8 Графический интерфейс добавления диагноза.
2) «diagnosis» - пациент в личном кабинете может посмотреть историю болезни (Рис. 3.9 и 3.10);
Рис. 3.9 Фрагмент кода история болезни пациента.
Рис. 3.10 Графический интерфейс просмотра истории болезни пациента.
3) «index» - приветствие пациента при авторизации в личном кабинете (Рис. 3.11 и 3.12);
Рис. 3.11 Фрагмента кода приветствия в личном кабинете пациента.
|
Рис. 3.12 Графический интерфейс приветствия пациента.
4) «indexDoc» - приветствие врача при авторизации в личном кабинете (Рис. 3.13 и 3.14);
Рис. 3.13 Фрагмент кода приветствия врача в личном кабинете.
Рис. 3.14 Графический интерфейс приветствия в личном кабинете доктора.
5) «listDiagnosis» - список диагнозов, который может посмотреть врач и выписать пациента (Рис. 3.15 и 3.16);
Рис. 3.15 Фрагмент кода просмотра диагнозов и выписки пациента.
Рис. 3.16 Графический интерфейс диагнозов и выписки пациента.
6) «listDoctors» - список докторов, который может посмотреть только врач (Рис. 3.17 и 3.18);
Рис. 3.17 Фрагмент кода списка докторов.
Рис. 3.18 Графический интерфейс списка докторов.
7) «listPatient» - список пациентов, который может посмотреть только врач (Рис. 3.19 и 3.20);
Рис. 3.19 Фрагмент кода списка пациентов.
Рис. 3.20 Графический интерфейс списка пациентов.
8) «loginDoctor» - создал авторизацию на сайте для доктора (Рис. 3.21 и 3.22);
Рис. 3.21 Фрагмент кода авторизации доктора.
Рис. 3.22 Графический интерфейс авторизации доктора.
9) «loginPatient» - создал авторизацию на сайте для пациента (Рис. 3.23 и 3.24);
Рис. 3.23 Фрагмент кода авторизации пациента.
Рис. 3.24 Графический интерфейс авторизации пациента.
10) «regDoctor» - создал регистрацию для врача (Рис. 3.25 и 3.26);
Рис. 3.25 Фрагмент кода регистрации доктора.
Рис. 3.26 Графический интерфейс регистрации доктора.
11) «regPatient» - создал регистрацию для пациента (Рис. 3.27 и 3.28);
Рис. 3.27 Фрагмент кода регистрации пациента.
Рис. 3.28 Графический интерфейс регистрации пациента.
12) «new» - написал информацию о больнице (Рис. 3.29 и 3.30).
Рис. 3.29 Фрагмент кода для информации о больнице.
Рис. 3.30 Графический интерфейс информации о больнице.
Рис. 3.7 Проводник приложения по front-end’у.
ЗАКЛЮЧЕНИЕ
В проектировании данного проекта мне удалось реализовать систему «Больница» для упрощения использования регистрации пациентов удаленно - сидя дома и имея выход в интернет, чтобы не приходилось стоять в живой очереди.
Для достижения цели мне нужно было изучить язык программирования Java и дополнительно другие компьютерные языки. В создании проекта было не легко. Понадобилось многое изучить и экспериментировать, чтобы проект получился. Самое тяжелое было изучение основ ООП, так как ООП это фундамент данного веб-приложения. Далее я определился в каком Фреймворке буду писать свой проект и создавать базу данных. Я начал с создания базы данных и изучил скрипты SQL. Потом нарисовал на бумаге ERR-model базы данных и переписал ее в программу MySQL Workbench. Выбрав за основу Фреймворк Spring Tool Suite начал писать код на Java. После нескольких неудачных попыток я начинал учиться на своих ошибках, с каждым разом совершенствовался в языке программирования и научился грамотно распределять классы по «пакетам» и писать код. В итоге проект получился и веб-приложение увенчалось успехом. В дальнейшем проект будет дорабатываться и улучшаться. Будут добавлены дополнительные функционалы, для того чтобы было удобно пользоваться интерфейсом веб-приложения.
СПИСОК ЛИТЕРАТУРЫ
1) Малышев, Егор Rolling with Ruby on Rails and IntelliJ IDEA (англ.). blogs.jetbrains.com;
2) https://www.springframework.net;
3) Фаулер, Мартин Crossing Refactoring's Rubicon (англ.). www.martinfowler.com;
4) Кларенс Хо, Роб Харроп. Spring 3 для профессионалов, Pro Spring 3. — М.: «Вильямс», 2012. — 880 с.;
5) Jet Brains. IntelliJ IDEA Editions Comparison;
6) https://wiki.netbeans.org/Ada;
7) https://www.linux.org.ru/news/opensource/12882080;
8) Web & Java EE. Netbeans.org;
9) Plugins → iReport (англ.). www.netbeans.org;
10) https://www.mysql.com/products/workbench/features.html;
11) https://dev.mysql.com/doc/refman/5.6/en/what-is-mysql.html;
12) https://www.mysql.com/about/legal/licensing/foss-exception;
13) Согласно FAQ, а также в соответствии с аудиозаписью эталонного произношения, встречается произношение «Постгре-Эс-Кью-Эл», которое не вполне согласуется с историей наименования (нет отдельного слова «Postgre», а частица «-gres» встречается в названиях многих реляционных СУБД).
ПРИЛОЖЕНИЯ