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 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 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/controller/location/LocationController.java b/src/main/java/com/iemr/hwc/controller/location/LocationController.java index 891c086e..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,10 +184,9 @@ 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) { - String s = locationServiceImpl.getLocDetailsNew(obj.getInt("vanID"), obj.getInt("spPSMID"), obj); - + 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/controller/spoke/VanSpokeController.java b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java index 061798e0..c33b9982 100644 --- a/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java +++ b/src/main/java/com/iemr/hwc/controller/spoke/VanSpokeController.java @@ -92,23 +92,23 @@ 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 { 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 { 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/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/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/data/nurse/BeneficiaryVisitDetail.java b/src/main/java/com/iemr/hwc/data/nurse/BeneficiaryVisitDetail.java index b9335c61..4d93a445 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; @@ -246,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/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/repo/location/DistrictMasterRepo.java b/src/main/java/com/iemr/hwc/repo/location/DistrictMasterRepo.java index e382764f..a43b5721 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,17 @@ 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); + + @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/repo/login/FacilityLoginRepo.java b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java new file mode 100644 index 00000000..24d84a86 --- /dev/null +++ b/src/main/java/com/iemr/hwc/repo/login/FacilityLoginRepo.java @@ -0,0 +1,57 @@ +/* +* 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 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); + + // 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/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/adolescent/AdolescentAndChildCareServiceImpl.java b/src/main/java/com/iemr/hwc/service/adolescent/AdolescentAndChildCareServiceImpl.java index adfee312..52218296 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(), @@ -272,11 +272,12 @@ 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 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 +588,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 +607,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..8ceec4e4 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; } @@ -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) { @@ -571,7 +572,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..6b080f04 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(); @@ -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); 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..fb1381ad 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; } @@ -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) { @@ -377,7 +378,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/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") 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..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 @@ -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; @@ -386,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) @@ -403,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) @@ -416,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); } @@ -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..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 @@ -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,13 +525,18 @@ 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) { Long benVisitId = response.getBenVisitID(); Integer vanId = response.getVanID(); Integer sessionIdObj = sessionId; - Long visitCode = generateVisitCode(benVisitId, vanId, sessionIdObj); + Integer facilityIdObj = beneficiaryVisitDetail.getFacilityID(); + Long visitCode = generateVisitCode(benVisitId, vanId, sessionIdObj, facilityIdObj); CDSS cdss = new CDSS(); cdss.setVisitCode(visitCode); cdss.setBenVisitID(benVisitId); @@ -592,16 +616,26 @@ 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); + // 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."); + } + + 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++) { @@ -613,7 +647,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) @@ -3391,7 +3425,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; @@ -3554,7 +3588,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); @@ -3564,7 +3598,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()); @@ -3575,7 +3609,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); @@ -3584,21 +3618,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); @@ -3607,13 +3641,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); @@ -3622,13 +3656,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) @@ -3638,13 +3672,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) @@ -3654,7 +3688,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..5fadf67b 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; @@ -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) { @@ -252,7 +253,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 +627,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 +650,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..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 @@ -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; } @@ -331,12 +331,12 @@ 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 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..d4e0fdc5 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; } @@ -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) { @@ -287,7 +288,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/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(), 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..73f0802b 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,65 @@ 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 — matches old getLocDetailsNew response format + Map otherLoc = new HashMap<>(); + 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]); + 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]); + + // 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); + } + } + + // 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/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 ab5eafc2..58b56755 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) { @@ -158,23 +165,58 @@ 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[] 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 (MMU/TM users) + if (userVanSpDetails_ViewList.isEmpty()) { + 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); + } + } + // 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); - // 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 - 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]); @@ -185,12 +227,46 @@ public String getUserVanSpDetails(Integer userID, Integer providerServiceMapID) parkingPlaceLocationMap.put("blockName", obj1[6]); } resMap.put("UserLocDetails", parkingPlaceLocationMap); - // 1.1 + 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; 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..f908bd12 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; } @@ -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) { @@ -315,7 +316,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..8077677a 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; @@ -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) { @@ -520,7 +521,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 +624,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 +639,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..bd7ea2d6 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; } @@ -452,11 +452,12 @@ 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 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..0c2f43ab 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; } @@ -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) { @@ -509,7 +510,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..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) { @@ -217,7 +220,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 +275,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 +342,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 +361,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; } 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();