コード例 #1
0
ファイル: pregnancies.py プロジェクト: edulou13/enlaces
	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())
コード例 #2
0
ファイル: pregnancies.py プロジェクト: edulou13/enlaces
	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())
コード例 #3
0
	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
コード例 #4
0
	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
コード例 #5
0
	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
コード例 #6
0
	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
コード例 #7
0
ファイル: pregnants.py プロジェクト: edulou13/enlaces
 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
コード例 #8
0
	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
コード例 #9
0
	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
コード例 #10
0
	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
コード例 #11
0
	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
コード例 #12
0
 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
コード例 #13
0
 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
コード例 #14
0
ファイル: communities.py プロジェクト: edulou13/enlaces
 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
コード例 #15
0
 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
コード例 #16
0
	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
コード例 #17
0
 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
コード例 #18
0
ファイル: pregnants.py プロジェクト: edulou13/enlaces
 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
コード例 #19
0
	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