diff --git a/pom.xml b/pom.xml index cb73b163..bf879145 100644 --- a/pom.xml +++ b/pom.xml @@ -63,12 +63,17 @@ org.springframework.boot spring-boot-starter - + + + + org.slf4j + slf4j-api + ${slf4j.version} co.elastic.logging diff --git a/src/main/java/com/iemr/tm/controller/common/main/WorklistController.java b/src/main/java/com/iemr/tm/controller/common/main/WorklistController.java index ad2c84c7..ecf8aa2a 100644 --- a/src/main/java/com/iemr/tm/controller/common/main/WorklistController.java +++ b/src/main/java/com/iemr/tm/controller/common/main/WorklistController.java @@ -806,7 +806,6 @@ public String getTCSpecialistWorklistFutureScheduled( // openkm file download @Operation(summary = "Add file as string to openKM") @PostMapping(value = "/getKMFile", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON, headers = "Authorization") - @PreAuthorize("hasRole('NURSE') || hasRole('DOCTOR') ") public String getKMFile(@Param(value = "{}") @RequestBody String request, @RequestHeader(value = "Authorization") String Authorization) { OutputResponse response = new OutputResponse(); @@ -819,6 +818,7 @@ public String getKMFile(@Param(value = "{}") @RequestBody String request, } } catch (Exception e) { logger.error("Error while getting file download url : " + e); + response.setError(5000, "Error while getting file download url"); } return response.toString(); } diff --git a/src/main/java/com/iemr/tm/controller/common/master/CommonMasterController.java b/src/main/java/com/iemr/tm/controller/common/master/CommonMasterController.java index 38fe2b1f..f79d4a75 100644 --- a/src/main/java/com/iemr/tm/controller/common/master/CommonMasterController.java +++ b/src/main/java/com/iemr/tm/controller/common/master/CommonMasterController.java @@ -41,7 +41,7 @@ @RestController @RequestMapping(value = "/master", headers = "Authorization", produces = "application/json") /** Objective: provides master data based on given visitCategory */ -@PreAuthorize("hasRole('NURSE') || hasRole('DOCTOR') ") +@PreAuthorize("hasRole('NURSE') || hasRole('DOCTOR') || hasRole('LABTECHNICIAN') || hasRole('LAB_TECHNICIAN')") public class CommonMasterController { private Logger logger = LoggerFactory.getLogger(CommonMasterController.class); diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java index 8f56cc7a..2468f356 100644 --- a/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java @@ -68,6 +68,8 @@ import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.exception.IEMRException; import com.iemr.tm.utils.mapper.InputMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import jakarta.servlet.http.HttpServletRequest; @@ -75,6 +77,8 @@ @PropertySource("classpath:application.properties") public class CommonServiceImpl implements CommonService { + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + @Value("${openkmDocUrl}") private String openkmDocUrl; @@ -559,6 +563,9 @@ public String getOpenKMDocURL(String requestOBJ, String Authorization) throws JS if (obj.has("fileID")) { fileUUID = benVisitDetailRepo.getFileUUID(obj.getInt("fileID")); + logger.info("fileUUID for fileID " + obj.getInt("fileID") + " is " + fileUUID); + logger.info("openkmDocUrl is " + openkmDocUrl); + if (fileUUID != null) { Map requestBody = new HashMap<>(); requestBody.put("fileUID", fileUUID); @@ -566,7 +573,26 @@ public String getOpenKMDocURL(String requestOBJ, String Authorization) throws JS HttpEntity request = RestTemplateUtil.createRequestEntity(requestBody, Authorization); ResponseEntity response = restTemplate.exchange(openkmDocUrl, HttpMethod.POST, request, String.class); - return response.getBody(); + logger.info("Response=" + response.getBody()); + + String responseBody = response.getBody(); + if (responseBody != null) { + JSONObject responseObj = new JSONObject(responseBody); + if (responseObj.has("data")) { + Object dataVal = responseObj.get("data"); + if (dataVal instanceof JSONObject) { + JSONObject dataObj = (JSONObject) dataVal; + if (dataObj.has("response")) { + String fileUrl = dataObj.getString("response"); + // Fix malformed URL: https://user:pass@https://host -> https://user:pass@host + fileUrl = fileUrl.replaceAll("@https?://", "@"); + return fileUrl; + } + } + return dataVal.toString(); + } + } + return responseBody; } else return null; } else