Skip to content
Closed
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 @@ -198,19 +198,19 @@ public String updateGeolocationVillage(@RequestBody String requestObj) {
public ResponseEntity<String> getOutreachMasterForState(@PathVariable("stateID") Integer stateID) {
logger.info("get Outreach programs for state with Id ..." + stateID);

OutputResponse outputResponse = new OutputResponse();
OutputResponse response = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");

try {
String resList = locationServiceImpl.getOutreachProgramsList(stateID);
outputResponse.setResponse(resList);
response.setResponse(resList);
} catch (Exception e) {
logger.error("Error while fetching outreach list for stateId" + stateID);
response.setError(500, "Unable to fetch outreach list for stateId" + stateID + "Exception - " + e);
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
}
return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(), headers, statusCode);
return new ResponseEntity<>(response.toStringWithSerializeNulls(), headers, statusCode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,11 @@ public class BeneficiaryFlowStatus {
@Column(name = "referred_visit_id")
private Long referred_visit_id;

@Expose
@Column(name = "is_high_risk", insertable = false, updatable = false)
private Boolean is_high_risk;


@Transient
private I_bendemographics i_bendemographics;
@Transient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,14 @@ public interface BeneficiaryFlowStatusRepo extends CrudRepository<BeneficiaryFlo
// public ArrayList<BeneficiaryFlowStatus> 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 ")
public ArrayList<BeneficiaryFlowStatus> getNurseWorklistNew(
@Param("providerServiceMapId") Integer providerServiceMapId, @Param("vanID") Integer vanID,
@Param("fromDate") Timestamp fromDate);
@Query(value = "SELECT t.*, anc.is_high_risk as is_high_risk FROM i_ben_flow_outreach t "
+ "INNER JOIN t_anc_visit anc ON t.beneficiary_id = anc.ben_id "
+ "WHERE (t.nurse_flag = 1 OR t.nurse_flag = 100) "
+ "AND (t.specialist_flag <> 100 OR t.specialist_flag IS NULL) " + "AND t.deleted = false "
+ "AND DATE(t.created_date) >= DATE(:fromDate) " + "AND t.providerServiceMapId = :providerServiceMapId "
+ "AND t.vanID = :vanID " + "ORDER BY t.created_date DESC", nativeQuery = true)
public ArrayList<BeneficiaryFlowStatus> getNurseWorklistNew(@Param("providerServiceMapId") Integer providerServiceMapId,
@Param("vanID") Integer vanID, @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)"
Expand Down
165 changes: 94 additions & 71 deletions src/main/java/com/iemr/hwc/service/choApp/CHOAppSyncServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -604,36 +604,44 @@ public ResponseEntity<String> savePrescriptionTemplatesToServer(List<Prescriptio
return new ResponseEntity<>(outputResponse.toString(),headers,statusCode);
}

@Override
public ResponseEntity<String> savePrescriptionTemplatesToApp(Integer userID, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");

List<PrescriptionTemplates> templateList = prescriptionTemplatesRepo.getPrescriptionTemplatesByUserID(userID);

outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls().create().toJson(templateList));

return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(),headers,statusCode);
}

@Override
public ResponseEntity<String> deletePrescriptionTemplates(Integer userID, Integer tempID) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");

prescriptionTemplatesRepo.deletePrescriptionTemplatesByUserIDAndTempID(userID, tempID);

outputResponse.setResponse("Successfully deleted");

return new ResponseEntity<>(outputResponse.toString(),headers,statusCode);
}

@Override
public ResponseEntity<String> savePrescriptionTemplatesToApp(Integer userID, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");
try {
List<PrescriptionTemplates> templateList = prescriptionTemplatesRepo
.getPrescriptionTemplatesByUserID(userID);
outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls()
.create().toJson(templateList));
} catch (Exception e) {
logger.error("Error while fetching Prescription Templates userID : " + userID);
outputResponse.setError(500, "Unable to fetch Prescription Templates userID" + userID + "Exception - " + e);
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;

}
return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(), headers, statusCode);
}

@Override
public ResponseEntity<String> deletePrescriptionTemplates(Integer userID, Integer tempID) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");
try {
prescriptionTemplatesRepo.deletePrescriptionTemplatesByUserIDAndTempID(userID, tempID);
outputResponse.setResponse("Successfully deleted");
} catch (Exception e) {
logger.error("Error while deleting Prescription Templates userID : " + userID + " tempID : " + tempID);
outputResponse.setError(500, "Unable to delete Prescription Templates userID : " + userID + " tempID "
+ tempID + "Exception - " + e);
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
}
return new ResponseEntity<>(outputResponse.toString(), headers, statusCode);
}

@Override
public ResponseEntity<String> createNewOutreachActivity(OutreachActivity activity, String authorization) {
Expand Down Expand Up @@ -674,45 +682,60 @@ public ResponseEntity<String> createNewOutreachActivity(OutreachActivity activit
return new ResponseEntity<>(outputResponse.toString(),headers,statusCode);
}

@Override
public ResponseEntity<String> getActivitiesByUser(Integer userId, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");

ArrayList<Object[]> activitiesObj = outreachActivityRepo.getActivitiesByUserID(userId);

ArrayList<OutreachActivity> activities = OutreachActivity.getActivitiesForUser(activitiesObj);

outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls().create().toJson(activities));

return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(),headers,statusCode);
}

@Override
public ResponseEntity<String> getActivityById(Integer activityId, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");

OutreachActivity activity = outreachActivityRepo.findById(activityId).get();

if (activity != null && activity.getImg1Data() != null){
String img1 = Base64.getEncoder().encodeToString(activity.getImg1Data());
activity.setImg1(img1);
}

if (activity != null && activity.getImg2Data() != null){
String img2 = Base64.getEncoder().encodeToString(activity.getImg2Data());
activity.setImg2(img2);
}

outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls().create().toJson(activity));

return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(),headers,statusCode);
}
@Override
public ResponseEntity<String> getActivitiesByUser(Integer userId, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");
try {
ArrayList<Object[]> activitiesObj = outreachActivityRepo.getActivitiesByUserID(userId);

ArrayList<OutreachActivity> activities = OutreachActivity.getActivitiesForUser(activitiesObj);

outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls()
.create().toJson(activities));
} catch (Exception e) {
logger.error("Encountered exception while fetching activity userId : " + userId);
outputResponse.setError(500, "Encountered exception while fetching activity. " + e);
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
}
return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(), headers, statusCode);
}

@Override
public ResponseEntity<String> getActivityById(Integer activityId, String authorization) {
OutputResponse outputResponse = new OutputResponse();
HttpStatus statusCode = HttpStatus.OK;

MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Content-Type", "application/json");
try {
Optional<OutreachActivity> activityOptional = outreachActivityRepo.findById(activityId);
if (activityOptional.isPresent()) {
OutreachActivity activity = activityOptional.get();
if (activity.getImg1Data() != null) {
String img1 = Base64.getEncoder().encodeToString(activity.getImg1Data());
activity.setImg1(img1);
}

if (activity.getImg2Data() != null) {
String img2 = Base64.getEncoder().encodeToString(activity.getImg2Data());
activity.setImg2(img2);
}

outputResponse.setResponse(new GsonBuilder().excludeFieldsWithoutExposeAnnotation().serializeNulls()
.create().toJson(activity));
}else {
outputResponse.setError(404, "Activity not found with ID : "+activityId);
statusCode = HttpStatus.NOT_FOUND;
}
} catch (Exception e) {
logger.error("Encountered exception while fetching activity activityId " + activityId);
outputResponse.setError(500, "Encountered exception while fetching activity. " + e);
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
}
return new ResponseEntity<>(outputResponse.toStringWithSerializeNulls(), headers, statusCode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3541,9 +3541,10 @@ public String getNurseWorkListNew(Integer providerServiceMapId, Integer vanID) {
else
cal.add(Calendar.DAY_OF_YEAR, -7);
long sevenDaysAgo = cal.getTimeInMillis();
Timestamp fromDate = new Timestamp(sevenDaysAgo);

ArrayList<BeneficiaryFlowStatus> obj = beneficiaryFlowStatusRepo.getNurseWorklistNew(providerServiceMapId,
vanID, new Timestamp(sevenDaysAgo));
vanID, fromDate);

return new Gson().toJson(obj);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1697,7 +1697,7 @@ public String fetchConfirmedScreeningDisease(Long beneficiaryRegId) throws IEMRE
List<Object[]> resultSet = hypertensionScreeningRepo.fetchConfirmedScreening(beneficiaryRegId);
if (resultSet != null && resultSet.size() > 0) {
for (Object[] obj : resultSet) {
map.put("beneficiaryRegId", obj[0] != null ? ((BigInteger) obj[0]).longValue() : null);
map.put("beneficiaryRegId", obj[0] != null ? ((Long) obj[0]) : null);
if (obj[1] != null && (Boolean) obj[1] == true)
response.add("Diabetes Mellitus");
if (obj[2] != null && (Boolean) obj[2] == true)
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/iemr/hwc/utils/Constants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.iemr.hwc.utils;

public class Constants {
public static final String JWT_TOKEN = "Jwttoken";
public static final String USER_AGENT = "User-Agent";
public static final String OKHTTP = "okhttp";

private Constants() {}
}
65 changes: 30 additions & 35 deletions src/main/java/com/iemr/hwc/utils/JwtUserIdValidationFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.iemr.hwc.utils.http.AuthorizationHeaderRequestWrapper;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
Expand Down Expand Up @@ -74,7 +76,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
}

// Log headers for debugging
String jwtTokenFromHeader = request.getHeader("Jwttoken");
logger.info("JWT token from header: ");

// Skip login and public endpoints
Expand All @@ -88,39 +89,33 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
}

try {
String jwtFromCookie = getJwtTokenFromCookies(request);
String jwtFromHeader = request.getHeader("JwtToken");
String authHeader = request.getHeader("Authorization");

if (jwtFromCookie != null) {
logger.info("Validating JWT token from cookie");
if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}

if (jwtFromHeader != null) {
logger.info("Validating JWT token from header");
if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}
String userAgent = request.getHeader("User-Agent");
logger.info("User-Agent: " + userAgent);

if (userAgent != null && isMobileClient(userAgent) && authHeader != null) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}

logger.warn("No valid authentication token found");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized: Invalid or missing token");

String jwtToken = getJwtTokenFromCookies(request);
String jwtFromHeader = request.getHeader(Constants.JWT_TOKEN);
String authHeader = request.getHeader("Authorization");

if ((jwtToken != null && jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtToken)) ||
(jwtFromHeader != null && jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader))) {
AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper(request, "");
filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse);
return;
} else {
String userAgent = request.getHeader(Constants.USER_AGENT);
logger.info("User-Agent: " + userAgent);
if (userAgent != null && isMobileClient(userAgent) && authHeader != null) {
try {
UserAgentContext.setUserAgent(userAgent);
filterChain.doFilter(servletRequest, servletResponse);
} finally {
UserAgentContext.clear();
}
return;
}
}
logger.warn("No valid authentication token found");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized: Invalid or missing token");
} catch (Exception e) {
logger.error("Authorization error: ", e);
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authorization error: " + e.getMessage());
logger.error("Authorization error: ", e);
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authorization error: " + e.getMessage());
}
}

Expand All @@ -147,14 +142,14 @@ private boolean isMobileClient(String userAgent) {
if (userAgent == null)
return false;
userAgent = userAgent.toLowerCase();
return userAgent.contains("okhttp"); // iOS (custom clients)
return userAgent.contains(Constants.OKHTTP);
}

private String getJwtTokenFromCookies(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("Jwttoken")) {
if (cookie.getName().equalsIgnoreCase(Constants.JWT_TOKEN)) {
return cookie.getValue();
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/iemr/hwc/utils/RestTemplateUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ public static HttpEntity<Object> createRequestEntity(Object body, String authori
headers.add(HttpHeaders.USER_AGENT, UserAgentContext.getUserAgent());
}
headers.add(HttpHeaders.AUTHORIZATION, authorization);
headers.add("JwtToken",requestHeader.getHeader("JwtToken"));
if(null != requestHeader.getHeader(Constants.JWT_TOKEN))
headers.add(Constants.JWT_TOKEN,requestHeader.getHeader(Constants.JWT_TOKEN));
if(null != jwtTokenFromCookie) {
headers.add(HttpHeaders.COOKIE, "Jwttoken=" + jwtTokenFromCookie);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public void postHandle(HttpServletRequest request, HttpServletResponse response,
else
authorization = postAuth;
logger.debug("RequestURI::" + request.getRequestURI() + " || Authorization ::" + authorization);
if (authorization != null) {
if (authorization != null && !authorization.isEmpty()) {
sessionObject.updateSessionObject(authorization, sessionObject.getSessionObject(authorization));
}
} catch (Exception e) {
Expand Down
Loading