Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/main/environment/common_ci.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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@
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -25,7 +25,7 @@ public class GenerateTokenAbdmResponses {
private String abhaAddress;

@Expose
@Field(value = "requestid")
@Field(value = "requestId")
private String requestId;

@Expose
Expand All @@ -34,6 +34,6 @@ public class GenerateTokenAbdmResponses {

@Expose
@Field(value = "createdDate")
private DateTime createdDate;
private Date createdDate;

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ public interface GenerateTokenAbdmResponsesRepo extends MongoRepository<Generate

GenerateTokenAbdmResponses findByAbhaAddress(String abhaAddress);


GenerateTokenAbdmResponses findByRequestId(String requestId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;

import com.wipro.fhir.data.mongo.care_context.GenerateTokenAbdmResponses;
import com.wipro.fhir.data.mongo.care_context.NDHMRequest;
import com.wipro.fhir.utils.exception.FHIRException;

Expand All @@ -36,4 +37,5 @@ public interface Common_NDHMService {
public String getStatusCode(ResponseEntity<String> 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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down Expand Up @@ -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<String> res) throws FHIRException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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<CareContexts> cc = new ArrayList<CareContexts>();
careContexts.setReferenceNumber(addCareContextRequest.getVisitCode());
careContexts.setDisplay(addCareContextRequest.getDisplay());
cc.add(careContexts);

ArrayList<PatientCareContext> pcc = new ArrayList<PatientCareContext>();
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<CareContexts> cc = new ArrayList<CareContexts>();
careContexts.setReferenceNumber(addCareContextRequest.getVisitCode());
careContexts.setDisplay(addCareContextRequest.getDisplay());
cc.add(careContexts);

ArrayList<PatientCareContext> pcc = new ArrayList<PatientCareContext>();
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<String> httpEntity = new HttpEntity<>(requestOBJ, headers);
ResponseEntity<String> 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<String> httpEntity = new HttpEntity<>(requestOBJ, headers);
ResponseEntity<String> 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());
Expand All @@ -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();
Expand Down
Loading