diff --git a/src/main/environment/common_docker.properties b/src/main/environment/common_docker.properties index 064090b3..aca7345a 100644 --- a/src/main/environment/common_docker.properties +++ b/src/main/environment/common_docker.properties @@ -218,4 +218,4 @@ otp.ratelimit.enabled=${OTP_RATELIMIT_ENABLED} otp.ratelimit.minute-limit=${OTP_RATELIMIT_MINUTE_LIMIT} otp.ratelimit.hour-limit=${OTP_RATELIMIT_HOUR_LIMIT} otp.ratelimit.day-limit=${OTP_RATELIMIT_DAY_LIMIT} -generateBeneficiaryIDs-api-url={GEN_BENEFICIARY_IDS_API_URL} +generateBeneficiaryIDs-api-url=${GEN_BENEFICIARY_IDS_API_URL} diff --git a/src/main/java/com/iemr/common/dto/identity/Address.java b/src/main/java/com/iemr/common/dto/identity/Address.java index 7a5e563f..b857f21d 100644 --- a/src/main/java/com/iemr/common/dto/identity/Address.java +++ b/src/main/java/com/iemr/common/dto/identity/Address.java @@ -52,6 +52,12 @@ private String parkingPlaceName; private Integer servicePointID; private String servicePointName; + private Double gpsLatitude; + private Double gpsLongitude; + private String digipin; + private Long gpsTimestamp; + private Boolean isGpsUnavailable; + private String gpsUnavailableReason; public static Address bendemographicsAddressMapper(BeneficiaryDemographicsModel i_bendemographics) { Address address = new Address(); @@ -87,6 +93,12 @@ public static Address bendemographicsAddressMapper(BeneficiaryDemographicsModel address.setSubDistrictId(i_bendemographics.getBlockID()); address.setVillageId(i_bendemographics.getDistrictBranchID()); address.setPinCode(i_bendemographics.getPinCode()); + address.setGpsLatitude(i_bendemographics.getLatitude()); + address.setGpsLongitude(i_bendemographics.getLongitude()); + address.setDigipin(i_bendemographics.getDigipin()); + address.setGpsTimestamp(i_bendemographics.getGpsTimestamp()); + address.setIsGpsUnavailable(i_bendemographics.getIsGpsUnavailable()); + address.setGpsUnavailableReason(i_bendemographics.getGpsUnavailableReason()); return address; } diff --git a/src/main/java/com/iemr/common/mapper/BenCompleteDetailMapperDecorator.java b/src/main/java/com/iemr/common/mapper/BenCompleteDetailMapperDecorator.java index 7d263b25..8b29ec15 100644 --- a/src/main/java/com/iemr/common/mapper/BenCompleteDetailMapperDecorator.java +++ b/src/main/java/com/iemr/common/mapper/BenCompleteDetailMapperDecorator.java @@ -158,6 +158,12 @@ public BeneficiaryDemographicsModel createBenDemographicsModel(BeneficiariesDTO demographicsModel.setServicePointID(address.getServicePointID()); demographicsModel.setServicePointName(address.getServicePointName()); demographicsModel.setHabitation(address.getHabitation()); + demographicsModel.setLatitude(address.getGpsLatitude()); + demographicsModel.setLongitude(address.getGpsLongitude()); + demographicsModel.setDigipin(address.getDigipin()); + demographicsModel.setGpsTimestamp(address.getGpsTimestamp()); + demographicsModel.setIsGpsUnavailable(address.getIsGpsUnavailable()); + demographicsModel.setGpsUnavailableReason(address.getGpsUnavailableReason()); } demographicsModel.setHealthCareWorkerID(benDetails.getHealthCareWorkerId()); demographicsModel.setPreferredLangID(beneficiariesDTO.getBeneficiaryDetails().getPreferredLanguageId()); @@ -216,6 +222,12 @@ protected Address beneficiaryDemographicsModelToAddress(BeneficiaryDemographicsM address.setSubDistrict( blockMapper.districtBlockToModelByID(beneficiaryDemographicsModel.getBlockID()).getBlockName()); } + address.setGpsLatitude(beneficiaryDemographicsModel.getLatitude()); + address.setGpsLongitude(beneficiaryDemographicsModel.getLongitude()); + address.setDigipin(beneficiaryDemographicsModel.getDigipin()); + address.setGpsTimestamp(beneficiaryDemographicsModel.getGpsTimestamp()); + address.setIsGpsUnavailable(beneficiaryDemographicsModel.getIsGpsUnavailable()); + address.setGpsUnavailableReason(beneficiaryDemographicsModel.getGpsUnavailableReason()); return address; } diff --git a/src/main/java/com/iemr/common/mapper/CommonIdentityMapperDecorator.java b/src/main/java/com/iemr/common/mapper/CommonIdentityMapperDecorator.java index 1480f306..f18920ad 100644 --- a/src/main/java/com/iemr/common/mapper/CommonIdentityMapperDecorator.java +++ b/src/main/java/com/iemr/common/mapper/CommonIdentityMapperDecorator.java @@ -248,6 +248,12 @@ protected Address beneficiaryDemographicsModelToAddress(BeneficiaryDemographicsM address.setSubDistrict( blockMapper.districtBlockToModelByID(beneficiaryDemographicsModel.getBlockID()).getBlockName()); } + address.setGpsLatitude(beneficiaryDemographicsModel.getLatitude()); + address.setGpsLongitude(beneficiaryDemographicsModel.getLongitude()); + address.setDigipin(beneficiaryDemographicsModel.getDigipin()); + address.setGpsTimestamp(beneficiaryDemographicsModel.getGpsTimestamp()); + address.setIsGpsUnavailable(beneficiaryDemographicsModel.getIsGpsUnavailable()); + address.setGpsUnavailableReason(beneficiaryDemographicsModel.getGpsUnavailableReason()); return address; } diff --git a/src/main/java/com/iemr/common/mapper/IdentityBenEditMapperDecorator.java b/src/main/java/com/iemr/common/mapper/IdentityBenEditMapperDecorator.java index e0f3ef1c..27b4a602 100644 --- a/src/main/java/com/iemr/common/mapper/IdentityBenEditMapperDecorator.java +++ b/src/main/java/com/iemr/common/mapper/IdentityBenEditMapperDecorator.java @@ -107,6 +107,12 @@ protected Address beneficiaryDemographicsModelToAddress(BeneficiaryDemographicsM address.setSubDistrict( blockMapper.districtBlockToModelByID(beneficiaryDemographicsModel.getBlockID()).getBlockName()); } + address.setGpsLatitude(beneficiaryDemographicsModel.getLatitude()); + address.setGpsLongitude(beneficiaryDemographicsModel.getLongitude()); + address.setDigipin(beneficiaryDemographicsModel.getDigipin()); + address.setGpsTimestamp(beneficiaryDemographicsModel.getGpsTimestamp()); + address.setIsGpsUnavailable(beneficiaryDemographicsModel.getIsGpsUnavailable()); + address.setGpsUnavailableReason(beneficiaryDemographicsModel.getGpsUnavailableReason()); return address; } diff --git a/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryDemographicsModel.java b/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryDemographicsModel.java index 83450844..044650ea 100644 --- a/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryDemographicsModel.java +++ b/src/main/java/com/iemr/common/model/beneficiary/BeneficiaryDemographicsModel.java @@ -173,6 +173,19 @@ public class BeneficiaryDemographicsModel { @Expose private String habitation; + @Expose + private Double latitude; + @Expose + private Double longitude; + @Expose + private String digipin; + @Expose + private Long gpsTimestamp; + @Expose + private Boolean isGpsUnavailable = false; + @Expose + private String gpsUnavailableReason; + @Expose private String occupation; @Expose diff --git a/src/main/java/com/iemr/common/service/health/HealthService.java b/src/main/java/com/iemr/common/service/health/HealthService.java index 7714efce..0c905d0a 100644 --- a/src/main/java/com/iemr/common/service/health/HealthService.java +++ b/src/main/java/com/iemr/common/service/health/HealthService.java @@ -72,7 +72,6 @@ public class HealthService { private static final String STATUS_VALUE = "Value"; private static final String STATUS_UP = "UP"; private static final String STATUS_DOWN = "DOWN"; - private static final String STATUS_DEGRADED = "DEGRADED"; private static final String STATUS_NOT_CONFIGURED = "NOT_CONFIGURED"; // Thresholds @@ -183,9 +182,11 @@ private Map checkDatabaseConnectivity() { stmt.setQueryTimeout(3); // Bounds only the SELECT 1 execution stmt.execute("SELECT 1"); - // If SELECT 1 succeeds, use cached severity from background diagnostics + // SELECT 1 succeeded, so connectivity is UP regardless of background severity. + // Severity is a separate capacity/performance signal (pool usage, long transactions, + // etc.) — it must not be reported as a connectivity outage. String severity = cachedDbSeverity.get(); - result.put(FIELD_STATUS, resolveDatabaseStatus(severity)); + result.put(FIELD_STATUS, STATUS_UP); result.put(FIELD_SEVERITY, severity); } catch (Exception e) { @@ -402,13 +403,6 @@ private String performConnectionUsageCheck(Connection conn) { } return SEVERITY_OK; } - private String resolveDatabaseStatus(String severity) { - return switch (severity) { - case SEVERITY_CRITICAL -> STATUS_DOWN; - case SEVERITY_WARNING -> STATUS_DEGRADED; - default -> STATUS_UP; - }; - } private String escalate(String current, String candidate) { return severityRank(candidate) > severityRank(current) ? candidate : current; }