Введение
В процессе разработки карты прививок для медкарты частной клиники важнейшим этапом является создание кода программного приложения карты прививок. Этот инструмент медкарты предоставляет пользователю удобный доступ к информации о прививках, поддерживает внесение, редактирование и удаление данных, а также обеспечивает возможность выгрузки данных в различных форматах. В данной статье подробно рассматриваются основные этапы практической реализации карты прививок: от проектирования интерфейса до обработки данных и генерации документов.
Вёрстка дизайна компонентов медкарты клиента
Первым этапом в непосредственной разработке сервиса является определение пользовательского интерфейса медкарты клиента и вёрстка его прототипа. Цель этого этапа состоит в создании внешнего вида интерфейса, который предоставит пользователю удобное взаимодействие с системой и обеспечит заказчику соответствие его требованиям.
Рис. 1. Шаблон страницы в Sketch
Сначала формируется дизайн, учитывающий требования брендинга компании, особое внимание уделяется эргономике: расположению элементов, удобству навигации и читаемости данных – для этого подходят такие онлайн-сервисы как Sketch, Figma. Проектируется адаптивная вёрстка, которая корректно отображается на устройствах с различными размерами экранов. Прототипы должны предусматривать основные пользовательские сценарии: просмотр данных медкарты, добавление/редактирование записей, поиск информации. Проверяется корректность отображения элементов интерфейса на популярных браузерах.
Создание хранилища, получение и вывод данных клиента
Этот этап включает в себя настройку структуры хранения данных в виде инфоблоков Битрикс (ИБ), реализацию методов получения данных и их корректного отображения в пользовательском интерфейсе. Для начала в административной панели Bitrix создаётся инфоблок, отдельно описываются свойства ИБ и задаются нужные поля для профиля пользователя Bitrix [4].
Рис. 2. Редактирование ИБ в административной панели
После завершения вёрстки дизайна сервиса и создания структуры хранения данных можно перейти на этап разработки бэкенда. Прежде чем формировать массивы для вывода информации в медицинскую карту клиента, необходимо проверить авторизацию пользователя. В Битриксе для этого используется метод CUser: IsAuthorized() применяемый для глобального объекта global $USER. Также к объекту $USER применяются два метода CUser: GetID() и CUser :GetByID(). – они позволяют извлечь массив данных пользователя.
Чтобы получить данные о прививках пользователя используется метод CIBlockElement: GetList(). Этот метод позволяет отфильтровать элементы инфоблока, указав его ID и значение свойства «ID пользователя», а также выбрать нужные поля для вывода. Дополнительно можно задать сортировку – в случае инфоблока «Карта прививок» она выполняется по возрастанию полей: «Наименование», «Дата». Результаты, возвращаемые методом, обрабатываются в цикле, а полученные данные выводятся в виде строк таблицы.
Сохранение, изменение и удаление данных
Этот этап охватывает реализацию механизмов обработки пользовательских данных. Основная задача – обеспечить корректное взаимодействие между пользовательским интерфейсом и серверной частью, чтобы гарантировать точное выполнение операций с данными.
Обработка данных формы и их валидация на стороне клиента
Для отправки данных используется JavaScript, с подключением jQuery. Основной функцией здесь является обработка события submit для формы. Перед отправкой данных осуществляется проверка введённых значений – проверяются обязательные поля и поля с особыми условиями (например, даты) Неправильный формат даты или недопустимый возраст вызывают соответствующие сообщения об ошибке.
При успешной валидации данные формируются в объект FormData и передаются на сервер с помощью AJAX-запроса методом POST.
Рис. 3. Форма добавления прививки
Сохранение и обновление данных в инфоблоке
На сервере данные обрабатываются через PHP-скрипт, взаимодействующий с инфоблоками. Алгоритм:
- Проверяется авторизация пользователя с помощью метода CUser: IsAuthorized().
- Полученные данные сортируются, при этом ID элемента выделяется отдельно, а ID пользователя добавляется в массив данных для записи.
- Если ID элемента уже существует, используется метод CIBlockElement: Update() для обновления свойств. Перед обновлением выполняется проверка текущих данных с использованием CIBlockElement: GetProperty(), чтобы сохранить уже существующие значения и добавить новые.
- Если ID элемента не задан, создаётся новый элемент методом CIBlockElement: Add().
Удаление данных
Для удаления данных можно использовать метод CIBlockElement: Delete(), указав ID элемента. Это действие происходит при нажатии пользователем кнопки удаления записи. Предусмотреть подтверждение операции на клиентской стороне, чтобы избежать случайного удаления.
Обработка ошибок и возврат ответов
На сервере предусмотрена проверка результата каждой операции. В случае успешного выполнения команды возвращается сообщение с подтверждением. Если операция завершается с ошибкой, возвращается JSON-ответ с описанием проблемы, $el->LAST_ERROR.
Выгрузка карты прививок
На этом этапе реализуется функционал выгрузки данных пользователя в виде документов в форматах .docx или .pdf. Основная задача – обеспечить пользователю удобный способ получения данных в нужном формате по форме 063-у.
Формирование запросов на стороне клиента
Для выгрузки данных используется интерфейс, где пользователь выбирает тип документа и формат файла. Обработчик событий кнопки «Скачать» определяет маршрут для выполнения запроса. Для карты прививок это – /getvaccination/{userID}/{selectedFormat}. Клиент получает в ответе адрес на файл, по которому создаётся временная ссылка. Она автоматически активируется для начала загрузки.
Рис. 4. Форма выбора файла для скачивания
Генерация карты прививок
Данные о прививках извлекаются с использованием PHP-скрипта, вызываемого через библиотеку execPhp [2]. Они группируются по типу прививки и подготавливаются в виде, совместимом с шаблоном документа.
На основе шаблона документа и обработанных данных, с помощью библиотеки easy-template-x создаётся файл .docx – он сохраняется в директории с уникальным именем [1].
Если выбран формат PDF, .docx файл преобразуется в PDF с использованием команды из библиотеки LibreOffice: /usr/bin/soffice --headless --convert-to pdf --outdir {output_dir} {input_file} [3].
Конечный файл сохраняется в директории /vacFiles/, затем сервер возвращает клиенту URL для скачивания.
Рис. 5. Записи о прививках в формате 063-у
Заключение
Предложенное программное решение позволяет эффективно реализовать систему управления картой прививок в медицинской карте клиента за счёт продуманного интерфейса, надежной системы хранения и обработки данных, а также функционала выгрузки документов. Внедрение данного сервиса в частной клинике не только оптимизирует внутренние процессы, но и повысит качество обслуживания пациентов. Разработанная система может быть масштабирована и адаптирована для внедрения в сервис дополнительных функций, что подчеркивает её практическую значимость и потенциал для дальнейшего развития.