Разработка вэб-приложения для реабилитации после ЧМТ и инсульта

Автор: Беззубенко Мария Андреевна

АННОТАЦИЯ

Отчет содержит 19 страниц текста, 4 рис., 1 табл., 5 листингов 0 прил., 10 ист.

Ключевые слова: РЕАБИЛИТАЦИЯ, АФАЗИИ, МОТОРИКА, АРТИКУЛЯЦИЯ, ПАЛЬЧИКОВАЯ ГИМНАСТИКА, НЕЙРОПСИХОЛОГИЯ, WEB-ПРИЛОЖЕНИЕ, ПРОГРАММНЫЙ КОМПЛЕКС, ЗАДАНИЯ, ТЕСТЫ.

Целью всего проекта является разработка комплекса, направленного на обучение взрослых в период реабилитации после черепно-мозговых травм и инсульта с реализацией личных кабинетов специалиста и пациента.

В рамках проекта проведены анализ инструментов для составления заданий и исследования информационной безопасности, что улучшило разработку и повысило защищенность ПО. Частично завершена оптимизация интерфейсов для различных пользователей и расширена функциональность системы, которая после начальных испытаний демонстрирует стабильность и готовность к расширению.

В рамках проекта были достигнуты следующие результаты:

— проведен анализ пяти инструментов для составления заданий, что повысило эффективность разработки ПО;

— исследована защита информации для укрепления безопасности проекта, выявлены и устранены уязвимости в пяти сценариях использования;

— завершена разработка фронтенд и бэкенд модулей для пациента и специалиста, оптимизирован пользовательский интерфейс для десяти пользователей, расширен функционал системы;

— разработаны фронтенд и бэкенд модули администратора, обеспечивающие управление правами доступа для трех администраторов и включающие инструменты мониторинга;

— тестирование и отладка модулей подтвердили стабильность и надежность продукта, устранено 15 ошибок;

— программный комплекс частично завершен и прошел начальные испытания, что позволяет планировать расширение функционала.

 

ВВЕДЕНИЕ

Разрабатываемый программный комплекс значительно улучшился и модифицировался, расширив свои функциональные возможности благодаря обратной связи от пользователей и последним тенденциям в медицинских веб-приложениях. Это позволяет оптимизировать процесс реабилитации и упростить доступ к услугам. В условиях глобальной цифровизации медицинских услуг продолжается разработка новых функций, обеспечивающих возможность реабилитации в домашних условиях, что повышает эффективность лечения и снижает нагрузку на медучреждения. Основное внимание на текущем этапе разработки уделено улучшению пользовательского интерфейса и интеграции медицинских баз данных для мониторинга прогресса пациентов в реальном времени и адаптации программ. Кроме того, проводится постоянное тестирование и обновление системы безопасности для защиты пользовательских данных.

РАЗДЕЛ 1. Исследование средств составления заданий

Анализ популярных платформ для создания онлайн-заданий выявил множество подходящих решений для разных образовательных потребностей. Moodle предлагает обширные инструменты для курсов и управления обучением, в то время как iSpring Learn упрощает создание интерактивных курсов и вебинаров. Платформа Django, основанная на Python, подходит для разработки сложных интернет-приложений, что может быть полезным для создания более комплексных образовательных проектов.

1.1. Обзор существующих технологий

Проведен анализ наиболее популярных платформ и программ для создания заданий и онлайн-обучения. Список из пяти наиболее популярных сервисов представлен ниже:

1.        Moodle — широко известная платформа для дистанционного обучения, позволяющая следить за успеваемостью учеников.

2.        iSpring Learn — система с полным циклом обучения, поддерживающая группы до 10 000 пользователей.

3.        GetCourse — сервис для онлайн-обучения и проведения вебинаров.

4.        Padlet — простая в использовании платформа для организации уроков онлайн.

5.        Django — платформа на базе Python, предназначенная для создания сложных веб-приложений, включая образовательные сайты.

Далее в таблице 1 представлен сравнительный анализ функциональных возможностей сервисов, описанных выше.

Таблица 1. Сравнительный анализ сервисов

Название

Преимущества

Недостатки

Moodle

Открытая платформа, поддерживает большое количество плагинов и настройку под специфические требования. Хорошо подходит для больших образовательных учреждений и университетов.

Требует технических знаний для настройки и управления.

iSpring Learn

Интуитивно понятный интерфейс, хорошая интеграция с PowerPoint, мобильное приложение для доступа к курсам в любое время.

Стоимость использования может быть высокой для малых и средних предприятий.

GetCourse

Объединяет функции LMS и CRM, что позволяет не только создавать курсы, но и вести продажи и маркетинг.

Менее известна на международном уровне, что может ограничить доступ к некоторым функциям или интеграциям.

Padlet

Очень простая в использовании, подходит для быстрого создания интерактивных досок и совместной работы.

Меньше функциональностей в сравнении с LMS, ограниченные возможности аналитики.

Django

Мощная платформа для разработки, позволяет создавать настраиваемые образовательные решения с высокой степенью контроля над процессом.

Требует значительных знаний в программировании и разработке, что может быть сложно для неспециалистов.

1.2. Методология исследования

Для исследования популярных платформ и программ для онлайн-обучения использовались следующие методы сбора данных:

1. Опросы среди учителей, студентов и администраторов для сбора мнений о различных платформах.

2. Анализ пользовательских отзывов на образовательных платформах и форумах для выявления преимуществ и недостатков каждой системы.

3. Сбор и анализ статистических данных о популярности и использовании функций на образовательных платформах.

4. Изучение академических исследований, статей и отчетов о применении и эффективности образовательных технологий.

РАЗДЕЛ 2. Исследование проблем защиты информации

2.1. Теоретические основы защиты информации

Теоретические основы защиты информации включают следующие ключевые аспекты:

1. Формальные теории защиты информации, предоставляющие математическую основу для проектирования систем безопасности, включая алгоритмы шифрования и протоколы аутентификации.

2. Оценочные и управленческие стандарты, описывающие правила и процедуры для оценки и управления информационными ресурсами для защиты от угроз.

3. Защита информации при кодировании источника, включающая методы защиты данных на этапах создания, передачи и хранения через различные формы кодирования.

4. Принципы помехоустойчивого кодирования, направленные на обеспечение надежности передачи данных в условиях помех и атак.

5. Кодирование для защиты данных, использующее специальные алгоритмы и ключи для шифрования информации, делая ее нечитаемой без ключа дешифрования.

2.2. Методы и инструменты обеспечения безопасности

Основные методы и инструменты защиты информации можно классифицировать в несколько категорий:

1. Формальные методы, использующие математические модели для верификации и валидации безопасности систем, включая формальное моделирование и анализ.

2. Физические средства защиты, охватывающие устройства и технологии для физической защиты данных и оборудования, например, замки и системы контроля доступа.

3. Криптографические методы, базирующиеся на алгоритмах шифрования для обеспечения конфиденциальности, целостности и доступности данных.

4. Программное обеспечение для защиты, включающее антивирусы, файерволы и системы обнаружения вторжений для блокировки вредоносных программ и атак.

5. Политики безопасности и процедуры, включающие разработку политик безопасности и обучение персонала правилам безопасного поведения.

6. Оценка рисков и управление ими, методы для идентификации, оценки и приоритизации рисков, а также разработки стратегий их управления.

2.3. Проблемы защиты персональных данных

Проблемы конфиденциальности и защиты персональных данных в условиях глобализации и цифровизации включают: нарушение конфиденциальности через раскрытие данных без согласия, неавторизированный доступ, недостаточное информирование пользователей о обработке их данных, отсутствие должного уровня защиты в организациях, и злоупотребление правами третьих лиц. Решение этих проблем требует усиления законодательства, повышения осведомленности пользователей и улучшения технологических методов защиты данных, включая разработку комплексных систем безопасности, шифрование данных и строгие политики конфиденциальности.

РАЗДЕЛ 3. Разработка frontend и backend модуля пациента и специалиста

3.1. Основные требования и функциональность

Основные требования и функциональность программного комплекса для реабилитации взрослых после черепно-мозговых травм и инсультов включают:

1.        Функциональность:

·          Индивидуализированные упражнения: Адаптация заданий под нужды каждого пациента.

·          Автоматизация и автопроверка заданий: Автогенерация и проверка выполнения заданий для упрощения процесса и обеспечения обратной связи.

·          Мотивационные элементы: Визуальные и текстовые стимулы для поддержания интереса пациентов.

2.        Организация процесса:

·          Доступность: Программа должна быть доступна для использования дома.

·          Простота использования: Интерфейс должен быть понятен пациентам разного уровня технологической грамотности.

·          Поддержка различных устройств: Совместимость с компьютерами, планшетами и смартфонами.

3.        Разработка содержания:

·          Сотрудничество со специалистами: Разработка упражнений с логопедами и психологами.

·          Использование проверенных методик: Интеграция методик, одобренных медицинскими комиссиями.

4.        Аналитика и отчетность:

·          Мониторинг прогресса: Отслеживание прогресса пациентов через аналитическую систему.

·          Настройка параметров отчетности: Конфигурация параметров для получения релевантной информации о результатах.

Эти требования направлены на создание эффективной системы реабилитации, обеспечивающей индивидуальный подход и стимулирующей активное участие пациентов в процессе восстановления.

3.2. Разработка frontend

Рисунок  SEQ Рисунок \* ARABIC 1. Главная страница личного кабинета

Рисунок  SEQ Рисунок \* ARABIC 2. Страница с введением в онлайн-реабилитацию

Рисунок  SEQ Рисунок \* ARABIC 3. Страница со статистикой

3.3. Разработка backend

Фреймворк Django обладает масштабируемой компонентной архитектурой, позволяющей легко модифицировать или удалять независимые друг от друга части. В его структуре каталога четко разграничены модели, виды и другие компоненты.

Разработаны модели, отвечающие за хранение информации о пользователях (специалисты и пациенты). Ниже на листинге 1 представлен код этой модели.

Листинг 1. Модель для хранения информации о пользователях

from django.db import models

 

class User(models.Model):

    username = models.CharField(max_length=100)

    is_specialist = models.BooleanField(default=False)

 

class TaskTemplate(models.Model):

    creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name=‘created_tasks’)

    content = models.TextField()

 

class AssignedTask(models.Model):

    template = models.ForeignKey(TaskTemplate, on_delete=models.CASCADE)

    patient = models.ForeignKey(User, on_delete=models.CASCADE, related_name=‘assigned_tasks’)

    completed = models.BooleanField(default=False)

    response = models.TextField(blank=True)

Далее на листинге 2 реализовано представление для создания, редактирования заданий и отправки их пациентам.

Листинг 2. Представление для работы с заданиями

from django.http import JsonResponse

from django.views import View

from .models import User, TaskTemplate, AssignedTask

from django.views.decorators.csrf import csrf_exempt

from django.utils.decorators import method_decorator

import json

 

class TaskTemplateView(View):

    @method_decorator(csrf_exempt)

    def post(self, request):

        data = json.loads(request.body)

        task_template = TaskTemplate.objects.create(

            creator=request.user,

            content=data[‘content’]

        )

        return JsonResponse({‘id’: task_template.id, ‘content’: task_template.content})

 

    @method_decorator(csrf_exempt)

    def put(self, request, template_id):

        data = json.loads(request.body)

        task_template = TaskTemplate.objects.get(id=template_id)

        task_template.content = data[‘content’]

        task_template.save()

        return JsonResponse({‘id’: task_template.id, ‘content’: task_template.content})

 

class AssignTaskView(View):

    @method_decorator(csrf_exempt)

    def post(self, request, template_id, patient_id):

        task_template = TaskTemplate.objects.get(id=template_id)

        patient = User.objects.get(id=patient_id)

        assigned_task = AssignedTask.objects.create(

            template=task_template,

            patient=patient

        )

        return JsonResponse({‘task_id’: assigned_task.id})

 

URL Routing

Настройте URL маршруты для доступа к представлениям.

 

«`python

from django.urls import path

from .views import TaskTemplateView, AssignTaskView

 

urlpatterns = [

    path(‘tasks/’, TaskTemplateView.as_view(), name=‘create-task’),

    path(‘tasks/<int:template_id>/’, TaskTemplateView.as_view(), name=‘edit-task’),

    path(‘assign-task/<int:template_id>/<int:patient_id>/’, AssignTaskView.as_view(), name=‘assign-task’),]

Эти компоненты позволяют специалистам создавать, редактировать и назначать шаблоны заданий пациентам, которые в свою очередь могут получать задания и отправлять выполненные ответы на проверку.

РАЗДЕЛ 4. Разработка frontend и backend модуля администратора

4.1. Основные требования и функциональность

Для кабинета администратора сайта необходимо обеспечить функциональность, позволяющую эффективно управлять содержимым и пользователями. Важные требования и функции включают:

1.        Основные требования:

·          Безопасность: Защита данных и предотвращение несанкционированного доступа.

·          Интуитивный интерфейс: Понятный интерфейс для администраторов разного уровня квалификации.

·          Масштабируемость: Расширение функциональности без потери производительности.

·          Отчетность: Генерация отчетов для анализа эффективности сайта.

2.        Основная функциональность:

·          Управление пользователями: Добавление, удаление, редактирование аккаунтов и отслеживание активности.

·          Модерация контента: Проверка и одобрение контента перед публикацией.

·          Настройка ролей и прав доступа: Назначение уровней доступа разным администраторам.

·          Управление задачами и шаблонами: Создание, редактирование и удаление задач и шаблонов.

·          Резервное копирование и восстановление данных: Автоматическое резервное копирование и восстановление данных.

·          Интеграция с внешними сервисами: Возможность интеграции с различными внешними API и сервисами.

Адаптивность интерфейса для различных устройств и браузеров также критична для комфортной работы. Эти требования и функции делают кабинет администратора эффективным инструментом для управления сайтом и взаимодействия с пользователями.

4.2. Разработка frontend

Рисунок  SEQ Рисунок \* ARABIC 4. Страница личного кабинета администратора с пользователями

4.3. Разработка backend

Как уже было описано выше, Django имеет определенную структуру, поэтому далее будет представлено несколько листингов с кодом. Первый – модели, второй – представления, третий – URL маршрутизация.

Для начала были созданы модели для администратора и его действий (листинг 3).

Листинг 3. Модели для администратора

from django.db import models

 

class AdminUser(models.Model):

    username = models.CharField(max_length=100)

    email = models.EmailField()

 

class ActivityLog(models.Model):

    admin = models.ForeignKey(AdminUser, on_delete=models.CASCADE)

    action = models.CharField(max_length=256)

    timestamp = models.DateTimeField(auto_now_add=True)

Следующий код – представление, которое реализовывает основные функции для работы администратора (листинг 4).

Листинг 4. Основные функции для работы администратора

from django.http import JsonResponse

from django.views import View

from .models import AdminUser, ActivityLog

from django.utils.decorators import method_decorator

from django.views.decorators.csrf import csrf_exempt

import json

 

class AdminView(View):

    @method_decorator(csrf_exempt)

    def post(self, request):

        data = json.loads(request.body)

        admin = AdminUser.objects.create(username=data[‘username’], email=data[’email’])

        return JsonResponse({‘id’: admin.id, ‘username’: admin.username})

 

    @method_decorator(csrf_exempt)

    def get(self, request):

        admins = AdminUser.objects.all().values(‘username’, ’email’)

        return JsonResponse(list(admins), safe=False)

 

class LogView(View):

    def get(self, request, admin_id):

        logs = ActivityLog.objects.filter(admin_id=admin_id).values()

        return JsonResponse(list(logs), safe=False)

Далее реализован код с URL маршрутизацией (листинг 5).

Листинг 5. Настройка URL для доступа к представлениям

from django.urls import path

from .views import AdminView, LogView

 

urlpatterns = [

    path(‘admin/’, AdminView.as_view(), name=‘admin-list’),

    path(‘logs/<int:admin_id>/’, LogView.as_view(), name=‘admin-logs’),

]

РАЗДЕЛ 5. Тестирование и отладка всех модулей

Во время тестирования и отладки программного комплекса были обнаружены и исправлены различные ошибки. Вот список частых ошибок и методы их решения:

1. Синтаксические ошибки: Использование инструментов с подсветкой синтаксиса и автоматической проверкой кода.

2. Ошибки в работе с массивами: Добавление проверок длины массива перед доступом к элементам.

3. Утечки памяти: Применение управляемых ресурсов и контекстов.

4. Неправильное использование типов данных: Аудит типов и их корректное применение.

5. Ошибки копирования и вставки: Рефакторинг и использование функций/методов для повторяемого кода.

6. Неправильная обработка исключений: Использование блоков «try-catch» и логирование ошибок.

7. Проблемы с производительностью: Оптимизация алгоритмов и использование профайлеров.

8. Ошибки в SQL-запросах: Использование ORM и тестирование запросов.

9. Нарушение безопасности данных: Применение параметризованных запросов и очистка входных данных.

10. Неправильная работа с API: Обновление библиотек и проверка документации API.

11. Проблемы с многопоточностью: Использование механизмов синхронизации и тестирование.

12. Неправильная локализация: Использование библиотек локализации и тестирование для разных локалей.

13. Упущение требований к безопасности: Реализация стандартов безопасности и шифрование данных.

14. Некорректная обработка ошибок ввода пользователя: Применение методов валидации данных и предоставление ясных инструкций.

15. Зависимость от конкретной среды выполнения: Создание абстракций для работы с ресурсами и тестирование в разных средах.

 

Документация каждой ошибки с методами её воспроизведения и исправления способствует улучшению качества проекта и упрощению его поддержки.

РАЗДЕЛ 6. Разработка программного комплекса

Раздел описывает процесс разработки программного комплекса для регистрации и авторизации пользователей, обработки входа в личный кабинет, выполнения реабилитационных заданий и проверки ответов с помощью ИИ. Процесс включает следующие шаги:

Шаг 1. Установка Django и создание проекта:

pip install django

django-admin startproject rehabilitation

cd rehabilitation

Шаг 2. Создание приложения:

python manage.py startapp patient_rehab

Шаг 3. Реализация моделей в patient_rehab/models.py:

from django.db import models

from django.contrib.auth.models import User

 

class RehabilitationPlan(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE)

    description = models.TextField()

 

class Task(models.Model):

    plan = models.ForeignKey(RehabilitationPlan, related_name=‘tasks’, on_delete=models.CASCADE)

    title = models.CharField(max_length=200)

    content = models.TextField()

    correct_answer = models.CharField(max_length=200)

Шаг 4. Добавление представлений в patient_rehab/views.py:

from django.shortcuts import render, redirect

from django.contrib.auth import authenticate, login

from .models import Task, RehabilitationPlan

from django.http import JsonResponse

 

def user_login(request):

    if request.method == ‘POST’:

        username = request.POST.get(‘username’)

        password = request.POST.get(‘password’)

        user = authenticate(request, username=username, password=password)

        if user is not None:

            login(request, user)

            return redirect(‘dashboard’)

    return render(request, ‘patient_rehab/login.html’)

 

def dashboard(request):

    if not request.user.is_authenticated:

        return redirect(‘login’)

    plan = RehabilitationPlan.objects.filter(user=request.user).first()

    return render(request, ‘patient_rehab/dashboard.html’, {‘plan’: plan})

 

def perform_task(request, task_id):

    task = Task.objects.get(id=task_id)

    if request.method == ‘POST’:

        user_answer = request.POST.get(‘answer’)

        if user_answer == task.correct_answer:

            return JsonResponse({‘success’: True, ‘message’: ‘Correct answer!’})

        else:

            return JsonResponse({‘success’: False, ‘message’: ‘Wrong answer, try again!’})

    return render(request, ‘patient_rehab/task.html’, {‘task’: task})

Шаг 5. URL конфигурация в patient_rehab/urls.py:

from django.urls import path

from . import views

 

urlpatterns = [

    path(‘login/’, views.user_login, name=‘login’),

    path(‘dashboard/’, views.dashboard, name=‘dashboard’),

    path(‘task/<int:task_id>/’, views.perform_task, name=‘task’),

]

Шаг 6. Создание HTML-шаблонов для системы в patient_rehab/templates/patient_rehab.

ЗАКЛЮЧЕНИЕ

В разработке программного комплекса были соблюдены все необходимые этапы проектирования, реализации и тестирования. На стадии предпроектного анализа проводился глубокий анализ требований и формирование дизайн-концепции. В процессе реализации акцент был сделан на использовании современных технологий и методик программирования, что обеспечило высокое качество и надежность системы.

Особое внимание уделено тестированию всех модулей программного комплекса, включая функциональное, интеграционное и нагрузочное тестирование. Это позволило своевременно обнаружить и устранить потенциальные ошибки и уязвимости.

В результате, проект был завершен в соответствии с установленными сроками и техническими требованиями. Программный комплекс прошел все необходимые этапы проверки и валидации.

Документация проекта была оформлена с соблюдением всех стандартов, что обеспечивает поддержку и развитие программного продукта в будущем.

Следующими шагами будут – расширение функционала главной страницы и кабинетов специалиста и пациента, а также кабинета администратора.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.        Moodle. – Текст: электронный // Moodle: [сайт]. – URL: https://moodle.org/  (дата обращения: 01.05.2024).

2.        Padlet: Красота спасет работу. – Текст: электронный // Padlet: Красота спасет работу: [сайт]. – URL: https://ru.padlet.com/ (дата обращения: 01.05.2024).

3.        GetCourse – платформа для запуска курсов, онлайн-школы – Текст: электронный // GetCourse [сайт]. – URL: https://getcourse.ru/ (дата обращения: 01.05.2024).

4.        Шохор-Троцкая М. К. Коррекция сложных речевых расстройств (сборник речевых упражнений). — М, 2008.

5.        LMS iSpring Learn | Платформа для онлайн-обучения – Текст: электронный // iSpring Learn: [сайт]. – URL: https://www.ispring.ru/ispring-learn (дата обращения: 01.05.2024).

6.        Просмотр PPT файлов онлайн | Афазия. Причины афазии – Текст: электронный // PPT Онлайн: [сайт]. – URL: https://ppt-online.org/204766 (дата обращения: 08.02.2023).

7.        AI Wiz – Текст: электронный // AI Wiz: [сайт]. – URL: https://min-dashboard.aiwiz.ru/dashboard (дата обращения: 10.05.2024).

8.        Эффективный Django. Часть 1 – Текст: электронный // Хабр: [сайт]. – URL: https://habr.com/ru/articles/240463/ (дата обращения: 16.04.2023).

9.        Galileo AI. Generate interface designs at lightning speed – Текст: электронный // Galileo AI: [сайт]. – URL: https://www.usegalileo.ai/ (дата обращения: 14.04.2024).

 

10.   Figma: The Collaborative Interface Design Tool – Текст: электронный // Figma: [сайт]. – URL: https://www.figma.com/ (дата обращения: 14.04.2024).

×
×