use of de.symeda.sormas.api.utils.EpiWeek in project SORMAS-Project by hzi-braunschweig.
the class WeeklyReportFacadeEjb method generateSubmitWeeklyReportTasks.
@RolesAllowed(UserRight._SYSTEM)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void generateSubmitWeeklyReportTasks() {
List<User> informants = userService.getAllByFacilityType(FacilityType.HOSPITAL);
EpiWeek prevEpiWeek = DateHelper.getPreviousEpiWeek(new Date());
for (User user : informants) {
WeeklyReport report = weeklyReportService.getByEpiWeekAndUser(prevEpiWeek, user);
if (report != null) {
// task
continue;
} else {
TaskCriteria pendingUserTaskCriteria = new TaskCriteria().taskType(TaskType.WEEKLY_REPORT_GENERATION).assigneeUser(user.toReference()).taskStatus(TaskStatus.PENDING);
List<Task> existingTasks = taskService.findBy(pendingUserTaskCriteria, true);
if (!existingTasks.isEmpty()) {
// There is already a task for generating the Weekly Report for last week
continue;
}
// Create the task
LocalDateTime fromDateTime = LocalDate.now().atStartOfDay();
LocalDateTime toDateTime = fromDateTime.plusDays(1);
Task task = taskService.buildTask(null);
task.setTaskContext(TaskContext.GENERAL);
task.setTaskType(TaskType.WEEKLY_REPORT_GENERATION);
task.setSuggestedStart(DateHelper8.toDate(fromDateTime));
task.setDueDate(DateHelper8.toDate(toDateTime.minusMinutes(1)));
task.setAssigneeUser(user);
taskService.ensurePersisted(task);
}
}
}
use of de.symeda.sormas.api.utils.EpiWeek in project SORMAS-Project by hzi-braunschweig.
the class WeeklyReportFacadeEjb method getSummariesPerOfficer.
@Override
public List<WeeklyReportOfficerSummaryDto> getSummariesPerOfficer(RegionReferenceDto regionRef, EpiWeek epiWeek) {
WeeklyReportCriteria officerReportCriteria = new WeeklyReportCriteria().epiWeek(epiWeek);
WeeklyReportCriteria informantsReportCriteria = new WeeklyReportCriteria().epiWeek(epiWeek).officerReport(false);
Region region = regionService.getByReferenceDto(regionRef);
Stream<User> officers = userService.getAllByDistrictsAndUserRights(region.getDistricts(), Collections.singletonList(UserRight.WEEKLYREPORT_CREATE)).stream();
officers = weeklyReportService.filterWeeklyReportUsers(userService.getCurrentUser(), officers);
List<WeeklyReportOfficerSummaryDto> summaryDtos = officers.sorted(Comparator.comparing(a -> a.getDistrict().getName())).map(officer -> {
WeeklyReportOfficerSummaryDto summaryDto = new WeeklyReportOfficerSummaryDto();
summaryDto.setOfficer(UserFacadeEjb.toReferenceDto(officer));
summaryDto.setDistrict(DistrictFacadeEjb.toReferenceDto(officer.getDistrict()));
{
officerReportCriteria.reportingUser(new UserReferenceDto(officer.getUuid()));
weeklyReportService.queryByCriteria(officerReportCriteria, null, null, true).stream().findFirst().ifPresent(officerReport -> {
summaryDto.setOfficerReportDate(officerReport.getReportDateTime());
summaryDto.setTotalCaseCount(officerReport.getTotalNumberOfCases());
});
}
{
Long informants = userService.countByAssignedOfficer(officer, UserRight.WEEKLYREPORT_CREATE);
summaryDto.setInformants(informants.intValue());
}
informantsReportCriteria.assignedOfficer(summaryDto.getOfficer());
{
informantsReportCriteria.zeroReport(false);
Long informantCaseReports = weeklyReportService.countByCriteria(informantsReportCriteria, null);
summaryDto.setInformantCaseReports(informantCaseReports.intValue());
}
{
informantsReportCriteria.zeroReport(true);
Long informantZeroReports = weeklyReportService.countByCriteria(informantsReportCriteria, null);
summaryDto.setInformantZeroReports(informantZeroReports.intValue());
}
return summaryDto;
}).collect(Collectors.toList());
return summaryDtos;
}
use of de.symeda.sormas.api.utils.EpiWeek in project SORMAS-Project by hzi-braunschweig.
the class TaskGridFilterForm method onApplyClick.
private void onApplyClick(EpiWeekAndDateFilterComponent<TaskDateType> weekAndDateFilter) {
TaskCriteria criteria = getValue();
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
Date fromDate, toDate;
if (dateFilterOption == DateFilterOption.DATE) {
Date dateFrom = weekAndDateFilter.getDateFromFilter().getValue();
fromDate = dateFrom != null ? DateHelper.getStartOfDay(dateFrom) : null;
Date dateTo = weekAndDateFilter.getDateToFilter().getValue();
toDate = dateFrom != null ? DateHelper.getEndOfDay(dateTo) : null;
} else {
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
}
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
TaskDateType taskDateType = (TaskDateType) weekAndDateFilter.getDateTypeSelector().getValue();
if (taskDateType == TaskDateType.DUE_DATE) {
criteria.dueDateBetween(fromDate, toDate);
criteria.startDateBetween(null, null);
} else {
criteria.startDateBetween(fromDate, toDate);
criteria.dueDateBetween(null, null);
}
criteria.dateFilterOption(dateFilterOption);
} else {
weekAndDateFilter.setNotificationsForMissingFilters();
}
}
use of de.symeda.sormas.api.utils.EpiWeek in project SORMAS-Project by hzi-braunschweig.
the class TravelEntryFilterForm method onApplyClick.
private void onApplyClick(EpiWeekAndDateFilterComponent<?> weekAndDateFilter) {
TravelEntryCriteria criteria = getValue();
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
Date fromDate, toDate;
if (dateFilterOption == DateFilterOption.DATE) {
Date dateFrom = weekAndDateFilter.getDateFromFilter().getValue();
fromDate = dateFrom != null ? DateHelper.getStartOfDay(dateFrom) : null;
Date dateTo = weekAndDateFilter.getDateToFilter().getValue();
toDate = dateTo != null ? DateHelper.getEndOfDay(dateTo) : null;
} else {
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
}
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
criteria.reportDateBetween(fromDate, toDate, dateFilterOption);
} else {
weekAndDateFilter.setNotificationsForMissingFilters();
}
}
use of de.symeda.sormas.api.utils.EpiWeek in project SORMAS-Project by hzi-braunschweig.
the class StatisticsView method fillCaseCriteria.
private void fillCaseCriteria(boolean showCaseIncidence) {
caseCriteria = new StatisticsCaseCriteria();
for (StatisticsFilterComponent filterComponent : filterComponents) {
StatisticsFilterElement filterElement = filterComponent.getFilterElement();
switch(filterComponent.getSelectedAttribute()) {
case SEX:
if (filterElement.getSelectedValues() != null) {
List<Sex> sexes = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
if (tokenizableValue.getValue().equals(I18nProperties.getString(Strings.notSpecified))) {
caseCriteria.sexUnknown(true);
} else {
sexes.add((Sex) tokenizableValue.getValue());
}
}
caseCriteria.sexes(sexes);
}
break;
case DISEASE:
if (filterElement.getSelectedValues() != null) {
List<Disease> diseases = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
diseases.add((Disease) tokenizableValue.getValue());
}
caseCriteria.diseases(diseases);
}
break;
case CLASSIFICATION:
if (filterElement.getSelectedValues() != null) {
List<CaseClassification> classifications = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
classifications.add((CaseClassification) tokenizableValue.getValue());
}
caseCriteria.classifications(classifications);
}
break;
case OUTCOME:
if (filterElement.getSelectedValues() != null) {
List<CaseOutcome> outcomes = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
outcomes.add((CaseOutcome) tokenizableValue.getValue());
}
caseCriteria.outcomes(outcomes);
}
break;
case AGE_INTERVAL_1_YEAR:
case AGE_INTERVAL_5_YEARS:
case AGE_INTERVAL_CHILDREN_COARSE:
case AGE_INTERVAL_CHILDREN_FINE:
case AGE_INTERVAL_CHILDREN_MEDIUM:
case AGE_INTERVAL_BASIC:
if (filterElement.getSelectedValues() != null) {
List<IntegerRange> ageIntervals = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
ageIntervals.add((IntegerRange) tokenizableValue.getValue());
}
caseCriteria.addAgeIntervals(ageIntervals);
// Fill age groups if 5 years interval has been selected and case incidence is shown
if (showCaseIncidence && filterComponent.getSelectedAttribute() == StatisticsCaseAttribute.AGE_INTERVAL_5_YEARS) {
List<AgeGroup> ageGroups = new ArrayList<>();
for (IntegerRange ageInterval : ageIntervals) {
if (ageInterval.getFrom() != null || ageInterval.getTo() != null) {
ageGroups.add(AgeGroup.getAgeGroupFromIntegerRange(ageInterval));
}
}
caseCriteria.addAgeGroups(ageGroups);
}
}
break;
case JURISDICTION:
StatisticsFilterJurisdictionElement jurisdictionElement = (StatisticsFilterJurisdictionElement) filterElement;
if (jurisdictionElement.getSelectedRegions() != null) {
List<RegionReferenceDto> regions = new ArrayList<>();
for (TokenizableValue tokenizableValue : jurisdictionElement.getSelectedRegions()) {
regions.add((RegionReferenceDto) tokenizableValue.getValue());
}
caseCriteria.regions(regions);
}
if (jurisdictionElement.getSelectedDistricts() != null) {
List<DistrictReferenceDto> districts = new ArrayList<>();
for (TokenizableValue tokenizableValue : jurisdictionElement.getSelectedDistricts()) {
districts.add((DistrictReferenceDto) tokenizableValue.getValue());
}
caseCriteria.districts(districts);
}
if (jurisdictionElement.getSelectedCommunities() != null) {
List<CommunityReferenceDto> communities = new ArrayList<>();
for (TokenizableValue tokenizableValue : jurisdictionElement.getSelectedCommunities()) {
communities.add((CommunityReferenceDto) tokenizableValue.getValue());
}
caseCriteria.communities(communities);
}
if (jurisdictionElement.getSelectedHealthFacilities() != null) {
List<FacilityReferenceDto> facilities = new ArrayList<>();
for (TokenizableValue tokenizableValue : jurisdictionElement.getSelectedHealthFacilities()) {
facilities.add((FacilityReferenceDto) tokenizableValue.getValue());
}
caseCriteria.healthFacilities(facilities);
}
break;
case PLACE_OF_RESIDENCE:
StatisticsFilterResidenceElement residenceElement = (StatisticsFilterResidenceElement) filterElement;
if (residenceElement.getSelectedRegions() != null) {
List<RegionReferenceDto> regions = new ArrayList<>();
for (TokenizableValue tokenizableValue : residenceElement.getSelectedRegions()) {
regions.add((RegionReferenceDto) tokenizableValue.getValue());
}
caseCriteria.personRegions(regions);
}
if (residenceElement.getSelectedDistricts() != null) {
List<DistrictReferenceDto> districts = new ArrayList<>();
for (TokenizableValue tokenizableValue : residenceElement.getSelectedDistricts()) {
districts.add((DistrictReferenceDto) tokenizableValue.getValue());
}
caseCriteria.personDistricts(districts);
}
if (residenceElement.getSelectedCommunities() != null) {
List<CommunityReferenceDto> communities = new ArrayList<>();
for (TokenizableValue tokenizableValue : residenceElement.getSelectedCommunities()) {
communities.add((CommunityReferenceDto) tokenizableValue.getValue());
}
caseCriteria.personCommunities(communities);
}
if (residenceElement.getCity() != null) {
caseCriteria.setPersonCity(residenceElement.getCity());
}
if (residenceElement.getPostcode() != null) {
caseCriteria.setPersonPostcode(residenceElement.getPostcode());
}
break;
case REPORTING_USER_ROLE:
if (filterElement.getSelectedValues() != null) {
List<UserRole> reportingUserRoles = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
reportingUserRoles.add((UserRole) tokenizableValue.getValue());
}
caseCriteria.reportingUserRoles(reportingUserRoles);
}
break;
default:
switch(filterComponent.getSelectedSubAttribute()) {
case YEAR:
if (filterElement.getSelectedValues() != null) {
List<Year> years = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
years.add((Year) tokenizableValue.getValue());
}
caseCriteria.years(years, filterComponent.getSelectedAttribute());
}
break;
case QUARTER:
if (filterElement.getSelectedValues() != null) {
List<Quarter> quarters = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
quarters.add((Quarter) tokenizableValue.getValue());
}
caseCriteria.quarters(quarters, filterComponent.getSelectedAttribute());
}
break;
case MONTH:
if (filterElement.getSelectedValues() != null) {
List<Month> months = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
months.add((Month) tokenizableValue.getValue());
}
caseCriteria.months(months, filterComponent.getSelectedAttribute());
}
break;
case EPI_WEEK:
if (filterElement.getSelectedValues() != null) {
List<EpiWeek> epiWeeks = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
epiWeeks.add((EpiWeek) tokenizableValue.getValue());
}
caseCriteria.epiWeeks(epiWeeks, filterComponent.getSelectedAttribute());
}
break;
case QUARTER_OF_YEAR:
if (filterElement.getSelectedValues() != null) {
List<QuarterOfYear> quartersOfYear = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
quartersOfYear.add((QuarterOfYear) tokenizableValue.getValue());
}
caseCriteria.quartersOfYear(quartersOfYear, filterComponent.getSelectedAttribute());
}
break;
case MONTH_OF_YEAR:
if (filterElement.getSelectedValues() != null) {
List<MonthOfYear> monthsOfYear = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
monthsOfYear.add((MonthOfYear) tokenizableValue.getValue());
}
caseCriteria.monthsOfYear(monthsOfYear, filterComponent.getSelectedAttribute());
}
break;
case EPI_WEEK_OF_YEAR:
if (filterElement.getSelectedValues() != null) {
List<EpiWeek> epiWeeksOfYear = new ArrayList<>();
for (TokenizableValue tokenizableValue : filterElement.getSelectedValues()) {
epiWeeksOfYear.add((EpiWeek) tokenizableValue.getValue());
}
caseCriteria.epiWeeksOfYear(epiWeeksOfYear, filterComponent.getSelectedAttribute());
}
break;
case DATE_RANGE:
caseCriteria.dateRange((Date) filterElement.getSelectedValues().get(0).getValue(), (Date) filterElement.getSelectedValues().get(1).getValue(), filterComponent.getSelectedAttribute());
break;
default:
throw new IllegalArgumentException(filterComponent.getSelectedSubAttribute().toString());
}
}
}
}
Aggregations