diff --git a/src/main/java/com/iemr/admin/controller/nikshay/NikshayDesignatedPhiController.java b/src/main/java/com/iemr/admin/controller/nikshay/NikshayDesignatedPhiController.java index a6ff8ab..7c3e78c 100644 --- a/src/main/java/com/iemr/admin/controller/nikshay/NikshayDesignatedPhiController.java +++ b/src/main/java/com/iemr/admin/controller/nikshay/NikshayDesignatedPhiController.java @@ -104,4 +104,18 @@ public String getDesignatedPhi(@RequestParam(value = "villageId", required = fal } return response.toStringWithSerialization(); } + + @Operation(summary = "Get all designated PHI mappings; activeOnly=true leaves out inactive rows") + @GetMapping(value = "/getAll", produces = "application/json", headers = "Authorization") + public String getAllDesignatedPhi( + @RequestParam(value = "activeOnly", required = false, defaultValue = "false") Boolean activeOnly) { + OutputResponse response = new OutputResponse(); + try { + response.setResponse(GSON.toJson(nikshayDesignatedPhiService.getAllDesignatedPhi(activeOnly))); + } catch (Exception e) { + logger.error("getAllDesignatedPhi failed: " + e.getMessage(), e); + response.setError(e); + } + return response.toStringWithSerialization(); + } } diff --git a/src/main/java/com/iemr/admin/controller/nikshay/NikshayDeviceController.java b/src/main/java/com/iemr/admin/controller/nikshay/NikshayDeviceController.java index 2a9f9ea..e5e1d3d 100644 --- a/src/main/java/com/iemr/admin/controller/nikshay/NikshayDeviceController.java +++ b/src/main/java/com/iemr/admin/controller/nikshay/NikshayDeviceController.java @@ -54,7 +54,8 @@ public String setDeviceActive(@RequestBody NikshayActivateRequest request) { return respond("setDeviceActive", () -> nikshayDeviceService.setDeviceActive(request)); } - @Operation(summary = "List devices (without password), optionally by device name (NAAT / XRAY) and active flag") + @Operation(summary = "List devices (without password), each with its active villages, " + + "optionally by device name (NAAT / XRAY) and active flag") @GetMapping(value = "/list", produces = "application/json", headers = "Authorization") public String listDevices(@RequestParam(value = "deviceName", required = false) String deviceName, @RequestParam(value = "isActive", required = false) Boolean isActive) { diff --git a/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiService.java b/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiService.java index 453d2df..f8fa31e 100644 --- a/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiService.java +++ b/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiService.java @@ -18,4 +18,6 @@ public interface NikshayDesignatedPhiService { List> getDesignatedPhi(Integer villageId, Integer tbuId, Integer districtId, Boolean activeOnly, Boolean unmappedOnly) throws Exception; + + List> getAllDesignatedPhi(Boolean activeOnly) throws Exception; } diff --git a/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiServiceImpl.java b/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiServiceImpl.java index 81d83f7..c0aad17 100644 --- a/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/nikshay/NikshayDesignatedPhiServiceImpl.java @@ -153,8 +153,8 @@ public List> getDesignatedPhi(Integer villageId, Integer tbu if (villageId == null && tbuId == null && districtId == null) { throw new IllegalArgumentException("Village, TBU or district is required"); } - List> result = new ArrayList<>(); if (Boolean.TRUE.equals(unmappedOnly)) { + List> result = new ArrayList<>(); // row layout: see NikshayTransferOutPhiRepo.findVillagesWithoutDesignatedPhi for (Object[] row : transferOutPhiRepo.findVillagesWithoutDesignatedPhi(villageId, tbuId, districtId)) { Map m = new LinkedHashMap<>(); @@ -168,8 +168,19 @@ public List> getDesignatedPhi(Integer villageId, Integer tbu } return result; } - // row layout: see NikshayTransferOutPhiRepo.search - for (Object[] row : transferOutPhiRepo.search(villageId, tbuId, districtId, !Boolean.FALSE.equals(activeOnly))) { + return toSearchRows(transferOutPhiRepo.search(villageId, tbuId, districtId, !Boolean.FALSE.equals(activeOnly))); + } + + // Every designated PHI mapping, with no village / TBU / district filter + @Override + public List> getAllDesignatedPhi(Boolean activeOnly) throws Exception { + return toSearchRows(transferOutPhiRepo.search(null, null, null, Boolean.TRUE.equals(activeOnly))); + } + + // row layout: see NikshayTransferOutPhiRepo.search + private List> toSearchRows(List rows) { + List> result = new ArrayList<>(); + for (Object[] row : rows) { Map m = new LinkedHashMap<>(); m.put("id", toInt(row[0])); m.put("villageId", toInt(row[1])); diff --git a/src/main/java/com/iemr/admin/service/nikshay/NikshayDeviceServiceImpl.java b/src/main/java/com/iemr/admin/service/nikshay/NikshayDeviceServiceImpl.java index b430034..2ca5d7d 100644 --- a/src/main/java/com/iemr/admin/service/nikshay/NikshayDeviceServiceImpl.java +++ b/src/main/java/com/iemr/admin/service/nikshay/NikshayDeviceServiceImpl.java @@ -145,7 +145,9 @@ public List listDevices(String deviceName, Boolean isActi NikshayDeviceName name = trimToNull(deviceName) == null ? null : NikshayDeviceName.from(deviceName); List result = new ArrayList<>(); for (NikshayDeviceConfiguration device : deviceRepo.search(name, isActive)) { - result.add(toResponse(device)); + NikshayDeviceResponse response = toResponse(device); + response.setVillages(getVillagesOfDevice(device.getId(), true)); + result.add(response); } return result; }