diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index ea262e0..75945e9 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -99,8 +99,8 @@ webLoginAbhaVerify = @env.ABDM_PHR_URL@/login/abha/verify webLoginPhrCard = @env.ABDM_PHR_URL@/login/profile/abha/phr-card ## ABDM V3 M2 APIs -generateTokenForLinkCareContext = @env.ABDM_ABHA_V3_URL@/v3/token/generate-token -linkCareContext = @env.ABDM_ABHA_V3_URL@/hip/v3/link/carecontext +generateTokenForLinkCareContext = @env.ABDM_HIECM_BASE_URL@/api/hiecm/v3/token/generate-token +linkCareContext = @env.ABDM_HIECM_BASE_URL@/api/hiecm/hip/v3/link/carecontext x-CM-ID=@env.X_CM_ID@ abhaMode=@env.ABHA_MODE@ diff --git a/src/main/java/com/wipro/fhir/data/mongo/care_context/GenerateTokenAbdmResponses.java b/src/main/java/com/wipro/fhir/data/mongo/care_context/GenerateTokenAbdmResponses.java index a0afad7..153d393 100644 --- a/src/main/java/com/wipro/fhir/data/mongo/care_context/GenerateTokenAbdmResponses.java +++ b/src/main/java/com/wipro/fhir/data/mongo/care_context/GenerateTokenAbdmResponses.java @@ -1,8 +1,8 @@ package com.wipro.fhir.data.mongo.care_context; import java.time.LocalDateTime; +import java.util.Date; -import org.joda.time.DateTime; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; @@ -25,7 +25,7 @@ public class GenerateTokenAbdmResponses { private String abhaAddress; @Expose - @Field(value = "requestid") + @Field(value = "requestId") private String requestId; @Expose @@ -34,6 +34,6 @@ public class GenerateTokenAbdmResponses { @Expose @Field(value = "createdDate") - private DateTime createdDate; + private Date createdDate; } diff --git a/src/main/java/com/wipro/fhir/repo/mongo/generateToken_response/GenerateTokenAbdmResponsesRepo.java b/src/main/java/com/wipro/fhir/repo/mongo/generateToken_response/GenerateTokenAbdmResponsesRepo.java index ea900af..70db7ac 100644 --- a/src/main/java/com/wipro/fhir/repo/mongo/generateToken_response/GenerateTokenAbdmResponsesRepo.java +++ b/src/main/java/com/wipro/fhir/repo/mongo/generateToken_response/GenerateTokenAbdmResponsesRepo.java @@ -12,6 +12,6 @@ public interface GenerateTokenAbdmResponsesRepo extends MongoRepository res) throws FHIRException; public HttpHeaders getHeadersWithXtoken(String ndhmAuthToken,String X_Token); public HttpHeaders getHeadersWithAadhaarBioXtoken(String ndhmAuthToken, String X_Token); + public GenerateTokenAbdmResponses getLinkToken(String requestId) throws FHIRException; } diff --git a/src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMServiceImpl.java b/src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMServiceImpl.java index 752e9d6..6dfdafd 100644 --- a/src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMServiceImpl.java +++ b/src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMServiceImpl.java @@ -33,8 +33,10 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import com.wipro.fhir.data.mongo.care_context.GenerateTokenAbdmResponses; import com.wipro.fhir.data.mongo.care_context.NDHMRequest; import com.wipro.fhir.data.mongo.care_context.NDHMResponse; +import com.wipro.fhir.repo.mongo.generateToken_response.GenerateTokenAbdmResponsesRepo; import com.wipro.fhir.repo.mongo.ndhm_response.NDHMResponseRepo; import com.wipro.fhir.utils.exception.FHIRException; @@ -43,6 +45,9 @@ public class Common_NDHMServiceImpl implements Common_NDHMService { @Autowired private NDHMResponseRepo nDHMResponseRepo; + @Autowired + private GenerateTokenAbdmResponsesRepo generateTokenAbdmResponsesRepo; + /*** * @author SH20094090 * @return headers for the NDHM API's @@ -149,6 +154,19 @@ NDHMResponse getResponseMongo(String reqID) { } else return null; } + + @Override + public GenerateTokenAbdmResponses getLinkToken(String requestId) throws FHIRException { + GenerateTokenAbdmResponses res = generateTokenAbdmResponsesRepo.findByRequestId(requestId); + if(res != null) { + return res; + } else { + return null; + } + + } + + @Override public String getBody(ResponseEntity res) throws FHIRException { diff --git a/src/main/java/com/wipro/fhir/service/v3/careContext/CareContextLinkingServiceImpl.java b/src/main/java/com/wipro/fhir/service/v3/careContext/CareContextLinkingServiceImpl.java index 820869b..dcec2f8 100644 --- a/src/main/java/com/wipro/fhir/service/v3/careContext/CareContextLinkingServiceImpl.java +++ b/src/main/java/com/wipro/fhir/service/v3/careContext/CareContextLinkingServiceImpl.java @@ -140,23 +140,31 @@ public String generateTokenForCareContext(String request) throws FHIRException { String responseStrLogin = common_NDHMService.getBody(responseEntity); JsonParser jsnParser = new JsonParser(); if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) { - String mongoResponse = common_NDHMService.getMongoNDHMResponse(requestId); + GenerateTokenAbdmResponses mongoResponse = common_NDHMService.getLinkToken(requestId); responseMap.put("requestId", requestId); - if (!mongoResponse.equalsIgnoreCase("failure")) { - JsonElement jsnElmnt1 = jsnParser.parse(mongoResponse); - JsonObject jsnOBJ1 = new JsonObject(); - jsnOBJ1 = jsnElmnt1.getAsJsonObject(); - try { - if (jsnOBJ1.get("linkToken") != null) { - linkToken = jsnOBJ1.getAsJsonObject("linkToken").getAsString(); - responseMap.put("linkToken", linkToken); - } else - throw new FHIRException( - "NDHM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString()); - } catch (Exception e) { - throw new FHIRException( - "NDHM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString()); - } + if (mongoResponse != null && mongoResponse.getResponse() != null) { + String abhaResponse = mongoResponse.getResponse(); + JsonElement jsonElement = jsnParser.parse(abhaResponse); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + + try { + JsonElement linkTokenElement = jsonObject.get("LinkToken"); + + if (linkTokenElement != null && !linkTokenElement.isJsonNull()) { + linkToken = linkTokenElement.getAsString(); + responseMap.put("X-LINK-TOKEN", linkToken); + } else { + if (jsonObject.has("Error") && !jsonObject.get("Error").isJsonNull()) { + JsonObject errorObject = jsonObject.getAsJsonObject("Error"); + responseMap.put("Error", errorObject.toString()); + } else { + responseMap.put("Error", "Unknown error"); + } + } + } catch (Exception e) { + throw new FHIRException("ABDM_FHIR Error while parsing response: " + e.getMessage()); + } + } } else { @@ -187,82 +195,93 @@ public String linkCareContext(String request) throws FHIRException { if (null != addCareContextRequest.getLinkToken()) { headers.add("X-LINK-TOKEN", addCareContextRequest.getLinkToken()); } else { // if link token is not found then fetch from mongo DB - String mongoResponse = common_NDHMService.getMongoNDHMResponse(addCareContextRequest.getRequestId()); - if (!mongoResponse.equalsIgnoreCase("failure")) { - JsonElement jsnElmnt1 = jsnParser.parse(mongoResponse); - JsonObject jsnOBJ1 = new JsonObject(); - jsnOBJ1 = jsnElmnt1.getAsJsonObject(); + GenerateTokenAbdmResponses mongoResponse = common_NDHMService + .getLinkToken(addCareContextRequest.getRequestId()); + if (mongoResponse != null && mongoResponse.getResponse() != null) { + String abhaResponse = mongoResponse.getResponse(); + JsonElement jsonElement = jsnParser.parse(abhaResponse); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + try { - if (jsnOBJ1.get("linkToken") != null) { - linkToken = jsnOBJ1.getAsJsonObject("linkToken").getAsString(); + JsonElement linkTokenElement = jsonObject.get("LinkToken"); + if (linkTokenElement != null && !linkTokenElement.isJsonNull()) { + linkToken = linkTokenElement.getAsString(); headers.add("X-LINK-TOKEN", linkToken); - } else - throw new FHIRException( - "ABDM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString()); + } else { + if (jsonObject.has("Error") && !jsonObject.get("Error").isJsonNull()) { + JsonObject errorObject = jsonObject.getAsJsonObject("Error"); + responseMap.put("Error", errorObject.toString()); + } else { + responseMap.put("Error", "Unknown error"); + } + } } catch (Exception e) { - throw new FHIRException( - "ABDM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString()); + throw new FHIRException("ABDM_FHIR Error while parsing response: " + e.getMessage()); } } } + + if (linkToken != null) { - headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8"); - headers.add("REQUEST-ID", UUID.randomUUID().toString()); - - TimeZone tz = TimeZone.getTimeZone("UTC"); - DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - df.setTimeZone(tz); - String nowAsISO = df.format(new Date()); - headers.add("TIMESTAMP", nowAsISO); - headers.add("Authorization", abhaAuthToken); - headers.add("X-CM-ID", abhaMode); - if (null != addCareContextRequest.getAbdmFacilityId() && "" != addCareContextRequest.getAbdmFacilityId()) { - headers.add("X-HIP-ID", addCareContextRequest.getAbdmFacilityId()); - } else { - headers.add("X-HIP-ID", abdmFacilityId); - } + headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8"); + headers.add("REQUEST-ID", UUID.randomUUID().toString()); - LinkCareContextRequest linkCareContextRequest = new LinkCareContextRequest(); - CareContexts careContexts = new CareContexts(); - PatientCareContext patient = new PatientCareContext(); - - ArrayList cc = new ArrayList(); - careContexts.setReferenceNumber(addCareContextRequest.getVisitCode()); - careContexts.setDisplay(addCareContextRequest.getDisplay()); - cc.add(careContexts); - - ArrayList pcc = new ArrayList(); - patient.setReferenceNumber(addCareContextRequest.getVisitCode()); - patient.setDisplay(addCareContextRequest.getDisplay()); - patient.setDisplay(addCareContextRequest.getDisplay()); - patient.setCount(1); - patient.setCareContexts(cc); - pcc.add(patient); - - if (null != addCareContextRequest.getAbhaNumber() && "" != addCareContextRequest.getAbhaNumber()) { - String abha = addCareContextRequest.getAbhaNumber(); - String abhaNumber = abha.replace("-", ""); - linkCareContextRequest.setAbhaNumber(abhaNumber); - } + TimeZone tz = TimeZone.getTimeZone("UTC"); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + df.setTimeZone(tz); + String nowAsISO = df.format(new Date()); + headers.add("TIMESTAMP", nowAsISO); + headers.add("Authorization", abhaAuthToken); + headers.add("X-CM-ID", abhaMode); + if (null != addCareContextRequest.getAbdmFacilityId() + && "" != addCareContextRequest.getAbdmFacilityId()) { + headers.add("X-HIP-ID", addCareContextRequest.getAbdmFacilityId()); + } else { + headers.add("X-HIP-ID", abdmFacilityId); + } - linkCareContextRequest.setAbhaAddress(addCareContextRequest.getAbhaAddress()); - linkCareContextRequest.setPatient(pcc); + LinkCareContextRequest linkCareContextRequest = new LinkCareContextRequest(); + CareContexts careContexts = new CareContexts(); + PatientCareContext patient = new PatientCareContext(); + + ArrayList cc = new ArrayList(); + careContexts.setReferenceNumber(addCareContextRequest.getVisitCode()); + careContexts.setDisplay(addCareContextRequest.getDisplay()); + cc.add(careContexts); + + ArrayList pcc = new ArrayList(); + patient.setReferenceNumber(addCareContextRequest.getVisitCode()); + patient.setDisplay(addCareContextRequest.getDisplay()); + patient.setDisplay(addCareContextRequest.getDisplay()); + patient.setCount(1); + patient.setCareContexts(cc); + pcc.add(patient); + + if (null != addCareContextRequest.getAbhaNumber() && "" != addCareContextRequest.getAbhaNumber()) { + String abha = addCareContextRequest.getAbhaNumber(); + String abhaNumber = abha.replace("-", ""); + linkCareContextRequest.setAbhaNumber(abhaNumber); + } - String requestOBJ = new Gson().toJson(linkCareContextRequest); - logger.info("ABDM reqobj for generate token link for carecontext : " + requestOBJ); + linkCareContextRequest.setAbhaAddress(addCareContextRequest.getAbhaAddress()); + linkCareContextRequest.setPatient(pcc); - HttpEntity httpEntity = new HttpEntity<>(requestOBJ, headers); - ResponseEntity responseEntity = restTemplate.exchange(linkCareContext, HttpMethod.POST, httpEntity, - String.class); + String requestOBJ = new Gson().toJson(linkCareContextRequest); + logger.info("ABDM reqobj for generate token link for carecontext : " + requestOBJ); - logger.info("ABDM response for generate token link for carecontext : " + responseEntity); - String responseStrLogin = common_NDHMService.getBody(responseEntity); - if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) { - res = "Care Context added successfully"; + HttpEntity httpEntity = new HttpEntity<>(requestOBJ, headers); + ResponseEntity responseEntity = restTemplate.exchange(linkCareContext, HttpMethod.POST, + httpEntity, String.class); - } else { - throw new FHIRException(responseEntity.getBody()); + logger.info("ABDM response for generate token link for carecontext : " + responseEntity); + String responseStrLogin = common_NDHMService.getBody(responseEntity); + if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) { + res = "Care Context added successfully"; + + } else { + throw new FHIRException(responseEntity.getBody()); + } } } catch (Exception e) { throw new FHIRException(e.getMessage()); @@ -281,7 +300,7 @@ public String checkRecordExisits(String abhaAddress) { Date threeMonthsAgo = cal.getTime(); String linkResponse = result.getResponse(); - if (result.getCreatedDate().isAfter(threeMonthsAgo.getTime())) { + if (result.getCreatedDate().after(threeMonthsAgo)) { if (linkResponse != null) { try { ObjectMapper mapper = new ObjectMapper();