Существуют несколько уровней тестирования модулей мониторинга.
- Внутреннее самотестирование расчета индексов
- Тестирование с помощью эмулятора или прибора с использованием дополнительных средств тестирования
- Тестирование с помощью эмулятора или прибора без дополнительных средств
Внутреннее самотестирование предполагает, что в программу встроены средства регресс-тестирования. Результат его виден только разработчику. Смысл в том, чтобы в случае внесения каких-либо изменений в программу, она сама проверила бы корректность расчетов и сообщила об этом разработчику. Для выполнения такого тестирования необходимо иметь входные данные с заранее известным результатом, вычисленным любым способом, кроме использования результатов самой программы. Для большинства расчетных индексов (если не для всех) такой метод может быть применен. Пример: даны интервалы RR и требуется вычислить индекс SDNN.
Тестирование с использованием дополнительных средств тестирования предполагает, что во время работы программы можно получить исходные данные (например экспортировать сигнал в табличный процессор) по которым посчитаны индексы и вручную или с использованием сторонних средств вычислить значение индекса. Пример: на вход подан ЭКГ сигнал пациента, записаны некоторые значения. После записи врач экспортирует полученные RR интервалы вместе с результатом расчета программы в табличный процессор и проверяет, корректно ли на основании данных интервалов вычислен индекс RMSSD
Также это могут быть варианты тестирования, когда известны параметры входного сигнала и нужно оценить корректность его отображения/обработки. В этом случае могут использоваться средства, показывающие точное значение сигнала в некоторых точках или в диапазонах. Пример: на вход прибора подан синусоидальный сигнал с известной амплитудой, требуется проверить корректность этой амплитуды в программе.
Тестирования без каких-либо средств подразумевает тестирование с точки зрения пользователя программы. Если входные данные или некоторые параметры известны, можно проверить индексы, связанные с этими данными. Например, так можно проверить корректность расчета асимметрии, если известны индексы для которых она считается.
Не все эти методы могут быть применимы в каждом конкретном случае. Рассмотрим как они могут быть использованы в различных модулях мониторинга.
Проверка расчетов индексов в этом модуле возможна только разработчиком данного модуля.
В данном модуле нет рассчитываемых в программе индексов. Все индексы (систола, диастола и среднее) получаются с прибора.
Но в модуль встроены некоторые средства для проверки самого прибора:
- Отображение текущего давления
- Режим манометра
Для использования данных средств необходимо включить режим испытаний. В этом режиме в окне методики под кнопкой Измерение будет отображаться текущее давление в манжете (в виде плоской кнопки, щелчок по которой обновляет информацию) и кнопка (чекбокс) для включения режима манометра.
Строка с давлением в манжете позволяет подав на вход прибора некоторое давление наблюдать его в программе или видеть как происходит процесс накачки манжеты. Давление обновляется во время измерения несколько раз в секунду.
Включение режима манометра заставляет прибор закрыть клапан. Это нужно для того, чтобы можно было подать в прибор требуемое давление, а он не выпускал воздух. Результат можно видеть в строке с текущим давлением. Как вариант, можно включить измерение, дождаться, когда давление будет максимально и включить режим манометра - как вариант теста на утечку.
Пользователю может быть интересно видеть текущее давление в манжете во время измерения давления. Пользователю сразу видно, что прибор работает и манжета хорошо одета. При неправильном расположении манжеты давление будет меняться иным способом.
Вроде в некоторых системах даже строят кривую с этим давлением в маленьком окошке. У нас место есть в этом модуле и можно либо выводить строку с текущим давлением, либо строить небольшой символический график.
В данном модуле также нет рассчитываемых в программе индексов. Все индексы (PetCO2, FiCO2 и частота дыхания) приходят с прибора.
Для оценки сигнала, приходящего с прибора в модуль капнографа встроен измерительный прямоугольник. Он позволяет точно оценивать длительность участка сигнала и его амплитуду.
Для использования необходимо включить режим испытаний. После этого в окне методики по щелчку правой кнопкой мыши на надпись шкалы PetCO2 появиться рамка вокруг области сигнала (измерительный прямоугольник). Сам сигнал будет заморожен. Измерительный прямоугольник может перемещаться и переразмериваться мышкой. При этом он будет показывать свои размеры в секундах по ширине и в еденицах измерения сигнала по высоте. Измерительный прямоугольник может быть также быстро переразмерен еще двумя способами. Для первого необходимо щелкнуть правой кнопкой мыши в области прямоугольника и не отпуская кнопки переместить мышь. Для второго способа необходимо последовательно сделать два щелчка правой кнопкой мыши, при этом будет меняться только высота измерительного прямоугольника. Работа измерительного прямоугольника в других методиках, где он есть аналогична.
С помощью измерительного прямоугольника можно проверять корректность получения сигнала с прибора, его амплитуды, длительности (например, оценивать синусоидальный сигнал заданной частоты и амплитуды).
В капнографе измерительный прямоугольник может быть использован в частности для оценки прибора и соответствия PetCO2 амплитуде сигнала, если известен алгоритм по которому он определяется прибором. Или же, зная длительность волны и интервала между волнами самому рассчитать частоту дыхания.
Измерительный прямоугольник может быть полезен для пользователя, желающего самому как-то иначе оценить PetCO2 по другому фронту, линейке или при наличие артефактов. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
В данном модуле нет рассчитываемых в программе индексов. Все индексы (SpO2, ЧСС и PaI) приходят с прибора.
Для оценки сигнала, приходящего с прибора в модуль пульсоксиметра встроен измерительный прямоугольник.
Измерительный прямоугольник в пульсоксиметре в первую очередь позволяет оценить временную длительность волн плетизмограммы. Зная этот интервал, можно вычислить ЧСС, если поделить 60 на длительность волны. Это позволит проверить алгоритм работы прибора по вычислению ЧСС. Также могут оцениваться и длительности отдельных фронтов волн плетизмограммы, что, правда, более полезно уже клиницисту, пытающемуся оценить различные параметры сердечного цикла.
Измерительный прямоугольник может быть полезен для пользователя, желающего оценить временные параметры сердечного цикла по плетизмограмме, рассчитать ЧСС или оценить интервал между сокращениями сердца. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
В данном модуле по каждому каналу производится расчет систолы, диастолы и среднего. Данные параметры не приходят с прибора.
Для оценки прибора в режиме испытаний в окне методики под индексами отображается текущее давление по каждому каналу. Это позволяет подав на вход прибора известное давление оценить погрешности прибора инвазивного измерения давления.
Для оценки сигнала, также имеется измерительный прямоугольник. С его помощью можно не только оценивать длительность сердечного цикла, определяя ЧСС, но и проверять индексы систолы, диастолы и среднего.
В данном модуле сейчас установлена эпоха анализа 10 секунд. Систола считается как максимум сигнала за это время, диастола - как минимум, а среднее - как среднее арифметическое сигнала. Для проверки можно использовать измерительный прямоугольник. С его помощью можно найти максимум (систолу) и минимум (диастолу) на сигнале. Проверка среднего может быть только приблизительной.
Измерительный прямоугольник может быть полезен для пользователя, желающего оценить временные параметры сердечного цикла по кривой изменения давлений, рассчитать ЧСС или оценить интервал между сокращениями сердца. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
Для внутреннего тестирования алгоритмов расчета систолы, диастолы и среднего могут быть сделаны тесты. На вход им будет подаваться известный сигнал и проверяться выходные значения. Это позволит сразу обнаружить деградацию алгоритмов программистом при внесении изменений в данный модуль.
Для внешнего тестирования можно сделать экспорт данных и синхронно рассчитанных на их основе индексов в табличный процессор. Имеет смысл делать это только в режиме тестирования. Тогда любой алгоритм (даже если он изменится в будущем) можно будет просто проверить выполнив соответствующие расчеты.
В данном модуле производиться расчет индексов Api по каждому каналу доплера. Api считается как произведение средней скорости кровотока в м/с на среднюю амплитуду ЭЭГ в мкВ.
Для проверки расчета данных индексов в режиме онлайна требуется нажать кнопку обзор экрана в общем окне, и посчитать индексы Api, видя на экране среднюю скорость кровотока и среднюю амплитуду ЭЭГ.
Для оффлайна используются сохраненные индексы, но возможно данный метод проверки будет работать и там.
Для тестирования срабатывания правил экспертной системы, необходимо вручную вывести различные модули в состояние, когда они выдают данные, необходимые для срабатывания данного правила.
В модуле экспертной системы, выдающем предупреждения при срабатывании правил уже встроены средства самотестирования для каждого правила.
Для внутреннего тестирования можно сделать тест, подающий на вход заданную среднюю скорость кровотока и среднюю амплитуду ЭЭГ и проверяющий результат. Это позволит сразу обнаружить деградацию алгоритмов программистом при внесении изменений в данный модуль.
Для внешнего тестирования можно сделать экспорт данных индексов с информацией о средней скорости кровотока и средней амплитуде ЭЭГ, но сейчас эти данные не сохраняются. И имеющихся пока средств достаточно для тестирования. Но может стать более актуальным при добавлении новых комплексных индексов.
В модуле ЭКГ производится расчет ритмограммы, ЧСС, SDNN и RMSSD.
В данный модуль встроен измерительный прямоугольник. Он позволяет проверить амплитуду сигнала в соответствии с входным сигналом, а также вручную определять длительность RR интервалов и рассчитывать ЧСС. Для проверки амплитуды могут также использоваться амплитудные ступеньки или линейка, прикладываемая к монитору (т.к. масштаб сигнала привязан к мм), но измерительный прямоугольник имеет большую точность и легче в использовании.
Для расчета всех индексов используется информация об R-зубцах. R-зубцы могут присылаться прибором или рассчитываться программой. Для оценки качества расчета R-зубцов прибором или программой, необходимо включить их отображение в программе. Для этого необходимо включить режим испытаний и режим разработчика и в настройках методики ЭКГ в разделе Интерфейс установить соответствующую опцию. При этом R-зубцы будут отображаться на сигнале в виде вспышек положительной или отрицательной амплитуды (зависит от включенной инверсии и алгоритма расчета R-зубца). Внимание! В этом режиме ЭКГ сигнал будет испорчен, что с другой стороны позволяет увидеть все R-зубцы в режиме оффлайна.
На основе данных об R-зубцах или визуального ЭКГ ритма с использованием измерительных прямоугольников можно определить длительность RR интервала. Если данный интервал не сильно отличается от остальных, то по его длительности можно судить о ЧСС и ритмограмме.
Для проверки ЧСС можно уменьшить временную развертку и определив длительность нескольких RR интервалов посчитать данный индекс, после чего сравнить результат расчета с отображаемым значением. Точность данного способа может быть хорошей, если видны все RR интервалы, они последовательны, определены программой и выбрана соответствующая развертка.
Другим вариантом проверки ЧСС (или наоборот, проверки ритмограммы на основе ЧСС) является ритмограмма. Средняя линия ритмограммы даст на амплитудной шкале длительность среднего RR интервала и соответственно может быть пересчитана в средний ЧСС.
Два предыдущих способа годятся для проверки ритмограммы. Резкие вспышки на ней будут означать артефакты.
Оценка индексов SDNN и RMSSD может быть только очень приблизительной. Индекс SDNN определяется как среднеквадратичное отклонение среднего RR интервала, а RMSSD - как среднеквадратичное отклонение разницы между последовательными RR интервалами. Хотя можно используя измерительный прямоугольник с достаточной точностью определить длительности всех видимых RR интервалов, но индексы SDNN и RMSSD считаются на основе большой эпохи анализа, которую сложно проанализировать визуально.
Измерительный прямоугольник может быть полезен для пользователя, желающего оценить временные параметры сердечного цикла по ЭКГ, рассчитать ЧСС или оценить RR интервалы между сокращениями сердца. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
Для обратной связи об обнаруженном или не обнаруженном R-зубце имеет смысл сделать индикацию R-зубца для пользователя в режиме онлайна, не портящую исходного сигнала.
Для внутреннего тестирования алгоритмов расчета ЧСС на основе данных об R-зубцах вроде сделан соответствующий тест. Можно обновить его и расширить.
Для внутреннего тестирования алгоритмов обнаружения R-зубцов, можно сделать тест, на вход которого будет подаваться ЭКГ сигнал и проверяться все обнаруженные R-зубцы. Такой тест можно было бы сделать интерактивным и проверять деградацию алгоритма при внесении изменений. Это позволило бы улучшить его, прогоняя на нескольких эталонных сигналах.
Для внутреннего тестирования индексов SDNN и RMSSD можно сделать подачу на вход данных об R-зубцах и проверку соответствующих расчетов при вручную посчитанных данных индексах.
Для внешнего тестирования алгоритмов определения R-зубцов можно сделать экспорт данных с информацией об обнаруженных R-зубцах. Правда будет сложно осуществлять проверку ввиду большого числа точек. Другим вариантом проверки алгоритмов определения R-зубцов может быть доступная для пользователя возможность автоматически расставить на сигнале метки с R-зубцами.
Для внешнего тестирования алгоритмов расчета индексов RMSSD и SDNN можно сделать экспорт всех R-зубцов с информацией о посчитанных значениях RMSSD и SDNN. Это бы позволило точно проверить расчет данных индексов.
В данном модуле по каждому каналу рассчитываются следующие индексы: MSA, Fpeak, Speak, Pow и SEF, а также производится расчет спектра.
Для оценки сигнала в модуле имеется измерительный прямоугольник, позволяющий проверить амплитуду известного входного сигнала и корректность его получения в программе. Также он может быть использован совместно с амплитудной ступенькой и линейкой для оценки амплитуды сигнала, в том числе оценки индекса MSA.
Индекс MSA, считается как среднее огибающей сигнала. Для его тестирования можно использовать измерительный прямоугольник в режиме оффлайна - там он будет точно посчитан заново по видимому на экране сигналу в соответствии с выбранной эпохой анализа. Также можно пользоваться линейкой (как делали электроэнцефалографисты ранее) или амплитудной ступенькой.
Для оценки MSA пользователем и в онлайне можно подать на вход электромиографа (или эмулятора) синусоидальный сигнал с частотой 10 Гц и заданной амплитудой. MSA должен быть примерно равен амплитуде данного сигнала. Эту процедуру можно совместить с использованием измерительного прямоугольника.
Для оценки спектра можно подать на вход синусоидальный сигнал (аппаратный или с эмулятора) и оценить спектр. Должен быть пик на частоте данного сигнала. Амплитуда рассчитанного спектра соответствовать амплитуде исходного сигнала не обязана по известным ограничениям БПФ и другим цифровым преобразованиям Фурье.
Все остальные индексы рассчитываются на основе спектра.
Speak определяется как максимум на спектре, а Fpeak - это частота данного максимума. Если подать на вход синусоидальный сигнал, то Speak можно определить по амплитудной шкале, а Fpeak - по частотной шкале спектра.
Pow - это площадь графика под спектром. Протестировать его по графику тяжело, но можно попробовать с помощью разлинованной пленки приблизительно определить площадь произвольной фигуры спектра и сравнить с со значением индекса.
SEF - это частота до которой площадь под графиком составляет 50, 75, 80 или 95 % от общей. Для синусоидального сигнала и 50 % она должна быть равна частоте синусоиды. Для остальных случаев протестировать тяжело.
Измерительный прямоугольник может быть полезен для пользователя, желающего оценить временные параметры электромиограммы и амплитуду и длительность патернов по ЭМГ сигналу. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
Для внутреннего тестирования MSA можно сделать тест, подающий на вход известный сигнал с известной MSA и расчет MSA для него. Такой тест позволил бы обнаруживать деградацию алгоритма расчета MSA.
Для внешнего тестирования MSA можно сделать экспорт нативного сигнала в табличный процессор с информацией о результатах расчета MSA. Правда не будет точно известно, с какого момента посчитан MSA, но можно будет отложить эпоху анализа от текущего значения MSA и проверить. Это даст более-менее реальные результаты.
Расчет спектра выполняется нашими библиотеками, для которых имеются (вроде бы) соответствующие тесты.
Для внешнего тестирования расчета спектра можно сделать экспорт сигнала в табличный процессор. Правда будет потом проблема, как посчитать этот спектр. Для этого лучше будет использовать более сложные программы математической обработки.
Для внутреннего тестирования индексов на основе спектра, можно сделать тесты, где на вход подается спектр, на выходе известные значения индексов.
Для внешнего тестирования всех остальных индексов можно сделать экспорт спектра с посчитанными индексами в табличный процессор. Не должно составить проблемы посчитать их вручную в таком случае. Будет достаточно просто посчитать индексы Speak, Fpeak, Pow и SEF при наличии спектра в виде набора чисел.
В данном модуле по каждому каналу рассчитываются следующие индексы: MSA, FSR, для каждого ритма (альфа, бета, тета, дельта) Fpeak, Speak, RP, Pow и SEF, асимметрия для MSA, RP, SEF а также производится расчет спектра и сопротивления для некоторых приборов.
Для проверки корректности расчета сопротивления по каждому каналу необходимо составлять схемы коммутации с использованием прибора, переменных резисторов и омметра. Для того, чтобы точно видеть вычисленное значение сопротивления, необходимо включить режим разработчика. В этом режиме над подписями амплитудных ступенек появится сопротивление в Ом. Это актуально только для приборов фирмы БИОЛА.
Для оценки сигнала в модуле имеется измерительный прямоугольник, позволяющий проверить амплитуду известного входного сигнала и корректность его получения в программе. Также он может быть использован совместно с амплитудной ступенькой и линейкой для оценки амплитуды сигнала, в том числе оценки индекса MSA.
Индекс MSA, считается как среднее огибающей сигнала. Для его тестирования можно использовать измерительный прямоугольник в режиме оффлайна - там он будет точно посчитан заново по видимому на экране сигналу в соответствии с выбранной эпохой анализа. Также можно пользоваться линейкой (как делали электроэнцефалографисты ранее) или амплитудной ступенькой.
Для оценки MSA пользователем и в онлайне можно подать на вход электроэнцефалографа (или эмулятора) синусоидальный сигнал с частотой 10 Гц и заданной амплитудой. MSA должен быть примерно равен амплитуде данного сигнала. Эту процедуру можно совместить с использованием измерительного прямоугольника.
Для оценки спектра можно подать на вход синусоидальный сигнал (аппаратный или с эмулятора) и оценить спектр. Должен быть пик на частоте данного сигнала. Амплитуда рассчитанного спектра соответствовать амплитуде исходного сигнала не обязана по известным ограничениям БПФ и другим цифровым преобразованиям Фурье.
Все остальные индексы рассчитываются на основе спектра или других индексов. В данной методике есть деление на ритмы, поэтому индексы Speak, Fpeak, Pow, RP нужно проверять для каждого ритма.
Speak определяется как максимум на спектре в выбранном диапазоне, а Fpeak - это частота данного максимума. Если подать на вход синусоидальный сигнал, то Speak можно определить по амплитудной шкале, а Fpeak - по частотной шкале спектра. Эту процедуру нужно повторить для каждого ритма, меняя частоту синусоидального сигнала.
Pow - это площадь графика под спектром в выбранном диапазоне. Протестировать его по графику тяжело, но можно попробовать с помощью разлинованной пленки приблизительно определить площадь произвольной фигуры спектра в выбранном диапазоне и сравнить с со значением индекса.
RP - это относительная мощность ритма. Является отношением мощности ритма Pow ко всей мощности, выраженная в %. Протестировать его по графику тяжело, но если определить Pow для каждого ритма, его можно вычислить.
SEF - это частота до которой площадь под графиком составляет 50, 75, 80 или 95 % от общей. Для синусоидального сигнала и 50 % она должна быть равна частоте синусоиды. Для остальных случаев протестировать тяжело.
FSR - отношение быстрых ритмов к медленным. Считается как (Pow_alpha + Pow_Beta) / (Pow_Theta + Pow_Delta). Если сделать скриншот окна методики, то можно по значениям относительной мощности каждого ритма вычислить FSR и сравнить с тем, что в программе.
Асимметрия любая считается по формуле: (R - L) / MAX(R, L), где R и L - значение индекса в соответствующем канале (правом или левом). Все асимметрии легко проверяются с помощью скриншота и калькулятора.
Измерительный прямоугольник может быть полезен для пользователя, желающего оценить временные параметры электромиограммы и амплитуду и длительность патернов по ЭЭГ сигналу. Возможно имеет смысл разрешить пользователю измерять параметры сигнала вручную на постобработке.
Для внутреннего тестирования MSA можно сделать тест, подающий на вход известный сигнал с известной MSA и расчет MSA для него. Такой тест позволил бы обнаруживать деградацию алгоритма расчета MSA.
Для внешнего тестирования MSA можно сделать экспорт нативного сигнала в табличный процессор с информацией о результатах расчета MSA. Правда не будет точно известно, с какого момента посчитан MSA, но можно будет отложить эпоху анализа от текущего значения MSA и проверить. Это даст более-менее реальные результаты.
Расчет спектра выполняется нашими библиотеками, для которых имеются (вроде бы) соответствующие тесты.
Для внутреннего тестирования индексов на основе спектра можно сделать тесты, где на вход подается спектр, на выходе известные значения индексов. Для асимметрий можно подавать на вход соответствующие значения индексов и проверять результат, для FSR - подавать на вход значения мощностей ритмов.
Для внешнего тестирования расчета спектра можно сделать экспорт сигнала в табличный процессор. Правда будет потом проблема, как посчитать этот спектр. Для этого лучше будет использовать более сложные программы математической обработки.
Для внешнего тестирования всех остальных индексов можно сделать экспорт спектра с посчитанными индексами в табличный процессор. Не должно составить проблемы посчитать их вручную в таком случае. Будет достаточно просто посчитать индексы Speak, Fpeak, Pow для каждого ритма, SEF, FSR и асимметрии при наличии спектра в виде набора чисел.