<?xml version='1.0' encoding='UTF-8'?> <macro name="keratometri" version="1.0"> <resume language="lua"> function tonmb(value) value = string.gsub(value, ',', '.') return tonumber(value) end function tostr(value) value = string.format('%.2f', value) value = string.gsub(value, '\\.', ',') return value end out = '' if ( getValue('keratometri.right.missing') == '' ) then rr1 = tonmb(getValue('keratometri.right.r1')) rr2 = tonmb(getValue('keratometri.right.r2')) rx1 = tonmb(getValue('keratometri.right.x1')) if ( rx1 >= 0 and rx1 < 90 ) then rx2 = rx1 + 90 end if ( rx1 >= 90 and rx1 <= 180 ) then rx2 = rx1 - 90 end rd1 = tonumber(string.format('%.2f', 337.5 / rr1)) rd2 = tonumber(string.format('%.2f', 337.5 / rr2)) if ( rd1 < rd2 ) then ry1 = rd1 - rd2 ry2 = rx1 else ry1 = rd2 - rd1 ry2 = rx2 end rr1 = tostr(rr1) rr2 = tostr(rr2) print (rr1) out = out .. 'Keratometri, højre øje:\n' .. 'Radius 1: ' .. rr1 .. ' mm (' .. rd1 .. ' D) i ' .. rx1 .. ' grader.\n' .. 'Radius 2: ' .. rr2 .. ' mm (' .. rd2 .. ' D) i ' .. rx2 .. ' grader.\n' .. 'Cylinder: ' .. ry1 .. ' i ' .. ry2 .. ' grader\n\n' end if ( getValue('keratometri.left.missing') == '' ) then lr1 = tonmb(getValue('keratometri.left.r1')) lr2 = tonmb(getValue('keratometri.left.r2')) lx1 = tonmb(getValue('keratometri.left.x1')) if ( lx1 >= 0 and lx1 < 90 ) then lx2 = lx1 + 90 end if ( lx1 >= 90 and lx1 <= 180 ) then lx2 = lx1 - 90 end ld1 = tonumber(string.format('%.2f', 337.5 / lr1)) ld2 = tonumber(string.format('%.2f', 337.5 / lr2)) if ( ld1 < ld2 ) then ly1 = ld1 - ld2 ly2 = lx1 else ly1 = ld2 - ld1 ly2 = lx2 end lr1 = tostr(lr1) lr2 = tostr(lr2) print (lr1) out = out .. 'Keratometri, venstre øje:\n' .. 'Radius 1: ' .. lr1 .. ' mm (' .. ld1 .. ' D) i ' .. lx1 .. ' grader.\n' .. 'Radius 2: ' .. lr2 .. ' mm (' .. ld2 .. ' D) i ' .. lx2 .. ' grader.\n' .. 'Cylinder: ' .. ly1 .. ' i ' .. ly2 .. ' grader' end return out </resume> <queries> <query class="keratometri" ttl="100000"/> <query service="pracro" class="missing_eye_right" ttl="1000000"/> <query service="pracro" class="missing_eye_left" ttl="1000000"/> </queries> <maps> <map name="missing_eye_right_map"> value = 0 timestamp = 0 source = 'pracro' if( missing_eye_right ) then if( missing_eye_right.value and missing_eye_right.value == '' ) then value = '' timestamp = missing_eye_right.timestamp else value = 'mangler' timestamp = missing_eye_right.timestamp end end return value, timestamp, source </map> <map name="missing_eye_left_map"> value = 0 timestamp = 0 source = 'pracro' if( missing_eye_left ) then if( missing_eye_left.value and missing_eye_left.value == '' ) then value = '' timestamp = missing_eye_left.timestamp else value = 'mangler' timestamp = missing_eye_left.timestamp end end return value, timestamp, source </map> </maps> <scripts> <script language="lua" name="lt20gt0"> if(value == '') then return false end value = string.gsub(value, ',', '.') if(tonumber(value) >= 0 and tonumber(value) <= 20) then return true else return false end </script> <script language="lua" name="lt180gt0"> if(value == '') then return false end value = string.gsub(value, ',', '.') if(tonumber(value) >= 0 and tonumber(value) <= 180) then return true else return false end </script> <script language="lua" name="right_eye"> if ( value == 'mangler' ) then disable('right_eye_frame') else enable('right_eye_frame') end return true </script> <script language="lua" name="left_eye"> if ( value == 'mangler' ) then disable('left_eye_frame') else enable('left_eye_frame') end return true </script> </scripts> <widgets caption="Keratometri" layout="vbox"> <frame layout="hbox"> <!-- Højre øje --> <frame layout="vbox"> <checkbox caption="Der er ikke målt på højre øje" name="keratometri.right.missing" script="right_eye" map="missing_eye_right_map" truevalue="mangler" falsevalue="" value=""/> <frame name="right_eye_frame" caption="Højre øje" layout="hbox"> <frame layout="vbox"> <label caption="R1:"/> <lineedit name="keratometri.right.r1" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt0" value=""/> </frame> <frame layout="vbox"> <label caption="R2:"/> <lineedit name="keratometri.right.r2" regexp="[+-]{0,1}\d{1,2},\d{2}" script="lt20gt0" value=""/> </frame> <frame layout="vbox"> <label caption="X1:"/> <lineedit name="keratometri.right.x1" regexp="[\d]+" script="lt180gt0" value=""/> </frame> </frame> </frame> <!-- Venstre øje --> <frame layout="vbox"> <checkbox caption="Der er ikke målt på venstre øje" name="keratometri.left.missing" script="left_eye" map="missing_eye_left_map" truevalue="mangler" falsevalue="" value=""/> <frame name="left_eye_frame" caption="Venstre øje" layout="hbox"> <frame layout="vbox"> <label caption="R1:"/> <lineedit name="keratometri.left.r1" regexp="\d{1,2},\d{2}" script="lt20gt0" value=""/> </frame> <frame layout="vbox"> <label caption="R2:"/> <lineedit name="keratometri.left.r2" regexp="\d{1,2},\d{2}" script="lt20gt0" value=""/> </frame> <frame layout="vbox"> <label caption="X1:"/> <lineedit name="keratometri.left.x1" regexp="[\d]+" script="lt180gt0" value=""/> </frame> </frame> </frame> </frame> <!-- Knapper --> <frame layout="hbox"> <spacer /> <button caption="Gem" action="commit"/> </frame> </widgets> </macro>