#redcap
Вопрос:
Я работаю над CRF
с REDCap для мастер-проекта, однако у меня возникли проблемы с некоторым программированием.
Я пытаюсь настроить уравнение для некоторых интервалов, следующий пример-для температуры тела (в градусах Цельсия). Я пытаюсь интегрировать модель подсчета очков в один из своих инструментов. Если температура 36
— 38.4
она должна давать 0
очки, если она находится между 32
— 33.9
она даст 2
очки и т. Д. Моя проблема в том, что как очень низкое, так и очень высокое число дает 4
очки, и я не могу понять, как запрограммировать уравнение.
Вот как REDCap использует условную логику: if (CONDITION, value if condition is TRUE, value if condition is FALSE)
.
Это уравнение работает, например:
if([cpis_temp] > 35.9,if([cpis_temp] > 38.4,if([cpis_temp] >=39, 2, 1),0),2)
Теперь я хочу сделать еще один, но с большим количеством интервалов, но я не могу заставить уравнение работать, это интервалы:
0 if: 36-38.4
1 if: 34-35.9 or 38.5-38.9
2 if: 32-33.9
3 if: 30-31.9 or 39-40.9
4 if: <=29.9 or >=41
Это то, что мне удалось сформулировать до сих пор:
if([cpis_temp]>1,if([cpis_temp]>20,if([cpis_temp]>=30,if([cpis_temp]>=32,if([cpis_temp]>=34,if([cpis_temp]>=36,if([cpis_temp]=>38.5,if([cpis_temp]>=39,if([cpis_temp]>=41,4,0),3),1),0),1),2),3),4),0)
Благодарен за некоторый вклад и помощь!
Ответ №1:
Я бы предложил начать с одного конца этой непрерывной переменной и кодировать оттуда:
if([cpis_temp] < 30, 4,
if([cpis_temp] < 32, 3,
if([cpis_temp] < 34, 2,
if([cpis_temp] < 36, 1,
if([cpis_temp] < 38.5, 0,
if([cpis_temp] < 39, 1,
if([cpis_temp] < 41, 3, 4)
)
)
)
)
)
)
Если вы можете попросить своих локальных администраторов установить внешний модуль JavaScript-инжектора для вас, вы могли бы гораздо проще закодировать это в JS и запустить свою собственную функцию, чтобы вернуть категорию из входной температуры.
Комментарии:
1. Большое спасибо! Также оцените совет о JavaScript!