List of usage examples for org.joda.time DateTime minusHours
public DateTime minusHours(int hours)
From source file:com.marand.thinkmed.medications.business.impl.DefaultMedicationsBo.java
License:Open Source License
@Override public List<TherapySurgeryReportElementDto> getTherapySurgeryReportElements(@Nonnull final String patientId, final Double patientHeight, @Nonnull final DateTime searchStart, @Nonnull final RoundsIntervalDto roundsIntervalDto, @Nonnull final Locale locale, @Nonnull final DateTime when) { Preconditions.checkNotNull(patientId, "patientId"); Preconditions.checkNotNull(searchStart, "searchStart"); Preconditions.checkNotNull(roundsIntervalDto, "roundsIntervalDto"); Preconditions.checkNotNull(locale, "locale"); Preconditions.checkNotNull(when, "when"); final DateTime roundsStart = new DateTime(searchStart.getYear(), searchStart.getMonthOfYear(), searchStart.getDayOfMonth(), roundsIntervalDto.getStartHour(), roundsIntervalDto.getStartMinute()); final List<Pair<MedicationOrderComposition, MedicationInstructionInstruction>> instructionsList = medicationsOpenEhrDao .findMedicationInstructions(patientId, Intervals.infiniteFrom(roundsStart), null); final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId, Intervals.infiniteTo(searchStart)); final List<TherapySurgeryReportElementDto> elements = new ArrayList<>(); final Map<Long, MedicationDataForTherapyDto> medicationsMap = getMedicationDataForTherapies( instructionsList, null);/* w w w . j a va 2 s . c om*/ for (final Pair<MedicationOrderComposition, MedicationInstructionInstruction> instructionPair : instructionsList) { final MedicationOrderComposition composition = instructionPair.getFirst(); final MedicationInstructionInstruction instruction = instructionPair.getSecond(); final MedicationTimingCluster medicationTiming = instruction.getOrder().get(0).getMedicationTiming(); final Interval instructionInterval = MedicationsEhrUtils.getInstructionInterval(medicationTiming); final boolean onlyOnce = isOnlyOnceThenEx(medicationTiming); if (instructionInterval.overlaps(Intervals.infiniteFrom(searchStart)) || onlyOnce && instructionInterval.getStart().isAfter(searchStart.minusHours(1))) { final List<MedicationActionAction> actions = MedicationsEhrUtils.getInstructionActions(composition, instruction); if (!isTherapyCanceledAbortedOrSuspended(actions)) { final TherapyDto therapy = getTherapyFromMedicationInstruction(composition, instruction, referenceWeight, patientHeight, when); therapyDisplayProvider.fillDisplayValues(therapy, false, true, false, locale, true); final boolean containsAntibiotics = getMedicationIds( MedicationsEhrUtils.getRepresentingOrderActivity(instruction)).stream().anyMatch( id -> medicationsMap.containsKey(id) && medicationsMap.get(id).isAntibiotic()); if (containsAntibiotics) { final int consecutiveDays = getTherapyConsecutiveDay( getOriginalTherapyStart(patientId, composition), when, when, therapy.getPastDaysOfTherapy()); elements.add(new TherapySurgeryReportElementDto(therapy.getFormattedTherapyDisplay(), consecutiveDays)); } else { elements.add(new TherapySurgeryReportElementDto(therapy.getFormattedTherapyDisplay())); } } } } return elements; }
From source file:com.marand.thinkmed.medications.service.impl.MedicationsServiceImpl.java
License:Open Source License
@Override @Transactional(readOnly = true)//ww w . j a v a2s.c om @ServiceMethod(auditing = @Auditing(level = Level.FULL)) @EhrSessioned public TherapyViewPatientDto getTherapyViewPatientData(@Nonnull final String patientId) { StringUtils.checkNotBlank(patientId, "patientId required"); final DateTime requestTimestamp = RequestContextHolder.getContext().getRequestTimestamp(); final TherapyViewPatientDto therapyViewPatientDto = new TherapyViewPatientDto(); final PatientDataForMedicationsDto patientData = patientDataProvider.getPatientData(patientId, requestTimestamp); therapyViewPatientDto.setPatientData(patientData); final MedicationsCentralCaseDto centralCaseDto = patientData.getCentralCaseDto(); final String careProviderId = centralCaseDto != null && centralCaseDto.getCareProvider() != null ? centralCaseDto.getCareProvider().getId() : null; final boolean inpatient = centralCaseDto != null && !centralCaseDto.isOutpatient(); final Interval referenceWeightSearchInterval; if (inpatient) { referenceWeightSearchInterval = new Interval(centralCaseDto.getCentralCaseEffective().getStart(), requestTimestamp); final Interval recentHospitalizationInterval = new Interval(requestTimestamp.minusHours(12), requestTimestamp); therapyViewPatientDto.setRecentHospitalization( recentHospitalizationInterval.contains(centralCaseDto.getCentralCaseEffective().getStart())); } else { referenceWeightSearchInterval = new Interval(requestTimestamp.minusHours(24), requestTimestamp); } final Double referenceWeight = medicationsOpenEhrDao.getPatientLastReferenceWeight(patientId, referenceWeightSearchInterval); therapyViewPatientDto.setReferenceWeight(referenceWeight); if (careProviderId != null) { final List<String> customGroups = medicationsDao.getCustomGroupNames(careProviderId); therapyViewPatientDto.setCustomGroups(customGroups); } final AdministrationTimingDto administrationTiming = MedicationPreferencesUtil .getAdministrationTiming(careProviderId); therapyViewPatientDto.setAdministrationTiming(administrationTiming); final RoundsIntervalDto roundsInterval = MedicationPreferencesUtil.getRoundsInterval(careProviderId); therapyViewPatientDto.setRoundsInterval(roundsInterval); final Long patientIdLong = MedicationsConnectorUtils.getId(patientId); if (patientIdLong != null) { final String lastLinkName = medicationsDao.getPatientLastLinkName(patientIdLong); therapyViewPatientDto.setLastLinkName(lastLinkName); } return therapyViewPatientDto; }
From source file:com.marand.thinkmed.medications.service.impl.MedicationsServiceImpl.java
License:Open Source License
@Override @Transactional/*from w w w. jav a2s . co m*/ @ServiceMethod(auditing = @Auditing(level = Level.FULL)) public boolean finishedPerfusionSyringeRequestsExistInLastHours(@Nonnull final String patientId, @Nonnull final String originalTherapyId, final int hours) { Preconditions.checkNotNull(patientId, "patientId is null"); Preconditions.checkNotNull(originalTherapyId, "originalTherapyId is null"); final DateTime requestTimestamp = RequestContextHolder.getContext().getRequestTimestamp(); return pharmacistTaskProvider.therapyHasTasksClosedInInterval(patientId, originalTherapyId, Collections.singleton(TaskTypeEnum.PERFUSION_SYRINGE_DISPENSE), new Interval(requestTimestamp.minusHours(hours), requestTimestamp)); }
From source file:com.reclabs.recomendar.common.helpers.types.DateHelper.java
License:Open Source License
/** * Subtract to the current date the amount of that precisionType represent. * @param date The date to subtract/* w w w . jav a 2s . c o m*/ * @param amount The amount to subtract * @param precisionType The field to subtract * @return The new date */ public static Date subtract(Date date, int amount, DatePrecisionType precisionType) { DateTime jodaDate1 = new DateTime(date.getTime()); DateTime result; switch (precisionType) { case YEAR: result = jodaDate1.minusYears(amount); break; case MONTH: result = jodaDate1.minusMonths(amount); break; case DAY: result = jodaDate1.minusDays(amount); break; case HOUR: result = jodaDate1.minusHours(amount); break; case MINUTE: result = jodaDate1.minusMinutes(amount); break; case SECOND: result = jodaDate1.minusSeconds(amount); break; case MILLISECOND: result = jodaDate1.minusMillis(amount); break; default: LOGGER.warn("[Error subtract, precision value is invalid: {}]", precisionType); throw new RecIllegalArgumentException("The precision value is invalid " + precisionType); } return result.toDate(); }
From source file:com.splicemachine.derby.utils.SpliceDateFunctions.java
License:Apache License
/** * Implements the trunc_date function/*from w w w . j a v a2 s . co m*/ */ public static Timestamp TRUNC_DATE(Timestamp source, String field) throws SQLException { if (source == null || field == null) return null; DateTime dt = new DateTime(source); field = field.toLowerCase(); String lowerCaseField = field.toLowerCase(); if ("microseconds".equals(lowerCaseField)) { int nanos = source.getNanos(); nanos = nanos - nanos % 1000; source.setNanos(nanos); return source; } else if ("milliseconds".equals(lowerCaseField)) { int nanos = source.getNanos(); nanos = nanos - nanos % 1000000; source.setNanos(nanos); return source; } else if ("second".equals(lowerCaseField)) { source.setNanos(0); return source; } else if ("minute".equals(lowerCaseField)) { DateTime modified = dt.minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("hour".equals(lowerCaseField)) { DateTime modified = dt.minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("day".equals(lowerCaseField)) { DateTime modified = dt.minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour()) .minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("week".equals(lowerCaseField)) { DateTime modified = dt.minusDays(dt.getDayOfWeek()).minusHours(dt.getHourOfDay()) .minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("month".equals(lowerCaseField)) { DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1) .minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour()) .minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("quarter".equals(lowerCaseField)) { int month = dt.getMonthOfYear(); DateTime modified = dt; if ((month + 1) % 3 == 1) { modified = dt.minusMonths(2); } else if ((month + 1) % 3 == 0) { modified = dt.minusMonths(1); } DateTime fin = modified.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1) .minusHours(dt.getHourOfDay()).minusMinutes(dt.getMinuteOfHour()) .minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(fin.getMillis()); ret.setNanos(0); return ret; } else if ("year".equals(lowerCaseField)) { DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1) .minusHours(dt.getHourOfDay()).minusMonths(dt.getMonthOfYear() - 1) .minusMinutes(dt.getMinuteOfHour()).minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("decade".equals(lowerCaseField)) { DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1) .minusYears(dt.getYear() % 10).minusHours(dt.getHourOfDay()) .minusMonths(dt.getMonthOfYear() - 1).minusMinutes(dt.getMinuteOfHour()) .minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("century".equals(lowerCaseField)) { DateTime modified = dt.minusDays(dt.get(DateTimeFieldType.dayOfMonth()) - 1) .minusHours(dt.getHourOfDay()).minusYears(dt.getYear() % 100) .minusMonths(dt.getMonthOfYear() - 1).minusMinutes(dt.getMinuteOfHour()) .minusSeconds(dt.getSecondOfMinute()); Timestamp ret = new Timestamp(modified.getMillis()); ret.setNanos(0); return ret; } else if ("millennium".equals(lowerCaseField)) { int newYear = dt.getYear() - dt.getYear() % 1000; //noinspection deprecation (converstion from joda to java.sql.Timestamp did not work for millennium < 2000) return new Timestamp(newYear - 1900, Calendar.JANUARY, 1, 0, 0, 0, 0); } else { throw new SQLException(String.format("invalid time unit '%s'", field)); } }
From source file:com.tango.BucketSyncer.MirrorOptions.java
License:Apache License
private long initMaxAge() { DateTime dateTime = new DateTime(nowTime); // all digits -- assume "days" if (ctime.matches("^[0-9]+$")) return dateTime.minusDays(Integer.parseInt(ctime)).getMillis(); // ensure there is at least one digit, and exactly one character suffix, and the suffix is a legal option if (!ctime.matches("^[0-9]+[yMwdhms]$")) throw new IllegalArgumentException("Invalid option for ctime: " + ctime); if (ctime.endsWith("y")) return dateTime.minusYears(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("M")) return dateTime.minusMonths(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("w")) return dateTime.minusWeeks(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("d")) return dateTime.minusDays(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("h")) return dateTime.minusHours(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("m")) return dateTime.minusMinutes(getCtimeNumber(ctime)).getMillis(); if (ctime.endsWith("s")) return dateTime.minusSeconds(getCtimeNumber(ctime)).getMillis(); throw new IllegalArgumentException("Invalid option for ctime: " + ctime); }
From source file:com.webarch.common.datetime.DateTimeUtils.java
License:Apache License
/** * ?//www.ja v a 2 s. c o m * * @param date ? * @param before ?? * @param timeUnit ??,<code>0,1,2,3,4</code> * @return ?? */ public static Date getBeforeDate(Date date, final int before, final int timeUnit) { DateTime dateTime = new DateTime(date); Date result; switch (timeUnit) { case YEAR_UNIT: result = dateTime.minusYears(before).toDate(); break; case MONTH_UNIT: result = dateTime.minusMonths(before).toDate(); break; case DAY_UNIT: result = dateTime.minusDays(before).toDate(); break; case HOURE_UNIT: result = dateTime.minusHours(before).toDate(); break; case MINUTE_UNIT: result = dateTime.minusMinutes(before).toDate(); break; default: result = date; } return result; }
From source file:com.xpn.xwiki.criteria.impl.PeriodFactory.java
License:Open Source License
/** * Creates a new Period instance that matches all the instants between N hours before the instantiation and the * instantiation./*from www. j a va2s. c o m*/ * * @param numberOfHours number of hours to substract from current date * @return The corresponding period object */ public static Period createSinceHoursPeriod(int numberOfHours) { DateTime dt = new DateTime(); return createPeriod(dt.minusHours(numberOfHours).getMillis(), dt.getMillis()); }
From source file:controllers.Api.Statistic.java
License:Open Source License
public static Result getAccess() { // Variables/*from w w w .j av a 2 s . co m*/ Integer newValue, accessHour, yesterdayHour, index = 0; DateTime yesterdayDayTime, accessTime; // Yesterday Time Calc yesterdayDayTime = (new DateTime()).withZone(DateTimeZone.forID(session("timezone"))); //yesterdayDayTime = yesterdayDayTime.minusHours(24); yesterdayDayTime = yesterdayDayTime.minusHours(23).minusMinutes(yesterdayDayTime.getMinuteOfHour()) .minusSeconds(yesterdayDayTime.getSecondOfMinute()); yesterdayHour = yesterdayDayTime.getHourOfDay(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); List<models.Access> accessDay = models.Access.find.where() .ge("timestamp", fmt.print(yesterdayDayTime.toDateTime(DateTimeZone.UTC))).order().asc("timestamp") .findList(); Iterator<models.Access> accessDayIterator = accessDay.iterator(); // 0 Liste initialisieren List<Integer> accessDayReturn = Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // Iterate List while (accessDayIterator.hasNext()) { models.Access access = accessDayIterator.next(); // Access Time Calc accessTime = access.timestamp; accessTime = accessTime.withZone(DateTimeZone.forID(session("timezone"))); accessHour = accessTime.getHourOfDay(); // Set value if (accessHour == yesterdayHour) { index = accessDayReturn.size() - 1; } else if (accessHour > yesterdayHour) { index = accessHour - yesterdayHour; } else if (accessHour < yesterdayHour) { index = (24 - (yesterdayHour - accessHour)) % 24; } newValue = accessDayReturn.get(index) + 1; accessDayReturn.set(index, newValue); } return ok(Json.toJson(accessDayReturn)); }
From source file:controllers.JobController.java
License:Apache License
/** * Starts the mail-server, creates the Admin-Account specified in application.conf and threads to expire the * mail-addresses/* w ww . j ava 2 s .co m*/ */ @Start(order = 90) public void startActions() { // only delete transactions if mailtransaction.maxage is not -1 or 0 deleteTransactions = (xcmConfiguration.MTX_MAX_AGE != 0 && xcmConfiguration.MTX_MAX_AGE != -1); if (xcmConfiguration.ADMIN_PASSWORD != null && !User.mailExists(xcmConfiguration.ADMIN_ADDRESS)) { // if a password is set in application.conf ...and the admin-account doesn't exist // create the admin-account User user = new User("Site", "Admin", xcmConfiguration.ADMIN_ADDRESS, xcmConfiguration.ADMIN_PASSWORD, "en"); // set the status and admin flags user.setAdmin(true); user.setActive(true); user.save(); } // create the server for incoming mails smtpServer = new SMTPServer(new SimpleMessageListenerAdapter(messageListener)); // use a dynamic port for the smtp in test-mode or the port specified in application.conf in all other modes int port = ninjaProperties.isTest() ? findAvailablePort(49152, 65535) : xcmConfiguration.MB_PORT; // set the port and start the SMTP-Server smtpServer.setPort(port); smtpServer.start(); // create the executor-service to check the mail-addresses which were expired since the last run and disable // them // and also all new MailTransactions will be stored here and old entries will be removed expirationService.scheduleAtFixedRate(new Runnable() { @Override public void run() { log.debug("Emailaddress Expiration Task run"); // get the number of MBox-Elements that will expire in the next "MB_INT"-minutes List<MBox> expiringMailBoxesList = MBox.getNextBoxes(xcmConfiguration.MB_INTERVAL); ListIterator<MBox> mailBoxIterator = expiringMailBoxesList.listIterator(); DateTime dt = new DateTime(); MBox mailBox; // disable expired mail-addresses while (mailBoxIterator.hasNext()) { mailBox = mailBoxIterator.next(); if (dt.isAfter(mailBox.getTs_Active()) && (mailBox.getTs_Active() != 0)) { // this element is now expired mailBox.enable(); log.debug("now expired: " + mailBox.getFullAddress()); } } // add the new Mailtransactions List<MailTransaction> mtxToSave = new LinkedList<MailTransaction>(); // add all transactions from the queue to a list while (!mtxQueue.isEmpty()) { mtxToSave.add(mtxQueue.poll()); } // and save all entries of this list in one transaction to the list MailTransaction.saveMultipleTx(mtxToSave); log.info("stored " + mtxToSave.size() + " entries in the database"); // remove old MailTransactions if (deleteTransactions) { // execute only if a value has been set log.debug("Cleanup Mailtransaction-list"); long removalTS = dt.minusHours(xcmConfiguration.MTX_MAX_AGE).getMillis(); MailTransaction.deleteTxInPeriod(removalTS); log.debug("finished Mailtransaction cleanup"); } } }, new Long(0), new Long(xcmConfiguration.MB_INTERVAL), TimeUnit.MINUTES); }