From 692493ac74554898a18455d2024e0ec928915cb9 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 12:59:57 +0530 Subject: [PATCH 1/6] adding changes to getDisease API to list rcords --- .../service/disease/DiseaseServiceImpl.java | 119 +++++++++++++----- 1 file changed, 90 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index 443a555..414c9b8 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -96,39 +96,100 @@ public String deleteDisease(String request) { return "activated successfully"; } +// @Override +// public String getDisease(String request) throws IEMRException { +// logger.info("getDisease - Start"); +// Disease disease = InputMapper.gson().fromJson(request, Disease.class); +// Integer totalCount = diseaseRepository.getDiseaseCount(); +// +// CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); +// CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Disease.class); +// Root root = criteriaQuery.from(Disease.class); +// List predicates = new ArrayList(); +// +// criteriaQuery.select(root).where(predicates.toArray(new Predicate[] {})); +// TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); +// +// if (disease.getPageNo() != null && disease.getPageSize() != null) +// { +// typedQuery.setMaxResults(disease.getPageSize()) +// .setFirstResult((disease.getPageNo() - 1) * disease.getPageSize()); +// } +// +// List list=typedQuery.getResultList(); +// +// Integer totalPages= getPageCount(totalCount, disease.getPageSize()); +// +// Map responseMap = new HashMap<>(); +// +// responseMap.put("DiseaseList", list); +// responseMap.put("totalPages", totalPages); +// +// logger.info("getDisease - End"); +// return responseMap.toString(); +// } +// +// private int getPageCount(Integer totalCount, Integer pageSize) { +// if (pageSize > 0) { +// if (totalCount % pageSize == 0) +// return (int) (totalCount / pageSize); +// else +// return ((int) (totalCount / pageSize) + 1); +// } else +// return 0; +// } +// + @Override public String getDisease(String request) throws IEMRException { - logger.info("getDisease - Start"); - Disease disease = InputMapper.gson().fromJson(request, Disease.class); - Integer totalCount = diseaseRepository.getDiseaseCount(); - - CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Disease.class); - Root root = criteriaQuery.from(Disease.class); - List predicates = new ArrayList(); + logger.info("getDisease - Start"); + + Disease disease = InputMapper.gson().fromJson(request, Disease.class); + Integer totalCount = diseaseRepository.getDiseaseCount(); - criteriaQuery.select(root).where(predicates.toArray(new Predicate[] {})); - TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); - - if (disease.getPageNo() != null && disease.getPageSize() != null) - { - typedQuery.setMaxResults(disease.getPageSize()) - .setFirstResult((disease.getPageNo() - 1) * disease.getPageSize()); - } - - List list=typedQuery.getResultList(); - - Integer totalPages= getPageCount(totalCount, disease.getPageSize()); - - Map responseMap = new HashMap<>(); - - responseMap.put("DiseaseList", list); - responseMap.put("totalPages", totalPages); - - logger.info("getDisease - End"); - return responseMap.toString(); + CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); + CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Disease.class); + Root root = criteriaQuery.from(Disease.class); + + List predicates = new ArrayList<>(); + + // Exclude deleted diseases (assuming soft delete logic) + predicates.add(criteriaBuilder.equal(root.get("deleted"), false)); + + // Build query with predicates and sorting by newest first + criteriaQuery.select(root) + .where(predicates.toArray(new Predicate[0])) + .orderBy(criteriaBuilder.desc(root.get("diseaseSummaryId"))); + + logger.info("Executing disease fetch query with predicates: " + predicates); + + TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); + + // Apply pagination if provided + if (disease.getPageNo() != null && disease.getPageSize() != null) { + int offset = (disease.getPageNo() - 1) * disease.getPageSize(); + typedQuery.setFirstResult(offset); + typedQuery.setMaxResults(disease.getPageSize()); + } + + List list = typedQuery.getResultList(); + +// // Optional: log result IDs and names for debugging +// logger.info("Fetched diseases: " + list.stream() +// .map(d -> d.getDiseaseSummaryId() + ":" + d.getDiseaseName()) +// .collect(Collectors.joining(", "))); + + Integer totalPages = getPageCount(totalCount, disease.getPageSize()); + + Map responseMap = new HashMap<>(); + responseMap.put("DiseaseList", list); + responseMap.put("totalPages", totalPages); + + logger.info("getDisease - End"); + + return responseMap.toString(); // Consider using Gson or Jackson here for proper JSON } - + private int getPageCount(Integer totalCount, Integer pageSize) { if (pageSize > 0) { if (totalCount % pageSize == 0) From c13f9f8fc587634933401a93b9006f94e7706cb7 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 13:17:03 +0530 Subject: [PATCH 2/6] putting right id for sorting disease --- .../iemr/helpline104/service/disease/DiseaseServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index 414c9b8..0307736 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -159,7 +159,7 @@ public String getDisease(String request) throws IEMRException { // Build query with predicates and sorting by newest first criteriaQuery.select(root) .where(predicates.toArray(new Predicate[0])) - .orderBy(criteriaBuilder.desc(root.get("diseaseSummaryId"))); + .orderBy(criteriaBuilder.desc(root.get("diseasesummaryID"))); logger.info("Executing disease fetch query with predicates: " + predicates); From 22fd4be5c172cbbf0086fec088e18b1e63724771 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 13:18:24 +0530 Subject: [PATCH 3/6] removing commented code --- .../service/disease/DiseaseServiceImpl.java | 44 ------------------- 1 file changed, 44 deletions(-) diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index 0307736..bd8e1de 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -96,50 +96,6 @@ public String deleteDisease(String request) { return "activated successfully"; } -// @Override -// public String getDisease(String request) throws IEMRException { -// logger.info("getDisease - Start"); -// Disease disease = InputMapper.gson().fromJson(request, Disease.class); -// Integer totalCount = diseaseRepository.getDiseaseCount(); -// -// CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); -// CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Disease.class); -// Root root = criteriaQuery.from(Disease.class); -// List predicates = new ArrayList(); -// -// criteriaQuery.select(root).where(predicates.toArray(new Predicate[] {})); -// TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); -// -// if (disease.getPageNo() != null && disease.getPageSize() != null) -// { -// typedQuery.setMaxResults(disease.getPageSize()) -// .setFirstResult((disease.getPageNo() - 1) * disease.getPageSize()); -// } -// -// List list=typedQuery.getResultList(); -// -// Integer totalPages= getPageCount(totalCount, disease.getPageSize()); -// -// Map responseMap = new HashMap<>(); -// -// responseMap.put("DiseaseList", list); -// responseMap.put("totalPages", totalPages); -// -// logger.info("getDisease - End"); -// return responseMap.toString(); -// } -// -// private int getPageCount(Integer totalCount, Integer pageSize) { -// if (pageSize > 0) { -// if (totalCount % pageSize == 0) -// return (int) (totalCount / pageSize); -// else -// return ((int) (totalCount / pageSize) + 1); -// } else -// return 0; -// } -// - @Override public String getDisease(String request) throws IEMRException { logger.info("getDisease - Start"); From 5fa5a166c2393e129aa28b41b25025a94512b13b Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 13:19:42 +0530 Subject: [PATCH 4/6] removing unnecessary logs --- .../helpline104/service/disease/DiseaseServiceImpl.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index bd8e1de..474c468 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -130,11 +130,6 @@ public String getDisease(String request) throws IEMRException { List list = typedQuery.getResultList(); -// // Optional: log result IDs and names for debugging -// logger.info("Fetched diseases: " + list.stream() -// .map(d -> d.getDiseaseSummaryId() + ":" + d.getDiseaseName()) -// .collect(Collectors.joining(", "))); - Integer totalPages = getPageCount(totalCount, disease.getPageSize()); Map responseMap = new HashMap<>(); @@ -143,7 +138,7 @@ public String getDisease(String request) throws IEMRException { logger.info("getDisease - End"); - return responseMap.toString(); // Consider using Gson or Jackson here for proper JSON + return responseMap.toString(); } private int getPageCount(Integer totalCount, Integer pageSize) { From ee8a993316b21cd48bebeab32d17fc2ee5cd2d5e Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 13:25:40 +0530 Subject: [PATCH 5/6] addressing code rabbit issue --- .../iemr/helpline104/service/disease/DiseaseServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index 474c468..3ed8a88 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -117,7 +117,7 @@ public String getDisease(String request) throws IEMRException { .where(predicates.toArray(new Predicate[0])) .orderBy(criteriaBuilder.desc(root.get("diseasesummaryID"))); - logger.info("Executing disease fetch query with predicates: " + predicates); + logger.info("Executing disease fetch query with predicates: {}" , predicates); TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); From cf4c5556dfdac081571beff887d7cf0f0f08b2c1 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Sat, 24 May 2025 13:39:36 +0530 Subject: [PATCH 6/6] adding cod rabbit code suggestions for logging and null check --- .../repository/disease/DiseaseRepository.java | 4 ++-- .../service/disease/DiseaseServiceImpl.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iemr/helpline104/repository/disease/DiseaseRepository.java b/src/main/java/com/iemr/helpline104/repository/disease/DiseaseRepository.java index eea299e..a3d40d4 100644 --- a/src/main/java/com/iemr/helpline104/repository/disease/DiseaseRepository.java +++ b/src/main/java/com/iemr/helpline104/repository/disease/DiseaseRepository.java @@ -44,8 +44,8 @@ public interface DiseaseRepository extends CrudRepository { @Query("UPDATE Disease set deleted = :deleted where diseasesummaryID = :diseasesummaryID") public int deleteDisease(@Param("diseasesummaryID") Integer diseasesummaryID,@Param("deleted") Boolean deleted); - @Query("Select count(*) from Disease disease ") - public Integer getDiseaseCount(); + @Query("Select count(*) from Disease disease d where d.deleted = false") + public Integer getDiseaseCountExcludingDeleted(); @Transactional @Modifying diff --git a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java index 3ed8a88..dfd8a46 100644 --- a/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java +++ b/src/main/java/com/iemr/helpline104/service/disease/DiseaseServiceImpl.java @@ -101,7 +101,12 @@ public String getDisease(String request) throws IEMRException { logger.info("getDisease - Start"); Disease disease = InputMapper.gson().fromJson(request, Disease.class); - Integer totalCount = diseaseRepository.getDiseaseCount(); + + if (disease == null) { + throw new IEMRException("Invalid request: Unable to parse disease object"); + } + + Integer totalCount = diseaseRepository.getDiseaseCountExcludingDeleted(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Disease.class); @@ -123,6 +128,10 @@ public String getDisease(String request) throws IEMRException { // Apply pagination if provided if (disease.getPageNo() != null && disease.getPageSize() != null) { + if (disease.getPageNo()<=0 || disease.getPageSize()<=0) { + throw new IEMRException("Invalid pagination parameter, page no and page size must be positive"); + } + int offset = (disease.getPageNo() - 1) * disease.getPageSize(); typedQuery.setFirstResult(offset); typedQuery.setMaxResults(disease.getPageSize());