Beispiel #1
0
 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'])
Beispiel #2
0
    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
Beispiel #3
0
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,
    }})
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
 def test_no_existe_para_diferente_establecimiento(self):
     result = Cita.exists_cita_in_same_date(self.establecimiento_2,
                                            self.cita.fecha)
     self.assertFalse(result)
Beispiel #9
0
 def test_existe_para_la_misma_fecha(self):
     result = Cita.exists_cita_in_same_date(self.establecimiento,
                                            self.cita.fecha)
     self.assertTrue(result)
Beispiel #10
0
    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