Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 2 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
<maven.test.skip>true</maven.test.skip>

</properties>

<dependencies>
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/iemr/mmu/data/anc/ANCCareDetails.java
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ public class ANCCareDetails {

public ANCCareDetails() {
super();
this.processed = "N";
// TODO Auto-generated constructor stub
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ public class ANCWomenVaccineDetail {

public ANCWomenVaccineDetail() {
super();
this.processed = "N";
// TODO Auto-generated constructor stub
}

Expand Down
77 changes: 41 additions & 36 deletions src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -37,43 +37,48 @@
@Repository
public interface ANCCareRepo extends CrudRepository<ANCCareDetails, Long> {

@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<Object[]> 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<Object[]> 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<ANCCareDetails> 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<ANCCareDetails> getANCCareDataForHRP(@Param("benRegID") Long benRegID);

@Transactional
@Modifying
@Query(" UPDATE ANCCareDetails set vanSerialNo = :ID WHERE ID = :ID")
int updateVanSerialNo(@Param("ID") Long ID);

Check warning on line 83 in src/main/java/com/iemr/mmu/repo/nurse/anc/ANCCareRepo.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=PSMRI_MMU-API&issues=AaDHy-5vgw3pb0a0mqYg&open=AaDHy-5vgw3pb0a0mqYg&pullRequest=193
}
56 changes: 30 additions & 26 deletions src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -35,29 +35,33 @@
import jakarta.transaction.Transactional;

@Repository
public interface ANCWomenVaccineRepo extends CrudRepository<ANCWomenVaccineDetail, Long>{

@Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, vaccineName, status, receivedDate, receivedFacilityName, visitCode "
+ "from ANCWomenVaccineDetail ba WHERE ba.beneficiaryRegID = :benRegID AND ba.visitCode = :visitCode")
public ArrayList<Object[]> 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<Object[]> 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<ANCWomenVaccineDetail, Long> {

@Query(" SELECT ID, beneficiaryRegID, benVisitID, providerServiceMapID, vaccineName, status, receivedDate, receivedFacilityName, visitCode "
+ "from ANCWomenVaccineDetail ba WHERE ba.beneficiaryRegID = :benRegID AND ba.visitCode = :visitCode")
public ArrayList<Object[]> 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<Object[]> 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);

Check warning on line 66 in src/main/java/com/iemr/mmu/repo/nurse/anc/ANCWomenVaccineRepo.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Rename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.

See more on https://sonarcloud.io/project/issues?id=PSMRI_MMU-API&issues=AaDHy-65gw3pb0a0mqYh&open=AaDHy-65gw3pb0a0mqYh&pullRequest=193
}
75 changes: 35 additions & 40 deletions src/main/java/com/iemr/mmu/service/anc/ANCNurseServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<ANCWomenVaccineDetail> ancWomenVaccineDetailList = getANCWomenVaccineDetail(wrapperAncImmunizationOBJ);
List<ANCWomenVaccineDetail> ancWomenVaccineDetailRSList = (List<ANCWomenVaccineDetail>) 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<ANCWomenVaccineDetail> ancWomenVaccineDetailList = getANCWomenVaccineDetail(wrapperAncImmunizationOBJ);
List<ANCWomenVaccineDetail> ancWomenVaccineDetailRSList = (List<ANCWomenVaccineDetail>) ancWomenVaccineRepo
.saveAll(ancWomenVaccineDetailList);
if (!ancWomenVaccineDetailRSList.isEmpty()) {
ancWomenVaccineRepo.updateVanSerialNo(ancWomenVaccineDetailRSList.get(0).getID());
successFlag = ancWomenVaccineDetailRSList.get(0).getID();
}
return successFlag;
}

private List<ANCWomenVaccineDetail> getANCWomenVaccineDetail(WrapperAncImmunization wrapperAncImmunizationOBJ)
throws ParseException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@

List<Object> currentRecordValues = new ArrayList<>();
for (String column : serverColumnsList) {
logger.info("Column="+column);
logger.debug("Column="+column);

Check warning on line 457 in src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Use the built-in formatting to construct this argument.

See more on https://sonarcloud.io/project/issues?id=PSMRI_MMU-API&issues=AaDHy-8Rgw3pb0a0mqYi&open=AaDHy-8Rgw3pb0a0mqYi&pullRequest=193

Check warning on line 457 in src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/GetDataFromVanAndSyncToDBImpl.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Format specifiers should be used instead of string concatenation.

See more on https://sonarcloud.io/project/issues?id=PSMRI_MMU-API&issues=AaDHy-8Rgw3pb0a0mqYj&open=AaDHy-8Rgw3pb0a0mqYj&pullRequest=193
Object value = cleanRecord.get(column.trim());
// CRITICAL FIX: Don't convert null to string
if (value == null) {
Expand Down
13 changes: 4 additions & 9 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading