diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index f2f3e020..862e4c31 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -79,4 +79,14 @@ diagnostic.emrlite.truenat.password=@env.DIAGNOSTIC_EMRLITE_TRUENAT_PASSWORD@ diagnostic.emrlite.token-ttl-seconds=@env.DIAGNOSTIC_EMRLITE_TOKEN_TTL_SECONDS@ diagnostic.emrlite.refresh-ttl-seconds=@env.DIAGNOSTIC_EMRLITE_REFRESH_TTL_SECONDS@ +diagnostic.documents.storage-root=@env.DIAGNOSTIC_DOCUMENTS_STORAGE_ROOT@ +diagnostic.poll.xray.tick-ms=@env.DIAGNOSTIC_POLL_XRAY_TICK_MS@ +diagnostic.poll.truenat.tick-ms=@env.DIAGNOSTIC_POLL_TRUENAT_TICK_MS@ +# Daily cutoff (cron expression) after which all outstanding PENDING/IN_PROGRESS orders are marked EXPIRED +diagnostic.poll.expiry-cron=@env.DIAGNOSTIC_POLL_EXPIRY_CRON@ + +stoptb.enforce.vanid=@env.STOPTB_ENFORCE_VANID@ +# Stop TB: this deployment's van/camp ID, replacing the old Redis camp:vanID lookup +stoptb.van.id=@env.STOPTB_VAN_ID@ + diff --git a/src/main/java/com/iemr/flw/controller/IncentiveController.java b/src/main/java/com/iemr/flw/controller/IncentiveController.java index 32a5c16f..a251327d 100644 --- a/src/main/java/com/iemr/flw/controller/IncentiveController.java +++ b/src/main/java/com/iemr/flw/controller/IncentiveController.java @@ -1,5 +1,6 @@ package com.iemr.flw.controller; +import com.google.gson.Gson; import com.iemr.flw.dto.identity.GetBenRequestHandler; import com.iemr.flw.dto.iemr.*; import com.iemr.flw.service.IncentiveService; @@ -31,6 +32,9 @@ public class IncentiveController { @Autowired IncentiveService incentiveService; + private static final Gson gson = new Gson(); + + @Autowired private JwtUtil jwtUtil; @@ -91,8 +95,10 @@ public String getAllIncentivesByUserId(@RequestBody GetBenRequestHandler request try { if (requestDTO != null) { - logger.info("request object with timestamp : " + new Timestamp(System.currentTimeMillis()) + " " - + requestDTO); + + logger.info("Request object with timestamp: {} | Request JSON: {}", + new Timestamp(System.currentTimeMillis()), + gson.toJson(requestDTO)); String s = incentiveService.getAllIncentivesByUserId(requestDTO); //logger.info("User Incentive:" + s); if (s != null) diff --git a/src/main/java/com/iemr/flw/controller/TBController.java b/src/main/java/com/iemr/flw/controller/TBController.java index becc387a..9ec9f73a 100644 --- a/src/main/java/com/iemr/flw/controller/TBController.java +++ b/src/main/java/com/iemr/flw/controller/TBController.java @@ -2,9 +2,7 @@ import com.iemr.flw.domain.iemr.TBConfirmedCaseDTO; import com.iemr.flw.dto.identity.GetBenRequestHandler; -import com.iemr.flw.dto.iemr.TBConfirmedRequestDTO; -import com.iemr.flw.dto.iemr.TBScreeningRequestDTO; -import com.iemr.flw.dto.iemr.TBSuspectedRequestDTO; +import com.iemr.flw.dto.iemr.*; import com.iemr.flw.service.TBConfirmedCaseService; import com.iemr.flw.service.TBScreeningService; import com.iemr.flw.service.TBSuspectedService; @@ -192,6 +190,140 @@ public String getConfirmedByBenId( return response.toString(); } + @Operation(summary = "save tb referral follow up") + @RequestMapping(value = { "/referralFollowUp/save" }, method = { RequestMethod.POST }) + public String saveReferralFollowUp( + @RequestBody TbReferralFollowUpDTO requestDTO, + @RequestHeader(value = "jwtToken") String token) { + + OutputResponse response = new OutputResponse(); + + try { + if (requestDTO != null) { + + logger.info("request object with timestamp : " + + new Timestamp(System.currentTimeMillis()) + " " + + requestDTO); + + String result = tbConfirmedCaseService.saveReferralFollowUp(requestDTO, token); + + if (result != null) + response.setResponse(result); + else + response.setError(500, "No record saved"); + + } else { + response.setError(500, "Invalid/NULL request obj"); + } + } catch (Exception e) { + logger.error("Error in save tb referral follow up details : ", e); + response.setError(500, "Error in save referral follow up details : " + e.getMessage()); + } + + return response.toString(); + } + + + @Operation(summary = "save tb referral follow up") + @RequestMapping(value = { "/referralFollowUp/getAll" }, method = { RequestMethod.POST }) + public String getReferralFollowUp( + @RequestHeader(value = "jwtToken") String token) { + + OutputResponse response = new OutputResponse(); + + try { + if (token != null) { + + logger.info("request object with timestamp : " + + new Timestamp(System.currentTimeMillis()) + " " + + token); + + String result = tbConfirmedCaseService.getReferralFollowUp(token); + + if (result != null) + response.setResponse(result); + else + response.setError(500, "No record saved"); + + } else { + response.setError(500, "Invalid/NULL request obj"); + } + } catch (Exception e) { + logger.error("Error in save tb referral follow up details : ", e); + response.setError(500, "Error in save referral follow up details : " + e.getMessage()); + } + + return response.toString(); + } + + + + @Operation(summary = "save tb tpt follow up") + @RequestMapping(value = { "/tptFollowUp/save" }, method = { RequestMethod.POST }) + public String savTptFollowUp( + @RequestBody TbTptFollowUpDTO requestDTO, + @RequestHeader(value = "jwtToken") String token) { + + OutputResponse response = new OutputResponse(); + + try { + if (requestDTO != null) { + + logger.info("request object with timestamp : " + + new Timestamp(System.currentTimeMillis()) + " " + + requestDTO); + + String result = tbConfirmedCaseService.saveTptFollowUp(requestDTO, token); + + if (result != null) + response.setResponse(result); + else + response.setError(500, "No record saved"); + + } else { + response.setError(500, "Invalid/NULL request obj"); + } + } catch (Exception e) { + logger.error("Error in save tb tpt follow up details : ", e); + response.setError(500, "Error in save tpt follow up details : " + e.getMessage()); + } + + return response.toString(); + } + + + @Operation(summary = "save tb tpt follow up") + @RequestMapping(value = { "/tptFollowUp/getAll" }, method = { RequestMethod.POST }) + public String getTptFollowUp( + @RequestHeader(value = "jwtToken") String token) { + + OutputResponse response = new OutputResponse(); + + try { + if (token != null) { + + logger.info("request object with timestamp : " + + new Timestamp(System.currentTimeMillis()) + " " + + token); + + String result = tbConfirmedCaseService.getTptFollowUp(token); + + if (result != null) + response.setResponse(result); + else + response.setError(500, "No record saved"); + + } else { + response.setError(500, "Invalid/NULL request obj"); + } + } catch (Exception e) { + logger.error("Error in save tb tpt follow up details : ", e); + response.setError(500, "Error in save tpt follow up details : " + e.getMessage()); + } + + return response.toString(); + } + } diff --git a/src/main/java/com/iemr/flw/domain/identity/RMNCHBeneficiaryDetailsRmnch.java b/src/main/java/com/iemr/flw/domain/identity/RMNCHBeneficiaryDetailsRmnch.java index fa5f435f..d96ee5ab 100644 --- a/src/main/java/com/iemr/flw/domain/identity/RMNCHBeneficiaryDetailsRmnch.java +++ b/src/main/java/com/iemr/flw/domain/identity/RMNCHBeneficiaryDetailsRmnch.java @@ -102,19 +102,11 @@ public class RMNCHBeneficiaryDetailsRmnch { @Column(name = "longitude") private BigDecimal longitude; - @Column(name = "gpsLatitude") - private Double gpsLatitude; - - @Column(name = "gpsLongitude") - private Double gpsLongitude; @Expose @Column(name = "digipin") private String digipin; - @Expose - @Column(name = "gpsTimestamp") - private Timestamp gpsTimestamp; @Expose @Column(name = "isGpsUnavailable", nullable = false, columnDefinition = "TINYINT(1) DEFAULT 0") diff --git a/src/main/java/com/iemr/flw/domain/identity/RMNCHHouseHoldDetails.java b/src/main/java/com/iemr/flw/domain/identity/RMNCHHouseHoldDetails.java index 49f4d5a6..c5cfa852 100644 --- a/src/main/java/com/iemr/flw/domain/identity/RMNCHHouseHoldDetails.java +++ b/src/main/java/com/iemr/flw/domain/identity/RMNCHHouseHoldDetails.java @@ -329,13 +329,6 @@ public class RMNCHHouseHoldDetails { @Column(name = "isDeactivate") private Boolean isDeactivate; - @Expose - @Column(name = "gpsLatitude") - private Double gpsLatitude; - - @Expose - @Column(name = "gpsLongitude") - private Double gpsLongitude; @Expose @Column(name = "address") @@ -353,4 +346,12 @@ public class RMNCHHouseHoldDetails { @Column(name = "registeredAtCampSiteId") private Integer registeredAtCampSiteId; + @Expose + @Column(name = "placeOfCurrentLiving") + private String placeOfCurrentLiving; + + @Expose + @Column(name = "nameOfInstitution") + private String nameOfInstitution; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/AHDForm.java b/src/main/java/com/iemr/flw/domain/iemr/AHDForm.java index a9a20dfb..808ba782 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AHDForm.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AHDForm.java @@ -44,4 +44,11 @@ public class AHDForm { @Column(name = "form_type") private String formType; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ANCVisit.java b/src/main/java/com/iemr/flw/domain/iemr/ANCVisit.java index 4128f082..c39047f7 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ANCVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ANCVisit.java @@ -173,7 +173,12 @@ public class ANCVisit { @Column(name = "place_of_ancId") private Integer placeOfAncId; + @Column(name = "synced_by") + private String syncedBy; + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/AdolescentHealth.java b/src/main/java/com/iemr/flw/domain/iemr/AdolescentHealth.java index 14008706..3aa0ac4b 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AdolescentHealth.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AdolescentHealth.java @@ -68,5 +68,12 @@ public class AdolescentHealth { @Column(name = "created_by") private String createdBy; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/AncCare.java b/src/main/java/com/iemr/flw/domain/iemr/AncCare.java index 6b1d5c75..63da1f0f 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AncCare.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AncCare.java @@ -1,10 +1,13 @@ package com.iemr.flw.domain.iemr; import jakarta.persistence.*; +import lombok.Data; + import java.sql.Timestamp; import java.util.Objects; @Entity +@Data @Table(name = "t_anccare", schema = "db_iemr") public class AncCare { private long id; @@ -41,6 +44,7 @@ public class AncCare { private Timestamp syncedDate; private String reservedForChange; + @Id @Column(name = "ID") public long getId() { diff --git a/src/main/java/com/iemr/flw/domain/iemr/AncCounsellingCare.java b/src/main/java/com/iemr/flw/domain/iemr/AncCounsellingCare.java index 18a3f7ad..e80fb13a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AncCounsellingCare.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AncCounsellingCare.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -112,6 +113,13 @@ public class AncCounsellingCare { @Column(name = "malpresentation") private Boolean malpresentation = false; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + /* ---------- Lifecycle Hooks ---------- */ @PrePersist diff --git a/src/main/java/com/iemr/flw/domain/iemr/AshaSupervisorMapping.java b/src/main/java/com/iemr/flw/domain/iemr/AshaSupervisorMapping.java index ee641db8..1817d8de 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AshaSupervisorMapping.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AshaSupervisorMapping.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.sql.Timestamp; + @Entity @Table(name = "asha_supervisor_mapping") @Data @@ -31,4 +33,11 @@ public class AshaSupervisorMapping { @Column(name = "deleted", insertable = false, updatable = true) private Boolean deleted; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/AshaWorker.java b/src/main/java/com/iemr/flw/domain/iemr/AshaWorker.java index 2df2bf43..0c3e3b92 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/AshaWorker.java +++ b/src/main/java/com/iemr/flw/domain/iemr/AshaWorker.java @@ -4,6 +4,7 @@ import jakarta.validation.constraints.*; import lombok.*; +import java.sql.Timestamp; import java.time.LocalDate; @@ -109,4 +110,11 @@ public class AshaWorker { @Column(name = "supervisorMobile") private String supervisorMobile; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/BenAnthropometryDetail.java b/src/main/java/com/iemr/flw/domain/iemr/BenAnthropometryDetail.java index 777e8011..f4e23e6d 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/BenAnthropometryDetail.java +++ b/src/main/java/com/iemr/flw/domain/iemr/BenAnthropometryDetail.java @@ -65,6 +65,8 @@ public class BenAnthropometryDetail { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/BenChiefComplaint.java b/src/main/java/com/iemr/flw/domain/iemr/BenChiefComplaint.java index 3b016c5f..964f73c3 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/BenChiefComplaint.java +++ b/src/main/java/com/iemr/flw/domain/iemr/BenChiefComplaint.java @@ -68,6 +68,7 @@ public class BenChiefComplaint { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/BenFlowStatus.java b/src/main/java/com/iemr/flw/domain/iemr/BenFlowStatus.java index b4600e26..3451414a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/BenFlowStatus.java +++ b/src/main/java/com/iemr/flw/domain/iemr/BenFlowStatus.java @@ -79,4 +79,11 @@ public class BenFlowStatus { @Column(name = "deleted", insertable = false) private Boolean deleted; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/BenPhysicalVitalDetail.java b/src/main/java/com/iemr/flw/domain/iemr/BenPhysicalVitalDetail.java index 15b03aee..328877a0 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/BenPhysicalVitalDetail.java +++ b/src/main/java/com/iemr/flw/domain/iemr/BenPhysicalVitalDetail.java @@ -71,6 +71,7 @@ public class BenPhysicalVitalDetail { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/BenReferDetails.java b/src/main/java/com/iemr/flw/domain/iemr/BenReferDetails.java index 2112f311..061aa9d9 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/BenReferDetails.java +++ b/src/main/java/com/iemr/flw/domain/iemr/BenReferDetails.java @@ -126,6 +126,7 @@ public class BenReferDetails { private String syncedBy; @Expose + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/CDR.java b/src/main/java/com/iemr/flw/domain/iemr/CDR.java index 89744928..e3e028de 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/CDR.java +++ b/src/main/java/com/iemr/flw/domain/iemr/CDR.java @@ -93,4 +93,11 @@ public class CDR { @Column(name = "updated_by") private String updatedBy; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/CampaignOrs.java b/src/main/java/com/iemr/flw/domain/iemr/CampaignOrs.java index e33e1543..ec032f84 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/CampaignOrs.java +++ b/src/main/java/com/iemr/flw/domain/iemr/CampaignOrs.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -42,6 +43,13 @@ public class CampaignOrs { @Column(name = "updated_date") private LocalDateTime updatedDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + /* ---------- Auto timestamps ---------- */ @PrePersist diff --git a/src/main/java/com/iemr/flw/domain/iemr/CbacDetailsImer.java b/src/main/java/com/iemr/flw/domain/iemr/CbacDetailsImer.java index 989ed1d1..d46335ef 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/CbacDetailsImer.java +++ b/src/main/java/com/iemr/flw/domain/iemr/CbacDetailsImer.java @@ -262,6 +262,7 @@ public class CbacDetailsImer { @Column(name = "SyncedBy") private String syncedBy; @Expose + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/ChildRegister.java b/src/main/java/com/iemr/flw/domain/iemr/ChildRegister.java index 4b4ca99a..c4cbef8d 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ChildRegister.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ChildRegister.java @@ -75,4 +75,11 @@ public class ChildRegister { @Column(name = "updated_by") private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/ChronicDiseaseVisitEntity.java b/src/main/java/com/iemr/flw/domain/iemr/ChronicDiseaseVisitEntity.java index 10689cff..f6b42581 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ChronicDiseaseVisitEntity.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ChronicDiseaseVisitEntity.java @@ -2,6 +2,8 @@ import jakarta.persistence.*; import lombok.Data; + +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -59,6 +61,13 @@ public class ChronicDiseaseVisitEntity { @Column(name = "updated_date") private LocalDateTime updatedDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + // 🔹 Auto timestamps @PrePersist protected void onCreate() { diff --git a/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java b/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java index d3a1b56c..d6e6868b 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DeliveryOutcome.java @@ -77,4 +77,11 @@ public class DeliveryOutcome { @Column(name = "updated_date") private Timestamp updatedDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/DewormingForm.java b/src/main/java/com/iemr/flw/domain/iemr/DewormingForm.java index 631dbfd5..1638e52e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DewormingForm.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DewormingForm.java @@ -47,4 +47,11 @@ public class DewormingForm { @Column(name = "form_type") private String formType; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticDocument.java b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticDocument.java index d4e78747..50861774 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticDocument.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticDocument.java @@ -86,4 +86,11 @@ public class DiagnosticDocument { @Column(name = "vanSerialNo") private Long vanSerialNo; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticOrder.java b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticOrder.java index 197999fe..c6bf2695 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticOrder.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticOrder.java @@ -54,7 +54,7 @@ public class DiagnosticOrder { private String errorMessage; @Column(name = "reason_for_refusal", columnDefinition = "TEXT") - private String reasonForRefusal; + private String reasonToClose; @Column(name = "push_response_json", columnDefinition = "LONGTEXT") private String pushResponseJson; @@ -103,4 +103,11 @@ public class DiagnosticOrder { @Column(name = "vanSerialNo") private Long vanSerialNo; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticProviderToken.java b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticProviderToken.java index 8ef23306..6ee5ea12 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticProviderToken.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticProviderToken.java @@ -48,4 +48,11 @@ public class DiagnosticProviderToken { @Column(name = "vanSerialNo") private Long vanSerialNo; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticResult.java b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticResult.java index 6cb9fba6..734e98e9 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DiagnosticResult.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DiagnosticResult.java @@ -72,4 +72,11 @@ public class DiagnosticResult { @Column(name = "vanSerialNo") private Long vanSerialNo; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/DynamicForm.java b/src/main/java/com/iemr/flw/domain/iemr/DynamicForm.java index af183d66..1c9a3053 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/DynamicForm.java +++ b/src/main/java/com/iemr/flw/domain/iemr/DynamicForm.java @@ -106,6 +106,7 @@ public class DynamicForm { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleRegister.java b/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleRegister.java index 4a6226b4..b6299f90 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleRegister.java +++ b/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleRegister.java @@ -179,5 +179,12 @@ public class EligibleCoupleRegister { @Column(name = "kit_photo2", columnDefinition = "LONGTEXT") private String kitPhoto2; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleTracking.java b/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleTracking.java index 99b8b511..929fc93b 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleTracking.java +++ b/src/main/java/com/iemr/flw/domain/iemr/EligibleCoupleTracking.java @@ -72,4 +72,11 @@ public class EligibleCoupleTracking { @Column(name = "discharge_summary2") private String dischargeSummary2; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/EyeCheckupVisit.java b/src/main/java/com/iemr/flw/domain/iemr/EyeCheckupVisit.java index c15e8410..945fdeb4 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/EyeCheckupVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/EyeCheckupVisit.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @Data @@ -51,4 +52,11 @@ public class EyeCheckupVisit { @Column(name = "updated_date") private LocalDateTime updatedDate = LocalDateTime.now(); + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/FilariasisCampaign.java b/src/main/java/com/iemr/flw/domain/iemr/FilariasisCampaign.java index 2f0c12ad..d2cd218a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/FilariasisCampaign.java +++ b/src/main/java/com/iemr/flw/domain/iemr/FilariasisCampaign.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -49,6 +50,13 @@ public class FilariasisCampaign { @Column(name = "updated_date") private LocalDateTime updatedDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + /* ---------- Auto timestamps ---------- */ @PrePersist diff --git a/src/main/java/com/iemr/flw/domain/iemr/FormResponse.java b/src/main/java/com/iemr/flw/domain/iemr/FormResponse.java index 8b338ee5..c6c16008 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/FormResponse.java +++ b/src/main/java/com/iemr/flw/domain/iemr/FormResponse.java @@ -112,6 +112,7 @@ public class FormResponse { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; @@ -121,6 +122,7 @@ public class FormResponse { @Column(name = "SyncFailureReason") private String syncFailureReason; + @PrePersist protected void onCreate() { createdAt = new Timestamp(System.currentTimeMillis()); diff --git a/src/main/java/com/iemr/flw/domain/iemr/FormSection.java b/src/main/java/com/iemr/flw/domain/iemr/FormSection.java index 28f50859..b06ce48e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/FormSection.java +++ b/src/main/java/com/iemr/flw/domain/iemr/FormSection.java @@ -112,6 +112,7 @@ public class FormSection { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/FormVersion.java b/src/main/java/com/iemr/flw/domain/iemr/FormVersion.java index 5902aa21..397fc22f 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/FormVersion.java +++ b/src/main/java/com/iemr/flw/domain/iemr/FormVersion.java @@ -99,6 +99,7 @@ public class FormVersion { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdData.java b/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdData.java index f2d81f18..b2b0f2d0 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdData.java +++ b/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdData.java @@ -220,5 +220,11 @@ public class GeneralOpdData { @Column(name = "village") private String village; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdEntry.java b/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdEntry.java index 2e68c9fe..9254dab8 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdEntry.java +++ b/src/main/java/com/iemr/flw/domain/iemr/GeneralOpdEntry.java @@ -3,6 +3,8 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; + @Entity @Data @Table(name = "general_opd_entry") // Updated table name @@ -42,4 +44,11 @@ public class GeneralOpdEntry { @Column(name = "follow_up_date") private String followUpDate; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HBYC.java b/src/main/java/com/iemr/flw/domain/iemr/HBYC.java index 2b5b1a08..a52852a2 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HBYC.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HBYC.java @@ -102,4 +102,11 @@ public class HBYC { @Column(name = "updated_by") private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HbncPart1.java b/src/main/java/com/iemr/flw/domain/iemr/HbncPart1.java index f4ff6a5c..02cb6736 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HbncPart1.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HbncPart1.java @@ -97,4 +97,11 @@ public class HbncPart1 { @Column(name = "updated_by") private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HbncPart2.java b/src/main/java/com/iemr/flw/domain/iemr/HbncPart2.java index b7828719..7139086c 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HbncPart2.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HbncPart2.java @@ -82,4 +82,11 @@ public class HbncPart2 { @Column(name = "updated_by") private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HbncVisit.java b/src/main/java/com/iemr/flw/domain/iemr/HbncVisit.java index fa35c41e..aa797a12 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HbncVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HbncVisit.java @@ -110,4 +110,11 @@ public class HbncVisit { @Column(name = "is_admitted_in_sncu") private Boolean is_admitted_in_sncu; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; }; diff --git a/src/main/java/com/iemr/flw/domain/iemr/HbncVisitCard.java b/src/main/java/com/iemr/flw/domain/iemr/HbncVisitCard.java index 8008d07d..c01d445f 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HbncVisitCard.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HbncVisitCard.java @@ -79,4 +79,11 @@ public class HbncVisitCard { @Column(name = "updated_by") private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HbycChildVisit.java b/src/main/java/com/iemr/flw/domain/iemr/HbycChildVisit.java index 205716cc..03b92da4 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HbycChildVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HbycChildVisit.java @@ -130,5 +130,12 @@ public class HbycChildVisit { @Column(name = "is_complementary_feeding") private Boolean complementary_feeding; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; + // Getters and Setters } diff --git a/src/main/java/com/iemr/flw/domain/iemr/HighRiskAssess.java b/src/main/java/com/iemr/flw/domain/iemr/HighRiskAssess.java index 4089e77c..aac6f2df 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/HighRiskAssess.java +++ b/src/main/java/com/iemr/flw/domain/iemr/HighRiskAssess.java @@ -45,4 +45,10 @@ public class HighRiskAssess { @Column(name = "updated_by") private String updatedBy; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IFAFormSubmissionData.java b/src/main/java/com/iemr/flw/domain/iemr/IFAFormSubmissionData.java index 42826902..cf8e9e10 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IFAFormSubmissionData.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IFAFormSubmissionData.java @@ -62,4 +62,11 @@ public void onUpdate() { this.updatedAt = LocalDateTime.now(); } + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IRSRound.java b/src/main/java/com/iemr/flw/domain/iemr/IRSRound.java index 6f3143e0..c964765e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IRSRound.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IRSRound.java @@ -7,6 +7,7 @@ import java.math.BigInteger; import java.sql.Date; +import java.sql.Timestamp; import java.time.LocalDate; @Entity @@ -34,4 +35,10 @@ public class IRSRound { @Column(name = "user_id") private Integer userId; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate = null; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/IfaDistribution.java b/src/main/java/com/iemr/flw/domain/iemr/IfaDistribution.java index c6b61354..9cbe5206 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IfaDistribution.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IfaDistribution.java @@ -5,6 +5,7 @@ import lombok.Data; import org.checkerframework.checker.units.qual.C; +import java.sql.Timestamp; import java.time.LocalDate; @Entity @@ -39,4 +40,11 @@ public class IfaDistribution { @Column(name = "ifa_bottle_count") private String ifaBottleCount; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivity.java b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivity.java index 6402d920..ce8ebc02 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivity.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivity.java @@ -66,6 +66,10 @@ public class IncentiveActivity { @Column(name = "group_category_name") private String groupCategoryName; + @Column(name = "synced_by") + private String syncedBy; - + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityLangMapping.java b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityLangMapping.java index 0c81338c..f3ce1c2a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityLangMapping.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityLangMapping.java @@ -43,5 +43,10 @@ public class IncentiveActivityLangMapping { @Column(name = "hindi_activity_description") private String hindiActivityDescription; + @Column(name = "synced_by") + private String syncedBy; + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityRecord.java b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityRecord.java index 4a84055f..c9b16da4 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityRecord.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IncentiveActivityRecord.java @@ -100,4 +100,11 @@ private void applyDefaults() { isApproved = false; } } + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java b/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java index 3f35dc59..b302b37b 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java +++ b/src/main/java/com/iemr/flw/domain/iemr/IncentivePendingActivity.java @@ -1,5 +1,6 @@ package com.iemr.flw.domain.iemr; +import java.sql.Timestamp; import java.util.Date; import jakarta.persistence.*; @@ -36,4 +37,11 @@ public class IncentivePendingActivity { @Column(name = "updated_date") private Date updatedDate; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/InfantRegister.java b/src/main/java/com/iemr/flw/domain/iemr/InfantRegister.java index aee846ef..9c09c347 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/InfantRegister.java +++ b/src/main/java/com/iemr/flw/domain/iemr/InfantRegister.java @@ -103,4 +103,11 @@ public class InfantRegister { @Column(name = "is_Referred_higher_facility") private Boolean isReferredHigherFacility; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/LeprosyFollowUp.java b/src/main/java/com/iemr/flw/domain/iemr/LeprosyFollowUp.java index 5e0d78f0..5decbe77 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/LeprosyFollowUp.java +++ b/src/main/java/com/iemr/flw/domain/iemr/LeprosyFollowUp.java @@ -87,4 +87,11 @@ public class LeprosyFollowUp { @Column(name = "last_mod_date") private Timestamp lastModDate; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/MDSR.java b/src/main/java/com/iemr/flw/domain/iemr/MDSR.java index 301fdd91..cace87f8 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MDSR.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MDSR.java @@ -63,4 +63,11 @@ public class MDSR { @Column(name = "mdsr_death_cert_file") private String mdsrDeathCertFile; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/MaaMeeting.java b/src/main/java/com/iemr/flw/domain/iemr/MaaMeeting.java index 0e843714..3381d59d 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MaaMeeting.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MaaMeeting.java @@ -54,4 +54,11 @@ public class MaaMeeting { @Column(name = "created_by") private String createdBy; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/MalariaFollowUp.java b/src/main/java/com/iemr/flw/domain/iemr/MalariaFollowUp.java index bc30e7dd..115c371e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MalariaFollowUp.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MalariaFollowUp.java @@ -56,4 +56,11 @@ public class MalariaFollowUp { @UpdateTimestamp @Column(name = "last_mod_date") private Timestamp lastModDate; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/MdaDistributionData.java b/src/main/java/com/iemr/flw/domain/iemr/MdaDistributionData.java index 7985393a..b59164e3 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MdaDistributionData.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MdaDistributionData.java @@ -60,4 +60,11 @@ public class MdaDistributionData { @Column(name = "AshaId") private Integer ashaId; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/MicroBirthPlan.java b/src/main/java/com/iemr/flw/domain/iemr/MicroBirthPlan.java index 9b145899..f5a89ecc 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MicroBirthPlan.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MicroBirthPlan.java @@ -66,4 +66,10 @@ public class MicroBirthPlan { private String modeOfTransportation; // Mode of transport -} \ No newline at end of file + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; +} diff --git a/src/main/java/com/iemr/flw/domain/iemr/MosquitoNetEntity.java b/src/main/java/com/iemr/flw/domain/iemr/MosquitoNetEntity.java index 1f57d23a..e75a3b0e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/MosquitoNetEntity.java +++ b/src/main/java/com/iemr/flw/domain/iemr/MosquitoNetEntity.java @@ -31,4 +31,10 @@ public class MosquitoNetEntity { @Column(name = "is_net_distributed") private String isNetDistributed; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskAssess.java b/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskAssess.java index 2b901a6d..863358b6 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskAssess.java +++ b/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskAssess.java @@ -50,4 +50,10 @@ public class NonPregnantWomanHighRiskAssess { @Column(name = "visit_date") private Timestamp visitDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskTrack.java b/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskTrack.java index 6a3374d0..9f506a9c 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskTrack.java +++ b/src/main/java/com/iemr/flw/domain/iemr/NonPregnantWomanHighRiskTrack.java @@ -77,4 +77,11 @@ public class NonPregnantWomanHighRiskTrack { @Column(name = "is_deleted") private Boolean isDeleted; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/Notification.java b/src/main/java/com/iemr/flw/domain/iemr/Notification.java index b2f4ba71..27da0402 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/Notification.java +++ b/src/main/java/com/iemr/flw/domain/iemr/Notification.java @@ -64,4 +64,12 @@ protected void onCreate() { this.readDate = null; } } + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "synced_date") + private Date syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/OptionCondition.java b/src/main/java/com/iemr/flw/domain/iemr/OptionCondition.java index 50af2b38..975a23ad 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/OptionCondition.java +++ b/src/main/java/com/iemr/flw/domain/iemr/OptionCondition.java @@ -92,6 +92,7 @@ public class OptionCondition { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/OrsDistribution.java b/src/main/java/com/iemr/flw/domain/iemr/OrsDistribution.java index e5603dee..4e633303 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/OrsDistribution.java +++ b/src/main/java/com/iemr/flw/domain/iemr/OrsDistribution.java @@ -39,4 +39,10 @@ public class OrsDistribution { @Column(name = "updated_at", insertable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") private java.sql.Timestamp updatedAt; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/OtpBeneficiary.java b/src/main/java/com/iemr/flw/domain/iemr/OtpBeneficiary.java index 15a87bd0..be82820b 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/OtpBeneficiary.java +++ b/src/main/java/com/iemr/flw/domain/iemr/OtpBeneficiary.java @@ -30,4 +30,11 @@ public class OtpBeneficiary { @Column(name = "createdAt", updatable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") private Timestamp createdAt; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PHCReviewForm.java b/src/main/java/com/iemr/flw/domain/iemr/PHCReviewForm.java index 4dea0ce7..42665c94 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PHCReviewForm.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PHCReviewForm.java @@ -57,4 +57,10 @@ public class PHCReviewForm { @Column(name = "form_type") private String formType; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/PMSMA.java b/src/main/java/com/iemr/flw/domain/iemr/PMSMA.java index f1320fee..65b5c160 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PMSMA.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PMSMA.java @@ -141,4 +141,11 @@ public class PMSMA { @Column(name = "anyOtherHighRiskCondition") private String anyOtherHighRiskCondition; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PNCVisit.java b/src/main/java/com/iemr/flw/domain/iemr/PNCVisit.java index 04eb6f4a..64bd2cbc 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PNCVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PNCVisit.java @@ -94,4 +94,11 @@ public class PNCVisit { @Column(name = "delivery_discharge_summary_image4") private String deliveryDischargeSummary4; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PhyGeneralExamination.java b/src/main/java/com/iemr/flw/domain/iemr/PhyGeneralExamination.java index b99fd804..466845c1 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PhyGeneralExamination.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PhyGeneralExamination.java @@ -74,6 +74,7 @@ public class PhyGeneralExamination { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskAssess.java b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskAssess.java index 8e61655f..b070ea61 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskAssess.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskAssess.java @@ -55,4 +55,11 @@ public class PregnantWomanHighRiskAssess { @Column(name = "is_high_risk") private Boolean isHighRisk; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskTrack.java b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskTrack.java index 516cabfa..f4c64623 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskTrack.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanHighRiskTrack.java @@ -98,4 +98,10 @@ public class PregnantWomanHighRiskTrack { @Column(name = "is_deleted") private Boolean isDeleted; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanRegister.java b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanRegister.java index 736f3afe..9dba97dd 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanRegister.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PregnantWomanRegister.java @@ -116,5 +116,11 @@ public class PregnantWomanRegister { @Column(name = "updated_by") private String updatedBy; -} + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; +} diff --git a/src/main/java/com/iemr/flw/domain/iemr/PrescribedDrugDetail.java b/src/main/java/com/iemr/flw/domain/iemr/PrescribedDrugDetail.java index 9a0a1502..bbf63f08 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PrescribedDrugDetail.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PrescribedDrugDetail.java @@ -77,6 +77,7 @@ public class PrescribedDrugDetail { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PrescriptionDetail.java b/src/main/java/com/iemr/flw/domain/iemr/PrescriptionDetail.java index 5bc5295d..a0dd33a2 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PrescriptionDetail.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PrescriptionDetail.java @@ -65,6 +65,7 @@ public class PrescriptionDetail { @Column(name = "SyncedBy") private String syncedBy; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/PulsePolioCampaign.java b/src/main/java/com/iemr/flw/domain/iemr/PulsePolioCampaign.java index ddf7b8b6..af0bd091 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/PulsePolioCampaign.java +++ b/src/main/java/com/iemr/flw/domain/iemr/PulsePolioCampaign.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -56,5 +57,10 @@ protected void onUpdate() { this.updatedDate = LocalDateTime.now(); } + @Column(name = "synced_by") + private String syncedBy; + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/QuestionOption.java b/src/main/java/com/iemr/flw/domain/iemr/QuestionOption.java index 124ea6fa..c732045a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/QuestionOption.java +++ b/src/main/java/com/iemr/flw/domain/iemr/QuestionOption.java @@ -98,6 +98,7 @@ public class QuestionOption { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/QuestionResponse.java b/src/main/java/com/iemr/flw/domain/iemr/QuestionResponse.java index d743ad2d..0c182185 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/QuestionResponse.java +++ b/src/main/java/com/iemr/flw/domain/iemr/QuestionResponse.java @@ -92,6 +92,7 @@ public class QuestionResponse { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/QuestionValidation.java b/src/main/java/com/iemr/flw/domain/iemr/QuestionValidation.java index b7d41dc1..300853c5 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/QuestionValidation.java +++ b/src/main/java/com/iemr/flw/domain/iemr/QuestionValidation.java @@ -90,6 +90,7 @@ public class QuestionValidation { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/SamVisit.java b/src/main/java/com/iemr/flw/domain/iemr/SamVisit.java index 56822609..57957847 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/SamVisit.java +++ b/src/main/java/com/iemr/flw/domain/iemr/SamVisit.java @@ -70,4 +70,11 @@ public class SamVisit { @Column(name = "updated_date") private LocalDateTime updatedDate = LocalDateTime.now(); + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/SammelanAttachment.java b/src/main/java/com/iemr/flw/domain/iemr/SammelanAttachment.java index e94dd2bc..e98e84d1 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/SammelanAttachment.java +++ b/src/main/java/com/iemr/flw/domain/iemr/SammelanAttachment.java @@ -1,5 +1,6 @@ package com.iemr.flw.domain.iemr; +import java.sql.Timestamp; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -25,4 +26,11 @@ public class SammelanAttachment { private String fileType; @Lob private byte[] fileData; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/SammelanRecord.java b/src/main/java/com/iemr/flw/domain/iemr/SammelanRecord.java index 1ccc5bbd..edef292e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/SammelanRecord.java +++ b/src/main/java/com/iemr/flw/domain/iemr/SammelanRecord.java @@ -51,4 +51,11 @@ public class SammelanRecord { @Lob @Column(columnDefinition = "LONGTEXT",name = "attachments") private String attachments; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningAesje.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningAesje.java index 372908f9..2814c1e9 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningAesje.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningAesje.java @@ -101,5 +101,13 @@ public class ScreeningAesje { @Column(name = "beneficiary_status_id") private Integer beneficiaryStatusId; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "synced_date") + private Date syncedDate; + // Getters and Setters } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningFilariasis.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningFilariasis.java index e75cb046..79bcc399 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningFilariasis.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningFilariasis.java @@ -83,4 +83,11 @@ public class ScreeningFilariasis { @Column(name = "user_id") private Integer userId; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "synced_date") + private Date syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java index d6bcd7b6..5e62152f 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningKalaAzar.java @@ -108,4 +108,12 @@ public class ScreeningKalaAzar { @Column(name = "beneficiary_status") private String beneficiaryStatus; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "synced_date") + private Date syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningLeprosy.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningLeprosy.java index 6a485eef..22adb1f1 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningLeprosy.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningLeprosy.java @@ -225,4 +225,11 @@ public class ScreeningLeprosy { @Column(name = "LastModDate") private Timestamp lastModDate; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/ScreeningMalaria.java b/src/main/java/com/iemr/flw/domain/iemr/ScreeningMalaria.java index a310acb5..9d8ae1f3 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/ScreeningMalaria.java +++ b/src/main/java/com/iemr/flw/domain/iemr/ScreeningMalaria.java @@ -139,5 +139,11 @@ public class ScreeningMalaria { @Column(name = "visit_date") private Date visitDate; + @Column(name = "synced_by") + private String syncedBy; + @org.hibernate.annotations.CreationTimestamp + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "synced_date") + private Date syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/SectionQuestion.java b/src/main/java/com/iemr/flw/domain/iemr/SectionQuestion.java index 1aa324cb..67fc109f 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/SectionQuestion.java +++ b/src/main/java/com/iemr/flw/domain/iemr/SectionQuestion.java @@ -124,6 +124,7 @@ public class SectionQuestion { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/SectionResponse.java b/src/main/java/com/iemr/flw/domain/iemr/SectionResponse.java index d8877a50..b75ac79a 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/SectionResponse.java +++ b/src/main/java/com/iemr/flw/domain/iemr/SectionResponse.java @@ -85,6 +85,7 @@ public class SectionResponse { @Column(name = "vanSerialNo") private Long vanSerialNo; + @org.hibernate.annotations.CreationTimestamp @Column(name = "SyncedDate") private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/domain/iemr/StopTBDiagnostics.java b/src/main/java/com/iemr/flw/domain/iemr/StopTBDiagnostics.java index f9abde57..400074a0 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/StopTBDiagnostics.java +++ b/src/main/java/com/iemr/flw/domain/iemr/StopTBDiagnostics.java @@ -137,4 +137,11 @@ public class StopTBDiagnostics { @Column(name = "vanSerialNo") private Long vanSerialNo; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralExamination.java b/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralExamination.java index 9972d916..6cfeaa28 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralExamination.java +++ b/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralExamination.java @@ -130,4 +130,11 @@ public class StopTBGeneralExamination { @Column(name = "ben_id") private Long benId; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralOpd.java b/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralOpd.java index 4cfbb912..a688b27d 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralOpd.java +++ b/src/main/java/com/iemr/flw/domain/iemr/StopTBGeneralOpd.java @@ -78,4 +78,11 @@ public class StopTBGeneralOpd { @Column(name = "benVisitID") private Long benVisitID; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/StopTBRegistration.java b/src/main/java/com/iemr/flw/domain/iemr/StopTBRegistration.java index 4ce54a0d..551a3737 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/StopTBRegistration.java +++ b/src/main/java/com/iemr/flw/domain/iemr/StopTBRegistration.java @@ -76,4 +76,10 @@ public class StopTBRegistration { @Column(name = "deleted") private Boolean deleted; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/TBConfirmedCase.java b/src/main/java/com/iemr/flw/domain/iemr/TBConfirmedCase.java index c2c51a6f..23347cf9 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/TBConfirmedCase.java +++ b/src/main/java/com/iemr/flw/domain/iemr/TBConfirmedCase.java @@ -102,4 +102,11 @@ public class TBConfirmedCase { @Column(name = "visitCode") private Long visitCode; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private java.sql.Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/TBScreening.java b/src/main/java/com/iemr/flw/domain/iemr/TBScreening.java index 06e36309..01170cf9 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/TBScreening.java +++ b/src/main/java/com/iemr/flw/domain/iemr/TBScreening.java @@ -194,4 +194,29 @@ public class TBScreening { @Column(name = "createdDate") private java.sql.Timestamp createdDate; + + @Column(name = "risk_factor", columnDefinition = "TEXT") + private String riskFactor; + + @Column(name = "fatigue") + private Boolean fatigue; + + @Column(name = "chest_pain") + private Boolean chestPain; + + @Column(name = "short_breath") + private Boolean shortBreath; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + + @Column(name = "failure_to_gainWeight") + private Boolean failureToGainWeight; + + @Column(name = "decreased_activity_playfulness ") + private Boolean decreasedActivityOrPlayfulness ; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/TBSuspected.java b/src/main/java/com/iemr/flw/domain/iemr/TBSuspected.java index 8aa015ec..be27aaa5 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/TBSuspected.java +++ b/src/main/java/com/iemr/flw/domain/iemr/TBSuspected.java @@ -122,4 +122,11 @@ public class TBSuspected { @Column(name = "visitCode") private Long visitCode; + + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/domain/iemr/TbReferralFollowUp.java b/src/main/java/com/iemr/flw/domain/iemr/TbReferralFollowUp.java new file mode 100644 index 00000000..206984df --- /dev/null +++ b/src/main/java/com/iemr/flw/domain/iemr/TbReferralFollowUp.java @@ -0,0 +1,54 @@ +package com.iemr.flw.domain.iemr; + +import jakarta.persistence.*; +import lombok.Data; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.lang.reflect.Type; +import java.sql.Timestamp; + +@Data +@Entity +@Table(name = "tb_referral_follow_up",schema = "db_iemr") +public class TbReferralFollowUp { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "ben_id") + private Long benId; + + @Column(name = "household_id") + private Long houseHoldId; + + @Column(name = "referred_on_date") + private Timestamp referredOnDate; + + @Column(name = "follow_up_date") + private Timestamp followUpDate; + + @Column(name = "follow_up_status") + private String followUpStatus; + + @CreationTimestamp + @Column(name = "created_date") + private Timestamp createdDate; + + @UpdateTimestamp + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "created_by") + private String createdBy; + + @Column(name = "updated_by") + private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @Column(name = "user_id") + private Integer userId; + +} \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/TbTptFollowUp.java b/src/main/java/com/iemr/flw/domain/iemr/TbTptFollowUp.java new file mode 100644 index 00000000..15900272 --- /dev/null +++ b/src/main/java/com/iemr/flw/domain/iemr/TbTptFollowUp.java @@ -0,0 +1,82 @@ +package com.iemr.flw.domain.iemr; + +import jakarta.persistence.*; +import lombok.Data; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.sql.Timestamp; + +@Data +@Entity +@Table(name = "tb_tpt_follow_up",schema = "db_iemr") +public class TbTptFollowUp { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "ben_id") + private Long benId; + + @Column(name = "household_id") + private Long houseHoldId; + @Column(name = "regimen_type") + private String regimenType; + + @Column(name = "treatment_start_date") + private Timestamp treatmentStartDate; + + @Column(name = "expected_treatment_completion_date") + private Timestamp expectedTreatmentCompletionDate; + + @Column(name = "follow_up_date") + private Timestamp followUpDate; + + @Column(name = "follow_up_month") + private String followUpMonth; + + @Column(name = "adherence_to_medicines") + private String adherenceToMedicines; + + @Column(name = "any_discomfort") + private Boolean anyDiscomfort; + + @Column(name = "treatment_completed") + private Boolean treatmentCompleted; + + @Column(name = "actual_treatment_completion_date") + private Timestamp actualTreatmentCompletionDate; + + @Column(name = "tpt_outcome") + private String tptOutcome; + + @Column(name = "date_of_death") + private Timestamp dateOfDeath; + + @Column(name = "place_of_death") + private String placeOfDeath; + + @Column(name = "reason_for_death") + private String reasonForDeath; + + @CreationTimestamp + @Column(name = "created_date") + private Timestamp createdDate; + + @UpdateTimestamp + @Column(name = "updated_date") + private Timestamp updatedDate; + + @Column(name = "created_by") + private String createdBy; + + @Column(name = "updated_by") + private String updatedBy; + + @Column(name = "synced_by") + private String syncedBy; + + @Column(name = "user_id") + private Integer userId; + +} \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/UserFcmTokenData.java b/src/main/java/com/iemr/flw/domain/iemr/UserFcmTokenData.java index dd56c5b2..7005ba1e 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/UserFcmTokenData.java +++ b/src/main/java/com/iemr/flw/domain/iemr/UserFcmTokenData.java @@ -15,9 +15,16 @@ public class UserFcmTokenData { @GeneratedValue(strategy = IDENTITY) private int id; @Column(name = "user_id") - private Integer userId; + private Integer userId; @Column(name = "token") private String token; @Column(name = "updated_at") private Timestamp updatedAt; + @Column(name = "synced_by") + private String syncedBy; + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } + + diff --git a/src/main/java/com/iemr/flw/domain/iemr/UwinSession.java b/src/main/java/com/iemr/flw/domain/iemr/UwinSession.java index 9ab6d5cb..f87ed317 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/UwinSession.java +++ b/src/main/java/com/iemr/flw/domain/iemr/UwinSession.java @@ -39,5 +39,12 @@ public class UwinSession { @Column(name = "created_by") private String createdBy; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/domain/iemr/VHNDForm.java b/src/main/java/com/iemr/flw/domain/iemr/VHNDForm.java index 758cc449..2de5f606 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/VHNDForm.java +++ b/src/main/java/com/iemr/flw/domain/iemr/VHNDForm.java @@ -77,5 +77,11 @@ public class VHNDForm { @Column(name = "created_date", updatable = false) private Timestamp createdDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; } \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/domain/iemr/Vaccine.java b/src/main/java/com/iemr/flw/domain/iemr/Vaccine.java index 0a03d259..6975d7a8 100644 --- a/src/main/java/com/iemr/flw/domain/iemr/Vaccine.java +++ b/src/main/java/com/iemr/flw/domain/iemr/Vaccine.java @@ -70,4 +70,11 @@ public class Vaccine { @Column(name = "LastModDate") private Timestamp lastModDate; + @Column(name = "synced_by") + private String syncedBy; + + @org.hibernate.annotations.CreationTimestamp + @Column(name = "synced_date") + private Timestamp syncedDate; + } diff --git a/src/main/java/com/iemr/flw/dto/iemr/ANCVisitDTO.java b/src/main/java/com/iemr/flw/dto/iemr/ANCVisitDTO.java index b4cf0033..c82009cf 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/ANCVisitDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/ANCVisitDTO.java @@ -9,6 +9,9 @@ @Data public class ANCVisitDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/AdolescentHealthDTO.java b/src/main/java/com/iemr/flw/dto/iemr/AdolescentHealthDTO.java index b59bb8ea..e534fd25 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/AdolescentHealthDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/AdolescentHealthDTO.java @@ -8,6 +8,9 @@ import java.util.List; @Data public class AdolescentHealthDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + @NotNull(message = "User ID cannot be null") Integer userId; @NotNull(message = "Adolescent health records cannot be null") diff --git a/src/main/java/com/iemr/flw/dto/iemr/AncCounsellingCareDTO.java b/src/main/java/com/iemr/flw/dto/iemr/AncCounsellingCareDTO.java index b71086e0..3f3011d3 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/AncCounsellingCareDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/AncCounsellingCareDTO.java @@ -4,6 +4,9 @@ @Data public class AncCounsellingCareDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private String formId; private Long id ; private Long beneficiaryId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java b/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java index e39f0641..0654b5e3 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/CdrDTO.java @@ -9,6 +9,9 @@ @Data public class CdrDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/ChildRegisterDTO.java b/src/main/java/com/iemr/flw/dto/iemr/ChildRegisterDTO.java index bcc26ff3..9633a4b2 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/ChildRegisterDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/ChildRegisterDTO.java @@ -6,6 +6,9 @@ @Data public class ChildRegisterDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/ChildVaccinationDTO.java b/src/main/java/com/iemr/flw/dto/iemr/ChildVaccinationDTO.java index d1fb5501..fab5bc4e 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/ChildVaccinationDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/ChildVaccinationDTO.java @@ -8,6 +8,9 @@ @Data @JsonIgnoreProperties(ignoreUnknown = true) public class ChildVaccinationDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private long id; private Long beneficiaryRegId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java b/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java index 5e94697a..e5455388 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/DeliveryOutcomeDTO.java @@ -1,6 +1,7 @@ package com.iemr.flw.dto.iemr; import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.persistence.Column; import lombok.Data; import java.sql.Timestamp; @@ -30,4 +31,6 @@ public class DeliveryOutcomeDTO { private String createdBy; private Timestamp updatedDate; private String updatedBy; + private String syncedBy; + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/dto/iemr/DewormingFormDTO.java b/src/main/java/com/iemr/flw/dto/iemr/DewormingFormDTO.java index bf77cd65..3c3feb61 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/DewormingFormDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/DewormingFormDTO.java @@ -4,6 +4,9 @@ @Data public class DewormingFormDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private int id = 0; private String dewormingDone; private String dewormingDate; diff --git a/src/main/java/com/iemr/flw/dto/iemr/DynamicFormDTO.java b/src/main/java/com/iemr/flw/dto/iemr/DynamicFormDTO.java index c9ecb63c..9d755546 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/DynamicFormDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/DynamicFormDTO.java @@ -39,6 +39,9 @@ @NoArgsConstructor @AllArgsConstructor public class DynamicFormDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long formId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleDTO.java b/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleDTO.java index 0ec1c876..d2b004f4 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleDTO.java @@ -11,6 +11,9 @@ @Data public class EligibleCoupleDTO implements Serializable { + private String syncedBy; + private Timestamp syncedDate; + private Long id; diff --git a/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleTrackingDTO.java b/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleTrackingDTO.java index 415fd1b1..e3e88c1b 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleTrackingDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/EligibleCoupleTrackingDTO.java @@ -7,6 +7,9 @@ @Data public class EligibleCoupleTrackingDTO implements Serializable { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; @@ -47,4 +50,5 @@ public class EligibleCoupleTrackingDTO implements Serializable { private String dischargeSummary1; private String dischargeSummary2; + } diff --git a/src/main/java/com/iemr/flw/dto/iemr/FilariasisCampaignDTO.java b/src/main/java/com/iemr/flw/dto/iemr/FilariasisCampaignDTO.java index 2e53ee29..fda157d0 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/FilariasisCampaignDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/FilariasisCampaignDTO.java @@ -4,6 +4,9 @@ @Data public class FilariasisCampaignDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private String visitDate; private FilariasisCampaignListDTO fields; diff --git a/src/main/java/com/iemr/flw/dto/iemr/FormResponseDTO.java b/src/main/java/com/iemr/flw/dto/iemr/FormResponseDTO.java index d53a5823..efc74085 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/FormResponseDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/FormResponseDTO.java @@ -39,6 +39,9 @@ @AllArgsConstructor @Builder public class FormResponseDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long responseId; private Long beneficiaryId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/FormSectionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/FormSectionDTO.java index 6bb10795..52cc7405 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/FormSectionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/FormSectionDTO.java @@ -39,6 +39,9 @@ @NoArgsConstructor @AllArgsConstructor public class FormSectionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long sectionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/FormVersionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/FormVersionDTO.java index 742b0f7b..b7a042e8 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/FormVersionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/FormVersionDTO.java @@ -32,6 +32,9 @@ @NoArgsConstructor @AllArgsConstructor public class FormVersionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long versionId; private Integer versionNumber; diff --git a/src/main/java/com/iemr/flw/dto/iemr/HbncPart1DTO.java b/src/main/java/com/iemr/flw/dto/iemr/HbncPart1DTO.java index 05fcff99..46891d74 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HbncPart1DTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HbncPart1DTO.java @@ -6,6 +6,9 @@ @Data public class HbncPart1DTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/HbncPart2DTO.java b/src/main/java/com/iemr/flw/dto/iemr/HbncPart2DTO.java index 9a1becc6..0b1a9a05 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HbncPart2DTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HbncPart2DTO.java @@ -6,6 +6,9 @@ @Data public class HbncPart2DTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/HbncVisitCardDTO.java b/src/main/java/com/iemr/flw/dto/iemr/HbncVisitCardDTO.java index 6ebb7ef7..59ad402c 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HbncVisitCardDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HbncVisitCardDTO.java @@ -6,6 +6,9 @@ @Data public class HbncVisitCardDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/HbncVisitDTO.java b/src/main/java/com/iemr/flw/dto/iemr/HbncVisitDTO.java index a5043b22..2bbc345a 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HbncVisitDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HbncVisitDTO.java @@ -9,6 +9,9 @@ @Data public class HbncVisitDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + @SerializedName("id") private Integer id; diff --git a/src/main/java/com/iemr/flw/dto/iemr/HbycDTO.java b/src/main/java/com/iemr/flw/dto/iemr/HbycDTO.java index 9a983b50..a3b814d9 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HbycDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HbycDTO.java @@ -21,6 +21,9 @@ @Data public class HbycDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + @SerializedName("visit_day") private String visit_day; // 3 Months, 6 Months, etc. diff --git a/src/main/java/com/iemr/flw/dto/iemr/HighRiskAssessDTO.java b/src/main/java/com/iemr/flw/dto/iemr/HighRiskAssessDTO.java index a2f32c60..5d0fed84 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/HighRiskAssessDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/HighRiskAssessDTO.java @@ -6,6 +6,9 @@ @Data public class HighRiskAssessDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Integer userId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/IRSRoundDTO.java b/src/main/java/com/iemr/flw/dto/iemr/IRSRoundDTO.java index f2d48716..89ee050d 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/IRSRoundDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/IRSRoundDTO.java @@ -14,6 +14,9 @@ @NoArgsConstructor @AllArgsConstructor public class IRSRoundDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; @NotNull(message = "Date cannot be null") private LocalDate date; diff --git a/src/main/java/com/iemr/flw/dto/iemr/IfaDistributionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/IfaDistributionDTO.java index 32143753..d9b0004d 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/IfaDistributionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/IfaDistributionDTO.java @@ -5,6 +5,9 @@ @Data public class IfaDistributionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + @SerializedName("beneficiaryId") private Long beneficiaryId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/IncentiveActivityDTO.java b/src/main/java/com/iemr/flw/dto/iemr/IncentiveActivityDTO.java index 7aa85646..b7d8b457 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/IncentiveActivityDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/IncentiveActivityDTO.java @@ -8,6 +8,9 @@ @Data public class IncentiveActivityDTO implements Serializable { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; diff --git a/src/main/java/com/iemr/flw/dto/iemr/IncentiveRecordDTO.java b/src/main/java/com/iemr/flw/dto/iemr/IncentiveRecordDTO.java index e2a6787c..5e775d70 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/IncentiveRecordDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/IncentiveRecordDTO.java @@ -62,6 +62,8 @@ public class IncentiveRecordDTO { private String supervisorRole; private Boolean isApproved; + private String syncedBy; + private Timestamp syncedDate; diff --git a/src/main/java/com/iemr/flw/dto/iemr/InfantRegisterDTO.java b/src/main/java/com/iemr/flw/dto/iemr/InfantRegisterDTO.java index d3cc280b..50834c5a 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/InfantRegisterDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/InfantRegisterDTO.java @@ -38,5 +38,7 @@ public class InfantRegisterDTO { private String deliveryDischargeSummary4; private String isSNCU; private Boolean isReferredHigherFacility; + private String syncedBy; + private Timestamp syncedDate; } diff --git a/src/main/java/com/iemr/flw/dto/iemr/LeprosyFollowUpDTO.java b/src/main/java/com/iemr/flw/dto/iemr/LeprosyFollowUpDTO.java index aaf28a29..17686fce 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/LeprosyFollowUpDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/LeprosyFollowUpDTO.java @@ -6,6 +6,9 @@ @Data public class LeprosyFollowUpDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/MalariaFollowUpDTO.java b/src/main/java/com/iemr/flw/dto/iemr/MalariaFollowUpDTO.java index f47da8ed..b2b8054d 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/MalariaFollowUpDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/MalariaFollowUpDTO.java @@ -29,6 +29,9 @@ import java.util.List; @Data public class MalariaFollowUpDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Integer userId; private List malariaFollowListUp; } diff --git a/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java b/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java index e59047ab..136ae987 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/MdsrDTO.java @@ -6,6 +6,9 @@ @Data public class MdsrDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/MicroBirthPlanDTO.java b/src/main/java/com/iemr/flw/dto/iemr/MicroBirthPlanDTO.java index 882cee35..2a6711e2 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/MicroBirthPlanDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/MicroBirthPlanDTO.java @@ -7,6 +7,9 @@ import java.util.List; @Data public class MicroBirthPlanDTO implements Serializable { + private String syncedBy; + private java.sql.Timestamp syncedDate; + Integer userId; List entries; diff --git a/src/main/java/com/iemr/flw/dto/iemr/NotificationDTO.java b/src/main/java/com/iemr/flw/dto/iemr/NotificationDTO.java index b20dd715..cf6e48ee 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/NotificationDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/NotificationDTO.java @@ -6,6 +6,9 @@ @Data public class NotificationDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private String title; private String body; private String token; diff --git a/src/main/java/com/iemr/flw/dto/iemr/OptionConditionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/OptionConditionDTO.java index d43167a7..6cd86e77 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/OptionConditionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/OptionConditionDTO.java @@ -38,6 +38,9 @@ @NoArgsConstructor @AllArgsConstructor public class OptionConditionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long conditionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/OrsDistributionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/OrsDistributionDTO.java index 7bdfd4fd..0b4143b8 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/OrsDistributionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/OrsDistributionDTO.java @@ -4,6 +4,9 @@ @Data public class OrsDistributionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long beneficiaryId; private Long houseHoldId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/PNCVisitDTO.java b/src/main/java/com/iemr/flw/dto/iemr/PNCVisitDTO.java index 9bfc4fc7..8829cfd7 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/PNCVisitDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/PNCVisitDTO.java @@ -6,6 +6,9 @@ @Data public class PNCVisitDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; // private Integer pncVisit; diff --git a/src/main/java/com/iemr/flw/dto/iemr/PmsmaDTO.java b/src/main/java/com/iemr/flw/dto/iemr/PmsmaDTO.java index 5c0adfc9..f0b4f8f9 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/PmsmaDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/PmsmaDTO.java @@ -6,6 +6,9 @@ @Data public class PmsmaDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Long benId; private String rchNumber; diff --git a/src/main/java/com/iemr/flw/dto/iemr/PregnantWomanDTO.java b/src/main/java/com/iemr/flw/dto/iemr/PregnantWomanDTO.java index 5240f667..816db8ed 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/PregnantWomanDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/PregnantWomanDTO.java @@ -6,6 +6,9 @@ @Data public class PregnantWomanDTO { + private String syncedBy; + private Timestamp syncedDate; + private Long id; private Long benId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/QuestionOptionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/QuestionOptionDTO.java index 6682404a..3c2b1440 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/QuestionOptionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/QuestionOptionDTO.java @@ -38,6 +38,9 @@ @NoArgsConstructor @AllArgsConstructor public class QuestionOptionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long optionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/QuestionResponseDTO.java b/src/main/java/com/iemr/flw/dto/iemr/QuestionResponseDTO.java index 03f1622e..1bcff9c9 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/QuestionResponseDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/QuestionResponseDTO.java @@ -37,6 +37,9 @@ @AllArgsConstructor @Builder public class QuestionResponseDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long questionResponseId; private Long questionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/QuestionValidationDTO.java b/src/main/java/com/iemr/flw/dto/iemr/QuestionValidationDTO.java index 72c144c5..594c8e6e 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/QuestionValidationDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/QuestionValidationDTO.java @@ -36,6 +36,9 @@ @NoArgsConstructor @AllArgsConstructor public class QuestionValidationDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long validationId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/SectionQuestionDTO.java b/src/main/java/com/iemr/flw/dto/iemr/SectionQuestionDTO.java index 11a81430..720b4e26 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/SectionQuestionDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/SectionQuestionDTO.java @@ -40,6 +40,9 @@ @NoArgsConstructor @AllArgsConstructor public class SectionQuestionDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long questionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/SectionResponseDTO.java b/src/main/java/com/iemr/flw/dto/iemr/SectionResponseDTO.java index 78c918fe..26b27324 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/SectionResponseDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/SectionResponseDTO.java @@ -39,6 +39,9 @@ @AllArgsConstructor @Builder public class SectionResponseDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long sectionResponseId; private Long sectionId; diff --git a/src/main/java/com/iemr/flw/dto/iemr/StopTBRegistrationDto.java b/src/main/java/com/iemr/flw/dto/iemr/StopTBRegistrationDto.java index 64194ff1..84984e2d 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/StopTBRegistrationDto.java +++ b/src/main/java/com/iemr/flw/dto/iemr/StopTBRegistrationDto.java @@ -5,6 +5,9 @@ @Data public class StopTBRegistrationDto { + private String syncedBy; + private java.sql.Timestamp syncedDate; + // Standard beneficiary fields — forwarded to Common-API @JsonRawValue diff --git a/src/main/java/com/iemr/flw/dto/iemr/TBConfirmedRequestDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TBConfirmedRequestDTO.java index d3e76a4a..9d3dab17 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/TBConfirmedRequestDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/TBConfirmedRequestDTO.java @@ -10,4 +10,5 @@ public class TBConfirmedRequestDTO { private Long userId; private List tbConfirmedList; + } diff --git a/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java index 36f48dfc..4a1936d4 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/TBScreeningDTO.java @@ -1,34 +1,32 @@ package com.iemr.flw.dto.iemr; +import jakarta.persistence.Column; import lombok.Data; import java.sql.Timestamp; +import java.util.List; @Data public class TBScreeningDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; - private Long id; + private Long id; private Long benId; + private Long benRegId; + private Long visitCode; private Timestamp visitDate; private Boolean coughMoreThan2Weeks; - private Boolean bloodInSputum; - private Boolean feverMoreThan2Weeks; - private Boolean lossOfWeight; - private Boolean nightSweats; - private Boolean historyOfTb; - private Boolean takingAntiTBDrugs; - private Boolean familySufferingFromTB; - private Boolean riseOfFever; private Boolean lossOfAppetite; private Boolean age; @@ -37,7 +35,63 @@ public class TBScreeningDTO { private Boolean bmi; private Boolean contactWithTBPatient; private Boolean historyOfTBInLastFiveYrs; + + // Additional screening fields + private String riskFactor; + private Boolean fatigue; + private Boolean chestPain; + private Boolean shortBreath; + + // Screening option IDs + private Integer bloodCheckId; + private Integer coughCheckId; + private Integer familyCheckId; + private Integer feverCheckId; + private Integer historyCheckId; + private Integer weightCheckId; + private Integer sweatsCheckId; + private Integer drugsCheckId; + private Integer lossOfAppetiteId; + private Integer riseOfFeverId; + private String sympotomatic; private String asymptomatic; private String recommandateTest; -} + + // Recommended tests and referrals + private String recommendedForLiquidCulture; + private Integer recommendedForLiquidCultureId; + + private String recommendedForTruenat; + private Integer recommendedForTruenatId; + + private String referredForDigitalChestXray; + private Integer referredForDigitalChestXrayId; + + private String referredForSputumCollection; + private Integer referredForSputumCollectionId; + + private String sputumSampleSubmittedAt; + private String testDenialReasons; + + // Audit fields + private String createdBy; + private Timestamp createdDate; + private Boolean deleted; + private Timestamp lastModDate; + private String modifiedBy; + private String processed; + + // Service and location details + private Integer parkingPlaceID; + private Integer providerServiceMapId; + private Integer vanID; + private Long vanSerialNo; + private Integer hivStatusId; + private String hivStatus; + private List keyPopulationRiskFactorIds; + private List keyPopulationRiskFactors; + private Boolean failureToGainWeight; + private Boolean decreasedActivityOrPlayfulness ; + +} \ No newline at end of file diff --git a/src/main/java/com/iemr/flw/dto/iemr/TBSuspectedDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TBSuspectedDTO.java index d09fa9bf..23e568ef 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/TBSuspectedDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/TBSuspectedDTO.java @@ -6,6 +6,9 @@ @Data public class TBSuspectedDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private Long id; private Timestamp updateDate; diff --git a/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpDTO.java new file mode 100644 index 00000000..a0a3bcee --- /dev/null +++ b/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpDTO.java @@ -0,0 +1,14 @@ +package com.iemr.flw.dto.iemr; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class TbReferralFollowUpDTO { + private Long benId; + private Integer userId; + private Long houseHoldId; + TbReferralFollowUpListDTO fields; +} diff --git a/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpListDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpListDTO.java new file mode 100644 index 00000000..a9f3e07e --- /dev/null +++ b/src/main/java/com/iemr/flw/dto/iemr/TbReferralFollowUpListDTO.java @@ -0,0 +1,14 @@ +package com.iemr.flw.dto.iemr; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class TbReferralFollowUpListDTO { + @JsonProperty("referred_on_date") + private String referredOnDate; + @JsonProperty("follow_up_date") + private String followUpDate; + @JsonProperty("follow_up_status") + private String followUpStatus; +} diff --git a/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpDTO.java new file mode 100644 index 00000000..370da8eb --- /dev/null +++ b/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpDTO.java @@ -0,0 +1,15 @@ +package com.iemr.flw.dto.iemr; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class TbTptFollowUpDTO { + @JsonProperty("ben_id") + private Long benId; + @JsonProperty("user_id") + private Integer userId; + @JsonProperty("house_hold_id") + private Long houseHoldId; + TbTptFollowUpListDTO fields; +} diff --git a/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpListDTO.java b/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpListDTO.java new file mode 100644 index 00000000..92b5cb02 --- /dev/null +++ b/src/main/java/com/iemr/flw/dto/iemr/TbTptFollowUpListDTO.java @@ -0,0 +1,46 @@ +package com.iemr.flw.dto.iemr; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class TbTptFollowUpListDTO { + @JsonProperty("regimen_type") + private String regimenType; + + @JsonProperty("treatment_start_date") + private String treatmentStartDate; + + @JsonProperty("expected_treatment_completion_date") + private String expectedTreatmentCompletionDate; + + @JsonProperty("follow_up_date") + private String followUpDate; + + @JsonProperty("monthly_follow_up") + private String monthlyFollowUp; + + @JsonProperty("medicine_adherence") + private String medicineAdherence; + + @JsonProperty("any_discomfort") + private String anyDiscomfort; + + @JsonProperty("treatment_completed") + private String treatmentCompleted; + + @JsonProperty("actual_completion_date") + private String actualCompletionDate; + + @JsonProperty("tpt_outcome") + private String tptOutcome; + + @JsonProperty("date_of_death") + private String dateOfDeath; + + @JsonProperty("place_of_death") + private String placeOfDeath; + + @JsonProperty("reason_for_death") + private String reasonForDeath; +} diff --git a/src/main/java/com/iemr/flw/dto/iemr/VHNDFormDTO.java b/src/main/java/com/iemr/flw/dto/iemr/VHNDFormDTO.java index bee7f247..aa99186a 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/VHNDFormDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/VHNDFormDTO.java @@ -29,6 +29,9 @@ @Data public class VHNDFormDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private String vhndDate; private String place; private Integer noOfBeneficiariesAttended; diff --git a/src/main/java/com/iemr/flw/dto/iemr/VaccineDTO.java b/src/main/java/com/iemr/flw/dto/iemr/VaccineDTO.java index a3019210..5f91cdde 100644 --- a/src/main/java/com/iemr/flw/dto/iemr/VaccineDTO.java +++ b/src/main/java/com/iemr/flw/dto/iemr/VaccineDTO.java @@ -6,6 +6,9 @@ @Data @JsonIgnoreProperties(ignoreUnknown = true) public class VaccineDTO { + private String syncedBy; + private java.sql.Timestamp syncedDate; + private short vaccineId; private String immunizationService; diff --git a/src/main/java/com/iemr/flw/repo/iemr/BenReferDetailsRepo.java b/src/main/java/com/iemr/flw/repo/iemr/BenReferDetailsRepo.java index 9cb35662..25a0b652 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/BenReferDetailsRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/BenReferDetailsRepo.java @@ -51,8 +51,8 @@ public interface BenReferDetailsRepo extends JpaRepository { - @Query(value = "SELECT cv FROM ChildVaccination cv WHERE cv.createdBy = :userId and cv.createdDate >= :fromDate and cv.createdDate <= :toDate") - List getChildVaccinationDetails(@Param("userId") String userId, - @Param("fromDate") Timestamp fromDate, @Param("toDate") Timestamp toDate); + @Query(value = "SELECT cv FROM ChildVaccination cv WHERE cv.createdBy = :userId") + List getChildVaccinationDetails(@Param("userId") String userId); ChildVaccination findChildVaccinationByBeneficiaryRegIdAndCreatedDateAndVaccineName(Long benRegId, Timestamp createdDate, String vaccine); diff --git a/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java b/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java index bc6587de..74acfa5f 100644 --- a/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java +++ b/src/main/java/com/iemr/flw/repo/iemr/IncentiveRecordRepo.java @@ -100,18 +100,18 @@ List getStatusCountByAshaIdANM( @Param("endDate") Timestamp endDate); @Query(""" -SELECT - SUM(CASE WHEN record.approvalStatus = 101 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus = 102 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus = 103 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus IN (101,105) THEN 1 ELSE 0 END) -FROM IncentiveActivityRecord record -WHERE record.ashaId = :ashaId -AND record.isClaimed = true -AND record.isDefaultActivity = true -AND record.createdDate >= :startDate -AND record.createdDate < :endDate -""") + SELECT + SUM(CASE WHEN record.approvalStatus = 101 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus = 102 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus = 103 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus IN (101,105) THEN 1 ELSE 0 END) + FROM IncentiveActivityRecord record + WHERE record.ashaId = :ashaId + AND record.isClaimed = true + AND record.isDefaultActivity = true + AND record.createdDate >= :startDate + AND record.createdDate < :endDate + """) List getStatusCountByAshaIdOfDefaultActivity( @Param("ashaId") Integer ashaId, @Param("startDate") Timestamp startDate, @@ -119,24 +119,23 @@ List getStatusCountByAshaIdOfDefaultActivity( @Query(""" -SELECT - SUM(CASE WHEN record.approvalStatus = 101 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus = 102 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus = 103 THEN 1 ELSE 0 END), - SUM(CASE WHEN record.approvalStatus IN (101,105) THEN 1 ELSE 0 END) -FROM IncentiveActivityRecord record -WHERE record.ashaId = :ashaId -AND record.isClaimed = false -AND record.createdDate >= :startDate -AND record.createdDate < :endDate -""") + SELECT + SUM(CASE WHEN record.approvalStatus = 101 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus = 102 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus = 103 THEN 1 ELSE 0 END), + SUM(CASE WHEN record.approvalStatus IN (101,105) THEN 1 ELSE 0 END) + FROM IncentiveActivityRecord record + WHERE record.ashaId = :ashaId + AND record.isClaimed = false + AND record.createdDate >= :startDate + AND record.createdDate < :endDate + """) List getStatusUnclaimedCountByAshaId( @Param("ashaId") Integer ashaId, @Param("startDate") Timestamp startDate, @Param("endDate") Timestamp endDate); - @Query("SELECT COALESCE(SUM(record.amount), 0) " + "FROM IncentiveActivityRecord record " + "JOIN IncentiveActivity master ON record.activityId = master.id " + @@ -155,26 +154,26 @@ Long getTotalAmountByAsha( @Query(""" - SELECT COALESCE(SUM(record.amount), 0) - FROM IncentiveActivityRecord record - JOIN IncentiveActivity master ON record.activityId = master.id - WHERE record.ashaId = :ashaId - AND master.state = :stateCode - AND record.isClaimed = true - AND record.startDate >= :fromDate - AND record.endDate <= :toDate - AND ( - :approvalStatus = 0 - OR ( - :approvalStatus = 102 - AND record.approvalStatus IN (102, 105) - ) - OR ( - :approvalStatus <> 102 - AND record.approvalStatus = :approvalStatus - ) - ) -""") + SELECT COALESCE(SUM(record.amount), 0) + FROM IncentiveActivityRecord record + JOIN IncentiveActivity master ON record.activityId = master.id + WHERE record.ashaId = :ashaId + AND master.state = :stateCode + AND record.isClaimed = true + AND record.startDate >= :fromDate + AND record.endDate <= :toDate + AND ( + :approvalStatus = 0 + OR ( + :approvalStatus = 102 + AND record.approvalStatus IN (102, 105) + ) + OR ( + :approvalStatus <> 102 + AND record.approvalStatus = :approvalStatus + ) + ) + """) Long getTotalAmountByAshaANM( @Param("ashaId") Integer ashaId, @Param("fromDate") Timestamp fromDate, @@ -184,27 +183,27 @@ Long getTotalAmountByAshaANM( ); @Query(""" - SELECT COALESCE(SUM(record.amount), 0) - FROM IncentiveActivityRecord record - JOIN IncentiveActivity master ON record.activityId = master.id - WHERE record.ashaId = :ashaId - AND master.state = :stateCode - AND record.isClaimed = true - AND record.isDefaultActivity = false - AND record.startDate >= :fromDate - AND record.endDate <= :toDate - AND ( - :approvalStatus = 0 - OR ( - :approvalStatus = 102 - AND record.approvalStatus IN (102, 105) - ) - OR ( - :approvalStatus <> 102 - AND record.approvalStatus = :approvalStatus - ) - ) -""") + SELECT COALESCE(SUM(record.amount), 0) + FROM IncentiveActivityRecord record + JOIN IncentiveActivity master ON record.activityId = master.id + WHERE record.ashaId = :ashaId + AND master.state = :stateCode + AND record.isClaimed = true + AND record.isDefaultActivity = false + AND record.startDate >= :fromDate + AND record.endDate <= :toDate + AND ( + :approvalStatus = 0 + OR ( + :approvalStatus = 102 + AND record.approvalStatus IN (102, 105) + ) + OR ( + :approvalStatus <> 102 + AND record.approvalStatus = :approvalStatus + ) + ) + """) Long getTotalAmountByAshaANMbeforeClaimedHour( @Param("ashaId") Integer ashaId, @Param("fromDate") Timestamp fromDate, @@ -304,17 +303,17 @@ int updateApprovalStatusByIncentiveId( @Modifying @Transactional @Query(""" - UPDATE IncentiveActivityRecord iar - SET iar.approvalStatus = :approvalStatus, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.reason = NULL, - iar.otherReason = NULL, - iar.approvalDate = :approvalDate, - iar.verifiedByUserName = :ashaSupervisorUserName - WHERE iar.id IN :incentiveIds - AND iar.ashaId = :ashaId - AND iar.isClaimed = true - """) + UPDATE IncentiveActivityRecord iar + SET iar.approvalStatus = :approvalStatus, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.reason = NULL, + iar.otherReason = NULL, + iar.approvalDate = :approvalDate, + iar.verifiedByUserName = :ashaSupervisorUserName + WHERE iar.id IN :incentiveIds + AND iar.ashaId = :ashaId + AND iar.isClaimed = true + """) int updateApprovalStatusByIncentiveIds( @Param("incentiveIds") List incentiveIds, @Param("ashaId") Integer ashaId, @@ -328,19 +327,19 @@ int updateApprovalStatusByIncentiveIds( @Modifying @Transactional @Query(""" -UPDATE IncentiveActivityRecord iar -SET - iar.approvalStatus = :approvalStatus, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.verifiedByUserName = :ashaSupervisorUserName, - iar.approvalDate = :approvalDate, - iar.reason = NULL, - iar.otherReason = NULL -WHERE iar.ashaId = :ashaId -AND iar.isClaimed = true -AND iar.createdDate >= :startDate -AND iar.createdDate < :endDate -""") + UPDATE IncentiveActivityRecord iar + SET + iar.approvalStatus = :approvalStatus, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.verifiedByUserName = :ashaSupervisorUserName, + iar.approvalDate = :approvalDate, + iar.reason = NULL, + iar.otherReason = NULL + WHERE iar.ashaId = :ashaId + AND iar.isClaimed = true + AND iar.createdDate >= :startDate + AND iar.createdDate < :endDate + """) int updateApprovalStatusByAshaAndDateRangeForDefaultActivity( @Param("ashaId") Integer ashaId, @Param("approvalStatus") Integer approvalStatus, @@ -354,18 +353,18 @@ int updateApprovalStatusByAshaAndDateRangeForDefaultActivity( @Modifying @Transactional @Query(""" -UPDATE IncentiveActivityRecord iar -SET - iar.approvalStatus = :approvalStatus, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.verifiedByUserName = :ashaSupervisorUserName, - iar.approvalDate = :approvalDate, - iar.reason = NULL, - iar.otherReason = NULL -WHERE iar.id = :incentiveId -AND iar.ashaId = :ashaId -AND iar.isClaimed = true -""") + UPDATE IncentiveActivityRecord iar + SET + iar.approvalStatus = :approvalStatus, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.verifiedByUserName = :ashaSupervisorUserName, + iar.approvalDate = :approvalDate, + iar.reason = NULL, + iar.otherReason = NULL + WHERE iar.id = :incentiveId + AND iar.ashaId = :ashaId + AND iar.isClaimed = true + """) int updateApprovalStatusByIncentiveIdForDefaultActivity( @Param("incentiveId") Long incentiveId, @Param("ashaId") Integer ashaId, @@ -378,18 +377,18 @@ int updateApprovalStatusByIncentiveIdForDefaultActivity( @Modifying @Transactional @Query(""" - UPDATE IncentiveActivityRecord iar - SET iar.approvalStatus = :approvalStatus, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.verifiedByUserName = :ashaSupervisorUserName, - iar.approvalDate = :approvalDate, - iar.reason = NULL, - iar.otherReason = NULL - WHERE iar.id IN :incentiveIds - AND iar.ashaId = :ashaId - AND iar.isClaimed = true - AND iar.isDefaultActivity = true - """) + UPDATE IncentiveActivityRecord iar + SET iar.approvalStatus = :approvalStatus, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.verifiedByUserName = :ashaSupervisorUserName, + iar.approvalDate = :approvalDate, + iar.reason = NULL, + iar.otherReason = NULL + WHERE iar.id IN :incentiveIds + AND iar.ashaId = :ashaId + AND iar.isClaimed = true + AND iar.isDefaultActivity = true + """) int updateApprovalStatusByIncentiveIdsForDefaultActivity( @Param("incentiveIds") List incentiveIds, @Param("ashaId") Integer ashaId, @@ -403,17 +402,17 @@ int updateApprovalStatusByIncentiveIdsForDefaultActivity( @Modifying @Transactional @Query(""" - UPDATE IncentiveActivityRecord iar - SET iar.approvalStatus = :approvalStatus, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.verifiedByUserName = :ashaSupervisorUserName, - iar.approvalDate = :approvalDate, - iar.reason = NULL, - iar.otherReason = NULL - WHERE iar.id IN :incentiveIds - AND iar.ashaId = :ashaId - AND iar.isClaimed = true - """) + UPDATE IncentiveActivityRecord iar + SET iar.approvalStatus = :approvalStatus, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.verifiedByUserName = :ashaSupervisorUserName, + iar.approvalDate = :approvalDate, + iar.reason = NULL, + iar.otherReason = NULL + WHERE iar.id IN :incentiveIds + AND iar.ashaId = :ashaId + AND iar.isClaimed = true + """) int updateApprovalStatusByIncentiveIdsForDefaultActivityForAnm( @Param("incentiveIds") List incentiveIds, @Param("ashaId") Integer ashaId, @@ -422,6 +421,7 @@ int updateApprovalStatusByIncentiveIdsForDefaultActivityForAnm( @Param("ashaSupervisorUserId") Integer ashaSupervisorUserId, @Param("ashaSupervisorUserName") String ashaSupervisorUserName ); + @Modifying @Transactional @Query("UPDATE IncentiveActivityRecord iar " @@ -470,17 +470,17 @@ int updateApprovalStatusByIdAndIncentiveId( @Modifying @Transactional @Query(""" - UPDATE IncentiveActivityRecord iar - SET iar.approvalStatus = :status, - iar.verifiedByUserId = :ashaSupervisorUserId, - iar.verifiedByUserName = :ashaSupervisorUserName, - iar.reason = :reason, - iar.otherReason = :otherReason, - iar.approvalDate = :approvalDate - WHERE iar.id IN :incentiveIds - AND iar.ashaId = :ashaId - AND iar.isClaimed = true - """) + UPDATE IncentiveActivityRecord iar + SET iar.approvalStatus = :status, + iar.verifiedByUserId = :ashaSupervisorUserId, + iar.verifiedByUserName = :ashaSupervisorUserName, + iar.reason = :reason, + iar.otherReason = :otherReason, + iar.approvalDate = :approvalDate + WHERE iar.id IN :incentiveIds + AND iar.ashaId = :ashaId + AND iar.isClaimed = true + """) int updateApprovalStatusByIdsAndIncentiveIds( @Param("status") Integer status, @Param("ashaId") Integer ashaId, @@ -550,6 +550,7 @@ List getRecordsBySuperVisor( @Param("startDate") Timestamp startDate, @Param("endDate") Timestamp endDate, @Param("approvalStatus") Integer approvalStatus); + @Modifying @Transactional @Query("UPDATE IncentiveActivityRecord iar " @@ -568,24 +569,33 @@ int updateClaimStatusByAshaAndIncentiveIds( @Modifying(clearAutomatically = true, flushAutomatically = true) @Transactional @Query(""" - UPDATE IncentiveActivityRecord iar - SET iar.approvalStatus = 102, - iar.isClaimed = false, - iar.calimedDate = NULL, - iar.approvalDate = NULL, - iar.reason = NULL, - iar.otherReason = NULL, - iar.verifiedByUserId = NULL, - iar.verifiedByUserName = NULL, - iar.updatedDate = :updatedDate, - iar.updatedBy = :updatedBy - WHERE iar.approvalStatus = 103 - AND iar.isClaimed = true - AND iar.endDate < :currentMonthStart -""") + UPDATE IncentiveActivityRecord iar + SET iar.approvalStatus = 102, + iar.isClaimed = false, + iar.calimedDate = NULL, + iar.approvalDate = NULL, + iar.reason = NULL, + iar.otherReason = NULL, + iar.verifiedByUserId = NULL, + iar.verifiedByUserName = NULL, + iar.updatedDate = :updatedDate, + iar.updatedBy = :updatedBy + WHERE iar.approvalStatus = 103 + AND iar.isClaimed = true + AND iar.endDate < :currentMonthStart + """) int resetRejectedIncentivesForNewMonth( @Param("currentMonthStart") Timestamp currentMonthStart, @Param("updatedDate") Timestamp updatedDate, @Param("updatedBy") String updatedBy ); + + @Query("SELECT r FROM IncentiveActivityRecord r " + + "WHERE r.ashaId = :ashaId " + + "AND r.approvalStatus = :status") + List findApprovedForMonth( + @Param("ashaId") Integer ashaId, + @Param("status") Integer status); } + + diff --git a/src/main/java/com/iemr/flw/repo/iemr/TbReferralFollowUpRepo.java b/src/main/java/com/iemr/flw/repo/iemr/TbReferralFollowUpRepo.java new file mode 100644 index 00000000..e41bb6b8 --- /dev/null +++ b/src/main/java/com/iemr/flw/repo/iemr/TbReferralFollowUpRepo.java @@ -0,0 +1,15 @@ +package com.iemr.flw.repo.iemr; + +import com.iemr.flw.domain.iemr.TbReferralFollowUp; +import io.swagger.v3.oas.annotations.info.License; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import javax.swing.*; +import java.util.List; + +@Repository +public interface TbReferralFollowUpRepo extends JpaRepository { + List findByUserId(Integer userId); +} diff --git a/src/main/java/com/iemr/flw/repo/iemr/TbTptFollowUpRepo.java b/src/main/java/com/iemr/flw/repo/iemr/TbTptFollowUpRepo.java new file mode 100644 index 00000000..7e398aff --- /dev/null +++ b/src/main/java/com/iemr/flw/repo/iemr/TbTptFollowUpRepo.java @@ -0,0 +1,16 @@ +package com.iemr.flw.repo.iemr; + +import com.iemr.flw.domain.iemr.TbReferralFollowUp; +import com.iemr.flw.domain.iemr.TbTptFollowUp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.sql.Timestamp; +import java.util.List; + +@Repository +public interface TbTptFollowUpRepo extends JpaRepository { + List findByUserId(Integer userId); + + List findByBenIdAndRegimenTypeAndTreatmentStartDate(Long benId, String regimenType, Timestamp treatmentStartDate); +} diff --git a/src/main/java/com/iemr/flw/service/TBConfirmedCaseService.java b/src/main/java/com/iemr/flw/service/TBConfirmedCaseService.java index 6471f799..23871f1b 100644 --- a/src/main/java/com/iemr/flw/service/TBConfirmedCaseService.java +++ b/src/main/java/com/iemr/flw/service/TBConfirmedCaseService.java @@ -1,6 +1,8 @@ package com.iemr.flw.service; import com.iemr.flw.domain.iemr.TBConfirmedCaseDTO; +import com.iemr.flw.dto.iemr.TbReferralFollowUpDTO; +import com.iemr.flw.dto.iemr.TbTptFollowUpDTO; import org.springframework.stereotype.Service; import java.util.List; @@ -15,4 +17,12 @@ public interface TBConfirmedCaseService { String getByUserId(String authorisation) throws Exception; String getByProviderServiceMapId(Integer providerServiceMapID, Integer villageID) throws Exception; + + String saveReferralFollowUp(TbReferralFollowUpDTO requestDTO, String token); + + String getReferralFollowUp(String token); + + String saveTptFollowUp(TbTptFollowUpDTO requestDTO, String token); + + String getTptFollowUp(String token); } diff --git a/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java index 396c79a2..dda2bb9d 100644 --- a/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/BeneficiaryServiceImpl.java @@ -363,11 +363,6 @@ private String getMappingsForAddressIDs(List addressLi if (benAddressOBJ.getPermPinCode() != null) benDetailsRMNCH_OBJ.setPinCode(benAddressOBJ.getPermPinCode()); - // Map GPS double fields to the exposed latitude/longitude BigDecimal fields for response - if (benDetailsRMNCH_OBJ.getGpsLatitude() != null) - benDetailsRMNCH_OBJ.setLatitude(BigDecimal.valueOf(benDetailsRMNCH_OBJ.getGpsLatitude())); - if (benDetailsRMNCH_OBJ.getGpsLongitude() != null) - benDetailsRMNCH_OBJ.setLongitude(BigDecimal.valueOf(benDetailsRMNCH_OBJ.getGpsLongitude())); // ----------------------------------------------------------------------------- diff --git a/src/main/java/com/iemr/flw/service/impl/CampaignServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/CampaignServiceImpl.java index f9c07632..ffacf0a3 100644 --- a/src/main/java/com/iemr/flw/service/impl/CampaignServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/CampaignServiceImpl.java @@ -459,7 +459,7 @@ private void checkMonthlyPulsePolioIncentive(Integer ashaId,LocalDate startDate, private void checkMonthlyFilariasisIncentive(Integer ashaId,LocalDate startDate,LocalDate endDate) { IncentiveActivity FILARIASIS_MEDICINE_DISTRIBUTION = incentivesRepo.findIncentiveMasterByNameAndGroup("FILARIASIS_MEDICINE_DISTRIBUTION", GroupName.ACTIVITY.getDisplayName()); if (FILARIASIS_MEDICINE_DISTRIBUTION != null) { - addAshaIncentiveRecord(FILARIASIS_MEDICINE_DISTRIBUTION, ashaId,startDate,endDate); + addAshaIncentiveRecordMda(FILARIASIS_MEDICINE_DISTRIBUTION, ashaId,startDate,endDate); } } @@ -473,7 +473,6 @@ private void checkMonthlyPulseOrsDistribution(Integer ashaId,LocalDate startDate } private void addAshaIncentiveRecord(IncentiveActivity incentiveActivity, Integer ashaId,LocalDate startDate,LocalDate endDate) { - Timestamp timestamp = Timestamp.valueOf(LocalDateTime.now()); Timestamp startOfMonth = Timestamp.valueOf(startDate.atStartOfDay()); Timestamp endOfMonth = Timestamp.valueOf(endDate.atStartOfDay()); @@ -490,11 +489,41 @@ private void addAshaIncentiveRecord(IncentiveActivity incentiveActivity, Integer if (record == null) { record = new IncentiveActivityRecord(); record.setActivityId(incentiveActivity.getId()); - record.setCreatedDate(timestamp); + record.setCreatedDate(endOfMonth); record.setCreatedBy(userServiceRoleRepo.getUserNamedByUserId(ashaId)); - record.setStartDate(timestamp); - record.setEndDate(timestamp); - record.setUpdatedDate(timestamp); + record.setStartDate(endOfMonth); + record.setEndDate(endOfMonth); + record.setUpdatedDate(endOfMonth); + record.setUpdatedBy(userServiceRoleRepo.getUserNamedByUserId(ashaId)); + record.setBenId(0L); + record.setAshaId(ashaId); + record.setAmount(Long.valueOf(incentiveActivity.getRate())); + recordRepo.save(record); + } + } + + + private void addAshaIncentiveRecordMda(IncentiveActivity incentiveActivity, Integer ashaId,LocalDate startDate,LocalDate endDate) { + + Timestamp startOfMonth = Timestamp.valueOf(startDate.atStartOfDay()); + Timestamp endOfMonth = Timestamp.valueOf(endDate.atStartOfDay()); + + IncentiveActivityRecord record = recordRepo.findRecordByActivityIdCreatedDateBenId( + incentiveActivity.getId(), + endOfMonth, + 0L,ashaId + + ); + + + if (record == null) { + record = new IncentiveActivityRecord(); + record.setActivityId(incentiveActivity.getId()); + record.setCreatedDate(endOfMonth); + record.setCreatedBy(userServiceRoleRepo.getUserNamedByUserId(ashaId)); + record.setStartDate(endOfMonth); + record.setEndDate(endOfMonth); + record.setUpdatedDate(endOfMonth); record.setUpdatedBy(userServiceRoleRepo.getUserNamedByUserId(ashaId)); record.setBenId(0L); record.setAshaId(ashaId); diff --git a/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java index 46fac5ef..adf47563 100644 --- a/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/ChildCareServiceImpl.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; +import com.iemr.flw.domain.identity.RMNCHBeneficiaryDetailsRmnch; import com.iemr.flw.domain.iemr.*; import com.iemr.flw.dto.identity.GetBenRequestHandler; import com.iemr.flw.dto.iemr.*; @@ -16,6 +17,7 @@ import com.iemr.flw.service.UserService; import com.iemr.flw.utils.JwtUtil; import jakarta.persistence.EntityNotFoundException; +import jakarta.transaction.Transactional; import org.aspectj.weaver.ast.Or; import org.modelmapper.ModelMapper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @Service @@ -98,6 +101,7 @@ public class ChildCareServiceImpl implements ChildCareService { @Autowired private PNCVisitRepo pncVisitRepo; + private final ConcurrentHashMap lockMap = new ConcurrentHashMap<>(); @Override public String registerHBYC(List hbycDTOs) { @@ -286,6 +290,7 @@ public List getHBNCDetails(GetBenRequestHandler dto) { responseDTO.setFields(fields); result.add(responseDTO); + } page++; @@ -418,7 +423,7 @@ public List getChildVaccinationDetails(GetBenRequestHandler try { String user = beneficiaryRepo.getUserName(dto.getAshaId()); List vaccinationDetails = - childVaccinationRepo.getChildVaccinationDetails(user, dto.getFromDate(), dto.getToDate()); + childVaccinationRepo.getChildVaccinationDetails(user); if (vaccinationDetails.isEmpty()) { return new ArrayList<>(); @@ -583,6 +588,7 @@ public String saveSamDetails(List samRequest, Integer userId, String use samVisit.setVisitLabel(samDTO.getFields().getVisit_label()); samVisit.setWeightForHeightStatus(samDTO.getFields().getWeight_for_height_status()); samVisit.setIsChildReferredNrc(samDTO.getFields().getIs_child_referred_nrc()); + samVisit.setIsChildAdmittedNrc(samDTO.getFields().getIs_child_admitted_nrc()); samVisit.setNrcAdmissionDate(samDTO.getFields().getNrc_admission_date()); samVisit.setIsChildDischargedNrc(samDTO.getFields().getIs_child_discharged_nrc()); samVisit.setNrcDischargeDate(samDTO.getFields().getNrc_discharge_date()); @@ -1003,12 +1009,32 @@ private void checkAndAddHbncIncentives(List hbncVisits, Integer userI } if (stateCode.equals(StateCode.CG.getStateCode())) { - if (hbncVisit.getVisit_day().equals("42nd Day")) { - IncentiveActivity visitActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.ACTIVITY.getDisplayName()); + if ("42nd Day".equals(hbncVisit.getVisit_day())) { + IncentiveActivity visitActivityCH = incentivesRepo + .findIncentiveMasterByNameAndGroup("HBNC_0_42_DAYS", GroupName.ACTIVITY.getDisplayName()); createIncentiveRecordforHbncVisit(hbncVisit, benId, visitActivityCH, "HBNC_0_42_DAYS"); + // 1. Child ka record + List childList = + beneficiaryRepo.findByBenficieryid(hbncVisit.getBeneficiaryId()); + + if (childList != null && !childList.isEmpty()) { + RMNCHBeneficiaryDetailsRmnch child = childList.get(childList.size() - 1); + // 2. Same household se mother + RMNCHBeneficiaryDetailsRmnch mother = beneficiaryRepo + .findByHouseoldId(child.getHouseoldId()).stream() + .filter(b -> !"NewBorn".equalsIgnoreCase(b.getRegistrationType()) + && "Postnatal Mother".equalsIgnoreCase(b.getReproductiveStatus())) + .findFirst() + .orElse(null); + + if (mother != null) { + generateHighRiskPostpartumIncentives(mother.getBenficieryid(), true, userId); + } + } } + } @@ -1018,6 +1044,80 @@ private void checkAndAddHbncIncentives(List hbncVisits, Integer userI } + private void generateHighRiskPostpartumIncentives(Long motherBenId, boolean childHbnc42Done, Integer userId) { + + if (!childHbnc42Done) return; + + List motherPnc = pncVisitRepo.findByBenId(motherBenId); + + PNCVisit visit42 = motherPnc.stream() + .filter(v -> Integer.valueOf(42).equals(v.getPncPeriod())) + .findFirst() + .orElse(null); + + if (visit42 == null) return; + + boolean hasDangerSign = motherPnc.stream() + .anyMatch(v -> v.getMotherDangerSign() != null + && !v.getMotherDangerSign().isEmpty() + && v.getPncPeriod() != null + && v.getPncPeriod() >= 1 + && v.getPncPeriod() <= 42); + + if (hasDangerSign) { + IncentiveActivity act1 = incentivesRepo.findIncentiveMasterByNameAndGroup( + "HIGH_RISK_POSTPARTUM_CARE", GroupName.ACTIVITY.getDisplayName()); + if (act1 != null) { + addIncenticeRecord(visit42, userId, act1); // date 42 wale visit ki + } + } + + boolean motherAlive = !Boolean.TRUE.equals(visit42.getMotherDeath()); + + boolean hrpConfirmed = ancVisitRepo.findByBenId(motherBenId).stream() + .filter(a -> a.getAncVisit() != null && a.getAncVisit() >= 1 && a.getAncVisit() <= 7) + .anyMatch(a -> Boolean.TRUE.equals(a.getIsHrpConfirmed())); + + if (motherAlive && hrpConfirmed) { + IncentiveActivity act2 = incentivesRepo.findIncentiveMasterByNameAndGroup( + "HIGH_RISK_POSTPARTUM_HEALTH_CHECK", GroupName.ACTIVITY.getDisplayName()); + if (act2 != null) { + addIncenticeRecord(visit42, userId, act2); + } + } + } + + @Transactional + private void addIncenticeRecord(PNCVisit ect, Integer userId, IncentiveActivity antaraActivity) { + + String lockKey = antaraActivity.getId() + "_" + ect.getBenId() + "_" + ect.getPncDate(); + + Object lock = lockMap.computeIfAbsent(lockKey, k -> new Object()); + + synchronized (lock) { + IncentiveActivityRecord record = recordRepo + .findRecordByActivityIdCreatedDateBenId(antaraActivity.getId(), ect.getPncDate(), ect.getBenId(),userId); + + if (record == null) { + record = new IncentiveActivityRecord(); + record.setActivityId(antaraActivity.getId()); + record.setCreatedDate(ect.getPncDate()); + record.setCreatedBy(ect.getCreatedBy()); + record.setStartDate(ect.getPncDate()); + record.setEndDate(ect.getPncDate()); + record.setUpdatedDate(ect.getPncDate()); + record.setUpdatedBy(ect.getCreatedBy()); + record.setBenId(ect.getBenId()); + record.setAshaId(userId); + record.setAmount(Long.valueOf(antaraActivity.getRate())); + recordRepo.save(record); + } + } + + lockMap.remove(lockKey, lock); + } + + private void checkAndAddIncentives(List vaccinationList) { String createdBy = vaccinationList.get(0).getCreatedBy(); diff --git a/src/main/java/com/iemr/flw/service/impl/CoupleServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/CoupleServiceImpl.java index b650dd43..e12a1c87 100644 --- a/src/main/java/com/iemr/flw/service/impl/CoupleServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/CoupleServiceImpl.java @@ -335,20 +335,25 @@ private void checkIncentiveForChildGap(Integer stateId, String userName,List delOutList) { IncentiveActivity institutionalDeliveryActivityAM = incentivesRepo.findIncentiveMasterByNameAndGroup("MH_MOTIVATE_INST_DEL", GroupName.MATERNAL_HEALTH.getDisplayName()); IncentiveActivity institutionalDeliveryActivityCH = incentivesRepo.findIncentiveMasterByNameAndGroup("INST_DELIVERY_ESCORT", GroupName.ACTIVITY.getDisplayName()); if (deliveryOutcome.getPlaceOfDelivery() != null) { - String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery(); + String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery().toLowerCase(); if (placeOfDelivery != null && - (!placeOfDelivery.equalsIgnoreCase("home") || - !placeOfDelivery.equalsIgnoreCase("in transit") || + (!placeOfDelivery.equalsIgnoreCase("home") && + !placeOfDelivery.equalsIgnoreCase("in transit") && !placeOfDelivery.equalsIgnoreCase("other private hospital"))) { // Institutional delivery (eligible case) @@ -170,7 +170,14 @@ public void checkAndAddJsyIncentive(List delOutList) { if (deliveryOutcome.getDeliveryOutcome() == 1) { createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityJSY1); if (deliveryOutcome.getPlaceOfDelivery() != null) { - createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY1); + String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery().toLowerCase(); + if(placeOfDelivery != null && + (!placeOfDelivery.equalsIgnoreCase("home") && + !placeOfDelivery.equalsIgnoreCase("in transit") && + !placeOfDelivery.equalsIgnoreCase("other private hospital"))){ + createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY1); + + } } } } @@ -181,8 +188,15 @@ public void checkAndAddJsyIncentive(List delOutList) { if (deliveryOutcome.getDeliveryOutcome() == 2) { createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityJSY2); if (deliveryOutcome.getPlaceOfDelivery() != null) { + String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery().toLowerCase(); + if(placeOfDelivery != null && + (!placeOfDelivery.equalsIgnoreCase("home") && + !placeOfDelivery.equalsIgnoreCase("in transit") && + !placeOfDelivery.equalsIgnoreCase("other private hospital"))){ + createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY2); + + } - createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY2); } } } @@ -192,7 +206,14 @@ public void checkAndAddJsyIncentive(List delOutList) { if (deliveryOutcome.getDeliveryOutcome() == 3) { createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityJSY3); if (deliveryOutcome.getPlaceOfDelivery() != null) { - createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY3); + String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery().toLowerCase(); + if(placeOfDelivery != null && + (!placeOfDelivery.equalsIgnoreCase("home") && + !placeOfDelivery.equalsIgnoreCase("in transit") && + !placeOfDelivery.equalsIgnoreCase("other private hospital"))){ + createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY3); + + } } } } @@ -202,7 +223,14 @@ public void checkAndAddJsyIncentive(List delOutList) { if (deliveryOutcome.getDeliveryOutcome() == 4) { createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityJSY4); if (deliveryOutcome.getPlaceOfDelivery() != null) { - createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY4); + String placeOfDelivery = deliveryOutcome.getPlaceOfDelivery().toLowerCase(); + if(placeOfDelivery != null && + (!placeOfDelivery.equalsIgnoreCase("home") && + !placeOfDelivery.equalsIgnoreCase("in transit") && + !placeOfDelivery.equalsIgnoreCase("other private hospital"))){ + createIncentiveRecordforJsy(deliveryOutcome, deliveryOutcome.getBenId(), incentiveActivityInstJSY4); + + } } } diff --git a/src/main/java/com/iemr/flw/service/impl/DiagnosticOrderServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/DiagnosticOrderServiceImpl.java index 3e5ca60d..1485843e 100644 --- a/src/main/java/com/iemr/flw/service/impl/DiagnosticOrderServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/DiagnosticOrderServiceImpl.java @@ -203,7 +203,7 @@ private DiagnosticOrder saveRefusedOrder(Long beneficiaryId, Long visitCode, Dia order.setPatientSex(patientSex); } order.setStatus(DiagnosticOrderStatus.REFUSED.name()); - order.setReasonForRefusal(reasonForRefusal); + order.setReasonToClose(reasonForRefusal); order.setErrorMessage(null); try { @@ -273,7 +273,7 @@ public DiagnosticOrderResultDto processResult(DiagnosticOrder order, DiagnosticP dto.setOrderType(order.getOrderType()); dto.setStatus(order.getStatus()); dto.setErrorMessage(order.getErrorMessage()); - dto.setReasonForRefusal(order.getReasonForRefusal()); + dto.setReasonForRefusal(order.getReasonToClose()); dto.setProviderStatus(result.getProviderStatus()); dto.setResultSummary(result.getResultSummary()); dto.setTbPresence(result.getTbPresence()); @@ -434,7 +434,7 @@ public DiagnosticOrderResultDto getOrderResult(Long beneficiaryId, String orderT dto.setExternalOrderId(order.getExternalOrderId()); dto.setStatus(order.getStatus()); dto.setErrorMessage(order.getErrorMessage()); - dto.setReasonForRefusal(order.getReasonForRefusal()); + dto.setReasonForRefusal(order.getReasonToClose()); diagnosticResultRepo.findByExternalOrderIdAndDeletedFalse(order.getExternalOrderId()).ifPresent(result -> { dto.setProviderStatus(result.getProviderStatus()); diff --git a/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java index 08caccd0..4cbfeb87 100644 --- a/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/DiseaseControlServiceImpl.java @@ -48,6 +48,7 @@ import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -352,41 +353,51 @@ private LeprosyFollowUp saveLeprosyFollowUpData(LeprosyFollowUpDTO data) { entity.setLastModDate( data.getLastModDate() != null ? data.getLastModDate() : new Timestamp(System.currentTimeMillis())); if(!leprosyFollowUpRepository.findByBenId(entity.getBenId()).isEmpty()){ - if(leprosyFollowUpRepository.findByBenId(entity.getBenId()).size()>=6 && leprosyFollowUpRepository.findByBenId(entity.getBenId()).size()<=12){ - Integer userId = userRepo.getUserIdByName(entity.getCreatedBy()); - IncentiveActivityRecord incentiveActivityRecord = - incentiveLogicService.incentiveForLeprosyPaucibacillaryConfirmed( - entity.getBenId(), - entity.getTreatmentEndDate(), - entity.getTreatmentEndDate(), - userId); - - if (incentiveActivityRecord != null) { - logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", - incentiveActivityRecord.getId()); - } else { - logger.info("Incentive not created"); + if(entity.getTypeOfLeprosy().equals("PB (Paucibacillary)")){ + if(leprosyFollowUpRepository.findByBenId(entity.getBenId()).size()>=6 && leprosyFollowUpRepository.findByBenId(entity.getBenId()).size()<=12){ + Integer userId = userRepo.getUserIdByName(entity.getCreatedBy()); + IncentiveActivityRecord incentiveActivityRecord = + incentiveLogicService.incentiveForLeprosyPaucibacillaryConfirmed( + entity.getBenId(), + entity.getTreatmentEndDate(), + entity.getTreatmentEndDate(), + userId); + + if (incentiveActivityRecord != null) { + logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", + incentiveActivityRecord.getId()); + } else { + logger.info("Incentive not created"); + } } } + } if(!leprosyFollowUpRepository.findByBenId(entity.getBenId()).isEmpty()){ - if(leprosyFollowUpRepository.findByBenId(entity.getBenId()).size()>=12){ - Integer userId = userRepo.getUserIdByName(entity.getCreatedBy()); - IncentiveActivityRecord incentiveActivityRecord = - incentiveLogicService.incentiveForLeprosyMultibacillaryConfirmed( - entity.getBenId(), - entity.getTreatmentEndDate(), - entity.getTreatmentEndDate(), - userId); - - if (incentiveActivityRecord != null) { - logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", - incentiveActivityRecord.getId()); - } else { - logger.info("Incentive not created"); + if(entity.getTypeOfLeprosy().equals("MB (Multibacillary)")) { + if (entity.getTreatmentStartDate() != null && entity.getTreatmentEndDate() != null) { + if (isEligibleForIncentive(entity.getTreatmentStartDate(), entity.getTreatmentEndDate())) { + Integer userId = userRepo.getUserIdByName(entity.getCreatedBy()); + IncentiveActivityRecord incentiveActivityRecord = + incentiveLogicService.incentiveForLeprosyMultibacillaryConfirmed( + entity.getBenId(), + entity.getTreatmentEndDate(), + entity.getTreatmentEndDate(), + userId); + + if (incentiveActivityRecord != null) { + logger.info("Incentive processed for Screening Leprosy successfully. RecordId={}", + incentiveActivityRecord.getId()); + } else { + logger.info("Incentive not created"); + } + } } } + + + } return entity; } @@ -401,6 +412,24 @@ public String saveLeprosyFollowUp(LeprosyFollowUpDTO dto) { } + public boolean isEligibleForIncentive(Date treatmentStartDate, Date endDate) { + + if (treatmentStartDate == null || endDate == null) { + return false; + } + + LocalDate start = treatmentStartDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + LocalDate end = endDate.toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + return end.isAfter(start.plusMonths(12)) + || end.isEqual(start.plusMonths(12)); + } + @Override public List getAllLeprosyData(String createdBy) { logger.info("Fetching leprosy data for createdBy: " + createdBy); diff --git a/src/main/java/com/iemr/flw/service/impl/IRSRoundServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/IRSRoundServiceImpl.java index 26a5c1c7..5e8853a5 100644 --- a/src/main/java/com/iemr/flw/service/impl/IRSRoundServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/IRSRoundServiceImpl.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -26,7 +27,7 @@ public List addRounds(List dtos,Integer userId,String use } return irsRoundRepository.saveAll( dtos.stream() - .map(dto -> new IRSRound(null, dto.getDate(), dto.getRounds(), dto.getHouseholdId(),userName,userId)) + .map(dto -> new IRSRound(null, dto.getDate(), dto.getRounds(), dto.getHouseholdId(),userName,userId ,userName,getCurrentTimestamp())) .collect(Collectors.toList()) ); } @@ -35,4 +36,8 @@ public List addRounds(List dtos,Integer userId,String use public List getRounds(Long householdId) { return irsRoundRepository.findByHouseholdId(householdId); } + + private Timestamp getCurrentTimestamp() { + return new Timestamp(System.currentTimeMillis()); + } } diff --git a/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java index 4da29ff4..b89cb137 100644 --- a/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/IncentiveServiceImpl.java @@ -1,13 +1,11 @@ package com.iemr.flw.service.impl; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.iemr.flw.domain.iemr.*; import com.iemr.flw.dto.identity.GetBenRequestHandler; import com.iemr.flw.dto.iemr.*; import com.iemr.flw.masterEnum.GroupName; -import com.iemr.flw.masterEnum.IncentiveApprovalStatus; import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.*; @@ -16,7 +14,6 @@ import com.iemr.flw.service.NotificationService; import com.iemr.flw.service.UserService; import com.iemr.flw.utils.JwtUtil; -import jakarta.persistence.criteria.CriteriaBuilder; import org.modelmapper.ModelMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -227,7 +224,7 @@ public String getAllIncentivesByUserId(GetBenRequestHandler request) { try { addIncentiveForIronTablets(request.getAshaId()); - incentiveOfNcdReferal(request.getAshaId(), request.getVillageID()); + incentiveOfNcdReferal(request.getAshaId(), request.getVillageID(),request); } catch (Exception e) { logger.error("Error in incentiveOfNcdReferal: ", e); } @@ -267,16 +264,66 @@ public String getAllIncentivesByUserId(GetBenRequestHandler request) { .collect(Collectors.toList()); Map benIdToNameMap = new HashMap<>(); - if (!benIdsToFetch.isEmpty()) { - List benDetails = beneficiaryRepo.findBenNamesByBenIds(benIdsToFetch); + Map regIdToBenIdMap = new HashMap<>(); + + if (benIdsToFetch != null && !benIdsToFetch.isEmpty()) { + + // First, fetch names using BeneficiaryId + List benDetails = + beneficiaryRepo.findBenNamesByBenIds(benIdsToFetch); + + Set foundBenIds = new HashSet<>(); + for (Object[] row : benDetails) { Long benId = ((Number) row[0]).longValue(); - String first = row[1] != null ? (String) row[1] : ""; - String last = row[2] != null ? (String) row[2] : ""; + + String first = row[1] != null ? row[1].toString() : ""; + String last = row[2] != null ? row[2].toString() : ""; + benIdToNameMap.put(benId, (first + " " + last).trim()); + foundBenIds.add(benId); } - } + // IDs not found as BeneficiaryId + List unresolvedIds = benIdsToFetch.stream() + .filter(Objects::nonNull) + .filter(id -> !foundBenIds.contains(id)) + .distinct() + .toList(); + + if (!unresolvedIds.isEmpty()) { + + // Resolve BenRegId -> BeneficiaryId + List mappings = + beneficiaryRepo.getBenIdsFromRegIds(unresolvedIds); + + Set resolvedBenIds = new HashSet<>(); + + for (Object[] row : mappings) { + Long regId = ((Number) row[0]).longValue(); + Long benId = ((Number) row[1]).longValue(); + + regIdToBenIdMap.put(regId, benId); + resolvedBenIds.add(benId); + } + + // Fetch names for resolved BeneficiaryIds + if (!resolvedBenIds.isEmpty()) { + List resolvedDetails = + beneficiaryRepo.findBenNamesByBenIds( + new ArrayList<>(resolvedBenIds)); + + for (Object[] row : resolvedDetails) { + Long benId = ((Number) row[0]).longValue(); + + String first = row[1] != null ? row[1].toString() : ""; + String last = row[2] != null ? row[2].toString() : ""; + + benIdToNameMap.put(benId, (first + " " + last).trim()); + } + } + } + } // NEW: Bulk fetch verifier (supervisor) roles — replaces N+1 userRepo.getUserRole() calls // Bulk fetch verifier (supervisor) roles — replaces N+1 userRepo.getUserRole() calls List verifierIds = entities.stream() @@ -296,12 +343,22 @@ public String getAllIncentivesByUserId(GetBenRequestHandler request) { // Map entities to DTOs List dtos = entities.stream().map(entry -> { if (entry.getName() == null) { - if (entry.getBenId() != null && entry.getBenId() > 0) { - String name = benIdToNameMap.getOrDefault(entry.getBenId(), ""); + Long originalId = entry.getBenId(); + + if (originalId != null && originalId > 0) { + + Long actualBenId = regIdToBenIdMap.getOrDefault( + originalId, originalId); + + String name = benIdToNameMap.getOrDefault(actualBenId, ""); + + entry.setBenId(actualBenId); entry.setName(name); + if (isCG) { entry.setIsEligible(true); } + } else { entry.setName(""); } @@ -360,278 +417,210 @@ public void resetRejectedIncentivesForPreviousMonths() { ); } // ================= GROUPED SUMMARY ================= - @Override - public String getAllIncentivesGroupedSummary(GetBenRequestHandler request,Integer userId) { - String roleName = userService.getUserDetail(userId).getRoleName(); - LocalDate start = LocalDate.of(request.getYear(), request.getMonth(), 1); - LocalDate end = start.withDayOfMonth(start.lengthOfMonth()); - + @Transactional(readOnly = true) + public String getAllIncentivesGroupedSummary(GetBenRequestHandler request, Integer userId) { - LocalDate monthStart = LocalDate.of( - request.getYear(), - request.getMonth(), - 1 - ); + String roleName = userService.getUserDetail(userId).getRoleName(); + Integer reqStatus = request.getApprovalStatus(); - Timestamp startTs = - Timestamp.valueOf(monthStart.atStartOfDay()); + Integer stateId = userRepo.getUserRole(request.getUserId()).get(0).getStateId(); + boolean isCG = stateId != null && stateId.intValue() == StateCode.CG.getStateCode(); - Timestamp nextMonthTs = - Timestamp.valueOf(monthStart.plusMonths(1).atStartOfDay()); + logger.info("Request getAllIncentivesGroupedSummary: {}", reqStatus); - Integer villageID = userRepo.getUserRole(request.getUserId()).get(0).getStateId(); - boolean isCG = villageID != null && villageID.intValue() == StateCode.CG.getStateCode(); - logger.info("Request getAllIncentivesGroupedSummary: "+request.getApprovalStatus()); List records = recordRepo.findRecordsByAsha(request.getUserId()) .stream() - .filter(r -> - r.getCreatedDate() != null - - // Month filter using createdDate - && r.getCreatedDate() - .toLocalDateTime() - .getMonthValue() - == request.getMonth() - - && r.getCreatedDate() - .toLocalDateTime() - .getYear() - == request.getYear() - - && Boolean.TRUE.equals(r.getIsClaimed()) - - && ( - // Overdue: 102, 104 or 105 - ( - Objects.equals( - request.getApprovalStatus(), - 104 - ) - && ( - Objects.equals( - r.getApprovalStatus(), - 102 - ) - || Objects.equals( - r.getApprovalStatus(), - 104 - ) - || Objects.equals( - r.getApprovalStatus(), - 105 - ) - ) - ) - - || - - // Verified: 101 or 105 - ( - Objects.equals( - request.getApprovalStatus(), - 105 - ) - && ( - Objects.equals( - r.getApprovalStatus(), - 101 - ) - || Objects.equals( - r.getApprovalStatus(), - 105 - ) - ) - ) - - || - - // Other statuses - ( - !Objects.equals( - request.getApprovalStatus(), - 104 - ) - && !Objects.equals( - request.getApprovalStatus(), - 105 - ) - && Objects.equals( - r.getApprovalStatus(), - request.getApprovalStatus() - ) - ) - ) - ) + .filter(r -> r.getCreatedDate() != null) + .filter(r -> { + LocalDateTime created = r.getCreatedDate().toLocalDateTime(); + return created.getMonthValue() == request.getMonth() + && created.getYear() == request.getYear(); + }) + .filter(r -> Boolean.TRUE.equals(r.getIsClaimed())) + .filter(r -> matchesRequestedStatus(r.getApprovalStatus(), reqStatus)) .collect(Collectors.toList()); - - // Bulk fetch valid activity IDs — state wise List activityIds = records.stream() .map(IncentiveActivityRecord::getActivityId) .collect(Collectors.toList()); - Set validActivityIds = isCG - ? incentivesRepo.findValidActivityIds(activityIds, true) - : incentivesRepo.findValidActivityIds(activityIds, false); + Set validActivityIds = incentivesRepo.findValidActivityIds(activityIds, isCG); + if (validActivityIds == null) { + validActivityIds = Collections.emptySet(); + } + final Set validIds = validActivityIds; + + if (isCG) { - // Filter records based on valid activity IDs - if(isCG){ - if("ASHA Supervisor".equalsIgnoreCase(roleName)){ - if(request.getApprovalStatus().equals(104)){ + if ("ASHA Supervisor".equalsIgnoreCase(roleName)) { + + if (Integer.valueOf(104).equals(reqStatus)) { + records = records.stream() + .filter(r -> validIds.contains(r.getActivityId()) + && Boolean.TRUE.equals(r.getIsDefaultActivity()) + && Objects.equals(r.getApprovalStatus(), 102)) + .collect(Collectors.toList()); + } else if (Integer.valueOf(102).equals(reqStatus)) { records = records.stream() - .filter(r -> validActivityIds.contains(r.getActivityId()) && r.getIsDefaultActivity() && r.getApprovalStatus().equals(102)) + .filter(r -> validIds.contains(r.getActivityId()) + && Boolean.TRUE.equals(r.getIsDefaultActivity()) + && Objects.equals(r.getApprovalStatus(), 102)) .collect(Collectors.toList()); + }else { records = records.stream() - .filter(r -> validActivityIds.contains(r.getActivityId()) && r.getIsDefaultActivity()) + .filter(r -> validIds.contains(r.getActivityId()) + && Boolean.TRUE.equals(r.getIsDefaultActivity())) .collect(Collectors.toList()); } - }else if ("ANM".equalsIgnoreCase(roleName) || "CHO".equalsIgnoreCase(roleName)) { - if(request.getApprovalStatus().equals(102) || request.getApprovalStatus().equals(105)){ - records = records.stream() - .filter(record -> - validActivityIds.contains(record.getActivityId()) - ) - .filter(record -> - !Boolean.TRUE.equals( - record.getIsDefaultActivity() - ) + } else if ("ANM".equalsIgnoreCase(roleName) || "CHO".equalsIgnoreCase(roleName)) { + + if (Integer.valueOf(102).equals(reqStatus) || Integer.valueOf(105).equals(reqStatus)) { - || Boolean.TRUE.equals( - record.getIsApproved() - ) - ) - .collect(Collectors.toList()); - }else if(request.getApprovalStatus().equals(104)){ records = records.stream() - .filter(r -> validActivityIds.contains(r.getActivityId())) + .filter(r -> validIds.contains(r.getActivityId())) + + // default + approved + 102 -> 105 + .peek(r -> { + if (Objects.equals(r.getApprovalStatus(), 102) + && Boolean.TRUE.equals(r.getIsDefaultActivity()) + && Boolean.TRUE.equals(r.getIsApproved())) { + + logger.info("Changing record status 102 to 105: id={}, activityId={}", + r.getId(), r.getActivityId()); + r.setApprovalStatus(105); + } + }) + .filter(r -> { - if (Objects.equals(request.getApprovalStatus(), 104)) { + boolean isDefault = Boolean.TRUE.equals(r.getIsDefaultActivity()); + boolean isClaimed = Boolean.TRUE.equals(r.getIsClaimed()); + Integer recStatus = r.getApprovalStatus(); - boolean isDefault = - Boolean.TRUE.equals(r.getIsDefaultActivity()); + if (Integer.valueOf(102).equals(reqStatus)) { + return (!isDefault && Objects.equals(recStatus, 102) && isClaimed) + || Objects.equals(recStatus, 105); + } - boolean isApproved = - Boolean.TRUE.equals(r.getIsApproved()); + return Objects.equals(recStatus, 101) + || Objects.equals(recStatus, 105); + }) + .collect(Collectors.toList()); - // All non-default 102 records, - // and approved default 102 records - boolean status102 = - Objects.equals(r.getApprovalStatus(), 102) - && (!isDefault || isApproved); + } else if (Integer.valueOf(104).equals(reqStatus)) { - // Default 105 records, regardless of isApproved - boolean status105 = - Objects.equals(r.getApprovalStatus(), 105) - && isDefault; + records = records.stream() + .filter(r -> validIds.contains(r.getActivityId())) + .filter(r -> { + boolean isDefault = Boolean.TRUE.equals(r.getIsDefaultActivity()); + boolean isApproved = Boolean.TRUE.equals(r.getIsApproved()); - // Existing overdue records - boolean status104 = - Objects.equals(r.getApprovalStatus(), 104); + boolean status102 = Objects.equals(r.getApprovalStatus(), 102) + && (!isDefault || isApproved); - return status102 || status105 || status104; - } + boolean status105 = Objects.equals(r.getApprovalStatus(), 105) + && isDefault; - return Objects.equals( - r.getApprovalStatus(), - request.getApprovalStatus() - ); + boolean status104 = Objects.equals(r.getApprovalStatus(), 104); + + return status102 || status105 || status104; }) .collect(Collectors.toList()); - }else { + + } else { records = records.stream() - .filter(r -> validActivityIds.contains(r.getActivityId())) + .filter(r -> validIds.contains(r.getActivityId())) .collect(Collectors.toList()); } - - - - logger.info( - "ANM/CHO records after default activity filter: {}", - records.size() - ); + logger.info("ANM/CHO records after default activity filter: {}", records.size()); } - }else { + } else { records = records.stream() - .filter(r -> validActivityIds.contains(r.getActivityId())) + .filter(r -> validIds.contains(r.getActivityId())) .collect(Collectors.toList()); } - Map> grouped = records.stream().collect(Collectors.groupingBy(IncentiveActivityRecord::getActivityId)); List> result = new ArrayList<>(); - for (var entry : grouped.entrySet()) { + for (Map.Entry> entry : grouped.entrySet()) { Long activityId = entry.getKey(); List list = entry.getValue(); - IncentiveActivity activity = - incentivesRepo.findById(activityId).orElse(null); - - Integer approvalStatus = list.stream() - .max(Comparator.comparing(IncentiveActivityRecord::getCreatedDate)) - .map(IncentiveActivityRecord::getApprovalStatus) - .orElse(0); + IncentiveActivity activity = incentivesRepo.findById(activityId).orElse(null); + if (activity == null) continue; - boolean isApproved = list.stream() - .max(Comparator.comparing(IncentiveActivityRecord::getCreatedDate)) - .map(IncentiveActivityRecord::getIsApproved) - .orElse(false); - Long incentiveId = list.stream() + IncentiveActivityRecord latest = list.stream() .max(Comparator.comparing(IncentiveActivityRecord::getCreatedDate)) - .map(IncentiveActivityRecord::getId) .orElse(null); + if (latest == null) continue; - if (activity == null) continue; + Integer approvalStatus = latest.getApprovalStatus() != null ? latest.getApprovalStatus() : 0; + boolean isApproved = Boolean.TRUE.equals(latest.getIsApproved()); + Long incentiveId = latest.getId(); long total = list.stream() .mapToLong(r -> r.getAmount() != null ? r.getAmount() : 0) .sum(); Map map = new HashMap<>(); - if(isCG){ - map.put("activityId", activityId); - map.put("incentiveId",incentiveId); - map.put("activityDec", activity.getDescription()); - if(activity.getGroupCategoryName()!=null && !activity.getGroupCategoryName().isEmpty()){ + map.put("activityId", activityId); + map.put("incentiveId", incentiveId); + map.put("activityDec", activity.getDescription()); + map.put("claimCount", list.size()); + map.put("totalAmount", total); + map.put("amount", activity.getRate()); + + if (isCG) { + if (activity.getGroupCategoryName() != null && !activity.getGroupCategoryName().isEmpty()) { map.put("groupName", activity.getGroupCategoryName()); - - }else { + } else { map.put("groupName", activity.getGroup()); - } map.put("isDefault", activity.getIsDefaultActivity()); map.put("approvalStatus", approvalStatus); map.put("isApproved", isApproved); - map.put("claimCount", list.size()); - map.put("totalAmount", total); - map.put("amount", activity.getRate()); - - }else { - map.put("activityId", activityId); - map.put("incentiveId",incentiveId); - map.put("activityDec", activity.getDescription()); + } else { map.put("groupName", activity.getGroup()); - map.put("claimCount", list.size()); - map.put("totalAmount", total); - map.put("amount", activity.getRate()); - } result.add(map); + } + + return new Gson().toJson(result); + } + /** + * Request ke status ke hisaab se kaunse DB status allow hain. + */ + private boolean matchesRequestedStatus(Integer recStatus, Integer reqStatus) { + if (Integer.valueOf(104).equals(reqStatus)) { + // Overdue tab: 102, 104, 105 + return Objects.equals(recStatus, 102) + || Objects.equals(recStatus, 104) + || Objects.equals(recStatus, 105); + } + if (Integer.valueOf(105).equals(reqStatus)) { + // Verified tab: 101, 105 + return Objects.equals(recStatus, 101) + || Objects.equals(recStatus, 105); } - return new Gson().toJson(result); + if (Integer.valueOf(102).equals(reqStatus)) { + return Objects.equals(recStatus, 102) + || Objects.equals(recStatus, 105); + } + + return Objects.equals(recStatus, reqStatus); } private boolean isAfter24Hours(Timestamp claimedDate) { @@ -953,7 +942,7 @@ public String updateClaimStatus(Integer ashaId, Integer month, Integer year, Boo } } - private void incentiveOfNcdReferal(Integer ashaId, Integer stateId) { + private void incentiveOfNcdReferal(Integer ashaId, Integer stateId, GetBenRequestHandler request) { try { String userName = userRepo.getUserNamedByUserId(ashaId); String groupName = resolveGroupName(stateId); @@ -988,21 +977,23 @@ private void incentiveOfNcdReferal(Integer ashaId, Integer stateId) { } if (hwcReferralEnumeration != null) { - logger.info("hwcReferralEnumeration :" + hwcReferralEnumeration.getDescription()); + logger.info("hwcReferralEnumeration: {}", hwcReferralEnumeration.getDescription()); logger.info("userName={}", userName); - LocalDate now = LocalDate.now(); + LocalDate requestDate = request.getFromDate() + .toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); Long referralCount = benReferDetailsRepo.countMonthlyReferrals( userName, - now.getMonthValue(), - now.getYear()); - - logger.info("referralCount :" + referralCount); + requestDate.getMonthValue(), + requestDate.getYear() + ); + logger.info("referralCount: {}", referralCount); if (referralCount >= 10) { - addHwcReferalAshaIncentiveRecord( hwcReferralEnumeration, ashaId, diff --git a/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java index c4dab2c9..62534f07 100644 --- a/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/MaternalHealthServiceImpl.java @@ -784,28 +784,39 @@ private void checkAndAddAntaraIncentive(PNCVisit ect) { } - if (ect.getMotherDangerSign() != null - && !ect.getMotherDangerSign().isEmpty() - && ect.getPncPeriod() == 42) { - IncentiveActivity highRiskPostpartumCareActivityCH = - incentivesRepo.findIncentiveMasterByNameAndGroup("HIGH_RISK_POSTPARTUM_CARE", GroupName.ACTIVITY.getDisplayName()); - if (highRiskPostpartumCareActivityCH != null) { - addIncenticeRecord(ect, userId, highRiskPostpartumCareActivityCH); - - } - - } - if (ect.getPncPeriod() == 42) { - IncentiveActivity highRiskPostpartumHealthCareActivityCH = - incentivesRepo.findIncentiveMasterByNameAndGroup("HIGH_RISK_POSTPARTUM_HEALTH_CHECK", GroupName.ACTIVITY.getDisplayName()); - - if (highRiskPostpartumHealthCareActivityCH != null) { - addIncenticeRecord(ect, userId, highRiskPostpartumHealthCareActivityCH); - - } - - - } +// if (ect.getMotherDangerSign() != null +// && !ect.getMotherDangerSign().isEmpty() +// && ect.getPncPeriod() != null +// && ect.getPncPeriod() >= 1 +// && ect.getPncPeriod() <= 42) { +// IncentiveActivity highRiskPostpartumCareActivityCH = +// incentivesRepo.findIncentiveMasterByNameAndGroup("HIGH_RISK_POSTPARTUM_CARE", GroupName.ACTIVITY.getDisplayName()); +// +// if (highRiskPostpartumCareActivityCH != null ) { +// addIncenticeRecord(ect, userId, highRiskPostpartumCareActivityCH); +// } +// +// } +// if (ect.getPncPeriod() == 42 +// && !ect.getMotherDeath() +// && ancVisitRepo.findByBenId(ect.getBenId()) +// .stream() +// .filter(ancVisit -> ancVisit.getAncVisit() != null +// && ancVisit.getAncVisit() >= 1 +// && ancVisit.getAncVisit() <= 7) +// .anyMatch(ancVisit -> +// Boolean.TRUE.equals(ancVisit.getIsHrpConfirmed()))) { +// +// IncentiveActivity highRiskPostpartumHealthCareActivityCH = +// incentivesRepo.findIncentiveMasterByNameAndGroup( +// "HIGH_RISK_POSTPARTUM_HEALTH_CHECK", +// GroupName.ACTIVITY.getDisplayName()); +// +// if (highRiskPostpartumHealthCareActivityCH != null) { +// addIncenticeRecord(ect, userId, +// highRiskPostpartumHealthCareActivityCH); +// } +// } if (ect.getPncPeriod() == 1 || ect.getPncPeriod() == 3 || ect.getPncPeriod() == 7) { if(ect.getContraceptionMethod()!=null){ if ((ect.getContraceptionMethod().equals("POST PARTUM STERILIZATION (PPS)") @@ -829,6 +840,7 @@ private void checkAndAddAntaraIncentive(PNCVisit ect) { } + @Transactional private void addIncenticeRecord(PNCVisit ect, Integer userId, IncentiveActivity antaraActivity) { diff --git a/src/main/java/com/iemr/flw/service/impl/SupervisorDashboardServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/SupervisorDashboardServiceImpl.java index cc287117..11ab7f88 100644 --- a/src/main/java/com/iemr/flw/service/impl/SupervisorDashboardServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/SupervisorDashboardServiceImpl.java @@ -2,16 +2,17 @@ import java.math.BigDecimal; import java.sql.Timestamp; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.Month; -import java.time.ZoneId; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; import com.google.gson.Gson; +import com.iemr.flw.domain.iemr.IncentiveActivity; import com.iemr.flw.domain.iemr.IncentiveActivityRecord; -import com.iemr.flw.dto.iemr.UserServiceRoleDTO; +import com.iemr.flw.dto.iemr.*; +import com.iemr.flw.dto.iemr.Period; import com.iemr.flw.masterEnum.IncentiveApprovalStatus; import com.iemr.flw.masterEnum.StateCode; import com.iemr.flw.repo.iemr.*; @@ -45,15 +46,24 @@ public class SupervisorDashboardServiceImpl implements SupervisorDashboardServic @Autowired private IncentiveRecordRepo incentiveRecordRepo; + @Autowired + private IncentivesRepo incentivesRepo; + @Autowired private JwtUtil jwtUtil; @Autowired private UserService userService; + @Autowired + EmployeeMasterRepo employeeMasterRepo; + @Autowired private NotificationService notificationService; + @Autowired + private UtpreronaPaymentIntegrationImpl paymentService; + @Override public String getSupervisorDashboard(Integer supervisorUserID, Integer month, Integer year,Integer facilityId) { JSONObject result = new JSONObject(); @@ -864,7 +874,6 @@ public Map getAshasAtFacility(Integer supervisorId, Integer faci } logger.info("Other:" + rows); - long pending = 0, verified = 0, rejected = 0 , unclaimedCount = 0 , overDue = 0 ; long overallVerified = 0, overallRejected = 0, overallPending = 0 , overallUnclaimed=0 ,overallOverDue =0; @@ -881,6 +890,13 @@ public Map getAshasAtFacility(Integer supervisorId, Integer faci for (Object[] row : rows) { + long pending = 0; + long verified = 0; + long rejected = 0; + long unclaimedCount = 0; + long overDue = 0; + + Map asha = new HashMap<>(); Integer ashaId = ((Number) row[0]).intValue(); @@ -1234,45 +1250,32 @@ public Map getAshasAtFacility(Integer supervisorId, Integer faci if (Objects.equals(approvalStatusID, 102)) { incentiveActivityRecord = dbRecords.stream() - - .filter(record -> - Objects.equals(record.getApprovalStatus(), 102) - || Objects.equals( - record.getApprovalStatus(), 105 - ) - ) - .peek(record -> { if (Objects.equals(record.getApprovalStatus(), 102) - && Boolean.TRUE.equals( - record.getIsDefaultActivity() - ) - && Boolean.TRUE.equals( - record.getIsApproved() - )) { + && Boolean.TRUE.equals(record.getIsDefaultActivity()) + && Boolean.TRUE.equals(record.getIsApproved())) { - logger.info( - "Changing record status 102 to 105: " + - "id={}, activityId={}", - record.getId(), - record.getActivityId() - ); + logger.info("Changing record status 102 to 105: id={}, activityId={}", + record.getId(), record.getActivityId()); record.setApprovalStatus(105); } }) + .filter(record -> { + boolean isDefault = Boolean.TRUE.equals(record.getIsDefaultActivity()); + boolean isClaimed = Boolean.TRUE.equals(record.getIsClaimed()); + Integer status = record.getApprovalStatus(); + boolean default105 = isDefault && Objects.equals(status, 105); - .filter(record -> - !Boolean.TRUE.equals( - record.getIsDefaultActivity() - ) - || Boolean.TRUE.equals( - record.getIsApproved() - ) - ) - .collect(Collectors.toList()); + boolean nonDefault102Claimed = !isDefault && Objects.equals(status, 102) && isClaimed; + + boolean other105 = !isDefault && Objects.equals(status, 105); + + return nonDefault102Claimed || default105 || other105; + }) + .collect(Collectors.toList()); totalAmount = incentiveActivityRecord.stream() .map(IncentiveActivityRecord::getAmount) .filter(Objects::nonNull) @@ -1464,15 +1467,12 @@ public Map getAshasAtFacility(Integer supervisorId, Integer faci - if (verified > 0) overallVerified += 1; - if (rejected > 0) overallRejected += 1; + if (verified > 0) overallVerified++; + if (rejected > 0) overallRejected++; if (pending > 0) { - if (isOverDue) { - overallOverDue++; - } else { - overallPending++; - } + if (isOverDue) overallOverDue++; else overallPending++; } + if (unclaimedCount > 0) overallUnclaimed++; if (unclaimedCount > 0) overallUnclaimed += 1; @@ -1528,6 +1528,7 @@ public Map getAshasAtFacility(Integer supervisorId, Integer faci approvalStatus.put("pending", overallPending); approvalStatus.put("rejected", overallRejected); approvalStatus.put("unClaimed", overallUnclaimed); + approvalStatus.put("overDue", overallOverDue); response.put("approvalStatus", approvalStatus); response.put("data", ashaList); @@ -1719,6 +1720,33 @@ public int updateApprovalStatus(Integer ashaId, ashaSupervisorUserId, ashaSupervisorDetails ); + + boolean isApproved = !approvalStatus.equals(IncentiveApprovalStatus.REJECTED.getCode()); + + // Final approval: AM mein supervisor/CHO, CG mein sirf ANM + // (CG mein ASHA Supervisor ka status 105 intermediate hai, uspar payment nahi) + boolean isFinalApprover = + ashaSupervisorDetails.getStateId().equals(StateCode.AM.getStateCode()) + || (ashaSupervisorDetails.getStateId().equals(StateCode.CG.getStateCode()) + && "ANM".equalsIgnoreCase(ashaSupervisorDetails.getRoleName())); + + if (isApproved && isFinalApprover) { + List approvedRecords; + + if (incentiveIds == null || incentiveIds.trim().isEmpty()) { + approvedRecords = incentiveRecordRepo + .findApprovedForMonth( + ashaId, approvalStatus); + } else { + List ids = Arrays.stream(incentiveIds.split(",")) + .map(String::trim).filter(v -> !v.isEmpty()) + .map(Long::valueOf).collect(Collectors.toList()); + approvedRecords = incentiveRecordRepo.findAllById(ids); + } + + triggerPayment(ashaId, month, year, approvedRecords, + ashaSupervisorDetails, ashaSupervisorUserId); + } } return updatedCount; @@ -1796,6 +1824,129 @@ private void sendApprovalNotification( } } + public void triggerPayment(Integer ashaId, Integer month, Integer year, + List approvedRecords, + UserServiceRoleDTO supervisor, Integer supervisorUserId) { + + logger.info("========================================"); + logger.info("SSD Request Send to portal"); + logger.info("========================================"); + + try { + if (approvedRecords == null || approvedRecords.isEmpty()) { + logger.info("No approved records, payment not triggered for asha {}", ashaId); + return; + } + + LocalDate first = LocalDate.of(year, month, 1); + + Period period = new Period(); + period.setStart(first.toString()); + period.setEnd(first.withDayOfMonth(first.lengthOfMonth()).toString()); + + VerifiedBy verifiedBy = new VerifiedBy(); + verifiedBy.setEmployeeId("NRHM-22547"); + verifiedBy.setName(supervisor.getUserName()); + + Map> byActivity = + approvedRecords.stream() + .collect(Collectors.groupingBy( + IncentiveActivityRecord::getActivityId + )); + + List items = new ArrayList<>(); + + byActivity.forEach((activityId, recs) -> { + + var activityOpt = incentivesRepo.findById(activityId); + + // Activity not found -> skip + if (activityOpt.isEmpty()) { + logger.warn( + "Activity not found, skipping payment item. activityId={}", + activityId + ); + return; + } + + var activity = activityOpt.get(); + + // State Activity Code null -> skip + if (activity.getStateActivityCode() == null) { + logger.warn( + "State Activity Code is null, skipping payment item. activityId={}", + activityId + ); + return; + } + + long count = recs.size(); + + long total = recs.stream() + .mapToLong(r -> r.getAmount() == null ? 0L : r.getAmount()) + .sum(); + + PaymentItem item = new PaymentItem(); + + item.setActivityCode( + String.valueOf(activity.getStateActivityCode()) + ); + + item.setCount(String.valueOf(count)); + item.setIncentiveAmount(String.valueOf(total)); + + items.add(item); + }); + + // Agar saare records ka activity code null tha + if (items.isEmpty()) { + logger.info( + "No valid payment items found for asha {}, payment not triggered", + ashaId + ); + return; + } + + String timestamp = OffsetDateTime.now(ZoneId.of("Asia/Kolkata")) + .truncatedTo(ChronoUnit.SECONDS) + .format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + + if (employeeMasterRepo.findUserByUserID(ashaId) != null) { + + String empId = employeeMasterRepo + .findUserByUserID(ashaId) + .getEmployeeID(); + + if (empId != null) { + + PaymentRequest paymentRequest = new PaymentRequest( + UUID.randomUUID().toString(), + "AMRIT", + period, + String.valueOf(30638), + timestamp, + verifiedBy, + items + ); + + logger.info( + "PAYMENT REQUEST Payload: {}", + new Gson().toJson(paymentRequest) + ); + + paymentService.sendPaymentRequest(paymentRequest); + } + } + + } catch (Exception e) { + logger.error( + "Payment request failed for asha {}: {}", + ashaId, + e.getMessage(), + e + ); + } + } private JSONObject buildEmptyIncentiveSummary() { JSONObject summary = new JSONObject(); summary.put("verified", 0); diff --git a/src/main/java/com/iemr/flw/service/impl/TBConfirmedCaseServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/TBConfirmedCaseServiceImpl.java index 836d853a..faf95f2f 100644 --- a/src/main/java/com/iemr/flw/service/impl/TBConfirmedCaseServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/TBConfirmedCaseServiceImpl.java @@ -1,15 +1,15 @@ package com.iemr.flw.service.impl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.iemr.flw.domain.iemr.DynamicForm; -import com.iemr.flw.domain.iemr.TBConfirmedCaseDTO; -import com.iemr.flw.domain.iemr.TBConfirmedCase; -import com.iemr.flw.domain.iemr.BenVisitDetail; +import com.iemr.flw.domain.iemr.*; +import com.iemr.flw.dto.iemr.TbReferralFollowUpDTO; +import com.iemr.flw.dto.iemr.TbReferralFollowUpListDTO; +import com.iemr.flw.dto.iemr.TbTptFollowUpDTO; +import com.iemr.flw.dto.iemr.TbTptFollowUpListDTO; import com.iemr.flw.repo.identity.BeneficiaryRepo; -import com.iemr.flw.repo.iemr.DynamicFormRepo; -import com.iemr.flw.repo.iemr.FormResponseRepo; -import com.iemr.flw.repo.iemr.TBConfirmedTreatmentRepository; +import com.iemr.flw.repo.iemr.*; import com.iemr.flw.seeder.TbCounsellingV2FormSeeder; import com.iemr.flw.service.IncentiveLogicService; import com.iemr.flw.service.CampConfigService; @@ -25,12 +25,9 @@ import java.sql.Timestamp; import java.time.LocalDate; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.stream.Collectors; @Service @@ -57,6 +54,14 @@ public class TBConfirmedCaseServiceImpl implements TBConfirmedCaseService { @Autowired private BeneficiaryRepo beneficiaryRepo; + @Autowired + private TbReferralFollowUpRepo tbReferralFollowUpRepo; + + @Autowired + private IncentiveLogicImpl incentiveLogic; + + @Autowired + private TbTptFollowUpRepo tbTptFollowUpRepo; public TBConfirmedCaseServiceImpl(TBConfirmedTreatmentRepository repository, FormResponseRepo formResponseRepo, DynamicFormRepo dynamicFormRepo) { @@ -141,21 +146,37 @@ private void checkIncentive(TBConfirmedCase entity){ || "Longer Regimen (18–24 Months)".equalsIgnoreCase(regimen); if (Boolean.TRUE.equals(entity.getTreatmentCompleted()) - && entity.getExpectedTreatmentCompletionDate() != null) { + && entity.getFollowUpDate() != null) { if (isDrTb) { - incentiveLogicService.incentiveForTbFollowUpIsDrTb( - entity.getBenId(), - Timestamp.valueOf(entity.getExpectedTreatmentCompletionDate().atStartOfDay()), - Timestamp.valueOf(entity.getExpectedTreatmentCompletionDate().atStartOfDay()), - entity.getUserId() - ); + if("Shorter Regimen (9–12 Months)".equalsIgnoreCase(regimen)){ + if ("cured".equalsIgnoreCase(entity.getTreatmentOutcome())) { + incentiveLogicService.incentiveForTbFollowUpIsDrTb( + entity.getBenId(), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), + entity.getUserId() + ); + } + + }else if("Longer Regimen (18–24 Months)".equalsIgnoreCase(regimen)){ + if ("cured".equalsIgnoreCase(entity.getTreatmentOutcome())) { + + incentiveLogicService.incentiveForTbFollowUpIsDrTb( + entity.getBenId(), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), + entity.getUserId() + ); + } + } + } else { incentiveLogicService.incentiveForTbFollowUp( entity.getBenId(), - Timestamp.valueOf(entity.getExpectedTreatmentCompletionDate().atStartOfDay()), - Timestamp.valueOf(entity.getExpectedTreatmentCompletionDate().atStartOfDay()), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), + Timestamp.valueOf(entity.getFollowUpDate().atStartOfDay()), entity.getUserId() ); @@ -164,6 +185,24 @@ private void checkIncentive(TBConfirmedCase entity){ } } + public boolean isEligibleForIncentive(LocalDate treatmentStartDate, LocalDate endDate,Integer minMonth) { + + if (treatmentStartDate == null || endDate == null) { + return false; + } + + LocalDate start = treatmentStartDate.atStartOfDay() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + LocalDate end = endDate.atStartOfDay() + .atZone(ZoneId.systemDefault()) + .toLocalDate(); + + return end.isAfter(start.plusMonths(minMonth)) + || end.isEqual(start.plusMonths(minMonth)); + } + @Override public String getByBenId(Long benId, String authorisation) throws Exception { OutputResponse response = new OutputResponse(); @@ -204,6 +243,428 @@ public String getByProviderServiceMapId(Integer providerServiceMapID, Integer vi return buildTbConfirmedCasesResponse(null, list); } + @Override + public String saveReferralFollowUp(TbReferralFollowUpDTO requestDTO, String token) { + OutputResponse response = new OutputResponse(); + + try { + + TbReferralFollowUp tbReferralFollowUp = new TbReferralFollowUp(); + + if(!token.isEmpty() && token!=null && requestDTO!=null){ + String userName = jwtUtil.extractUsername(token); + Integer userId = jwtUtil.extractUserId(token); + tbReferralFollowUp.setBenId(requestDTO.getBenId()); + tbReferralFollowUp.setHouseHoldId(requestDTO.getHouseHoldId()); + tbReferralFollowUp.setSyncedBy(userName); + tbReferralFollowUp.setUpdatedBy(userName); + tbReferralFollowUp.setCreatedBy(userName); + tbReferralFollowUp.setUserId(userId); + if(requestDTO.getFields().getReferredOnDate()!=null && !requestDTO.getFields().getFollowUpDate().isEmpty()){ + Timestamp referOnDate = Timestamp.valueOf(requestDTO.getFields().getReferredOnDate()); + tbReferralFollowUp.setFollowUpDate(referOnDate); + + } + + if(requestDTO.getFields().getFollowUpDate()!=null && !requestDTO.getFields().getFollowUpDate().isEmpty()){ + Timestamp followUpDate = Timestamp.valueOf(requestDTO.getFields().getFollowUpDate()); + tbReferralFollowUp.setFollowUpDate(followUpDate); + + } + tbReferralFollowUp.setFollowUpStatus(requestDTO.getFields().getFollowUpStatus()); + } + + tbReferralFollowUpRepo.save(tbReferralFollowUp); + response.setResponse("TB Referral follow up saved successfully"); + + + + }catch (Exception e){ + response.setError(500,e.getMessage()); + return response.toString(); + } + + + return response.toString(); + } + + @Override + public String getReferralFollowUp(String token) { + OutputResponse response = new OutputResponse(); + + try { + if (token == null || token.trim().isEmpty()) { + response.setError(400, "Token is required"); + return response.toString(); + } + + Integer userId = jwtUtil.extractUserId(token); + + List referrals = + tbReferralFollowUpRepo.findByUserId(userId); + + List referralDTOs = new ArrayList<>(); + + DateTimeFormatter formatter = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + for (TbReferralFollowUp referral : referrals) { + + TbReferralFollowUpDTO dto = new TbReferralFollowUpDTO(); + dto.setBenId(referral.getBenId()); + dto.setUserId(referral.getUserId()); + dto.setHouseHoldId(referral.getHouseHoldId()); + + // Initialize nested DTO before setting fields + TbReferralFollowUpListDTO fields = + new TbReferralFollowUpListDTO(); + + if (referral.getReferredOnDate() != null) { + fields.setReferredOnDate( + referral.getReferredOnDate() + .toLocalDateTime() + .format(formatter) + ); + } + + if (referral.getFollowUpDate() != null) { + fields.setFollowUpDate( + referral.getFollowUpDate() + .toLocalDateTime() + .format(formatter) + ); + } + + fields.setFollowUpStatus(referral.getFollowUpStatus()); + + dto.setFields(fields); + referralDTOs.add(dto); + } + + ObjectMapper objectMapper = new ObjectMapper(); + + response.setResponse( + objectMapper.writeValueAsString(referralDTOs) + ); + + } catch (Exception e) { + // Replace with your project's logger if available + e.printStackTrace(); + response.setError(500, "Failed to fetch referral follow-up: " + e.getMessage()); + } + + return response.toString(); + } + + @Override + public String saveTptFollowUp(TbTptFollowUpDTO requestDTO, String token) { + + OutputResponse response = new OutputResponse(); + + try { + + TbTptFollowUp tbTptFollowUp = new TbTptFollowUp(); + + if (token != null && !token.isEmpty() && requestDTO != null) { + + String userName = jwtUtil.extractUsername(token); + Integer userId = jwtUtil.extractUserId(token); + + tbTptFollowUp.setBenId(requestDTO.getBenId()); + tbTptFollowUp.setUserId(userId); + + tbTptFollowUp.setCreatedBy(userName); + tbTptFollowUp.setUpdatedBy(userName); + + if (requestDTO.getFields() != null) { + + TbTptFollowUpListDTO fields = requestDTO.getFields(); + + tbTptFollowUp.setRegimenType(fields.getRegimenType()); + + if (fields.getTreatmentStartDate() != null + && !fields.getTreatmentStartDate().isEmpty()) { + + tbTptFollowUp.setTreatmentStartDate( + Timestamp.valueOf(fields.getTreatmentStartDate()) + ); + } + + if (fields.getExpectedTreatmentCompletionDate() != null + && !fields.getExpectedTreatmentCompletionDate().isEmpty()) { + + tbTptFollowUp.setExpectedTreatmentCompletionDate( + Timestamp.valueOf(fields.getExpectedTreatmentCompletionDate()) + ); + } + + if (fields.getFollowUpDate() != null + && !fields.getFollowUpDate().isEmpty()) { + + tbTptFollowUp.setFollowUpDate( + Timestamp.valueOf(fields.getFollowUpDate()) + ); + } + + tbTptFollowUp.setFollowUpMonth( + fields.getMonthlyFollowUp() + ); + + tbTptFollowUp.setAdherenceToMedicines( + fields.getMedicineAdherence() + ); + + tbTptFollowUp.setAnyDiscomfort( + convertBollen(fields.getAnyDiscomfort()) + ); + + tbTptFollowUp.setTreatmentCompleted( + convertBollen(fields.getTreatmentCompleted()) + ); + + if (fields.getActualCompletionDate() != null + && !fields.getActualCompletionDate().isEmpty()) { + + tbTptFollowUp.setActualTreatmentCompletionDate( + Timestamp.valueOf(fields.getActualCompletionDate()) + ); + } + + tbTptFollowUp.setTptOutcome( + fields.getTptOutcome() + ); + + if ("Death".equalsIgnoreCase(fields.getTptOutcome())) { + + if (fields.getDateOfDeath() != null + && !fields.getDateOfDeath().isEmpty()) { + + tbTptFollowUp.setDateOfDeath( + Timestamp.valueOf(fields.getDateOfDeath()) + ); + } + + tbTptFollowUp.setPlaceOfDeath( + fields.getPlaceOfDeath() + ); + + tbTptFollowUp.setReasonForDeath( + fields.getReasonForDeath() + ); + } + } + + tbTptFollowUpRepo.save(tbTptFollowUp); + + createTptIncentiveIfEligible(tbTptFollowUp); + } + + response.setResponse("TPT follow up saved successfully"); + + } catch (Exception e) { + + response.setError(500, e.getMessage()); + return response.toString(); + } + + return response.toString(); + } + + + private static final Map MIN_FOLLOW_UPS = Map.of( + "1HP", 1, + "3HP", 3, + "3RH", 3, + "4R", 4, + "6H", 6, + "6LFX", 6 + ); + + + private void createTptIncentiveIfEligible(TbTptFollowUp saved) { + + // 1. Basic conditions + if (!Boolean.TRUE.equals(saved.getTreatmentCompleted()) + || saved.getActualTreatmentCompletionDate() == null + || saved.getRegimenType() == null + || saved.getTreatmentStartDate() == null + || saved.getBenId() == null) { + return; + } + + // 2. Regimen ka minimum follow-up count + Integer minRequired = MIN_FOLLOW_UPS.get(saved.getRegimenType().trim().toUpperCase()); + if (minRequired == null) { + return; // unknown regimen + } + + List cycleRows = tbTptFollowUpRepo + .findByBenIdAndRegimenTypeAndTreatmentStartDate( + saved.getBenId(), + saved.getRegimenType(), + saved.getTreatmentStartDate()); + + long completedMonths = cycleRows.stream() + .map(TbTptFollowUp::getFollowUpMonth) + .filter(Objects::nonNull) + .map(String::trim) + .distinct() + .count(); + + if (completedMonths < minRequired) { + return; + } + Timestamp completionDate = saved.getActualTreatmentCompletionDate(); + + incentiveLogic.incentiveForTbPreventiveFollowUp( + saved.getBenId(), + completionDate, + completionDate, + saved.getUserId()); + } + + @Override + public String getTptFollowUp(String token) { + + OutputResponse response = new OutputResponse(); + + try { + + if (token == null || token.trim().isEmpty()) { + response.setError(400, "Token is required"); + return response.toString(); + } + + Integer userId = jwtUtil.extractUserId(token); + + List tptFollowUps = + tbTptFollowUpRepo.findByUserId(userId); + + List tptFollowUpDTOs = + new ArrayList<>(); + + DateTimeFormatter formatter = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + for (TbTptFollowUp tptFollowUp : tptFollowUps) { + + TbTptFollowUpDTO dto = new TbTptFollowUpDTO(); + + dto.setBenId(tptFollowUp.getBenId()); + dto.setUserId(tptFollowUp.getUserId()); + + TbTptFollowUpListDTO fields = + new TbTptFollowUpListDTO(); + + // Regimen Type + fields.setRegimenType( + tptFollowUp.getRegimenType() + ); + + // Treatment Start Date + if (tptFollowUp.getTreatmentStartDate() != null) { + fields.setTreatmentStartDate( + tptFollowUp.getTreatmentStartDate() + .toLocalDateTime() + .format(formatter) + ); + } + + // Expected Treatment Completion Date + if (tptFollowUp.getExpectedTreatmentCompletionDate() != null) { + fields.setExpectedTreatmentCompletionDate( + tptFollowUp.getExpectedTreatmentCompletionDate() + .toLocalDateTime() + .format(formatter) + ); + } + + // Follow Up Date + if (tptFollowUp.getFollowUpDate() != null) { + fields.setFollowUpDate( + tptFollowUp.getFollowUpDate() + .toLocalDateTime() + .format(formatter) + ); + } + + // Monthly Follow Up + fields.setMonthlyFollowUp( + tptFollowUp.getFollowUpMonth() + ); + + // Medicine Adherence + fields.setMedicineAdherence( + tptFollowUp.getAdherenceToMedicines() + ); + + // Any Discomfort + fields.setAnyDiscomfort( + convert(tptFollowUp.getAnyDiscomfort()) + ); + + // Treatment Completed + fields.setTreatmentCompleted( + convert(tptFollowUp.getTreatmentCompleted()) + ); + + // Actual Completion Date + if (tptFollowUp.getActualTreatmentCompletionDate() != null) { + fields.setActualCompletionDate( + tptFollowUp.getActualTreatmentCompletionDate() + .toLocalDateTime() + .format(formatter) + ); + } + + // TPT Outcome + fields.setTptOutcome( + tptFollowUp.getTptOutcome() + ); + + // Date of Death + if (tptFollowUp.getDateOfDeath() != null) { + fields.setDateOfDeath( + tptFollowUp.getDateOfDeath() + .toLocalDateTime() + .format(formatter) + ); + } + + // Place of Death + fields.setPlaceOfDeath( + tptFollowUp.getPlaceOfDeath() + ); + + // Reason for Death + fields.setReasonForDeath( + tptFollowUp.getReasonForDeath() + ); + + dto.setFields(fields); + + tptFollowUpDTOs.add(dto); + } + + ObjectMapper objectMapper = new ObjectMapper(); + + response.setResponse( + objectMapper.writeValueAsString(tptFollowUpDTOs) + ); + + } catch (Exception e) { + + e.printStackTrace(); + + response.setError( + 500, + "Failed to fetch TPT follow-up: " + e.getMessage() + ); + } + + return response.toString(); + } + private String buildTbConfirmedCasesResponse(Integer userId, List list) { List dtoList = list.stream().map(this::toDTO).collect(Collectors.toList()); @@ -254,4 +715,17 @@ private TBConfirmedCaseDTO toDTO(TBConfirmedCase entity) { return dto; } + + private String convert(Boolean value) { + if (value == null) return null; + return value ? "Yes" : "No"; + } + + private Boolean convertBollen(String value) { + if (value != null && !value.isEmpty()) { + return value.equalsIgnoreCase("Yes"); + } else { + return false; + } + } } diff --git a/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java index 2f84c462..adf3e0d1 100644 --- a/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/TBScreeningServiceImpl.java @@ -9,7 +9,9 @@ import com.iemr.flw.repo.identity.BeneficiaryRepo; import com.iemr.flw.repo.iemr.TBScreeningRepo; import com.iemr.flw.service.TBScreeningService; +import jakarta.annotation.PostConstruct; import org.modelmapper.ModelMapper; +import org.modelmapper.TypeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +19,9 @@ import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @Service public class TBScreeningServiceImpl implements TBScreeningService { @@ -36,56 +40,195 @@ public String getByBenId(Long benId, String authorisation) throws Exception { @Override public String save(TBScreeningRequestDTO requestDTO) throws Exception { - requestDTO.getTbScreeningList().forEach(tbScreeningDTO -> - { + if (requestDTO == null || requestDTO.getTbScreeningList() == null) { + throw new IllegalArgumentException("TB screening list is required"); + } + + for (TBScreeningDTO dto : requestDTO.getTbScreeningList()) { TBScreening tbScreening = - tbScreeningRepo.getByUserIdAndBenId(tbScreeningDTO.getBenId(), requestDTO.getUserId()); + tbScreeningRepo.getByUserIdAndBenId( + dto.getBenId(), requestDTO.getUserId()); boolean isNew = tbScreening == null; + if (isNew) { tbScreening = new TBScreening(); - modelMapper.map(tbScreeningDTO, tbScreening); - tbScreening.setId(null); - } else { - Long id = tbScreening.getId(); - modelMapper.map(tbScreeningDTO, tbScreening); - tbScreening.setId(id); } + modelMapper.map(dto, tbScreening); + + // List -> comma-separated String + tbScreening.setKeyPopulationRiskFactorIds( + toRiskFactorIdsCsv(dto.getKeyPopulationRiskFactorIds())); + + // List -> comma-separated String + tbScreening.setKeyPopulationRiskFactors( + toRiskFactorsCsv(dto.getKeyPopulationRiskFactors())); + tbScreening.setUserId(requestDTO.getUserId()); - // Stop TB / Nikshay reporting — same gap this ASHA-flow save path had as the nurse - // flow's saveNurseTBScreening(): benRegID was never persisted here at all. - tbScreening.setBenRegID(beneficiaryRepo.getRegIDFromBenId(tbScreeningDTO.getBenId())); - // created_date/created_by — gated on isNew so a later re-save doesn't overwrite the - // true creation time/author. No device-supplied created timestamp on this DTO, so - // visitDate (closest real proxy) is preferred, server time as last-resort fallback. + + tbScreening.setBenRegID( + beneficiaryRepo.getRegIDFromBenId(dto.getBenId())); + if (isNew) { - tbScreening.setCreatedDate(tbScreening.getVisitDate() != null - ? tbScreening.getVisitDate() : new Timestamp(System.currentTimeMillis())); - tbScreening.setCreatedBy(requestDTO.getUserId() != null ? requestDTO.getUserId().toString() : null); + tbScreening.setId(null); + + tbScreening.setCreatedDate( + tbScreening.getVisitDate() != null + ? tbScreening.getVisitDate() + : new Timestamp(System.currentTimeMillis())); + + tbScreening.setCreatedBy( + requestDTO.getUserId() != null + ? requestDTO.getUserId().toString() + : null); } + tbScreeningRepo.save(tbScreening); - }); - return "no of tb screening items saved: " + requestDTO.getTbScreeningList().size(); + } + + return "no of tb screening items saved: " + + requestDTO.getTbScreeningList().size(); } @Override public String getByUserId(GetBenRequestHandler request) { try { List dtos = new ArrayList<>(); - List tbScreeningList = tbScreeningRepo.getByUserId(request.getAshaId()); - tbScreeningList.forEach(tbScreening -> dtos.add(modelMapper.map(tbScreening, TBScreeningDTO.class))); - TBScreeningRequestDTO tbScreeningRequestDTO = new TBScreeningRequestDTO(); - tbScreeningRequestDTO.setTbScreeningList(dtos); - tbScreeningRequestDTO.setUserId(request.getAshaId()); + + List tbScreeningList = + tbScreeningRepo.getByUserId(request.getAshaId()); + + for (TBScreening tbScreening : tbScreeningList) { + TBScreeningDTO dto = + modelMapper.map(tbScreening, TBScreeningDTO.class); + + // Comma-separated String -> List + dto.setKeyPopulationRiskFactorIds( + fromRiskFactorIdsCsv( + tbScreening.getKeyPopulationRiskFactorIds())); + + // Comma-separated String -> List + dto.setKeyPopulationRiskFactors( + fromRiskFactorsCsv( + tbScreening.getKeyPopulationRiskFactors())); + + dtos.add(dto); + } + + TBScreeningRequestDTO response = new TBScreeningRequestDTO(); + response.setTbScreeningList(dtos); + response.setUserId(request.getAshaId()); + Gson gson = new GsonBuilder() - .setDateFormat("MMM dd, yyyy h:mm:ss a") // Set the desired date format + .setDateFormat("MMM dd, yyyy h:mm:ss a") .create(); - return gson.toJson(tbScreeningRequestDTO); - }catch (Exception e){ - logger.error("TBScreening Exception:"+e.getMessage()); + + + + String responseJson = gson.toJson(response); + + // Print complete response + logger.info("TB Screening COMPLETE RESPONSE: {}", responseJson); + + return gson.toJson(response); + + } catch (Exception e) { + logger.error("Failed to retrieve TB screening details", e); + throw new IllegalStateException( + "Failed to retrieve TB screening details", e); } - return null; + } + + @PostConstruct + public void configureTBScreeningMappings() { + TypeMap saveMapping = + modelMapper.getTypeMap(TBScreeningDTO.class, TBScreening.class); + + if (saveMapping == null) { + saveMapping = modelMapper.createTypeMap( + TBScreeningDTO.class, TBScreening.class); + } + + saveMapping.addMappings(mapper -> { + mapper.skip(TBScreening::setKeyPopulationRiskFactorIds); + mapper.skip(TBScreening::setKeyPopulationRiskFactors); + + // Managed by the service; preserve these on updates. + mapper.skip(TBScreening::setId); + mapper.skip(TBScreening::setCreatedDate); + mapper.skip(TBScreening::setCreatedBy); + }); + + TypeMap responseMapping = + modelMapper.getTypeMap(TBScreening.class, TBScreeningDTO.class); + + if (responseMapping == null) { + responseMapping = modelMapper.createTypeMap( + TBScreening.class, TBScreeningDTO.class); + } + + responseMapping.addMappings(mapper -> { + mapper.skip(TBScreeningDTO::setKeyPopulationRiskFactorIds); + mapper.skip(TBScreeningDTO::setKeyPopulationRiskFactors); + }); + } + + private String toRiskFactorIdsCsv(List ids) { + if (ids == null) { + return null; + } + + if (ids.stream().anyMatch(id -> id == null)) { + throw new IllegalArgumentException( + "Risk factor IDs cannot contain null values"); + } + + return ids.stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + } + + private String toRiskFactorsCsv(List riskFactors) { + if (riskFactors == null) { + return null; + } + + for (String riskFactor : riskFactors) { + if (riskFactor == null + || riskFactor.isBlank() + || riskFactor.contains(",")) { + throw new IllegalArgumentException( + "Risk factor codes cannot be null, blank, or contain commas"); + } + } + + return riskFactors.stream() + .map(String::trim) + .collect(Collectors.joining(",")); + } + + private List fromRiskFactorIdsCsv(String value) { + if (value == null || value.isBlank()) { + return new ArrayList<>(); + } + + return Arrays.stream(value.split(",")) + .map(String::trim) + .filter(item -> !item.isEmpty()) + .map(Integer::valueOf) + .collect(Collectors.toList()); + } + + private List fromRiskFactorsCsv(String value) { + if (value == null || value.isBlank()) { + return new ArrayList<>(); + } + + return Arrays.stream(value.split(",")) + .map(String::trim) + .filter(item -> !item.isEmpty()) + .collect(Collectors.toList()); } } diff --git a/src/main/java/com/iemr/flw/service/impl/UTPReronaPaymentJob.java b/src/main/java/com/iemr/flw/service/impl/UTPReronaPaymentJob.java index 30a79102..3edb8845 100644 --- a/src/main/java/com/iemr/flw/service/impl/UTPReronaPaymentJob.java +++ b/src/main/java/com/iemr/flw/service/impl/UTPReronaPaymentJob.java @@ -49,7 +49,7 @@ public void run(String... args) { log.info("FLW application started successfully and is now running."); log.info("========================================"); - triggerStaticPayment(); + // triggerStaticPayment(); } // ✅ Separate method — call this for immediate testing diff --git a/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java b/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java index c21cc9a5..ff1482e0 100644 --- a/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java +++ b/src/main/java/com/iemr/flw/service/impl/VillageLevelFormServiceImpl.java @@ -149,8 +149,15 @@ private Boolean saveVhncFormData(VhncFormDTO vhncFormDTO, Integer userID) { vhncForm.setFormType("VHNC"); vhncFormRepo.save(vhncForm); + if(vhncFormDTO.getVhncDate()!=null && !vhncFormDTO.getVhncDate().isEmpty()){ - checkVhncIncentive(vhncForm.getCreatedDate(),Math.toIntExact(vhncForm.getUserId())); + Timestamp timestamp = Timestamp.valueOf( + LocalDate.parse(vhncForm.getVhncDate(), DateTimeFormatter.ofPattern("dd-MM-yyyy")) + .atStartOfDay() + ); + + checkVhncIncentive(timestamp,Math.toIntExact(vhncForm.getUserId())); + } return true; } @@ -170,8 +177,17 @@ private Boolean savePhcForm(PhcReviewMeetingFormDTO dto, Integer userID) { phcReviewForm.setImage2(dto.getImage2()); phcReviewForm.setFormType("PHC"); phcReviewFormRepo.save(phcReviewForm); + if(dto.getPhcReviewDate()!=null && !dto.getPhcReviewDate().isEmpty()){ + + Timestamp timestamp = Timestamp.valueOf( + LocalDate.parse(phcReviewForm.getPhcReviewDate(), DateTimeFormatter.ofPattern("dd-MM-yyyy")) + .atStartOfDay() + ); + + checkPhcMeetingIncentive(timestamp,Math.toIntExact(phcReviewForm.getUserId())); + } + - checkPhcMeetingIncentive(phcReviewForm.getCreatedDate(),Math.toIntExact(phcReviewForm.getUserId())); return true; } @@ -278,8 +294,18 @@ private Boolean saveVhndFormData(VHNDFormDTO vhndFormDTO, Integer userID) { vhndForm.setFormType("VHND"); vhndRepo.save(vhndForm); + if (vhndFormDTO.getVhndDate() != null + && !vhndFormDTO.getVhndDate().isEmpty()) { - checkVhndIncentive(vhndForm.getCreatedDate(),vhndForm.getUserId()); + Timestamp timestamp = Timestamp.valueOf( + LocalDate.parse( + vhndFormDTO.getVhndDate(), + DateTimeFormatter.ofPattern("dd-MM-yyyy") + ).atStartOfDay() + ); + + checkVhndIncentive(timestamp, vhndForm.getUserId()); + } return true;