Настройка лабораторных журналов в LIMS myLab: расчёт погрешности по ГОСТ 4386-89 п. 3
В этой статье мы начнём серию публикаций, посвящённых настройке лабораторных журналов в LIMS myLab.
LIMS myLab поддерживает большое количество настроек, позволяющих создавать сложные системы обработки первичных данных. Однако на практике встречаются случаи, которые сложно учесть, и для которых невозможно реализовать стандартное решение.
Например, в ГОСТ 4386-89 (п. 3) расчёт погрешности выполняется по формуле, зависящей от первичных данных.

где
С — среднеарифметическое результатов двух параллельных определений концентрации фторидов в добавке, мг/дм³;
С0 —действительная концентрация фторидов в введенной добавке, мг/дм³.
Также в документе задано условие:
Результат считают удовлетворительным, если найденное значение погрешности не превышает 25-30 % с Р = 0,95 при массовой концентрации фторидов 0,1-0,15 мг/дм³; 15 % при концентрации 0,2-0,5 мг/дм³ и 7 % при концентрации фторидов более 0,5 мг/дм³.
В этой статье мы разберём, как настроить такой расчёт в LIMS myLab.
Этапы настройки
В LIMS myLab создается лабораторный журнал с методом ввода данных python.
Добавление переменных
В уникальных параметрах журнала добавляются четыре переменные:
- pF1 — равновесный потенциал анализируемой пробы
- pF2 — равновесный потенциал пробы с введенной добавкой
- c0 — действительная концентрация фторидов в введенной добавке, мг/дм³
- c1 — массовая концентрация фторидов (фторид-ионов), мг/дм³

Расчет погрешности
Задаем расчет погрешности:
def Expression():
pF1 = lims.GetVariable("pF1")
pF2 = lims.GetVariable("pF2")
c0 = lims.GetVariable("c0")
if c0 == 0 or pF1 == "" or pF2 == "" or c0 == "" or pF1 == None or pF2 == None or c0 == None:
return None
c1 = lims.GetTableValue(1, 0, pF1, True)
c2 = lims.GetTableValue(1, 0, pF2, True)
c = c2 - c1
delta = math.fabs((c - c0) * 100 / c0)
if 0.1 <= c1 <= 0.15 and delta < 30:
return str(round(delta, 1)) + " %"
elif 0.2 <= c1 <= 0.5 and delta < 15:
return str(round(delta, 1)) + " %"
elif 0.5 < c1 <= 19 and delta < 7:
return str(round(delta, 1)) + " %"
else:
return None
Данный код возвращает значения параметров «pF1», «pF2» и «c0». Валидируем значения данных параметров. Далее вычисляем значения переменных «c1», «c2» и «с», на основании значений равновесных потенциалов. Методом lims.GetTableValue() из справочника LIMS myLab возвращаем соответствующие значения массовой концентрации фторидов. Справочник необходимо заранее создать в LIMS myLab, в соответствии с таблицей из приложения ГОСТ 4386-89.

Далее вычисляем значение погрешности по формуле представленной выше. Так как могут получаться данные, когда «с0» больше «с», используем функцию модуля, чтобы полученное значение было положительным и его можно было сравнить с нормативами.
Далее, используются функции условия, чтобы выполнить проверку на условия удовлетворения результата. Записываем диапазоны для параметра «с1» и погрешности (параметр «delta»). Если ни одно из условий не выполняется, то поле остается пустым. Так как в ГОСТ 4386-89 значение погрешности представлено в %, а массовая концентрация фторидов (фторид-ионов) выражается в мг/дм³, мы переводим значение параметра «delta» в строковый тип данных и дополняем ее » %». Также в случае получения иррациональных чисел параметра «delta», мы используя функцию round(), выполняем округление.
Расчет результата
Переменная «c1» является результатом в рамках данного журнала. Ставим флаг слева от параметра.
Задаем «Формулу» для переменной «c1»:
def Expression():
pF1 = lims.GetVariable("pF1")
pF2 = lims.GetVariable("pF2")
c0 = lims.GetVariable("c0")
if c0 == 0 or pF1 == "" or pF2 == "" or c0 == "" or pF1 == None or pF2 == None or c0 == None:
return None
c1 = lims.GetTableValue(1, 0, pF1, True)
c2 = lims.GetTableValue(1, 0, pF2, True)
c = c2 - c1
delta = math.fabs((c - c0) * 100 / c0)
if 0.1 <= c1 <= 0.15 and delta < 30:
return c1
elif 0.2 <= c1 <= 0.5 and delta < 15:
return c1
elif 0.5 < c1 <= 19 and delta < 7:
return c1
else:
return None
Данный код, дублирует код для расчета погрешности, что обусловлено необходимостью учета условии удовлетворения значения погрешности условиям из ГОСТ. Соответственно в данном случае, в части кода с функцией условия, выводится значение параметра «c1». Если значение погрешности не удовлетворяет условию, то ячейка с результатом остается пустой.
Пример ввода первичных данных представлен на скриншоте ниже.

Использованные источники
ГОСТ 4386-89. Вода питьевая. Методы определения массовой концентрации фторидов : межгосударственный стандарт / разработан и введён в действие Постановлением Государственного комитета СССР по управлению качеством продукции и стандартами от 27 ноября 1989 г. №3473 взамен ГОСТ 4386-81 // М.: Издательство стандартов, 1990.