diff --git a/README.md b/README.md index b9176dec..bffbfc0a 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,10 @@ This microservice is developed using Java and the Spring Boot framework, with My Ensure that the following prerequisites are met before building the MMU service: -* JDK 1.8 +* JDK 17 * Maven * Redis -* Spring Boot v2 +* Spring Boot v3 * MySQL ### Installation @@ -47,7 +47,7 @@ To install the MMU module, please follow these steps: 4. Run the development server: - Start the Redis server. - Run the command `mvn spring-boot:run -DENV_VAR=local`. -5. Open your browser and access `http://localhost:8080/swagger-ui.html#!/` to view the Swagger API documentation. +5. Open your browser and access `http://localhost:8087/swagger-ui/index.html` to view the Swagger API documentation. ## Setting Up Commit Hooks diff --git a/package.json b/package.json index 78f95d7d..f8903554 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mmu-api", - "version": "1.0.0", + "version": "3.6.1", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "prepare": "husky", diff --git a/pom.xml b/pom.xml index f577db19..dd4e04a0 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,8 @@ reuseReports ${project.basedir}/../target/jacoco.exec java + true + diff --git a/src/main/java/com/iemr/mmu/data/anc/ANCCareDetails.java b/src/main/java/com/iemr/mmu/data/anc/ANCCareDetails.java index 36ba14ed..6733d848 100644 --- a/src/main/java/com/iemr/mmu/data/anc/ANCCareDetails.java +++ b/src/main/java/com/iemr/mmu/data/anc/ANCCareDetails.java @@ -185,6 +185,7 @@ public class ANCCareDetails { public ANCCareDetails() { super(); + this.processed = "N"; // TODO Auto-generated constructor stub } diff --git a/src/main/java/com/iemr/mmu/data/anc/ANCWomenVaccineDetail.java b/src/main/java/com/iemr/mmu/data/anc/ANCWomenVaccineDetail.java index c20e7f89..4bfefa01 100644 --- a/src/main/java/com/iemr/mmu/data/anc/ANCWomenVaccineDetail.java +++ b/src/main/java/com/iemr/mmu/data/anc/ANCWomenVaccineDetail.java @@ -130,6 +130,7 @@ public class ANCWomenVaccineDetail { public ANCWomenVaccineDetail() { super(); + this.processed = "N"; // TODO Auto-generated constructor stub } diff --git a/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java b/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java index f4632d66..46219dee 100644 --- a/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java +++ b/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see https://www.gnu.org/licenses/. -*/ + */ package com.iemr.mmu.repo.nurse.anc; import java.sql.Date; @@ -37,43 +37,48 @@ @Repository public interface ANCCareRepo extends CrudRepository { - @Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, visitCode, visitNo, comolaintType, duration, description, " - + " lastMenstrualPeriod_LMP, gestationalAgeOrPeriodofAmenorrhea_POA, trimesterNumber, expectedDateofDelivery, " - + "primiGravida, gravida_G, termDeliveries_T, pretermDeliveries_P, abortions_A, livebirths_L, bloodGroup, stillBirth " - + "from ANCCareDetails ba WHERE ba.beneficiaryRegID = :benRegID AND visitCode = :visitCode") - public ArrayList getANCCareDetails(@Param("benRegID") Long benRegID, @Param("visitCode") Long visitCode); + @Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, visitCode, visitNo, comolaintType, duration, description, " + + " lastMenstrualPeriod_LMP, gestationalAgeOrPeriodofAmenorrhea_POA, trimesterNumber, expectedDateofDelivery, " + + "primiGravida, gravida_G, termDeliveries_T, pretermDeliveries_P, abortions_A, livebirths_L, bloodGroup, stillBirth " + + "from ANCCareDetails ba WHERE ba.beneficiaryRegID = :benRegID AND visitCode = :visitCode") + public ArrayList getANCCareDetails(@Param("benRegID") Long benRegID, @Param("visitCode") Long visitCode); - @Query(" SELECT processed from ANCCareDetails where beneficiaryRegID=:benRegID AND visitCode = :visitCode") - public String getBenANCCareDetailsStatus(@Param("benRegID") Long benRegID, @Param("visitCode") Long visitCode); + @Query(" SELECT processed from ANCCareDetails where beneficiaryRegID=:benRegID AND visitCode = :visitCode") + public String getBenANCCareDetailsStatus(@Param("benRegID") Long benRegID, @Param("visitCode") Long visitCode); - @Transactional - @Modifying - @Query("update ANCCareDetails set comolaintType=:comolaintType, duration=:duration, description=:description, " - + "lastMenstrualPeriod_LMP=:lastMenstrualPeriod_LMP, " - + "gestationalAgeOrPeriodofAmenorrhea_POA=:gestationalAgeOrPeriodofAmenorrhea_POA," - + "trimesterNumber=:trimesterNumber, expectedDateofDelivery=:expectedDateofDelivery, primiGravida=:primiGravida, " - + "gravida_G=:gravida_G, termDeliveries_T=:termDeliveries_T, pretermDeliveries_P=:pretermDeliveries_P," - + "abortions_A=:abortions_A,livebirths_L=:livebirths_L, bloodGroup=:bloodGroup, modifiedBy=:modifiedBy, processed=:processed, " - + " stillBirth =:stillBirth " + " where visitCode=:visitCode AND beneficiaryRegID=:beneficiaryRegID") - public int updateANCCareDetails(@Param("comolaintType") String comolaintType, @Param("duration") String duration, - @Param("description") String description, @Param("lastMenstrualPeriod_LMP") Date lastMenstrualPeriod_LMP, - @Param("gestationalAgeOrPeriodofAmenorrhea_POA") Short gestationalAgeOrPeriodofAmenorrhea_POA, - @Param("trimesterNumber") Short trimesterNumber, - @Param("expectedDateofDelivery") Date expectedDateofDelivery, @Param("primiGravida") Boolean primiGravida, - @Param("gravida_G") Short gravida_G, @Param("termDeliveries_T") Short termDeliveries_T, - @Param("pretermDeliveries_P") Short pretermDeliveries_P, @Param("abortions_A") Short abortions_A, - @Param("livebirths_L") Short livebirths_L, @Param("bloodGroup") String bloodGroup, - @Param("modifiedBy") String modifiedBy, @Param("processed") String processed, - @Param("beneficiaryRegID") Long beneficiaryRegID, @Param("visitCode") Long visitCode, - @Param("stillBirth") Integer stillBirth); + @Transactional + @Modifying + @Query("update ANCCareDetails set comolaintType=:comolaintType, duration=:duration, description=:description, " + + "lastMenstrualPeriod_LMP=:lastMenstrualPeriod_LMP, " + + "gestationalAgeOrPeriodofAmenorrhea_POA=:gestationalAgeOrPeriodofAmenorrhea_POA," + + "trimesterNumber=:trimesterNumber, expectedDateofDelivery=:expectedDateofDelivery, primiGravida=:primiGravida, " + + "gravida_G=:gravida_G, termDeliveries_T=:termDeliveries_T, pretermDeliveries_P=:pretermDeliveries_P," + + "abortions_A=:abortions_A,livebirths_L=:livebirths_L, bloodGroup=:bloodGroup, modifiedBy=:modifiedBy, processed=:processed, " + + " stillBirth =:stillBirth " + " where visitCode=:visitCode AND beneficiaryRegID=:beneficiaryRegID") + public int updateANCCareDetails(@Param("comolaintType") String comolaintType, @Param("duration") String duration, + @Param("description") String description, @Param("lastMenstrualPeriod_LMP") Date lastMenstrualPeriod_LMP, + @Param("gestationalAgeOrPeriodofAmenorrhea_POA") Short gestationalAgeOrPeriodofAmenorrhea_POA, + @Param("trimesterNumber") Short trimesterNumber, + @Param("expectedDateofDelivery") Date expectedDateofDelivery, @Param("primiGravida") Boolean primiGravida, + @Param("gravida_G") Short gravida_G, @Param("termDeliveries_T") Short termDeliveries_T, + @Param("pretermDeliveries_P") Short pretermDeliveries_P, @Param("abortions_A") Short abortions_A, + @Param("livebirths_L") Short livebirths_L, @Param("bloodGroup") String bloodGroup, + @Param("modifiedBy") String modifiedBy, @Param("processed") String processed, + @Param("beneficiaryRegID") Long beneficiaryRegID, @Param("visitCode") Long visitCode, + @Param("stillBirth") Integer stillBirth); - @Query(nativeQuery = true, value = " SELECT t.bloodGroup from t_anccare t " - + " where t.beneficiaryRegID=:benRegID ORDER BY t.lastModDate DESC limit 1 ") - public String getBenANCCareDetailsStatus(@Param("benRegID") Long benRegID); + @Query(nativeQuery = true, value = " SELECT t.bloodGroup from t_anccare t " + + " where t.beneficiaryRegID=:benRegID ORDER BY t.lastModDate DESC limit 1 ") + public String getBenANCCareDetailsStatus(@Param("benRegID") Long benRegID); - @Query(" SELECT a FROM ANCCareDetails a WHERE a.beneficiaryRegID = :benRegID " - + " AND (a.gravida_G > 5 OR a.pretermDeliveries_P > 0 OR a.abortions_A > 0 OR a.stillBirth > 0 " - + " OR (a.bloodGroup = 'A-Ve' OR a.bloodGroup = 'B-Ve' OR a.bloodGroup = 'O-Ve' OR a.bloodGroup = 'AB-Ve'))" - + " AND a.deleted is false ") - public ArrayList getANCCareDataForHRP(@Param("benRegID") Long benRegID); + @Query(" SELECT a FROM ANCCareDetails a WHERE a.beneficiaryRegID = :benRegID " + + " AND (a.gravida_G > 5 OR a.pretermDeliveries_P > 0 OR a.abortions_A > 0 OR a.stillBirth > 0 " + + " OR (a.bloodGroup = 'A-Ve' OR a.bloodGroup = 'B-Ve' OR a.bloodGroup = 'O-Ve' OR a.bloodGroup = 'AB-Ve'))" + + " AND a.deleted is false ") + public ArrayList getANCCareDataForHRP(@Param("benRegID") Long benRegID); + + @Transactional + @Modifying + @Query(" UPDATE ANCCareDetails set vanSerialNo = :ID WHERE ID = :ID") + int updateVanSerialNo(@Param("ID") Long ID); } diff --git a/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java b/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java index 63dfa5e0..988925e4 100644 --- a/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java +++ b/src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see https://www.gnu.org/licenses/. -*/ + */ package com.iemr.mmu.repo.nurse.anc; import java.sql.Date; @@ -35,29 +35,33 @@ import jakarta.transaction.Transactional; @Repository -public interface ANCWomenVaccineRepo extends CrudRepository{ - - @Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, vaccineName, status, receivedDate, receivedFacilityName, visitCode " - + "from ANCWomenVaccineDetail ba WHERE ba.beneficiaryRegID = :benRegID AND ba.visitCode = :visitCode") - public ArrayList getANCWomenVaccineDetails(@Param("benRegID") Long benRegID, - @Param("visitCode") Long visitCode); - - @Query(" SELECT vaccineName, processed from ANCWomenVaccineDetail where beneficiaryRegID=:benRegID AND visitCode = :visitCode AND deleted = false") - public ArrayList getBenANCWomenVaccineStatus(@Param("benRegID") Long benRegID, - @Param("visitCode") Long visitCode); - - @Transactional - @Modifying - @Query("update ANCWomenVaccineDetail set status=:status, receivedDate=:receivedDate, receivedFacilityName=:receivedFacilityName, " - + "modifiedBy=:modifiedBy, processed=:processed " - + "where visitCode=:visitCode AND beneficiaryRegID=:beneficiaryRegID AND vaccineName=:vaccineName") - public int updateANCImmunizationDetails(@Param("status") String status, - @Param("receivedDate") Date receivedDate, - @Param("receivedFacilityName") String receivedFacilityName, - @Param("modifiedBy") String modifiedBy, - @Param("processed") String processed, - @Param("beneficiaryRegID") Long beneficiaryRegID, - @Param("visitCode") Long visitCode, - @Param("vaccineName") String vaccineName); - +public interface ANCWomenVaccineRepo extends CrudRepository { + + @Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, vaccineName, status, receivedDate, receivedFacilityName, visitCode " + + "from ANCWomenVaccineDetail ba WHERE ba.beneficiaryRegID = :benRegID AND ba.visitCode = :visitCode") + public ArrayList getANCWomenVaccineDetails(@Param("benRegID") Long benRegID, + @Param("visitCode") Long visitCode); + + @Query(" SELECT vaccineName, processed from ANCWomenVaccineDetail where beneficiaryRegID=:benRegID AND visitCode = :visitCode AND deleted = false") + public ArrayList getBenANCWomenVaccineStatus(@Param("benRegID") Long benRegID, + @Param("visitCode") Long visitCode); + + @Transactional + @Modifying + @Query("update ANCWomenVaccineDetail set status=:status, receivedDate=:receivedDate, receivedFacilityName=:receivedFacilityName, " + + "modifiedBy=:modifiedBy, processed=:processed " + + "where visitCode=:visitCode AND beneficiaryRegID=:beneficiaryRegID AND vaccineName=:vaccineName") + public int updateANCImmunizationDetails(@Param("status") String status, + @Param("receivedDate") Date receivedDate, + @Param("receivedFacilityName") String receivedFacilityName, + @Param("modifiedBy") String modifiedBy, + @Param("processed") String processed, + @Param("beneficiaryRegID") Long beneficiaryRegID, + @Param("visitCode") Long visitCode, + @Param("vaccineName") String vaccineName); + + @Transactional + @Modifying + @Query(" UPDATE ANCWomenVaccineDetail set vanSerialNo = :ID WHERE ID = :ID") + int updateVanSerialNo(@Param("ID") Long ID); } diff --git a/src/main/java/com/iemr/mmu/service/anc/ANCNurseServiceImpl.java b/src/main/java/com/iemr/mmu/service/anc/ANCNurseServiceImpl.java index 1abc07bd..8a31c636 100644 --- a/src/main/java/com/iemr/mmu/service/anc/ANCNurseServiceImpl.java +++ b/src/main/java/com/iemr/mmu/service/anc/ANCNurseServiceImpl.java @@ -141,50 +141,45 @@ public Integer saveBenInvestigationFromDoc(WrapperBenInvestigationANC wrapperBen } else { r = 1; } - } - return r; - } - - - @Override - public Long saveBenAncCareDetails - (ANCCareDetails ancCareDetailsOBJ) throws ParseException { - Long ancCareSuccessFlag = null; - if (ancCareDetailsOBJ.getLmpDate() != null && !ancCareDetailsOBJ.getLmpDate().isEmpty() - && ancCareDetailsOBJ.getLmpDate().length() >= 10) { - String lmpDate = ancCareDetailsOBJ.getLmpDate().split("T")[0]; - ancCareDetailsOBJ - .setLastMenstrualPeriod_LMP(new Date(new SimpleDateFormat("yyyy-MM-dd").parse(lmpDate).getTime())); - } - if (ancCareDetailsOBJ.getExpDelDt() != null && !ancCareDetailsOBJ.getExpDelDt().isEmpty() - && ancCareDetailsOBJ.getExpDelDt().length() >= 10) { - String edDate = ancCareDetailsOBJ.getExpDelDt().split("T")[0]; - ancCareDetailsOBJ - .setExpectedDateofDelivery(new Date(new SimpleDateFormat("yyyy-MM-dd").parse(edDate).getTime())); - } - ANCCareDetails ancCareDetailsRS = ancCareRepo.save(ancCareDetailsOBJ); - if (ancCareDetailsRS != null) { - ancCareDetailsRS.setVanSerialNo((ancCareDetailsRS.getID())); - ancCareSuccessFlag = ancCareDetailsRS.getID(); - } - return ancCareSuccessFlag; } + return r; + } - @Override - public Long saveAncImmunizationDetails - (WrapperAncImmunization wrapperAncImmunizationOBJ) throws ParseException { - Long successFlag = null; - List ancWomenVaccineDetailList = getANCWomenVaccineDetail(wrapperAncImmunizationOBJ); - List ancWomenVaccineDetailRSList = (List) ancWomenVaccineRepo - .saveAll(ancWomenVaccineDetailList); - if (!ancWomenVaccineDetailRSList.isEmpty()) { - ancWomenVaccineDetailRSList.get(0).setVanSerialNo(ancWomenVaccineDetailRSList.get(0).getID()); - successFlag = ancWomenVaccineDetailRSList.get(0).getID(); - } - return successFlag; + @Override + public Long saveBenAncCareDetails(ANCCareDetails ancCareDetailsOBJ) throws ParseException { + Long ancCareSuccessFlag = null; + if (ancCareDetailsOBJ.getLmpDate() != null && !ancCareDetailsOBJ.getLmpDate().isEmpty() + && ancCareDetailsOBJ.getLmpDate().length() >= 10) { + String lmpDate = ancCareDetailsOBJ.getLmpDate().split("T")[0]; + ancCareDetailsOBJ + .setLastMenstrualPeriod_LMP(new Date(new SimpleDateFormat("yyyy-MM-dd").parse(lmpDate).getTime())); + } + if (ancCareDetailsOBJ.getExpDelDt() != null && !ancCareDetailsOBJ.getExpDelDt().isEmpty() + && ancCareDetailsOBJ.getExpDelDt().length() >= 10) { + String edDate = ancCareDetailsOBJ.getExpDelDt().split("T")[0]; + ancCareDetailsOBJ + .setExpectedDateofDelivery(new Date(new SimpleDateFormat("yyyy-MM-dd").parse(edDate).getTime())); + } + ANCCareDetails ancCareDetailsRS = ancCareRepo.save(ancCareDetailsOBJ); + if (ancCareDetailsRS != null) { + ancCareRepo.updateVanSerialNo(ancCareDetailsRS.getID()); + ancCareSuccessFlag = ancCareDetailsRS.getID(); } + return ancCareSuccessFlag; + } - + @Override + public Long saveAncImmunizationDetails(WrapperAncImmunization wrapperAncImmunizationOBJ) throws ParseException { + Long successFlag = null; + List ancWomenVaccineDetailList = getANCWomenVaccineDetail(wrapperAncImmunizationOBJ); + List ancWomenVaccineDetailRSList = (List) ancWomenVaccineRepo + .saveAll(ancWomenVaccineDetailList); + if (!ancWomenVaccineDetailRSList.isEmpty()) { + ancWomenVaccineRepo.updateVanSerialNo(ancWomenVaccineDetailRSList.get(0).getID()); + successFlag = ancWomenVaccineDetailRSList.get(0).getID(); + } + return successFlag; + } private List getANCWomenVaccineDetail(WrapperAncImmunization wrapperAncImmunizationOBJ) throws ParseException { diff --git a/src/main/java/com/iemr/mmu/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/mmu/service/common/transaction/CommonNurseServiceImpl.java index a7efa9d4..652a61ee 100644 --- a/src/main/java/com/iemr/mmu/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/mmu/service/common/transaction/CommonNurseServiceImpl.java @@ -2963,7 +2963,7 @@ private double getQtyForOneDay(String form, String dose, String frequency) { } } else { if (frequency.equalsIgnoreCase("Single Dose") || frequency.equalsIgnoreCase("Stat Dose")|| - frequency.equalsIgnoreCase("Single Dose Before Food") || frequency.equalsIgnoreCase("Single Dose After Food")) { + frequency.equalsIgnoreCase("Single Dose Before Food") || frequency.equalsIgnoreCase("Single Dose After Food")) { if (form.equalsIgnoreCase("Tablet")) { if (dose.equalsIgnoreCase("Half Tab")) { qtyInOneDay = .5; diff --git a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java index 3205007c..c0e508cd 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java @@ -454,7 +454,7 @@ private boolean performGenericTableSync(SyncUploadDataDigester syncUploadDataDig List currentRecordValues = new ArrayList<>(); for (String column : serverColumnsList) { - logger.info("Column="+column); + logger.debug("Column="+column); Object value = cleanRecord.get(column.trim()); // CRITICAL FIX: Don't convert null to string if (value == null) { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index c2e28213..d1f926a2 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -56,13 +56,8 @@ logging.level.org.apache.tomcat.jdbc.pool=DEBUG # Connection timeout - time to establish connection spring.mvc.async.request-timeout=600000 -# HTTP client timeouts for RestTemplate -rest.connection.timeout=60000 -rest.read.timeout=600000 -rest.socket.timeout=600000 - -# ============= SERVER TIMEOUT ============= -# Tomcat connection timeout -server.connection-timeout=600000 -server.tomcat.connection-timeout=600000 +# ============= SERVER TIMEOUT (Undertow) ============= +# Undertow settings (the actual server in use - WildFly/JBoss) +server.undertow.no-request-timeout=600000 +server.undertow.max-http-post-size=-1