From 307a7c50bc38ebe7c45906e8edc8c1bd3563e75e Mon Sep 17 00:00:00 2001 From: Khavin Shankar Date: Sat, 10 Feb 2024 14:59:06 +0530 Subject: [PATCH] Add custom prefix and suffix to hip name (#1861) * add postfix and prefix and clean hip name before service registration * set register to true if the facility is already associated with the bridge id * renamed postfix to suffix --- care/abdm/api/viewsets/health_facility.py | 25 +++++++++++++++++++---- config/settings/base.py | 2 ++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/care/abdm/api/viewsets/health_facility.py b/care/abdm/api/viewsets/health_facility.py index 0b85b9b2a6..45b0423ade 100644 --- a/care/abdm/api/viewsets/health_facility.py +++ b/care/abdm/api/viewsets/health_facility.py @@ -1,3 +1,5 @@ +import re + from celery import shared_task from django.conf import settings from dry_rest_permissions.generics import DRYPermissions @@ -30,14 +32,17 @@ def register_health_facility_as_service(facility_external_id): if health_facility.registered: return [True, None] + clean_facility_name = re.sub(r"[^A-Za-z0-9 ]+", " ", health_facility.facility.name) + clean_facility_name = re.sub(r"\s+", " ", clean_facility_name).strip() + hip_name = settings.HIP_NAME_PREFIX + clean_facility_name + settings.HIP_NAME_SUFFIX response = Facility().add_update_service( { "facilityId": health_facility.hf_id, - "facilityName": health_facility.facility.name, + "facilityName": hip_name, "HRP": [ { "bridgeId": settings.ABDM_CLIENT_ID, - "hipName": health_facility.facility.name, + "hipName": hip_name, "type": "HIP", "active": True, "alias": ["CARE_HIP"], @@ -50,7 +55,19 @@ def register_health_facility_as_service(facility_external_id): data = response.json()[0] if "error" in data: - return [False, data["error"]["message"]] + if ( + data["error"].get("code") == "2500" + and settings.ABDM_CLIENT_ID in data["error"].get("message") + and "already associated" in data["error"].get("message") + ): + health_facility.registered = True + health_facility.save() + return [True, None] + + return [ + False, + data["error"].get("message", "Error while registering HIP as service"), + ] if "servicesLinked" in data: health_facility.registered = True @@ -83,7 +100,7 @@ def register_service(self, request, facility__external_id): [registered, error] = register_health_facility_as_service(facility__external_id) if error: - return Response({"error": error}, status=400) + return Response({"detail": error}, status=400) return Response({"registered": registered}) diff --git a/config/settings/base.py b/config/settings/base.py index 09efa1770a..f87916098a 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -597,6 +597,8 @@ "HEALTH_SERVICE_API_URL", default="https://healthidsbx.abdm.gov.in/api" ) ABDM_FACILITY_URL = env("ABDM_FACILITY_URL", default="https://facilitysbx.abdm.gov.in") +HIP_NAME_PREFIX = env("HIP_NAME_PREFIX", default="") +HIP_NAME_SUFFIX = env("HIP_NAME_SUFFIX", default="") ABDM_USERNAME = env("ABDM_USERNAME", default="abdm_user_internal") X_CM_ID = env("X_CM_ID", default="sbx") FIDELIUS_URL = env("FIDELIUS_URL", default="http://fidelius:8090")