From 6e2f3a52050837539909961188ee85272e7ada4e Mon Sep 17 00:00:00 2001 From: vanitha1822 Date: Tue, 14 Jul 2026 14:18:28 +0530 Subject: [PATCH 01/18] fix: add clinical staff details --- .../data/nurse/BeneficiaryVisitDetail.java | 16 ++++++++ .../hwc/repo/nurse/BenVisitDetailRepo.java | 12 ++++++ .../transaction/CommonDoctorServiceImpl.java | 37 +++++++++++++++++++ .../transaction/CommonNurseServiceImpl.java | 23 ++++++++++++ .../LabTechnicianServiceImpl.java | 22 +++++++++++ 5 files changed, 110 insertions(+) diff --git a/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java b/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java index b9335c61..dd80742f 100644 --- a/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java +++ b/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java @@ -141,6 +141,22 @@ public class BeneficiaryVisitDetail { @Column(name = "VisitFlowStatusFlag", insertable = false) private @SQLInjectionSafe String visitFlowStatusFlag; + @Expose + @Column(name = "NurseID") + private Long nurseID; + + @Expose + @Column(name = "DoctorID") + private Long doctorID; + + @Expose + @Column(name = "PharmacistID") + private Long pharmacistID; + + @Expose + @Column(name = "LabTechnicianID") + private Long labTechnicianID; + @Expose @Column(name = "VanSerialNo") private Long vanSerialNo; diff --git a/src/main/java/com/iemr/hwc/repo/nurse/BenVisitDetailRepo.java b/src/main/java/com/iemr/hwc/repo/nurse/BenVisitDetailRepo.java index f2de984b..dac4309e 100644 --- a/src/main/java/com/iemr/hwc/repo/nurse/BenVisitDetailRepo.java +++ b/src/main/java/com/iemr/hwc/repo/nurse/BenVisitDetailRepo.java @@ -97,6 +97,18 @@ public List getBeneficiaryVisitDetails(@Param("benRegID") Long benReg @Query("UPDATE BeneficiaryVisitDetail set subVisitCategory = :subVisitCategory where visitCode = :visitCode ") public Integer updateSubVisitCategory(@Param("subVisitCategory") String subVisitCategory, @Param("visitCode") Long visitCode); + // store responsible doctor's user ID against the visit + @Transactional + @Modifying + @Query("UPDATE BeneficiaryVisitDetail set doctorID = :doctorID where visitCode = :visitCode ") + public Integer updateDoctorID(@Param("doctorID") Long doctorID, @Param("visitCode") Long visitCode); + + // store responsible lab technician's user ID against the visit + @Transactional + @Modifying + @Query("UPDATE BeneficiaryVisitDetail set labTechnicianID = :labTechnicianID where visitCode = :visitCode ") + public Integer updateLabTechnicianID(@Param("labTechnicianID") Long labTechnicianID, @Param("visitCode") Long visitCode); + // get file uuid from file id @Query(nativeQuery = true, value = " SELECT FileUID from t_kmfilemanager where KmFileManagerID = :fileID ") diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java index 3b51b058..51d46f6f 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java @@ -118,6 +118,37 @@ public class CommonDoctorServiceImpl { @Autowired private PNCDiagnosisRepo pNCDiagnosisRepo; @Autowired + private com.iemr.hwc.repo.nurse.BenVisitDetailRepo benVisitDetailRepo; + @Autowired + private com.iemr.hwc.repo.login.UserLoginRepo userLoginRepo; + + /** + * Resolve the numeric user ID of the responsible staff member from the username + * captured in createdBy/modifiedBy. Returns null if it cannot be resolved so an + * unknown staff member never blocks the flow. + */ + private Long resolveUserId(String username) { + if (username == null || username.trim().isEmpty()) + return null; + com.iemr.hwc.data.login.Users user = userLoginRepo.getUserByUsername(username.trim()); + return user != null ? user.getUserID() : null; + } + + /** + * Store the responsible doctor's user ID on the visit record. The doctor's + * identity is taken from createdBy, falling back to modifiedBy. + */ + private void storeDoctorIDOnVisit(CommonUtilityClass commonUtilityClass) { + if (commonUtilityClass == null || commonUtilityClass.getVisitCode() == null) + return; + String username = commonUtilityClass.getCreatedBy(); + if (username == null || username.trim().isEmpty()) + username = commonUtilityClass.getModifiedBy(); + Long doctorID = resolveUserId(username); + if (doctorID != null) + benVisitDetailRepo.updateDoctorID(doctorID, commonUtilityClass.getVisitCode()); + } + @Autowired private PrescriptionDetailRepo prescriptionDetailRepo; @Autowired private NCDCareDiagnosisRepo NCDCareDiagnosisRepo; @@ -755,6 +786,9 @@ public int updateBenFlowtableAfterDocDataSave(CommonUtilityClass commonUtilityCl Long tmpBenVisitID = commonUtilityClass.getBenVisitID(); Long tmpbeneficiaryRegID = commonUtilityClass.getBeneficiaryRegID(); + // Store the responsible doctor's user ID against the visit + storeDoctorIDOnVisit(commonUtilityClass); + if (commonUtilityClass != null && commonUtilityClass.getVisitCategoryID() != null && commonUtilityClass.getVisitCategoryID() == 9) { ArrayList foetalMonitorData = foetalMonitorRepo @@ -895,6 +929,9 @@ public int updateBenFlowtableAfterDocDataUpdate(CommonUtilityClass commonUtility Long tmpBenVisitID = commonUtilityClass.getBenVisitID(); Long tmpbeneficiaryRegID = commonUtilityClass.getBeneficiaryRegID(); + // Store the responsible doctor's user ID against the visit + storeDoctorIDOnVisit(commonUtilityClass); + if (commonUtilityClass != null && commonUtilityClass.getVisitCategoryID() != null && commonUtilityClass.getVisitCategoryID() == 9) { ArrayList foetalMonitorData = foetalMonitorRepo diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java index 27792886..d0f1379e 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java @@ -159,6 +159,21 @@ public class CommonNurseServiceImpl implements CommonNurseService { private BenVisitDetailRepo benVisitDetailRepo; + @Autowired + private com.iemr.hwc.repo.login.UserLoginRepo userLoginRepo; + + /** + * Resolve the numeric user ID of the responsible staff member from the username + * captured in createdBy/modifiedBy. Returns null if the username is blank or + * cannot be resolved, so an unknown staff member never blocks the save. + */ + private Long resolveUserId(String username) { + if (username == null || username.trim().isEmpty()) + return null; + com.iemr.hwc.data.login.Users user = userLoginRepo.getUserByUsername(username.trim()); + return user != null ? user.getUserID() : null; + } + private BenChiefComplaintRepo benChiefComplaintRepo; private BenMedHistoryRepo benMedHistoryRepo; private BencomrbidityCondRepo bencomrbidityCondRepo; @@ -449,6 +464,10 @@ public Long saveBeneficiaryVisitDetails(BeneficiaryVisitDetail beneficiaryVisitD } + // Store the responsible nurse's user ID (resolved from the createdBy username) + if (beneficiaryVisitDetail.getNurseID() == null) + beneficiaryVisitDetail.setNurseID(resolveUserId(beneficiaryVisitDetail.getCreatedBy())); + response = benVisitDetailRepo.save(beneficiaryVisitDetail); if (response != null) { @@ -506,6 +525,10 @@ public Long saveBeneficiaryVisitDetails(BeneficiaryVisitDetail beneficiaryVisitD } + // Store the responsible nurse's user ID (resolved from the createdBy username) + if (beneficiaryVisitDetail.getNurseID() == null) + beneficiaryVisitDetail.setNurseID(resolveUserId(beneficiaryVisitDetail.getCreatedBy())); + response = benVisitDetailRepo.save(beneficiaryVisitDetail); if (response != null) { diff --git a/src/main/java/com/iemr/hwc/service/labtechnician/LabTechnicianServiceImpl.java b/src/main/java/com/iemr/hwc/service/labtechnician/LabTechnicianServiceImpl.java index 51240c0a..8689f7df 100644 --- a/src/main/java/com/iemr/hwc/service/labtechnician/LabTechnicianServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/labtechnician/LabTechnicianServiceImpl.java @@ -50,6 +50,22 @@ public class LabTechnicianServiceImpl implements LabTechnicianService { private CommonBenStatusFlowServiceImpl commonBenStatusFlowServiceImpl; private ProcedureCompMappedMasterRepo procedureCompMappedMasterRepo; + @org.springframework.beans.factory.annotation.Autowired + private com.iemr.hwc.repo.nurse.BenVisitDetailRepo benVisitDetailRepo; + @org.springframework.beans.factory.annotation.Autowired + private com.iemr.hwc.repo.login.UserLoginRepo userLoginRepo; + + /** + * Resolve the numeric user ID of the responsible staff member from the username + * captured in createdBy. Returns null if it cannot be resolved. + */ + private Long resolveUserId(String username) { + if (username == null || username.trim().isEmpty()) + return null; + com.iemr.hwc.data.login.Users user = userLoginRepo.getUserByUsername(username.trim()); + return user != null ? user.getUserID() : null; + } + @Autowired public void setCommonBenStatusFlowServiceImpl(CommonBenStatusFlowServiceImpl commonBenStatusFlowServiceImpl) { @@ -359,6 +375,12 @@ public Integer saveLabTestResult(JsonObject requestOBJ) throws Exception { labResultSaveFlag = saveLabTestResult(wrapperLabResults); if (labResultSaveFlag == 1) { + // Store the responsible lab technician's user ID against the visit + if (wrapperLabResults.getVisitCode() != null) { + Long labTechnicianID = resolveUserId(wrapperLabResults.getCreatedBy()); + if (labTechnicianID != null) + benVisitDetailRepo.updateLabTechnicianID(labTechnicianID, wrapperLabResults.getVisitCode()); + } int i = updateBenFlowStatusFlagAfterLabResultEntry(wrapperLabResults.getLabCompleted(), wrapperLabResults.getBenFlowID(), wrapperLabResults.getBeneficiaryRegID(), wrapperLabResults.getVisitID(), wrapperLabResults.getNurseFlag(), From 4a7296a957ba79038988896071a14c1c03c5af24 Mon Sep 17 00:00:00 2001 From: vanitha1822 Date: Tue, 14 Jul 2026 16:17:47 +0530 Subject: [PATCH 02/18] fix: pom version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7184be0d..47554642 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.iemr.hwc hwc-api - 3.8.0 + 3.9.0 war HWC-API From 3eb6b1930e01454c69c1953115c62c53fa0f6563 Mon Sep 17 00:00:00 2001 From: SnehaRH Date: Tue, 9 Dec 2025 13:55:28 +0530 Subject: [PATCH 03/18] fix: Added proper space in the string --- .../hwc/service/common/transaction/CommonNurseServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java index d0f1379e..a33f12ea 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java @@ -3414,7 +3414,7 @@ private double getQtyForOneDay(String form, String dose, String frequency) { } } else { if (frequency.equalsIgnoreCase("Single Dose") || frequency.equalsIgnoreCase("Stat Dose")|| - frequency.equalsIgnoreCase("Single Dose Before Food") || frequency.equalsIgnoreCase("Single Dose After Food")) { + frequency.equalsIgnoreCase("Single Dose Before Food") || frequency.equalsIgnoreCase("Single Dose After Food")) { if (form.equalsIgnoreCase("Tablet")) { if (dose.equalsIgnoreCase("Half Tab")) { qtyInOneDay = .5; From 8cbc8e28ee0125a01af39c364954f795cd9f269b Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 26 Mar 2026 10:26:26 +0530 Subject: [PATCH 04/18] remove hwc van relation --- .../common/main/WorklistController.java | 54 +++++++++--------- .../benFlowStatus/BeneficiaryFlowStatus.java | 12 ++++ .../BeneficiaryFlowStatusRepo.java | 57 ++++++++++--------- .../AdolescentAndChildCareServiceImpl.java | 8 +-- .../iemr/hwc/service/anc/ANCServiceImpl.java | 8 +-- .../CommonBenStatusFlowServiceImpl.java | 10 ++-- .../cancerScreening/CSServiceImpl.java | 8 +-- .../transaction/CommonDoctorServiceImpl.java | 8 +-- .../transaction/CommonNurseServiceImpl.java | 51 ++++++++++------- .../service/covid19/Covid19ServiceImpl.java | 8 +-- .../FamilyPlanningServiceImpl.java | 8 +-- .../generalOPD/GeneralOPDServiceImpl.java | 8 +-- .../service/ncdCare/NCDCareServiceImpl.java | 8 +-- .../ncdscreening/NCDScreeningServiceImpl.java | 14 ++--- .../service/neonatal/NeonatalServiceImpl.java | 8 +-- .../CommonPatientAppMasterServiceImpl.java | 11 ++-- .../iemr/hwc/service/pnc/PNCServiceImpl.java | 8 +-- .../QuickConsultationServiceImpl.java | 8 +-- 18 files changed, 160 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/common/main/WorklistController.java b/src/main/java/com/iemr/hwc/controller/common/main/WorklistController.java index a99c3e17..871ba5b4 100644 --- a/src/main/java/com/iemr/hwc/controller/common/main/WorklistController.java +++ b/src/main/java/com/iemr/hwc/controller/common/main/WorklistController.java @@ -73,13 +73,13 @@ public void setCommonNurseServiceImpl(CommonNurseServiceImpl commonNurseServiceI } @Operation(summary = "Get doctor worklist") - @GetMapping(value = { "/getDocWorklistNew/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getDocWorklistNew/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getDocWorkListNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("serviceID") Integer serviceID, @PathVariable("vanID") Integer vanID) { + @PathVariable("serviceID") Integer serviceID, @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { if (providerServiceMapID != null && serviceID != null) { - String s = commonDoctorServiceImpl.getDocWorkListNew(providerServiceMapID, serviceID, vanID); + String s = commonDoctorServiceImpl.getDocWorkListNew(providerServiceMapID, serviceID, facilityID); if (s != null) response.setResponse(s); } else { @@ -96,15 +96,15 @@ public String getDocWorkListNew(@PathVariable("providerServiceMapID") Integer pr // doc worklist new (TM future scheduled beneficiary) @Operation(summary = "Get doctor future worklist scheduled for telemedicine") - @GetMapping(value = { "/getDocWorkListNewFutureScheduledForTM/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getDocWorkListNewFutureScheduledForTM/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getDocWorkListNewFutureScheduledForTM( @PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("serviceID") Integer serviceID, @PathVariable("vanID") Integer vanID) { + @PathVariable("serviceID") Integer serviceID, @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { if (providerServiceMapID != null && serviceID != null) { String s = commonDoctorServiceImpl.getDocWorkListNewFutureScheduledForTM(providerServiceMapID, - serviceID, vanID); + serviceID, facilityID); if (s != null) response.setResponse(s); } else { @@ -122,12 +122,12 @@ public String getDocWorkListNewFutureScheduledForTM( // nurse worklist new @Operation(summary = "Get nurse worklist") - @GetMapping(value = { "/getNurseWorklistNew/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getNurseWorklistNew/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getNurseWorkListNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getNurseWorkListNew(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getNurseWorkListNew(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -142,12 +142,12 @@ public String getNurseWorkListNew(@PathVariable("providerServiceMapID") Integer // nurse worklist TC schedule (current-date) new @Operation(summary = "Get worklist for teleconsultation for the current date") - @GetMapping(value = { "/getNurseWorkListTcCurrentDate/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getNurseWorkListTcCurrentDate/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getNurseWorkListTcCurrentDateNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getNurseWorkListTcCurrentDate(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getNurseWorkListTcCurrentDate(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -161,12 +161,12 @@ public String getNurseWorkListTcCurrentDateNew(@PathVariable("providerServiceMap // nurse worklist TC schedule (future-date) new @Operation(summary = "Get worklist for teleconsultation for the future date") - @GetMapping(value = { "/getNurseWorkListTcFutureDate/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getNurseWorkListTcFutureDate/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getNurseWorkListTcFutureDateNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getNurseWorkListTcFutureDate(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getNurseWorkListTcFutureDate(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -204,12 +204,12 @@ public String getDoctorPreviousSignificantFindings( // Get Lab technician worklist new @Operation(summary = "Get lab technician worklist") - @GetMapping(value = { "/getLabWorklistNew/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getLabWorklistNew/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getLabWorkListNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getLabWorkListNew(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getLabWorkListNew(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -223,12 +223,12 @@ public String getLabWorkListNew(@PathVariable("providerServiceMapID") Integer pr // Get radiologist worklist new @Operation(summary = "Get radiologist worklist") - @PostMapping(value = { "/getRadiologist-worklist-New/{providerServiceMapID}/{serviceID}/{vanID}" }) + @PostMapping(value = { "/getRadiologist-worklist-New/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getRadiologistWorklistNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getRadiologistWorkListNew(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getRadiologistWorkListNew(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -242,12 +242,12 @@ public String getRadiologistWorklistNew(@PathVariable("providerServiceMapID") In // Get oncologist worklist new @Operation(summary = "Get oncologist worklist") - @PostMapping(value = { "/getOncologist-worklist-New/{providerServiceMapID}/{serviceID}/{vanID}" }) + @PostMapping(value = { "/getOncologist-worklist-New/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getOncologistWorklistNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getOncologistWorkListNew(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getOncologistWorkListNew(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else @@ -261,12 +261,12 @@ public String getOncologistWorklistNew(@PathVariable("providerServiceMapID") Int // Get pharma worklist new @Operation(summary = "Get pharmacist worklist") - @GetMapping(value = { "/getPharma-worklist-New/{providerServiceMapID}/{serviceID}/{vanID}" }) + @GetMapping(value = { "/getPharma-worklist-New/{providerServiceMapID}/{serviceID}/{facilityID}" }) public String getPharmaWorklistNew(@PathVariable("providerServiceMapID") Integer providerServiceMapID, - @PathVariable("vanID") Integer vanID) { + @PathVariable("facilityID") Integer facilityID) { OutputResponse response = new OutputResponse(); try { - String s = commonNurseServiceImpl.getPharmaWorkListNew(providerServiceMapID, vanID); + String s = commonNurseServiceImpl.getPharmaWorkListNew(providerServiceMapID, facilityID); if (s != null) response.setResponse(s); else diff --git a/src/main/java/com/iemr/hwc/data/benFlowStatus/BeneficiaryFlowStatus.java b/src/main/java/com/iemr/hwc/data/benFlowStatus/BeneficiaryFlowStatus.java index 993e7e01..72ac81fc 100644 --- a/src/main/java/com/iemr/hwc/data/benFlowStatus/BeneficiaryFlowStatus.java +++ b/src/main/java/com/iemr/hwc/data/benFlowStatus/BeneficiaryFlowStatus.java @@ -238,6 +238,10 @@ public class BeneficiaryFlowStatus { @Column(name = "vanID") private Integer vanID; + @Expose + @Column(name = "facilityID") + private Integer facilityID; + @Expose @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "vanID", referencedColumnName = "vanID", insertable = false, updatable = false) @@ -514,6 +518,14 @@ public void setVanID(Integer vanID) { this.vanID = vanID; } + public Integer getFacilityID() { + return facilityID; + } + + public void setFacilityID(Integer facilityID) { + this.facilityID = facilityID; + } + public String getVanNo() { return vanNo; } diff --git a/src/main/java/com/iemr/hwc/repo/benFlowStatus/BeneficiaryFlowStatusRepo.java b/src/main/java/com/iemr/hwc/repo/benFlowStatus/BeneficiaryFlowStatusRepo.java index 5ab1454a..f114f647 100644 --- a/src/main/java/com/iemr/hwc/repo/benFlowStatus/BeneficiaryFlowStatusRepo.java +++ b/src/main/java/com/iemr/hwc/repo/benFlowStatus/BeneficiaryFlowStatusRepo.java @@ -50,34 +50,34 @@ public interface BeneficiaryFlowStatusRepo extends CrudRepository getNurseWorklistNew( // @Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") // Integer vanID); @Query("SELECT t from BeneficiaryFlowStatus t WHERE (t.nurseFlag = 1 OR t.nurseFlag = 100) AND (t.specialist_flag <> 100 OR t.specialist_flag is null) AND t.deleted = false " + " AND Date(t.visitDate) >= Date(:fromDate) AND t.providerServiceMapId = :providerServiceMapId " - + " AND t.vanID = :vanID ORDER BY t.visitDate DESC ") + + " AND t.facilityID = :facilityID ORDER BY t.visitDate DESC ") public ArrayList getNurseWorklistNew( - @Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") Integer vanID, + @Param("providerServiceMapId") Integer providerServiceMapId, @Param("facilityID") Integer facilityID, @Param("fromDate") Timestamp fromDate); // nurse worklist TC current date @Query("SELECT t from BeneficiaryFlowStatus t WHERE (t.specialist_flag != 0 AND t.specialist_flag != 100 AND t.specialist_flag is not null)" + " AND t.deleted = false AND DATE(t.benVisitDate) >= DATE(:fromDate) " + " AND (Date(t.tCRequestDate) <= curdate() OR Date(t.tCRequestDate) = null) " + " AND t.providerServiceMapId = :providerServiceMapId " - + " AND t.vanID = :vanID ORDER BY t.visitDate DESC ") + + " AND t.facilityID = :facilityID ORDER BY t.visitDate DESC ") public ArrayList getNurseWorklistCurrentDate( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); // nurse worklist future date @Query("SELECT t from BeneficiaryFlowStatus t WHERE (t.specialist_flag = 1)" + " AND t.deleted = false AND (Date(t.tCRequestDate) > curdate()) " + " AND t.providerServiceMapId = :providerServiceMapId " - + " AND t.vanID = :vanID ORDER BY t.tCRequestDate ") + + " AND t.facilityID = :facilityID ORDER BY t.tCRequestDate ") public ArrayList getNurseWorklistFutureDate( - @Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") Integer vanID); + @Param("providerServiceMapId") Integer providerServiceMapId, @Param("facilityID") Integer facilityID); @Transactional @Modifying @@ -86,7 +86,7 @@ public ArrayList getNurseWorklistFutureDate( + " t.labIteration = :labIteration, t.radiologist_flag = :radiologistFlag, " + " t.oncologist_flag = :oncologistFlag, t.specialist_flag = :specialistFlag, t.benVisitDate = now(), " + " t.tCRequestDate = :tcDate, t.tCSpecialistUserID = :specialistID, " - + " t.visitCode = :benVisitCode, t.processed = 'U', t.vanID =:vanID,t.lab_technician_flag = 0 " + + " t.visitCode = :benVisitCode, t.processed = 'U', t.facilityID =:facilityID,t.lab_technician_flag = 0 " + " WHERE t.benFlowID = :benFlowID AND t.beneficiaryRegID = :benRegID " + " AND nurseFlag = 1 ") public int updateBenFlowStatusAfterNurseActivity(@Param("benFlowID") Long benFlowID, @Param("benRegID") Long benRegID, @Param("benVisitID") Long benVisitID, @@ -94,7 +94,7 @@ public int updateBenFlowStatusAfterNurseActivity(@Param("benFlowID") Long benFlo @Param("nurseFlag") Short nurseFlag, @Param("docFlag") Short docFlag, @Param("labIteration") Short labIteration, @Param("radiologistFlag") Short radiologistFlag, @Param("oncologistFlag") Short oncologistFlag, @Param("benVisitCode") Long benVisitCode, - @Param("vanID") Integer vanID, @Param("specialistFlag") Short specialistFlag, + @Param("facilityID") Integer facilityID, @Param("specialistFlag") Short specialistFlag, @Param("tcDate") Timestamp tcDate, @Param("specialistID") Integer specialistID); /*** @@ -108,7 +108,7 @@ public int updateBenFlowStatusAfterNurseActivity(@Param("benFlowID") Long benFlo + " t.labIteration = :labIteration, t.radiologist_flag = :radiologistFlag, " + " t.oncologist_flag = :oncologistFlag, t.specialist_flag = :specialistFlag, t.benVisitDate = now(), " + " t.tCRequestDate = :tcDate, t.tCSpecialistUserID = :specialistID, " - + " t.visitCode = :benVisitCode, t.processed = 'U', t.vanID =:vanID,t.lab_technician_flag = :labTechnician " + + " t.visitCode = :benVisitCode, t.processed = 'U', t.facilityID =:facilityID,t.lab_technician_flag = :labTechnician " + " WHERE t.benFlowID = :benFlowID AND t.beneficiaryRegID = :benRegID " + " AND nurseFlag = 1 ") public int updateBenFlowStatusAfterNurseActivityANC(@Param("benFlowID") Long benFlowID, @Param("benRegID") Long benRegID, @Param("benVisitID") Long benVisitID, @@ -116,7 +116,7 @@ public int updateBenFlowStatusAfterNurseActivityANC(@Param("benFlowID") Long ben @Param("nurseFlag") Short nurseFlag, @Param("docFlag") Short docFlag, @Param("labIteration") Short labIteration, @Param("radiologistFlag") Short radiologistFlag, @Param("oncologistFlag") Short oncologistFlag, @Param("benVisitCode") Long benVisitCode, - @Param("vanID") Integer vanID, @Param("specialistFlag") Short specialistFlag, + @Param("facilityID") Integer facilityID, @Param("specialistFlag") Short specialistFlag, @Param("tcDate") Timestamp tcDate, @Param("specialistID") Integer specialistID, @Param("labTechnician") Short labTechnician); @@ -144,23 +144,23 @@ public ArrayList getDocWorkListNew( // TC doc work-list, 04-12-2018 @Query("SELECT t from BeneficiaryFlowStatus t WHERE (t.doctorFlag = 1 OR t.doctorFlag = 2 OR " - + " t.doctorFlag = 3 OR t.nurseFlag = 2 OR t.doctorFlag = 9 ) AND t.vanID = :vanID " + + " t.doctorFlag = 3 OR t.nurseFlag = 2 OR t.doctorFlag = 9 ) AND t.facilityID = :facilityID " + " AND t.benVisitDate >= Date(:fromDate) " + " AND (t.tCRequestDate is null OR DATE(t.tCRequestDate) <= curdate() ) " + " AND t.deleted = false AND t.providerServiceMapId = :providerServiceMapId " + " ORDER BY t.benVisitDate DESC ") public ArrayList getDocWorkListNewTC( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); // TC doc work-list, future scheduled 13-12-2018 @Query("SELECT t from BeneficiaryFlowStatus t " + " WHERE t.specialist_flag = 1 AND t.tCRequestDate is not null AND t.tCSpecialistUserID is not null " - + " AND t.vanID = :vanID AND DATE(t.tCRequestDate) > curdate() " + + " AND t.facilityID = :facilityID AND DATE(t.tCRequestDate) > curdate() " + " AND t.deleted = false AND t.providerServiceMapId = :providerServiceMapId " + " ORDER BY t.tCRequestDate ") public ArrayList getDocWorkListNewFutureScheduledTC( - @Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") Integer vanID); + @Param("providerServiceMapId") Integer providerServiceMapId, @Param("facilityID") Integer facilityID); // TC Specialist work-list, 13-12-2018 @Query("SELECT t from BeneficiaryFlowStatus t WHERE Date(t.benVisitDate) >= DATE(:fromDate) " @@ -173,6 +173,7 @@ public ArrayList getTCSpecialistWorkListNew( @Param("tCSpecialistUserID") Integer tCSpecialistUserID, @Param("fromDate") Timestamp fromDate); // TC Specialist work-list, patient app, 14-08-2020 + // Keep vanID filter — TM specialist queries by their Van, not facility @Query("SELECT t from BeneficiaryFlowStatus t WHERE Date(t.benVisitDate) >= DATE(:fromDate) " + " AND t.specialist_flag NOT IN (0,4) AND t.tCRequestDate is not null AND t.tCSpecialistUserID is not null " + " AND t.tCSpecialistUserID =:tCSpecialistUserID AND DATE(t.tCRequestDate) <= curdate() " @@ -195,7 +196,7 @@ public ArrayList getTCSpecialistWorkListNewFutureSchedule // @Query("SELECT t.benFlowID from BeneficiaryFlowStatus t WHERE // t.beneficiaryRegID = :benRegID " - // + "AND t.providerServiceMapId = :provoderSerMapID AND t.vanID = :vanID AND " + // + "AND t.providerServiceMapId = :provoderSerMapID AND t.facilityID = :facilityID AND " // + " (t.nurseFlag = 1 OR t.nurseFlag = 100) AND Date(t.visitDate) = curdate() // AND t.deleted = false") // public ArrayList checkBenAlreadyInNurseWorkList(@Param("benRegID") Long @@ -203,18 +204,18 @@ public ArrayList getTCSpecialistWorkListNewFutureSchedule // @Param("provoderSerMapID") Integer provoderSerMapID, @Param("vanID") Integer // vanID); @Query("SELECT t.benFlowID from BeneficiaryFlowStatus t WHERE t.beneficiaryRegID = :benRegID " - + "AND t.providerServiceMapId = :provoderSerMapID AND t.vanID = :vanID AND " + + "AND t.providerServiceMapId = :provoderSerMapID AND t.facilityID = :facilityID AND " + " (t.nurseFlag = 1 OR t.nurseFlag = 100) AND Date(t.visitDate) >= Date(:fromDate) AND t.deleted = false") public ArrayList checkBenAlreadyInNurseWorkList(@Param("benRegID") Long benRegID, - @Param("provoderSerMapID") Integer provoderSerMapID, @Param("vanID") Integer vanID, + @Param("provoderSerMapID") Integer provoderSerMapID, @Param("facilityID") Integer facilityID, @Param("fromDate") Timestamp fromDate); - @Query("SELECT t from BeneficiaryFlowStatus t " + " WHERE t.benVisitDate >= Date(:fromDate) AND t.vanID = :vanID " + @Query("SELECT t from BeneficiaryFlowStatus t " + " WHERE t.benVisitDate >= Date(:fromDate) AND t.facilityID = :facilityID " + " AND (t.nurseFlag = 2 OR t.doctorFlag = 2 OR t.specialist_flag = 2) AND t.deleted = false " + " AND t.providerServiceMapId = :providerServiceMapId ORDER BY consultationDate DESC ") public ArrayList getLabWorklistNew( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); /*** * @author DU20091017 updating lab technician flag as well after feto sense. @@ -285,26 +286,26 @@ public int updateBenFlowStatusAfterDoctorActivityUpdate(@Param("benFlowID") Long @Param("pharmaFlag") Short pharmaFlag, @Param("oncologistFlag") Short oncologistFlag); @Query("SELECT t from BeneficiaryFlowStatus t " - + " WHERE t.benVisitDate >= Date(:fromDate) AND t.vanID = :vanID AND t.radiologist_flag = 1 " + + " WHERE t.benVisitDate >= Date(:fromDate) AND t.facilityID = :facilityID AND t.radiologist_flag = 1 " + " AND t.providerServiceMapId= :providerServiceMapId ORDER BY t.benVisitDate DESC ") public ArrayList getRadiologistWorkListNew( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); @Query("SELECT t from BeneficiaryFlowStatus t " - + " WHERE t.benVisitDate >= Date(:fromDate) AND t.vanID = :vanID AND t.oncologist_flag = 1 " + + " WHERE t.benVisitDate >= Date(:fromDate) AND t.facilityID = :facilityID AND t.oncologist_flag = 1 " + " AND t.providerServiceMapId= :providerServiceMapId ORDER BY t.benVisitDate DESC ") public ArrayList getOncologistWorkListNew( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); @Query("SELECT t from BeneficiaryFlowStatus t " - + " WHERE t.benVisitDate >= Date(:fromDate) AND t.vanID = :vanID AND t.pharmacist_flag = 1 " + + " WHERE t.benVisitDate >= Date(:fromDate) AND t.facilityID = :facilityID AND t.pharmacist_flag = 1 " + " AND t.providerServiceMapId= :providerServiceMapId AND (doctorFlag = 9 OR specialist_flag = 9) " + " ORDER BY consultationDate DESC ") public ArrayList getPharmaWorkListNew( @Param("providerServiceMapId") Integer providerServiceMapId, @Param("fromDate") Timestamp fromDate, - @Param("vanID") Integer vanID); + @Param("facilityID") Integer facilityID); @Query("SELECT t.pharmacist_flag from BeneficiaryFlowStatus t WHERE t.benFlowID = :benFlowID") public Short getPharmaFlag(@Param("benFlowID") Long benFlowID); @@ -421,9 +422,9 @@ public int updateBenFlowStatusAfterSpecialistMobileAPP(@Param("visitCode") Long // nurse worklist coming from MMU @Query("SELECT t from BeneficiaryFlowStatus t WHERE t.specialist_flag = 100 AND t.deleted = false AND t.referredVisitCode IS NOT NULL " + " AND t.processed = 'M' AND t.providerServiceMapId = :providerServiceMapId AND t.visitDate >= Date(:fromDate) " - + " AND t.vanID = :vanID ORDER BY t.visitDate DESC ") + + " AND t.facilityID = :facilityID ORDER BY t.visitDate DESC ") public ArrayList getMmuNurseWorklistNew( - @Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") Integer vanID, + @Param("providerServiceMapId") Integer providerServiceMapId, @Param("facilityID") Integer facilityID, @Param("fromDate") Timestamp fromDate); /** diff --git a/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java b/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java index adfee312..c97c2ff6 100644 --- a/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java @@ -220,7 +220,7 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws * We have to write new code to update ben status flow new logic */ int i = updateBenStatusFlagAfterNurseSaveSuccess(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (i > 0 && tcRequestOBJ != null && tcRequestOBJ.getWalkIn() == false) { int k = sMSGatewayServiceImpl.smsSenderGateway("schedule", nurseUtilityClass.getBeneficiaryRegID(), @@ -276,7 +276,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common // generate visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") && !visitDetailsOBJ.get("chiefComplaints").isJsonNull()) { @@ -587,7 +587,7 @@ public int saveDoctorDataCAC(JsonObject requestOBJ, String Authorization) throws // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -606,7 +606,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long ben int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } diff --git a/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java b/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java index 501aadf0..38175002 100644 --- a/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java @@ -244,7 +244,7 @@ public String saveANCNurseData(JsonObject requestOBJ, String Authorization) thro int j = updateBenFlowNurseAfterNurseActivityANC( requestOBJ.getAsJsonObject("visitDetails").getAsJsonObject("investigation"), tmpOBJ, benVisitID, - benFlowID, benVisitCode, nurseUtilityClass.getVanID(), tcRequestOBJ); + benFlowID, benVisitCode, nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (j > 0) saveSuccessFlag = ancSaveSuccessFlag; @@ -299,7 +299,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { } private int updateBenFlowNurseAfterNurseActivityANC(JsonObject investigationDataCheck, JsonObject tmpOBJ, - Long benVisitID, Long benFlowID, Long visitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitID, Long benFlowID, Long visitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag; short docFlag; short labIteration; @@ -345,7 +345,7 @@ private int updateBenFlowNurseAfterNurseActivityANC(JsonObject investigationData int rs = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivityANC(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - visitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID, labTechnicianFlag); + visitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID, labTechnicianFlag); return rs; } @@ -571,7 +571,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 07-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") diff --git a/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java b/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java index 4ad374e8..9df256d2 100644 --- a/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java @@ -79,7 +79,7 @@ public int createBenFlowRecord(String requestOBJ, Long beneficiaryRegID, Long be cal.add(Calendar.DAY_OF_YEAR, -7); long sevenDaysAgo = cal.getTimeInMillis(); ArrayList benFlowIDList = beneficiaryFlowStatusRepo.checkBenAlreadyInNurseWorkList( - obj.getBeneficiaryRegID(), obj.getProviderServiceMapID(), obj.getVanID(), + obj.getBeneficiaryRegID(), obj.getProviderServiceMapID(), obj.getFacilityID(), new Timestamp(sevenDaysAgo)); if (benFlowIDList != null && benFlowIDList.size() > 0) { // update i_ben_flow table for updated beneficiary id @@ -102,13 +102,13 @@ public int createBenFlowRecord(String requestOBJ, Long beneficiaryRegID, Long be public int updateBenFlowNurseAfterNurseActivity(Long benFlowID, Long benRegID, Long benVisitID, String visitReason, String visitCategory, Short nurseFlag, Short docFlag, Short labIteration, Short radiologistFlag, - Short oncologistFlag, Long visitCode, Integer vanID, Short specialistFlag, Timestamp tcDate, + Short oncologistFlag, Long visitCode, Integer facilityID, Short specialistFlag, Timestamp tcDate, Integer tcSpecialistUserID) { int i = 0; try { i = beneficiaryFlowStatusRepo.updateBenFlowStatusAfterNurseActivity(benFlowID, benRegID, benVisitID, visitReason, visitCategory, nurseFlag, docFlag, labIteration, radiologistFlag, oncologistFlag, - visitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + visitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); // System.out.println("hello"); } catch (Exception e) { // e.printStackTrace(); @@ -121,13 +121,13 @@ public int updateBenFlowNurseAfterNurseActivity(Long benFlowID, Long benRegID, L public int updateBenFlowNurseAfterNurseActivityANC(Long benFlowID, Long benRegID, Long benVisitID, String visitReason, String visitCategory, Short nurseFlag, Short docFlag, Short labIteration, Short radiologistFlag, - Short oncologistFlag, Long visitCode, Integer vanID, Short specialistFlag, Timestamp tcDate, + Short oncologistFlag, Long visitCode, Integer facilityID, Short specialistFlag, Timestamp tcDate, Integer tcSpecialistUserID, Short labTechnician) { int i = 0; try { i = beneficiaryFlowStatusRepo.updateBenFlowStatusAfterNurseActivityANC(benFlowID, benRegID, benVisitID, visitReason, visitCategory, nurseFlag, docFlag, labIteration, radiologistFlag, oncologistFlag, - visitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID, labTechnician); + visitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID, labTechnician); // System.out.println("hello"); } catch (Exception e) { // e.printStackTrace(); diff --git a/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java b/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java index c11f7ef4..173db082 100644 --- a/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java @@ -250,7 +250,7 @@ public String saveCancerScreeningNurseData(JsonObject requestOBJ, String Authori * We have to write new code to update ben status flow new logic */ int j = updateBenStatusFlagAfterNurseSaveSuccess(benVisitDetailsOBJ, benVisitID, benFlowID, - isReferedToMammogram, docVisitReq, benVisitCode, nurseUtilityClass.getVanID(), + isReferedToMammogram, docVisitReq, benVisitCode, nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (j > 0) @@ -318,7 +318,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(BeneficiaryVisitDetail benVisitDetailsOBJ, Long benVisitID, - Long benFlowID, Boolean isReferedToMammogram, Boolean docVisitReq, Long benVisitCode, Integer vanID, + Long benFlowID, Boolean isReferedToMammogram, Boolean docVisitReq, Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 0; @@ -351,7 +351,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(BeneficiaryVisitDetail benV int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitID, benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory(), nurseFlag, docFlag, labIteration, radiologistFlag, - oncologistFlag, benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + oncologistFlag, benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } @@ -377,7 +377,7 @@ public Map saveBenVisitDetails(BeneficiaryVisitDetail benVisitDeta // 11-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); visitIdAndCodeMap.put("visitID", benVisitID); visitIdAndCodeMap.put("visitCode", benVisitCode); diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java index 51d46f6f..15fdafa9 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonDoctorServiceImpl.java @@ -417,7 +417,7 @@ public String getDocWorkList() { } // New doc work-list service - public String getDocWorkListNew(Integer providerServiceMapId, Integer serviceID, Integer vanID) { + public String getDocWorkListNew(Integer providerServiceMapId, Integer serviceID, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (docWL != null && docWL > 0 && docWL <= 30) @@ -434,7 +434,7 @@ public String getDocWorkListNew(Integer providerServiceMapId, Integer serviceID, // TC doc work-list else if (serviceID != null && serviceID == 9) { docWorkList = beneficiaryFlowStatusRepo.getDocWorkListNewTC(providerServiceMapId, - new Timestamp(cutoffTime), vanID); + new Timestamp(cutoffTime), facilityID); for (BeneficiaryFlowStatus beneficiaryFlowStatus : docWorkList) { Boolean isHighrisk = beneficiaryFlowStatusRepo.getIsHighrisk(beneficiaryFlowStatus.getBeneficiaryID()); if(null != isHighrisk) @@ -447,12 +447,12 @@ else if (serviceID != null && serviceID == 9) { // New doc work-list service (Future scheduled beneficiary for TM) public String getDocWorkListNewFutureScheduledForTM(Integer providerServiceMapId, Integer serviceID, - Integer vanID) { + Integer facilityID) { ArrayList docWorkListFutureScheduled = new ArrayList<>(); if (serviceID != null && serviceID == 9) { docWorkListFutureScheduled = beneficiaryFlowStatusRepo - .getDocWorkListNewFutureScheduledTC(providerServiceMapId, vanID); + .getDocWorkListNewFutureScheduledTC(providerServiceMapId, facilityID); } return new Gson().toJson(docWorkListFutureScheduled); } diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java index a33f12ea..b9bf0850 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java @@ -615,16 +615,25 @@ public int getMaxCurrentdate(Long beneficiaryRegID, String visitreason, String v } public Long generateVisitCode(Long visitID, Integer vanID, Integer sessionID) { + return generateVisitCode(visitID, vanID, sessionID, null); + } + + public Long generateVisitCode(Long visitID, Integer vanID, Integer sessionID, Integer facilityID) { String visitCode = ""; - // van & session ID - String vanIDString = ""; - int vanIdLength = (int) (Math.log10(vanID) + 1); + // Use facilityID if vanID is null (new facility-based users) + Integer locationID = (vanID != null) ? vanID : facilityID; + if (locationID == null) { + throw new RuntimeException("Both vanID and facilityID are null. Cannot generate visit code."); + } + + String locationIDString = ""; + int locationIdLength = (int) (Math.log10(locationID) + 1); - for (int i = 0; i < 5 - vanIdLength; i++) { - vanIDString += "0"; + for (int i = 0; i < 5 - locationIdLength; i++) { + locationIDString += "0"; } - vanIDString += vanID; + locationIDString += locationID; String visitIDString = ""; int visitIdLength = (int) (Math.log10(visitID) + 1); for (int i = 0; i < 8 - visitIdLength; i++) { @@ -636,7 +645,7 @@ public Long generateVisitCode(Long visitID, Integer vanID, Integer sessionID) { // visitCode += sessionID + dayString + monthString + vanIDString + // visitIDString; // changed logic 14 digit visit code, removed day & month - visitCode += sessionID + vanIDString + visitIDString; + visitCode += sessionID + locationIDString + visitIDString; int i = benVisitDetailRepo.updateVisitCode(Long.valueOf(visitCode), visitID); if (i > 0) @@ -3577,7 +3586,7 @@ public String getNurseWorkList() { } // New Nurse worklist.... 26-03-2018 - public String getNurseWorkListNew(Integer providerServiceMapId, Integer vanID) { + public String getNurseWorkListNew(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (nurseWL != null && nurseWL > 0 && nurseWL <= 30) cal.add(Calendar.DAY_OF_YEAR, -nurseWL); @@ -3587,7 +3596,7 @@ public String getNurseWorkListNew(Integer providerServiceMapId, Integer vanID) { Timestamp fromDate = new Timestamp(sevenDaysAgo); ArrayList obj = beneficiaryFlowStatusRepo.getNurseWorklistNew(providerServiceMapId, - vanID, fromDate); + facilityID, fromDate); for (BeneficiaryFlowStatus beneficiaryFlowStatus : obj) { Boolean isHighrisk = beneficiaryFlowStatusRepo.getIsHighrisk(beneficiaryFlowStatus.getBeneficiaryID()); @@ -3598,7 +3607,7 @@ public String getNurseWorkListNew(Integer providerServiceMapId, Integer vanID) { } // nurse worklist TC schedule (current-date) new ... 05-02-2019 - public String getNurseWorkListTcCurrentDate(Integer providerServiceMapId, Integer vanID) { + public String getNurseWorkListTcCurrentDate(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (nurseTCWL != null && nurseTCWL > 0 && nurseTCWL <= 30) cal.add(Calendar.DAY_OF_YEAR, -nurseTCWL); @@ -3607,21 +3616,21 @@ public String getNurseWorkListTcCurrentDate(Integer providerServiceMapId, Intege long sevenDaysAgo = cal.getTimeInMillis(); ArrayList obj = beneficiaryFlowStatusRepo - .getNurseWorklistCurrentDate(providerServiceMapId, new Timestamp(sevenDaysAgo), vanID); + .getNurseWorklistCurrentDate(providerServiceMapId, new Timestamp(sevenDaysAgo), facilityID); return new Gson().toJson(obj); } // nurse worklist TC schedule (future-date) new ... 05-02-2019 - public String getNurseWorkListTcFutureDate(Integer providerServiceMapId, Integer vanID) { + public String getNurseWorkListTcFutureDate(Integer providerServiceMapId, Integer facilityID) { ArrayList obj = beneficiaryFlowStatusRepo - .getNurseWorklistFutureDate(providerServiceMapId, vanID); + .getNurseWorklistFutureDate(providerServiceMapId, facilityID); return new Gson().toJson(obj); } // New Lab worklist.... 26-03-2018 - public String getLabWorkListNew(Integer providerServiceMapId, Integer vanID) { + public String getLabWorkListNew(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (labWL != null && labWL > 0 && labWL <= 30) cal.add(Calendar.DAY_OF_YEAR, -labWL); @@ -3630,13 +3639,13 @@ public String getLabWorkListNew(Integer providerServiceMapId, Integer vanID) { long sevenDaysAgo = cal.getTimeInMillis(); ArrayList obj = beneficiaryFlowStatusRepo.getLabWorklistNew(providerServiceMapId, - new Timestamp(sevenDaysAgo), vanID); + new Timestamp(sevenDaysAgo), facilityID); return new Gson().toJson(obj); } // New radiologist worklist.... 26-03-2018 - public String getRadiologistWorkListNew(Integer providerServiceMapId, Integer vanID) { + public String getRadiologistWorkListNew(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (radioWL != null && radioWL > 0 && radioWL <= 30) cal.add(Calendar.DAY_OF_YEAR, -radioWL); @@ -3645,13 +3654,13 @@ public String getRadiologistWorkListNew(Integer providerServiceMapId, Integer va long sevenDaysAgo = cal.getTimeInMillis(); ArrayList obj = beneficiaryFlowStatusRepo.getRadiologistWorkListNew(providerServiceMapId, - new Timestamp(sevenDaysAgo), vanID); + new Timestamp(sevenDaysAgo), facilityID); return new Gson().toJson(obj); } // New oncologist worklist.... 26-03-2018 - public String getOncologistWorkListNew(Integer providerServiceMapId, Integer vanID) { + public String getOncologistWorkListNew(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (oncoWL != null && oncoWL > 0 && oncoWL <= 30) @@ -3661,13 +3670,13 @@ public String getOncologistWorkListNew(Integer providerServiceMapId, Integer van long sevenDaysAgo = cal.getTimeInMillis(); ArrayList obj = beneficiaryFlowStatusRepo.getOncologistWorkListNew(providerServiceMapId, - new Timestamp(sevenDaysAgo), vanID); + new Timestamp(sevenDaysAgo), facilityID); return new Gson().toJson(obj); } // New pharma worklist.... 26-03-2018 - public String getPharmaWorkListNew(Integer providerServiceMapId, Integer vanID) { + public String getPharmaWorkListNew(Integer providerServiceMapId, Integer facilityID) { Calendar cal = Calendar.getInstance(); if (pharmaWL != null && pharmaWL > 0 && pharmaWL <= 30) @@ -3677,7 +3686,7 @@ public String getPharmaWorkListNew(Integer providerServiceMapId, Integer vanID) long sevenDaysAgo = cal.getTimeInMillis(); ArrayList obj = beneficiaryFlowStatusRepo.getPharmaWorkListNew(providerServiceMapId, - new Timestamp(sevenDaysAgo), vanID); + new Timestamp(sevenDaysAgo), facilityID); return new Gson().toJson(obj); } diff --git a/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java b/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java index 90a8e47d..fb7d594d 100644 --- a/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java @@ -176,7 +176,7 @@ public String saveCovid19NurseData(JsonObject requestOBJ, String Authorization) * We have to write new code to update ben status flow new logic */ int J = updateBenFlowNurseAfterNurseActivityANC(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (J > 0) saveSuccessFlag = historySaveSuccessFlag; @@ -252,7 +252,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 11-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("cdss") && !visitDetailsOBJ.get("cdss").isJsonNull()) { JsonObject cdssObj = visitDetailsOBJ.getAsJsonObject("cdss"); @@ -626,7 +626,7 @@ public Long saveBenCovid19VitalDetails(JsonObject vitalDetailsOBJ, Long benVisit // method for updating ben flow status flag for nurse private int updateBenFlowNurseAfterNurseActivityANC(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag; short docFlag; short labIteration; @@ -649,7 +649,7 @@ private int updateBenFlowNurseAfterNurseActivityANC(JsonObject tmpOBJ, Long benV int rs = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return rs; } diff --git a/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java b/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java index 2433a513..0109f37f 100644 --- a/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java @@ -241,7 +241,7 @@ public String saveNurseDataFP(JsonObject requestOBJ, String Authorization) throw int i = updateBenStatusFlagAfterNurseSaveSuccess(tmpOBJ, nurseUtilityClass.getBenVisitID(), nurseUtilityClass.getBenFlowID(), nurseUtilityClass.getVisitCode(), - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (i > 0 && tcRequestOBJ != null && tcRequestOBJ.getWalkIn() == false) { int k = sMSGatewayServiceImpl.smsSenderGateway("schedule", nurseUtilityClass.getBeneficiaryRegID(), @@ -288,7 +288,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -307,7 +307,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long ben int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } @@ -336,7 +336,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common // 07-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") && !visitDetailsOBJ.get("chiefComplaints").isJsonNull()) { diff --git a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java index 7c40a69d..db8a1ee1 100644 --- a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java @@ -189,7 +189,7 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws */ int i = updateBenStatusFlagAfterNurseSaveSuccess(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); // if (i > 0) saveSuccessFlag = historySaveSuccessFlag; @@ -246,7 +246,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -265,7 +265,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long ben int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } @@ -287,7 +287,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 07-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") diff --git a/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java index 5b1c4b16..3b97e0ce 100644 --- a/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java @@ -195,7 +195,7 @@ public String saveNCDCareNurseData(JsonObject requestOBJ, String Authorization) */ int J = updateBenFlowNurseAfterNurseActivityANC( requestOBJ.getAsJsonObject("visitDetails").getAsJsonObject("investigation"), tmpOBJ, benVisitID, - benFlowID, benVisitCode, nurseUtilityClass.getVanID(), tcRequestOBJ); + benFlowID, benVisitCode, nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (J > 0) saveSuccessFlag = historySaveSuccessFlag; @@ -253,7 +253,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenFlowNurseAfterNurseActivityANC(JsonObject investigationDataCheck, JsonObject tmpOBJ, - Long benVisitID, Long benFlowID, Long benVisitCode, Integer vanID, + Long benVisitID, Long benFlowID, Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag; short docFlag; @@ -287,7 +287,7 @@ private int updateBenFlowNurseAfterNurseActivityANC(JsonObject investigationData int rs = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return rs; } @@ -315,7 +315,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 11-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("adherence") && !visitDetailsOBJ.get("adherence").isJsonNull()) { diff --git a/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java b/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java index 21ed8130..c9342349 100644 --- a/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java @@ -380,7 +380,7 @@ public String saveNCDScreeningNurseData(JsonObject requestOBJ, String Authorizat if( isFlw!=null){ if(!isFlw){ int J = updateBenFlowNurseAfterNurseActivityANC(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ, isDocVisitRequired); + nurseUtilityClass.getFacilityID(), tcRequestOBJ, isDocVisitRequired); if (J > 0) saveSuccessFlag = benVisitCode; @@ -401,7 +401,7 @@ public String saveNCDScreeningNurseData(JsonObject requestOBJ, String Authorizat } }else { int J = updateBenFlowNurseAfterNurseActivityANC(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ, isDocVisitRequired); + nurseUtilityClass.getFacilityID(), tcRequestOBJ, isDocVisitRequired); if (J > 0) saveSuccessFlag = benVisitCode; @@ -466,7 +466,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenFlowNurseAfterNurseActivityANC(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ, boolean isDocVisitRequired) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ, boolean isDocVisitRequired) { short nurseFlag = (short) 9; short docFlag = (short) 0; @@ -491,7 +491,7 @@ private int updateBenFlowNurseAfterNurseActivityANC(JsonObject tmpOBJ, Long benV int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; @@ -520,7 +520,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 11-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") @@ -623,7 +623,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU } private int updateBenFlowNurseAfterNurseActivityANC(Long benRegID, Long benVisitID, Long benFlowID, - String visitReason, String visitCategory, Boolean isScreeningDone, Long benVisitCode, Integer vanID) { + String visitReason, String visitCategory, Boolean isScreeningDone, Long benVisitCode, Integer facilityID) { short nurseFlag; short docFlag = (short) 0; short labIteration = (short) 0; @@ -638,7 +638,7 @@ private int updateBenFlowNurseAfterNurseActivityANC(Long benRegID, Long benVisit nurseFlag = (short) 100; int rs = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, benRegID, benVisitID, - visitReason, visitCategory, nurseFlag, docFlag, labIteration, (short) 0, (short) 0, benVisitCode, vanID, + visitReason, visitCategory, nurseFlag, docFlag, labIteration, (short) 0, (short) 0, benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return rs; diff --git a/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java b/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java index 55640bd0..4bd6c4df 100644 --- a/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java @@ -214,7 +214,7 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws * We have to write new code to update ben status flow new logic */ int i = updateBenStatusFlagAfterNurseSaveSuccess(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (i > 0 && tcRequestOBJ != null && tcRequestOBJ.getWalkIn() == false) { int k = sMSGatewayServiceImpl.smsSenderGateway("schedule", nurseUtilityClass.getBeneficiaryRegID(), @@ -419,7 +419,7 @@ public int saveDoctorDataNNI(JsonObject requestOBJ, String Authorization) throws // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -438,7 +438,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long ben int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } @@ -456,7 +456,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common // generate visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0 && benVisitCode != null && benVisitCode > 0) { if (visitDetailsOBJ.has("chiefComplaints") && !visitDetailsOBJ.get("chiefComplaints").isJsonNull()) { diff --git a/src/main/java/com/iemr/hwc/service/patientApp/master/CommonPatientAppMasterServiceImpl.java b/src/main/java/com/iemr/hwc/service/patientApp/master/CommonPatientAppMasterServiceImpl.java index 72571836..d82d1fea 100644 --- a/src/main/java/com/iemr/hwc/service/patientApp/master/CommonPatientAppMasterServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/patientApp/master/CommonPatientAppMasterServiceImpl.java @@ -156,12 +156,12 @@ public String saveCovidScreeningData(String requestObj) throws Exception { benDetailsOBJ.setVisitReason("New Chief Complaint"); benDetailsOBJ.setVisitCategory("COVID-19 Screening"); - if (benDetailsOBJ != null && benDetailsOBJ.getVanID() != null && benDetailsOBJ.getBeneficiaryRegID() != null + if (benDetailsOBJ != null && (benDetailsOBJ.getVanID() != null || nurseUtilityClass.getFacilityID() != null) && benDetailsOBJ.getBeneficiaryRegID() != null && benDetailsOBJ.getProviderServiceMapID() != null) { Long visitID = commonNurseServiceImpl.saveBeneficiaryVisitDetails(benDetailsOBJ); Long visitCode = null; if (visitID != null) { - visitCode = commonNurseServiceImpl.generateVisitCode(visitID, nurseUtilityClass.getVanID(), 3); + visitCode = commonNurseServiceImpl.generateVisitCode(visitID, nurseUtilityClass.getVanID(), 3, nurseUtilityClass.getFacilityID()); if (visitCode != null) { Covid19BenFeedback covid19BenFeedbackOBJ = InputMapper.gson() .fromJson(jsonOBJ.getJSONObject("covidDetails").toString(), Covid19BenFeedback.class); @@ -194,7 +194,7 @@ public String savechiefComplaintsData(String requestObj) throws Exception { CommonUtilityClass nurseUtilityClass = InputMapper.gson().fromJson(requestObj, CommonUtilityClass.class); Long visitCode = null; if (nurseUtilityClass != null && nurseUtilityClass.getBeneficiaryRegID() != null - && nurseUtilityClass.getVanID() != null && nurseUtilityClass.getProviderServiceMapID() != null + && (nurseUtilityClass.getVanID() != null || nurseUtilityClass.getFacilityID() != null) && nurseUtilityClass.getProviderServiceMapID() != null && nurseUtilityClass.getCreatedBy() != null) { ChiefComplaintsPatientAPP[] benChiefComplaintArray = InputMapper.gson().fromJson( jsonOBJ.getJSONObject("chiefComplaints").getJSONArray("pastIllness").toString(), @@ -217,7 +217,7 @@ public String savechiefComplaintsData(String requestObj) throws Exception { Long visitID = commonNurseServiceImpl.saveBeneficiaryVisitDetails(benDetailsOBJ); if (visitID != null) { - visitCode = commonNurseServiceImpl.generateVisitCode(visitID, nurseUtilityClass.getVanID(), 3); + visitCode = commonNurseServiceImpl.generateVisitCode(visitID, nurseUtilityClass.getVanID(), 3, nurseUtilityClass.getFacilityID()); if (visitCode != null) { } else throw new RuntimeException(" Error in episode creation - visit code"); @@ -360,6 +360,7 @@ private Integer creataAndUpdateBeneficairyFlowStatus(TeleconsultationRequestOBJ benFlowOBJ.setVillageName(nurseUtilityClass.getVillageName()); benFlowOBJ.setProviderServiceMapId(nurseUtilityClass.getProviderServiceMapID()); benFlowOBJ.setVanID(nurseUtilityClass.getVanID()); + benFlowOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); benFlowOBJ.setParkingPlaceID(nurseUtilityClass.getParkingPlaceID()); benFlowOBJ.settCSpecialistUserID(tcRequestOBJ.getUserID()); @@ -482,7 +483,7 @@ public Long saveSpecialistDiagnosisData(String requestObj) throws Exception { PrescriptionDetail prescriptionDetail = new PrescriptionDetail(); if (nurseUtilityClass != null && nurseUtilityClass.getBeneficiaryRegID() != null - && nurseUtilityClass.getVisitCode() != null && nurseUtilityClass.getVanID() != null + && nurseUtilityClass.getVisitCode() != null && (nurseUtilityClass.getVanID() != null || nurseUtilityClass.getFacilityID() != null) && nurseUtilityClass.getCreatedBy() != null) { prescriptionDetail.setBeneficiaryRegID(nurseUtilityClass.getBeneficiaryRegID()); prescriptionDetail.setVisitCode(nurseUtilityClass.getVisitCode()); diff --git a/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java index ebb0e37f..384805b9 100644 --- a/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java @@ -224,7 +224,7 @@ public String savePNCNurseData(JsonObject requestOBJ, String Authorization) thro */ int j = updateBenStatusFlagAfterNurseSaveSuccess(tmpOBJ, benVisitID, benFlowID, benVisitCode, - nurseUtilityClass.getVanID(), tcRequestOBJ); + nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (j > 0) saveSuccessFlag = historySaveSuccessFlag; @@ -280,7 +280,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long benVisitID, Long benFlowID, - Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -299,7 +299,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(JsonObject tmpOBJ, Long ben int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, tmpOBJ.get("beneficiaryRegID").getAsLong(), benVisitID, tmpOBJ.get("visitReason").getAsString(), tmpOBJ.get("visitCategory").getAsString(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } @@ -509,7 +509,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // 11-06-2018 visit code Long benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); if (benVisitID != null && benVisitID > 0) { if (visitDetailsOBJ.has("chiefComplaints") diff --git a/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java b/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java index 32bc8472..8e406cb9 100644 --- a/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java @@ -217,7 +217,7 @@ public String quickConsultNurseDataInsert(JsonObject jsnOBJ, String Authorizatio // 11-06-2018 visit code benVisitCode = commonNurseServiceImpl.generateVisitCode(benVisitID, nurseUtilityClass.getVanID(), - nurseUtilityClass.getSessionID()); + nurseUtilityClass.getSessionID(), nurseUtilityClass.getFacilityID()); // Getting benflowID for ben status update Long benFlowID = null; // if (jsnOBJ.has("benFlowID")) { @@ -272,7 +272,7 @@ public String quickConsultNurseDataInsert(JsonObject jsnOBJ, String Authorizatio */ int j = updateBenStatusFlagAfterNurseSaveSuccess(benVisitDetailsOBJ, benVisitID, benFlowID, - benVisitCode, nurseUtilityClass.getVanID(), tcRequestOBJ); + benVisitCode, nurseUtilityClass.getFacilityID(), tcRequestOBJ); if (j > 0) returnOBJ = 1; @@ -339,7 +339,7 @@ public void deleteVisitDetails(JsonObject requestOBJ) throws Exception { // method for updating ben flow status flag for nurse private int updateBenStatusFlagAfterNurseSaveSuccess(BeneficiaryVisitDetail benVisitDetailsOBJ, Long benVisitID, - Long benFlowID, Long benVisitCode, Integer vanID, TeleconsultationRequestOBJ tcRequestOBJ) { + Long benFlowID, Long benVisitCode, Integer facilityID, TeleconsultationRequestOBJ tcRequestOBJ) { short nurseFlag = (short) 9; short docFlag = (short) 1; short labIteration = (short) 0; @@ -358,7 +358,7 @@ private int updateBenStatusFlagAfterNurseSaveSuccess(BeneficiaryVisitDetail benV int i = commonBenStatusFlowServiceImpl.updateBenFlowNurseAfterNurseActivity(benFlowID, benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitID, benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory(), nurseFlag, docFlag, labIteration, (short) 0, (short) 0, - benVisitCode, vanID, specialistFlag, tcDate, tcSpecialistUserID); + benVisitCode, facilityID, specialistFlag, tcDate, tcSpecialistUserID); return i; } From fb37347c6ef96ef31069b991d86b7b9053b423f0 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 26 Mar 2026 18:38:22 +0530 Subject: [PATCH 05/18] fix:remove van in hwc --- .../location/LocationController.java | 9 ++-- .../hwc/repo/location/DistrictMasterRepo.java | 7 +++ .../hwc/repo/login/FacilityLoginRepo.java | 50 +++++++++++++++++++ .../service/location/LocationServiceImpl.java | 33 ++++++++++++ .../login/IemrMmuLoginServiceImpl.java | 28 +++++++++-- 5 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java diff --git a/src/main/java/com/iemr/hwc/controller/location/LocationController.java b/src/main/java/com/iemr/hwc/controller/location/LocationController.java index 891c086e..96f0a59f 100644 --- a/src/main/java/com/iemr/hwc/controller/location/LocationController.java +++ b/src/main/java/com/iemr/hwc/controller/location/LocationController.java @@ -184,10 +184,13 @@ public String getLocDetailsBasedOnSpIDAndPsmIDNew(@RequestBody String comingRequ OutputResponse response = new OutputResponse(); try { JSONObject obj = new JSONObject(comingRequest); - if (obj != null && obj.has("vanID") && obj.has("spPSMID") && obj.get("vanID") != null - && obj.get("spPSMID") != null) { + if (obj != null && obj.has("vanID") && obj.get("vanID") != null + && !obj.isNull("vanID") && obj.has("spPSMID") && obj.get("spPSMID") != null) { String s = locationServiceImpl.getLocDetailsNew(obj.getInt("vanID"), obj.getInt("spPSMID"), obj); - + response.setResponse(s); + } else if (obj != null && obj.has("facilityID") && obj.get("facilityID") != null + && !obj.isNull("facilityID") && obj.has("spPSMID") && obj.get("spPSMID") != null) { + String s = locationServiceImpl.getLocDetailsByFacilityID(obj.getInt("facilityID"), obj.getInt("spPSMID")); response.setResponse(s); } else { response.setError(5000, "Invalid request"); diff --git a/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java b/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java index e382764f..2ab56a5c 100644 --- a/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java +++ b/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java @@ -37,4 +37,11 @@ public interface DistrictMasterRepo extends CrudRepository { @Query(" SELECT d.districtID, d.districtName,d.govtLGDStateID,d.govtLGDDistrictID FROM Districts d " + " WHERE d.stateID = :stateID AND d.deleted != true ") public ArrayList getDistrictMaster(@Param("stateID") Integer stateID); + @Query(value = "SELECT f.StateID, f.DistrictID, d.DistrictName, f.BlockID, b.BlockName " + + "FROM m_facility f " + + "LEFT JOIN m_district d ON f.DistrictID = d.DistrictID " + + "LEFT JOIN m_districtblock b ON f.BlockID = b.BlockID " + + "WHERE f.FacilityID = :facilityID AND f.Deleted = false", nativeQuery = true) + public Object[] getFacilityLocation(@Param("facilityID") Integer facilityID); + } diff --git a/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java new file mode 100644 index 00000000..5acd993b --- /dev/null +++ b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java @@ -0,0 +1,50 @@ +/* +* AMRIT – Accessible Medical Records via Integrated Technology +* Integrated EHR (Electronic Health Records) Solution +* +* Copyright (C) "Piramal Swasthya Management and Research Institute" +* +* This file is part of AMRIT. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see https://www.gnu.org/licenses/. +*/ +package com.iemr.hwc.repo.login; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.iemr.hwc.data.login.MasterVan; + +@Repository +public interface FacilityLoginRepo extends CrudRepository { + + @Query(value = "SELECT DISTINCT usrm.FacilityID, f.FacilityName, " + + "f.StateID, COALESCE(s.StateName,'') AS stateName, " + + "f.DistrictID, COALESCE(d.DistrictName,'') AS districtName, " + + "f.BlockID, COALESCE(b.BlockName,'') AS blockName " + + "FROM m_UserServiceRoleMapping usrm " + + "JOIN m_facility f ON usrm.FacilityID = f.FacilityID " + + "LEFT JOIN m_state s ON s.StateID = f.StateID " + + "LEFT JOIN m_district d ON d.DistrictID = f.DistrictID " + + "LEFT JOIN m_districtblock b ON b.BlockID = f.BlockID " + + "WHERE usrm.UserID = :userID AND usrm.ProviderServiceMapID = :providerServiceMapID " + + "AND usrm.Deleted = false AND usrm.FacilityID IS NOT NULL " + + "AND f.Deleted = false LIMIT 1", nativeQuery = true) + Object[] getUserFacilityDetails(@Param("userID") Integer userID, + @Param("providerServiceMapID") Integer providerServiceMapID); +} diff --git a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java index 880a6c13..82082c0c 100644 --- a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java @@ -350,6 +350,39 @@ public String getLocDetailsNew(Integer vanID, Integer spPSMID,JSONObject obj) { return new Gson().toJson(resMap); } + // Facility-based location — no Van dependency + public String getLocDetailsByFacilityID(Integer facilityID, Integer spPSMID) { + Map resMap = new HashMap(); + + // Get location from m_facility directly + Map otherLoc = new HashMap<>(); + Object[] facilityLoc = districtMasterRepo.getFacilityLocation(facilityID); + if (facilityLoc != null) { + otherLoc.put("stateID", facilityLoc[0]); + Map distMap = new HashMap<>(); + distMap.put("districtID", facilityLoc[1]); + distMap.put("districtName", facilityLoc[2]); + distMap.put("blockId", facilityLoc[3]); + distMap.put("blockName", facilityLoc[4]); + otherLoc.put("districtList", new Object[]{distMap}); + } + + // State master + ArrayList stateList = new ArrayList<>(); + ArrayList stateMasterList = stateMasterRepo.getStateMaster(); + if (stateMasterList != null && stateMasterList.size() > 0) { + for (Object[] objArr : stateMasterList) { + States states = new States((Integer) objArr[0], (String) objArr[1], (Integer) objArr[2]); + stateList.add(states); + } + } + + resMap.put("otherLoc", otherLoc); + resMap.put("stateMaster", stateList); + + return new Gson().toJson(resMap); + } + private Map getDefaultLocDetails(ArrayList objList) { Map returnObj = new HashMap<>(); Map distMap = new HashMap<>(); diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index ab5eafc2..c7b3f711 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -35,6 +35,7 @@ import com.iemr.hwc.data.login.MasterVan; import com.iemr.hwc.data.login.ServicePointVillageMapping; import com.iemr.hwc.data.login.UserVanSpDetails_View; +import com.iemr.hwc.repo.login.FacilityLoginRepo; import com.iemr.hwc.repo.login.MasterVanRepo; import com.iemr.hwc.repo.login.ServicePointVillageMappingRepo; import com.iemr.hwc.repo.login.UserParkingplaceMappingRepo; @@ -50,6 +51,12 @@ public class IemrMmuLoginServiceImpl implements IemrMmuLoginService { private VanServicepointMappingRepo vanServicepointMappingRepo; private ServicePointVillageMappingRepo servicePointVillageMappingRepo; private UserVanSpDetails_View_Repo userVanSpDetails_View_Repo; + private FacilityLoginRepo facilityLoginRepo; + + @Autowired + public void setFacilityLoginRepo(FacilityLoginRepo facilityLoginRepo) { + this.facilityLoginRepo = facilityLoginRepo; + } @Autowired public void setUserVanSpDetails_View_Repo(UserVanSpDetails_View_Repo userVanSpDetails_View_Repo) { @@ -168,10 +175,23 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) userVanSpDetails_ViewList.add(userVanSpDetails_ViewOBJ); } } + + // Facility fallback: if no Van mapping, check m_UserServiceRoleMapping for facilityID + if (userVanSpDetails_ViewList.isEmpty()) { + Object[] facilityDetails = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); + if (facilityDetails != null && facilityDetails.length > 0) { + UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); + facilityEntry.setUserID(userID); + facilityEntry.setFacilityID((Integer) facilityDetails[0]); + // vanID stays null — no Van for facility-based users + facilityEntry.setVanSession((short) 3); + userVanSpDetails_ViewList.add(facilityEntry); + } + } + resMap.put("UserVanSpDetails", userVanSpDetails_ViewList); - // System.out.println("helloo bhai---" + new Gson().toJson(resMap)); - // Later will remove below part till 1.1 new api is getting called on - // continue button + + // Location details List parkingPlaceList = userParkingplaceMappingRepo.getUserParkingPlce(userID); Map parkingPlaceLocationMap = new HashMap<>(); if (parkingPlaceList.size() > 0) { @@ -185,7 +205,7 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) parkingPlaceLocationMap.put("blockName", obj1[6]); } resMap.put("UserLocDetails", parkingPlaceLocationMap); - // 1.1 + return new Gson().toJson(resMap); } From 7d8160ceca95160106ea22d5290786b917dfd330 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Fri, 27 Mar 2026 10:58:46 +0530 Subject: [PATCH 06/18] fix:remove van --- .../com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index c7b3f711..01fc9790 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -183,6 +183,8 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); facilityEntry.setUserID(userID); facilityEntry.setFacilityID((Integer) facilityDetails[0]); + facilityEntry.setProviderServiceMapID(providerServiceMapID); + facilityEntry.setVanNoAndType((String) facilityDetails[1]); // facilityName // vanID stays null — no Van for facility-based users facilityEntry.setVanSession((short) 3); userVanSpDetails_ViewList.add(facilityEntry); From 3f7beb4398d4e31d6ecb0500022527c45939baa0 Mon Sep 17 00:00:00 2001 From: SnehaRH Date: Mon, 30 Mar 2026 19:04:57 +0530 Subject: [PATCH 07/18] docs: add CLAUDE.md for Claude Code guidance --- CLAUDE.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..9a2d61c8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,80 @@ +# CLAUDE.md - HWC-API + +## Project Overview + +HWC-API (Health and Wellness Centre API) is the backend service for Health and Wellness Centres in the AMRIT platform. It handles patient registration, nurse assessments, doctor consultations, lab tests, prescriptions, teleconsultation, and various clinical workflows including ANC, PNC, NCD screening, cancer screening, neonatal/childhood care, family planning, COVID-19, and general OPD. It also supports offline data sync for field-level workers and CHO (Community Health Officer) app sync. + +## Tech Stack + +- Java 17, Spring Boot 3.2.2, Maven +- Spring Data JPA / Hibernate, MySQL 8.0 +- Redis for session management +- Lombok, MapStruct +- SpringDoc OpenAPI (Swagger UI at `/swagger-ui.html`) +- ECS logging (logback-ecs-encoder) +- JaCoCo for test coverage +- Packaged as WAR for Wildfly deployment + +## Build & Run + +```bash +mvn clean install -DENV_VAR=local # Build +mvn spring-boot:run -DENV_VAR=local # Run locally +mvn -B package --file pom.xml -P # Package WAR (dev, local, test, ci, uat) +mvn test # Run tests +``` + +Environment config: `src/main/resources/common_.properties` is copied to `application.properties` at build time. + +## Key Packages (`com.iemr.hwc`) + +- **controller/** - REST endpoints organized by clinical workflow: + - `registrar/` - Patient registration (main + master data) + - `anc/` - Antenatal Care + - `pnc/` - Postnatal Care + - `ncdscreening/` - NCD Screening (diabetes, hypertension, oral, breast, cervical cancer) + - `ncdCare/` - NCD Care follow-up + - `cancerscreening/` - Cancer screening workflows + - `generalOPD/` - General OPD consultations + - `quickconsult/` - Quick consultation + - `neonatal/` - Neonatal and immunization services + - `adolescent/` - Childhood and adolescent health + - `familyPlanning/` - Family planning services + - `covid19/` - COVID-19 screening and management + - `labtechnician/` - Lab test ordering and results + - `teleconsultation/` - Telemedicine specialist consultations + - `videoconsultation/` - Video consultation (QuickBlox integration) + - `foetalmonitor/` - Foetal monitor integration + - `dataSyncActivity/` - Offline data sync (van/spoke to server) + - `dataSyncLayerCentral/` - Central data sync layer + - `choApp/` - CHO App sync endpoints + - `patientApp/` - Patient mobile app endpoints + - `common/` - Shared endpoints (worklist, master data) + - `location/` - Location management + - `masterVillage/` - Village master data + - `report/` - CRM reports + - `snomedct/` - SNOMED CT terminology + - `spoke/` - Van/spoke management + - `uptsu/` - UP Technical Support Unit integration + - `diabetesAndHypertensionOutcome/` - Diabetes/hypertension outcome tracking + - `wo/` - Location controller (alternate) +- **service/** - Business logic layer (mirrors controller structure) +- **repo/** - Spring Data JPA repositories +- **data/** - JPA entities organized by domain (doctor, nurse, anc, pnc, neonatal, labModule, etc.) +- **annotation/** - Custom annotations (SQL injection safe validation) +- **config/** - Application configuration +- **utils/** - Utilities (Redis, HTTP, validation, session, gateway, email, exception handling, mapper) + +## Architecture Notes + +- Comprehensive clinical workflow engine supporting 10+ visit types (ANC, PNC, NCD, cancer, general OPD, neonatal, adolescent, family planning, COVID-19, quick consult) +- Beneficiary flow status (`benFlowStatus/`) tracks patients through registration -> nurse -> doctor -> lab -> pharmacist pipeline +- Offline-first architecture: data sync layer enables van/spoke devices to work offline and sync to central server +- CHO App sync provides mobile-optimized endpoints for Community Health Officers +- Teleconsultation integration enables specialist remote consultations +- Video consultation via QuickBlox +- Foetal monitor device integration for ANC +- UPTSU integration for Uttar Pradesh government health system +- SNOMED CT for standardized clinical terminology +- SQL injection prevention via custom annotation validators +- Artifact ID: `hwc-api`, group: `com.iemr.hwc`, version: 3.2.1 From be24a1bba201b903eb165af68a1a10faa13fe019 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 1 Apr 2026 13:00:33 +0530 Subject: [PATCH 08/18] fix: rename getUserVanSpDetails to getUserFacilityDetails and read facilityID first - Endpoint renamed from /getUserVanSpDetails to /getUserFacilityDetails - Login reads facilityID from m_UserServiceRoleMapping first - Van view as fallback for old users without role mapping Co-Authored-By: Claude Opus 4.6 (1M context) --- .../controller/spoke/VanSpokeController.java | 6 +-- .../login/IemrMmuLoginServiceImpl.java | 45 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java index 061798e0..97908b82 100644 --- a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java +++ b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java @@ -92,9 +92,9 @@ public String getServicepointVillages(@RequestBody String comingRequest) { return response.toString(); } - @Operation(summary = "Get user van details") - @PostMapping(value = "/getUserVanSpDetails", produces = { "application/json" }) - public String getUserVanSpDetails(@RequestBody String comingRequest) { + @Operation(summary = "Get user facility details") + @PostMapping(value = "/getUserFacilityDetails", produces = { "application/json" }) + public String getUserFacilityDetails(@RequestBody String comingRequest) { OutputResponse response = new OutputResponse(); try { diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index 01fc9790..e44c0dd9 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -165,38 +165,39 @@ public String getServicepointVillages(Integer servicePointID) { @Override public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) { Map resMap = new HashMap<>(); - ArrayList objList = userVanSpDetails_View_Repo.getUserVanSpDetails_View(userID, providerServiceMapID); ArrayList userVanSpDetails_ViewList = new ArrayList<>(); - if (objList.size() > 0) { - for (Object[] objArray : objList) { - UserVanSpDetails_View userVanSpDetails_ViewOBJ = new UserVanSpDetails_View((Integer) objArray[0], - (Integer) objArray[1], (String) objArray[2], (Short) objArray[3], (Integer) objArray[4], - (String) objArray[5], (Integer) objArray[6], (Integer) objArray[7], 0); - userVanSpDetails_ViewList.add(userVanSpDetails_ViewOBJ); - } + + // First: check m_UserServiceRoleMapping for facilityID (facility-based users) + Object[] facilityDetails = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); + if (facilityDetails != null && facilityDetails.length > 0 && facilityDetails[0] != null) { + UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); + facilityEntry.setUserID(userID); + facilityEntry.setFacilityID((Integer) facilityDetails[0]); + facilityEntry.setProviderServiceMapID(providerServiceMapID); + facilityEntry.setVanNoAndType((String) facilityDetails[1]); // facilityName + facilityEntry.setVanSession((short) 3); + userVanSpDetails_ViewList.add(facilityEntry); } - // Facility fallback: if no Van mapping, check m_UserServiceRoleMapping for facilityID + // Fallback: if no facilityID in role mapping, try Van view (old users) if (userVanSpDetails_ViewList.isEmpty()) { - Object[] facilityDetails = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); - if (facilityDetails != null && facilityDetails.length > 0) { - UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); - facilityEntry.setUserID(userID); - facilityEntry.setFacilityID((Integer) facilityDetails[0]); - facilityEntry.setProviderServiceMapID(providerServiceMapID); - facilityEntry.setVanNoAndType((String) facilityDetails[1]); // facilityName - // vanID stays null — no Van for facility-based users - facilityEntry.setVanSession((short) 3); - userVanSpDetails_ViewList.add(facilityEntry); + ArrayList objList = userVanSpDetails_View_Repo.getUserVanSpDetails_View(userID, providerServiceMapID); + if (objList != null && objList.size() > 0) { + for (Object[] objArray : objList) { + UserVanSpDetails_View userVanSpDetails_ViewOBJ = new UserVanSpDetails_View((Integer) objArray[0], + (Integer) objArray[1], (String) objArray[2], (Short) objArray[3], (Integer) objArray[4], + (String) objArray[5], (Integer) objArray[6], (Integer) objArray[7], 0); + userVanSpDetails_ViewList.add(userVanSpDetails_ViewOBJ); + } } } resMap.put("UserVanSpDetails", userVanSpDetails_ViewList); - // Location details - List parkingPlaceList = userParkingplaceMappingRepo.getUserParkingPlce(userID); + // Location details from parking place (for old Van-based users) Map parkingPlaceLocationMap = new HashMap<>(); - if (parkingPlaceList.size() > 0) { + List parkingPlaceList = userParkingplaceMappingRepo.getUserParkingPlce(userID); + if (parkingPlaceList != null && parkingPlaceList.size() > 0) { Object[] obj1 = parkingPlaceList.get(0); parkingPlaceLocationMap.put("parkingPlaceID", obj1[0]); parkingPlaceLocationMap.put("stateID", obj1[1]); From a1fd68510e84fedbe329784ae10129096695d944 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 1 Apr 2026 13:50:51 +0530 Subject: [PATCH 09/18] fix: rename getWorklistByVanID to getWorklistByFacilityID for 104 referral MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UPTSU endpoint accepts facilityID directly - Old getWorklist(vanID) delegates to new getWorklistByFacilityID - Skips Van→Facility lookup for new users Co-Authored-By: Claude Opus 4.6 (1M context) --- .../uptsu/UPTechnicalSupportUnitController.java | 8 ++++---- .../java/com/iemr/hwc/service/uptsu/UptsuService.java | 2 ++ .../java/com/iemr/hwc/service/uptsu/UptsuServiceImpl.java | 7 ++++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/uptsu/UPTechnicalSupportUnitController.java b/src/main/java/com/iemr/hwc/controller/uptsu/UPTechnicalSupportUnitController.java index 6e3db047..c8baa9b2 100644 --- a/src/main/java/com/iemr/hwc/controller/uptsu/UPTechnicalSupportUnitController.java +++ b/src/main/java/com/iemr/hwc/controller/uptsu/UPTechnicalSupportUnitController.java @@ -66,13 +66,13 @@ public String getActionMaster() { } @Operation(summary = "Fetch 104 work list data") - @GetMapping("/getWorklistByVanID/{vanId}") - public String getWolklist104Data(@PathVariable Integer vanId) { + @GetMapping({"/getWorklistByFacilityID/{facilityID}", "/getWorklistByVanID/{facilityID}"}) + public String getWolklist104Data(@PathVariable Integer facilityID) { OutputResponse response = new OutputResponse(); String resp = null; - logger.info("Entered into getWorklist method with vanId : " + vanId); + logger.info("Entered into getWorklist method with facilityID : " + facilityID); try { - resp = uptsuService.getWorklist(vanId); + resp = uptsuService.getWorklistByFacilityID(facilityID); if (null != resp) { response.setResponse(resp.toString()); } diff --git a/src/main/java/com/iemr/hwc/service/uptsu/UptsuService.java b/src/main/java/com/iemr/hwc/service/uptsu/UptsuService.java index f0609c80..c3433f23 100644 --- a/src/main/java/com/iemr/hwc/service/uptsu/UptsuService.java +++ b/src/main/java/com/iemr/hwc/service/uptsu/UptsuService.java @@ -32,6 +32,8 @@ public interface UptsuService { String getWorklist(Integer vanId); + String getWorklistByFacilityID(Integer facilityID); + Referred104Details saveReferredDetails(Referred104Details requestObj); } diff --git a/src/main/java/com/iemr/hwc/service/uptsu/UptsuServiceImpl.java b/src/main/java/com/iemr/hwc/service/uptsu/UptsuServiceImpl.java index 1830535b..3a672bfb 100644 --- a/src/main/java/com/iemr/hwc/service/uptsu/UptsuServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/uptsu/UptsuServiceImpl.java @@ -61,9 +61,14 @@ public String getActionMaster() { @Override public String getWorklist(Integer vanID) { + Integer facilityID = uptsuRepository.getFacilityId(vanID); + return getWorklistByFacilityID(facilityID); + } + + @Override + public String getWorklistByFacilityID(Integer facilityID) { List listOfData = new ArrayList(); - Integer facilityID = uptsuRepository.getFacilityId(vanID); String facilityCode = uptsuRepository.getfacilityCode(facilityID); DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); From 4c4371e5d646596d7949c6c0aebfb0a9336c7174 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 1 Apr 2026 14:17:43 +0530 Subject: [PATCH 10/18] fix: handle native query Object[] cast in getUserFacilityDetails Co-Authored-By: Claude Opus 4.6 (1M context) --- .../login/IemrMmuLoginServiceImpl.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index e44c0dd9..1ae61287 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -168,15 +168,24 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) ArrayList userVanSpDetails_ViewList = new ArrayList<>(); // First: check m_UserServiceRoleMapping for facilityID (facility-based users) - Object[] facilityDetails = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); - if (facilityDetails != null && facilityDetails.length > 0 && facilityDetails[0] != null) { - UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); - facilityEntry.setUserID(userID); - facilityEntry.setFacilityID((Integer) facilityDetails[0]); - facilityEntry.setProviderServiceMapID(providerServiceMapID); - facilityEntry.setVanNoAndType((String) facilityDetails[1]); // facilityName - facilityEntry.setVanSession((short) 3); - userVanSpDetails_ViewList.add(facilityEntry); + Object[] facilityResult = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); + if (facilityResult != null && facilityResult.length > 0 && facilityResult[0] != null) { + // Native query with LIMIT 1 may return Object[] where first element is the row + Object[] facilityDetails; + if (facilityResult[0] instanceof Object[]) { + facilityDetails = (Object[]) facilityResult[0]; + } else { + facilityDetails = facilityResult; + } + if (facilityDetails != null && facilityDetails.length > 0 && facilityDetails[0] != null) { + UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); + facilityEntry.setUserID(userID); + facilityEntry.setFacilityID((Integer) facilityDetails[0]); + facilityEntry.setProviderServiceMapID(providerServiceMapID); + facilityEntry.setVanNoAndType((String) facilityDetails[1]); // facilityName + facilityEntry.setVanSession((short) 3); + userVanSpDetails_ViewList.add(facilityEntry); + } } // Fallback: if no facilityID in role mapping, try Van view (old users) From 6c4c44069e4946608f2d3dcca987432b9b95ce69 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 1 Apr 2026 14:29:13 +0530 Subject: [PATCH 11/18] fix: handle native query Object[] cast in getLocDetailsByFacilityID Co-Authored-By: Claude Opus 4.6 (1M context) --- .../service/location/LocationServiceImpl.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java index 82082c0c..8d44675c 100644 --- a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java @@ -356,15 +356,23 @@ public String getLocDetailsByFacilityID(Integer facilityID, Integer spPSMID) { // Get location from m_facility directly Map otherLoc = new HashMap<>(); - Object[] facilityLoc = districtMasterRepo.getFacilityLocation(facilityID); - if (facilityLoc != null) { - otherLoc.put("stateID", facilityLoc[0]); - Map distMap = new HashMap<>(); - distMap.put("districtID", facilityLoc[1]); - distMap.put("districtName", facilityLoc[2]); - distMap.put("blockId", facilityLoc[3]); - distMap.put("blockName", facilityLoc[4]); - otherLoc.put("districtList", new Object[]{distMap}); + Object[] facilityResult = districtMasterRepo.getFacilityLocation(facilityID); + if (facilityResult != null && facilityResult.length > 0) { + Object[] facilityLoc; + if (facilityResult[0] instanceof Object[]) { + facilityLoc = (Object[]) facilityResult[0]; + } else { + facilityLoc = facilityResult; + } + if (facilityLoc != null && facilityLoc.length > 0) { + otherLoc.put("stateID", facilityLoc[0]); + Map distMap = new HashMap<>(); + distMap.put("districtID", facilityLoc[1]); + distMap.put("districtName", facilityLoc[2]); + distMap.put("blockId", facilityLoc[3]); + distMap.put("blockName", facilityLoc[4]); + otherLoc.put("districtList", new Object[]{distMap}); + } } // State master From f3d45e0f563563f2794792c579edfcb43b296ab9 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 1 Apr 2026 22:14:07 +0530 Subject: [PATCH 12/18] fix: add villages to demographics from facility_village_mapping --- .../hwc/repo/location/DistrictMasterRepo.java | 6 +++++ .../service/location/LocationServiceImpl.java | 22 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java b/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java index 2ab56a5c..a43b5721 100644 --- a/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java +++ b/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java @@ -44,4 +44,10 @@ public interface DistrictMasterRepo extends CrudRepository { + "WHERE f.FacilityID = :facilityID AND f.Deleted = false", nativeQuery = true) public Object[] getFacilityLocation(@Param("facilityID") Integer facilityID); + @Query(value = "SELECT fvm.DistrictBranchID, dbm.VillageName " + + "FROM facility_village_mapping fvm " + + "JOIN m_DistrictBranchMapping dbm ON fvm.DistrictBranchID = dbm.DistrictBranchID " + + "WHERE fvm.FacilityID = :facilityID AND fvm.Deleted = false", nativeQuery = true) + public ArrayList getFacilityVillages(@Param("facilityID") Integer facilityID); + } diff --git a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java index 8d44675c..73f0802b 100644 --- a/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/location/LocationServiceImpl.java @@ -354,7 +354,7 @@ public String getLocDetailsNew(Integer vanID, Integer spPSMID,JSONObject obj) { public String getLocDetailsByFacilityID(Integer facilityID, Integer spPSMID) { Map resMap = new HashMap(); - // Get location from m_facility directly + // Get location from m_facility directly — matches old getLocDetailsNew response format Map otherLoc = new HashMap<>(); Object[] facilityResult = districtMasterRepo.getFacilityLocation(facilityID); if (facilityResult != null && facilityResult.length > 0) { @@ -366,12 +366,30 @@ public String getLocDetailsByFacilityID(Integer facilityID, Integer spPSMID) { } if (facilityLoc != null && facilityLoc.length > 0) { otherLoc.put("stateID", facilityLoc[0]); + otherLoc.put("parkingPlaceID", null); + Map distMap = new HashMap<>(); distMap.put("districtID", facilityLoc[1]); distMap.put("districtName", facilityLoc[2]); distMap.put("blockId", facilityLoc[3]); distMap.put("blockName", facilityLoc[4]); - otherLoc.put("districtList", new Object[]{distMap}); + + // Villages from facility_village_mapping + ArrayList> villageList = new ArrayList<>(); + ArrayList villages = districtMasterRepo.getFacilityVillages(facilityID); + if (villages != null) { + for (Object[] village : villages) { + Map villageMap = new HashMap<>(); + villageMap.put("districtBranchID", String.valueOf(village[0])); + villageMap.put("villageName", village[1]); + villageList.add(villageMap); + } + } + distMap.put("villageList", villageList); + + ArrayList> distList = new ArrayList<>(); + distList.add(distMap); + otherLoc.put("districtList", distList); } } From ef534465210115bd2edeaa561b17395307820644 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Mon, 6 Apr 2026 17:33:31 +0530 Subject: [PATCH 13/18] get facilty id --- .../iemr/hwc/controller/location/LocationController.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/location/LocationController.java b/src/main/java/com/iemr/hwc/controller/location/LocationController.java index 96f0a59f..8b566cb5 100644 --- a/src/main/java/com/iemr/hwc/controller/location/LocationController.java +++ b/src/main/java/com/iemr/hwc/controller/location/LocationController.java @@ -184,11 +184,7 @@ public String getLocDetailsBasedOnSpIDAndPsmIDNew(@RequestBody String comingRequ OutputResponse response = new OutputResponse(); try { JSONObject obj = new JSONObject(comingRequest); - if (obj != null && obj.has("vanID") && obj.get("vanID") != null - && !obj.isNull("vanID") && obj.has("spPSMID") && obj.get("spPSMID") != null) { - String s = locationServiceImpl.getLocDetailsNew(obj.getInt("vanID"), obj.getInt("spPSMID"), obj); - response.setResponse(s); - } else if (obj != null && obj.has("facilityID") && obj.get("facilityID") != null + if (obj != null && obj.has("facilityID") && obj.get("facilityID") != null && !obj.isNull("facilityID") && obj.has("spPSMID") && obj.get("spPSMID") != null) { String s = locationServiceImpl.getLocDetailsByFacilityID(obj.getInt("facilityID"), obj.getInt("spPSMID")); response.setResponse(s); From 3bad0c885bb28c93b8a0cf2941bd4fdb0a488c20 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Tue, 26 May 2026 15:17:19 +0530 Subject: [PATCH 14/18] fix: fallback facilityID from servicePointID in BenFlow record creation When UI sends servicePointID=293 but facilityID is missing from payload, derive facilityID from servicePointID so worklist query finds the record. Co-Authored-By: Claude Sonnet 4.6 --- .../service/benFlowStatus/CommonBenStatusFlowServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java b/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java index 9df256d2..6b080f04 100644 --- a/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/benFlowStatus/CommonBenStatusFlowServiceImpl.java @@ -167,6 +167,10 @@ private BeneficiaryFlowStatus getBenFlowRecordObj(String requestOBJ, Long benefi if (obj.getI_bendemographics().getServicePointName() != null) obj.setServicePointName(obj.getI_bendemographics().getServicePointName()); + // facilityID fallback: if UI didn't send facilityID, use servicePointID + if (obj.getFacilityID() == null && obj.getServicePointID() != null) + obj.setFacilityID(obj.getServicePointID()); + if (beneficiaryRegID != null && obj.getBeneficiaryRegID() == null) obj.setBeneficiaryRegID(beneficiaryRegID); From 7543779fcc47f6785d3b42d0fb8faf4d8ad5b499 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Wed, 27 May 2026 15:16:57 +0530 Subject: [PATCH 15/18] fix: add facilityID dual support in CHOAppSyncServiceImpl for HWC users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit facilityID present → use facilityID; else fall back to vanID (MMU/TM unchanged) Co-Authored-By: Claude Sonnet 4.6 --- .../service/choApp/CHOAppSyncServiceImpl.java | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/iemr/hwc/service/choApp/CHOAppSyncServiceImpl.java b/src/main/java/com/iemr/hwc/service/choApp/CHOAppSyncServiceImpl.java index 768fb6eb..d843e419 100644 --- a/src/main/java/com/iemr/hwc/service/choApp/CHOAppSyncServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/choApp/CHOAppSyncServiceImpl.java @@ -285,31 +285,19 @@ public ResponseEntity registerCHOAPPBeneficiary(String comingRequest, St && !requestObj.get("emergencyRegistration").isJsonNull() && requestObj.get("emergencyRegistration").getAsBoolean()); - beneficiaryDetailsRmnch.addProperty("parkingPlaceID", - requestObj.has("parkingPlaceID") - && !requestObj.get("parkingPlaceID").isJsonNull() - ? requestObj.get("parkingPlaceID").getAsInt() - : 0); - - beneficiaryDetailsRmnch.addProperty("vanID", - requestObj.has("vanID") - && !requestObj.get("vanID").isJsonNull() - ? requestObj.get("vanID").getAsInt() - : 0); - - JsonElement providerServiceMapElement = - requestObj.has("providerServiceMapID") - ? requestObj.get("providerServiceMapID") - : requestObj.get("providerServiceMapId"); - - beneficiaryDetailsRmnch.addProperty("providerServiceMapID", - (providerServiceMapElement != null - && !providerServiceMapElement.isJsonNull()) - ? providerServiceMapElement.getAsString() - : null); - if (requestObj.has("i_bendemographics")) { - beneficiaryDetailsRmnch.add("i_bendemographics", requestObj.getAsJsonObject("i_bendemographics")); - } + beneficiaryDetailsRmnch.addProperty("parkingPlaceID", requestObj.get("parkingPlaceID").getAsInt()); + beneficiaryDetailsRmnch.addProperty("facilityID", + requestObj.has("facilityID") && !requestObj.get("facilityID").isJsonNull() + ? requestObj.get("facilityID").getAsInt() : null); + beneficiaryDetailsRmnch.addProperty("vanID", + requestObj.has("facilityID") && !requestObj.get("facilityID").isJsonNull() + ? requestObj.get("facilityID").getAsInt() + : requestObj.get("vanID").getAsInt()); + beneficiaryDetailsRmnch.addProperty("providerServiceMapID", requestObj.get("providerServiceMapID").getAsInt()); + + if (requestObj.has("i_bendemographics")) { + beneficiaryDetailsRmnch.add("i_bendemographics", requestObj.getAsJsonObject("i_bendemographics")); + } if (requestObj.has("benPhoneMaps")) { beneficiaryDetailsRmnch.add("benPhoneMaps", requestObj.getAsJsonArray("benPhoneMaps")); @@ -508,6 +496,19 @@ public ResponseEntity choAppUpdateBeneficiary(String comingRequest, Stri requestObj.get("reproductiveStatus").getAsString() ); } + beneficiaryDetailsRmnch.addProperty("dOB", requestObj.get("dOB").getAsString()); + + beneficiaryDetailsRmnch.addProperty("beneficiaryConsent", requestObj.get("beneficiaryConsent").getAsBoolean()); + beneficiaryDetailsRmnch.addProperty("emergencyRegistration", requestObj.get("emergencyRegistration").getAsBoolean()); + + beneficiaryDetailsRmnch.addProperty("parkingPlaceID", requestObj.get("parkingPlaceID").getAsInt()); + beneficiaryDetailsRmnch.addProperty("facilityID", + requestObj.has("facilityID") && !requestObj.get("facilityID").isJsonNull() + ? requestObj.get("facilityID").getAsInt() : null); + beneficiaryDetailsRmnch.addProperty("vanID", + requestObj.has("facilityID") && !requestObj.get("facilityID").isJsonNull() + ? requestObj.get("facilityID").getAsInt() + : requestObj.get("vanID").getAsInt()); JsonElement psmID = requestObj.has("providerServiceMapID") ? requestObj.get("providerServiceMapID") From fe7110b603229aeab8d47a96ecce27185eff87cd Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 28 May 2026 10:30:49 +0530 Subject: [PATCH 16/18] fix: migrate HWC from vanID to facilityID for login, visit save, and worklist routing - IemrMmuLoginServiceImpl: route HWC users through facilityID login path; throw clear error if no facility mapped - FacilityLoginRepo: add queries to fetch facilityID from m_UserServiceRoleMapping - VanSpokeController: pass actual exception message to UI for facility mapping errors - BeneficiaryVisitDetail: add @Transient facilityID field so nurse services can propagate it to generateVisitCode - CommonNurseServiceImpl: generateVisitCode uses facilityID over vanID; capture facilityID before save - All 10 nurse services + QuickConsultation: set facilityID on benVisitDetailsOBJ before save so generateVisitCode does not throw on null vanID Co-Authored-By: Claude Sonnet 4.6 --- .../hwc/controller/spoke/VanSpokeController.java | 2 +- .../iemr/hwc/data/nurse/BeneficiaryVisitDetail.java | 5 ++++- .../com/iemr/hwc/repo/login/FacilityLoginRepo.java | 11 +++++++++-- .../AdolescentAndChildCareServiceImpl.java | 1 + .../com/iemr/hwc/service/anc/ANCServiceImpl.java | 1 + .../hwc/service/cancerScreening/CSServiceImpl.java | 1 + .../common/transaction/CommonNurseServiceImpl.java | 7 ++++--- .../iemr/hwc/service/covid19/Covid19ServiceImpl.java | 1 + .../family_planning/FamilyPlanningServiceImpl.java | 2 +- .../service/generalOPD/GeneralOPDServiceImpl.java | 1 + .../hwc/service/login/IemrMmuLoginServiceImpl.java | 12 +++++++++++- .../iemr/hwc/service/ncdCare/NCDCareServiceImpl.java | 1 + .../ncdscreening/NCDScreeningServiceImpl.java | 1 + .../hwc/service/neonatal/NeonatalServiceImpl.java | 1 + .../com/iemr/hwc/service/pnc/PNCServiceImpl.java | 1 + .../QuickConsultationServiceImpl.java | 3 +++ 16 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java index 97908b82..c9b7e73e 100644 --- a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java +++ b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java @@ -108,7 +108,7 @@ public String getUserFacilityDetails(@RequestBody String comingRequest) { response.setError(5000, "Invalid request"); } } catch (Exception e) { - response.setError(5000, "Error while getting van and service points data"); + response.setError(5000, e.getMessage() != null ? e.getMessage() : "Error while getting van and service points data"); logger.error("getUserVanSpDetails failed with " + e.getMessage(), e); } diff --git a/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java b/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java index dd80742f..4d93a445 100644 --- a/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java +++ b/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java @@ -262,7 +262,10 @@ public class BeneficiaryVisitDetail { @Transient private String informationGiven; - + + @Transient + private Integer facilityID; + public BeneficiaryVisitDetail() { super(); diff --git a/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java index 5acd993b..24d84a86 100644 --- a/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java +++ b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java @@ -21,8 +21,6 @@ */ package com.iemr.hwc.repo.login; -import java.util.List; - import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; @@ -47,4 +45,13 @@ public interface FacilityLoginRepo extends CrudRepository { + "AND f.Deleted = false LIMIT 1", nativeQuery = true) Object[] getUserFacilityDetails(@Param("userID") Integer userID, @Param("providerServiceMapID") Integer providerServiceMapID); + + // Detects HWC users who exist in role mapping but have no facilityID set yet + // (admin hasn't mapped them). Used to throw a clear error instead of silently + // falling back to vanID (which would cause empty worklists). + @Query(value = "SELECT COUNT(*) FROM m_UserServiceRoleMapping usrm " + + "WHERE usrm.UserID = :userID AND usrm.ProviderServiceMapID = :providerServiceMapID " + + "AND usrm.Deleted = false AND usrm.FacilityID IS NULL", nativeQuery = true) + Integer countUnmappedFacilityUser(@Param("userID") Integer userID, + @Param("providerServiceMapID") Integer providerServiceMapID); } diff --git a/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java b/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java index c97c2ff6..52218296 100644 --- a/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java @@ -272,6 +272,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common // Save Beneficiary visit details BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); benVisitID = commonNurseServiceImpl.saveBeneficiaryVisitDetails(benVisitDetailsOBJ); // generate visit code diff --git a/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java b/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java index 38175002..8ceec4e4 100644 --- a/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/anc/ANCServiceImpl.java @@ -564,6 +564,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // benVisitDetailsOBJ.setVanID(commonUtilityClass.getVanID()); // benVisitDetailsOBJ.setParkingPlaceID(commonUtilityClass.getParkingPlaceID()); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java b/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java index 173db082..fb1381ad 100644 --- a/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/cancerScreening/CSServiceImpl.java @@ -370,6 +370,7 @@ private Long getBenRegID(JsonObject requestOBJ) throws Exception { public Map saveBenVisitDetails(BeneficiaryVisitDetail benVisitDetailsOBJ, CommonUtilityClass nurseUtilityClass) throws Exception { Map visitIdAndCodeMap = new HashMap<>(); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java index b9bf0850..147b27a1 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java @@ -535,7 +535,7 @@ public Long saveBeneficiaryVisitDetails(BeneficiaryVisitDetail beneficiaryVisitD Long benVisitId = response.getBenVisitID(); Integer vanId = response.getVanID(); Integer sessionIdObj = sessionId; - Long visitCode = generateVisitCode(benVisitId, vanId, sessionIdObj); + Long visitCode = generateVisitCode(benVisitId, vanId, sessionIdObj, facilityIdObj); CDSS cdss = new CDSS(); cdss.setVisitCode(visitCode); cdss.setBenVisitID(benVisitId); @@ -621,8 +621,9 @@ public Long generateVisitCode(Long visitID, Integer vanID, Integer sessionID) { public Long generateVisitCode(Long visitID, Integer vanID, Integer sessionID, Integer facilityID) { String visitCode = ""; - // Use facilityID if vanID is null (new facility-based users) - Integer locationID = (vanID != null) ? vanID : facilityID; + // facilityID takes priority: HWC users always have facilityID set. + // vanID is used only for MMU/TM users where facilityID is null. + Integer locationID = (facilityID != null) ? facilityID : vanID; if (locationID == null) { throw new RuntimeException("Both vanID and facilityID are null. Cannot generate visit code."); } diff --git a/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java b/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java index fb7d594d..5fadf67b 100644 --- a/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/covid19/Covid19ServiceImpl.java @@ -245,6 +245,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java b/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java index 0109f37f..d6a60e2e 100644 --- a/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/family_planning/FamilyPlanningServiceImpl.java @@ -331,7 +331,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); - + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); benVisitID = commonNurseServiceImpl.saveBeneficiaryVisitDetails(benVisitDetailsOBJ); // 07-06-2018 visit code diff --git a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java index db8a1ee1..d4e0fdc5 100644 --- a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java @@ -280,6 +280,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU // Save Beneficiary visit details BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index 1ae61287..66fa18fe 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -188,7 +188,7 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) } } - // Fallback: if no facilityID in role mapping, try Van view (old users) + // Fallback: if no facilityID in role mapping, try Van view (MMU/TM users) if (userVanSpDetails_ViewList.isEmpty()) { ArrayList objList = userVanSpDetails_View_Repo.getUserVanSpDetails_View(userID, providerServiceMapID); if (objList != null && objList.size() > 0) { @@ -199,6 +199,16 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) userVanSpDetails_ViewList.add(userVanSpDetails_ViewOBJ); } } + // No van mapping either — check if this user has a role mapping with null facilityID + // That means they are a facility-based (HWC) user not yet mapped by admin. + // Failing here is correct — letting them in would give a broken empty worklist. + if (userVanSpDetails_ViewList.isEmpty()) { + Integer unmapped = facilityLoginRepo.countUnmappedFacilityUser(userID, providerServiceMapID); + if (unmapped != null && unmapped > 0) { + throw new RuntimeException( + "No facility mapped for this user. Please contact admin to complete the facility mapping."); + } + } } resMap.put("UserVanSpDetails", userVanSpDetails_ViewList); diff --git a/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java b/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java index 3b97e0ce..f908bd12 100644 --- a/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/ncdCare/NCDCareServiceImpl.java @@ -308,6 +308,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java b/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java index c9342349..8077677a 100644 --- a/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImpl.java @@ -513,6 +513,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java b/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java index 4bd6c4df..bd7ea2d6 100644 --- a/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/neonatal/NeonatalServiceImpl.java @@ -452,6 +452,7 @@ private Map saveBenVisitDetails(JsonObject visitDetailsOBJ, Common // Save Beneficiary visit details BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); benVisitID = commonNurseServiceImpl.saveBeneficiaryVisitDetails(benVisitDetailsOBJ); // generate visit code diff --git a/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java b/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java index 384805b9..0c2f43ab 100644 --- a/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/pnc/PNCServiceImpl.java @@ -502,6 +502,7 @@ public Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonU BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(visitDetailsOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { diff --git a/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java b/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java index 8e406cb9..926e6bcc 100644 --- a/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/quickConsultation/QuickConsultationServiceImpl.java @@ -209,6 +209,9 @@ public String quickConsultNurseDataInsert(JsonObject jsnOBJ, String Authorizatio BeneficiaryVisitDetail benVisitDetailsOBJ = InputMapper.gson().fromJson(jsnOBJ.get("visitDetails"), BeneficiaryVisitDetail.class); + // facilityID lives at the top level of the request, not inside visitDetails. + // Propagate it so the internal visit-code generation can use it. + benVisitDetailsOBJ.setFacilityID(nurseUtilityClass.getFacilityID()); int i = commonNurseServiceImpl.getMaxCurrentdate(benVisitDetailsOBJ.getBeneficiaryRegID(), benVisitDetailsOBJ.getVisitReason(), benVisitDetailsOBJ.getVisitCategory()); if (i < 1) { From c3ae555506cb7e5c5cabbcccca4ce4598a25d6a9 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Thu, 28 May 2026 10:49:30 +0530 Subject: [PATCH 17/18] fix: getUserFacilityDetails must not fall back to vanID for HWC users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add getUserFacilityOnlyDetails service method: checks facilityID only, throws error immediately if not mapped — no van fallback - VanSpokeController: getUserFacilityDetails calls new method - Old getUserVanSpDetails (with van fallback) retained for MMU/TM path only - If old user has both vanID and facilityID mapped, facilityID is used Co-Authored-By: Claude Sonnet 4.6 --- .../controller/spoke/VanSpokeController.java | 2 +- .../service/login/IemrMmuLoginService.java | 4 +- .../login/IemrMmuLoginServiceImpl.java | 38 ++++++++++++++++++- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java index c9b7e73e..c33b9982 100644 --- a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java +++ b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java @@ -101,7 +101,7 @@ public String getUserFacilityDetails(@RequestBody String comingRequest) { JSONObject obj = new JSONObject(comingRequest); logger.info("getServicepointVillages request " + comingRequest); if (obj.has("userID") && obj.has("providerServiceMapID")) { - String responseData = iemrMmuLoginServiceImpl.getUserVanSpDetails(obj.getInt("userID"), + String responseData = iemrMmuLoginServiceImpl.getUserFacilityOnlyDetails(obj.getInt("userID"), obj.getInt("providerServiceMapID")); response.setResponse(responseData); } else { diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginService.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginService.java index e017c53c..33117230 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginService.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginService.java @@ -28,7 +28,9 @@ public interface IemrMmuLoginService { public String getServicepointVillages(Integer servicePointID); public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID); - + + public String getUserFacilityOnlyDetails(Integer userID, Integer providerServiceMapID); + public String getUserSpokeDetails(Integer psmId); } diff --git a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java index 66fa18fe..58b56755 100644 --- a/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImpl.java @@ -230,9 +230,43 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) return new Gson().toJson(resMap); } - + + @Override + public String getUserFacilityOnlyDetails(Integer userID, Integer providerServiceMapID) { + Map resMap = new HashMap<>(); + ArrayList userVanSpDetails_ViewList = new ArrayList<>(); + + Object[] facilityResult = facilityLoginRepo.getUserFacilityDetails(userID, providerServiceMapID); + if (facilityResult != null && facilityResult.length > 0 && facilityResult[0] != null) { + Object[] facilityDetails; + if (facilityResult[0] instanceof Object[]) { + facilityDetails = (Object[]) facilityResult[0]; + } else { + facilityDetails = facilityResult; + } + if (facilityDetails != null && facilityDetails.length > 0 && facilityDetails[0] != null) { + UserVanSpDetails_View facilityEntry = new UserVanSpDetails_View(); + facilityEntry.setUserID(userID); + facilityEntry.setFacilityID((Integer) facilityDetails[0]); + facilityEntry.setProviderServiceMapID(providerServiceMapID); + facilityEntry.setVanNoAndType((String) facilityDetails[1]); + facilityEntry.setVanSession((short) 3); + userVanSpDetails_ViewList.add(facilityEntry); + } + } + + // No facilityID mapped — no fallback to van. HWC users must have facilityID. + if (userVanSpDetails_ViewList.isEmpty()) { + throw new RuntimeException( + "No facility mapped for this user. Please contact admin to complete the facility mapping."); + } + + resMap.put("UserVanSpDetails", userVanSpDetails_ViewList); + return new Gson().toJson(resMap); + } + /* created by = DU20091017 */ - + @Override public String getUserSpokeDetails (Integer psmId) { MasterVan mVan; From 33376e1e9748d73c93aaf769890c967ae8afa992 Mon Sep 17 00:00:00 2001 From: vanitha1822 Date: Thu, 23 Jul 2026 13:37:51 +0530 Subject: [PATCH 18/18] fix: restore faciltiy id --- .../hwc/service/common/transaction/CommonNurseServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java index 147b27a1..16abe23b 100644 --- a/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/common/transaction/CommonNurseServiceImpl.java @@ -535,6 +535,7 @@ public Long saveBeneficiaryVisitDetails(BeneficiaryVisitDetail beneficiaryVisitD Long benVisitId = response.getBenVisitID(); Integer vanId = response.getVanID(); Integer sessionIdObj = sessionId; + Integer facilityIdObj = beneficiaryVisitDetail.getFacilityID(); Long visitCode = generateVisitCode(benVisitId, vanId, sessionIdObj, facilityIdObj); CDSS cdss = new CDSS(); cdss.setVisitCode(visitCode);