def get_citas_vencidas(self): establecimiento_actual = Establecimiento.objects.get(id=self.request.session['establecimiento_id']) if establecimiento_actual.is_sistema_externo_admision: return Cita.get_citas_vencidas_for_medical_specialist( self.request.session['establecimiento_id'], self.request.user) else: return Cita.get_citas_vencidas( self.request.session['establecimiento_id'])
def register_cita(self, paciente, data, hc): try: fecha = datetime.strptime(data['fecha'], '%d/%m/%Y').date() hora = datetime.strptime(data['hora'], '%H:%M').time() fecha_hora = datetime.combine(fecha, hora) establecimiento = Establecimiento.objects.get( codigo=data['codrenaes']) especialista = User.objects.get(dni=data['dni_especialista']) cod_cita_externo = data['cod_cita_externo'] if not HistoriaClinica.objects.filter( establecimiento_id=establecimiento.id, paciente=paciente).exists(): HistoriaClinica.objects.create( numero=hc, establecimiento_id=establecimiento.id, paciente=paciente) if not Cita.exists_cita_in_same_date_for_medical_specialist( establecimiento.id, fecha_hora, especialista): cita = Cita(paciente=paciente, tipo=Cita.TIPO_GESTACION if data['tipo_cita'] == "gestante" else Cita.TIPO_CONTROL, origen=Cita.ORIGEN_EXTERNO, fecha=fecha_hora, establecimiento_id=establecimiento.id, especialista_id=especialista.id, codigo_origen_externo=cod_cita_externo, is_wawared=False, asistio=False) cita.save() return cita else: return None except IntegrityError: return None except Establecimiento.DoesNotExist: return None except User.DoesNotExist: return None
def guardacitas(request): resp = "" paciente = Paciente() if request.method == "POST" and request.is_ajax(): json_data = json.loads(request.body) pacid = buscaPaciente(json_data['nombre'], json_data['apellidos'], json_data["correo"]) cita = Cita.objects.filter(id_paciente=pacid, fecha=json_data["fecha"]).count() doc = Doctores.objects.get(id=int(json_data['medico'])) if cita > 0: resp = "Ya existe una cita igual..." else: if pacid < 1: paciente.nombre = json_data['nombre'] paciente.apellidos = json_data['apellidos'] paciente.correo = json_data["correo"] paciente.celular = json_data['celular'] paciente.estatus = "IP" # paciente con información parcial cuando se atienda en la cita se hace el compelemento paciente.telefono = json_data['telefono'] paciente.observaciones = json_data["motivo"] paciente.doctor = doc paciente.save() pacid = buscaPaciente(json_data['nombre'], json_data['apellidos'], json_data["correo"]) cita = Cita() cita.nombre = json_data['nombre'] cita.apellidos = json_data['apellidos'] cita.telefono = json_data['telefono'] cita.celular = json_data['celular'] cita.correo = json_data["correo"] cita.fecha = json_data["fecha"] cita.hora = json_data["hora"] cita.motivo = json_data["motivo"] cita.id_paciente = Paciente.objects.get(id=pacid) cita.save() resp = "La cita ha sido Guardada..." else: resp = "Error al intentar guardar la cita " return JsonResponse({'respuesta': { 'mensaje': resp, }})
def test_existe_para_la_hora_de_termino_de_cita(self): new_date = datetime(2014, 1, 1, 8, 30) result = Cita.exists_cita_in_same_date(self.establecimiento, new_date) self.assertTrue(result)
def test_no_existe_para_hora_fuera_del_rango(self): new_date = datetime(2014, 1, 1, 7, 30) result = Cita.exists_cita_in_same_date(self.establecimiento, new_date) self.assertFalse(result)
def test_existe_para_hora_dentro_del_rango(self): new_date = datetime(2014, 1, 1, 8, 10) result = Cita.exists_cita_in_same_date(self.establecimiento, new_date) self.assertTrue(result)
def test_no_existe_para_diferente_dia(self): new_date = self.cita.fecha + timedelta(days=1) result = Cita.exists_cita_in_same_date(self.establecimiento, new_date) self.assertFalse(result)
def test_no_existe_para_diferente_establecimiento(self): result = Cita.exists_cita_in_same_date(self.establecimiento_2, self.cita.fecha) self.assertFalse(result)
def test_existe_para_la_misma_fecha(self): result = Cita.exists_cita_in_same_date(self.establecimiento, self.cita.fecha) self.assertTrue(result)
def get_citas(self, establecimiento, usuario, fecha): try: cita_client_var = CITAClient() # '01'--> tipo dni para el sistemas de citas payload = { 'tipo_doc': '01', 'num_doc': usuario.dni, 'fecha': fecha } url_citas = '{0}api/citas/establecimiento/{1}/aplicacion/{2}/'.format( self.url, establecimiento.codigo, settings.APP_IDENTIFIER) response = cita_client_var.get( url_citas, params=payload) # requests.get(url_citas, params = payload) json_citas = response.json() cantidad_citas = json_citas['meta']['pagination']['count'] lista_citas = [] if cantidad_citas > 0: resultados_json = json_citas['results'] for cita_json in resultados_json: uuid_cita_minsa = cita_json.get('uuid_cita') cita = self.get_cita_x_uuid(uuid_cita_minsa) if cita: if not cita.asistio: lista_citas.append(cita) else: pac_numero_documento = cita_json.get('paciente').get( 'numero_documento') pac_tipo_documento = cita_json.get('paciente').get( 'tipo_documento', 'dni') if pac_tipo_documento == '01': pac_tipo_documento = 'dni' paciente = self.get_paciente_x_documento( pac_tipo_documento, pac_numero_documento) if not paciente: # consultar api de admision uuid_paciente = cita_json.get('paciente').get( 'id_phr') ciudadano_rest = CiudadanoRest() paciente = ciudadano_rest.get_persona_por_uuid( uuid_paciente) if paciente: paciente.save() HistoriaClinica.objects.create( numero=paciente.numero_documento, establecimiento_id=establecimiento.id, paciente=paciente) if paciente: cita = Cita() cita.origen = 'externo' cita.paciente = paciente cita.establecimiento = establecimiento cita.tipo = 'control' # por verificar cita.fecha = datetime.strptime('{} {}'.format(cita_json.get('fecha_cita'), \ cita_json.get('hora_inicio')), '%Y-%m-%d %H:%M:%S') cita.fecha_asistio = None cita.is_wawared = False cita.asistio = False cita.especialista = usuario cita.uuid_cita_minsa = uuid_cita_minsa cita.save() lista_citas.append(cita) return lista_citas except Exception as e: return None