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..2004c022 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,13 @@ @Service 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 private CommonNurseServiceImpl commonNurseServiceImpl; @Autowired @@ -144,19 +153,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(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 { + 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()) - vitalSaveSuccessFlag = saveBenVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), benVisitID, + 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(VITAL_DETAILS), 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()) - examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), + 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(EXAMINATION_DETAILS), 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/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/tm/service/ncdCare/NCDCareServiceImpl.java index e5754bf6..6d92ff29 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,24 @@ 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={} and BenVisitCode={}", benVisitID, benVisitCode); historySaveSuccessFlag = saveBenNCDCareHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), benVisitID, benVisitCode); + if (historySaveSuccessFlag == null || historySaveSuccessFlag <= 0) { + logger.error("error in saving BenNCDCareHistoryDetails for BenVisitID={} and BenVisitCode={}", benVisitID, benVisitCode); + } + else { + logger.info("successfully saved BenNCDCareHistoryDetails BenVisitID={} and BenVisitCode={}", 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); + } // i = commonNurseServiceImpl.updateBeneficiaryStatus('N', // tmpOBJ.get("beneficiaryRegID").getAsLong()); } else { 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..9fab84af 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,14 @@ @Service 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 static final String EXAMINATION_DETAILS = "examinationDetails"; + private CommonNurseServiceImpl commonNurseServiceImpl; private CommonDoctorServiceImpl commonDoctorServiceImpl; private PNCNurseServiceImpl pncNurseServiceImpl; @@ -180,24 +190,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()) - historySaveSuccessFlag = saveBenPNCHistoryDetails(requestOBJ.getAsJsonObject("historyDetails"), + 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(HISTORY_DETAILS), 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(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) { + 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()) - vitalSaveSuccessFlag = saveBenPNCVitalDetails(requestOBJ.getAsJsonObject("vitalDetails"), + 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(VITAL_DETAILS), 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()) - examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), + 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(EXAMINATION_DETAILS), 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"); } @@ -684,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); diff --git a/src/main/java/com/iemr/tm/utils/JwtUtil.java b/src/main/java/com/iemr/tm/utils/JwtUtil.java index 83d98119..2639896e 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUtil.java +++ b/src/main/java/com/iemr/tm/utils/JwtUtil.java @@ -1,15 +1,14 @@ 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 +17,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 +31,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() + .verifyWith(getSigningKey()) + .build() + .parseSignedClaims(token) + .getPayload(); + + String jti = claims.getId(); + + // Check if token is denylisted (only if jti exists) + if (jti != null && tokenDenylist.isTokenDenylisted(jti)) { + return null; + } + + return claims; } catch (Exception e) { return null; // Handle token parsing/validation errors } @@ -43,10 +56,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() + .verifyWith(getSigningKey()) + .build() + .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 new file mode 100644 index 00000000..03e19ad3 --- /dev/null +++ b/src/main/java/com/iemr/tm/utils/TokenDenylist.java @@ -0,0 +1,55 @@ +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; + } + } +}