diff --git a/src/main/java/com/wipro/fhir/controller/healthID/CreateHealthIDWithMobileOTP.java b/src/main/java/com/wipro/fhir/controller/healthID/CreateHealthIDWithMobileOTP.java index 99eebb2..0d18d96 100644 --- a/src/main/java/com/wipro/fhir/controller/healthID/CreateHealthIDWithMobileOTP.java +++ b/src/main/java/com/wipro/fhir/controller/healthID/CreateHealthIDWithMobileOTP.java @@ -116,29 +116,27 @@ public String verifyOTPAndGenerateHealthID( */ @CrossOrigin() @Operation(summary = "Get Beneficiary ABHA details") - @PostMapping(value = { "/getBenhealthID" }) - public String getBenhealthID( - @Param(value = "{\"beneficiaryRegID\":\"Long\"}") @RequestBody String comingRequest) { - OutputResponse response = new OutputResponse(); + @PostMapping("/getBenhealthID") + public String getBenhealthID(@RequestBody String comingRequest) { + OutputResponse response = new OutputResponse(); - logger.info("NDHM_FHIR Request obj to fetch beneficiary ABHA details :" + comingRequest); - try { - JSONObject obj = new JSONObject(comingRequest); - if (obj.length() > 0) { - Long benRegID = obj.getLong("beneficiaryRegID"); - String res = healthIDService.getBenHealthID(benRegID); - response.setResponse(res); - } else { - logger.info("NDHM_FHIR Invalid Request Data."); - response.setError(5000, "NDHM_FHIR Invalid request"); - } - } catch (Exception e) { - response.setError(5000, e.getMessage()); - logger.error("NDHM_FHIR Error while getting beneficiary ABHA:" + e); - } - logger.info("NDHM_FHIR get beneficiary ABHA response:" + response.toString()); - return response.toString(); - } + try { + JSONObject obj = new JSONObject(comingRequest); + if (obj.has("beneficiaryRegID")) { + Long benRegID = obj.getLong("beneficiaryRegID"); + String res = healthIDService.getBenHealthID(benRegID); + response.setResponse(res); + } else { + response.setError(4001, "Missing 'beneficiaryRegID' in request"); + } + } catch (Exception e) { + logger.error("NDHM_FHIR Error while getting beneficiary ABHA: ", e); + response.setError(5000, "Error: " + e.getMessage()); + } + + logger.info("NDHM_FHIR Response:", response); + return response.toString(); + } @CrossOrigin() @Operation(summary = "Get Beneficiary Id for ABHA Id") diff --git a/src/main/java/com/wipro/fhir/data/healthID/BenHealthIDMapping.java b/src/main/java/com/wipro/fhir/data/healthID/BenHealthIDMapping.java index a3fedc8..8a0fdef 100644 --- a/src/main/java/com/wipro/fhir/data/healthID/BenHealthIDMapping.java +++ b/src/main/java/com/wipro/fhir/data/healthID/BenHealthIDMapping.java @@ -76,6 +76,6 @@ public class BenHealthIDMapping { private Timestamp lastModDate; @Transient - private Boolean isNewAbha; + private boolean isNewAbha; } diff --git a/src/main/java/com/wipro/fhir/repo/healthID/BenHealthIDMappingRepo.java b/src/main/java/com/wipro/fhir/repo/healthID/BenHealthIDMappingRepo.java index 1dd01b4..6a53072 100644 --- a/src/main/java/com/wipro/fhir/repo/healthID/BenHealthIDMappingRepo.java +++ b/src/main/java/com/wipro/fhir/repo/healthID/BenHealthIDMappingRepo.java @@ -83,6 +83,10 @@ public interface BenHealthIDMappingRepo extends CrudRepository getIsNewAbhaBatch(@Param("healthIdNumbers") List healthIdNumbers); + + +} \ No newline at end of file diff --git a/src/main/java/com/wipro/fhir/service/healthID/HealthIDServiceImpl.java b/src/main/java/com/wipro/fhir/service/healthID/HealthIDServiceImpl.java index 8351878..4c9e3c2 100644 --- a/src/main/java/com/wipro/fhir/service/healthID/HealthIDServiceImpl.java +++ b/src/main/java/com/wipro/fhir/service/healthID/HealthIDServiceImpl.java @@ -28,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -115,24 +117,33 @@ public String mapHealthIDToBeneficiary(String request) throws FHIRException { } public String getBenHealthID(Long benRegID) { - Map resMap = new HashMap<>(); + List healthDetailsList = benHealthIDMappingRepo.getHealthDetails(benRegID); - ArrayList healthDetailsList = benHealthIDMappingRepo.getHealthDetails(benRegID); - ArrayList healthDetailsWithAbhaList = new ArrayList<>(); - - if(healthDetailsList.size() > 0) { - for(BenHealthIDMapping healthDetails: healthDetailsList) { - String healthIdNumber = healthDetails.getHealthIdNumber(); - Boolean isNewAbha = benHealthIDMappingRepo.getIsNewAbha(healthIdNumber); - healthDetails.setIsNewAbha(isNewAbha); - - healthDetailsWithAbhaList.add(healthDetails); - } + List healthIdNumbers = healthDetailsList.stream() + .map(BenHealthIDMapping::getHealthIdNumber) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + Map abhaMap = new HashMap<>(); + if (!healthIdNumbers.isEmpty()) { + List abhaResults = benHealthIDMappingRepo.getIsNewAbhaBatch(healthIdNumbers); + for (Object[] row : abhaResults) { + String healthIdNumber = (String) row[0]; + Boolean isNewAbha = (Boolean) row[1]; + abhaMap.put(healthIdNumber, isNewAbha); + } + } + + for (BenHealthIDMapping healthDetails : healthDetailsList) { + Boolean isNew = abhaMap.get(healthDetails.getHealthIdNumber()); + healthDetails.setNewAbha(Boolean.TRUE.equals(isNew)); } - resMap.put("BenHealthDetails", new Gson().toJson(healthDetailsWithAbhaList)); - return resMap.toString(); - } + Map responseMap = new HashMap<>(); + responseMap.put("BenHealthDetails", healthDetailsList); + + return new Gson().toJson(responseMap); + } @Override public String addRecordToHealthIdTable(String request) throws FHIRException { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e3f3cd8..5e7d9fb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,3 @@ - spring.datasource.tomcat.initial-size=5 spring.datasource.tomcat.max-active=30 spring.datasource.tomcat.max-idle=5 @@ -15,6 +14,7 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect spring.jackson.serialization.fail-on-empty-beans=false + # Add these under your existing jackson property spring.jackson.default-property-inclusion=NON_NULL spring.jackson.deserialization.fail-on-unknown-properties=false @@ -22,6 +22,7 @@ spring.jackson.serialization.write-dates-as-timestamps=true spring.jackson.parser.allow-unquoted-field-names=true spring.jackson.parser.allow-single-quotes=true spring.jpa.hibernate.ddl-auto=none + spring.jpa.hibernate.show_sql=true spring.jpa.hibernate.format_sql=true @@ -68,3 +69,9 @@ logging.level.com.iemr.ecd=INFO logging.level.web=INFO logging.level.org.springframework.web=INFO logging.level.org.hibernate=INFO + +#If both properties are set, only logging.file.name takes effect. +logging.path=logs/ +logging.file.name=logs/fhir-api.log + +