import graphene
import graphene_django

from graphene import relay, ObjectType
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from .models import Datos_personales, Estudios, Antecedentes, Autoevaluacion_salud, Percepcion, Personalidad, Estatus_economico, Nutricion, Actividad_fisica, Informacion_salud, Observaciones, Antropometria, Laboratorio, Bioimpedancia

class Datos_personalesNode(DjangoObjectType):
	class Meta:
		#fields = ('id','fecha_encuesta','cuenta','estado','codigo_postal','sexo','estado_civil')
		model = Datos_personales
		filter_fields = {
			'id': ['exact','icontains','istartswith'],
			'sexo':['exact'],
			'estado':['exact','icontains','istartswith']
		}
		interfaces = (relay.Node, )

class EstudiosNode(DjangoObjectType):
	class Meta:
		
		#fields = ('id','grado_estudios','grado_estudios_madre','grado_estudios_padre','promedio_academico',
		#	'horas_lectivas_diarias', 'horas_recreativas_diarias', 'horas_diarias_transporte', 'tipo_transporte_facmed',
		#	'cuenta')
		model = Estudios
		filter_fields = {
			'tipo_transporte_facmed':['exact'],
			'promedio_academico': ['exact'],
			'grado_estudios':['exact']
			}

		interfaces = (relay.Node, )

class AntecedentesNode(DjangoObjectType):
	class Meta:
		
		#fields = ('id','tienes_sobrepeso', 'edad_dx_sobrepeso' , 'tienes_obesidad' ,'edad_dx_obesidad' , 'padeces_enfermedades_cronicas' ,
		#	'edad_dx_enfermedades_cronicas','padre_padece_enfermedades_cronicas','edad_dx_padre_enfermedades_cronicas','madre_padece_enfermedades_cronicas',
		#	'edad_dx_madre_enfermedades_cronicas','padres_vivos','padre_vivo_edad','padre_muerto_edad','madre_viva_edad','madre_muerta_edad',
		#	'padre_vivo_sp_obesidad_dm_cardio','madre_viva_sp_obesidad_dm_crdio','hermanos_tienes','primer_hermano_vivo_muerto','primer_hermano_edad',
		#	'primer_hermano_sp_obesidad_dm_cardio','segundo_hermano_vivo_muerto','segundo_hermano_edad','segundo_hermano_sp_obesidad_dm_cardio',
		#	'tercer_hermano_vivo_muerto','tercer_hermano_edad','tercer_hermano_sp_obesidad_dm_cardio','cuarto_hermano_vivo_muerto',
		#	'cuarto_hermano_edad','cuarto_hermano_sp_obesidad_dm_cardio','hijos_tienes','primer_hijo_edad','primer_hijo_sp_obesidad_dm',
		#	'primer_hijo_peso_nacer','segundo_hijo_edad','segundo_hijo_sp_obesidad_dm','segundo_hijo_peso_nacer','tercer_hijo_edad',
		#	'tercer_hijo_sp_obesidad_dm','tercer_hijo_peso_nacer','cuarto_hijo_edad','cuarto_hijo_sp_obesidad_dm','cuarto_hijo_peso_nacer',
		#	'pareja_tienes','edad_pareja','pareja_sp_obesidad_dm','amigos_proporcion_sp_obesidad','amigos_cercanos_tienes')

		
		model = Antecedentes
		filter_fields = {
			'id': ['exact'],
			'tienes_obesidad': ['exact'],
			}
		interfaces = (relay.Node, )
		
class Autoevaluacion_saludNode(DjangoObjectType):
	class Meta:
	
		#fields = ('id','peso_actual' ,'pesaste_ultima_vez' ,'estatura' ,'consideras_peso_actual' ,'consideras_peso_1' ,'consideras_peso_5' ,
		#	'acciones_respecto_peso' ,'intento_bajar_subir_peso' ,'estres_actual' ,'estres_1' ,'estres_5' ,'condicion_fisica_actual' ,
		#	'condicion_fisica_1' ,'condicion_fisica_5' ,'suenno_diario' ,'suenno_calidad' ,'suenno_diario_1ano' ,'suenno_diario_5anos' ,
		#	'salud_actual' ,'salud_actual_1ano' ,'salud_actual_5anos' ,'trastorno_sueno' ,'alcohol_semana' ,'tipo_bebida_alcoholica' ,
		#	'edad_tomando' )
		
		model = Autoevaluacion_salud
		filter_fields = ['id','estatura', 'peso_actual']
		interfaces = (relay.Node, )

class PercepcionNode(DjangoObjectType):
	class Meta:
		#fields = ('id','stuntkard_peso_actual','stuntkard_figura_ideal','stuntkard_peso_1ano','stuntkard_peso_5anos')
		model = Percepcion
		filter_fields = ['id']
		interfaces = (relay.Node, )

class PersonalidadNode(DjangoObjectType):
	class Meta:
		#fields = ('id','soy_organizado','soy_responsable','soy_dedicado','soy_descuidado','soy_minucioso','soy_disciplinado',
		#	'planear_futuro','buena_suerte','propios_exitos','cualquier_cosa_propuesta','problemas_mala_suerte',
		#	'control_malos_sucesos','desgracias_errores','responsable_fallas')
		model = Personalidad
		filter_fields = ['id']
		interfaces = (relay.Node, )
		
class Estatus_economicoNode(DjangoObjectType):
	class Meta:
		#fields = ('id','actividad_remunerada','horas_semana_actividad','ingreso_mensual','gastos_personales_mensuales',
		#	'vives_padres_familia','focos_vivienda','focos_vivienda_rentada','personas_compartes_dormitorio_familia',
		#	'personas_compartes_dormitorio_rentas')
		model = Estatus_economico
		filter_fields = ['id','ingreso_mensual','focos_vivienda']
		interfaces = (relay.Node, )

class NutricionNode(DjangoObjectType):
	class Meta:
		#fields = ('id','comidas_fuertes','calorias_crees_recomendadas','comes_relativo_recomendado',
		#	'numero_refrescos_normales_consumes','numero_cereales_tuberculos_consumes','numero_frutas_consumes',
		#	'numero_maiz_consumes','numero_tortillas_consumes','numero_carne_etc_consumes','numero_verduras_leguminosas_consumes',
		#	'numero_botanas_etc_consumes','numero_comes_fuera_casa','numero_cfca','numero_cfcc')
		model = Nutricion
		filter_fields = ['id','comidas_fuertes']
		interfaces = (relay.Node, )

class Actividad_fisicaNode(DjangoObjectType):
	class Meta:
		#fields = ('id','horas_ejercicio_actual','horas_ejercicio_1ano','horas_ejercicio_5ano','tipo_ejercicio_actual',
		#	'tipo_ejercicio_1ano','tipo_ejercicio_5anos','donde_haces_ejercicio','gusta_ejercicio_intenso',
		#	'r_medicas')
		model = Actividad_fisica
		filter_fields = ['id','horas_ejercicio_actual']
		interfaces = (relay.Node, )

class Informacion_saludNode(DjangoObjectType):
	class Meta:
		#fields = ('id','imc_normal','stuntkard_bajo_peso','stuntkard_normal_peso','stuntkard_sobrepeso','stuntkard_obeso',
		#	'porc_mexicanos_obesidad','calorias_refresco','calorias_agua','calorias_manzana','distancia_calorias_coca',
		#	'cambio_habitos_probabilidad_dm','factores_obesidad_dm','eres_religioso','partidario_politico',
		#	'cual_partido_politico')
		model = Informacion_salud
		filter_fields = ['id','eres_religioso','partidario_politico']
		interfaces = (relay.Node, )

class ObservacionesNode(DjangoObjectType):
	class Meta:
		#fields = ('id','observaciones','etiquetas')
		model = Observaciones
		filter_fields = ['id']
		interfaces = (relay.Node, )

class AntropometriaNode(DjangoObjectType):
	class Meta:
		#fields = ('id','cuenta','peso_real','talla_real','presion_sistolica','presion_diastolica','circunferencia_brazo',
		#	'circunferencia_cintura','circunferencia_cadera','temperatura_axilar','temperatura_oido','temperatura_muneca',
		#	'bioimpedancia_peso','bioimpedancia_porcentaje_grasa','bioimpedancia_porcentaje_agua','plicometria_triceps',
		#	'plicometria_biceps','plicometria_suprailiaco','plicometria_subescapular')
		model = Antropometria
		filter_fields = ['id','peso_real']
		interfaces = (relay.Node, )

class LaboratorioNode(DjangoObjectType):
	class Meta:
		#fields = ('id','paciente','cuenta','glucosa','urea','creatinina','acido_urico','colesterol_total','trigliceridos',
		#	'bilirrubina_total','bilirrubina_directa','bilirrubina_indirecta','aspartato_amino_transferasa','calcio','fosforo',
		#	'hemoglobina_glucosilada','glucosa_promedio_estimada','insulina_basal','hemoglobina','hematocrito','eritrocitos',
		#	'vgm','hgm','chcm','rdw','leucocitos','porcentaje_neutrofilos_totales','porcentaje_neutrofilos_segmentados',
		#	'porcentaje_neutrofilos_en_banda','numero_eosinofilos','porcentaje_eosinofilos','numero_basofilos',
		#	'porcentaje_basofilos','numero_linfocitos','porcentaje_linfocitos','numero_monocitos','porcentaje_monocitos',
		#	'plaquetas','vpm','paciente','glucosa','urea','creatinina','acido_urico','colesterol_total','trigliceridos',
		#	'hemoglobina_glucosilada','insulina_basal','hemoglobina','hematocrito','eritrocitos','vgm','chcm','leucocitos',
		#	'porcentaje_neutrofilos_totales','porcentaje_eosinofilos','porcentaje_basofilos','porcentaje_linfocitos',
		#	'porcentaje_monocitos','plaquetas','hdl','ldl','bun','albumina','pcr','cloro','potasio','sodio','glucosa',
		#	'colesterol_total','hemoglobina_glucosilada','insulina_basal','hdl','ldl','bun','pcr')
		model = Laboratorio
		filter_fields = ['id','paciente','glucosa']
		interfaces = (relay.Node, )

class BioimpedanciaNode(DjangoObjectType):
	class Meta:
		#fields = ('id','edad_real','munneca','porc_musculos','rmkcal','edad_corporal','imc','grasa_visceral')
		model = Bioimpedancia
		filter_fields = ['id','edad_real']
		interfaces = (relay.Node, )

class Query(graphene.ObjectType):
	
	datos = relay.Node.Field(Datos_personalesNode)
	all_datos = DjangoFilterConnectionField(Datos_personalesNode)

	estudios = relay.Node.Field(EstudiosNode)
	all_estudios = DjangoFilterConnectionField(EstudiosNode)
	
	antecedentes = relay.Node.Field(AntecedentesNode)
	all_antecedentes = DjangoFilterConnectionField(AntecedentesNode)

	autoevaluacion = relay.Node.Field(Autoevaluacion_saludNode)
	all_autoevaluacion = DjangoFilterConnectionField(Autoevaluacion_saludNode)

	percepcion = relay.Node.Field(PercepcionNode)
	all_percepcion = DjangoFilterConnectionField(PercepcionNode)

	personalidad = relay.Node.Field(PersonalidadNode)
	all_personalidad = DjangoFilterConnectionField(PersonalidadNode)

	estatus = relay.Node.Field(Estatus_economicoNode)
	all_estatus = DjangoFilterConnectionField(Estatus_economicoNode)

	nutricion = relay.Node.Field(NutricionNode)
	all_nutricion = DjangoFilterConnectionField(NutricionNode)

	actividad = relay.Node.Field(Actividad_fisicaNode)
	all_actividad = DjangoFilterConnectionField(Actividad_fisicaNode)

	informacion = relay.Node.Field(Informacion_saludNode)
	all_informacion = DjangoFilterConnectionField(Informacion_saludNode)

	observaciones = relay.Node.Field(ObservacionesNode)
	all_observaciones = DjangoFilterConnectionField(ObservacionesNode)

	antropometria = relay.Node.Field(AntropometriaNode)
	all_antropometria = DjangoFilterConnectionField(AntropometriaNode)

	laboratorio = relay.Node.Field(LaboratorioNode)
	all_laboratorio = DjangoFilterConnectionField(LaboratorioNode)

	bioimpedancia = relay.Node.Field(BioimpedanciaNode)
	all_bioimpedancia = DjangoFilterConnectionField(BioimpedanciaNode)

schema = graphene.Schema(query=Query)
