From 6bdd82251233e391a564a115d467c1e710b84bd7 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 14:08:49 +0530 Subject: [PATCH 01/30] add status of women --- .../rmnch/RMNCHMobileAppController.java | 20 +++++++ .../rmnch/RmnchDataSyncServiceImpl.java | 58 +++++++++++++++++++ 2 files changed, 78 insertions(+) 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..d9bec043 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 @@ -72,6 +72,26 @@ public String syncDataToAmrit(@RequestBody String requestOBJ) { } + @PostMapping(value = "/syncDataToAmritByHwc", consumes = "application/json", produces = "application/json") + @Operation(summary = "Sync data to AMRIT for already regestered beneficiary with AMRIT beneficiary id ") + public String syncDataToAmritHwc(@RequestBody String requestOBJ) { + OutputResponse response = new OutputResponse(); + try { + if (requestOBJ != null) { + String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ); + response.setResponse(s); + } else + response.setError(5000, "Invalid/NULL request obj"); + } catch (Exception e) { + logger.error("Error in RMNCH mobile data sync : {} " , e.getMessage()); + response.setError(5000, "Error in RMNCH mobile data sync : " + e); + } + return response.toString(); + + } + + + // @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/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index bd973193..5b7bb79d 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -267,6 +267,64 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { return new Gson().toJson(resultMap); } + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public void saveBeneficiaryDetailsAfterRegistration( + Long beneficiaryID, + Long beneficiaryRegID, + String comingRequest) { + try { + JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); + + RMNCHBeneficiaryDetailsRmnch beneficiaryDetailsRmnch = + rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + + if (beneficiaryDetailsRmnch == null) { + beneficiaryDetailsRmnch = new RMNCHBeneficiaryDetailsRmnch(); + } + + beneficiaryDetailsRmnch.setBenficieryid(BigInteger.valueOf(beneficiaryID)); + beneficiaryDetailsRmnch.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); + beneficiaryDetailsRmnch.setCreatedBy( + requestObj.get("createdBy").getAsString()); + beneficiaryDetailsRmnch.setVanID( + requestObj.get("vanID").getAsInt()); + beneficiaryDetailsRmnch.setParkingPlaceID( + requestObj.get("parkingPlaceID").getAsInt()); + beneficiaryDetailsRmnch.setProviderServiceMapID( + requestObj.get("providerServiceMapID").getAsInt()); + beneficiaryDetailsRmnch.setGenderId( + requestObj.get("genderID").getAsInt()); + beneficiaryDetailsRmnch.setReproductiveStatusId( + requestObj.get("maritalStatusID").getAsInt()); + + if (requestObj.get("maritalStatusName") != null + && !requestObj.get("maritalStatusName").isJsonNull()) { + beneficiaryDetailsRmnch.setReproductiveStatus( + requestObj.get("maritalStatusName").getAsString()); + } + + beneficiaryDetailsRmnch.setReproductiveStatusId( + requestObj.has("reproductiveStatusId") && !requestObj.get("reproductiveStatusId").isJsonNull() + ? requestObj.get("reproductiveStatusId").getAsInt() + : requestObj.get("maritalStatusID").getAsInt() + ); + + beneficiaryDetailsRmnch.setReproductiveStatus( + requestObj.has("reproductiveStatus") && !requestObj.get("reproductiveStatus").isJsonNull() + ? requestObj.get("reproductiveStatus").getAsString() + : null + ); + + rMNCHBeneficiaryDetailsRmnchRepo.save(beneficiaryDetailsRmnch); + logger.info("BeneficiaryDetailsRmnch saved for beneficiaryRegID: " + beneficiaryRegID); + + } catch (Exception e) { + logger.error("Error saving BeneficiaryDetailsRmnch: " + e.getMessage()); + throw e; + } + } + @Override public String getBenData(String requestOBJ, String authorisation) throws Exception { String outputResponse = null; From 58f3d5c2d10682a8a516a9d0a89a1c034da2fc43 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 15:44:44 +0530 Subject: [PATCH 02/30] add status of women --- .../identity/controller/rmnch/RMNCHMobileAppController.java | 2 +- .../common/identity/service/rmnch/RmnchDataSyncService.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 d9bec043..83153453 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 @@ -78,7 +78,7 @@ public String syncDataToAmritHwc(@RequestBody String requestOBJ) { OutputResponse response = new OutputResponse(); try { if (requestOBJ != null) { - String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ); + String s = rmnchDataSyncService.saveBeneficiaryDetailsAfterRegistration(requestOBJ); response.setResponse(s); } else response.setError(5000, "Invalid/NULL request obj"); diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java index 1d343d4b..e7f18d14 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java @@ -23,6 +23,7 @@ public interface RmnchDataSyncService { public String syncDataToAmrit(String requestOBJ) throws Exception; + public String saveBeneficiaryDetailsAfterRegistration(String requestOBJ) throws Exception; public String getBenData(String requestOBJ, String authorisation) throws Exception; public String getBenDataByAsha(String requestOBJ, String authorisation) throws Exception; } From c16275af681623c9296c87b7d31b9d164d830bcd Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 16:11:02 +0530 Subject: [PATCH 03/30] add status of women --- .../java/com/iemr/common/identity/dto/BeneficiariesDTO.java | 2 ++ .../com/iemr/common/identity/service/IdentityService.java | 5 +++++ 2 files changed, 7 insertions(+) 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/service/IdentityService.java b/src/main/java/com/iemr/common/identity/service/IdentityService.java index 08b9fbbe..72d7d7e0 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -1996,6 +1996,11 @@ private BeneficiariesDTO getBeneficiariesDTO(MBeneficiarymapping benMap) { bdto.setFaceEmbedding(floatList); } // bdto.setOtherFields(benMap.getMBeneficiarydetail().getOtherFields()); + if(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId())!=null ){ + bdto.setReproductiveStatus(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId()).getMenstrualStatus()); + bdto.setReproductiveStatusId(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId()).getReproductiveStatusId()); + } + bdto.setBeneficiaryFamilyTags( mapper.mapToMBeneficiaryfamilymappingWithBenFamilyDTOList(benMap.getMBeneficiaryfamilymappings())); bdto.setBeneficiaryIdentites( From a137f00b88ab822bf5a63d5230cceab08f870ec6 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 16:11:31 +0530 Subject: [PATCH 04/30] add status of women --- .../java/com/iemr/common/identity/service/IdentityService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 72d7d7e0..40f2d2e6 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -1997,7 +1997,7 @@ private BeneficiariesDTO getBeneficiariesDTO(MBeneficiarymapping benMap) { } // bdto.setOtherFields(benMap.getMBeneficiarydetail().getOtherFields()); if(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId())!=null ){ - bdto.setReproductiveStatus(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId()).getMenstrualStatus()); + bdto.setReproductiveStatus(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId()).getReproductiveStatus()); bdto.setReproductiveStatusId(rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benMap.getBenRegId()).getReproductiveStatusId()); } From e96a15247b2b8b10d0b679ad21a9bef87a758726 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 16:15:24 +0530 Subject: [PATCH 05/30] add status of women --- .../common/identity/service/rmnch/RmnchDataSyncService.java | 5 ++++- .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java index e7f18d14..845e79f9 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java @@ -23,7 +23,10 @@ public interface RmnchDataSyncService { public String syncDataToAmrit(String requestOBJ) throws Exception; - public String saveBeneficiaryDetailsAfterRegistration(String requestOBJ) throws Exception; + public String saveBeneficiaryDetailsAfterRegistration( + Long beneficiaryID, + Long beneficiaryRegID, + String comingRequest); public String getBenData(String requestOBJ, String authorisation) throws Exception; public String getBenDataByAsha(String requestOBJ, String authorisation) throws Exception; } diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 5b7bb79d..963b77ad 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -269,7 +269,7 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - public void saveBeneficiaryDetailsAfterRegistration( + public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, Long beneficiaryRegID, String comingRequest) { @@ -323,6 +323,7 @@ public void saveBeneficiaryDetailsAfterRegistration( logger.error("Error saving BeneficiaryDetailsRmnch: " + e.getMessage()); throw e; } + return "BeneficiaryDetailsRmnch saved for beneficiaryRegID:"+beneficiaryID; } @Override From ef5827529dd08a79e3a01024d8386445f65b693e Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 16:25:54 +0530 Subject: [PATCH 06/30] add status of women --- .../rmnch/RMNCHMobileAppController.java | 47 ++++++++++++++----- .../rmnch/RmnchDataSyncServiceImpl.java | 4 ++ 2 files changed, 39 insertions(+), 12 deletions(-) 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 83153453..6fa8df8f 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; @@ -73,21 +76,41 @@ public String syncDataToAmrit(@RequestBody String requestOBJ) { } @PostMapping(value = "/syncDataToAmritByHwc", consumes = "application/json", produces = "application/json") - @Operation(summary = "Sync data to AMRIT for already regestered beneficiary with AMRIT beneficiary id ") - public String syncDataToAmritHwc(@RequestBody String requestOBJ) { - OutputResponse response = new OutputResponse(); + @Operation(summary = "Sync data to AMRIT for already registered beneficiary with AMRIT beneficiary id") + public ResponseEntity syncDataToAmritHwc(@RequestBody String requestOBJ) { + try { - if (requestOBJ != null) { - String s = rmnchDataSyncService.saveBeneficiaryDetailsAfterRegistration(requestOBJ); - response.setResponse(s); - } else - response.setError(5000, "Invalid/NULL request obj"); + 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()); - response.setError(5000, "Error in RMNCH mobile data sync : " + e); + logger.error("Error in RMNCH mobile data sync : {}", e.getMessage()); + return ResponseEntity.internalServerError() + .body("Error in RMNCH mobile data sync : " + e.getMessage()); } - return response.toString(); - } diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 963b77ad..3348267e 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -32,6 +32,8 @@ import java.util.Map; import java.util.regex.Pattern; +import com.iemr.common.identity.utils.OutputResponse; +import io.swagger.v3.oas.annotations.Operation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -77,6 +79,8 @@ import com.iemr.common.identity.utils.exception.IEMRException; import com.iemr.common.identity.utils.http.HttpUtils; import com.iemr.common.identity.utils.mapper.InputMapper; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; @Service @Qualifier("rmnchServiceImpl") From 452b8093fd08fcd15d3fc2b53ab2139d2e31e9c8 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 18 Mar 2026 18:12:05 +0530 Subject: [PATCH 07/30] add status of women --- .../iemr/common/identity/dto/IdentityDTO.java | 2 + .../rmnch/RmnchDataSyncServiceImpl.java | 86 +++++++++++-------- 2 files changed, 53 insertions(+), 35 deletions(-) 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/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 3348267e..dc30d444 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -23,6 +23,7 @@ import java.math.BigInteger; import java.sql.Date; +import java.sql.Timestamp; import java.time.Period; import java.util.ArrayList; import java.util.Arrays; @@ -277,59 +278,74 @@ public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, Long beneficiaryRegID, String comingRequest) { + try { JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); - RMNCHBeneficiaryDetailsRmnch beneficiaryDetailsRmnch = + RMNCHBeneficiaryDetailsRmnch entity = rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); - if (beneficiaryDetailsRmnch == null) { - beneficiaryDetailsRmnch = new RMNCHBeneficiaryDetailsRmnch(); + if (entity == null) { + entity = new RMNCHBeneficiaryDetailsRmnch(); } - beneficiaryDetailsRmnch.setBenficieryid(BigInteger.valueOf(beneficiaryID)); - beneficiaryDetailsRmnch.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); - beneficiaryDetailsRmnch.setCreatedBy( - requestObj.get("createdBy").getAsString()); - beneficiaryDetailsRmnch.setVanID( - requestObj.get("vanID").getAsInt()); - beneficiaryDetailsRmnch.setParkingPlaceID( - requestObj.get("parkingPlaceID").getAsInt()); - beneficiaryDetailsRmnch.setProviderServiceMapID( - requestObj.get("providerServiceMapID").getAsInt()); - beneficiaryDetailsRmnch.setGenderId( - requestObj.get("genderID").getAsInt()); - beneficiaryDetailsRmnch.setReproductiveStatusId( - requestObj.get("maritalStatusID").getAsInt()); - - if (requestObj.get("maritalStatusName") != null - && !requestObj.get("maritalStatusName").isJsonNull()) { - beneficiaryDetailsRmnch.setReproductiveStatus( - requestObj.get("maritalStatusName").getAsString()); - } + String createdBy = getString(requestObj, "createdBy", "system"); + + entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); + entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); + entity.setCreatedBy(createdBy); + entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); - beneficiaryDetailsRmnch.setReproductiveStatusId( - requestObj.has("reproductiveStatusId") && !requestObj.get("reproductiveStatusId").isJsonNull() - ? requestObj.get("reproductiveStatusId").getAsInt() - : requestObj.get("maritalStatusID").getAsInt() + 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)) ); - beneficiaryDetailsRmnch.setReproductiveStatus( - requestObj.has("reproductiveStatus") && !requestObj.get("reproductiveStatus").isJsonNull() - ? requestObj.get("reproductiveStatus").getAsString() - : null + entity.setReproductiveStatus( + getString(requestObj, "reproductiveStatus", null) ); - rMNCHBeneficiaryDetailsRmnchRepo.save(beneficiaryDetailsRmnch); - logger.info("BeneficiaryDetailsRmnch saved for beneficiaryRegID: " + beneficiaryRegID); + 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 (String → Timestamp) + if (requestObj.has("dOB") && !requestObj.get("dOB").isJsonNull()) { + entity.setDob(Timestamp.valueOf( + requestObj.get("dOB").getAsString().replace("T", " ").replace("Z", "") + )); + } + + rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + + logger.info("Saved RMNCH for benRegID: " + beneficiaryRegID); } catch (Exception e) { - logger.error("Error saving BeneficiaryDetailsRmnch: " + e.getMessage()); + logger.error("Error: ", e); throw e; } - return "BeneficiaryDetailsRmnch saved for beneficiaryRegID:"+beneficiaryID; + + return "Saved RMNCH for beneficiaryID: " + beneficiaryID; + } + 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; From 0f4f37830c6ffbfa0745d5f52c79f0f847c0b586 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 24 Mar 2026 12:45:26 +0530 Subject: [PATCH 08/30] add status of women --- .../identity/controller/IdentityController.java | 16 ++++++++++++++++ .../common/identity/service/IdentityService.java | 6 ++++++ 2 files changed, 22 insertions(+) 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..74d9767b 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,19 @@ 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/service/IdentityService.java b/src/main/java/com/iemr/common/identity/service/IdentityService.java index 40f2d2e6..c216b634 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -799,6 +799,12 @@ public List searchBeneficiaryByVillageIdAndLastModifyDate(List return beneficiaryList; } + + public RMNCHBeneficiaryDetailsRmnch getRmnchDataByBenID(BigInteger benID) { + + return rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID); + } + public Long countBeneficiaryByVillageIdAndLastModifyDate(List villageIDs, Timestamp lastModifiedDate) { Long beneficiaryCount = 0L; try { From b46f36938e6f9cea550a8832083b0bee4e61bba6 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 24 Mar 2026 14:22:40 +0530 Subject: [PATCH 09/30] add status of women --- .../rmnch/RmnchDataSyncServiceImpl.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index dc30d444..660547d9 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -115,7 +115,6 @@ public class RmnchDataSyncServiceImpl implements RmnchDataSyncService { private RMNCHBenContactRepo rMNCHBenContactRepo; @Autowired private RMNCHMBenRegIdMapRepo rMNCHMBenRegIdMapRepo; - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Override public String syncDataToAmrit(String requestOBJ) throws Exception { @@ -273,6 +272,7 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, @@ -282,19 +282,30 @@ public String saveBeneficiaryDetailsAfterRegistration( try { JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); + // ✅ use find instead of get RMNCHBeneficiaryDetailsRmnch entity = rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + boolean isNew = false; + if (entity == null) { entity = new RMNCHBeneficiaryDetailsRmnch(); + isNew = true; } String createdBy = getString(requestObj, "createdBy", "system"); entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); - entity.setCreatedBy(createdBy); - entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); + + // ✅ Only set created fields for new record + 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)); @@ -317,7 +328,7 @@ public String saveBeneficiaryDetailsAfterRegistration( entity.setMaritalstatusId(getInt(requestObj, "maritalStatusID", null)); entity.setMaritalstatus(getString(requestObj, "maritalStatusName", null)); - // DOB (String → Timestamp) + // DOB if (requestObj.has("dOB") && !requestObj.get("dOB").isJsonNull()) { entity.setDob(Timestamp.valueOf( requestObj.get("dOB").getAsString().replace("T", " ").replace("Z", "") From 9fa18573308f58b1f2b282c1842d074ce7b81699 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 4 Jun 2026 18:40:39 +0530 Subject: [PATCH 10/30] merge with release-3.6.2 --- .../rmnch/RmnchDataSyncServiceImpl.java | 95 ++++++++++--------- 1 file changed, 50 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 600ccd5b..07904279 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -287,59 +287,64 @@ public String saveBeneficiaryDetailsAfterRegistration( JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); // ✅ use find instead of get - RMNCHBeneficiaryDetailsRmnch entity = - rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + if(!rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)).isEmpty()){ + RMNCHBeneficiaryDetailsRmnch entity = + rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)).get(0); - boolean isNew = false; + boolean isNew = false; - if (entity == null) { - entity = new RMNCHBeneficiaryDetailsRmnch(); - isNew = true; - } + if (entity == null) { + entity = new RMNCHBeneficiaryDetailsRmnch(); + isNew = true; + } - String createdBy = getString(requestObj, "createdBy", "system"); + String createdBy = getString(requestObj, "createdBy", "system"); - entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); - entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); + entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); + entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); - // ✅ Only set created fields for new record - if (isNew) { - entity.setCreatedBy(createdBy); - entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); - } else { - entity.setUpdatedBy(createdBy); - entity.setUpdatedDate(new Timestamp(System.currentTimeMillis())); - } + // ✅ Only set created fields for new record + 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()) { + entity.setDob(Timestamp.valueOf( + requestObj.get("dOB").getAsString().replace("T", " ").replace("Z", "") + )); + } + + rMNCHBeneficiaryDetailsRmnchRepo.save(entity); - 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()) { - entity.setDob(Timestamp.valueOf( - requestObj.get("dOB").getAsString().replace("T", " ").replace("Z", "") - )); } - rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + logger.info("Saved RMNCH for benRegID: " + beneficiaryRegID); From b95b68ecd37b875ce9b5b6dd7538d336ecf75bd1 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 4 Jun 2026 20:39:55 +0530 Subject: [PATCH 11/30] merge with release-3.6.2 --- .../com/iemr/common/identity/service/IdentityService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 a84febff..d0baad39 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -811,8 +811,12 @@ public List searchBeneficiaryByVillageIdAndLastModifyDate(List public RMNCHBeneficiaryDetailsRmnch getRmnchDataByBenID(BigInteger benID) { + RMNCHBeneficiaryDetailsRmnch rmnchBeneficiaryDetailsRmnch = new RMNCHBeneficiaryDetailsRmnch(); - return rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID); + if(!rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID).isEmpty()){ + rmnchBeneficiaryDetailsRmnch = rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(benID).get(0); + } + return rmnchBeneficiaryDetailsRmnch; } public Long countBeneficiaryByVillageIdAndLastModifyDate(List villageIDs, Timestamp lastModifiedDate) { From bc39ce176de3f13899ec63b3752662b7ac2a8af6 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Thu, 4 Jun 2026 20:53:25 +0530 Subject: [PATCH 12/30] merge with release-3.6.2 --- .../iemr/common/identity/service/IdentityService.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 d0baad39..90e660b9 100644 --- a/src/main/java/com/iemr/common/identity/service/IdentityService.java +++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java @@ -2003,6 +2003,7 @@ public List getBeneficiariesDeatilsByBenRegIdList(List Date: Fri, 12 Jun 2026 17:35:46 +0530 Subject: [PATCH 13/30] fix beneficiary save --- .../iemr/common/identity/controller/IdentityController.java | 4 +--- .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) 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 74d9767b..fc894761 100644 --- a/src/main/java/com/iemr/common/identity/controller/IdentityController.java +++ b/src/main/java/com/iemr/common/identity/controller/IdentityController.java @@ -321,9 +321,7 @@ public String searchBeneficiaryByVillageIdAndLastModDate( @PostMapping("/getRmnchDataByBenRedID") - public ResponseEntity getRmnchDataByBenID( - @RequestBody BigInteger object) { - + public ResponseEntity getRmnchDataByBenID(@RequestBody BigInteger object) { try { RMNCHBeneficiaryDetailsRmnch data = svc.getRmnchDataByBenID(object); return ResponseEntity.ok(data); diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 07904279..d845d396 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -350,7 +350,7 @@ public String saveBeneficiaryDetailsAfterRegistration( } catch (Exception e) { logger.error("Error: ", e); - throw e; + return "Error save beneficiary in rmnch :"+e.getMessage(); } return "Saved RMNCH for beneficiaryID: " + beneficiaryID; From 3162f663e49005262c04b96139f4e557cd97471f Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Fri, 12 Jun 2026 18:04:10 +0530 Subject: [PATCH 14/30] fix beneficiary save --- .../service/rmnch/RmnchDataSyncServiceImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index d845d396..f88b095b 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -288,14 +288,18 @@ public String saveBeneficiaryDetailsAfterRegistration( // ✅ use find instead of get if(!rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)).isEmpty()){ - RMNCHBeneficiaryDetailsRmnch entity = - rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)).get(0); + List list = + rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + + RMNCHBeneficiaryDetailsRmnch entity; boolean isNew = false; - if (entity == null) { + if (list.isEmpty()) { entity = new RMNCHBeneficiaryDetailsRmnch(); isNew = true; + } else { + entity = list.get(0); } String createdBy = getString(requestObj, "createdBy", "system"); @@ -340,8 +344,10 @@ public String saveBeneficiaryDetailsAfterRegistration( )); } - rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + RMNCHBeneficiaryDetailsRmnch saved = + rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + logger.info("Saved Entity Id : {}", saved.getBeneficiaryDetails_RmnchId()); } From c1e2e2d9c54b42f22fc9c6991c4ba0ec70aada2c Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Fri, 12 Jun 2026 18:15:16 +0530 Subject: [PATCH 15/30] fix beneficiary save --- .../common/identity/service/rmnch/RmnchDataSyncServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index f88b095b..cc8074da 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -277,7 +277,6 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, Long beneficiaryRegID, From 853ec9736cc495dbe7bb9430307d8eff7b4bd21e Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Sat, 13 Jun 2026 10:17:01 +0530 Subject: [PATCH 16/30] fix beneficiary save --- .../rmnch/RmnchDataSyncServiceImpl.java | 68 +++++++++++-------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index cc8074da..b3b760d9 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -276,19 +276,27 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } - + @Override 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)); - // ✅ use find instead of get - if(!rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)).isEmpty()){ - List list = - rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + logger.info("Records found for RegID {} : {}", beneficiaryRegID, list.size()); + + if (!list.isEmpty()) { + + logger.info("Entering save/update block"); RMNCHBeneficiaryDetailsRmnch entity; @@ -297,65 +305,71 @@ public String saveBeneficiaryDetailsAfterRegistration( if (list.isEmpty()) { entity = new RMNCHBeneficiaryDetailsRmnch(); isNew = true; + logger.info("Creating new entity"); } else { entity = list.get(0); + logger.info("Updating existing entity. ID={}", + entity.getBeneficiaryDetails_RmnchId()); } String createdBy = getString(requestObj, "createdBy", "system"); + logger.info("createdBy={}", createdBy); entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); - // ✅ Only set created fields for new record + logger.info("Basic details set"); + if (isNew) { entity.setCreatedBy(createdBy); entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); + logger.info("Created fields set"); } else { entity.setUpdatedBy(createdBy); entity.setUpdatedDate(new Timestamp(System.currentTimeMillis())); + logger.info("Updated fields set"); } 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) - ); + logger.info("Location details set"); 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 + logger.info("Personal details set. FirstName={}, LastName={}", + entity.getFirstName(), entity.getLastName()); + if (requestObj.has("dOB") && !requestObj.get("dOB").isJsonNull()) { + logger.info("DOB found in request : {}", + requestObj.get("dOB").getAsString()); + entity.setDob(Timestamp.valueOf( - requestObj.get("dOB").getAsString().replace("T", " ").replace("Z", "") + requestObj.get("dOB").getAsString() + .replace("T", " ") + .replace("Z", "") )); } + logger.info("Before save"); + RMNCHBeneficiaryDetailsRmnch saved = rMNCHBeneficiaryDetailsRmnchRepo.save(entity); - logger.info("Saved Entity Id : {}", saved.getBeneficiaryDetails_RmnchId()); - } - + logger.info("After save. Saved ID={}", + saved.getBeneficiaryDetails_RmnchId()); + } else { + logger.info("No record found for beneficiaryRegID={}", beneficiaryRegID); + } - logger.info("Saved RMNCH for benRegID: " + beneficiaryRegID); + logger.info("Method completed successfully"); } catch (Exception e) { - logger.error("Error: ", e); - return "Error save beneficiary in rmnch :"+e.getMessage(); + logger.error("Exception occurred in saveBeneficiaryDetailsAfterRegistration", e); + return "Error save beneficiary in rmnch :" + e.getMessage(); } return "Saved RMNCH for beneficiaryID: " + beneficiaryID; From 52caaa1ecfed73177a0d9d0e0d6061608910e58b Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Sat, 13 Jun 2026 10:25:29 +0530 Subject: [PATCH 17/30] fix beneficiary save --- .../rmnch/RmnchDataSyncServiceImpl.java | 153 ++++++++++-------- 1 file changed, 88 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index b3b760d9..3348775e 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -277,6 +277,7 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, Long beneficiaryRegID, @@ -286,93 +287,115 @@ public String saveBeneficiaryDetailsAfterRegistration( beneficiaryID, beneficiaryRegID); try { + JsonObject requestObj = new Gson().fromJson(comingRequest, JsonObject.class); logger.info("Request Parsed Successfully"); List list = - rMNCHBeneficiaryDetailsRmnchRepo.getByRegID(BigInteger.valueOf(beneficiaryRegID)); + rMNCHBeneficiaryDetailsRmnchRepo.getByRegID( + BigInteger.valueOf(beneficiaryRegID)); logger.info("Records found for RegID {} : {}", beneficiaryRegID, list.size()); - if (!list.isEmpty()) { - - logger.info("Entering save/update block"); + RMNCHBeneficiaryDetailsRmnch entity; + boolean isNew = list.isEmpty(); - RMNCHBeneficiaryDetailsRmnch entity; - - boolean isNew = false; - - if (list.isEmpty()) { - entity = new RMNCHBeneficiaryDetailsRmnch(); - isNew = true; - logger.info("Creating new entity"); - } else { - entity = list.get(0); - logger.info("Updating existing entity. ID={}", - entity.getBeneficiaryDetails_RmnchId()); - } + 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"); - logger.info("createdBy={}", createdBy); + String createdBy = getString(requestObj, "createdBy", "system"); - entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); - entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); + entity.setBenficieryid(BigInteger.valueOf(beneficiaryID)); + entity.setBenRegId(BigInteger.valueOf(beneficiaryRegID)); - logger.info("Basic details set"); + if (isNew) { + entity.setCreatedBy(createdBy); + entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); + } else { + entity.setUpdatedBy(createdBy); + entity.setUpdatedDate(new Timestamp(System.currentTimeMillis())); + } - if (isNew) { - entity.setCreatedBy(createdBy); - entity.setCreatedDate(new Timestamp(System.currentTimeMillis())); - logger.info("Created fields set"); - } else { - entity.setUpdatedBy(createdBy); - entity.setUpdatedDate(new Timestamp(System.currentTimeMillis())); - logger.info("Updated fields set"); + 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); } + } - entity.setVanID(getInt(requestObj, "vanID", null)); - entity.setParkingPlaceID(getInt(requestObj, "parkingPlaceID", null)); - entity.setProviderServiceMapID(getInt(requestObj, "providerServiceMapID", null)); - - logger.info("Location details set"); - - entity.setFirstName(getString(requestObj, "firstName", null)); - entity.setLastName(getString(requestObj, "lastName", null)); - - logger.info("Personal details set. FirstName={}, LastName={}", - entity.getFirstName(), entity.getLastName()); - - if (requestObj.has("dOB") && !requestObj.get("dOB").isJsonNull()) { - logger.info("DOB found in request : {}", - requestObj.get("dOB").getAsString()); + logger.info("Before save"); - entity.setDob(Timestamp.valueOf( - requestObj.get("dOB").getAsString() - .replace("T", " ") - .replace("Z", "") - )); - } + RMNCHBeneficiaryDetailsRmnch saved = + rMNCHBeneficiaryDetailsRmnchRepo.save(entity); - logger.info("Before save"); + logger.info("After save. Saved ID={}", + saved.getBeneficiaryDetails_RmnchId()); - RMNCHBeneficiaryDetailsRmnch saved = - rMNCHBeneficiaryDetailsRmnchRepo.save(entity); + logger.info("Saved RMNCH for benRegID={}", beneficiaryRegID); - logger.info("After save. Saved ID={}", - saved.getBeneficiaryDetails_RmnchId()); + return "Saved RMNCH for beneficiaryID: " + beneficiaryID; - } else { - logger.info("No record found for beneficiaryRegID={}", beneficiaryRegID); - } + } catch (Exception e) { - logger.info("Method completed successfully"); + logger.error( + "Exception occurred in saveBeneficiaryDetailsAfterRegistration", + e + ); - } catch (Exception e) { - logger.error("Exception occurred in saveBeneficiaryDetailsAfterRegistration", e); - return "Error save beneficiary in rmnch :" + e.getMessage(); + return "Error save beneficiary in rmnch : " + e.getMessage(); } - - return "Saved RMNCH for beneficiaryID: " + beneficiaryID; } private String getString(JsonObject obj, String key, String defaultVal) { return (obj.has(key) && !obj.get(key).isJsonNull()) From d75ed23bbc180fbd3ca56fcf06c6d41f125b62ce Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 16 Jun 2026 16:23:37 +0530 Subject: [PATCH 18/30] fix beneficiary save --- .../repo/rmnch/RMNCHBenDetailsRepo.java | 18 +++++++--- .../rmnch/RmnchDataSyncServiceImpl.java | 34 +++++++++++-------- 2 files changed, 34 insertions(+), 18 deletions(-) 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/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 3348775e..ca0807fc 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -172,22 +172,25 @@ 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()); + benDetailsList.add(rmnchmBeneficiarydetail); + } } + } benDetailsExtraList = (ArrayList) rMNCHBeneficiaryDetailsRmnchRepo @@ -264,8 +267,11 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { } catch ( Exception e) { + logger.error("Full Exception", e); + throw new Exception(e); // ✅ original exception wrap karo + } resultMap.put("beneficiaryDetails", beneficiaryDetailsIds); resultMap.put("bornBirthDeatils", bornBirthDeatilsIds); From 028e1b771466e9855c4ddd812c4495a525edd6a8 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 16 Jun 2026 16:33:02 +0530 Subject: [PATCH 19/30] fix beneficiary save --- .../identity/repo/rmnch/RMNCHHouseHoldDetailsRepo.java | 6 ++++-- .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index ca0807fc..708bb918 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -248,7 +248,7 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { for (RMNCHHouseHoldDetails obj : houseHoldList) { RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(obj.getHouseoldId()); + .getByHouseHoldID(obj.getHouseoldId()).get(0); if (temp != null) obj.setHouseHoldDetailsId(temp.getHouseHoldDetailsId()); } @@ -583,7 +583,7 @@ private String getMappingsForAddressIDs(List addressLi // 20-09-2021,end if (benDetailsRMNCHOBJ != null && benDetailsRMNCHOBJ.getHouseoldId() != null) benHouseHoldRMNCHROBJ = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()); + .getByHouseHoldID(benDetailsRMNCHOBJ.getHouseoldId()).get(0); } if (benDetailsRMNCHOBJ == null) From 6258dae8119c3db8bff1ce4c51a32971a7c1a06b Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Tue, 16 Jun 2026 16:43:30 +0530 Subject: [PATCH 20/30] fix beneficiary save --- .../service/rmnch/RmnchDataSyncServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 708bb918..ca85397f 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -247,10 +247,14 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { List houseHoldList = Arrays.asList(objArr3); for (RMNCHHouseHoldDetails obj : houseHoldList) { - RMNCHHouseHoldDetails temp = rMNCHHouseHoldDetailsRepo - .getByHouseHoldID(obj.getHouseoldId()).get(0); - 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); From ee770954722ab31b6ee27378f941ac1a6df77f05 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 08:22:46 +0530 Subject: [PATCH 21/30] change release version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3b57f1c..9eda8258 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.iemr.common.identity identity-api - 3.6.2 + 3.9.0 war From 8d83a9af95d3280c080d3060bdadcaf94aedae34 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 14:03:20 +0530 Subject: [PATCH 22/30] save abha id in health maping with beneficiaryID --- .../rmnch/RMNCHMobileAppController.java | 4 +- .../service/rmnch/RmnchDataSyncService.java | 2 +- .../rmnch/RmnchDataSyncServiceImpl.java | 67 +++++++++++++++++-- src/main/resources/application.properties | 1 + 4 files changed, 66 insertions(+), 8 deletions(-) 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 cbb91cce..5552e90f 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 @@ -59,11 +59,11 @@ 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 = "Authorization") String authorization) { OutputResponse response = new OutputResponse(); try { if (requestOBJ != null) { - String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ); + String s = rmnchDataSyncService.syncDataToAmrit(requestOBJ,authorization); response.setResponse(s); } else response.setError(5000, "Invalid/NULL request obj"); diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java index 845e79f9..7bbcb316 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncService.java @@ -22,7 +22,7 @@ package com.iemr.common.identity.service.rmnch; public interface RmnchDataSyncService { - public String syncDataToAmrit(String requestOBJ) throws Exception; + public String syncDataToAmrit(String requestOBJ, String authorization) throws Exception; public String saveBeneficiaryDetailsAfterRegistration( Long beneficiaryID, Long beneficiaryRegID, diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index a62450ed..d2284ee5 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -33,8 +33,6 @@ import java.util.Map; import java.util.regex.Pattern; -import com.iemr.common.identity.utils.OutputResponse; -import io.swagger.v3.oas.annotations.Operation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -78,8 +76,6 @@ import com.iemr.common.identity.utils.exception.IEMRException; import com.iemr.common.identity.utils.http.HttpUtils; import com.iemr.common.identity.utils.mapper.InputMapper; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; @Service @Qualifier("rmnchServiceImpl") @@ -115,7 +111,8 @@ public class RmnchDataSyncServiceImpl implements RmnchDataSyncService { private RMNCHMBenRegIdMapRepo rMNCHMBenRegIdMapRepo; @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Override - public String syncDataToAmrit(String requestOBJ) throws Exception { + public String syncDataToAmrit(String requestOBJ, String authorization) throws Exception { + Map resultMap = new HashMap(); @@ -133,6 +130,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; @@ -187,6 +186,14 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); benDetailsList.add(rmnchmBeneficiarydetail); + if (jsnOBJ.has("abhaId") && !jsnOBJ.get("abhaId").isJsonNull()) { + String abhaId = jsnOBJ.get("abhaId").getAsString(); + if(!abhaId.isEmpty() || abhaId!=null){ + mapHealthIDToBeneficiary(authorization,rmnchmBeneficiarydetail.getBenRegId().longValue(),rmnchmBeneficiarydetail.getBenficieryid().longValue(),abhaId,rmnchmBeneficiarydetail.getCreatedBy(),rmnchmBeneficiarydetail.getFirstName(),rmnchmBeneficiarydetail.getLastName(),rmnchmBeneficiarydetail.getDob().toString(),rmnchmBeneficiarydetail.getProviderServiceMapID()); + + } + } + } } @@ -285,6 +292,56 @@ public String syncDataToAmrit(String requestOBJ) throws Exception { return new Gson().toJson(resultMap); } + public String mapHealthIDToBeneficiary(String authorization, + Long benRegID, + Long beneficiaryID, + String abhaId, + String createdBy,String firstName,String lastName,String dob,Integer providerServiceMapId) { + try { + 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", dob); + + requestMap.put("ABHAProfile", abhaProfile); + + HttpUtils utils = new HttpUtils(); + + HashMap header = new HashMap<>(); + header.put("Authorization", authorization); + + String responseStr = utils.post( + ConfigProperties.getPropertyByName("fhir-url") + + ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"), + new Gson().toJson(requestMap), + header); + logger.info("Save abha id in health mapping:"+responseStr.toString()); + return responseStr; + }catch (Exception e){ + logger.info("Error Save Health Id"); + return "Error Save Health Id: "+e.getMessage(); + } + + } + @Override @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 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 From 3b7dd5200937faa4a7bf965933dcf0b7d5c6e111 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 16:27:15 +0530 Subject: [PATCH 23/30] abha id add in entity class --- .../identity/data/rmnch/RMNCHBeneficiaryDetailsRmnch.java | 3 +++ .../identity/data/rmnch/RMNCHMBeneficiarydetail.java | 4 ++++ .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 7 ++----- 3 files changed, 9 insertions(+), 5 deletions(-) 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..e403b3d7 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,7 @@ public class RMNCHBeneficiaryDetailsRmnch { @Expose private Boolean isDeactivate; + @Expose + @Transient + private String abhaId; } 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..d9221675 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,8 @@ public class RMNCHMBeneficiarydetail { @Expose @Transient private Integer ProviderServiceMapID; + + @Expose + @Transient + private String abhaId; } \ No newline at end of file diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index d2284ee5..27ca8739 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -186,12 +186,9 @@ public String syncDataToAmrit(String requestOBJ, String authorization) throws Ex rmnchmBeneficiarydetail.setMaritalstatus(obj.getMaritalstatus()); rmnchmBeneficiarydetail.setMaritalstatusId(obj.getMaritalstatusId()); benDetailsList.add(rmnchmBeneficiarydetail); - if (jsnOBJ.has("abhaId") && !jsnOBJ.get("abhaId").isJsonNull()) { - String abhaId = jsnOBJ.get("abhaId").getAsString(); - if(!abhaId.isEmpty() || abhaId!=null){ - mapHealthIDToBeneficiary(authorization,rmnchmBeneficiarydetail.getBenRegId().longValue(),rmnchmBeneficiarydetail.getBenficieryid().longValue(),abhaId,rmnchmBeneficiarydetail.getCreatedBy(),rmnchmBeneficiarydetail.getFirstName(),rmnchmBeneficiarydetail.getLastName(),rmnchmBeneficiarydetail.getDob().toString(),rmnchmBeneficiarydetail.getProviderServiceMapID()); + 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()); - } } } From 1d8dbe75ce20d33ac2f192e21cb1c399cbd35d9d Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 16:37:16 +0530 Subject: [PATCH 24/30] abha id add in entity class --- .../common/identity/service/rmnch/RmnchDataSyncServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 27ca8739..962c31c8 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -333,7 +333,7 @@ public String mapHealthIDToBeneficiary(String authorization, logger.info("Save abha id in health mapping:"+responseStr.toString()); return responseStr; }catch (Exception e){ - logger.info("Error Save Health Id"); + logger.info("Error Save Health Id"+e); return "Error Save Health Id: "+e.getMessage(); } From 1801efed23e349b400fe1da51cfafb42c565764c Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 17:31:48 +0530 Subject: [PATCH 25/30] abha id add in entity class --- .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 962c31c8..d5dd5a1b 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -109,6 +109,9 @@ public class RmnchDataSyncServiceImpl implements RmnchDataSyncService { private RMNCHBenContactRepo rMNCHBenContactRepo; @Autowired private RMNCHMBenRegIdMapRepo rMNCHMBenRegIdMapRepo; + + @Value("${fhir-url}") + private String fhirUrl; @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Override public String syncDataToAmrit(String requestOBJ, String authorization) throws Exception { @@ -326,8 +329,7 @@ public String mapHealthIDToBeneficiary(String authorization, header.put("Authorization", authorization); String responseStr = utils.post( - ConfigProperties.getPropertyByName("fhir-url") - + ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"), + fhirUrl+ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"), new Gson().toJson(requestMap), header); logger.info("Save abha id in health mapping:"+responseStr.toString()); From 594ab594c19898d10ea6c75e8a612e99d027de6a Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 17:43:32 +0530 Subject: [PATCH 26/30] abha id add in entity class --- .../identity/controller/rmnch/RMNCHMobileAppController.java | 2 +- .../common/identity/service/rmnch/RmnchDataSyncServiceImpl.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 5552e90f..f8a8957f 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 @@ -59,7 +59,7 @@ 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,@RequestHeader(value = "Authorization") String authorization) { + public String syncDataToAmrit(@RequestBody String requestOBJ,@RequestHeader(value = "jwttoken") String authorization) { OutputResponse response = new OutputResponse(); try { if (requestOBJ != null) { diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index d5dd5a1b..dffbf5df 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -328,6 +328,7 @@ public String mapHealthIDToBeneficiary(String authorization, HashMap header = new HashMap<>(); header.put("Authorization", authorization); + String responseStr = utils.post( fhirUrl+ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"), new Gson().toJson(requestMap), From ec021c4a27c03aa0406a141264a168af92c85b5e Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 17:48:36 +0530 Subject: [PATCH 27/30] abha id add in entity class --- .../common/identity/service/rmnch/RmnchDataSyncServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index dffbf5df..c7f9e795 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -299,6 +299,7 @@ public String mapHealthIDToBeneficiary(String authorization, String createdBy,String firstName,String lastName,String dob,Integer providerServiceMapId) { try { Map requestMap = new HashMap<>(); + logger.info("authorization:"+authorization); requestMap.put("beneficiaryRegID", benRegID); requestMap.put("beneficiaryID", beneficiaryID); From 5a83005d1895e31443170e7d47adffd24cfef1b3 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 17:59:41 +0530 Subject: [PATCH 28/30] abha id add in entity class --- .../rmnch/RmnchDataSyncServiceImpl.java | 61 +++++++++++++++---- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index c7f9e795..f73a2d98 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -76,6 +77,8 @@ import com.iemr.common.identity.utils.exception.IEMRException; import com.iemr.common.identity.utils.http.HttpUtils; import com.iemr.common.identity.utils.mapper.InputMapper; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; @Service @Qualifier("rmnchServiceImpl") @@ -298,8 +301,11 @@ public String mapHealthIDToBeneficiary(String authorization, String abhaId, String createdBy,String firstName,String lastName,String dob,Integer providerServiceMapId) { try { + RestTemplate restTemplate = new RestTemplate(); + + logger.info("Authorization Token : {}", authorization); + Map requestMap = new HashMap<>(); - logger.info("authorization:"+authorization); requestMap.put("beneficiaryRegID", benRegID); requestMap.put("beneficiaryID", beneficiaryID); @@ -324,21 +330,50 @@ public String mapHealthIDToBeneficiary(String authorization, requestMap.put("ABHAProfile", abhaProfile); - HttpUtils utils = new HttpUtils(); + 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); + + // Agar token me Bearer nahi aa raha hai + if (authorization != null && !authorization.startsWith("Bearer ")) { + authorization = "Bearer " + authorization; + } + + headers.set("Authorization", 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(); - HashMap header = new HashMap<>(); - header.put("Authorization", authorization); + } catch (Exception e) { + logger.error("Error while saving Health ID Mapping", e); - String responseStr = utils.post( - fhirUrl+ConfigProperties.getPropertyByName("mapHealthIDToBeneficiary"), - new Gson().toJson(requestMap), - header); - logger.info("Save abha id in health mapping:"+responseStr.toString()); - return responseStr; - }catch (Exception e){ - logger.info("Error Save Health Id"+e); - return "Error Save Health Id: "+e.getMessage(); + return "Error Save Health Id : " + e.getMessage(); } } From 32db7e19a23ca42fc02d06830a8ab14d20a84452 Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 18:18:37 +0530 Subject: [PATCH 29/30] abha id add in entity class --- .../identity/service/rmnch/RmnchDataSyncServiceImpl.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index f73a2d98..131d55f4 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -340,13 +340,9 @@ public String mapHealthIDToBeneficiary(String authorization, HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - // Agar token me Bearer nahi aa raha hai - if (authorization != null && !authorization.startsWith("Bearer ")) { - authorization = "Bearer " + authorization; - } - headers.set("Authorization", authorization); + headers.set("Jwttoken", authorization); HttpEntity entity = new HttpEntity<>(requestBody, headers); From a90fe132d315f1822b9fac9e9affcb5b05acfc0c Mon Sep 17 00:00:00 2001 From: Saurav Mishra Date: Wed, 17 Jun 2026 18:32:16 +0530 Subject: [PATCH 30/30] abha id add in entity class --- .../service/rmnch/RmnchDataSyncServiceImpl.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java index 131d55f4..e11aba38 100644 --- a/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java +++ b/src/main/java/com/iemr/common/identity/service/rmnch/RmnchDataSyncServiceImpl.java @@ -24,6 +24,7 @@ import java.math.BigInteger; import java.sql.Date; import java.sql.Timestamp; +import java.text.SimpleDateFormat; import java.time.Period; import java.util.ArrayList; import java.util.Arrays; @@ -302,7 +303,17 @@ public String mapHealthIDToBeneficiary(String authorization, 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<>(); @@ -326,7 +337,8 @@ public String mapHealthIDToBeneficiary(String authorization, abhaProfile.put("firstName", firstName); abhaProfile.put("middleName", ""); abhaProfile.put("lastName", lastName); - abhaProfile.put("dob", dob); + abhaProfile.put("dob", formattedDob); + requestMap.put("ABHAProfile", abhaProfile);