Beispiel #1
0
 def get(self, request, *args, **kwargs):
     data = []
     params = {
         'dominio': settings.API_CITA_URL,
         'eess': self.current_establishment,
         'app': settings.APP_IDENTIFIER,
     }
     url = '{dominio}/citas/establecimiento/{eess}/aplicacion/{app}/?'.format(
         **params)
     if 'fecha' in self.request.GET:
         url = '{}&fecha={}'.format(url, self.request.GET.get('fecha'))
     if 'tipo_doc' in self.request.GET:
         url = '{}&tipo_doc={}'.format(url,
                                       self.request.GET.get('tipo_doc'))
     if 'fecha_inicio' in self.request.GET and 'fecha_fin' in self.request.GET:
         url = '{}&fecha_inicio={}&fecha_fin={}'.format(
             url, self.request.GET.get('fecha_inicio'),
             self.request.GET.get('fecha_fin'))
     try:
         r = CITAClient(settings.CITAS_API_TOKEN).get(url=url)
         if r.status_code == 200:
             data = r.json().get('results')
             if 'ups' in self.request.GET:
                 data = filter(
                     lambda c: c.get('cod_ups', '') in self.request.GET.get(
                         'ups', '').split(','), data)
     except Exception as e:
         logger.warning(str(e))
     return Response(data)
Beispiel #2
0
 def get_persona_por_tipo_documento(self, tipo_documento, numero_documento,
                                    codigo_renaes):
     cita_client_var = CITAClient()
     url_citas = '{0}api/paciente/ver/{1}/{2}/{3}/'.format(
         self.url_citas_minsa, tipo_documento, numero_documento,
         codigo_renaes)
     response = cita_client_var.get(url_citas)
     return self.get_paciente(response, False)
Beispiel #3
0
 def get(self, request, *args, **kwargs):
     params = {
         'dominio': settings.API_CITA_URL,
         'uuid': self.kwargs.get('uuid')
     }
     url = '{dominio}/paciente/buscaruuid/{uuid}'.format(**params)
     r = CITAClient(settings.CITAS_API_TOKEN).get(url=url)
     if r.status_code == 200:
         if len(r.json().get('data')) > 0:
             return Response(r.json())
     return Response({}, status=status.HTTP_404_NOT_FOUND)
Beispiel #4
0
 def confirmar_cita(self, uuid_cita_minsa, tiempo_atencion):
     try:
         cita_client_var = CITAClient()
         payload = {
             'uuid_cita': uuid_cita_minsa,
             'duracion': tiempo_atencion,
             'estado': 3
         }
         response = cita_client_var.post('{0}api/citas/AtencionNew/'.format(
             self.url),
                                         json=payload)
     except Exception as e:
         print(e)
         return None
Beispiel #5
0
 def get_cita(self, **kwargs):
     r = dict()
     try:
         params = {'dominio': API_CITA_URL, 'eess': self.current_establishment, 'app': settings.APP_IDENTIFIER}
         url = '{dominio}/citas/establecimiento/{eess}/aplicacion/{app}'.format(**params)
         r = CITAClient(CITAS_API_TOKEN).get(url, params=kwargs).json()
     except Exception as e:
         logger.error('Error al obtener las citas programadas.')
         logger.error(e)
     return r
Beispiel #6
0
def get_cita(uuid):
    data = dict()
    params = {
        'dominio': settings.API_CITA_URL,
        'uuid': uuid,
    }
    url = '{dominio}/citas/get_cita_uuid/{uuid}/'.format(**params)
    try:
        c = CITAClient(settings.CITAS_API_TOKEN).get(url=url)
        if c.status_code == 200:
            data = c.json()
            paciente = data.get('id_phr_paciente', False)
            if paciente:
                data.get('paciente').update(get_ciudadano(paciente))
                url = '{}/servicio/{}/'.format(settings.API_MPI_URL,
                                               data.get('cod_ups'))
                u = MPIClient(settings.MPI_API_TOKEN).get(url=url)
                if u.status_code == 200:
                    data.update({'ups': u.json()})
    except Exception as e:
        logger.warning(str(e))
    return data
Beispiel #7
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
Beispiel #8
0
 def get_persona_por_uuid(self, uuid):
     cita_client_var = CITAClient()
     url_citas = '{0}api/paciente/buscaruuid/{1}/'.format(
         self.url_citas_minsa, uuid)
     response = cita_client_var.get(url_citas)
     return self.get_paciente(response, False)