コード例 #1
0
ファイル: views.py プロジェクト: thony19cr/prj-vih
    def get(self, request, *args, **kwargs):

        lista_data = []
        try:
            mpi_client = MPIClient(settings.MPI_API_TOKEN)
            headers = {
                'Content-Type': 'application/vnd.api+json',
            }
            dep_id = self.kwargs.get('ubig_departamento')
            response = mpi_client.get(
                '{}/api/v1/ubigeo/1/177/{}/?page_size=100'.format(
                    settings.MPI_API_HOST, dep_id),
                headers=headers)

            if response.status_code == 200:
                data = response.json()['data'] if response.json(
                )['data'] else []
                for obj in data:
                    lista_data.append({
                        'ubigeo':
                        obj['attributes']['cod_ubigeo_inei_provincia'],
                        'nombre':
                        obj['attributes']['ubigeo_provincia']
                    })
            else:
                lista_data = []
        except Exception as e:
            logger.warning('Error al conectar con MPI', exc_info=True)
            lista_data = []
        return JsonResponse({'data': lista_data})
コード例 #2
0
ファイル: views.py プロジェクト: thony19cr/prj-vih
def get_distritos(dep_id, prov_id):
    client = MPIClient(settings.MPI_API_TOKEN)
    lista_data = []
    try:
        headers = {
            'Content-Type': 'application/vnd.api+json',
        }
        url = '{}/api/v1/ubigeo/1/177/{}/{}/?page_size=100'.format(settings.MPI_API_HOST, dep_id, prov_id)
        response = client.get(url, headers=headers)
        if response.status_code == 200:
            data = response.json()['data'] or None
            for obj in data:
                lista_data.append(
                    (
                        obj['attributes']['ubigeo_departamento'],
                        obj['attributes']['ubigeo_provincia'],
                        obj['attributes']['cod_ubigeo_inei_distrito'],
                        obj['attributes']['ubigeo_distrito']
                    )
                )
        else:
            lista_data = []
    except Exception as e:
        lista_data = []
        logger.warning('Error al conectar con MPI', exc_info=True)
    return lista_data
コード例 #3
0
ファイル: views.py プロジェクト: thony19cr/prj-vih
    def get(self, request, *args, **kwargs):
        lugar_id = self.kwargs.get('ubig_prov')
        dep_id = lugar_id[0:2]
        prov_id = lugar_id
        client = MPIClient(settings.MPI_API_TOKEN)
        lista_data = []
        try:
            headers = {
                'Content-Type': 'application/vnd.api+json',
            }
            url = '{}/api/v1/ubigeo/1/177/{}/{}/?page_size=100'.format(
                settings.MPI_API_HOST, dep_id, prov_id)
            response = client.get(url, headers=headers)
            if response.status_code == 200:
                data = response.json()['data'] or None
                for obj in data:
                    lista_data.append({
                        'ubigeo':
                        obj['attributes']['cod_ubigeo_inei_distrito'],
                        'nombre':
                        obj['attributes']['ubigeo_distrito']
                    })

            else:
                lista_data = []
        except Exception as e:
            lista_data = []
            logger.warning('Error al conectar con MPI', exc_info=True)
        return JsonResponse({'data': lista_data})
コード例 #4
0
 def get(self, request, *args, **kwargs):
     lista_data = []
     lista_data.append({'codigo': '', 'nombre': '----------'})
     try:
         mpi_client = MPIClient(settings.MPI_API_TOKEN)
         headers = {
             'Content-Type': 'application/vnd.api+json',
         }
         url = '{}/api/v1/ubigeo/1/177/?page_size=100'.format(
             settings.MPI_API_HOST)
         response = mpi_client.get(url, headers=headers)
         if response.status_code == 200:
             data = response.json()['data'] or []
             for obj in data:
                 lista_data.append({
                     'codigo':
                     obj['attributes']['cod_ubigeo_inei_departamento'],
                     'nombre':
                     obj['attributes']['ubigeo_departamento']
                 })
         else:
             lista_data = []
     except Exception as e:
         logger.warning(str(e))
         lista_data = []
     return JsonResponse({'data': lista_data})
コード例 #5
0
 def get(self, request, *args, **kwargs):
     lista_data = []
     lista_data.append({'codigo': '', 'nombre': '----------'})
     try:
         mpi_client = MPIClient(settings.MPI_API_TOKEN)
         headers = {
             'Content-Type': 'application/vnd.api+json',
         }
         dep_id = self.kwargs.get('codigo_dep')
         prov_id = self.kwargs.get('codigo_pro')
         dist_id = self.kwargs.get('codigo_dis')
         response = mpi_client.get(
             '{}/api/v1/ubigeo/1/177/{}/{}/{}/?page_size=100'.format(
                 settings.MPI_API_HOST, dep_id, prov_id, dist_id),
             headers=headers)
         if response.status_code == 200:
             data = response.json()['data'] if response.json(
             )['data'] else []
             for obj in data:
                 lista_data.append({
                     'codigo':
                     obj['attributes']['cod_ubigeo_inei_localidad'],
                     'nombre':
                     obj['attributes']['ubigeo_localidad']
                 })
         else:
             messages.warning(
                 self.request,
                 'Fallo al establecer una conexión al servicio web de MPI')
     except Exception as e:
         logger.warning(str(e))
         messages.warning(
             self.request,
             'Fallo al establecer una conexión al servicio web de MPI')
     return JsonResponse({'data': lista_data})
コード例 #6
0
 def get(self, request, *args, **kwargs):
     data = []
     try:
         url = '{}/catalogo/cie/lista/?q={}'.format(
             settings.API_MPI_URL, self.request.GET.get('q', ''))
         c = MPIClient(settings.MPI_API_TOKEN).get(url=url)
         if c.status_code == 200:
             data = c.json().get('data', [])
     except Exception as e:
         logger.warning(str(e))
     return Response(data)
コード例 #7
0
def get_ciudadano(uuid):
    data = dict()
    try:
        if uuid:
            mpc = MPIClient(settings.MPI_API_TOKEN)
            url = '{}/ciudadano/ver/{}/'.format(settings.API_MPI_URL, uuid)
            m = mpc.get(url=url)
            if m.status_code == 200:
                data = m.json().get('data')
    except Exception as e:
        logger.warning(str(e))
    return data
コード例 #8
0
ファイル: mixins.py プロジェクト: thony19cr/prj-vih
 def cie_data(self):
     if self.__cie_data is None:
         try:
             mpi_client = MPIClient(MPI_API_TOKEN)
             r = mpi_client.get('{}/catalogo/cie/detalle/{}/'.format(
                 URL_MPI, self.cie))
             if r.status_code == 200:
                 self.__cie_data = r.json().get('data').get('attributes')
         except Exception as e:
             logger.error('Error obteniendo el cie.')
             logger.error(
                 e.with_traceback(traceback.print_exc(file=sys.stdout)))
     return self.__cie_data
コード例 #9
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
コード例 #10
0
ファイル: functions.py プロジェクト: thony19cr/prj-vih
def obtener_establecimiento(codigo):
    headers = {
        'Content-Type': 'application/vnd.api+json',
    }
    client = MPIClient(settings.MPI_API_TOKEN)
    response = client.get('{}/api/v1/establecimiento/{}/detalle/'.format(
        settings.MPI_API_HOST, codigo),
                          headers=headers)
    establecimiento = []
    if response.status_code == 200:
        data = response.json()['data'] if response.json()['data'] else None
        if data:
            establecimiento = {
                'cod': data['attributes']['codigo_renaes'],
                'desc': data['attributes']['nombre'],
                'cod_disa': data['attributes']['diresa_codigo'],
                'cod_red': data['attributes']['red_codigo'],
                'cod_mred': data['attributes']['microred_codigo'],
                'departamento_nombre':
                data['attributes']['departamento_nombre'],
                'provincia_nombre': data['attributes']['provincia_nombre'],
                'distrito_nombre': data['attributes']['distrito_nombre'],
                'direccion': data['attributes']['direccion'],
                'ubigeo': data['attributes']['ubigeo'],
                'longitude': data['attributes']['location']['longitude'],
                'latitude': data['attributes']['location']['latitude'],
                'categoria_nombre': data['attributes']['categoria_nombre'],
                'sector_codigo': data['attributes']['sector_codigo'],
                'sector_nombre': data['attributes']['sector_nombre'],
                'diresa_nombre': data['attributes']['diresa_nombre'],
                'red_nombre': data['attributes']['red_nombre'],
                'microred_nombre': data['attributes']['microred_nombre']
            }
            return establecimiento
        else:
            return establecimiento
    else:
        return establecimiento
コード例 #11
0
def servicio_ciudadano_uuid(uuid):
    try:
        mpi_client = MPIClient(settings.MPI_API_TOKEN)
        headers = {
            'Content-Type': 'application/vnd.api+json',
        }
        response = mpi_client.get('{}/api/v1/ciudadano/ver/{}'.format(
            settings.MPI_API_HOST, uuid),
                                  headers=headers)
        if response.status_code == 200:
            data = response.json()['data'] if response.json()['data'] else None
            if data:
                nacimiento = data['attributes']['nacimiento_ubigeo']
                if nacimiento:
                    cantidad = len(nacimiento)
                    if (cantidad == 2) or (cantidad == 4) or (cantidad == 6):
                        dep_nac = nacimiento[:2]
                        mpi_client = MPIClient(settings.MPI_API_TOKEN)
                        lista_data_dep = []
                        try:
                            headers = {
                                'Content-Type': 'application/vnd.api+json',
                            }
                            response = mpi_client.get(
                                '{}/api/v1/ubigeo/1/177/{}/?page_size=100&provider=reniec'
                                .format(settings.MPI_API_HOST, dep_nac),
                                headers=headers)
                            if response.status_code == 200:
                                data_dep = response.json()['data'] or None
                                for obj in data_dep:
                                    lista_data_dep.append(
                                        (obj['attributes']
                                         ['cod_ubigeo_inei_provincia']))
                            else:
                                lista_data_dep = []
                        except Exception as e:
                            lista_data_dep = []
                        dep_nac_inei = lista_data_dep[0][:2]
                    else:
                        dep_nac_inei = ''
                    if (cantidad == 4) or (cantidad == 6):
                        dep_nac = nacimiento[:2]
                        pro_nac = nacimiento[:4]
                        mpi_client = MPIClient(settings.MPI_API_TOKEN)
                        lista_data_pro = []
                        try:
                            headers = {
                                'Content-Type': 'application/vnd.api+json',
                            }
                            response = mpi_client.get(
                                '{}/api/v1/ubigeo/1/177/{}/{}/?page_size=100&provider=reniec'
                                .format(settings.MPI_API_HOST, dep_nac,
                                        pro_nac),
                                headers=headers)
                            if response.status_code == 200:
                                data_pro = response.json()['data'] or None
                                for obj in data_pro:
                                    lista_data_pro.append(
                                        (obj['attributes']
                                         ['cod_ubigeo_inei_distrito']))
                            else:
                                lista_data_pro = []
                        except Exception as e:
                            lista_data_pro = []
                        pro_nac_inei = lista_data_pro[0][:4]
                    else:
                        pro_nac_inei = ''
                    if (cantidad == 6):
                        dis_nac = nacimiento[:6]
                        dep_nac = nacimiento[:2]
                        pro_nac = nacimiento[:4]
                        mpi_client = MPIClient(settings.MPI_API_TOKEN)
                        lista_data_dis = []
                        try:
                            headers = {
                                'Content-Type': 'application/vnd.api+json',
                            }
                            response = mpi_client.get(
                                '{}/api/v1/ubigeo/1/177/{}/{}/{}?page_size=100&provider=reniec'
                                .format(settings.MPI_API_HOST, dep_nac,
                                        pro_nac, dis_nac),
                                headers=headers)
                            if response.status_code == 200:
                                data_dis = response.json()['data'] or None
                                for obj in data_dis:
                                    lista_data_dis.append(
                                        (obj['attributes']
                                         ['cod_ubigeo_inei_localidad']))
                            else:
                                lista_data_dis = []
                        except Exception as e:
                            lista_data_dis = []
                        dis_nac_inei = lista_data_dis[0][:6]
                    else:
                        dis_nac_inei = ''
                else:
                    dep_nac_inei = ''
                    pro_nac_inei = ''
                    dis_nac_inei = ''
                temp = {
                    'paciente':
                    data['attributes']['uid'],
                    'tipo_documento':
                    data['attributes']['tipo_documento'],
                    'numero_documento':
                    data['attributes']['numero_documento'],
                    'apellido_paterno':
                    data['attributes']['apellido_paterno'],
                    'apellido_materno':
                    data['attributes']['apellido_materno'],
                    'nombres':
                    data['attributes']['nombres'],
                    'sexo':
                    data['attributes']['sexo'],
                    'fecha_nacimiento':
                    data['attributes']['fecha_nacimiento'],
                    'telefono':
                    data['attributes']['telefono'],
                    'celular':
                    data['attributes']['celular'],
                    'correo':
                    data['attributes']['correo'],
                    'etnia':
                    data['attributes']['etnia'],
                    'foto':
                    data['attributes']['foto'] or '',
                    'nacimiento_pais':
                    '177',
                    'nacimiento_departamento':
                    dep_nac_inei,
                    'nacimiento_provincia':
                    pro_nac_inei,
                    'nacimiento_distrito':
                    dis_nac_inei,
                    'grado_instruccion':
                    data['attributes']['grado_instruccion'],
                    'ocupacion':
                    data['attributes']['ocupacion'],
                    'residencia_actual_pais':
                    '177',
                    'residencia_actual_departamento':
                    data['attributes'].get(
                        'get_departamento_domicilio_ubigeo_inei', ''),  # noqa
                    'residencia_actual_provincia':
                    data['attributes'].get(
                        'get_provincia_domicilio_ubigeo_inei', ''),
                    'residencia_actual_distrito':
                    data['attributes'].get(
                        'get_distrito_domicilio_ubigeo_inei', ''),
                    'direccion_actual':
                    data['attributes']['domicilio_direccion'] or '',
                }
                Paciente.objects.create(**temp)
                paciente_consulta = Paciente.objects.filter(
                    paciente__iexact=uuid).first()
                data_ciudadano = {'data': paciente_consulta, 'error': 'OK'}
            else:
                data_ciudadano = {
                    'data': '',
                    'error': 'Paciente no registrado'
                }
        elif response.status_code == 404:
            data_ciudadano = {
                'data':
                '',
                'error':
                'Nro DNI no encontrado en los Servidores, verifique el número'
            }
        else:
            data_ciudadano = {
                'data':
                '',
                'error':
                'Nro DNI no encontrado en los Servidores, verifique el número'
            }
    except ValueError as e:
        data_ciudadano = {'data': '', 'error': 'Paciente no registrado'}
    except Exception as e:
        data_ciudadano = {
            'data':
            '',
            'error':
            'Fallo al establecer una conexión con el servicio web de los Ciudadanos'
        }
    return data_ciudadano
コード例 #12
0
ファイル: ciudadano.py プロジェクト: thony19cr/wawared
 def get_persona_por_dni(self, dni, solo_mujer=True):
     mpi_client_var = MPIClient(settings.MPI_API_TOKEN)
     response = mpi_client_var.get(
         '{0}/api/v1/ciudadano/ver/01/{1}/'.format(self.url, dni))
     return self.get_paciente(response, solo_mujer)
コード例 #13
0
ファイル: functions.py プロジェクト: thony19cr/prj-vih
def consulta_servicio_ciudadano_uuid(uuid):
    try:
        ciudadano = CiudadanoClient(settings.MPI_API_TOKEN).ver(uuid)
        if 'error' not in ciudadano.keys():
            nacimiento = ciudadano['nacimiento_ubigeo']
            if nacimiento:
                cantidad = len(nacimiento)
                if (cantidad == 2) or (cantidad == 4) or (cantidad == 6):
                    dep_nac = nacimiento[:2]
                    mpi_client = MPIClient(settings.MPI_API_TOKEN)
                    lista_data_dep = []
                    try:
                        headers = {
                            'Content-Type': 'application/vnd.api+json',
                        }
                        response = mpi_client.get(
                            '{}/api/v1/ubigeo/1/177/{}/?page_size=100&provider=reniec'
                            .format(settings.MPI_API_HOST, dep_nac),
                            headers=headers)
                        if response.status_code == 200:
                            data_dep = response.json()['data'] or None
                            for obj in data_dep:
                                lista_data_dep.append(
                                    (obj['attributes']
                                     ['cod_ubigeo_inei_provincia']))
                        else:
                            lista_data_dep = []
                    except Exception as e:
                        lista_data_dep = []
                    dep_nac_inei = lista_data_dep[0][:2]
                else:
                    dep_nac_inei = ''
                if (cantidad == 4) or (cantidad == 6):
                    dep_nac = nacimiento[:2]
                    pro_nac = nacimiento[:4]
                    mpi_client = MPIClient(settings.MPI_API_TOKEN)
                    lista_data_pro = []
                    try:
                        headers = {
                            'Content-Type': 'application/vnd.api+json',
                        }
                        response = mpi_client.get(
                            '{}/api/v1/ubigeo/1/177/{}/{}/?page_size=100&provider=reniec'
                            .format(settings.MPI_API_HOST, dep_nac, pro_nac),
                            headers=headers)
                        if response.status_code == 200:
                            data_pro = response.json()['data'] or None
                            for obj in data_pro:
                                lista_data_pro.append(
                                    (obj['attributes']
                                     ['cod_ubigeo_inei_distrito']))
                        else:
                            lista_data_pro = []
                    except Exception as e:
                        lista_data_pro = []
                    pro_nac_inei = lista_data_pro[0][:4]
                else:
                    pro_nac_inei = ''
                if (cantidad == 6):
                    dis_nac = nacimiento[:6]
                    dep_nac = nacimiento[:2]
                    pro_nac = nacimiento[:4]
                    mpi_client = MPIClient(settings.MPI_API_TOKEN)
                    lista_data_dis = []
                    try:
                        headers = {
                            'Content-Type': 'application/vnd.api+json',
                        }
                        response = mpi_client.get(
                            '{}/api/v1/ubigeo/1/177/{}/{}/{}?page_size=100&provider=reniec'
                            .format(settings.MPI_API_HOST, dep_nac, pro_nac,
                                    dis_nac),
                            headers=headers)
                        if response.status_code == 200:
                            data_dis = response.json()['data'] or None
                            for obj in data_dis:
                                lista_data_dis.append(
                                    (obj['attributes']
                                     ['cod_ubigeo_inei_localidad']))
                        else:
                            lista_data_dis = []
                    except Exception as e:
                        lista_data_dis = []
                    dis_nac_inei = lista_data_dis[0][:6]
                else:
                    dis_nac_inei = ''
            else:
                dep_nac_inei = ''
                pro_nac_inei = ''
                dis_nac_inei = ''
            temp = {
                'paciente':
                ciudadano['uid'],
                'tipo_documento':
                ciudadano['tipo_documento'],
                'numero_documento':
                ciudadano['numero_documento'],
                'apellido_paterno':
                ciudadano['apellido_paterno'],
                'apellido_materno':
                ciudadano['apellido_materno'],
                'nombres':
                ciudadano['nombres'],
                'sexo':
                ciudadano['sexo'],
                'fecha_nacimiento':
                ciudadano['fecha_nacimiento'],
                'telefono':
                ciudadano['telefono'],
                'celular':
                ciudadano['celular'],
                'correo':
                ciudadano['correo'],
                'etnia':
                ciudadano['etnia'],
                'foto':
                ciudadano['foto'] or '',
                'nacimiento_pais':
                '177',
                'nacimiento_departamento':
                dep_nac_inei,
                'nacimiento_provincia':
                pro_nac_inei,
                'nacimiento_distrito':
                dis_nac_inei,
                'grado_instruccion':
                ciudadano['grado_instruccion'],
                'ocupacion':
                ciudadano['ocupacion'],
                'residencia_actual_pais':
                '177',
                'residencia_actual_departamento':
                ciudadano.get('get_departamento_domicilio_ubigeo_inei',
                              ''),  # noqa
                'residencia_actual_provincia':
                ciudadano.get('get_provincia_domicilio_ubigeo_inei', ''),
                'residencia_actual_distrito':
                ciudadano.get('get_distrito_domicilio_ubigeo_inei', ''),
                'direccion_actual':
                ciudadano['domicilio_direccion'] or '',
            }
            Paciente.objects.create(**temp)
            data_ciudadano = {'uuid': ciudadano['uid'], 'resultado': 'OK'}
        else:
            data_ciudadano = {
                'uuid': '',
                'resultado': 'Número DNI no encontrado en los Servidores'
            }
    except:
        data_ciudadano = {
            'uuid': '',
            'resultado': 'Actualmente se tiene inconvenientes con la Conexión'
        }
    return data_ciudadano