@@ -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