Exemple #1
0
class Centro_Salud(db.Entity):
    id_cen = _PrimaryKey(int, auto=True)
    tipo = _Required(unicode)
    encargado = _Optional('Persona', reverse='asignado', nullable=True)
    nombre = _Required(unicode)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    ubicado = _Required(Comunidad, reverse='centros_salud')
    comunidades = _Set(Comunidad, reverse='atendido')
    prestaciones = _Set(lambda: Prestacion, reverse='centros_salud')
    operadores = _Set(lambda: Usuario, reverse='centro_salud')
    empleados = _Set(lambda: Persona, reverse='centro_trabajo')
    embarazadas = _Set(lambda: Persona, reverse='centro_salud')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #2
0
class Agenda(db.Entity):
    id_agd = _PrimaryKey(int, auto=True)
    persona = _Required(Persona, reverse='agendas')
    mensaje = _Required(Mensaje, reverse='agendas')
    fecha_msj = _Required(_date)
    fecha_con = _Optional(_date, nullable=True)
    sms_estado = _Optional(bool, default=False, nullable=True)
    lmd_estado = _Optional(bool, default=False, nullable=True)
    rad_estado = _Optional(bool, default=False, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    usuario = _Optional(Usuario, nullable=True, reverse='agendas')

    #_PrimaryKey(persona, mensaje)
    def before_insert(self):
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.modificado = _utc.now()

    def to_dict(self):
        return dict(id_agd=self.id_agd,
                    mensaje=self.mensaje.id_msj,
                    persona=self.persona.id_per,
                    fecha_msj=self.fecha_msj.isoformat(),
                    fecha_con=self.fecha_con.isoformat(),
                    sms_estado=self.sms_estado,
                    lmd_estado=self.lmd_estado)
Exemple #3
0
class Etnia(db.Entity):
    id_etn = _PrimaryKey(int, auto=True)
    nombre = _Required(unicode, unique=False)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    personas = _Set(lambda: Persona, reverse='etnia')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #4
0
class Red_Salud(db.Entity):
    id_red = _PrimaryKey(int, auto=True)
    nombre = _Required(unicode, unique=False)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    municipios = _Set(lambda: Municipio, reverse='red_salud')
    operadores = _Set(lambda: Usuario, reverse='red_salud')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #5
0
class Control(db.Entity):
    id_cnt = _PrimaryKey(int, auto=True)
    tipo = _Required(unicode, default=u'Pre-Natal')
    nro_con = _Required(int)
    fecha_con = _Required(_date)
    asistido = _Required(bool, default=False)
    observacion = _Optional(unicode, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    embarazo = _Optional(Embarazo, reverse='controles', nullable=True)
    recien_nacido = _Optional(Recien_Nacido,
                              reverse='controles',
                              nullable=True)

    def before_insert(self):
        self.observacion = self.observacion.upper(
        ) if self.observacion else None
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.modificado = _utc.now()
Exemple #6
0
class Tipo(db.Entity):
    id_tip = _PrimaryKey(int, auto=True)
    nombre = _Required(unicode, unique=False)
    descrip = _Optional(unicode, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    personas = _Set(lambda: Persona, reverse='tipos')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.descrip = self.descrip.upper() if self.descrip else None
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.descrip = self.descrip.upper() if self.descrip else None
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #7
0
class Prestacion(db.Entity):
    id_pst = _PrimaryKey(int, auto=True)
    nombre = _Required(unicode, unique=False)
    descrip = _Optional(unicode, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    centros_salud = _Set(Centro_Salud, reverse='prestaciones')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.descrip = self.descrip.upper() if self.descrip else None
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.descrip = self.descrip.upper() if self.descrip else None
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #8
0
class Mensaje(db.Entity):
    id_msj = _PrimaryKey(int, auto=True)
    nro_control = _Optional(int, nullable=True)
    tipo = _Required(int)
    tenor = _Required(unicode)
    audio = _Optional(unicode, nullable=True)
    activo = _Optional(bool, default=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    agendas = _Set(lambda: Agenda, reverse='mensaje')
    usuario = _Optional(Usuario, reverse='mensajes')

    def before_insert(self):
        self.tenor = self.tenor.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.tenor = self.tenor.upper()
        self.modificado = _utc.now()

    def to_dict(self):
        return dict(id_msj=self.id_msj,
                    nro_control=self.nro_control or None,
                    tipo=self.tipo,
                    tenor=self.tenor,
                    audio=self.audio or None)
Exemple #9
0
class Recien_Nacido(db.Entity):
    id_rcn = _PrimaryKey(int, auto=True)
    sexo = _Required(str, 1, default='f')
    peso = _Required(float)
    nombres = _Optional(unicode, nullable=True)
    apellidos = _Optional(unicode)
    f_nac = _Optional(_date, nullable=True)
    defuncion = _Optional(lambda: Defuncion,
                          reverse='recien_nacido',
                          nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    #activo = _Optional(bool, default=True)
    embarazo = _Required(Embarazo, reverse='recien_nacidos')
    controles = _Set(lambda: Control, reverse='recien_nacido')

    def before_insert(self):
        self.nombres = self.nombres.upper()
        self.apellidos = self.apellidos.upper()
        self.f_nac = self.embarazo.parto_inst
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombres = self.nombres.upper()
        self.apellidos = self.apellidos.upper()
        self.modificado = _utc.now()

    def current_age(self):
        return (_utc.now().date() - self.embarazo.parto_inst).days

    def __str__(self):
        return u'{} {}'.format(self.nombres or '', self.apellidos).strip()
Exemple #10
0
class Comunidad(db.Entity):
    id_com = _PrimaryKey(int, auto=True)
    nombre = _Required(unicode)
    telf = _Optional(unicode, 8)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    municipio = _Required(Municipio, reverse='comunidades')
    centros_salud = _Set(lambda: Centro_Salud, reverse='ubicado')
    atendido = _Set(lambda: Centro_Salud, reverse='comunidades')
    personas = _Set(lambda: Persona, reverse='comunidad')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #11
0
class Usuario(db.Entity):
    persona = _PrimaryKey(Persona, reverse='usuario')
    rol = _Required(unicode)
    alcance = _Optional(unicode, 1, nullable=True)
    login = _Required(unicode, 24, unique=True)
    passwd = _Required(str)
    red_salud = _Optional(Red_Salud, reverse='operadores', nullable=True)
    municipio = _Optional(Municipio, reverse='operadores', nullable=True)
    centro_salud = _Optional(Centro_Salud, reverse='operadores', nullable=True)
    #embarazos = _Set(lambda: Embarazo, reverse='usuario')
    mensajes = _Set(lambda: Mensaje, reverse='usuario')
    agendas = _Set(lambda: Agenda, reverse='usuario')
    activo = _Optional(bool, default=True)

    def before_insert(self):
        self.passwd = self.passwd.encode('hex').encode('base64').replace(
            '\n', '')

    def to_json(self):
        f_alcance = lambda key: dict(
            alcance=self.alcance, **f_asignaciones(key)) if key >= 1 else {}
        f_asignaciones = lambda key: f_red() if key == 2 else f_mup(
        ) if key == 3 else f_cen() if key == 4 else {}
        f_red = lambda: dict(red_salud=dict(id_red=self.red_salud.id_red,
                                            nombre=self.red_salud.nombre))
        f_mup = lambda: dict(municipio=dict(id_mup=self.municipio.id_mup,
                                            nombre=self.municipio.nombre))
        f_cen = lambda: dict(centro_salud=dict(
            id_cen=self.centro_salud.id_cen, nombre=self.centro_salud.nombre))
        return _dumps(
            dict(persona=self.persona.__str__(),
                 id=self.persona.id_per,
                 rol=self.rol,
                 login=self.login,
                 **f_alcance(int(self.alcance or '0'))))

    def __str__(self):
        return u'{}'.format(self.login)
Exemple #12
0
class Municipio(db.Entity):
    id_mup = _PrimaryKey(int, auto=True)
    dpto = _Required(unicode)
    nombre = _Required(unicode)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    red_salud = _Required(Red_Salud, reverse='municipios')
    comunidades = _Set(lambda: Comunidad, reverse='municipio')
    operadores = _Set(lambda: Usuario, reverse='municipio')

    def before_insert(self):
        self.nombre = self.nombre.upper()
        self.dpto = self.dpto.upper()
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.nombre = self.nombre.upper()
        self.dpto = self.dpto.upper()
        self.modificado = _utc.now()

    def __str__(self):
        return u'{}'.format(self.nombre)
Exemple #13
0
class Defuncion(db.Entity):
    id_def = _PrimaryKey(int, auto=True)
    embarazada = _Optional(Persona, reverse='defuncion', nullable=True)
    embarazo = _Optional(Embarazo, reverse='interrupcion', nullable=True)
    recien_nacido = _Optional(Recien_Nacido,
                              reverse='defuncion',
                              nullable=True)
    fecha = _Required(_date)
    f_notf = _Required(_date)
    f_conf = _Optional(_date, nullable=True)
    obs_notf = _Required(unicode)
    obs_conf = _Optional(unicode, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)

    def before_insert(self):
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.modificado = _utc.now()
Exemple #14
0
class Embarazo(db.Entity):
    id_emb = _PrimaryKey(int, auto=True)
    tipo = _Optional(int, nullable=True)
    parto_prob = _Required(_date)
    parto_inst = _Optional(_date, nullable=True)
    #usuario = _Required(Usuario, reverse='embarazos')
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    activo = _Optional(bool, default=True)
    riesgo = _Optional(unicode, nullable=True)
    interrupcion = _Optional(lambda: Defuncion,
                             reverse='embarazo',
                             nullable=True)
    embarazada = _Required(Persona, reverse='embarazos')
    recien_nacidos = _Set(lambda: Recien_Nacido, reverse='embarazo')
    controles = _Set(lambda: Control, reverse='embarazo')

    def before_insert(self):
        self.creado = self.modificado = _utc.now()

    def before_update(self):
        self.modificado = _utc.now()
Exemple #15
0
class Persona(db.Entity):
    id_per = _PrimaryKey(int, auto=True)
    ci = _Optional(unicode, 11, nullable=True)
    telf = _Optional(str, 8, nullable=True)
    nombres = _Required(unicode)
    apellidos = _Required(unicode)
    sexo = _Required(str, 1, default='f')
    f_nac = _Optional(_date, nullable=True)
    idioma = _Required(unicode, default=u'Castellano')
    defuncion = _Optional(lambda: Defuncion,
                          reverse='embarazada',
                          nullable=True)
    cobertura = _Optional(int, default=1)
    activo = _Optional(bool, default=True)
    relacion = _Optional(unicode, nullable=True)
    creado = _Optional(_datetime)
    modificado = _Optional(_datetime)
    tipos = _Set(Tipo, reverse='personas')
    etnia = _Optional(Etnia, reverse='personas', nullable=True)
    comunidad = _Optional(Comunidad, reverse='personas', nullable=True)
    contacto = _Optional(lambda: Persona, reverse='embarazadas')
    embarazadas = _Set(lambda: Persona, reverse='contacto')
    usuario = _Optional(lambda: Usuario, reverse='persona')
    embarazos = _Set(lambda: Embarazo, reverse='embarazada')
    asignado = _Optional(lambda: Centro_Salud,
                         reverse='encargado',
                         nullable=True)
    centro_trabajo = _Optional(lambda: Centro_Salud,
                               reverse='empleados',
                               nullable=True)
    agendas = _Set(lambda: Agenda, reverse='persona')
    centro_salud = _Optional(Centro_Salud, reverse='embarazadas')

    def before_insert(self):
        self.nombres = self.nombres.upper()
        self.apellidos = self.apellidos.upper()
        self.creado = self.modificado = _utc.now()
        if self.relacion:
            self.relacion = self.relacion.upper()

    def before_update(self):
        self.nombres = self.nombres.upper()
        self.apellidos = self.apellidos.upper()
        if self.relacion:
            self.relacion = self.relacion.upper()
        self.modificado = _utc.now()

    def current_age(self):
        return _utc.now().date().year - self.f_nac.year

    def to_dict(self):
        return dict(id_per=self.id_per,
                    telf=self.telf or None,
                    cobertura=self.cobertura,
                    nombres=self.nombres,
                    apellidos=self.apellidos,
                    contacto=(self.contacto.id_per if self.contacto else None))

    def __str__(self):
        return u'{} {}'.format(self.nombres, self.apellidos).replace('  ', ' ')