Skip to content

Commit 2275422

Browse files
helenKaryamsettyKA40094929KA40094929Karyamsetty Helen Grace
authored
mongo query change fetch to linktoken (#113)
* Abdm Facility fetch services changes * facility save after carecontext and patientcarecontextx update * FacilityId save in mongo db and Variable declaration correction * Mongo carecontext save query logic changes * ABHA Creation M1 V3 API changes * Abha V3 changes * removed unused code * v3- verify auth by abdm API changes * feat: Abdm M2 V3 changes * feat: mongo query change fetch for linktoken --------- Co-authored-by: KA40094929 <KA40094929@10.152.32.202> Co-authored-by: KA40094929 <KA40094929@APL-5CD1394ZJT> Co-authored-by: Karyamsetty Helen Grace <ka40094929@wipro.com>
1 parent efa413b commit 2275422

6 files changed

Lines changed: 124 additions & 85 deletions

File tree

src/main/environment/common_ci.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ webLoginAbhaVerify = @env.ABDM_PHR_URL@/login/abha/verify
9999
webLoginPhrCard = @env.ABDM_PHR_URL@/login/profile/abha/phr-card
100100

101101
## ABDM V3 M2 APIs
102-
generateTokenForLinkCareContext = @env.ABDM_ABHA_V3_URL@/v3/token/generate-token
103-
linkCareContext = @env.ABDM_ABHA_V3_URL@/hip/v3/link/carecontext
102+
generateTokenForLinkCareContext = @env.ABDM_HIECM_BASE_URL@/api/hiecm/v3/token/generate-token
103+
linkCareContext = @env.ABDM_HIECM_BASE_URL@/api/hiecm/hip/v3/link/carecontext
104104

105105
x-CM-ID=@env.X_CM_ID@
106106
abhaMode=@env.ABHA_MODE@

src/main/java/com/wipro/fhir/data/mongo/care_context/GenerateTokenAbdmResponses.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.wipro.fhir.data.mongo.care_context;
22

33
import java.time.LocalDateTime;
4+
import java.util.Date;
45

5-
import org.joda.time.DateTime;
66
import org.springframework.data.annotation.Id;
77
import org.springframework.data.mongodb.core.mapping.Document;
88
import org.springframework.data.mongodb.core.mapping.Field;
@@ -25,7 +25,7 @@ public class GenerateTokenAbdmResponses {
2525
private String abhaAddress;
2626

2727
@Expose
28-
@Field(value = "requestid")
28+
@Field(value = "requestId")
2929
private String requestId;
3030

3131
@Expose
@@ -34,6 +34,6 @@ public class GenerateTokenAbdmResponses {
3434

3535
@Expose
3636
@Field(value = "createdDate")
37-
private DateTime createdDate;
37+
private Date createdDate;
3838

3939
}

src/main/java/com/wipro/fhir/repo/mongo/generateToken_response/GenerateTokenAbdmResponsesRepo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ public interface GenerateTokenAbdmResponsesRepo extends MongoRepository<Generate
1212

1313
GenerateTokenAbdmResponses findByAbhaAddress(String abhaAddress);
1414

15-
15+
GenerateTokenAbdmResponses findByRequestId(String requestId);
1616

1717
}

src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.http.HttpHeaders;
2525
import org.springframework.http.ResponseEntity;
2626

27+
import com.wipro.fhir.data.mongo.care_context.GenerateTokenAbdmResponses;
2728
import com.wipro.fhir.data.mongo.care_context.NDHMRequest;
2829
import com.wipro.fhir.utils.exception.FHIRException;
2930

@@ -36,4 +37,5 @@ public interface Common_NDHMService {
3637
public String getStatusCode(ResponseEntity<String> res) throws FHIRException;
3738
public HttpHeaders getHeadersWithXtoken(String ndhmAuthToken,String X_Token);
3839
public HttpHeaders getHeadersWithAadhaarBioXtoken(String ndhmAuthToken, String X_Token);
40+
public GenerateTokenAbdmResponses getLinkToken(String requestId) throws FHIRException;
3941
}

src/main/java/com/wipro/fhir/service/ndhm/Common_NDHMServiceImpl.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@
3333
import org.springframework.http.ResponseEntity;
3434
import org.springframework.stereotype.Service;
3535

36+
import com.wipro.fhir.data.mongo.care_context.GenerateTokenAbdmResponses;
3637
import com.wipro.fhir.data.mongo.care_context.NDHMRequest;
3738
import com.wipro.fhir.data.mongo.care_context.NDHMResponse;
39+
import com.wipro.fhir.repo.mongo.generateToken_response.GenerateTokenAbdmResponsesRepo;
3840
import com.wipro.fhir.repo.mongo.ndhm_response.NDHMResponseRepo;
3941
import com.wipro.fhir.utils.exception.FHIRException;
4042

@@ -43,6 +45,9 @@ public class Common_NDHMServiceImpl implements Common_NDHMService {
4345
@Autowired
4446
private NDHMResponseRepo nDHMResponseRepo;
4547

48+
@Autowired
49+
private GenerateTokenAbdmResponsesRepo generateTokenAbdmResponsesRepo;
50+
4651
/***
4752
* @author SH20094090
4853
* @return headers for the NDHM API's
@@ -149,6 +154,19 @@ NDHMResponse getResponseMongo(String reqID) {
149154
} else
150155
return null;
151156
}
157+
158+
@Override
159+
public GenerateTokenAbdmResponses getLinkToken(String requestId) throws FHIRException {
160+
GenerateTokenAbdmResponses res = generateTokenAbdmResponsesRepo.findByRequestId(requestId);
161+
if(res != null) {
162+
return res;
163+
} else {
164+
return null;
165+
}
166+
167+
}
168+
169+
152170

153171
@Override
154172
public String getBody(ResponseEntity<String> res) throws FHIRException {

src/main/java/com/wipro/fhir/service/v3/careContext/CareContextLinkingServiceImpl.java

Lines changed: 98 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -140,23 +140,31 @@ public String generateTokenForCareContext(String request) throws FHIRException {
140140
String responseStrLogin = common_NDHMService.getBody(responseEntity);
141141
JsonParser jsnParser = new JsonParser();
142142
if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) {
143-
String mongoResponse = common_NDHMService.getMongoNDHMResponse(requestId);
143+
GenerateTokenAbdmResponses mongoResponse = common_NDHMService.getLinkToken(requestId);
144144
responseMap.put("requestId", requestId);
145-
if (!mongoResponse.equalsIgnoreCase("failure")) {
146-
JsonElement jsnElmnt1 = jsnParser.parse(mongoResponse);
147-
JsonObject jsnOBJ1 = new JsonObject();
148-
jsnOBJ1 = jsnElmnt1.getAsJsonObject();
149-
try {
150-
if (jsnOBJ1.get("linkToken") != null) {
151-
linkToken = jsnOBJ1.getAsJsonObject("linkToken").getAsString();
152-
responseMap.put("linkToken", linkToken);
153-
} else
154-
throw new FHIRException(
155-
"NDHM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString());
156-
} catch (Exception e) {
157-
throw new FHIRException(
158-
"NDHM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString());
159-
}
145+
if (mongoResponse != null && mongoResponse.getResponse() != null) {
146+
String abhaResponse = mongoResponse.getResponse();
147+
JsonElement jsonElement = jsnParser.parse(abhaResponse);
148+
JsonObject jsonObject = jsonElement.getAsJsonObject();
149+
150+
try {
151+
JsonElement linkTokenElement = jsonObject.get("LinkToken");
152+
153+
if (linkTokenElement != null && !linkTokenElement.isJsonNull()) {
154+
linkToken = linkTokenElement.getAsString();
155+
responseMap.put("X-LINK-TOKEN", linkToken);
156+
} else {
157+
if (jsonObject.has("Error") && !jsonObject.get("Error").isJsonNull()) {
158+
JsonObject errorObject = jsonObject.getAsJsonObject("Error");
159+
responseMap.put("Error", errorObject.toString());
160+
} else {
161+
responseMap.put("Error", "Unknown error");
162+
}
163+
}
164+
} catch (Exception e) {
165+
throw new FHIRException("ABDM_FHIR Error while parsing response: " + e.getMessage());
166+
}
167+
160168
}
161169

162170
} else {
@@ -187,82 +195,93 @@ public String linkCareContext(String request) throws FHIRException {
187195
if (null != addCareContextRequest.getLinkToken()) {
188196
headers.add("X-LINK-TOKEN", addCareContextRequest.getLinkToken());
189197
} else { // if link token is not found then fetch from mongo DB
190-
String mongoResponse = common_NDHMService.getMongoNDHMResponse(addCareContextRequest.getRequestId());
191-
if (!mongoResponse.equalsIgnoreCase("failure")) {
192-
JsonElement jsnElmnt1 = jsnParser.parse(mongoResponse);
193-
JsonObject jsnOBJ1 = new JsonObject();
194-
jsnOBJ1 = jsnElmnt1.getAsJsonObject();
198+
GenerateTokenAbdmResponses mongoResponse = common_NDHMService
199+
.getLinkToken(addCareContextRequest.getRequestId());
200+
if (mongoResponse != null && mongoResponse.getResponse() != null) {
201+
String abhaResponse = mongoResponse.getResponse();
202+
JsonElement jsonElement = jsnParser.parse(abhaResponse);
203+
JsonObject jsonObject = jsonElement.getAsJsonObject();
204+
195205
try {
196-
if (jsnOBJ1.get("linkToken") != null) {
197-
linkToken = jsnOBJ1.getAsJsonObject("linkToken").getAsString();
206+
JsonElement linkTokenElement = jsonObject.get("LinkToken");
207+
if (linkTokenElement != null && !linkTokenElement.isJsonNull()) {
208+
linkToken = linkTokenElement.getAsString();
198209
headers.add("X-LINK-TOKEN", linkToken);
199-
} else
200-
throw new FHIRException(
201-
"ABDM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString());
210+
} else {
211+
if (jsonObject.has("Error") && !jsonObject.get("Error").isJsonNull()) {
212+
JsonObject errorObject = jsonObject.getAsJsonObject("Error");
213+
responseMap.put("Error", errorObject.toString());
214+
} else {
215+
responseMap.put("Error", "Unknown error");
216+
}
217+
}
202218
} catch (Exception e) {
203-
throw new FHIRException(
204-
"ABDM_FHIR " + jsnOBJ1.getAsJsonObject("Error").get("Message").getAsString());
219+
throw new FHIRException("ABDM_FHIR Error while parsing response: " + e.getMessage());
205220
}
206221
}
207222

208223
}
224+
225+
if (linkToken != null) {
209226

210-
headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8");
211-
headers.add("REQUEST-ID", UUID.randomUUID().toString());
212-
213-
TimeZone tz = TimeZone.getTimeZone("UTC");
214-
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
215-
df.setTimeZone(tz);
216-
String nowAsISO = df.format(new Date());
217-
headers.add("TIMESTAMP", nowAsISO);
218-
headers.add("Authorization", abhaAuthToken);
219-
headers.add("X-CM-ID", abhaMode);
220-
if (null != addCareContextRequest.getAbdmFacilityId() && "" != addCareContextRequest.getAbdmFacilityId()) {
221-
headers.add("X-HIP-ID", addCareContextRequest.getAbdmFacilityId());
222-
} else {
223-
headers.add("X-HIP-ID", abdmFacilityId);
224-
}
227+
headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8");
228+
headers.add("REQUEST-ID", UUID.randomUUID().toString());
225229

226-
LinkCareContextRequest linkCareContextRequest = new LinkCareContextRequest();
227-
CareContexts careContexts = new CareContexts();
228-
PatientCareContext patient = new PatientCareContext();
229-
230-
ArrayList<CareContexts> cc = new ArrayList<CareContexts>();
231-
careContexts.setReferenceNumber(addCareContextRequest.getVisitCode());
232-
careContexts.setDisplay(addCareContextRequest.getDisplay());
233-
cc.add(careContexts);
234-
235-
ArrayList<PatientCareContext> pcc = new ArrayList<PatientCareContext>();
236-
patient.setReferenceNumber(addCareContextRequest.getVisitCode());
237-
patient.setDisplay(addCareContextRequest.getDisplay());
238-
patient.setDisplay(addCareContextRequest.getDisplay());
239-
patient.setCount(1);
240-
patient.setCareContexts(cc);
241-
pcc.add(patient);
242-
243-
if (null != addCareContextRequest.getAbhaNumber() && "" != addCareContextRequest.getAbhaNumber()) {
244-
String abha = addCareContextRequest.getAbhaNumber();
245-
String abhaNumber = abha.replace("-", "");
246-
linkCareContextRequest.setAbhaNumber(abhaNumber);
247-
}
230+
TimeZone tz = TimeZone.getTimeZone("UTC");
231+
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
232+
df.setTimeZone(tz);
233+
String nowAsISO = df.format(new Date());
234+
headers.add("TIMESTAMP", nowAsISO);
235+
headers.add("Authorization", abhaAuthToken);
236+
headers.add("X-CM-ID", abhaMode);
237+
if (null != addCareContextRequest.getAbdmFacilityId()
238+
&& "" != addCareContextRequest.getAbdmFacilityId()) {
239+
headers.add("X-HIP-ID", addCareContextRequest.getAbdmFacilityId());
240+
} else {
241+
headers.add("X-HIP-ID", abdmFacilityId);
242+
}
248243

249-
linkCareContextRequest.setAbhaAddress(addCareContextRequest.getAbhaAddress());
250-
linkCareContextRequest.setPatient(pcc);
244+
LinkCareContextRequest linkCareContextRequest = new LinkCareContextRequest();
245+
CareContexts careContexts = new CareContexts();
246+
PatientCareContext patient = new PatientCareContext();
247+
248+
ArrayList<CareContexts> cc = new ArrayList<CareContexts>();
249+
careContexts.setReferenceNumber(addCareContextRequest.getVisitCode());
250+
careContexts.setDisplay(addCareContextRequest.getDisplay());
251+
cc.add(careContexts);
252+
253+
ArrayList<PatientCareContext> pcc = new ArrayList<PatientCareContext>();
254+
patient.setReferenceNumber(addCareContextRequest.getVisitCode());
255+
patient.setDisplay(addCareContextRequest.getDisplay());
256+
patient.setDisplay(addCareContextRequest.getDisplay());
257+
patient.setCount(1);
258+
patient.setCareContexts(cc);
259+
pcc.add(patient);
260+
261+
if (null != addCareContextRequest.getAbhaNumber() && "" != addCareContextRequest.getAbhaNumber()) {
262+
String abha = addCareContextRequest.getAbhaNumber();
263+
String abhaNumber = abha.replace("-", "");
264+
linkCareContextRequest.setAbhaNumber(abhaNumber);
265+
}
251266

252-
String requestOBJ = new Gson().toJson(linkCareContextRequest);
253-
logger.info("ABDM reqobj for generate token link for carecontext : " + requestOBJ);
267+
linkCareContextRequest.setAbhaAddress(addCareContextRequest.getAbhaAddress());
268+
linkCareContextRequest.setPatient(pcc);
254269

255-
HttpEntity<String> httpEntity = new HttpEntity<>(requestOBJ, headers);
256-
ResponseEntity<String> responseEntity = restTemplate.exchange(linkCareContext, HttpMethod.POST, httpEntity,
257-
String.class);
270+
String requestOBJ = new Gson().toJson(linkCareContextRequest);
271+
logger.info("ABDM reqobj for generate token link for carecontext : " + requestOBJ);
258272

259-
logger.info("ABDM response for generate token link for carecontext : " + responseEntity);
260-
String responseStrLogin = common_NDHMService.getBody(responseEntity);
261-
if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) {
262-
res = "Care Context added successfully";
273+
HttpEntity<String> httpEntity = new HttpEntity<>(requestOBJ, headers);
274+
ResponseEntity<String> responseEntity = restTemplate.exchange(linkCareContext, HttpMethod.POST,
275+
httpEntity, String.class);
263276

264-
} else {
265-
throw new FHIRException(responseEntity.getBody());
277+
logger.info("ABDM response for generate token link for carecontext : " + responseEntity);
278+
String responseStrLogin = common_NDHMService.getBody(responseEntity);
279+
if (responseEntity.getStatusCode() == HttpStatusCode.valueOf(202)) {
280+
res = "Care Context added successfully";
281+
282+
} else {
283+
throw new FHIRException(responseEntity.getBody());
284+
}
266285
}
267286
} catch (Exception e) {
268287
throw new FHIRException(e.getMessage());
@@ -281,7 +300,7 @@ public String checkRecordExisits(String abhaAddress) {
281300
Date threeMonthsAgo = cal.getTime();
282301
String linkResponse = result.getResponse();
283302

284-
if (result.getCreatedDate().isAfter(threeMonthsAgo.getTime())) {
303+
if (result.getCreatedDate().after(threeMonthsAgo)) {
285304
if (linkResponse != null) {
286305
try {
287306
ObjectMapper mapper = new ObjectMapper();

0 commit comments

Comments
 (0)