Asignación de valores a variables

Se deben ingresar en el archivo Assignments.scala que se encuentra en la carpeta SIPMobile\app\src\main\scala\org\paho\sip\app\services\validation

Allí se debe ingresar la variable que provoca la asignación y luego la acción que puede ser marcar una variable o desmarcarla. A modo de ejemplo, para la edad materna se determina que si el valor es menor que 15 o mayor de 35 se debe marcar la variable 10 y si el valor está en el rango de 15 a 35 desmarcarla:

"0009" -> { implicit doc =>
  when(form =!= Comunitario && ("0009".int < 15 || "0009".int > 35)) {
    Set("0010" -> true)
  }
},
"0009" -> { implicit doc =>
  when(form =!= Comunitario && ("0009".int >= 15 && "0009".int <= 35)) {
    Discard("0010")
  }
},

Las variables resumen se comportan de la siguiente manera: si se marca «NO» a una variable resumen, automáticamente se deben marcar en «NO» todas las variables que componen ese grupo. Por ejemplo:

// Trastornos metabólicos
"0603" -> { implicit doc =>
  when("0603".int === 0) {
    Set("0604" -> 0, "0609" -> 0, "0605" -> 0, "0606" -> 0, "0607" -> 0, "0608" -> 0, "0688" -> 0, "0689" -> 0, "0654" -> 0, "0610" -> 0, "0611" -> 0, "0512" -> 0, "0612" -> 0)
  }
},

Se pueden hacer cálculos más complejos, como por ejemplo el índice de masa corporal:

// Cálculo de IMC inicial
("0055", "0056") -> { implicit doc =>
  when("0055".int =!= 0 && "0056".int =!= 0) {
    Set("0711" -> (("0055".int / (("0056".int / 100.0 + 1) * ("0056".int / 100.0 + 1))) * 10).toInt)
  }
},

También se pueden hacer cálculos específicamente para algunos formularios, como por ejemplo:

// Cálculo de EG - Solo para Trinidad & Tobago y Bolivia
"0116" -> { implicit doc =>
  when((form === SIPTYT || form === SIPNMBOL) && (("0059".int === 1).orFalse || ("0060".int === 1).orFalse) && "0116".date.isComplete && "0057".date.isComplete) {
    Set("0119" -> (("0116".date - "0057".date).days / 7).toInt)
  }
},