From fe0ba2ddacb9598d555c0673984fa55d566955ca Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 11:47:30 +0530 Subject: [PATCH 01/12] adding loggers to check missing details saving --- .../service/ncdCare/NCDCareServiceImpl.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java index e5754bf6..95a12f48 100644 --- a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -77,6 +79,9 @@ @Service public class NCDCareServiceImpl implements NCDCareService { + + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + private CommonNurseServiceImpl commonNurseServiceImpl; private CommonDoctorServiceImpl commonDoctorServiceImpl; private NCDCareDoctorServiceImpl ncdCareDoctorServiceImpl; @@ -164,12 +169,25 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) if (benVisitID != null && benVisitID > 0) { tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data + logger.info("start saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.info("error in saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + } + else { + logger.info("successfully saved BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + } // call method to save Vital data + logger.info("start saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); vitalSaveSuccessFlag = saveBenNCDCareVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); - + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.info("error in saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + } + else { + logger.info("successfully saved BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + } // i = commonNurseServiceImpl.updateBeneficiaryStatus('N', // tmpOBJ.get("beneficiaryRegID").getAsLong()); } else { From c4387f3bd7c8121924a7b75bdbdd8003d96e14d2 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 12:08:30 +0530 Subject: [PATCH 02/12] error messages correction --- .../java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java index 95a12f48..d6799867 100644 --- a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java @@ -173,7 +173,7 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { - logger.info("error in saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.error("error in saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); } else { logger.info("successfully saved BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); @@ -183,7 +183,7 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) vitalSaveSuccessFlag = saveBenNCDCareVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { - logger.info("error in saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.error("error in saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); } else { logger.info("successfully saved BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); From b881acb2508fc4ae40c56d3c6e2fd53155579b7b Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 12:31:38 +0530 Subject: [PATCH 03/12] improving log statements --- .../iemr/tm/service/ncdCare/NCDCareServiceImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java index d6799867..e434e356 100644 --- a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java @@ -173,20 +173,19 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { - logger.error("error in saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.error("error in saving BenNCDCareHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); } else { - logger.info("successfully saved BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.info("successfully saved BenNCDCareHistoryDetails BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); } // call method to save Vital data logger.info("start saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); vitalSaveSuccessFlag = saveBenNCDCareVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { - logger.error("error in saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); - } - else { - logger.info("successfully saved BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.error("Error in saving BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); } // i = commonNurseServiceImpl.updateBeneficiaryStatus('N', // tmpOBJ.get("beneficiaryRegID").getAsLong()); From d1ca734fe69cddeeca3ccc07609e85c8f969b15d Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 12:42:30 +0530 Subject: [PATCH 04/12] adding logger changes --- .../java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java index e434e356..6d92ff29 100644 --- a/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java @@ -169,7 +169,7 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) if (benVisitID != null && benVisitID > 0) { tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data - logger.info("start saving BenNCDCareHistoryDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.info("Start saving BenNCDCareHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { @@ -179,7 +179,7 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) logger.info("successfully saved BenNCDCareHistoryDetails BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); } // call method to save Vital data - logger.info("start saving BenNCDCareVitalDetails for BenVisitID"+ benVisitID + "and" + benVisitCode); + logger.info("Start saving BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); vitalSaveSuccessFlag = saveBenNCDCareVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { From 5f4c042cd774dd59ff991aea6eec67cbbc2caab0 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:08:07 +0530 Subject: [PATCH 05/12] adding logger for other visit catgories --- .../iemr/tm/service/anc/ANCServiceImpl.java | 32 ++++++++++++ .../cancerScreening/CSServiceImpl.java | 21 +++++++- .../service/covid19/Covid19ServiceImpl.java | 19 ++++++- .../generalOPD/GeneralOPDServiceImpl.java | 35 +++++++++++-- .../ncdscreening/NCDScreeningServiceImpl.java | 22 +++++++++ .../iemr/tm/service/pnc/PNCServiceImpl.java | 49 ++++++++++++++++--- 6 files changed, 164 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/anc/ANCServiceImpl.java b/src/main/java/com/iemr/tm/service/anc/ANCServiceImpl.java index fc1da82c..0a448df1 100644 --- a/src/main/java/com/iemr/tm/service/anc/ANCServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/anc/ANCServiceImpl.java @@ -33,6 +33,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -100,6 +102,9 @@ @Service public class ANCServiceImpl implements ANCService { + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + private ANCNurseServiceImpl ancNurseServiceImpl; private ANCDoctorServiceImpl ancDoctorServiceImpl; private CommonNurseServiceImpl commonNurseServiceImpl; @@ -208,17 +213,44 @@ public String saveANCNurseData(JsonObject requestOBJ, String Authorization) thro // create tc request tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save ANC data + logger.info("Start saving ANC details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + ancSaveSuccessFlag = saveBenANCDetails(requestOBJ.getAsJsonObject("ancDetails"), benVisitID, benVisitCode); + if (ancSaveSuccessFlag == null || ancSaveSuccessFlag <= 0) { + logger.error("Error in saving BenANCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenANCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save History data + logger.info("Start saving BenANCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenANCHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("Error in saving BenANCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenANCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save Vital data + logger.info("Start saving BenANCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + vitalSaveSuccessFlag = saveBenANCVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenANCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenANCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + // call method to save Examination data + logger.info("Start saving BenANCExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); examtnSaveSuccessFlag = saveBenANCExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), benVisitID, benVisitCode); + if (examtnSaveSuccessFlag == null || examtnSaveSuccessFlag <= 0) { + logger.error("Error in saving BenANCExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenANCExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } } else { throw new RuntimeException("Error occurred while creating beneficiary visit"); } diff --git a/src/main/java/com/iemr/tm/service/cancerScreening/CSServiceImpl.java b/src/main/java/com/iemr/tm/service/cancerScreening/CSServiceImpl.java index 260a783b..ccd978d8 100644 --- a/src/main/java/com/iemr/tm/service/cancerScreening/CSServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/cancerScreening/CSServiceImpl.java @@ -228,13 +228,32 @@ public String saveCancerScreeningNurseData(JsonObject requestOBJ, String Authori tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save history data + logger.info("Start saving BenHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); Long historySaveSuccessFlag = saveBenHistoryDetails(requestOBJ, benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("Error in saving BenHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + // call method to save Examination data + logger.info("Start saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); Long examinationSuccessFlag = saveBenExaminationDetails(requestOBJ, benVisitID, Authorization, benVisitCode, benFlowID); + if (examinationSuccessFlag == null || examinationSuccessFlag <= 0) { + logger.error("Error in saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save vitals data + logger.info("Start saving BenVitalsDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); Long vitalSaveSuccessFlag = saveBenVitalsDetails(requestOBJ, benVisitID, benVisitCode); - + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenVitalsDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenVitalsDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + if ((historySaveSuccessFlag != null && historySaveSuccessFlag > 0) && (examinationSuccessFlag != null && examinationSuccessFlag > 0) && (vitalSaveSuccessFlag != null && vitalSaveSuccessFlag > 0)) { diff --git a/src/main/java/com/iemr/tm/service/covid19/Covid19ServiceImpl.java b/src/main/java/com/iemr/tm/service/covid19/Covid19ServiceImpl.java index 0d0e424a..abfd34d0 100644 --- a/src/main/java/com/iemr/tm/service/covid19/Covid19ServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/covid19/Covid19ServiceImpl.java @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -75,6 +77,9 @@ @Service public class Covid19ServiceImpl implements Covid19Service { + + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + @Autowired private CommonNurseServiceImpl commonNurseServiceImpl; @Autowired @@ -153,12 +158,24 @@ public String saveCovid19NurseData(JsonObject requestOBJ, String Authorization) tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data + logger.info("Start saving BenCovid19HistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenCovid19HistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("Error in saving BenCovid19HistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenCovid19HistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save Vital data + logger.info("Start saving BenCovid19VitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); vitalSaveSuccessFlag = saveBenCovid19VitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); - + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenCovid19VitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenCovid19VitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } else { throw new RuntimeException("Error occurred while creating beneficiary visit"); } diff --git a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java index a74a874f..87442f0d 100644 --- a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java @@ -28,6 +28,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -80,6 +82,10 @@ @Service public class GeneralOPDServiceImpl implements GeneralOPDService { + + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + @Autowired private CommonNurseServiceImpl commonNurseServiceImpl; @Autowired @@ -144,19 +150,40 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws // create tc request tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data - if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) + if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) { + logger.info("Start saving BenGeneralOPDHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenGeneralOPDHistoryDetails( requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("Error in saving BenGeneralOPDHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenGeneralOPDHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } // call method to save vital data - if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) + if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) { + logger.info("Start saving BenVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); vitalSaveSuccessFlag = saveBenVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); - + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } + // call method to save examination data - if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) + if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) { + logger.info("Start saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), benVisitID, benVisitCode); + if (examtnSaveSuccessFlag == null || examtnSaveSuccessFlag <= 0) { + logger.error("Error in saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } } else { throw new RuntimeException("Error occurred while creating beneficiary visit"); } diff --git a/src/main/java/com/iemr/tm/service/ncdscreening/NCDScreeningServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdscreening/NCDScreeningServiceImpl.java index 0f750746..b2122bd8 100644 --- a/src/main/java/com/iemr/tm/service/ncdscreening/NCDScreeningServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/ncdscreening/NCDScreeningServiceImpl.java @@ -28,6 +28,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -81,6 +83,8 @@ @Service public class NCDScreeningServiceImpl implements NCDScreeningService { + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + private NCDScreeningNurseServiceImpl ncdScreeningNurseServiceImpl; private CommonNurseServiceImpl commonNurseServiceImpl; private CommonBenStatusFlowServiceImpl commonBenStatusFlowServiceImpl; @@ -193,14 +197,32 @@ public String saveNCDScreeningNurseData(JsonObject requestOBJ, String Authorizat historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); // call method to save Vital data + logger.info("Start saving BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); vitalSaveSuccessFlag = saveBenNCDCareVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenNCDCareVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save IDRS data + logger.info("Start saving IDRS details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); idrsFlag = saveidrsDetails(requestOBJ.getAsJsonObject("idrsDetails"), benVisitID, benVisitCode); + if (idrsFlag == null || idrsFlag <= 0) { + logger.error("Error in saving IDRS details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved IDRS details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } // call method to save physical activity + logger.info("Start saving Physical Activity details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); physicalActivityFlag = savePhysicalActivityDetails( requestOBJ.getAsJsonObject("historyDetails").getAsJsonObject("physicalActivityHistory"), benVisitID, benVisitCode); + if (physicalActivityFlag == null || physicalActivityFlag <= 0) { + logger.error("Error in saving Physical Activity details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved Physical Activity details for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } } else { throw new RuntimeException("Error occurred while creating beneficiary visit"); } diff --git a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java index 6fe25634..bbab1bce 100644 --- a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java @@ -28,6 +28,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -83,6 +85,9 @@ @Service public class PNCServiceImpl implements PNCService { + + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + private CommonNurseServiceImpl commonNurseServiceImpl; private CommonDoctorServiceImpl commonDoctorServiceImpl; private PNCNurseServiceImpl pncNurseServiceImpl; @@ -180,24 +185,52 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro // tc request tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data - if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) + if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) { + logger.info("Start saving BenPNCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenPNCHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); - + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("Error in saving BenPNCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenPNCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } // call method to save ANC data - if (requestOBJ.has("pNCDeatils") && !requestOBJ.get("pNCDeatils").isJsonNull()) + + if (requestOBJ.has("pNCDeatils") && !requestOBJ.get("pNCDeatils").isJsonNull()) { + logger.info("Start saving BenPNCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); pncSaveSuccessFlag = saveBenPNCDetails(requestOBJ, benVisitID, benVisitCode); - + if (pncSaveSuccessFlag == null || pncSaveSuccessFlag <= 0) { + logger.error("Error in saving BenPNCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenPNCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } + // call method to save Vital data - if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) + if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) { + logger.info("Start saving BenPNCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); vitalSaveSuccessFlag = saveBenPNCVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, benVisitCode); - + if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { + logger.error("Error in saving BenPNCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenPNCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } + + // call method to save examination data - if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) + if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) { + logger.info("Start saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), benVisitID, benVisitCode); - + if (examtnSaveSuccessFlag == null || examtnSaveSuccessFlag <= 0) { + logger.error("Error in saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } else { + logger.info("Successfully saved BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + } } else { throw new RuntimeException("Error occurred while creating beneficiary visit"); } From 172aef2df8ef196a781713b7fb55303981a31346 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:14:37 +0530 Subject: [PATCH 06/12] removing duplicates --- .../iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java index 87442f0d..04431354 100644 --- a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java @@ -85,6 +85,9 @@ public class GeneralOPDServiceImpl implements GeneralOPDService { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + private static final String VITAL_DETAILS = "vitalDetails"; + + @Autowired private CommonNurseServiceImpl commonNurseServiceImpl; @@ -162,9 +165,9 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws } // call method to save vital data - if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) { + if (requestOBJ.has(VITAL_DETAILS) && !requestOBJ.get(VITAL_DETAILS).isJsonNull()) { logger.info("Start saving BenVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); - vitalSaveSuccessFlag = saveBenVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, + vitalSaveSuccessFlag = saveBenVitalDetails(requestOBJ.getAsJsonObject(VITAL_DETAILS), benVisitID, benVisitCode); if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { logger.error("Error in saving BenVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); From a335523672363e8871a6feb7a6c5b61796825453 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:19:44 +0530 Subject: [PATCH 07/12] creating constant for duplicates --- .../tm/service/generalOPD/GeneralOPDServiceImpl.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java index 04431354..0c127e75 100644 --- a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java @@ -87,7 +87,9 @@ public class GeneralOPDServiceImpl implements GeneralOPDService { private static final String VITAL_DETAILS = "vitalDetails"; - + private static final String EXAMINATION_DETAILS = "examinationDetails"; + + private static final String HISTORY_DETAILS = "historyDetails"; @Autowired private CommonNurseServiceImpl commonNurseServiceImpl; @@ -153,10 +155,10 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws // create tc request tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data - if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) { + if (requestOBJ.has(HISTORY_DETAILS) && !requestOBJ.get(HISTORY_DETAILS).isJsonNull()) { logger.info("Start saving BenGeneralOPDHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenGeneralOPDHistoryDetails( - requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + requestOBJ.getAsJsonObject(HISTORY_DETAILS), benVisitID, benVisitCode); if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { logger.error("Error in saving BenGeneralOPDHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); } else { @@ -177,9 +179,9 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws } // call method to save examination data - if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) { + if (requestOBJ.has(EXAMINATION_DETAILS) && !requestOBJ.get(EXAMINATION_DETAILS).isJsonNull()) { logger.info("Start saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); - examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), + examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject(EXAMINATION_DETAILS), benVisitID, benVisitCode); if (examtnSaveSuccessFlag == null || examtnSaveSuccessFlag <= 0) { logger.error("Error in saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); From 6925adde09c44b337bcff05252faa4d039cfcc02 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:26:36 +0530 Subject: [PATCH 08/12] adding duplicates for constant vars --- .../generalOPD/GeneralOPDServiceImpl.java | 2 -- .../iemr/tm/service/pnc/PNCServiceImpl.java | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java index 0c127e75..2004c022 100644 --- a/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/generalOPD/GeneralOPDServiceImpl.java @@ -86,9 +86,7 @@ public class GeneralOPDServiceImpl implements GeneralOPDService { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); private static final String VITAL_DETAILS = "vitalDetails"; - private static final String EXAMINATION_DETAILS = "examinationDetails"; - private static final String HISTORY_DETAILS = "historyDetails"; @Autowired diff --git a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java index bbab1bce..4dfe2572 100644 --- a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java @@ -88,6 +88,11 @@ public class PNCServiceImpl implements PNCService { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + private static final String PNC_DETAILS = "pNCDeatils"; + private static final String HISTORY_DETAILS = "historyDetails"; + private static final String VITAL_DETAILS = "vitalDetails"; + + private CommonNurseServiceImpl commonNurseServiceImpl; private CommonDoctorServiceImpl commonDoctorServiceImpl; private PNCNurseServiceImpl pncNurseServiceImpl; @@ -185,9 +190,9 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro // tc request tcRequestOBJ = commonServiceImpl.createTcRequest(requestOBJ, nurseUtilityClass, Authorization); // call method to save History data - if (requestOBJ.has("historyDetails") && !requestOBJ.get("historyDetails").isJsonNull()) { + if (requestOBJ.has(HISTORY_DETAILS) && !requestOBJ.get(HISTORY_DETAILS).isJsonNull()) { logger.info("Start saving BenPNCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); - historySaveSuccessFlag = saveBenPNCHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), + historySaveSuccessFlag = saveBenPNCHistoryDetails(requestOBJ.getAsJsonObject(HISTORY_DETAILS), benVisitID, benVisitCode); if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { logger.error("Error in saving BenPNCHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); @@ -197,7 +202,7 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro } // call method to save ANC data - if (requestOBJ.has("pNCDeatils") && !requestOBJ.get("pNCDeatils").isJsonNull()) { + if (requestOBJ.has(PNC_DETAILS) && !requestOBJ.get(PNC_DETAILS).isJsonNull()) { logger.info("Start saving BenPNCDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); pncSaveSuccessFlag = saveBenPNCDetails(requestOBJ, benVisitID, benVisitCode); if (pncSaveSuccessFlag == null || pncSaveSuccessFlag <= 0) { @@ -208,9 +213,9 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro } // call method to save Vital data - if (requestOBJ.has("vitalDetails") && !requestOBJ.get("vitalDetails").isJsonNull()) { + if (requestOBJ.has(VITAL_DETAILS) && !requestOBJ.get(VITAL_DETAILS).isJsonNull()) { logger.info("Start saving BenPNCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); - vitalSaveSuccessFlag = saveBenPNCVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), + vitalSaveSuccessFlag = saveBenPNCVitalDetails(requestOBJ.getAsJsonObject(VITAL_DETAILS), benVisitID, benVisitCode); if (vitalSaveSuccessFlag == null || vitalSaveSuccessFlag <= 0) { logger.error("Error in saving BenPNCVitalDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); @@ -717,9 +722,9 @@ public Long saveBenPNCHistoryDetails(JsonObject pncHistoryOBJ, Long benVisitID, public Long saveBenPNCDetails(JsonObject pncDetailsOBJ, Long benVisitID, Long benVisitCode) throws Exception { Long pncSuccessFlag = null; - if (pncDetailsOBJ != null && pncDetailsOBJ.has("pNCDeatils") && !pncDetailsOBJ.get("pNCDeatils").isJsonNull()) { + if (pncDetailsOBJ != null && pncDetailsOBJ.has(PNC_DETAILS) && !pncDetailsOBJ.get(PNC_DETAILS).isJsonNull()) { // Save Ben PNC Care Details - PNCCare pncCareDetailsOBJ = InputMapper.gson().fromJson(pncDetailsOBJ.get("pNCDeatils"), PNCCare.class); + PNCCare pncCareDetailsOBJ = InputMapper.gson().fromJson(pncDetailsOBJ.get(PNC_DETAILS), PNCCare.class); if (null != pncCareDetailsOBJ) { pncCareDetailsOBJ.setBenVisitID(benVisitID); pncCareDetailsOBJ.setVisitCode(benVisitCode); From f01c2c921e208904e56f76db8c6af5afbf015973 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:37:59 +0530 Subject: [PATCH 09/12] adding constant for duplicates --- src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java index 4dfe2572..f39f2d35 100644 --- a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java @@ -91,6 +91,7 @@ public class PNCServiceImpl implements PNCService { private static final String PNC_DETAILS = "pNCDeatils"; private static final String HISTORY_DETAILS = "historyDetails"; private static final String VITAL_DETAILS = "vitalDetails"; + private static final String EXAMINATION_DETAILS = "examinationDetails"; private CommonNurseServiceImpl commonNurseServiceImpl; @@ -226,9 +227,9 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro // call method to save examination data - if (requestOBJ.has("examinationDetails") && !requestOBJ.get("examinationDetails").isJsonNull()) { + if (requestOBJ.has(EXAMINATION_DETAILS) && !requestOBJ.get(EXAMINATION_DETAILS).isJsonNull()) { logger.info("Start saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); - examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), + examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject(EXAMINATION_DETAILS), benVisitID, benVisitCode); if (examtnSaveSuccessFlag == null || examtnSaveSuccessFlag <= 0) { logger.error("Error in saving BenExaminationDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); From 830f3f3151fa8c7b285e3b0d92683bd7de320185 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Thu, 3 Apr 2025 18:57:41 +0530 Subject: [PATCH 10/12] removing spaces --- src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java index f39f2d35..9fab84af 100644 --- a/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/pnc/PNCServiceImpl.java @@ -93,7 +93,6 @@ public class PNCServiceImpl implements PNCService { private static final String VITAL_DETAILS = "vitalDetails"; private static final String EXAMINATION_DETAILS = "examinationDetails"; - private CommonNurseServiceImpl commonNurseServiceImpl; private CommonDoctorServiceImpl commonDoctorServiceImpl; private PNCNurseServiceImpl pncNurseServiceImpl; From e3eb3a3e89950cf49d8a1f9ecb8530185966e877 Mon Sep 17 00:00:00 2001 From: Mithun James <1007084+drtechie@users.noreply.github.com> Date: Fri, 30 May 2025 17:09:43 +0530 Subject: [PATCH 11/12] fix: ensure jwt is not in deny list before further authentication --- src/main/java/com/iemr/tm/utils/JwtUtil.java | 33 +++++++--- .../java/com/iemr/tm/utils/TokenDenylist.java | 63 +++++++++++++++++++ 2 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/iemr/tm/utils/TokenDenylist.java diff --git a/src/main/java/com/iemr/tm/utils/JwtUtil.java b/src/main/java/com/iemr/tm/utils/JwtUtil.java index 83d98119..4b1be565 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUtil.java +++ b/src/main/java/com/iemr/tm/utils/JwtUtil.java @@ -1,15 +1,16 @@ package com.iemr.tm.utils; -import java.security.Key; import java.util.Date; import java.util.function.Function; +import javax.crypto.SecretKey; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; @Component @@ -18,10 +19,11 @@ public class JwtUtil { @Value("${jwt.secret}") private String SECRET_KEY; - private static final long EXPIRATION_TIME = 24L * 60 * 60 * 1000; // 1 day in milliseconds + @Autowired + private TokenDenylist tokenDenylist; // Generate a key using the secret - private Key getSigningKey() { + private SecretKey getSigningKey() { if (SECRET_KEY == null || SECRET_KEY.isEmpty()) { throw new IllegalStateException("JWT secret key is not set in application.properties"); } @@ -31,7 +33,20 @@ private Key getSigningKey() { // Validate and parse JWT Token public Claims validateToken(String token) { try { - return Jwts.parser().setSigningKey(getSigningKey()).build().parseClaimsJws(token).getBody(); + Claims claims = Jwts.parser() + .setSigningKey(getSigningKey()) + .build() + .parseClaimsJws(token) + .getBody(); + + String jti = claims.getId(); + + // Check if token is denylisted + if (tokenDenylist.isTokenDenylisted(jti)) { + return null; + } + + return claims; } catch (Exception e) { return null; // Handle token parsing/validation errors } @@ -43,10 +58,14 @@ public String extractUsername(String token) { public T extractClaim(String token, Function claimsResolver) { final Claims claims = extractAllClaims(token); - return claimsResolver.apply(claims); + return claims != null ? claimsResolver.apply(claims) : null; } private Claims extractAllClaims(String token) { - return Jwts.parser().setSigningKey(getSigningKey()).build().parseClaimsJws(token).getBody(); + return Jwts.parser() + .setSigningKey(getSigningKey()) + .build() + .parseClaimsJws(token) + .getBody(); } } diff --git a/src/main/java/com/iemr/tm/utils/TokenDenylist.java b/src/main/java/com/iemr/tm/utils/TokenDenylist.java new file mode 100644 index 00000000..42ddbacd --- /dev/null +++ b/src/main/java/com/iemr/tm/utils/TokenDenylist.java @@ -0,0 +1,63 @@ +package com.iemr.tm.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +@Component +public class TokenDenylist { + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + private static final String PREFIX = "denied_"; + + @Autowired + private RedisTemplate redisTemplate; + + private String getKey(String jti) { + return PREFIX + jti; + } + + // Add a token's jti to the denylist with expiration time + public void addTokenToDenylist(String jti, Long expirationTime) { + if (jti == null || jti.trim().isEmpty()) { + return; + } + if (expirationTime == null || expirationTime <= 0) { + throw new IllegalArgumentException("Expiration time must be positive"); + } + + try { + String key = getKey(jti); // Use helper method to get the key + redisTemplate.opsForValue().set(key, " ", expirationTime, TimeUnit.MILLISECONDS); + } catch (Exception e) { + throw new RuntimeException("Failed to denylist token", e); + } + } + + // Check if a token's jti is in the denylist + public boolean isTokenDenylisted(String jti) { + if (jti == null || jti.trim().isEmpty()) { + return false; + } + try { + String key = getKey(jti); // Use helper method to get the key + return Boolean.TRUE.equals(redisTemplate.hasKey(key)); + } catch (Exception e) { + logger.error("Failed to check denylist status for jti: " + jti, e); + // In case of Redis failure, consider the token as not denylisted to avoid blocking all requests + return false; + } + } + + // Remove a token's jti from the denylist (Redis) + public void removeTokenFromDenylist(String jti) { + if (jti != null && !jti.trim().isEmpty()) { + String key = getKey(jti); // Use helper method to get the key + redisTemplate.delete(key); + } + } +} From f332c50a990c90c7a3f553b68908938c5e1a5e0c Mon Sep 17 00:00:00 2001 From: Mithun James <1007084+drtechie@users.noreply.github.com> Date: Fri, 30 May 2025 17:54:39 +0530 Subject: [PATCH 12/12] fix: remove deprecated methods, add null check for jti --- src/main/java/com/iemr/tm/utils/JwtUtil.java | 18 ++++++++---------- .../java/com/iemr/tm/utils/TokenDenylist.java | 8 -------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/JwtUtil.java b/src/main/java/com/iemr/tm/utils/JwtUtil.java index 4b1be565..2639896e 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUtil.java +++ b/src/main/java/com/iemr/tm/utils/JwtUtil.java @@ -1,8 +1,6 @@ package com.iemr.tm.utils; -import java.util.Date; import java.util.function.Function; - import javax.crypto.SecretKey; import org.springframework.beans.factory.annotation.Autowired; @@ -34,15 +32,15 @@ private SecretKey getSigningKey() { public Claims validateToken(String token) { try { Claims claims = Jwts.parser() - .setSigningKey(getSigningKey()) + .verifyWith(getSigningKey()) .build() - .parseClaimsJws(token) - .getBody(); + .parseSignedClaims(token) + .getPayload(); String jti = claims.getId(); - // Check if token is denylisted - if (tokenDenylist.isTokenDenylisted(jti)) { + // Check if token is denylisted (only if jti exists) + if (jti != null && tokenDenylist.isTokenDenylisted(jti)) { return null; } @@ -63,9 +61,9 @@ public T extractClaim(String token, Function claimsResolver) { private Claims extractAllClaims(String token) { return Jwts.parser() - .setSigningKey(getSigningKey()) + .verifyWith(getSigningKey()) .build() - .parseClaimsJws(token) - .getBody(); + .parseSignedClaims(token) + .getPayload(); } } diff --git a/src/main/java/com/iemr/tm/utils/TokenDenylist.java b/src/main/java/com/iemr/tm/utils/TokenDenylist.java index 42ddbacd..03e19ad3 100644 --- a/src/main/java/com/iemr/tm/utils/TokenDenylist.java +++ b/src/main/java/com/iemr/tm/utils/TokenDenylist.java @@ -52,12 +52,4 @@ public boolean isTokenDenylisted(String jti) { return false; } } - - // Remove a token's jti from the denylist (Redis) - public void removeTokenFromDenylist(String jti) { - if (jti != null && !jti.trim().isEmpty()) { - String key = getKey(jti); // Use helper method to get the key - redisTemplate.delete(key); - } - } }