diff --git a/pom.xml b/pom.xml index c3b57f1c..0b2dea62 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.common.identity identity-api - 3.6.2 + 3.8.0 war diff --git a/src/main/java/com/iemr/common/identity/controller/IdentityController.java b/src/main/java/com/iemr/common/identity/controller/IdentityController.java index 16995734..fc894761 100644 --- a/src/main/java/com/iemr/common/identity/controller/IdentityController.java +++ b/src/main/java/com/iemr/common/identity/controller/IdentityController.java @@ -30,10 +30,13 @@ import java.util.List; import java.util.Objects; +import com.iemr.common.identity.data.rmnch.RMNCHBeneficiaryDetailsRmnch; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -315,6 +318,17 @@ public String searchBeneficiaryByVillageIdAndLastModDate( } return response; } + + + @PostMapping("/getRmnchDataByBenRedID") + public ResponseEntity getRmnchDataByBenID(@RequestBody BigInteger object) { + try { + RMNCHBeneficiaryDetailsRmnch data = svc.getRmnchDataByBenID(object); + return ResponseEntity.ok(data); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } // search beneficiary by lastModDate and districtID @Operation(summary ="Get count of beneficiary by villageId and last modified date-time") @PostMapping(path = "/countBenByVillageIdAndLastModifiedDate") diff --git a/src/main/java/com/iemr/common/identity/controller/rmnch/RMNCHMobileAppController.java b/src/main/java/com/iemr/common/identity/controller/rmnch/RMNCHMobileAppController.java index 26b2694c..deada381 100644 --- a/src/main/java/com/iemr/common/identity/controller/rmnch/RMNCHMobileAppController.java +++ b/src/main/java/com/iemr/common/identity/controller/rmnch/RMNCHMobileAppController.java @@ -23,10 +23,13 @@ import java.sql.Timestamp; +import com.google.gson.Gson; +import com.google.gson.JsonObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; @@ -56,22 +59,68 @@ public class RMNCHMobileAppController { @PostMapping(value = "/syncDataToAmrit", consumes = "application/json", produces = "application/json") @Operation(summary = "Sync data to AMRIT for already regestered beneficiary with AMRIT beneficiary id ") - public String syncDataToAmrit(@RequestBody String requestOBJ) { + public String syncDataToAmrit(@RequestBody String requestOBJ,@RequestHeader(value = "jwttoken") String authorization) { OutputResponse response = new OutputResponse(); try { if (requestOBJ != null) { - String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ); + + String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ,authorization); + logger.info("syncDataToAmrit Response: {}", s); + response.setResponse(s); + + logger.info(" syncDataToAmrit Final API Response: {}", response.toString()); } else response.setError(5000, "Invalid/NULL request obj"); } catch (Exception e) { logger.error("Error in RMNCH mobile data sync : {} " , e.getMessage()); + e.printStackTrace(); response.setError(5000, "Error in RMNCH mobile data sync : " + e); } return response.toString(); } + @PostMapping(value = "/syncDataToAmritByHwc", consumes = "application/json", produces = "application/json") + @Operation(summary = "Sync data to AMRIT for already registered beneficiary with AMRIT beneficiary id") + public ResponseEntity syncDataToAmritHwc(@RequestBody String requestOBJ) { + + try { + if (requestOBJ == null || requestOBJ.isEmpty()) { + return ResponseEntity.badRequest().body("Invalid/NULL request obj"); + } + + JsonObject requestObj = new Gson().fromJson(requestOBJ, JsonObject.class); + + Long beneficiaryID = requestObj.has("benficieryid") && !requestObj.get("benficieryid").isJsonNull() + ? requestObj.get("benficieryid").getAsLong() + : null; + + Long beneficiaryRegID = requestObj.has("benRegId") && !requestObj.get("benRegId").isJsonNull() + ? requestObj.get("benRegId").getAsLong() + : null; + + if (beneficiaryID == null || beneficiaryRegID == null) { + return ResponseEntity.badRequest().body("beneficiaryID or beneficiaryRegID is missing"); + } + + String result = rmnchDataSyncService.saveBeneficiaryDetailsAfterRegistration( + beneficiaryID, + beneficiaryRegID, + requestOBJ + ); + + return ResponseEntity.ok(result); + + } catch (Exception e) { + logger.error("Error in RMNCH mobile data sync : {}", e.getMessage()); + return ResponseEntity.internalServerError() + .body("Error in RMNCH mobile data sync : " + e.getMessage()); + } + } + + + // @Deprecated @PostMapping(value = "/getBeneficiaryDataForVillage", consumes = "application/json", produces = "application/json") @Operation(summary = "Get beneficiary data for given village ") diff --git a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java index 4cab210c..1fb1b66d 100644 --- a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java +++ b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java @@ -550,4 +550,11 @@ public class RMNCHBeneficiaryDetailsRmnch { @Expose private Boolean isDeactivate; + @Expose + @Transient + private String abhaId; + + @Expose + @Transient + private String familyId; } diff --git a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHMBeneficiarydetail.java b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHMBeneficiarydetail.java index 397c5a66..44f15679 100644 --- a/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHMBeneficiarydetail.java +++ b/src/main/java/com/iemr/common/identity/data/rmnch/RMNCHMBeneficiarydetail.java @@ -214,4 +214,12 @@ public class RMNCHMBeneficiarydetail { @Expose @Transient private Integer ProviderServiceMapID; + + @Expose + @Transient + private String abhaId; + + @Expose + @Column(name = "familyid") + private String familyId; } \ No newline at end of file diff --git a/src/main/java/com/iemr/common/identity/dto/BeneficiariesDTO.java b/src/main/java/com/iemr/common/identity/dto/BeneficiariesDTO.java index d48cd9b5..0ecfb6b2 100644 --- a/src/main/java/com/iemr/common/identity/dto/BeneficiariesDTO.java +++ b/src/main/java/com/iemr/common/identity/dto/BeneficiariesDTO.java @@ -89,6 +89,8 @@ public int compareTo(BeneficiariesDTO ben) { private BigInteger religionId; private String religion; private String monthlyFamilyIncome; + private String reproductiveStatus; + private Integer reproductiveStatusId; // End Outreach // Start 1097 diff --git a/src/main/java/com/iemr/common/identity/dto/IdentityDTO.java b/src/main/java/com/iemr/common/identity/dto/IdentityDTO.java index 322e57fc..f6c000cb 100644 --- a/src/main/java/com/iemr/common/identity/dto/IdentityDTO.java +++ b/src/main/java/com/iemr/common/identity/dto/IdentityDTO.java @@ -125,6 +125,8 @@ public class IdentityDTO { private Integer incomeStatusId; private String incomeStatus; private String monthlyFamilyIncome; + private String reproductiveStatus; + private Integer reproductiveStatusId; @Expose private Integer vanID; diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java index 104fe902..27c7a445 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBenDetailsRepo.java @@ -22,7 +22,9 @@ package com.iemr.common.identity.repo.rmnch; import java.math.BigInteger; +import java.util.List; +import io.swagger.v3.oas.annotations.info.License; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; @@ -35,8 +37,16 @@ public interface RMNCHBenDetailsRepo extends CrudRepository getByBenRegID( + @Param("beneficiaryRegID") BigInteger beneficiaryRegID); } diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBeneficiaryDetailsRmnchRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBeneficiaryDetailsRmnchRepo.java index 405e0bc5..52916f31 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBeneficiaryDetailsRmnchRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBeneficiaryDetailsRmnchRepo.java @@ -22,6 +22,7 @@ package com.iemr.common.identity.repo.rmnch; import java.math.BigInteger; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -37,5 +38,5 @@ public RMNCHBeneficiaryDetailsRmnch getByIdAndVanID(@Param("vanSerialNo") BigInt @Param("vanID") int vanID); @Query(" SELECT t FROM RMNCHBeneficiaryDetailsRmnch t WHERE t.BenRegId =:benRegID ") - public RMNCHBeneficiaryDetailsRmnch getByRegID(@Param("benRegID") BigInteger benRegId); + public List getByRegID(@Param("benRegID") BigInteger benRegId); } diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBornBirthDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBornBirthDetailsRepo.java index 2af4d5b7..21488700 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBornBirthDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHBornBirthDetailsRepo.java @@ -22,6 +22,7 @@ package com.iemr.common.identity.repo.rmnch; import java.math.BigInteger; +import java.util.List; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; @@ -36,5 +37,5 @@ public interface RMNCHBornBirthDetailsRepo extends CrudRepository getByRegID(@Param("benRegID") BigInteger benRegID); } diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHCBACDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHCBACDetailsRepo.java index 49fb4697..95e452b4 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHCBACDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHCBACDetailsRepo.java @@ -37,7 +37,7 @@ public interface RMNCHCBACDetailsRepo extends CrudRepository getByRegID(@Param("benRegID") BigInteger benRegID); @Query(value = "select beneficiary_visit_code,visit_category from db_iemr.i_ben_flow_outreach where beneficiary_reg_id=:benRegID AND beneficiary_visit_code is not null AND visit_category is not null order by created_date desc limit 1", nativeQuery = true) public List getVisitDetailsbyRegID(@Param("benRegID") Long benRegID); diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java index 4aed3c87..76490cbd 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java @@ -28,11 +28,13 @@ import com.iemr.common.identity.data.rmnch.RMNCHHouseHoldDetails; +import java.util.List; + @Repository public interface RMNCHHouseHoldDetailsRepo extends CrudRepository { @Query(" SELECT t FROM RMNCHHouseHoldDetails t WHERE t.id = :vanSerialNo AND t.VanID = :vanID") public RMNCHHouseHoldDetails getByIdAndVanID(@Param("vanSerialNo") long vanSerialNo, @Param("vanID") int vanID); - @Query(" SELECT t FROM RMNCHHouseHoldDetails t WHERE t.houseoldId =:houseoldId ") - public RMNCHHouseHoldDetails getByHouseHoldID(@Param("houseoldId") long houseoldId); + @Query("SELECT t FROM RMNCHHouseHoldDetails t WHERE t.houseoldId = :houseoldId") + List getByHouseHoldID(@Param("houseoldId") long houseoldId); } diff --git a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHMBenRegIdMapRepo.java b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHMBenRegIdMapRepo.java index 2bf2a607..ae17ef7f 100644 --- a/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHMBenRegIdMapRepo.java +++ b/src/main/java/com/iemr/common/identity/repo/rmnch/RMNCHMBenRegIdMapRepo.java @@ -22,6 +22,7 @@ package com.iemr.common.identity.repo.rmnch; import java.math.BigInteger; +import java.util.List; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/com/iemr/common/identity/service/IdentityService.java b/src/main/java/com/iemr/common/identity/service/IdentityService.java index afb193e3..90e660b9 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -809,6 +809,16 @@ public List searchBeneficiaryByVillageIdAndLastModifyDate(List return beneficiaryList; } + + public RMNCHBeneficiaryDetailsRmnch getRmnchDataByBenID(BigInteger benID) { + RMNCHBeneficiaryDetailsRmnch rmnchBeneficiaryDetailsRmnch = new RMNCHBeneficiaryDetailsRmnch(); + + if(!rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID).isEmpty()){ + rmnchBeneficiaryDetailsRmnch = rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID).get(0); + } + return rmnchBeneficiaryDetailsRmnch; + } + public Long countBeneficiaryByVillageIdAndLastModifyDate(List villageIDs, Timestamp lastModifiedDate) { Long beneficiaryCount = 0L; try { @@ -884,21 +894,27 @@ private MBeneficiarymapping getBeneficiariesDTONew(Object[] benMapArr) { //benMapOBJ = mappingRepo.getMapping(getBigIntegerValueFromObject(benMapArr[9]), (Integer) benMapArr[8]); BigInteger benRegId = new BigInteger(benMapArr[5].toString()); - RMNCHBeneficiaryDetailsRmnch obj = rMNCHBeneficiaryDetailsRmnchRepo - .getByRegID(benRegId); - - if (obj != null) { - if (obj.getHouseoldId() != null) { - mapping.setHouseHoldID(obj.getHouseoldId()); - } - if (obj.getGuidelineId() != null) { - mapping.setGuideLineID(obj.getGuidelineId()); - } - if (obj.getRchid() != null) { - mapping.setRchID(obj.getRchid()); + if(!rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(benRegId).isEmpty()){ + RMNCHBeneficiaryDetailsRmnch obj = rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(benRegId).get(0); + + if (obj != null) { + if (obj.getHouseoldId() != null) { + mapping.setHouseHoldID(obj.getHouseoldId()); + } + if (obj.getGuidelineId() != null) { + mapping.setGuideLineID(obj.getGuidelineId()); + } + if (obj.getRchid() != null) { + mapping.setRchID(obj.getRchid()); + } } } + + + } return mapping; } @@ -1987,6 +2003,7 @@ public List getBeneficiariesDeatilsByBenRegIdList(List resultMap = new HashMap(); @@ -131,6 +137,8 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { // other tables data saving // ben details RMNCH extra fields details + logger.info("Request object of syncDataToAmrit: "+jsnOBJ); + BigInteger benRegID = null; @@ -147,12 +155,17 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { for (RMNCHBeneficiaryDetailsRmnch obj : benDetailsExtraList) { benRegID = rMNCHMBenRegIdMapRepo.getRegID(obj.getBenficieryid()); obj.setBenRegId(benRegID); - RMNCHBeneficiaryDetailsRmnch temp = rMNCHBeneficiaryDetailsRmnchRepo - .getByRegID(benRegID); - if (temp != null) { - obj.setBeneficiaryDetails_RmnchId(temp.getBeneficiaryDetails_RmnchId()); + if(!rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(benRegID).isEmpty()){ + RMNCHBeneficiaryDetailsRmnch temp = rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(benRegID).get(0); + if (temp != null) { + obj.setBeneficiaryDetails_RmnchId(temp.getBeneficiaryDetails_RmnchId()); + } } + + if (obj.getRelatedBeneficiaryIds() != null && obj.getRelatedBeneficiaryIds().length > 0) { StringBuffer sb = new StringBuffer(); @@ -165,22 +178,34 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } obj.setRelatedBeneficiaryIdsDB(sb.toString()); } - RMNCHMBeneficiarydetail rmnchmBeneficiarydetail = - rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()); - if (rmnchmBeneficiarydetail != null) { - rmnchmBeneficiarydetail.setFirstName(obj.getFirstName()); - rmnchmBeneficiarydetail.setLastName(obj.getLastName()); - rmnchmBeneficiarydetail.setFatherName(obj.getFatherName()); - rmnchmBeneficiarydetail.setMotherName(obj.getMotherName()); - rmnchmBeneficiarydetail.setDob(obj.getDob()); - rmnchmBeneficiarydetail.setSpousename(obj.getSpousename()); - rmnchmBeneficiarydetail.setGender(obj.getGender()); - rmnchmBeneficiarydetail.setGenderId(obj.getGenderId()); - rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); - rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); - benDetailsList.add(rmnchmBeneficiarydetail); + if(!rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()).isEmpty()){ + RMNCHMBeneficiarydetail rmnchmBeneficiarydetail = + rMNCHBenDetailsRepo.getByBenRegID(obj.getBenRegId()).get(0); + if (rmnchmBeneficiarydetail != null) { + rmnchmBeneficiarydetail.setFirstName(obj.getFirstName()); + rmnchmBeneficiarydetail.setLastName(obj.getLastName()); + rmnchmBeneficiarydetail.setFatherName(obj.getFatherName()); + rmnchmBeneficiarydetail.setMotherName(obj.getMotherName()); + rmnchmBeneficiarydetail.setDob(obj.getDob()); + rmnchmBeneficiarydetail.setSpousename(obj.getSpousename()); + rmnchmBeneficiarydetail.setGender(obj.getGender()); + rmnchmBeneficiarydetail.setGenderId(obj.getGenderId()); + rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); + rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); + if(obj.getFamilyId()!=null && !obj.getFamilyId().isEmpty()){ + rmnchmBeneficiarydetail.setFamilyId(obj.getFamilyId()); + + } + benDetailsList.add(rmnchmBeneficiarydetail); + if (obj.getAbhaId()!=null && !obj.getAbhaId().isEmpty()) { + mapHealthIDToBeneficiary(authorization,obj.getBenRegId().longValue(),obj.getBenficieryid().longValue(),obj.getAbhaId(),obj.getCreatedBy(),obj.getFirstName(),obj.getLastName(),obj.getDob().toString(),obj.getProviderServiceMapID()); + + } + + } } + } benDetailsExtraList = (ArrayList) rMNCHBeneficiaryDetailsRmnchRepo @@ -198,9 +223,12 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { for (RMNCHBornBirthDetails obj : bornBirthList) { benRegID = rMNCHMBenRegIdMapRepo.getRegID(obj.getBenficieryid()); obj.setBenRegId(benRegID); - RMNCHBornBirthDetails temp = rMNCHBornBirthDetailsRepo.getByRegID(benRegID); - if (temp != null) - obj.setBornBirthDeatilsId(temp.getBornBirthDeatilsId()); + if(!rMNCHBornBirthDetailsRepo.getByRegID(benRegID).isEmpty()){ + RMNCHBornBirthDetails temp = rMNCHBornBirthDetailsRepo.getByRegID(benRegID).get(0); + if (temp != null) + obj.setBornBirthDeatilsId(temp.getBornBirthDeatilsId()); + } + } bornBirthList = (ArrayList) rMNCHBornBirthDetailsRepo .saveAll(bornBirthList); @@ -221,9 +249,12 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { obj.setConfirmed_tb("Not checked"); obj.setConfirmed_ncd_diseases("Not checked"); obj.setDiagnosis_status("pending"); - RMNCHCBACdetails temp = rMNCHCBACDetailsRepo.getByRegID(benRegID); - if (temp != null) - obj.setCBACDetailsid(temp.getCBACDetailsid()); + if(!rMNCHCBACDetailsRepo.getByRegID(benRegID).isEmpty()){ + RMNCHCBACdetails temp = rMNCHCBACDetailsRepo.getByRegID(benRegID).get(0); + if (temp != null) + obj.setCBACDetailsid(temp.getCBACDetailsid()); + } + } cbacList = (ArrayList) rMNCHCBACDetailsRepo.saveAll(cbacList); @@ -237,10 +268,14 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { List houseHoldList = Arrays.asList(objArr3); for (RMNCHHouseHoldDetails obj : houseHoldList) { - RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(obj.getHouseoldId()); - if (temp != null) - obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); + if(!rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(obj.getHouseoldId()).isEmpty()){ + RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(obj.getHouseoldId()).get(0); + if (temp != null) + obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); + } + } houseHoldList = (ArrayList) rMNCHHouseHoldDetailsRepo .saveAll(houseHoldList); @@ -257,7 +292,11 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } catch ( Exception e) { - throw new Exception(e.getMessage()); + logger.error("Full Exception", e); + + throw new Exception(e); // ✅ original exception wrap karo + + } resultMap.put("beneficiaryDetails", beneficiaryDetailsIds); resultMap.put("bornBirthDeatils", bornBirthDeatilsIds); @@ -267,6 +306,243 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { return new Gson().toJson(resultMap); } + /** + * Splits a list into sub-lists (batches) of the given size. + * Last batch may contain fewer elements. + */ + private List> partitionList(List list, int batchSize) { + List> batches = new ArrayList<>(); + if (list == null || list.isEmpty()) { + return batches; + } + for (int i = 0; i < list.size(); i += batchSize) { + batches.add(new ArrayList<>(list.subList(i, Math.min(i + batchSize, list.size())))); + } + return batches; + } + + public String mapHealthIDToBeneficiary(String authorization, + Long benRegID, + Long beneficiaryID, + String abhaId, + String createdBy,String firstName,String lastName,String dob,Integer providerServiceMapId) { + try { + RestTemplate restTemplate = new RestTemplate(); + String formattedDob = dob; + + try { + if (dob != null && dob.contains(" ")) { + Timestamp timestamp = Timestamp.valueOf(dob); + formattedDob = new SimpleDateFormat("dd-MM-yyyy") + .format(timestamp); + } + } catch (Exception ex) { + logger.warn("DOB format conversion failed, sending original DOB : {}", dob); + } + logger.info("Authorization Token : {}", authorization); + + Map requestMap = new HashMap<>(); + + requestMap.put("beneficiaryRegID", benRegID); + requestMap.put("beneficiaryID", beneficiaryID); + requestMap.put("healthIdNumber", abhaId); + + requestMap.put("createdBy", createdBy); + requestMap.put("providerServiceMapId", providerServiceMapId); + requestMap.put("isNew", false); + + // ABHA Profile + Map abhaProfile = new HashMap<>(); + abhaProfile.put("ABHANumber", abhaId); + + List phrAddress = new ArrayList<>(); + phrAddress.add(abhaId + "@abdm"); + + abhaProfile.put("phrAddress", phrAddress); + abhaProfile.put("firstName", firstName); + abhaProfile.put("middleName", ""); + abhaProfile.put("lastName", lastName); + abhaProfile.put("dob", formattedDob); + + + requestMap.put("ABHAProfile", abhaProfile); + + String requestBody = new Gson().toJson(requestMap); + + String url = fhirUrl + + ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"); + + logger.info("Calling URL : {}", url); + logger.info("Request Body : {}", requestBody); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + headers.set("Jwttoken", authorization); + + HttpEntity entity = + new HttpEntity<>(requestBody, headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.POST, + entity, + String.class + ); + + logger.info("ABHA Mapping Response : {}", response.getBody()); + + return response.getBody(); + + } catch (HttpClientErrorException e) { + + logger.error("HTTP Error Status : {}", e.getStatusCode()); + logger.error("HTTP Error Response : {}", e.getResponseBodyAsString(), e); + + return "HTTP Error : " + e.getStatusCode(); + + } catch (Exception e) { + + logger.error("Error while saving Health ID Mapping", e); + + return "Error Save Health Id : " + e.getMessage(); + } + + } + + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public String saveBeneficiaryDetailsAfterRegistration( + Long beneficiaryID, + Long beneficiaryRegID, + String comingRequest) { + + logger.info("Method started. beneficiaryID={}, beneficiaryRegID={}", + beneficiaryID, beneficiaryRegID); + + try { + + JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); + logger.info("Request Parsed Successfully"); + + List list = + rMNCHBeneficiaryDetailsRmnchRepo.getByRegID( + BigInteger.valueOf(beneficiaryRegID)); + + logger.info("Records found for RegID {} : {}", beneficiaryRegID, list.size()); + + RMNCHBeneficiaryDetailsRmnch entity; + boolean isNew = list.isEmpty(); + + if (isNew) { + entity = new RMNCHBeneficiaryDetailsRmnch(); + logger.info("Creating new RMNCH record"); + } else { + entity = list.get(0); + logger.info("Updating existing RMNCH record. ID={}", + entity.getBeneficiaryDetails_RmnchId()); + } + + String createdBy = getString(requestObj, "createdBy", "system"); + + entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); + entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); + + if (isNew) { + entity.setCreatedBy(createdBy); + entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); + } else { + entity.setUpdatedBy(createdBy); + entity.setUpdatedDate(new Timestamp(System.currentTimeMillis())); + } + + entity.setVanID(getInt(requestObj, "vanID", null)); + entity.setParkingPlaceID(getInt(requestObj, "parkingPlaceID", null)); + entity.setProviderServiceMapID(getInt(requestObj, "providerServiceMapID", null)); + entity.setGenderId(getInt(requestObj, "genderID", null)); + + entity.setReproductiveStatusId( + getInt( + requestObj, + "reproductiveStatusId", + getInt(requestObj, "maritalStatusID", null) + ) + ); + + entity.setReproductiveStatus( + getString(requestObj, "reproductiveStatus", null) + ); + + entity.setFirstName(getString(requestObj, "firstName", null)); + entity.setLastName(getString(requestObj, "lastName", null)); + entity.setFatherName(getString(requestObj, "fatherName", null)); + entity.setSpousename(getString(requestObj, "spouseName", null)); + + entity.setMaritalstatusId( + getInt(requestObj, "maritalStatusID", null) + ); + + entity.setMaritalstatus( + getString(requestObj, "maritalStatusName", null) + ); + + // DOB + if (requestObj.has("dOB") + && !requestObj.get("dOB").isJsonNull() + && requestObj.get("dOB").getAsString().trim().length() > 0) { + + try { + entity.setDob( + Timestamp.valueOf( + requestObj.get("dOB") + .getAsString() + .replace("T", " ") + .replace("Z", "") + ) + ); + + logger.info("DOB set successfully"); + + } catch (Exception ex) { + logger.error("Invalid DOB format : {}", + requestObj.get("dOB").getAsString(), ex); + } + } + + logger.info("Before save"); + + RMNCHBeneficiaryDetailsRmnch saved = + rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + + logger.info("After save. Saved ID={}", + saved.getBeneficiaryDetails_RmnchId()); + + logger.info("Saved RMNCH for benRegID={}", beneficiaryRegID); + + return "Saved RMNCH for beneficiaryID: " + beneficiaryID; + + } catch (Exception e) { + + logger.error( + "Exception occurred in saveBeneficiaryDetailsAfterRegistration", + e + ); + + return "Error save beneficiary in rmnch : " + e.getMessage(); + } + } + private String getString(JsonObject obj, String key, String defaultVal) { + return (obj.has(key) && !obj.get(key).isJsonNull()) + ? obj.get(key).getAsString() + : defaultVal; + } + + private Integer getInt(JsonObject obj, String key, Integer defaultVal) { + return (obj.has(key) && !obj.get(key).isJsonNull()) + ? obj.get(key).getAsInt() + : defaultVal; + } @Override public String getBenData(String requestOBJ, String authorisation) throws Exception { String outputResponse = null; @@ -406,11 +682,20 @@ private String getMappingsForAddressIDs(List addressLi benID = rMNCHMBenRegIdMapRepo.getBenIdFromRegID(m.getBenRegId().longValue()); if (m.getBenRegId() != null) { - benDetailsRMNCHOBJ = rMNCHBeneficiaryDetailsRmnchRepo - .getByRegID(m.getBenRegId()); - benBotnBirthRMNCHROBJ = rMNCHBornBirthDetailsRepo.getByRegID(m.getBenRegId()); + if(!rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(m.getBenRegId()).isEmpty()){ + benDetailsRMNCHOBJ = rMNCHBeneficiaryDetailsRmnchRepo + .getByRegID(m.getBenRegId()).get(0); + } + if(!rMNCHBornBirthDetailsRepo.getByRegID(m.getBenRegId()).isEmpty()){ + benBotnBirthRMNCHROBJ = rMNCHBornBirthDetailsRepo.getByRegID(m.getBenRegId()).get(0); + + } + if(! rMNCHCBACDetailsRepo.getByRegID(m.getBenRegId()).isEmpty()){ + benCABCRMNCHROBJ = rMNCHCBACDetailsRepo.getByRegID(m.getBenRegId()).get(0); + + } - benCABCRMNCHROBJ = rMNCHCBACDetailsRepo.getByRegID(m.getBenRegId()); // 20-09-2021,start NcdTbHrpData res = getHRP_NCD_TB_SuspectedStatus(m.getBenRegId().longValue(), authorisation, benDetailsOBJ); @@ -431,8 +716,12 @@ private String getMappingsForAddressIDs(List addressLi // 20-09-2021,end if (benDetailsRMNCHOBJ != null && benDetailsRMNCHOBJ.getHouseoldId() != null) - benHouseHoldRMNCHROBJ = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()); + if(!rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()).isEmpty()){ + benHouseHoldRMNCHROBJ = rMNCHHouseHoldDetailsRepo + .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()).get(0); + } + } if (benDetailsRMNCHOBJ == null) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 12be1b44..79ba181f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -148,6 +148,7 @@ spring.jpa.properties.hibernate.show_sql=false door-to-door-page-size=2 get-HRP-Status=ANC/getHRPStatus getHealthID=healthID/getBenhealthID +mapHealthIDToBeneficiary=healthIDRecord/mapHealthIDToBeneficiary spring.main.allow-bean-definition-overriding=true spring.main.allow-circular-references=true