Удобное и понятное приложение для управления мобильным аппаратом для диализа Renart-PD, дублирующее функционал пульта управления самого аппарата.
Аппарат Renart-PD — это специальный рюкзак для диализа, который позволяет проводить эту процедуру в домашних условиях. Все манипуляции с аппаратом (обучение пациента, необходимые настройки и т.д.) осуществляет специально подготовленный медицинский работник на основании первичных анализов пациента.
Рюкзак состоит из системы насосов и клапанов, обеспечивающих циркуляцию жидкости через систему фильтров для механической очистки, сорбционных колонн и электролизера, ёмкости для избыточной жидкости, которая удаляется из корпуса, а также аккумулятора и системы управления.
Приложение позволяет управлять аппаратом: запускать диализ, дезинфекцию и другие процессы. Также приложение содержит инструкции, какие действия необходимо выполнить для подготовки аппарата к определённой процедуре.
Создать максимально простое, понятное и функциональное приложение, позволяющее управлять работой устройства для диализа Renart-PD.
Приём, обработка и отправка команд аппарату.
Поскольку приложение разрабатывалось для уже существующего устройства, мы не могли вносить свои корректировки и менять логику работы. В первую очередь нужно было помнить о требованиях, указанных в ТЗ, и функциональности.
Работа над приложением началась с изучения логики работы аппарата: как формируются и обрабатываются команды для взаимодействия с устройством, затем мы продумали как лучше организовать работу приложения без жёсткого сценария смены экранов.
Сложность процесса разработки заключалась в том, что у нас на руках не было самого аппарата, его заменял Bluetooth Low Energy (BLE) модуль и программное обеспечение для отправки команд. Мобильный телефон подключался к BLE модулю, разработчик/тестировщик/проектный менеджер вручную формировали команды и через ПО отправляли их в модуль, который, в свою очередь, пересылал эти команды телефону. Через это же ПО принимали команды от аппарата, таким образом мы могли убедиться, что команды в приложении сформированы корректно.
Тестирование было сложным, поскольку мы не могли воспроизвести реальную работу аппарата, опирались только на описание из ТЗ и свой опыт.
Чтобы не выстраиваться в очередь за BLE модулем, разработчики реализовали сервис-заглушку, имитирующий работу искусственной почки, отправляющий и принимающий команды. В зависимости от конфигурации приложения при помощи паттерна DI подключался нужный модуль.
Каждая из функций устройства состоит из множества шагов, соответствующих определённой уникальной команде, получаемой от аппарата. Для каждого шага в приложении создан свой экран. Мы объединили экраны по типам компоновки и разработали конструктор экранов, который помог сэкономить время на вёрстке, т.к. экранов было много. Можно сказать, что в ходе работы мы сделали своеобразную реализацию паттерна Model-View-Intent.
BLE сервис приложения реализует идиому RAII — resource acquisition is initialization. В момент инициализации команд сервис задействует нужные ресурсы, после чего сразу освобождает их.
За приём и отправку команд отвечает Command Service. На основе библиотеки RxJava, нами был создан оператор, принимающий массив байт каждой команды и хранящий их последовательность в буфере до тех пор, пока не будет составлена полная команда, которую в последующем обработает мобильное приложение.
Также в приложении реализован паттерн Single Activity Application, отвечающий за обработку команд, полученных в Command Service.
При разработке особое внимание уделялось функциональности и безопасности для пользователя. Сбой, отключение или поломка мобильного устройства не повлияет на работу аппарата, поскольку телефон дублирует функции модуля дисплея, отвечающего за контроль над устройством.
Стабильная работа приложения гарантирует постоянную связь по Bluetooth с аппаратом Renart-PD. Пользователь без лишних усилий сможет при помощи мобильного устройства запустить диализ, дезинфекцию и другие функции.