66import java .util .Calendar ;
77import java .util .Date ;
88import java .util .HashMap ;
9+ import java .util .List ;
910import java .util .Map ;
1011import java .util .TimeZone ;
1112import java .util .UUID ;
4243import com .wipro .fhir .data .v3 .careContext .LinkCareContextRequest ;
4344import com .wipro .fhir .data .v3 .careContext .PatientCareContext ;
4445import com .wipro .fhir .repo .mongo .generateToken_response .GenerateTokenAbdmResponsesRepo ;
46+ import com .wipro .fhir .repo .v3 .careContext .CareContextRepo ;
4547import com .wipro .fhir .data .v3 .careContext .AddCareContextRequest ;
4648import com .wipro .fhir .service .ndhm .Common_NDHMService ;
4749import com .wipro .fhir .service .v3 .abha .GenerateAuthSessionService ;
@@ -68,10 +70,13 @@ public class CareContextLinkingServiceImpl implements CareContextLinkingService
6870
6971 @ Value ("${generateTokenForLinkCareContext}" )
7072 String generateTokenForLinkCareContext ;
71-
73+
7274 @ Value ("${linkCareContext}" )
7375 String linkCareContext ;
7476
77+ @ Autowired
78+ private CareContextRepo careContextRepo ;
79+
7580 private final Logger logger = LoggerFactory .getLogger (this .getClass ().getName ());
7681
7782 @ Override
@@ -240,23 +245,29 @@ public String generateTokenForCareContext(String request) throws FHIRException {
240245 } else {
241246 headers .add ("X-HIP-ID" , abdmFacilityId );
242247 }
243-
248+
249+ String [] hiTypes = findHiTypes (addCareContextRequest .getVisitCode (), addCareContextRequest .getVisitCategory ());
250+
244251 LinkCareContextRequest linkCareContextRequest = new LinkCareContextRequest ();
245252 CareContexts careContexts = new CareContexts ();
246- PatientCareContext patient = new PatientCareContext ();
253+ ArrayList < PatientCareContext > pcc = new ArrayList < PatientCareContext > ();
247254
248- ArrayList <CareContexts > cc = new ArrayList <CareContexts >();
249- careContexts .setReferenceNumber (addCareContextRequest .getVisitCode ());
250- careContexts .setDisplay (addCareContextRequest .getDisplay ());
251- cc .add (careContexts );
255+ for (String hiType : hiTypes ) {
256+ PatientCareContext patient = new PatientCareContext ();
252257
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 );
258+ ArrayList <CareContexts > cc = new ArrayList <CareContexts >();
259+ careContexts .setReferenceNumber (addCareContextRequest .getVisitCode ());
260+ careContexts .setDisplay (addCareContextRequest .getVisitCategory ());
261+ cc .add (careContexts );
262+
263+ patient .setReferenceNumber (addCareContextRequest .getVisitCode ());
264+ patient .setDisplay (addCareContextRequest .getVisitCategory () + " care context of " + addCareContextRequest .getAbhaNumber ());
265+ patient .setCount (1 );
266+ patient .setCareContexts (cc );
267+ patient .setHiType (hiType );
268+ pcc .add (patient );
269+ }
270+
260271
261272 if (null != addCareContextRequest .getAbhaNumber () && "" != addCareContextRequest .getAbhaNumber ()) {
262273 String abha = addCareContextRequest .getAbhaNumber ();
@@ -293,12 +304,13 @@ public String generateTokenForCareContext(String request) throws FHIRException {
293304 public String checkRecordExisits (String abhaAddress ) {
294305 GenerateTokenAbdmResponses result = generateTokenAbdmResponsesRepo .findByAbhaAddress (abhaAddress );
295306 logger .info ("find by abha address result - " , result );
307+ String linkResponse = null ;
296308
297309 if (result != null && result .getCreatedDate () != null ) {
298310 Calendar cal = Calendar .getInstance ();
299311 cal .add (Calendar .MONTH , -3 );
300312 Date threeMonthsAgo = cal .getTime ();
301- String linkResponse = result .getResponse ();
313+ linkResponse = result .getResponse ();
302314
303315 if (result .getCreatedDate ().after (threeMonthsAgo )) {
304316 if (linkResponse != null ) {
@@ -317,7 +329,39 @@ public String checkRecordExisits(String abhaAddress) {
317329 }
318330 }
319331
320- return null ;
332+ return linkResponse ;
333+ }
334+
335+ public String [] findHiTypes (String visitCode , String visitCategory ) {
336+
337+ List <String > hiTypes = new ArrayList <>();
338+ if (visitCategory .equalsIgnoreCase ("General OPD" )) {
339+ hiTypes .add ("OPConsultation" );
340+ } else if (visitCategory .equalsIgnoreCase ("General OPD (QC)" )) {
341+ hiTypes .add ("OPConsultation" );
342+ }
343+ hiTypes .add ("DischargeSummary" );
344+
345+ int hasPhyVitals = careContextRepo .hasPhyVitals (visitCode );
346+ if (hasPhyVitals > 0 ) {
347+ hiTypes .add ("WellnessRecord" );
348+ }
349+ int hasPrescription = careContextRepo .hasPrescribedDrugs (visitCode );
350+ if (hasPrescription > 0 ) {
351+ hiTypes .add ("Prescription" );
352+ }
353+
354+ int hasLabTests = careContextRepo .hasLabtestsDone (visitCode );
355+ if (hasLabTests > 0 ) {
356+ hiTypes .add ("DiagnosticsReport" );
357+ }
358+ int hasVaccineDetails = careContextRepo .hasVaccineDetails (visitCode );
359+ if (hasVaccineDetails > 0 ) {
360+ hiTypes .add ("ImmunizationRecord" );
361+ }
362+
363+ return hiTypes .toArray (new String [0 ]);
321364 }
322365
323366}
367+
0 commit comments