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})
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
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})
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})
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})
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)
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
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
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
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
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
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)
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