Module: Msip::EdadSexoHelper

Defined in:
app/helpers/msip/edad_sexo_helper.rb

Class Method Summary collapse

Class Method Details

.buscar_rango_edad(edad, modelorango) ⇒ Object

Returns id en tabla del rango o si no se puede calcular retorna ID del registro SIN INFORMACIÓN (o -1 si no hay SIN INFORMACIÓN).

Parameters:

  • modelorango

    es nombre de modelo con rangos e.g ‘Sivel2Gen::Rangoead’ o ‘Cor1440Gen::Rangoedadac’

Returns:

  • id en tabla del rango o si no se puede calcular retorna ID del registro SIN INFORMACIÓN (o -1 si no hay SIN INFORMACIÓN)



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/helpers/msip/edad_sexo_helper.rb', line 41

def buscar_rango_edad(edad, modelorango)
  if !modelorango || !defined?(modelorango.constantize) ||
      !defined?(!modelorango.constantize.habilitados)
    Rails.logger.debug("No se pudo usar modelorango")
    return -1
  end
  t = modelorango.constantize.habilitados
  idsin = t.where("unaccent(nombre) ILIKE unaccent('SIN INFORMACIÓN')")
  idsin = if idsin.count == 1
    idsin.take.id
  else
    -1
  end
  c = t.where("(limiteinferior IS NULL) OR (limiteinferior  <= ?)", edad)
    .where("(limitesuperior IS NULL) OR (? <= limitesuperior)", edad)
  ret = idsin
  if c.count == 0
    Rails.logger.debug { "No se encontró edad #{edad} en tabla #{modelorango}" }
  elsif c.count > 1
    Rails.logger.debug { "Traslape de #{c.count} rangos en edad #{edad}" }
  else # c.count == 1
    ret = c.take.id
  end
  ret
end

.edad_de_fechanac_fecha(anionac, mesnac, dianac, anio, mes, dia) ⇒ Object

Retorna edad de una persona en cierta fecha @ return -1 si no puede calcularse por falta de años

Parameters:

  • anionac

    año de nacimiento

  • mesnac

    mes de nacimiento

  • dianac

    dia de nacimiento



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/helpers/msip/edad_sexo_helper.rb', line 12

def edad_de_fechanac_fecha(anionac, mesnac, dianac,
  anio, mes, dia)
  if anionac.nil? || anionac == ""
    return -1
  end
  if anio.nil? || anio == ""
    return -1
  end
  if anio < anionac
    return -1
  end

  na = anio - anionac
  if mesnac && mesnac > 0 && mes && mes > 0 && mesnac >= mes
    if mesnac > mes || (dianac && dianac > 0 && dia && dia > 0 &&
        dianac > dia)
      na -= 1
    end
  end

  na
end