def update(cls, id_emb, parto_prob): try: parto_prob = _to_yymmdd(parto_prob) pp = _to_date(parto_prob) - _timedelta(days=280) ctrls = _PreNatal(pp.year, pp.month, pp.day) if not ctrls.check_range(): return (False, list()) promos = _PrePromotional(pp.year, pp.month, pp.day).controls_dates() agendas_ids = list() with _db_session: pregnancy = cls.get_byId(id_emb=id_emb) pregnancy.set(parto_prob=parto_prob) _controlsCrt.delete_controls(pregnancy) agendas_ids = _agendasCrt.delete_agendas(pregnancy.embarazada) pregnancy.controles += [_Control(embarazo=pregnancy, nro_con=ctrl[0], fecha_con=ctrl[1]) for ctrl in ctrls.controls_dates()] _flush() for cn in pregnancy.controles: msg = _messagesCrt.get_byNumbControl(nro_control=cn.nro_con) _agendasCrt.save(persona=pregnancy.embarazada, mensaje=msg, fecha_con=cn.fecha_con, days=7) for cn in promos: msg = _messagesCrt.get_byNumbControl(nro_control=cn[0], tipo=3) _agendasCrt.save(persona=pregnancy.embarazada, mensaje=msg, fecha_con=cn[1]) _commit() return (True, agendas_ids) except Exception, e: #raise e print 'Error: {}'.format(e) return (False, list())
def childbirth(self, obj): try: pinst = _to_date(_to_yymmdd(obj.get_argument('parto_inst'))) ctrls = _PostNatal(pinst.year, pinst.month, pinst.day).controls_dates() #f_emb = lambda: dict(parto_inst=obj.get_argument('parto_inst'),tipo=obj.get_argument('tipo'),observacion=obj.get_argument('observacion')) f_emb = lambda: dict(parto_inst=_to_yymmdd(obj.get_argument('parto_inst')),tipo=obj.get_argument('tipo')) pesos, nombres, apellidos = obj.get_arguments('peso'), obj.get_arguments('nombres'), obj.get_arguments('apellidos') sexos = [obj.get_argument('sexo{}'.format(s)) for s in xrange(len(nombres))] if len(nombres)>1 else [obj.get_argument('sexo0')] agendas_ids = list() with _db_session: em = _Embarazo.get(id_emb=obj.get_argument('id_emb')) em.set(activo=False, **f_emb()); _flush() _controlsCrt.delete_controls(em) agendas_ids = _agendasCrt.delete_agendas(em.embarazada) controls = lambda: [_Control(tipo=u'Post-Natal', nro_con=ctrl[0], fecha_con=ctrl[1]) for ctrl in ctrls] em.recien_nacidos += [_NewBorn(embarazo=em,peso=nb[0],sexo=nb[1],nombres=nb[2],apellidos=nb[3],controles=controls()) for nb in zip(pesos,sexos,nombres,apellidos)] _flush() for rn in em.recien_nacidos: for cn in rn.controles: msg = _messagesCrt.get_byNumbControl(nro_control=cn.nro_con, tipo=2) _agendasCrt.save(persona=em.embarazada, mensaje=msg, fecha_con=cn.fecha_con) break #em.controles += [_Control(embarazo=em, tipo=u'Post-Natal', nro_con=ctrl[0], fecha_con=ctrl[1]) for ctrl in ctrls.controls_dates()] _commit() return (True, agendas_ids) except Exception, e: #raise e print e return (False, list())
def save(self, form, user_id): try: #print _to_yymmdd(form.parto_prob) form.parto_prob = _to_yymmdd(form.parto_prob); form.f_nac = _to_yymmdd(form.f_nac) pp = _to_date(form.parto_prob) - _timedelta(days=280) #print 'origin: {}'.format(pp) ctrls = _PreNatal(pp.year, pp.month, pp.day) if not ctrls.check_range(): return False promos = _PrePromotional(pp.year, pp.month, pp.day).controls_dates() check_pregnant = lambda: len([i for i in form.keys() if not i.startswith('c_')]) check_contact = lambda: len([i for i in form.keys() if i.startswith('c_')]) #print check_pregnant() #print check_contact() if check_pregnant()>5: em_fields = {k:v for k,v in form.iteritems() if not k.startswith('c_') and k not in ['id_com','id_etn','parto_prob']} #print em_fields cn_fields = lambda: {k.replace('c_',''):v for k,v in form.iteritems() if k.startswith('c_')} #print cn_fields() with _db_session: tipos = [_Tipo.get(id_tip=1), _Tipo.get(id_tip=2)] com = _Comunidad.get(id_com=form.id_com) em_etn = _Etnia.get(id_etn=form.id_etn) if check_pregnant()>5: em = _Persona(comunidad=com, etnia=em_etn, tipos=[tipos[0]], **em_fields) _flush() else: em = _Persona.get(telf=form.telf) em.set(f_nac=form.f_nac, comunidad=com, etnia=em_etn) em.tipos += [tipos[0]] _flush() embarazo = _Embarazo(embarazada=em, parto_prob=form.parto_prob) embarazo.controles += [_Control(embarazo=embarazo, nro_con=ctrl[0], fecha_con=ctrl[1]) for ctrl in ctrls.controls_dates()] _flush() for cn in embarazo.controles: msg = _messagesCrt.get_byNumbControl(nro_control=cn.nro_con) _agendasCrt.save(persona=em, mensaje=msg, fecha_con=cn.fecha_con, days=7) for cn in promos: msg = _messagesCrt.get_byNumbControl(nro_control=cn[0], tipo=3) _agendasCrt.save(persona=em, mensaje=msg, fecha_con=cn[1]) if check_contact()==1: contacto = _Persona.get(telf=form.c_telf) contacto.embarazadas += [em] if tipos[1] not in contacto.tipos: contacto.tipos += [tipos[1]] _flush() elif check_contact()>=5: cnt = _Persona(comunidad=com, tipos=[tipos[1]], **cn_fields()); _flush() cnt.embarazadas += [em] _commit() return True except Exception, e: #raise e print e return False
def save(cls, hospital, communities=[], capabilities=[]): print "Hospital", hospital, communities, capabilities try: with _db_session: if not cls.exists(nombre=hospital.nombre, ubicado=hospital.ubicado): hp = _Hospital(**hospital); _flush() cls().set_hospitals_and_capabilities(hp, communities, capabilities) _commit() return True return False except Exception, e: raise e return False
def save(cls, township, communities=[]): try: with _db_session: if not cls.exists(township.nombre, township.dpto): mp = _Municipio(**township); _flush() for cm in communities: cm.municipio = mp.id_mup _communitiesCrt.save(community=cm) _commit() return True return False except Exception, e: raise e return False
def save(self, community, hospitals=[]): try: with _db_session: if not self.exists(id_mup=community.municipio, nombre=community.nombre): com = _Comunidad(**community); _flush() for hp in hospitals: hp.ubicado = com.id_com _hospitalsCrt.save(hospital=hp, communities=[com.id_com]) _commit() return True return False except Exception, e: raise e return False
def update(self, id_per, telf, cobertura, nombres, apellidos, id_com, id_etn, f_nac, ci, relacion, centro_salud, c_telf, c_sexo, c_nombres=None, c_apellidos=None, c_id_per=None): f_nac = _to_yymmdd(f_nac) activo = True preg_form = dict([ (k, v) for k, v in locals().iteritems() if not (k.startswith('_') or k.startswith('c_') or k.startswith( 'self') or k in ['id_com', 'id_etn', 'id_per']) ]) try: with _db_session: com = _Comunidad.get(id_com=id_com) etn = _Etnia.get(id_etn=id_etn) pregnant = _Persona.get(id_per=id_per) pregnant.set(comunidad=com, etnia=etn, **preg_form) if not (c_id_per is None): contact = _Persona.get(id_per=c_id_per) contact.set(sexo=c_sexo) _flush() if c_nombres is None: pregnant.contacto = contact _flush() else: tmp = self.get_byCellphone(c_telf) if tmp: assert (tmp.id_per == pregnant.contacto.id_per) contact.set(telf=c_telf, nombres=c_nombres, apellidos=c_apellidos) _flush() pregnant.contacto = contact _flush() else: contact = _Persona(telf=c_telf, nombres=c_nombres, apellidos=c_apellidos, sexo=c_sexo, tipos=[_Tipo.get(id_tip=2)]) pregnant.contacto = contact _commit() return True except Exception, e: #raise e print e return False
def save(self, form): try: with _db_session: if not form.has_key('nombres'): pr = _Persona.get(telf=form.telf) pr.set(ci=form.ci); _flush() else: f_persona = lambda: dict(telf=form.telf,ci=form.ci,nombres=form.nombres,apellidos=form.apellidos,sexo=form.sexo) pr = _Persona(**f_persona()) _Usuario(persona=pr, **_user_form(form)); _commit() return True except Exception, e: print e return False
def update(self, id_per, telf, nombres, apellidos, id_com, id_etn, f_nac, ci, c_telf, c_sexo, c_nombres=None, c_apellidos=None, c_id_per=None): f_nac = _to_yymmdd(f_nac); activo = True preg_form = dict([(k,v) for k,v in locals().iteritems() if not(k.startswith('_') or k.startswith('c_') or k.startswith('self') or k in ['id_com','id_etn','id_per'])]) try: with _db_session: com = _Comunidad.get(id_com=id_com) etn = _Etnia.get(id_etn=id_etn) pregnant = _Persona.get(id_per=id_per) pregnant.set(comunidad=com, etnia=etn,**preg_form) if not(c_id_per is None): contact = _Persona.get(id_per=c_id_per) contact.set(sexo=c_sexo); _flush() if c_nombres is None: pregnant.contacto = contact; _flush() else: tmp = self.get_byCellphone(c_telf) if tmp: assert(tmp.id_per==pregnant.contacto.id_per) contact.set(telf=c_telf, nombres=c_nombres, apellidos=c_apellidos); _flush() pregnant.contacto = contact; _flush() else: contact = _Persona(telf=c_telf, nombres=c_nombres, apellidos=c_apellidos, sexo=c_sexo, tipos=[_Tipo.get(id_tip=2)]) pregnant.contacto = contact _commit() return True except Exception, e: #raise e return False
def save(cls, form): try: with _db_session: if not cls.exists(nombre=form.nombre): red = _Red_Salud(nombre=form.nombre); _flush() for mp in form.municipios: mp.red_salud = red.id_red _townshipsCrt.save(township=mp) _commit() return True return False except Exception, e: raise e return False
def save(cls, form): try: with _db_session: if not cls.exists(nombre=form.nombre): red = _Red_Salud(nombre=form.nombre) _flush() for mp in form.municipios: mp.red_salud = red.id_red _townshipsCrt.save(township=mp) _commit() return True return False except Exception, e: raise e return False
def save(cls, hospital, communities=[], capabilities=[]): print "Hospital", hospital, communities, capabilities try: with _db_session: if not cls.exists(nombre=hospital.nombre, ubicado=hospital.ubicado): hp = _Hospital(**hospital) _flush() cls().set_hospitals_and_capabilities( hp, communities, capabilities) _commit() return True return False except Exception, e: raise e return False
def save(self, community, hospitals=[]): try: with _db_session: if not self.exists(id_mup=community.municipio, nombre=community.nombre): com = _Comunidad(**community) _flush() for hp in hospitals: hp.ubicado = com.id_com _hospitalsCrt.save(hospital=hp, communities=[com.id_com]) _commit() return True return False except Exception, e: raise e return False
def save(self, form): try: with _db_session: if not form.has_key('nombres'): pr = _Persona.get(telf=form.telf) pr.set(ci=form.ci) _flush() else: f_persona = lambda: dict(telf=form.telf, ci=form.ci, nombres=form.nombres, apellidos=form.apellidos, sexo=form.sexo) pr = _Persona(**f_persona()) _Usuario(persona=pr, **_user_form(form)) _commit() return True except Exception, e: print e return False
def save(self, id_per, parto_prob, id_user): try: parto_prob = _to_yymmdd(parto_prob) pp = _to_date(parto_prob) ctrls = _PreNatal(pp.year, pp.month, pp.day) with _db_session: pregnant = _Persona.get(id_per=id_per) usuario = _Usuario.get(persona=id_user) pregnancy = _Embarazo(embarazada=pregnant, parto_prob=parto_prob, usuario=usuario) _controlsCrt.delete_controls(pregnancy) _agendasCrt.delete_agendas(pregnant) pregnancy.controles += [_Control(embarazo=pregnancy, nro_con=ctrl[0], fecha_con=ctrl[2]) for ctrl in ctrls.controls_dates()[::-1]] _flush() for cn in pregnancy.controles: msg = _messagesCrt.get_byNumbControl(cn.nro_con) _agendasCrt.save(persona=pregnant, mensaje=msg, fecha_con=cn.fecha_con) _commit() return True except Exception, e: #raise e print e return False
def update(self, form): try: with _db_session: us = _Usuario.get(persona=form.persona) if us: if form.has_key('ci'): us.persona.set(nombres=form.nombres, apellidos=form.apellidos, ci=form.ci, telf=form.telf) _flush() del form.nombres del form.apellidos del form.ci del form.telf f_usuario = form else: us.set(alcance=None, red_salud=None, municipio=None, centro_salud=None, activo=True) _flush() f_usuario = _user_form(form) if len(f_usuario.passwd): f_usuario.passwd = f_usuario.passwd.encode( 'hex').encode('base64').replace('\n', '') else: del f_usuario.passwd #print f_usuario us.set(**f_usuario) _commit() else: return False return True except Exception, e: print e return False
def save(self, form, user_id): try: #print _to_yymmdd(form.parto_prob) form.parto_prob = _to_yymmdd(form.parto_prob) form.f_nac = _to_yymmdd(form.f_nac) pp = _to_date(form.parto_prob) - _timedelta(days=280) #print 'origin: {}'.format(pp) ctrls = _PreNatal(pp.year, pp.month, pp.day) if not ctrls.check_range(): return False promos = _PrePromotional(pp.year, pp.month, pp.day).controls_dates() check_pregnant = lambda: len( [i for i in form.keys() if not i.startswith('c_')]) check_contact = lambda: len( [i for i in form.keys() if i.startswith('c_')]) #print check_pregnant() #print check_contact() if check_pregnant() > 5: em_fields = { k: v for k, v in form.iteritems() if not k.startswith('c_') and k not in ['id_com', 'id_etn', 'parto_prob'] } #print em_fields cn_fields = lambda: { k.replace('c_', ''): v for k, v in form.iteritems() if k.startswith('c_') } #print cn_fields() with _db_session: tipos = [_Tipo.get(id_tip=1), _Tipo.get(id_tip=2)] com = _Comunidad.get(id_com=form.id_com) em_etn = _Etnia.get(id_etn=form.id_etn) if check_pregnant() > 5: em = _Persona(comunidad=com, etnia=em_etn, tipos=[tipos[0]], **em_fields) _flush() else: em = _Persona.get(telf=form.telf) em.set(f_nac=form.f_nac, comunidad=com, etnia=em_etn) em.tipos += [tipos[0]] _flush() embarazo = _Embarazo(embarazada=em, parto_prob=form.parto_prob) embarazo.controles += [ _Control(embarazo=embarazo, nro_con=ctrl[0], fecha_con=ctrl[1]) for ctrl in ctrls.controls_dates() ] _flush() for cn in embarazo.controles: msg = _messagesCrt.get_byNumbControl( nro_control=cn.nro_con) _agendasCrt.save(persona=em, mensaje=msg, fecha_con=cn.fecha_con, days=7) for cn in promos: msg = _messagesCrt.get_byNumbControl(nro_control=cn[0], tipo=3) _agendasCrt.save(persona=em, mensaje=msg, fecha_con=cn[1]) if check_contact() == 1: contacto = _Persona.get(telf=form.c_telf) contacto.embarazadas += [em] if tipos[1] not in contacto.tipos: contacto.tipos += [tipos[1]] _flush() elif check_contact() >= 5: cnt = _Persona(comunidad=com, tipos=[tipos[1]], **cn_fields()) _flush() cnt.embarazadas += [em] _commit() return True except Exception, e: #raise e print e return False
def update(self, form): try: with _db_session: us = _Usuario.get(persona=form.persona) if us: if form.has_key('ci'): us.persona.set(nombres=form.nombres, apellidos=form.apellidos, ci=form.ci, telf=form.telf); _flush() del form.nombres; del form.apellidos; del form.ci; del form.telf f_usuario = form else: us.set(alcance=None, red_salud=None, municipio=None, centro_salud=None, activo=True); _flush() f_usuario = _user_form(form) if len(f_usuario.passwd): f_usuario.passwd = f_usuario.passwd.encode('hex').encode('base64').replace('\n','') else: del f_usuario.passwd #print f_usuario us.set(**f_usuario) _commit() else: return False return True except Exception, e: print e return False