public PregnancyOutcome evaluatePregnancyOutcome(PregnancyOutcome entityItem) throws ConstraintViolations { int age; if (entityItem.getOutcomeDate() == null) { age = (int) (CalendarUtil.daysBetween( entityItem.getMother().getDob(), entityItem.getVisit().getVisitDate()) / 365.25); } else { age = (int) (CalendarUtil.daysBetween( entityItem.getMother().getDob(), entityItem.getOutcomeDate()) / 365.25); } if (age < siteProperties.getMinimumAgeOfPregnancy()) throw new ConstraintViolations( "The Mother specified is younger than the minimum age required to have a Pregnancy Outcome."); if (individualService.getLatestEvent(entityItem.getMother()).equals("Death")) throw new ConstraintViolations( "A Pregnancy Outcome cannot be created for a Mother who has a Death event."); if (entityItem.getOutcomes().size() == 0) throw new ConstraintViolations( "A Pregnancy Outcome cannot be created unless it has at least 1 outcome."); if (entityItem.getMother().getCurrentResidency() == null) throw new ConstraintViolations( "A Pregnancy Outcome cannot be created because a Residency record cannot be found for the mother."); return entityItem; }
@RequestMapping("/pregnancy-observ-reconciliation.report") public ModelAndView getPregnancyObservReconciliation() { ModelAndView mv = new ModelAndView("pregnancyObservReconciliation"); Collection<PregObservReconciliationBean> beans = new ArrayList<PregObservReconciliationBean>(); PregObservReconciliationBean bean = new PregObservReconciliationBean(); bean.setCurrentDate(calendarUtil.formatDate(Calendar.getInstance())); // grab all Pregnancy Observations List<PregnancyObservation> list = genericDao.findListByProperty( PregnancyObservation.class, "status", properties.getDataStatusPendingCode()); Collections.sort(list, new PregnancyObservationComparator()); for (PregnancyObservation item : list) { if (item.getExpectedDeliveryDate().before(Calendar.getInstance())) { bean.setDate(calendarUtil.formatDate(item.getRecordedDate())); bean.setIndivId(item.getMother().getExtId()); beans.add(bean); } } if (list.size() == 0) { bean.setDate(""); bean.setIndivId(""); beans.add(bean); } mv.addObject("theData", beans); return mv; }
public PregnancyObservation evaluatePregnancyObservation(PregnancyObservation entityItem) throws ConstraintViolations { int age = (int) (CalendarUtil.daysBetween( entityItem.getMother().getDob(), entityItem.getExpectedDeliveryDate()) / 365.25); if (age < siteProperties.getMinimumAgeOfPregnancy()) throw new ConstraintViolations( "The Mother specified is younger than the minimum age required to have a Pregnancy Observation."); if (!checkDuplicatePregnancyObservation(entityItem.getMother())) throw new ConstraintViolations( "The Mother specified already has a pending Pregnancy Observation."); if (individualService.getLatestEvent(entityItem.getMother()).equals("Death")) throw new ConstraintViolations( "A Pregnancy Observation cannot be created for a Mother who has a Death event."); return entityItem; }
@RequestMapping( method = RequestMethod.POST, produces = "application/xml", consumes = "application/xml") @Transactional public ResponseEntity<? extends Serializable> processForm( @RequestBody InMigrationForm inMigrationForm) throws JAXBException { try { context = JAXBContext.newInstance(InMigrationForm.class); marshaller = context.createMarshaller(); marshaller.setAdapter(adapter); } catch (JAXBException e) { throw new RuntimeException( "Could not create JAXB context and marshaller for InMigrationFormResource"); } InMigration inMigration = new InMigration(); inMigration.setRecordedDate(inMigrationForm.getMigrationDate()); inMigration.setReason(inMigrationForm.getMigrationReason()); inMigration.setOrigin(inMigrationForm.getMigrationOrigin()); // TODO: determine a consistent configuration plan between siteProperties and MigrationType enum // TODO: (question) why use an enum and not the siteproperties? if ("internal_inmigration".equals(inMigrationForm.getMigrationType())) { inMigration.setMigType(MigrationType.INTERNAL_INMIGRATION); } else { inMigration.setMigType(MigrationType.EXTERNAL_INMIGRATION); } FieldWorker fieldWorker = fieldWorkerService.getByUuid(inMigrationForm.getFieldWorkerUuid()); if (null == fieldWorker) { ConstraintViolations cv = new ConstraintViolations(); cv.addViolations( ConstraintViolations.INVALID_FIELD_WORKER_UUID + " : " + inMigrationForm.getFieldWorkerUuid()); logError( cv, fieldWorker, createDTOPayload(inMigrationForm), InMigrationForm.class.getSimpleName(), ConstraintViolations.INVALID_FIELD_WORKER_UUID); return requestError(cv); } inMigration.setCollectedBy(fieldWorker); Visit visit = visitService.findVisitByUuid(inMigrationForm.getVisitUuid()); if (null == visit) { ConstraintViolations cv = new ConstraintViolations(); cv.addViolations( ConstraintViolations.INVALID_VISIT_UUID + " : " + inMigrationForm.getVisitUuid()); logError( cv, fieldWorker, createDTOPayload(inMigrationForm), InMigrationForm.class.getSimpleName(), ConstraintViolations.INVALID_VISIT_UUID); return requestError(cv); } inMigration.setVisit(visit); Individual individual = individualService.getByUuid(inMigrationForm.getIndividualUuid()); if (null == individual) { ConstraintViolations cv = new ConstraintViolations(); cv.addViolations( ConstraintViolations.INVALID_INDIVIDUAL_UUID + " : " + inMigrationForm.getIndividualUuid()); logError( cv, fieldWorker, createDTOPayload(inMigrationForm), InMigrationForm.class.getSimpleName(), ConstraintViolations.INVALID_INDIVIDUAL_UUID); return requestError(cv); } inMigration.setIndividual(individual); Location location = locationService.getByUuid(inMigrationForm.getLocationUuid()); if (null == location) { ConstraintViolations cv = new ConstraintViolations(); cv.addViolations( ConstraintViolations.INVALID_LOCATION_UUID + " : " + inMigrationForm.getLocationUuid()); logError( cv, fieldWorker, createDTOPayload(inMigrationForm), InMigrationForm.class.getSimpleName(), ConstraintViolations.INVALID_LOCATION_UUID); return requestError(cv); } Residency newResidency = new Residency(); // TODO: since the InMigration domain model contains a reference to a Residency instead of a // Location, // we must assemble the Residency at this level to provide a fully-graphed InMigration to the // service newResidency.setCollectedBy(fieldWorker); newResidency.setLocation(location); newResidency.setIndividual(individual); newResidency.setUuid(UUID.randomUUID().toString().replace("-", "")); newResidency.setStartDate(inMigration.getRecordedDate()); newResidency.setStartType(sitePropertiesService.getInmigrationCode()); newResidency.setEndType(sitePropertiesService.getNotApplicableCode()); if (null != currentUser) { newResidency.setInsertBy(currentUser.getCurrentUser()); } Calendar insertDate = calendarUtil.convertDateToCalendar(new Date()); newResidency.setInsertDate(insertDate); newResidency.setStatus(sitePropertiesService.getDataStatusPendingCode()); inMigration.setResidency(newResidency); try { inMigrationService.create(inMigration); } catch (ConstraintViolations cv) { logError( cv, fieldWorker, createDTOPayload(inMigrationForm), InMigrationForm.class.getSimpleName(), ConstraintViolations.INVALID_IN_MIGRATION); return requestError(cv); } return new ResponseEntity<InMigrationForm>(inMigrationForm, HttpStatus.CREATED); }