diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..7b016a89
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 11ad9f37..171ab162 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.iemr.common-API
common-api
- 3.6.0
+ 3.6.1
war
Common-API
diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties
index 0184b32f..9f54a35d 100644
--- a/src/main/environment/common_ci.properties
+++ b/src/main/environment/common_ci.properties
@@ -19,6 +19,7 @@ km-base-path=@env.KM_API_BASE_PATH@
km-root-path=/okm:personal/users/
km-guest-user=@env.KM_GUEST_USER@
km-guest-password=@env.KM_GUEST_PASSWORD@
+tempFilePath=@env.TEMP_FILE_PATH@
# CTI Config
cti-server-ip=@env.CTI_SERVER_IP@
diff --git a/src/main/environment/common_docker.properties b/src/main/environment/common_docker.properties
index a81ea62e..59cb580d 100644
--- a/src/main/environment/common_docker.properties
+++ b/src/main/environment/common_docker.properties
@@ -126,7 +126,7 @@ everwellRegisterBenficiary = ${COMMON_API_BASE_URL}/beneficiary/create
## LungAssessment credentials
lungAssessmentEmail = ${SWAASA_EMAIL}
lungAssessmentPassword =${SWAASA_PASSWORD}
-
+tempFilePath=${TEMP_FILE_PATH}
## SWASSA APIs
lungAssessmentAdminLogin = ${SWAASA_BASE_URL}/api/adminLogin
diff --git a/src/main/environment/common_example.properties b/src/main/environment/common_example.properties
index aca73ddb..03f0d915 100644
--- a/src/main/environment/common_example.properties
+++ b/src/main/environment/common_example.properties
@@ -25,6 +25,8 @@ km-root-path=/okm:personal/users/
km-guest-user=guest
km-guest-password=guest
+tempFilePath=/opt/openkm
+
# CTI Config
cti-server-ip=10.208.122.99
cti-logger_base_url=http://10.208.122.99/logger
diff --git a/src/main/java/com/iemr/common/config/CorsConfig.java b/src/main/java/com/iemr/common/config/CorsConfig.java
index bdee1beb..fdd9b494 100644
--- a/src/main/java/com/iemr/common/config/CorsConfig.java
+++ b/src/main/java/com/iemr/common/config/CorsConfig.java
@@ -9,7 +9,7 @@
@Configuration
public class CorsConfig implements WebMvcConfigurer {
- @Value("${cors.allowed-origin}")
+ @Value("${cors.allowed-origins}")
private String allowedOrigins;
@Override
public void addCorsMappings(CorsRegistry registry) {
diff --git a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java
index 8f573d6d..3784f3a9 100644
--- a/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java
+++ b/src/main/java/com/iemr/common/controller/beneficiary/BeneficiaryRegistrationController.java
@@ -36,6 +36,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@@ -70,6 +71,8 @@
import com.iemr.common.service.userbeneficiarydata.MaritalStatusService;
import com.iemr.common.service.userbeneficiarydata.StatusService;
import com.iemr.common.service.userbeneficiarydata.TitleService;
+import com.iemr.common.utils.CookieUtil;
+import com.iemr.common.utils.JwtUtil;
import com.iemr.common.utils.mapper.InputMapper;
import com.iemr.common.utils.mapper.OutputMapper;
import com.iemr.common.utils.response.OutputResponse;
@@ -103,6 +106,8 @@ public class BeneficiaryRegistrationController {
private BeneficiaryOccupationService beneficiaryOccupationService;
private GovtIdentityTypeService govtIdentityTypeService;
+ @Autowired
+ private JwtUtil jwtUtil;
@Autowired
public void setBenRelationshipTypeService(BenRelationshipTypeService benRelationshipTypeService) {
@@ -342,6 +347,54 @@ public String searchUserByPhone(
return response.toString();
}
+ @Operation(summary = "Provide the list of beneficiaries using Elasticsearch")
+ @RequestMapping(value = "/searchUser", method = RequestMethod.POST, headers = "Authorization")
+ 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();
+ }
+
+ if (searchQuery == null || searchQuery.trim().isEmpty()) {
+ response.setError(400, "Search query is required");
+ return response.toString();
+ }
+
+ String auth = httpRequest.getHeader("Authorization");
+
+ Integer userID = jwtUtil.getUserIdFromRequest(httpRequest);
+
+ logger.info("ES search for userId: {}", 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()) {
+ response.setError(200, "No beneficiaries found");
+ return response.toString();
+ }
+
+ return result;
+
+ } catch (Exception e) {
+ logger.error("Error in universal search: {}", e.getMessage(), e);
+ response.setError(400, "Error searching beneficiaries: " + e.getMessage());
+ return response.toString();
+ }
+ }
+
@Operation(summary = "Provide the list of beneficiaries based on search criteria")
@RequestMapping(value = "/searchBeneficiary", method = RequestMethod.POST, headers = "Authorization")
public String searchBeneficiary(
@@ -364,6 +417,41 @@ public String searchBeneficiary(
return output.toString();
}
+ /**
+ * 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 {
+
+ String auth = httpRequest.getHeader("Authorization");
+
+ Integer userID = jwtUtil.getUserIdFromRequest(httpRequest);
+
+ 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() {
diff --git a/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java b/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java
index 30a1bc3f..62bf7e7c 100644
--- a/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java
+++ b/src/main/java/com/iemr/common/controller/dynamicForm/DynamicFormController.java
@@ -84,9 +84,9 @@ public ResponseEntity> deleteField(@PathVariable Long fieldId) {
}
@GetMapping(value = "form/{formId}/fields")
- public ResponseEntity> getStructuredForm(@PathVariable String formId, @RequestParam(name = "lang", defaultValue = "en") String lang) {
+ public ResponseEntity> getStructuredForm(@PathVariable String formId, @RequestParam(name = "lang", defaultValue = "en") String lang,@RequestHeader(value = "jwttoken") String token) {
try {
- Object result = formMasterService.getStructuredFormByFormId(formId,lang);
+ Object result = formMasterService.getStructuredFormByFormId(formId,lang,token);
return ResponseEntity.status(HttpStatus.OK)
.body(ApiResponse.success("Form structure fetched successfully", HttpStatus.OK.value(), result));
} catch (Exception e) {
diff --git a/src/main/java/com/iemr/common/controller/platform_feedback/PlatformFeedbackController.java b/src/main/java/com/iemr/common/controller/platform_feedback/PlatformFeedbackController.java
index fd9aad90..556561cf 100644
--- a/src/main/java/com/iemr/common/controller/platform_feedback/PlatformFeedbackController.java
+++ b/src/main/java/com/iemr/common/controller/platform_feedback/PlatformFeedbackController.java
@@ -19,10 +19,12 @@
* 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.common.controller;
+package com.iemr.common.controller.platform_feedback;
-import com.iemr.common.dto.*;
-import com.iemr.common.service.PlatformFeedbackService;
+import com.iemr.common.dto.platform_feedback.CategoryResponse;
+import com.iemr.common.dto.platform_feedback.FeedbackRequest;
+import com.iemr.common.dto.platform_feedback.FeedbackResponse;
+import com.iemr.common.service.platform_feedback.PlatformFeedbackService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
diff --git a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java
index 55e2f93f..554500f3 100644
--- a/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java
+++ b/src/main/java/com/iemr/common/controller/users/IEMRAdminController.java
@@ -392,6 +392,7 @@ private void createUserMapping(User mUser, JSONObject resMap, JSONObject service
resMap.put("agentPassword", mUser.getAgentPassword());
resMap.put("m_UserLangMappings", new JSONArray(mUser.getM_UserLangMappings().toString()));
resMap.put("designationID", mUser.getDesignationID());
+ resMap.put("dhistoken",mUser.getDhistoken());
if (mUser.getDesignation() != null) {
resMap.put("designation", new JSONObject(mUser.getDesignation().toString()));
}
@@ -1223,7 +1224,25 @@ public ResponseEntity> getUserDetails(@PathVariable("userName") String userNam
return new ResponseEntity<>(Map.of("error", "UserName Not Found"), HttpStatus.NOT_FOUND);
}
User user = users.get(0);
- return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()), HttpStatus.OK);
+ return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()),
+ HttpStatus.OK);
+ } catch (Exception e) {
+ return new ResponseEntity<>(Map.of("error", "Internal server error"), HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ }
+
+ @Operation(summary = "Get UserId based on userName")
+ @GetMapping(value = "/checkUserName/{userName}", produces = MediaType.APPLICATION_JSON, headers = "Authorization")
+ public ResponseEntity> checkUserDetails(@PathVariable("userName") String userName) {
+ try {
+ List users = iemrAdminUserServiceImpl.findUserIdByUserName(userName);
+ if (users.isEmpty()) {
+ return new ResponseEntity<>(Map.of("error", "UserName Not Found"), HttpStatus.NOT_FOUND);
+ }
+ User user = users.get(0);
+ return new ResponseEntity<>(Map.of("userName", user.getUserName(), "userId", user.getUserID()),
+ HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(Map.of("error", "Internal server error"), HttpStatus.INTERNAL_SERVER_ERROR);
}
diff --git a/src/main/java/com/iemr/common/data/dynamic_from/FormField.java b/src/main/java/com/iemr/common/data/dynamic_from/FormField.java
index 39785ae9..1b195db9 100644
--- a/src/main/java/com/iemr/common/data/dynamic_from/FormField.java
+++ b/src/main/java/com/iemr/common/data/dynamic_from/FormField.java
@@ -53,7 +53,15 @@ public class FormField {
@Column(name = "sequence")
private Integer sequence;
+ @Column(name = "is_editable")
+ private Boolean isEditable;
+
+ @Column(name = "state_code")
+ private Integer stateCode;
+
@Column(name = "created_at")
private LocalDateTime createdAt = LocalDateTime.now();
+
+
}
diff --git a/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescribedMMUDrugDetail.java b/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescribedMMUDrugDetail.java
new file mode 100644
index 00000000..e478420d
--- /dev/null
+++ b/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescribedMMUDrugDetail.java
@@ -0,0 +1,119 @@
+package com.iemr.common.data.mmuDrugHistory;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+import com.google.gson.annotations.Expose;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import lombok.Data;
+
+@Entity
+@Data
+@Table(name = "t_prescribeddrug")
+public class PrescribedMMUDrugDetail {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Expose
+ @Column(name = "PrescribedDrugID")
+ private Long prescribedDrugID;
+
+ @Expose
+ @Column(name = "BeneficiaryRegID")
+ private Long beneficiaryRegID;
+
+ @Expose
+ @Column(name = "BenVisitID")
+ private Long benVisitID;
+
+ @Expose
+ @Column(name = "ProviderServiceMapID")
+ private Integer providerServiceMapID;
+
+ @Expose
+ @Column(name = "VisitCode")
+ private Long visitCode;
+
+ @Expose
+ @Column(name = "PrescriptionID")
+ private Long prescriptionID;
+
+ @OneToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "PrescriptionID", referencedColumnName = "PrescriptionID", insertable = false, updatable = false)
+ private PrescriptionMMU prescription;
+
+ @Expose
+ @Column(name = "DrugForm")
+ private String formName;
+
+ @Expose
+ @Column(name = "DrugTradeOrBrandName")
+ private String drugTradeOrBrandName;
+
+ @Expose
+ @Column(name = "DrugID")
+ private Integer drugID;
+
+ @Expose
+ @Column(name = "GenericDrugName")
+ private String drugName;
+
+ @Expose
+ @Column(name = "DrugStrength")
+ private String drugStrength;
+
+ @Expose
+ @Column(name = "Dose")
+ private String dose;
+
+ @Expose
+ @Column(name = "Route")
+ private String route;
+
+ @Expose
+ @Column(name = "Frequency")
+ private String frequency;
+
+ @Expose
+ @Column(name = "Duration")
+ private String duration;
+
+ @Expose
+ @Column(name = "DuartionUnit")
+ private String unit;
+
+ @Expose
+ @Column(name = "RelationToFood")
+ private String relationToFood;
+
+ @Expose
+ @Column(name = "SpecialInstruction")
+ private String instructions;
+
+ @Expose
+ @Column(name = "QtyPrescribed")
+ private Integer qtyPrescribed;
+
+ @Expose
+ @Column(name = "Deleted", insertable = false, updatable = true)
+ private Boolean deleted;
+
+ @Expose
+ @Column(name = "Processed", insertable = false, updatable = true)
+ private String processed;
+
+ @Expose
+ @Column(name = "CreatedBy")
+ private String createdBy;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescriptionMMU.java b/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescriptionMMU.java
new file mode 100644
index 00000000..cd3f655e
--- /dev/null
+++ b/src/main/java/com/iemr/common/data/mmuDrugHistory/PrescriptionMMU.java
@@ -0,0 +1,43 @@
+package com.iemr.common.data.mmuDrugHistory;
+
+import com.google.gson.annotations.Expose;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.Data;
+
+@Entity
+@Data
+@Table(name = "t_prescription")
+public class PrescriptionMMU {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Expose
+ @Column(name = "PrescriptionID", insertable = false, updatable = false)
+ private Long prescriptionID;
+
+ @Expose
+ @Column(name = "BenVisitID")
+ private Long benVisitID;
+
+ @Expose
+ @Column(name = "ProviderServiceMapID")
+ private Integer providerServiceMapID;
+
+ @Expose
+ @Column(name = "DiagnosisProvided")
+ private String diagnosisProvided;
+
+ @Expose
+ @Column(name = "Remarks")
+ private String remarks;
+
+ @Expose
+ @Column(name = "Deleted", insertable = false, updatable = true)
+ private Boolean deleted;
+
+}
diff --git a/src/main/java/com/iemr/common/data/platform_feedback/Feedback.java b/src/main/java/com/iemr/common/data/platform_feedback/Feedback.java
index b499ef3a..776d3c08 100644
--- a/src/main/java/com/iemr/common/data/platform_feedback/Feedback.java
+++ b/src/main/java/com/iemr/common/data/platform_feedback/Feedback.java
@@ -19,7 +19,7 @@
* 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.common.model;
+package com.iemr.common.data.platform_feedback;
import jakarta.persistence.*;
import jakarta.validation.constraints.Max;
diff --git a/src/main/java/com/iemr/common/data/platform_feedback/FeedbackCategory.java b/src/main/java/com/iemr/common/data/platform_feedback/FeedbackCategory.java
index ee9ffffe..a3e4c692 100644
--- a/src/main/java/com/iemr/common/data/platform_feedback/FeedbackCategory.java
+++ b/src/main/java/com/iemr/common/data/platform_feedback/FeedbackCategory.java
@@ -19,7 +19,7 @@
* 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.common.model;
+package com.iemr.common.data.platform_feedback;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
diff --git a/src/main/java/com/iemr/common/data/translation/Translation.java b/src/main/java/com/iemr/common/data/translation/Translation.java
index 81a906fa..0dad116d 100644
--- a/src/main/java/com/iemr/common/data/translation/Translation.java
+++ b/src/main/java/com/iemr/common/data/translation/Translation.java
@@ -18,6 +18,8 @@ public class Translation {
private String english;
@Column(name = "hindi_translation")
private String hindiTranslation;
+ @Column(name = "assamese_translation")
+ private String assameseTranslation;
@Column(name = "is_active")
private Boolean isActive;
}
diff --git a/src/main/java/com/iemr/common/data/users/User.java b/src/main/java/com/iemr/common/data/users/User.java
index e6184e60..275b0ec6 100644
--- a/src/main/java/com/iemr/common/data/users/User.java
+++ b/src/main/java/com/iemr/common/data/users/User.java
@@ -55,6 +55,7 @@
@Entity
@Table(name = "m_user")
@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -208,6 +209,10 @@ public class User implements Serializable {
@Column(name = "failed_attempt")
private Integer failedAttempt;
+ @Expose
+ @Column(name = "dhistoken")
+ private String dhistoken;
+
/*
* protected User() { }
*/
@@ -217,7 +222,7 @@ public static User initializeUsers(Long userID, Integer titleID, String firstNam
Timestamp dOJ, Integer qualificationID, String userName, String password, String emailID, Status m_Status,
List m_UserServiceRoleMapping, String emergencyContactPerson,
String emergencyContactNo, Boolean isSupervisor, Boolean deleted, String createdBy, Timestamp createdDate,
- String modifiedBy, Timestamp lastModDate, String newPassword) {
+ String modifiedBy, Timestamp lastModDate, String newPassword, String dhistoken) {
User user = new User();
user.userID = userID;
user.titleID = titleID;
@@ -244,6 +249,7 @@ public static User initializeUsers(Long userID, Integer titleID, String firstNam
user.modifiedBy = modifiedBy;
user.lastModDate = lastModDate;
user.newPassword = newPassword;
+ user.dhistoken = dhistoken;
return user;
}
@@ -530,6 +536,9 @@ public Integer getDesignationID() {
public Designation getDesignation() {
return designation;
}
+ public String getDhistoken() {
+ return dhistoken;
+ }
/*
* public User(String userName, String password) { this.userName = userName;
diff --git a/src/main/java/com/iemr/common/data/users/UserServiceRole.java b/src/main/java/com/iemr/common/data/users/UserServiceRole.java
new file mode 100644
index 00000000..935940d5
--- /dev/null
+++ b/src/main/java/com/iemr/common/data/users/UserServiceRole.java
@@ -0,0 +1,364 @@
+package com.iemr.common.data.users;
+
+import jakarta.persistence.*;
+import java.util.Objects;
+
+@Entity
+@Table(name = "v_userservicerolemapping", schema = "db_iemr")
+public class UserServiceRole {
+ private Integer userId;
+ private int usrMappingId;
+ private String name;
+ private String userName;
+ private Short serviceId;
+ private String serviceName;
+ private Boolean isNational;
+ private Integer stateId;
+ private String stateName;
+ private Integer workingDistrictId;
+ private String workingDistrictName;
+ private Integer workingLocationId;
+ private Short serviceProviderId;
+ private String locationName;
+ private String workingLocationAddress;
+ private Integer roleId;
+ private String roleName;
+ private Integer providerServiceMapId;
+ private String agentId;
+ private Short psmStatusId;
+ private String psmStatus;
+ private Boolean userServciceRoleDeleted;
+ private Boolean userDeleted;
+ private Boolean serviceProviderDeleted;
+ private Boolean roleDeleted;
+ private Boolean providerServiceMappingDeleted;
+ private Boolean isInbound;
+ private Boolean isOutbound;
+ private Integer blockid;
+ private String blockname;
+ private String villageid;
+ private String villagename;
+
+ @Basic
+ @Column(name = "UserID")
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ @Basic
+ @Column(name = "USRMappingID")
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ public int getUsrMappingId() {
+ return usrMappingId;
+ }
+
+ public void setUsrMappingId(int usrMappingId) {
+ this.usrMappingId = usrMappingId;
+ }
+
+ @Basic
+ @Column(name = "Name")
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Basic
+ @Column(name = "UserName")
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ @Basic
+ @Column(name = "ServiceID")
+ public Short getServiceId() {
+ return serviceId;
+ }
+
+ public void setServiceId(Short serviceId) {
+ this.serviceId = serviceId;
+ }
+
+ @Basic
+ @Column(name = "ServiceName")
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ @Basic
+ @Column(name = "IsNational")
+ public Boolean getNational() {
+ return isNational;
+ }
+
+ public void setNational(Boolean national) {
+ isNational = national;
+ }
+
+ @Basic
+ @Column(name = "StateID")
+ public Integer getStateId() {
+ return stateId;
+ }
+
+ public void setStateId(Integer stateId) {
+ this.stateId = stateId;
+ }
+
+ @Basic
+ @Column(name = "StateName")
+ public String getStateName() {
+ return stateName;
+ }
+
+ public void setStateName(String stateName) {
+ this.stateName = stateName;
+ }
+
+ @Basic
+ @Column(name = "WorkingDistrictID")
+ public Integer getWorkingDistrictId() {
+ return workingDistrictId;
+ }
+
+ public void setWorkingDistrictId(Integer workingDistrictId) {
+ this.workingDistrictId = workingDistrictId;
+ }
+
+ @Basic
+ @Column(name = "WorkingDistrictName")
+ public String getWorkingDistrictName() {
+ return workingDistrictName;
+ }
+
+ public void setWorkingDistrictName(String workingDistrictName) {
+ this.workingDistrictName = workingDistrictName;
+ }
+
+ @Basic
+ @Column(name = "WorkingLocationID")
+ public Integer getWorkingLocationId() {
+ return workingLocationId;
+ }
+
+ public void setWorkingLocationId(Integer workingLocationId) {
+ this.workingLocationId = workingLocationId;
+ }
+
+ @Basic
+ @Column(name = "ServiceProviderID")
+ public Short getServiceProviderId() {
+ return serviceProviderId;
+ }
+
+ public void setServiceProviderId(Short serviceProviderId) {
+ this.serviceProviderId = serviceProviderId;
+ }
+
+ @Basic
+ @Column(name = "LocationName")
+ public String getLocationName() {
+ return locationName;
+ }
+
+ public void setLocationName(String locationName) {
+ this.locationName = locationName;
+ }
+
+ @Basic
+ @Column(name = "WorkingLocationAddress")
+ public String getWorkingLocationAddress() {
+ return workingLocationAddress;
+ }
+
+ public void setWorkingLocationAddress(String workingLocationAddress) {
+ this.workingLocationAddress = workingLocationAddress;
+ }
+
+ @Basic
+ @Column(name = "RoleID")
+ public Integer getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(Integer roleId) {
+ this.roleId = roleId;
+ }
+
+ @Basic
+ @Column(name = "RoleName")
+ public String getRoleName() {
+ return roleName;
+ }
+
+ public void setRoleName(String roleName) {
+ this.roleName = roleName;
+ }
+
+ @Basic
+ @Column(name = "ProviderServiceMapID")
+ public Integer getProviderServiceMapId() {
+ return providerServiceMapId;
+ }
+
+ public void setProviderServiceMapId(Integer providerServiceMapId) {
+ this.providerServiceMapId = providerServiceMapId;
+ }
+
+ @Basic
+ @Column(name = "AgentID")
+ public String getAgentId() {
+ return agentId;
+ }
+
+ public void setAgentId(String agentId) {
+ this.agentId = agentId;
+ }
+
+ @Basic
+ @Column(name = "PSMStatusID")
+ public Short getPsmStatusId() {
+ return psmStatusId;
+ }
+
+ public void setPsmStatusId(Short psmStatusId) {
+ this.psmStatusId = psmStatusId;
+ }
+
+ @Basic
+ @Column(name = "PSMStatus")
+ public String getPsmStatus() {
+ return psmStatus;
+ }
+
+ public void setPsmStatus(String psmStatus) {
+ this.psmStatus = psmStatus;
+ }
+
+ @Basic
+ @Column(name = "UserServciceRoleDeleted")
+ public Boolean getUserServciceRoleDeleted() {
+ return userServciceRoleDeleted;
+ }
+
+ public void setUserServciceRoleDeleted(Boolean userServciceRoleDeleted) {
+ this.userServciceRoleDeleted = userServciceRoleDeleted;
+ }
+
+ @Basic
+ @Column(name = "UserDeleted")
+ public Boolean getUserDeleted() {
+ return userDeleted;
+ }
+
+ public void setUserDeleted(Boolean userDeleted) {
+ this.userDeleted = userDeleted;
+ }
+
+ @Basic
+ @Column(name = "ServiceProviderDeleted")
+ public Boolean getServiceProviderDeleted() {
+ return serviceProviderDeleted;
+ }
+
+ public void setServiceProviderDeleted(Boolean serviceProviderDeleted) {
+ this.serviceProviderDeleted = serviceProviderDeleted;
+ }
+
+ @Basic
+ @Column(name = "RoleDeleted")
+ public Boolean getRoleDeleted() {
+ return roleDeleted;
+ }
+
+ public void setRoleDeleted(Boolean roleDeleted) {
+ this.roleDeleted = roleDeleted;
+ }
+
+ @Basic
+ @Column(name = "ProviderServiceMappingDeleted")
+ public Boolean getProviderServiceMappingDeleted() {
+ return providerServiceMappingDeleted;
+ }
+
+ public void setProviderServiceMappingDeleted(Boolean providerServiceMappingDeleted) {
+ this.providerServiceMappingDeleted = providerServiceMappingDeleted;
+ }
+
+ @Basic
+ @Column(name = "isInbound")
+ public Boolean getInbound() {
+ return isInbound;
+ }
+
+ public void setInbound(Boolean inbound) {
+ isInbound = inbound;
+ }
+
+ @Basic
+ @Column(name = "isOutbound")
+ public Boolean getOutbound() {
+ return isOutbound;
+ }
+
+ public void setOutbound(Boolean outbound) {
+ isOutbound = outbound;
+ }
+
+ @Basic
+ @Column(name = "blockid")
+ public Integer getBlockid() {
+ return blockid;
+ }
+
+ public void setBlockid(Integer blockid) {
+ this.blockid = blockid;
+ }
+
+ @Basic
+ @Column(name = "blockname")
+ public String getBlockname() {
+ return blockname;
+ }
+
+ public void setBlockname(String blockname) {
+ this.blockname = blockname;
+ }
+
+ @Basic
+ @Column(name = "villageid")
+ public String getVillageid() {
+ return villageid;
+ }
+
+ public void setVillageid(String villageid) {
+ this.villageid = villageid;
+ }
+
+ @Basic
+ @Column(name = "villagename")
+ public String getVillagename() {
+ return villagename;
+ }
+
+ public void setVillagename(String villagename) {
+ this.villagename = villagename;
+ }
+
+}
diff --git a/src/main/java/com/iemr/common/dto/dynamicForm/FieldResponseDTO.java b/src/main/java/com/iemr/common/dto/dynamicForm/FieldResponseDTO.java
index 3415d91a..e41f8e80 100644
--- a/src/main/java/com/iemr/common/dto/dynamicForm/FieldResponseDTO.java
+++ b/src/main/java/com/iemr/common/dto/dynamicForm/FieldResponseDTO.java
@@ -18,6 +18,8 @@ public class FieldResponseDTO {
private String defaultValue;
private String placeholder;
private Integer sequence;
+ private Boolean isEditable;
+ private Integer stateCode;
private List options;
private Map validation;
private Map conditional;
diff --git a/src/main/java/com/iemr/common/dto/platform_feedback/CategoryResponse.java b/src/main/java/com/iemr/common/dto/platform_feedback/CategoryResponse.java
index df1c7184..c01ff197 100644
--- a/src/main/java/com/iemr/common/dto/platform_feedback/CategoryResponse.java
+++ b/src/main/java/com/iemr/common/dto/platform_feedback/CategoryResponse.java
@@ -19,6 +19,6 @@
* 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.common.dto;
+package com.iemr.common.dto.platform_feedback;
public record CategoryResponse(String categoryId, String slug, String label, String scope, boolean active) {}
\ No newline at end of file
diff --git a/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackRequest.java b/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackRequest.java
index 7002ece9..02c52c3a 100644
--- a/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackRequest.java
+++ b/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackRequest.java
@@ -19,13 +19,12 @@
* 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.common.dto;
+package com.iemr.common.dto.platform_feedback;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
-import java.time.LocalDateTime;
public record FeedbackRequest(
@Min(1) @Max(5) int rating,
diff --git a/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackResponse.java b/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackResponse.java
index 6b348f6e..51003353 100644
--- a/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackResponse.java
+++ b/src/main/java/com/iemr/common/dto/platform_feedback/FeedbackResponse.java
@@ -19,7 +19,7 @@
* 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.common.dto;
+package com.iemr.common.dto.platform_feedback;
import java.time.LocalDateTime;
diff --git a/src/main/java/com/iemr/common/dto/sms/SMSTemplateDTO.java b/src/main/java/com/iemr/common/dto/sms/SMSTemplateDTO.java
new file mode 100644
index 00000000..ab71d8cc
--- /dev/null
+++ b/src/main/java/com/iemr/common/dto/sms/SMSTemplateDTO.java
@@ -0,0 +1,114 @@
+package com.iemr.common.dto.sms;
+
+public class SMSTemplateDTO {
+ private Integer smsTemplateID;
+ private String smsTemplateName;
+ private String smsTemplate;
+ private String dltTemplateId;
+ private String smsSenderID;
+ private Integer smsTypeID;
+ private Integer providerServiceMapID;
+ private Boolean deleted;
+ private String createdBy;
+ private String modifiedBy;
+ private String createdDate;
+ private String lastModDate;
+
+ // Getters and Setters for all fields
+
+ public Integer getSmsTemplateID() {
+ return smsTemplateID;
+ }
+
+ public void setSmsTemplateID(Integer smsTemplateID) {
+ this.smsTemplateID = smsTemplateID;
+ }
+
+ public String getSmsTemplateName() {
+ return smsTemplateName;
+ }
+
+ public void setSmsTemplateName(String smsTemplateName) {
+ this.smsTemplateName = smsTemplateName;
+ }
+
+ public String getSmsTemplate() {
+ return smsTemplate;
+ }
+
+ public void setSmsTemplate(String smsTemplate) {
+ this.smsTemplate = smsTemplate;
+ }
+
+ public String getDltTemplateId() {
+ return dltTemplateId;
+ }
+
+ public void setDltTemplateId(String dltTemplateId) {
+ this.dltTemplateId = dltTemplateId;
+ }
+
+ public String getSmsSenderID() {
+ return smsSenderID;
+ }
+
+ public void setSmsSenderID(String smsSenderID) {
+ this.smsSenderID = smsSenderID;
+ }
+
+ public Integer getSmsTypeID() {
+ return smsTypeID;
+ }
+
+ public void setSmsTypeID(Integer smsTypeID) {
+ this.smsTypeID = smsTypeID;
+ }
+
+ public Integer getProviderServiceMapID() {
+ return providerServiceMapID;
+ }
+
+ public void setProviderServiceMapID(Integer providerServiceMapID) {
+ this.providerServiceMapID = providerServiceMapID;
+ }
+
+ public Boolean getDeleted() {
+ return deleted;
+ }
+
+ public void setDeleted(Boolean deleted) {
+ this.deleted = deleted;
+ }
+
+ public String getCreatedBy() {
+ return createdBy;
+ }
+
+ public void setCreatedBy(String createdBy) {
+ this.createdBy = createdBy;
+ }
+
+ public String getModifiedBy() {
+ return modifiedBy;
+ }
+
+ public void setModifiedBy(String modifiedBy) {
+ this.modifiedBy = modifiedBy;
+ }
+
+ public String getCreatedDate() {
+ return createdDate;
+ }
+
+ public void setCreatedDate(String createdDate) {
+ this.createdDate = createdDate;
+ }
+
+ public String getLastModDate() {
+ return lastModDate;
+ }
+
+ public void setLastModDate(String lastModDate) {
+ this.lastModDate = lastModDate;
+ }
+}
diff --git a/src/main/java/com/iemr/common/mapper/sms/SMSMapper.java b/src/main/java/com/iemr/common/mapper/sms/SMSMapper.java
index 7fe629f1..1982a74f 100644
--- a/src/main/java/com/iemr/common/mapper/sms/SMSMapper.java
+++ b/src/main/java/com/iemr/common/mapper/sms/SMSMapper.java
@@ -21,7 +21,9 @@
*/
package com.iemr.common.mapper.sms;
+import java.text.SimpleDateFormat;
import java.util.List;
+import java.sql.Timestamp;
import org.mapstruct.IterableMapping;
import org.mapstruct.Mapper;
@@ -33,6 +35,7 @@
import com.iemr.common.data.sms.SMSParametersMap;
import com.iemr.common.data.sms.SMSTemplate;
import com.iemr.common.data.sms.SMSType;
+import com.iemr.common.dto.sms.SMSTemplateDTO;
import com.iemr.common.model.sms.CreateSMSRequest;
import com.iemr.common.model.sms.FullSMSTemplateResponse;
import com.iemr.common.model.sms.SMSParameterMapModel;
@@ -110,4 +113,25 @@ public interface SMSMapper
@IterableMapping(elementTargetType = FullSMSTemplateResponse.class)
List smsTemplateToFullResponse(List smsTemplate);
+ @Mapping(source = "smsTemplateID", target = "smsTemplateID")
+ @Mapping(source = "smsTemplateName", target = "smsTemplateName")
+ @Mapping(source = "smsTemplate", target = "smsTemplate")
+ @Mapping(source = "dltTemplateId", target = "dltTemplateId")
+ @Mapping(source = "smsSenderID", target = "smsSenderID")
+ @Mapping(source = "smsTypeID", target = "smsTypeID")
+ @Mapping(source = "providerServiceMapID", target = "providerServiceMapID")
+ @Mapping(source = "deleted", target = "deleted")
+ @Mapping(source = "createdBy", target = "createdBy")
+ @Mapping(source = "modifiedBy", target = "modifiedBy")
+ @Mapping(target = "createdDate", expression = "java(formatDate(template.getCreatedDate()))")
+ @Mapping(target = "lastModDate", expression = "java(formatDate(template.getLastModDate()))")
+ SMSTemplateDTO smsTemplateToDTO(SMSTemplate template);
+
+ default String formatDate(Timestamp timestamp) {
+ if (timestamp == null) {
+ return null;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+ return sdf.format(timestamp);
+ }
}
diff --git a/src/main/java/com/iemr/common/repository/mmuDrugHistory/PrescribedMMUDrugRepository.java b/src/main/java/com/iemr/common/repository/mmuDrugHistory/PrescribedMMUDrugRepository.java
new file mode 100644
index 00000000..17eb2c13
--- /dev/null
+++ b/src/main/java/com/iemr/common/repository/mmuDrugHistory/PrescribedMMUDrugRepository.java
@@ -0,0 +1,11 @@
+package com.iemr.common.repository.mmuDrugHistory;
+
+import com.iemr.common.data.mmuDrugHistory.PrescribedMMUDrugDetail;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface PrescribedMMUDrugRepository extends CrudRepository {
+ PrescribedMMUDrugDetail findByPrescribedDrugID(Long prescribedDrugID);
+
+}
diff --git a/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackCategoryRepository.java b/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackCategoryRepository.java
index 083ca5f7..43096490 100644
--- a/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackCategoryRepository.java
+++ b/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackCategoryRepository.java
@@ -21,11 +21,11 @@
*/
package com.iemr.common.repository.platform_feedback;
-import com.iemr.common.model.FeedbackCategory;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import com.iemr.common.data.platform_feedback.FeedbackCategory;
@Repository
public interface PlatformFeedbackCategoryRepository extends JpaRepository {
diff --git a/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackRepository.java b/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackRepository.java
index fd00bdbc..020a7997 100644
--- a/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackRepository.java
+++ b/src/main/java/com/iemr/common/repository/platform_feedback/PlatformFeedbackRepository.java
@@ -21,7 +21,7 @@
*/
package com.iemr.common.repository.platform_feedback;
-import com.iemr.common.model.Feedback;
+import com.iemr.common.data.platform_feedback.Feedback;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
diff --git a/src/main/java/com/iemr/common/repository/users/IEMRUserRepositoryCustom.java b/src/main/java/com/iemr/common/repository/users/IEMRUserRepositoryCustom.java
index 3ee48ab3..cc1abccc 100644
--- a/src/main/java/com/iemr/common/repository/users/IEMRUserRepositoryCustom.java
+++ b/src/main/java/com/iemr/common/repository/users/IEMRUserRepositoryCustom.java
@@ -78,4 +78,7 @@ UserSecurityQMapping verifySecurityQuestionAnswers(@Param("UserID") Long UserID,
User findByUserID(Long userID);
+ @Query("SELECT u FROM User u WHERE LOWER(u.userName) = LOWER(:userName)")
+ List findUserName(@Param("userName") String username);
+
}
diff --git a/src/main/java/com/iemr/common/repository/users/UserServiceRoleRepo.java b/src/main/java/com/iemr/common/repository/users/UserServiceRoleRepo.java
new file mode 100644
index 00000000..cfb85d0a
--- /dev/null
+++ b/src/main/java/com/iemr/common/repository/users/UserServiceRoleRepo.java
@@ -0,0 +1,12 @@
+package com.iemr.common.repository.users;
+
+import com.iemr.common.data.users.UserServiceRole;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface UserServiceRoleRepo extends JpaRepository {
+ List findByUserName(String userName);
+}
diff --git a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java
index 6e7848cd..e39cfcab 100644
--- a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java
+++ b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserService.java
@@ -38,6 +38,10 @@ String findByBeneficiaryPhoneNo(BenPhoneMap benPhoneMap, Integer pageNo, Integer
String findBeneficiary(BeneficiaryModel request, String auth) throws Exception;
+ String searchUser(String searchQuery, Integer userId, String auth, Boolean is1097) throws Exception;
+
+ String findBeneficiaryES(BeneficiaryModel i_beneficiary, Integer userId, String auth) throws Exception;
+
List userExitsCheckWithId(String beneficiaryID, String auth, Boolean is1097) throws Exception;
public List userExitsCheckWithHealthId_ABHAId(String healthID, String auth, Boolean is1097)
diff --git a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java
index f67d7815..28d664c8 100644
--- a/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java
+++ b/src/main/java/com/iemr/common/service/beneficiary/IEMRSearchUserServiceImpl.java
@@ -25,6 +25,7 @@
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import org.slf4j.Logger;
@@ -76,7 +77,7 @@
import com.iemr.common.repository.userbeneficiarydata.MaritalStatusRepository;
import com.iemr.common.repository.userbeneficiarydata.SexualOrientationRepository;
import com.iemr.common.repository.userbeneficiarydata.TitleRepository;
-import com.iemr.common.utils.mapper.OutputMapper;
+import com.iemr.common.utils.exception.IEMRException;
/**
*
@@ -198,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);
@@ -219,10 +220,10 @@ public List userExitsCheckWithHealthId_ABHAId(String healthID,
List beneficiaryList = new ArrayList();
// search patient by ben id, call Identity API
List 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);
}
@@ -232,6 +233,7 @@ public List userExitsCheckWithHealthId_ABHAId(String healthID,
}
return beneficiaryList;
}
+
private String getHealthId(String healthID) {
String healthIdNumber = null;
if (null != healthID) {
@@ -249,6 +251,7 @@ private String getHealthId(String healthID) {
}
return healthIdNumber;
}
+
// search patient by healthidNo / ABHA Id No
@Override
public List userExitsCheckWithHealthIdNo_ABHAIdNo(String healthIDNo, String auth, Boolean is1097)
@@ -322,6 +325,90 @@ private void setBeneficiaryGender(List iBeneficiary) {
}
+ /**
+ * 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");
+ }
+
+ logger.info("Universal search with query: {}, userId: {}", searchQuery, userId);
+
+ Map response = identityBeneficiaryService.searchBeneficiariesUsingES(
+ searchQuery, userId, auth, is1097);
+
+ 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);
+ }
+ }
+
+ /**
+ * 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 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
public String findBeneficiary(BeneficiaryModel i_beneficiary, String auth) throws Exception {
@@ -364,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
@@ -374,7 +461,7 @@ public List getBeneficiaryListFromMapper(List {
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());
diff --git a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java
index 8b84bc8a..41a132b0 100644
--- a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java
+++ b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryService.java
@@ -23,6 +23,7 @@
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
@@ -53,6 +54,8 @@ List getBeneficiaryListByBenRegID(Long benRegId, String auth,
List searchBeneficiaryList(String identitySearchDTO, String auth, Boolean is1097)
throws IEMRException;
+ public Map searchBeneficiaryListES(String identitySearchDTO, String auth, Boolean is1097) throws IEMRException ;
+
Integer editIdentityEditDTOCommunityorEducation(IdentityEditDTO identityEditDTO, String auth, Boolean is1097)
throws IEMRException;
@@ -69,4 +72,8 @@ public List getBeneficiaryListByFamilyId(String familyId, Stri
public List getBeneficiaryListByGovId(String identity, String auth, Boolean is1097)
throws IEMRException;
+
+ public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097) throws IEMRException;
+
+
}
diff --git a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java
index a79d3683..350f2527 100644
--- a/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java
+++ b/src/main/java/com/iemr/common/service/beneficiary/IdentityBeneficiaryServiceImpl.java
@@ -21,15 +21,19 @@
*/
package com.iemr.common.service.beneficiary;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import com.google.gson.*;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.iemr.common.dto.identity.BeneficiariesDTO;
@@ -42,8 +46,13 @@
import com.iemr.common.utils.mapper.InputMapper;
import com.iemr.common.utils.mapper.OutputMapper;
import com.iemr.common.utils.response.OutputResponse;
+
import org.springframework.beans.factory.annotation.Value;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
@Service
public class IdentityBeneficiaryServiceImpl implements IdentityBeneficiaryService {
@@ -52,7 +61,6 @@ public class IdentityBeneficiaryServiceImpl implements IdentityBeneficiaryServic
Logger logger = LoggerFactory.getLogger(this.getClass().getName());
private static HttpUtils httpUtils = new HttpUtils();
private InputMapper inputMapper = new InputMapper();
-
@Value("${identity-api-url}")
private String identityBaseURL;
@Value("${identity-1097-api-url}")
@@ -61,12 +69,10 @@ public class IdentityBeneficiaryServiceImpl implements IdentityBeneficiaryServic
private static final String IDENTITY_BASE_URL = "IDENTITY_BASE_URL";
@Value("${genben-api}")
- private String BEN_GEN ;
-
+ private String BEN_GEN;
@Value("${generateBeneficiaryIDs-api-url}")
- private String BEN_GEN_API_URL ;
-
+ private String BEN_GEN_API_URL;
@Override
// public List getBeneficiaryListByIDs() {// search by regID
@@ -90,13 +96,10 @@ public List getBeneficiaryListByIDs(HashSet benIdList, String
}
if (null != result) {
JsonObject responseObj = (JsonObject) parser.parse(result);
- // JsonArray data = (JsonArray) parser.parse(
JsonObject data1 = (JsonObject) responseObj.get("response");
String s = data1.get("data").getAsString();
JsonArray responseArray = parser.parse(s).getAsJsonArray();
- // String data="s";
- // JsonArray responseArray = (JsonArray) parser.parse(data);
for (JsonElement jsonElement : responseArray) {
@@ -109,10 +112,79 @@ public List getBeneficiaryListByIDs(HashSet benIdList, String
return listBenDetailForOutboundDTO;
}
+ /**
+ * Call Identity API's Elasticsearch universal search
+ */
+ @Override
+ public Map searchBeneficiariesUsingES(String query, Integer userId, String auth, Boolean is1097)
+ throws IEMRException {
+
+ Map response = new HashMap<>();
+
+ try {
+ HashMap headers = new HashMap<>();
+ if (auth != null && !auth.isEmpty()) {
+ headers.put("Authorization", auth);
+ }
+
+ String baseUrl = ConfigProperties
+ .getPropertyByName("identity-api-url-searchByES")
+ .replace(
+ IDENTITY_BASE_URL,
+ (Boolean.TRUE.equals(is1097)) ? identity1097BaseURL : identityBaseURL
+ );
+
+ StringBuilder url = new StringBuilder(baseUrl)
+ .append("?query=").append(URLEncoder.encode(query, StandardCharsets.UTF_8));
+
+ if (userId != null) {
+ url.append("&userId=").append(userId);
+ }
+
+ logger.info("Calling Identity ES search URL: {}", url);
+
+ String result = httpUtils.get(url.toString());
+
+ if (result == null || result.isEmpty()) {
+ response.put("data", Collections.emptyList());
+ response.put("statusCode", 200);
+ response.put("status", "Success");
+ response.put("errorMessage", "Success");
+ return response;
+ }
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ mapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
+
+ JsonNode rootNode = mapper.readTree(result);
+
+ if (rootNode.has("statusCode") && rootNode.get("statusCode").asInt() != 200) {
+ String errMsg = rootNode.has("errorMessage")
+ ? rootNode.get("errorMessage").asText()
+ : "Identity ES search failed";
+ throw new IEMRException(errMsg);
+ }
+
+ response.put("data", rootNode.path("data"));
+ response.put("statusCode", 200);
+ response.put("status", "Success");
+ response.put("errorMessage", "Success");
+
+ return response;
+
+ } catch (IEMRException e) {
+ throw e;
+ } catch (Exception e) {
+ logger.error("Error calling Identity ES search API", e);
+ throw new IEMRException("Error calling Identity ES search API");
+ }
+ }
+
@Override
public List getPartialBeneficiaryListByIDs(HashSet benIdList, String auth, Boolean is1097)
throws IEMRException {
- // TODO Auto-generated method stub
List listBenDetailForOutboundDTO = new ArrayList<>();
JsonParser parser = new JsonParser();
@@ -132,13 +204,10 @@ public List getPartialBeneficiaryListByIDs(HashSet benI
throw new IEMRException(identityResponse.getErrorMessage());
}
JsonObject responseObj = (JsonObject) parser.parse(result);
- // JsonArray data = (JsonArray) parser.parse(
JsonObject data1 = (JsonObject) responseObj.get("response");
String s = data1.get("data").getAsString();
JsonArray responseArray = parser.parse(s).getAsJsonArray();
- // String data="s";
- // JsonArray responseArray = (JsonArray) parser.parse(data);
for (JsonElement jsonElement : responseArray) {
@@ -153,6 +222,9 @@ public List getPartialBeneficiaryListByIDs(HashSet benI
// search beneficiaries by phone number
public List getBeneficiaryListByPhone(String phoneNo, String auth, Boolean is1097)
throws IEMRException {
+ logger.info("Phone no from getBeneficiaryListByPhone: " + phoneNo);
+ String cleanedPhoneNo = cleanPhoneNumber(phoneNo);
+ logger.info("Cleaned phone no: " + cleanedPhoneNo);
List listBenDetailForOutboundDTO = new ArrayList<>();
@@ -164,8 +236,13 @@ public List getBeneficiaryListByPhone(String phoneNo, String a
if (auth != null) {
header.put("Authorization", auth);
}
+
+ logger.info("Result=" + (ConfigProperties.getPropertyByName("identity-api-url-getByPhoneNum")
+ .replace(IDENTITY_BASE_URL, (is1097 ? identity1097BaseURL : identityBaseURL))) + cleanedPhoneNo);
+
result = httpUtils.post((ConfigProperties.getPropertyByName("identity-api-url-getByPhoneNum")
- .replace(IDENTITY_BASE_URL, (is1097 ? identity1097BaseURL : identityBaseURL))) + phoneNo, "", header);
+ .replace(IDENTITY_BASE_URL, (is1097 ? identity1097BaseURL : identityBaseURL))) + cleanedPhoneNo, "",
+ header);
OutputResponse identityResponse = InputMapper.gson().fromJson(result, OutputResponse.class);
if (identityResponse.getStatusCode() == OutputResponse.USERID_FAILURE) {
@@ -185,6 +262,25 @@ public List getBeneficiaryListByPhone(String phoneNo, String a
return listBenDetailForOutboundDTO;
}
+ private String cleanPhoneNumber(String phoneNumber) {
+ if (phoneNumber == null || phoneNumber.trim().isEmpty()) {
+ return phoneNumber;
+ }
+
+ String cleaned = phoneNumber.trim();
+
+ // Remove +91 prefix
+ if (cleaned.startsWith("+91")) {
+ cleaned = cleaned.substring(3);
+ }
+ // Remove 91 prefix if it's a 12-digit number (91 + 10 digit mobile)
+ else if (cleaned.startsWith("91") && cleaned.length() == 12) {
+ cleaned = cleaned.substring(2);
+ }
+
+ return cleaned.trim();
+ }
+
@Override
// search beneficiary by beneficiary id
public List getBeneficiaryListByBenID(String benId, String auth, Boolean is1097)
@@ -429,7 +525,6 @@ public String getIdentityResponse(String request, String auth, Boolean is1097) t
return result;
}
-
public Integer editIdentityEditDTO(IdentityEditDTO identityEditDTO, String auth, Boolean is1097)
throws IEMRException {
JsonParser parser = new JsonParser();
@@ -474,13 +569,10 @@ public List searchBeneficiaryList(String identitySearchDTO, St
IDENTITY_BASE_URL, (is1097 ? identity1097BaseURL : identityBaseURL)), identitySearchDTO, header);
JsonObject responseObj = (JsonObject) parser.parse(result);
- // JsonArray data = (JsonArray) parser.parse(
JsonObject data1 = (JsonObject) responseObj.get("response");
String s = data1.get("data").getAsString();
JsonArray responseArray = parser.parse(s).getAsJsonArray();
- // String data="s";
- // JsonArray responseArray = (JsonArray) parser.parse(data);
for (JsonElement jsonElement : responseArray) {
@@ -492,6 +584,68 @@ public List searchBeneficiaryList(String identitySearchDTO, St
return listBenDetailForOutboundDTO;
}
+ @Override
+ public Map searchBeneficiaryListES(String identitySearchDTO, String auth, Boolean is1097)
+ throws IEMRException {
+
+ Map response = new HashMap<>();
+
+ try {
+ HashMap headers = new HashMap<>();
+ if (auth != null && !auth.isEmpty()) {
+ headers.put("Authorization", auth);
+ }
+
+ String url = ConfigProperties
+ .getPropertyByName("identity-api-url-advancesearch-es")
+ .replace(
+ IDENTITY_BASE_URL,
+ Boolean.TRUE.equals(is1097)
+ ? identity1097BaseURL
+ : identityBaseURL);
+
+ logger.info("Calling Identity ES Advance Search API");
+
+ String result = httpUtils.post(url, identitySearchDTO, headers);
+
+ if (result == null || result.isEmpty()) {
+ response.put("data", Collections.emptyList());
+ response.put("statusCode", 200);
+ response.put("status", "Success");
+ response.put("errorMessage", "Success");
+ return response;
+ }
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ JsonNode rootNode = mapper.readTree(result);
+
+ if (rootNode.has("statusCode")
+ && rootNode.get("statusCode").asInt() != 200) {
+
+ String errMsg = rootNode.has("errorMessage")
+ ? rootNode.get("errorMessage").asText()
+ : "Identity ES advance search failed";
+
+ throw new IEMRException(errMsg);
+ }
+
+ response.put("data", rootNode.path("data"));
+ response.put("statusCode", 200);
+ response.put("status", "Success");
+ response.put("errorMessage", "Success");
+
+ return response;
+
+ } catch (IEMRException e) {
+ throw e;
+ } catch (Exception e) {
+ logger.error("Error calling Identity ES advance search API", e);
+ throw new IEMRException("Error calling Identity ES advance search API", e);
+ }
+ }
+
@Override
public Integer editIdentityEditDTOCommunityorEducation(IdentityEditDTO identityEditDTO, String auth, Boolean is1097)
throws IEMRException {
@@ -531,11 +685,11 @@ public List generateBeneficiaryIDs(String request, String a
if (auth != null) {
header.put("Authorization", auth);
}
-
+
logger.info("Request to generate ben IDs: " + request);
logger.info("Generating ben IDs API URL: " + BEN_GEN + BEN_GEN_API_URL);
result = httpUtils.post(BEN_GEN + BEN_GEN_API_URL, request, header);
-logger.info("Response from generate ben IDs: " + result);
+ logger.info("Response from generate ben IDs: " + result);
OutputResponse identityResponse = inputMapper.gson().fromJson(result, OutputResponse.class);
if (identityResponse.getStatusCode() == OutputResponse.USERID_FAILURE) {
@@ -557,4 +711,4 @@ public List generateBeneficiaryIDs(String request, String a
return listBen;
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java b/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java
index 1cf9ce32..7d2d7e62 100644
--- a/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java
+++ b/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java
@@ -42,11 +42,14 @@
import com.iemr.common.data.notification.Notification;
import com.iemr.common.repository.callhandling.IEMRCalltypeRepositoryImplCustom;
import com.iemr.common.utils.exception.IEMRException;
+import com.iemr.common.utils.mapper.CallTypeMapper;
import com.iemr.common.utils.mapper.InputMapper;
@Service
-public class CalltypeServiceImpl implements CalltypeService
-{
+public class CalltypeServiceImpl implements CalltypeService {
+
+ @Autowired
+ private CallTypeMapper callTypeMapper;
private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
InputMapper inputMapper = new InputMapper();
@@ -55,9 +58,8 @@ public class CalltypeServiceImpl implements CalltypeService
private IEMRCalltypeRepositoryImplCustom iEMRCalltypeRepositoryImplCustom;
@Override
- public List getAllCalltypes(String request) throws IEMRException
- {
- CallType provider = inputMapper.gson().fromJson(request, CallType.class);
+ public List getAllCalltypes(String request) throws IEMRException {
+ CallType provider = callTypeMapper.fromJson(request, CallType.class);
List callTypes = new ArrayList();
Set