Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -351,18 +351,14 @@ public String searchUserByPhone(

@Operation(summary = "Provide the list of beneficiaries using Elasticsearch")
@RequestMapping(value = "/searchUser", method = RequestMethod.POST, headers = "Authorization")
public String searchUser(
@RequestBody String request,
@RequestHeader(value = "Authorization", required = false) String auth, HttpServletRequest httpRequest) {

public String searchUser(@RequestBody String request, HttpServletRequest httpRequest) {
OutputResponse response = new OutputResponse();

try {
logger.info("Universal search request received");

JsonParser parser = new JsonParser();
JsonObject requestObj = parser.parse(request).getAsJsonObject();

String searchQuery = null;
if (requestObj.has("search") && !requestObj.get("search").isJsonNull()) {
searchQuery = requestObj.get("search").getAsString();
Expand All @@ -372,18 +368,20 @@ public String searchUser(
response.setError(400, "Search query is required");
return response.toString();
}

String jwtToken = CookieUtil.getJwtTokenFromCookie(httpRequest);
String userId = jwtUtil.getUserIdFromToken(jwtToken);

String jwtToken = httpRequest.getHeader("Jwttoken");
String auth=httpRequest.getHeader("Authorization");
String cookieToken = CookieUtil.getJwtTokenFromCookie(httpRequest);

String userId = jwtToken !="" ? jwtUtil.getUserIdFromToken(jwtToken) : jwtUtil.getUserIdFromToken(cookieToken);
int userID=Integer.parseInt(userId);

Boolean is1097 = false;
if (requestObj.has("is1097") && !requestObj.get("is1097").isJsonNull()) {
is1097 = requestObj.get("is1097").getAsBoolean();
}

logger.info("Searching with query: {}, userId: {}, is1097: {}", searchQuery, userID, is1097);

String result = iemrSearchUserService.searchUser(searchQuery, userID, auth, is1097);

if (result == null || result.trim().isEmpty()) {
Expand Down Expand Up @@ -422,6 +420,45 @@ public String searchBeneficiary(
return output.toString();
}

/**
* NEW Elasticsearch-based advanced search endpoint
*/
@Operation(summary = "Advanced search beneficiaries using Elasticsearch")
@RequestMapping(value = "/searchBeneficiaryES", method = RequestMethod.POST, headers = "Authorization")
public String searchBeneficiaryES(
@RequestBody BeneficiaryModel request,
HttpServletRequest httpRequest) {

logger.info("searchBeneficiaryES request: {}", request);
OutputResponse output = new OutputResponse();

try {

// Get userId from JWT token

String jwtToken = httpRequest.getHeader("Jwttoken");
String auth=httpRequest.getHeader("Authorization");
String cookieToken = CookieUtil.getJwtTokenFromCookie(httpRequest);
String userId = jwtToken !="" ? jwtUtil.getUserIdFromToken(jwtToken) : jwtUtil.getUserIdFromToken(cookieToken);
int userID = Integer.parseInt(userId);

logger.info("ES Advanced search for userId: {}", userID);

String result = iemrSearchUserService.findBeneficiaryES(request, userID, auth);

return result;

} catch (NumberFormatException ne) {
logger.error("searchBeneficiaryES failed with number format error: {}", ne.getMessage(), ne);
output.setError(400, "Invalid number format in search criteria");
return output.toString();
} catch (Exception e) {
logger.error("searchBeneficiaryES failed with error: {}", e.getMessage(), e);
output.setError(500, "Error searching beneficiaries: " + e.getMessage());
return output.toString();
}
}

@Operation(summary = "Provide all common data list needed for beneficiary registration")
@RequestMapping(value = "/getRegistrationData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON, headers = "Authorization")
public String getRegistrationData() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ String findByBeneficiaryPhoneNo(BenPhoneMap benPhoneMap, Integer pageNo, Integer

String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097) throws Exception;

String findBeneficiaryES(BeneficiaryModel i_beneficiary, Integer userId, String auth) throws Exception;

List<BeneficiaryModel> userExitsCheckWithId(String beneficiaryID, String auth, Boolean is1097) throws Exception;

public List<BeneficiaryModel> userExitsCheckWithHealthId_ABHAId(String healthID, String auth, Boolean is1097)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ private void addCreatedDateToOtherFields(BeneficiaryModel beneficiaryModel) {
JsonNode otherFieldsNode = objectMapper.readTree(beneficiaryModel.getOtherFields());

// Convert createdDate to a string
String createdDateString = beneficiaryModel.getCreatedDate().toString();
String createdDateString = beneficiaryModel.getCreatedDate().toString();

// Add createdDate to the JSON node
((ObjectNode) otherFieldsNode).put("createdDate", createdDateString);
Expand All @@ -220,10 +220,10 @@ public List<BeneficiaryModel> userExitsCheckWithHealthId_ABHAId(String healthID,
List<BeneficiaryModel> beneficiaryList = new ArrayList<BeneficiaryModel>();
// search patient by ben id, call Identity API
List<BeneficiariesDTO> listBen = null;
if(healthID.contains("@")) {
if (healthID.contains("@")) {
listBen = identityBeneficiaryService.getBeneficiaryListByHealthID_ABHAAddress(healthID,
auth, is1097);
}else {
} else {
String healthIdNumber = getHealthId(healthID);
listBen = identityBeneficiaryService.getBeneficiaryListByHealthIDNo_ABHAIDNo(healthIdNumber, auth, is1097);
}
Expand All @@ -233,6 +233,7 @@ public List<BeneficiaryModel> userExitsCheckWithHealthId_ABHAId(String healthID,
}
return beneficiaryList;
}

private String getHealthId(String healthID) {
String healthIdNumber = null;
if (null != healthID) {
Expand All @@ -250,6 +251,7 @@ private String getHealthId(String healthID) {
}
return healthIdNumber;
}

// search patient by healthidNo / ABHA Id No
@Override
public List<BeneficiaryModel> userExitsCheckWithHealthIdNo_ABHAIdNo(String healthIDNo, String auth, Boolean is1097)
Expand Down Expand Up @@ -324,32 +326,88 @@ private void setBeneficiaryGender(List<BeneficiaryModel> iBeneficiary) {
}

/**
Universal search using Elasticsearch
*/
* Universal search using Elasticsearch
*/
@Override
public String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097) throws Exception {

try {
if (searchQuery == null || searchQuery.trim().isEmpty()) {
throw new IEMRException("Search query is required");
}
try {
if (searchQuery == null || searchQuery.trim().isEmpty()) {
throw new IEMRException("Search query is required");
}

logger.info("Universal search with query: {}, userId: {}", searchQuery, userId);

logger.info("Universal search with query: {}, userId: {}", searchQuery, userId);
Map<String, Object> response = identityBeneficiaryService.searchBeneficiariesUsingES(
searchQuery, userId, auth, is1097);

Map<String, Object> response =
identityBeneficiaryService.searchBeneficiariesUsingES(
searchQuery, userId, auth, is1097
);
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(response);

ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(response);
} catch (Exception e) {
logger.error("Error in universal search", e);
throw new Exception("Error searching beneficiaries: " + e.getMessage(), e);
}
}

} catch (Exception e) {
logger.error("Error in universal search", e);
throw new Exception("Error searching beneficiaries: " + e.getMessage(), e);
}
}
/**
* Advanced search using Elasticsearch with multiple criteria
*/

@Override
public String findBeneficiaryES(
BeneficiaryModel i_beneficiary,
Integer userId,
String auth) throws Exception {

try {
IdentitySearchDTO identitySearchDTO = identityBenEditMapper.getidentitysearchModel(i_beneficiary);

if (i_beneficiary.getDOB() != null) {
identitySearchDTO.setDob(i_beneficiary.getDOB());
}

if (i_beneficiary.getHouseHoldID() != null) {
identitySearchDTO.setHouseHoldID(i_beneficiary.getHouseHoldID());
}

if (i_beneficiary.getIsD2D() != null) {
identitySearchDTO.setIsD2D(i_beneficiary.getIsD2D());
}

if (i_beneficiary.getBenPhoneMaps() != null
&& !i_beneficiary.getBenPhoneMaps().isEmpty()) {
identitySearchDTO.setContactNumber(
i_beneficiary.getBenPhoneMaps().get(0).getPhoneNo());
}

if (i_beneficiary.getBeneficiaryID() != null
&& !i_beneficiary.getBeneficiaryID().isEmpty()) {
identitySearchDTO.setBeneficiaryId(
new BigInteger(i_beneficiary.getBeneficiaryID()));
}

i_beneficiary.setIs1097(Boolean.TRUE.equals(i_beneficiary.getIs1097()));

Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd")
.create();

String requestJson = gson.toJson(identitySearchDTO);

Map<String, Object> response = identityBeneficiaryService.searchBeneficiaryListES(
requestJson,
auth,
i_beneficiary.getIs1097());

ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(response);

} catch (Exception e) {
logger.error("Error in ES advance search", e);
throw new Exception("Error searching beneficiaries using ES", e);
}
}

// Advance search
@Override
Expand Down Expand Up @@ -393,7 +451,7 @@ public String findBeneficiary(BeneficiaryModel i_beneficiary, String auth) throw
+ (beneficiaryList != null ? beneficiaryList.size() : "No Beneficiary Found"));
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(beneficiaryList);

}

// get response mapper
Expand All @@ -403,7 +461,7 @@ public List<BeneficiaryModel> getBeneficiaryListFromMapper(List<BeneficiariesDTO
benDetailForOutboundDTOList.forEach(beneficiaryModel -> {

BeneficiaryModel beneficiary = benCompleteMapper.benDetailForOutboundDTOToIBeneficiary(beneficiaryModel);
if(null != beneficiaryModel && null != beneficiaryModel.getBeneficiaryDetails()) {
if (null != beneficiaryModel && null != beneficiaryModel.getBeneficiaryDetails()) {
beneficiary.setCommunityName(beneficiaryModel.getBeneficiaryDetails().getCommunity());
beneficiary.setReligion(beneficiaryModel.getBeneficiaryDetails().getReligion());
beneficiary.setReligionName(beneficiaryModel.getBeneficiaryDetails().getReligion());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ List<BeneficiariesDTO> getBeneficiaryListByBenRegID(Long benRegId, String auth,
List<BeneficiariesDTO> searchBeneficiaryList(String identitySearchDTO, String auth, Boolean is1097)
throws IEMRException;

public Map<String, Object> searchBeneficiaryListES(String identitySearchDTO, String auth, Boolean is1097) throws IEMRException ;

Integer editIdentityEditDTOCommunityorEducation(IdentityEditDTO identityEditDTO, String auth, Boolean is1097)
throws IEMRException;

Expand Down
Loading
Loading