diff --git a/frontend/src/components/layout/Header.js b/frontend/src/components/layout/Header.js index 7638536d25..b1692ad196 100644 --- a/frontend/src/components/layout/Header.js +++ b/frontend/src/components/layout/Header.js @@ -476,15 +476,15 @@ function OEHeader(props) { position: "absolute", top: "-5px", right: "-5px", - backgroundColor: "#3A6B8D", + backgroundColor: "red", color: "white", borderRadius: "50%", - width: "16px", - height: "16px", + width: "22px", + height: "22px", display: "flex", alignItems: "center", justifyContent: "center", - fontSize: "10px", + fontSize: "12px", animation: "pulse 5s infinite", opacity: 1, transition: diff --git a/frontend/src/components/notifications/SlideOver.jsx b/frontend/src/components/notifications/SlideOver.jsx index ba1b4c8005..fb1390cbfd 100644 --- a/frontend/src/components/notifications/SlideOver.jsx +++ b/frontend/src/components/notifications/SlideOver.jsx @@ -87,7 +87,7 @@ const SlideOver = ({ onCloseClick && onCloseClick(); }} > - ← + →
{title}
diff --git a/src/main/java/org/openelisglobal/dataexchange/order/action/DBOrderPersister.java b/src/main/java/org/openelisglobal/dataexchange/order/action/DBOrderPersister.java index 5ca3dcb303..fa9c80b700 100644 --- a/src/main/java/org/openelisglobal/dataexchange/order/action/DBOrderPersister.java +++ b/src/main/java/org/openelisglobal/dataexchange/order/action/DBOrderPersister.java @@ -13,6 +13,7 @@ */ package org.openelisglobal.dataexchange.order.action; +import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -22,12 +23,16 @@ import org.openelisglobal.address.service.PersonAddressService; import org.openelisglobal.address.valueholder.AddressPart; import org.openelisglobal.address.valueholder.PersonAddress; +import org.openelisglobal.common.constants.Constants; import org.openelisglobal.common.log.LogEvent; import org.openelisglobal.common.services.IStatusService; import org.openelisglobal.common.services.StatusService.ExternalOrderStatus; import org.openelisglobal.common.util.StringUtil; import org.openelisglobal.dataexchange.order.valueholder.ElectronicOrder; import org.openelisglobal.dataexchange.service.order.ElectronicOrderService; +import org.openelisglobal.internationalization.MessageUtil; +import org.openelisglobal.notifications.dao.NotificationDAO; +import org.openelisglobal.notifications.entity.Notification; import org.openelisglobal.patient.service.PatientContactService; import org.openelisglobal.patient.service.PatientService; import org.openelisglobal.patient.valueholder.Patient; @@ -38,9 +43,11 @@ import org.openelisglobal.patientidentitytype.valueholder.PatientIdentityType; import org.openelisglobal.person.service.PersonService; import org.openelisglobal.person.valueholder.Person; +import org.openelisglobal.sample.valueholder.OrderPriority; import org.openelisglobal.spring.util.SpringContext; import org.openelisglobal.systemuser.service.SystemUserService; import org.openelisglobal.systemuser.valueholder.SystemUser; +import org.openelisglobal.userrole.service.UserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; @@ -75,6 +82,10 @@ public class DBOrderPersister implements IOrderPersister { private PersonAddressService personAddressService; @Autowired private AddressPartService addressPartService; + @Autowired + private NotificationDAO notificationDAO; + @Autowired + private UserRoleService userRoleService; private Patient patient; @@ -359,6 +370,22 @@ public void persist(MessagePatient orderPatient, ElectronicOrder eOrder) { persist(orderPatient); eOrder.setPatient(patient); eOrderService.insert(eOrder); + if (eOrder.getPriority().equals(OrderPriority.STAT)) { + String message = MessageUtil.getMessage("notification.eorder.stat", eOrder.getExternalId()); + List systemUserIds = userRoleService.getUserIdsForRole(Constants.ROLE_RECEPTION); + for (String userId : systemUserIds) { + try { + Notification notification = new Notification(); + notification.setMessage(message); + notification.setUser(systemUserService.getUserById(userId)); + notification.setCreatedDate(OffsetDateTime.now()); + notification.setReadAt(null); + notificationDAO.save(notification); + + } catch (Exception e) { + } + } + } } catch (RuntimeException e) { LogEvent.logError(e); throw e; diff --git a/src/main/java/org/openelisglobal/result/controller/LogbookResultsController.java b/src/main/java/org/openelisglobal/result/controller/LogbookResultsController.java index 2b1d50e1b3..5d79d95e35 100644 --- a/src/main/java/org/openelisglobal/result/controller/LogbookResultsController.java +++ b/src/main/java/org/openelisglobal/result/controller/LogbookResultsController.java @@ -2,6 +2,7 @@ import java.lang.reflect.InvocationTargetException; import java.sql.Timestamp; +import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -25,6 +26,7 @@ import org.openelisglobal.common.formfields.FormFields; import org.openelisglobal.common.formfields.FormFields.Field; import org.openelisglobal.common.log.LogEvent; +import org.openelisglobal.common.provider.validation.AlphanumAccessionValidator; import org.openelisglobal.common.services.DisplayListService; import org.openelisglobal.common.services.DisplayListService.ListType; import org.openelisglobal.common.services.IStatusService; @@ -50,6 +52,8 @@ import org.openelisglobal.note.service.NoteService; import org.openelisglobal.note.service.NoteServiceImpl.NoteType; import org.openelisglobal.note.valueholder.Note; +import org.openelisglobal.notifications.dao.NotificationDAO; +import org.openelisglobal.notifications.entity.Notification; import org.openelisglobal.organization.service.OrganizationService; import org.openelisglobal.patient.valueholder.Patient; import org.openelisglobal.referral.action.beanitems.ReferralItem; @@ -76,14 +80,17 @@ import org.openelisglobal.resultlimits.valueholder.ResultLimit; import org.openelisglobal.role.service.RoleService; import org.openelisglobal.sample.service.SampleService; +import org.openelisglobal.sample.valueholder.OrderPriority; import org.openelisglobal.sample.valueholder.Sample; import org.openelisglobal.spring.util.SpringContext; import org.openelisglobal.statusofsample.util.StatusRules; +import org.openelisglobal.systemuser.service.SystemUserService; import org.openelisglobal.systemuser.service.UserService; import org.openelisglobal.test.beanItems.TestResultItem; import org.openelisglobal.test.service.TestSectionService; import org.openelisglobal.test.valueholder.TestSection; import org.openelisglobal.typeoftestresult.service.TypeOfTestResultServiceImpl; +import org.openelisglobal.userrole.service.UserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; @@ -145,6 +152,12 @@ public class LogbookResultsController extends LogbookResultsBaseController { private RoleService roleService; @Autowired private MethodService methodService; + @Autowired + private NotificationDAO notificationDAO; + @Autowired + private SystemUserService systemUserService; + @Autowired + private UserRoleService userRoleService; private final String RESULT_SUBJECT = "Result Note"; private final String REFERRAL_CONFORMATION_ID; @@ -410,6 +423,36 @@ public ModelAndView showLogbookResultsUpdate(HttpServletRequest request, } catch (FhirTransformationException | FhirPersistanceException e) { LogEvent.logError(e); } + List newResultAnalyses = actionDataSet.getNewResults().stream().map(a -> a.result.getAnalysis()) + .collect(Collectors.toList()); + List systemUserIds = userRoleService.getUserIdsForRole(Constants.ROLE_VALIDATION); + String message = MessageUtil.getMessage("notification.result.stat"); + StringBuffer sb = new StringBuffer(message); + for (String userId : systemUserIds) { + List userAnalyses = userService + .filterAnalysesByLabUnitRoles(userId, newResultAnalyses, Constants.ROLE_VALIDATION).stream() + .filter(a -> a.getSampleItem().getSample().getPriority().equals(OrderPriority.STAT)) + .collect(Collectors.toList()); + + if (userAnalyses != null && !userAnalyses.isEmpty()) { + List userTests = userAnalyses.stream() + .map(a -> AlphanumAccessionValidator + .convertAlphaNumLabNumForDisplay(a.getSampleItem().getSample().getAccessionNumber()) + + " - " + a.getTest().getLocalizedName()) + .collect(Collectors.toList()); + String testString = String.join(", ", userTests); + sb.append(testString); + try { + Notification notification = new Notification(); + notification.setMessage(sb.toString()); + notification.setUser(systemUserService.getUserById(userId)); + notification.setCreatedDate(OffsetDateTime.now()); + notification.setReadAt(null); + notificationDAO.save(notification); + } catch (Exception e) { + } + } + } } catch (LIMSRuntimeException e) { String errorMsg; if (e.getCause() instanceof StaleObjectStateException) { diff --git a/src/main/java/org/openelisglobal/result/controller/rest/LogbookResultsRestController.java b/src/main/java/org/openelisglobal/result/controller/rest/LogbookResultsRestController.java index 115fc39f43..70af67c6da 100644 --- a/src/main/java/org/openelisglobal/result/controller/rest/LogbookResultsRestController.java +++ b/src/main/java/org/openelisglobal/result/controller/rest/LogbookResultsRestController.java @@ -2,6 +2,7 @@ import java.lang.reflect.InvocationTargetException; import java.sql.Timestamp; +import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -26,6 +27,7 @@ import org.openelisglobal.common.formfields.FormFields; import org.openelisglobal.common.formfields.FormFields.Field; import org.openelisglobal.common.log.LogEvent; +import org.openelisglobal.common.provider.validation.AlphanumAccessionValidator; import org.openelisglobal.common.services.DisplayListService; import org.openelisglobal.common.services.DisplayListService.ListType; import org.openelisglobal.common.services.IStatusService; @@ -51,6 +53,8 @@ import org.openelisglobal.note.service.NoteService; import org.openelisglobal.note.service.NoteServiceImpl.NoteType; import org.openelisglobal.note.valueholder.Note; +import org.openelisglobal.notifications.dao.NotificationDAO; +import org.openelisglobal.notifications.entity.Notification; import org.openelisglobal.organization.service.OrganizationService; import org.openelisglobal.patient.service.PatientService; import org.openelisglobal.patient.valueholder.Patient; @@ -80,12 +84,14 @@ import org.openelisglobal.resultlimits.valueholder.ResultLimit; import org.openelisglobal.role.service.RoleService; import org.openelisglobal.sample.service.SampleService; +import org.openelisglobal.sample.valueholder.OrderPriority; import org.openelisglobal.sample.valueholder.Sample; import org.openelisglobal.samplehuman.service.SampleHumanService; import org.openelisglobal.sampleitem.service.SampleItemService; import org.openelisglobal.search.service.SearchResultsService; import org.openelisglobal.spring.util.SpringContext; import org.openelisglobal.statusofsample.util.StatusRules; +import org.openelisglobal.systemuser.service.SystemUserService; import org.openelisglobal.systemuser.service.UserService; import org.openelisglobal.test.beanItems.TestResultItem; import org.openelisglobal.test.service.TestSectionService; @@ -171,6 +177,10 @@ public class LogbookResultsRestController extends LogbookResultsBaseController { private SampleHumanService sampleHumanService; @Autowired private MethodService methodService; + @Autowired + private NotificationDAO notificationDAO; + @Autowired + private SystemUserService systemUserService; private final String RESULT_SUBJECT = "Result Note"; private final String REFERRAL_CONFORMATION_ID; @@ -475,6 +485,36 @@ public Map> showReactLogbookResultsUpdate(HttpServletReques } catch (FhirTransformationException | FhirPersistanceException e) { LogEvent.logError(e); } + List newResultAnalyses = actionDataSet.getNewResults().stream().map(a -> a.result.getAnalysis()) + .collect(Collectors.toList()); + List systemUserIds = userRoleService.getUserIdsForRole(Constants.ROLE_VALIDATION); + String message = MessageUtil.getMessage("notification.result.stat"); + StringBuffer sb = new StringBuffer(message); + for (String userId : systemUserIds) { + List userAnalyses = userService + .filterAnalysesByLabUnitRoles(userId, newResultAnalyses, Constants.ROLE_VALIDATION).stream() + .filter(a -> a.getSampleItem().getSample().getPriority().equals(OrderPriority.STAT)) + .collect(Collectors.toList()); + + if (userAnalyses != null && !userAnalyses.isEmpty()) { + List userTests = userAnalyses.stream() + .map(a -> AlphanumAccessionValidator + .convertAlphaNumLabNumForDisplay(a.getSampleItem().getSample().getAccessionNumber()) + + " - " + a.getTest().getLocalizedName()) + .collect(Collectors.toList()); + String testString = String.join(", ", userTests); + sb.append(testString); + try { + Notification notification = new Notification(); + notification.setMessage(sb.toString()); + notification.setUser(systemUserService.getUserById(userId)); + notification.setCreatedDate(OffsetDateTime.now()); + notification.setReadAt(null); + notificationDAO.save(notification); + } catch (Exception e) { + } + } + } } catch (LIMSRuntimeException e) { String errorMsg; if (e.getCause() instanceof StaleObjectStateException) { diff --git a/src/main/java/org/openelisglobal/sample/controller/SamplePatientEntryController.java b/src/main/java/org/openelisglobal/sample/controller/SamplePatientEntryController.java index 08c68a37ad..440d260e1d 100644 --- a/src/main/java/org/openelisglobal/sample/controller/SamplePatientEntryController.java +++ b/src/main/java/org/openelisglobal/sample/controller/SamplePatientEntryController.java @@ -1,8 +1,11 @@ package org.openelisglobal.sample.controller; import java.lang.reflect.InvocationTargetException; +import java.time.OffsetDateTime; +import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.Pattern; import org.apache.commons.lang3.StringUtils; @@ -11,10 +14,12 @@ import org.hl7.fhir.r4.model.Enumerations.ResourceType; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.Task; +import org.openelisglobal.analysis.valueholder.Analysis; import org.openelisglobal.common.constants.Constants; import org.openelisglobal.common.exception.LIMSRuntimeException; import org.openelisglobal.common.formfields.FormFields; import org.openelisglobal.common.log.LogEvent; +import org.openelisglobal.common.provider.validation.AlphanumAccessionValidator; import org.openelisglobal.common.services.DisplayListService; import org.openelisglobal.common.services.DisplayListService.ListType; import org.openelisglobal.common.services.SampleOrderService; @@ -28,6 +33,9 @@ import org.openelisglobal.dataexchange.fhir.service.FhirTransformService; import org.openelisglobal.dataexchange.order.valueholder.ElectronicOrder; import org.openelisglobal.dataexchange.service.order.ElectronicOrderService; +import org.openelisglobal.internationalization.MessageUtil; +import org.openelisglobal.notifications.dao.NotificationDAO; +import org.openelisglobal.notifications.entity.Notification; import org.openelisglobal.organization.service.OrganizationService; import org.openelisglobal.organization.valueholder.Organization; import org.openelisglobal.patient.action.IPatientUpdate; @@ -41,11 +49,15 @@ import org.openelisglobal.sample.form.SamplePatientEntryForm; import org.openelisglobal.sample.service.PatientManagementUpdate; import org.openelisglobal.sample.service.SamplePatientEntryService; +import org.openelisglobal.sample.service.SampleService; import org.openelisglobal.sample.validator.SamplePatientEntryFormValidator; +import org.openelisglobal.sample.valueholder.OrderPriority; import org.openelisglobal.sample.valueholder.SampleAdditionalField; import org.openelisglobal.sample.valueholder.SampleAdditionalField.AdditionalFieldName; import org.openelisglobal.spring.util.SpringContext; +import org.openelisglobal.systemuser.service.SystemUserService; import org.openelisglobal.systemuser.service.UserService; +import org.openelisglobal.userrole.service.UserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; @@ -144,6 +156,14 @@ public class SamplePatientEntryController extends BaseSampleEntryController { private ElectronicOrderService electronicOrderService; @Autowired private OrganizationService organizationService; + @Autowired + private NotificationDAO notificationDAO; + @Autowired + private UserRoleService userRoleService; + @Autowired + private SystemUserService systemUserService; + @Autowired + private SampleService sampleService; @Autowired private FhirUtil fhirUtil; @@ -260,6 +280,34 @@ private void setupReferralOption(SamplePatientEntryForm form) { LogEvent.logError(e); } + if (sampleOrder.getPriority().equals(OrderPriority.STAT)) { + List systemUserIds = userRoleService.getUserIdsForRole(Constants.ROLE_RESULTS); + List analyses = sampleService + .getAnalysis(sampleService.getSampleByAccessionNumber(sampleOrder.getLabNo())); + String message = MessageUtil.getMessage("notification.order.stat", + AlphanumAccessionValidator.convertAlphaNumLabNumForDisplay(sampleOrder.getLabNo())); + StringBuffer sb = new StringBuffer(message); + for (String userId : systemUserIds) { + List userAnalyses = userService.filterAnalysesByLabUnitRoles(userId, analyses, + Constants.ROLE_RESULTS); + if (userAnalyses != null && !userAnalyses.isEmpty()) { + List tests = userAnalyses.stream().map(a -> a.getTest().getLocalizedName()) + .collect(Collectors.toList()); + String testString = String.join(", ", tests); + sb.append(testString); + try { + Notification notification = new Notification(); + notification.setMessage(sb.toString()); + notification.setUser(systemUserService.getUserById(userId)); + notification.setCreatedDate(OffsetDateTime.now()); + notification.setReadAt(null); + notificationDAO.save(notification); + } catch (Exception e) { + } + } + } + } + // String fhir_json = fhirTransformService.CreateFhirFromOESample(updateData, // patientUpdate, patientInfo, form, request); } catch (LIMSRuntimeException e) { diff --git a/src/main/java/org/openelisglobal/sample/controller/rest/SamplePatientEntryRestController.java b/src/main/java/org/openelisglobal/sample/controller/rest/SamplePatientEntryRestController.java index 0f89fda2aa..99fabd49d6 100644 --- a/src/main/java/org/openelisglobal/sample/controller/rest/SamplePatientEntryRestController.java +++ b/src/main/java/org/openelisglobal/sample/controller/rest/SamplePatientEntryRestController.java @@ -1,8 +1,11 @@ package org.openelisglobal.sample.controller.rest; import java.lang.reflect.InvocationTargetException; +import java.time.OffsetDateTime; +import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.Pattern; import org.apache.commons.lang3.StringUtils; @@ -11,10 +14,12 @@ import org.hl7.fhir.r4.model.Enumerations.ResourceType; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.Task; +import org.openelisglobal.analysis.valueholder.Analysis; import org.openelisglobal.common.constants.Constants; import org.openelisglobal.common.exception.LIMSRuntimeException; import org.openelisglobal.common.formfields.FormFields; import org.openelisglobal.common.log.LogEvent; +import org.openelisglobal.common.provider.validation.AlphanumAccessionValidator; import org.openelisglobal.common.services.DisplayListService; import org.openelisglobal.common.services.DisplayListService.ListType; import org.openelisglobal.common.services.SampleOrderService; @@ -28,6 +33,9 @@ import org.openelisglobal.dataexchange.fhir.service.FhirTransformService; import org.openelisglobal.dataexchange.order.valueholder.ElectronicOrder; import org.openelisglobal.dataexchange.service.order.ElectronicOrderService; +import org.openelisglobal.internationalization.MessageUtil; +import org.openelisglobal.notifications.dao.NotificationDAO; +import org.openelisglobal.notifications.entity.Notification; import org.openelisglobal.organization.service.OrganizationService; import org.openelisglobal.organization.valueholder.Organization; import org.openelisglobal.patient.action.IPatientUpdate; @@ -42,11 +50,15 @@ import org.openelisglobal.sample.form.SamplePatientEntryForm; import org.openelisglobal.sample.service.PatientManagementUpdate; import org.openelisglobal.sample.service.SamplePatientEntryService; +import org.openelisglobal.sample.service.SampleService; import org.openelisglobal.sample.validator.SamplePatientEntryFormValidator; +import org.openelisglobal.sample.valueholder.OrderPriority; import org.openelisglobal.sample.valueholder.SampleAdditionalField; import org.openelisglobal.sample.valueholder.SampleAdditionalField.AdditionalFieldName; import org.openelisglobal.spring.util.SpringContext; +import org.openelisglobal.systemuser.service.SystemUserService; import org.openelisglobal.systemuser.service.UserService; +import org.openelisglobal.userrole.service.UserRoleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; @@ -151,6 +163,14 @@ public class SamplePatientEntryRestController extends BaseSampleEntryController @Autowired private FhirUtil fhirUtil; + @Autowired + private NotificationDAO notificationDAO; + @Autowired + private UserRoleService userRoleService; + @Autowired + private SystemUserService systemUserService; + @Autowired + private SampleService sampleService; @InitBinder public void initBinder(WebDataBinder binder) { @@ -265,6 +285,34 @@ public SamplePatientEntryForm samplePatientEntrySave(HttpServletRequest request, LogEvent.logError(e); } + if (sampleOrder.getPriority().equals(OrderPriority.STAT)) { + List systemUserIds = userRoleService.getUserIdsForRole(Constants.ROLE_RESULTS); + List analyses = sampleService + .getAnalysis(sampleService.getSampleByAccessionNumber(sampleOrder.getLabNo())); + String message = MessageUtil.getMessage("notification.order.stat", + AlphanumAccessionValidator.convertAlphaNumLabNumForDisplay(sampleOrder.getLabNo())); + StringBuffer sb = new StringBuffer(message); + for (String userId : systemUserIds) { + List userAnalyses = userService.filterAnalysesByLabUnitRoles(userId, analyses, + Constants.ROLE_RESULTS); + if (userAnalyses != null && !userAnalyses.isEmpty()) { + List tests = userAnalyses.stream().map(a -> a.getTest().getLocalizedName()) + .collect(Collectors.toList()); + String testString = String.join(", ", tests); + sb.append(testString); + try { + Notification notification = new Notification(); + notification.setMessage(sb.toString()); + notification.setUser(systemUserService.getUserById(userId)); + notification.setCreatedDate(OffsetDateTime.now()); + notification.setReadAt(null); + notificationDAO.save(notification); + } catch (Exception e) { + } + } + } + } + // String fhir_json = fhirTransformService.CreateFhirFromOESample(updateData, // patientUpdate, patientInfo, form, request); } catch (LIMSRuntimeException e) { diff --git a/src/main/java/org/openelisglobal/systemuser/service/UserService.java b/src/main/java/org/openelisglobal/systemuser/service/UserService.java index 62b8ccc627..9e9f9f1b18 100644 --- a/src/main/java/org/openelisglobal/systemuser/service/UserService.java +++ b/src/main/java/org/openelisglobal/systemuser/service/UserService.java @@ -23,7 +23,7 @@ void saveUserLabUnitRoles(SystemUser systemUser, Map> select List getAllUserLabUnitRoles(); - List getUserTestSections(String systemUserId, String userRole); + List getUserTestSections(String systemUserId, String roleId); List getUserSampleTypes(String systemUserId, String userRole); diff --git a/src/main/java/org/openelisglobal/userrole/dao/UserRoleDAO.java b/src/main/java/org/openelisglobal/userrole/dao/UserRoleDAO.java index 88a22eaef2..ef83769e11 100644 --- a/src/main/java/org/openelisglobal/userrole/dao/UserRoleDAO.java +++ b/src/main/java/org/openelisglobal/userrole/dao/UserRoleDAO.java @@ -32,4 +32,6 @@ public interface UserRoleDAO extends BaseDAO { List getRoleIdsForUser(String userId) throws LIMSRuntimeException; void deleteLabUnitRoleMap(LabUnitRoleMap roleMap); + + List getUserIdsForRole(String roleName); } diff --git a/src/main/java/org/openelisglobal/userrole/daoimpl/UserRoleDAOImpl.java b/src/main/java/org/openelisglobal/userrole/daoimpl/UserRoleDAOImpl.java index 10c1252659..9eca84faba 100644 --- a/src/main/java/org/openelisglobal/userrole/daoimpl/UserRoleDAOImpl.java +++ b/src/main/java/org/openelisglobal/userrole/daoimpl/UserRoleDAOImpl.java @@ -16,6 +16,7 @@ package org.openelisglobal.userrole.daoimpl; import java.math.BigInteger; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.hibernate.HibernateException; @@ -108,4 +109,20 @@ public void deleteLabUnitRoleMap(LabUnitRoleMap roleMap) { throw new LIMSRuntimeException("Error in UserRoleDAOImpl userInRole()", e); } } + + @Override + public List getUserIdsForRole(String roleName) { + List userIds = new ArrayList<>(); + try { + String sql = "select cast(system_user_id AS varchar) from system_user_role sur join system_role as sr on sr.id = sur.role_id where sr.name = :roleName"; + NativeQuery query = entityManager.unwrap(Session.class).createNativeQuery(sql); + query.setParameter("roleName", roleName); + + userIds = query.list(); + } catch (HibernateException e) { + LogEvent.logError(e); + throw new LIMSRuntimeException("Error in UserRoleDAOImpl userInRole()", e); + } + return userIds; + } } diff --git a/src/main/java/org/openelisglobal/userrole/service/UserRoleService.java b/src/main/java/org/openelisglobal/userrole/service/UserRoleService.java index d4beaa5006..9c41021279 100644 --- a/src/main/java/org/openelisglobal/userrole/service/UserRoleService.java +++ b/src/main/java/org/openelisglobal/userrole/service/UserRoleService.java @@ -23,4 +23,6 @@ public interface UserRoleService extends BaseObjectService void deleteLabUnitRoleMap(LabUnitRoleMap roleMap); List getAllUserLabUnitRoles(); + + List getUserIdsForRole(String roleName); } diff --git a/src/main/java/org/openelisglobal/userrole/service/UserRoleServiceImpl.java b/src/main/java/org/openelisglobal/userrole/service/UserRoleServiceImpl.java index b08d2f38ea..e43ab4214c 100644 --- a/src/main/java/org/openelisglobal/userrole/service/UserRoleServiceImpl.java +++ b/src/main/java/org/openelisglobal/userrole/service/UserRoleServiceImpl.java @@ -72,4 +72,9 @@ public void deleteLabUnitRoleMap(LabUnitRoleMap roleMap) { public List getAllUserLabUnitRoles() { return userLabUnitRolesDAO.getAll(); } + + @Override + public List getUserIdsForRole(String roleName) { + return baseObjectDAO.getUserIdsForRole(roleName); + } } diff --git a/src/main/resources/languages/message_en.properties b/src/main/resources/languages/message_en.properties index 88b329f39e..b117b86101 100644 --- a/src/main/resources/languages/message_en.properties +++ b/src/main/resources/languages/message_en.properties @@ -3689,6 +3689,10 @@ note.type.internal = Internal note.type.nonConformity = Non Conformity note.type.rejectReason = Reject reason +notification.order.stat = STAT priority Order with Lab Number {0} has been Created for Tests : +notification.result.stat = STAT priority Test Results have been created for Tests : +notification.eorder.stat = Incoming Order with ExternalId {0} has STAT priority + occupation.add.title = Add Occupation #--Occupation occupation.browse.title = Occupation diff --git a/src/main/resources/languages/message_fr.properties b/src/main/resources/languages/message_fr.properties index b7783e76b1..88d5ab81d2 100644 --- a/src/main/resources/languages/message_fr.properties +++ b/src/main/resources/languages/message_fr.properties @@ -4273,6 +4273,10 @@ note.type.internal = Interne note.type.nonConformity = Non Conformity note.type.rejectReason = Raison de rejet +notification.order.stat = Une commande STAT prioritaire avec le numéro de laboratoire {0} a été créée pour les tests : +notification.result.stat = Les résultats des tests prioritaires STAT ont été créés pour les tests : +notification.result.stat = Une commande entrante avec l'ID externe {0} a une priorité STAT + occupation.add.title = Ajouter Profession occupation.edit.title = \u00C9diter Profession