private void mergeDateOfBirth(Patient preferred, Patient notPreferred, PersonMergeLogData mergedData) { mergedData.setPriorDateOfBirth(preferred.getBirthdate()); mergedData.setPriorDateOfBirthEstimated(preferred.getBirthdateEstimated()); if (preferred.getBirthdate() == null || (preferred.getBirthdateEstimated() && !notPreferred.getBirthdateEstimated())) { preferred.setBirthdate(notPreferred.getBirthdate()); preferred.setBirthdateEstimated(notPreferred.getBirthdateEstimated()); } }
private void validateVisitStartedBeforePatientBirthdate(Visit visit, Errors errors) { if (visit.getPatient() == null || visit.getPatient().getBirthdate() == null || visit.getStartDatetime() == null) { return; } if (visit.getStartDatetime().before(getPatientBirthdateAdjustedIfEstimated(visit.getPatient()))) { errors.rejectValue("startDatetime", "Visit.startDateCannotFallBeforeTheBirthDateOfTheSamePatient", "This visit has a start date that falls before the birthdate of the same patient."); } }
private Date getPatientBirthdateAdjustedIfEstimated(Patient patient) { Date birthday = patient.getBirthdate(); if (patient.getBirthdateEstimated()) { Calendar cal = Calendar.getInstance(); cal.setTime(birthday); cal.add(Calendar.YEAR, calculateGracePeriodInYears(patient.getAge())); birthday = cal.getTime(); } return birthday; }
protected Date getReferenceDate(Patient patient) { return patient.getBirthdate(); }
mergedData.setPriorDateOfBirth(preferred.getBirthdate()); mergedData.setPriorDateOfBirthEstimated(preferred.getBirthdateEstimated()); if (preferred.getBirthdate() == null || (preferred.getBirthdateEstimated() && !notPreferred.getBirthdateEstimated())) { preferred.setBirthdate(notPreferred.getBirthdate()); preferred.setBirthdateEstimated(notPreferred.getBirthdateEstimated());
public boolean meetsRequirement(Patient patient, Date date) { if (minValue != null && minPeriod != null) { Date minAgeDate = calculateDateBasedOnTimePeriodAndTimeValue(patient.getBirthdate(), minValue, minPeriod); if (!date.after(minAgeDate)) { return false; } } if (maxValue != null && maxPeriod != null) { Date maxAgeDate = calculateDateBasedOnTimePeriodAndTimeValue(patient.getBirthdate(), maxValue, maxPeriod); if (!date.before(maxAgeDate)) { return false; } } return true; }
@Override public void testEditedResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); } }.run();
public boolean meetsRequirement(Patient patient, Date date) { Date childRegistrationDate = registrarBean.getChildRegistrationDate(); List<Encounter> encounters = registrarBean.getEncounters(patient, MotechConstants.ENCOUNTER_TYPE_PATIENTREGVISIT, patient.getBirthdate()); if (encounters == null || encounters.isEmpty()) return false; return childRegistrationDate.before(encounters.get(0).getEncounterDatetime()); }
@Override public void testResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); List<PatientProgram> patientPrograms = Context.getProgramWorkflowService().getPatientPrograms( results.getPatient(), null, null, null, null, null, false); Assert.assertTrue(patientPrograms.size() == 1); } }.run();
/** * * @return patient's age in days * @should return the ageInDays accurately to the nearest date */ public Integer patientAgeInDays(){ Patient patient = session.getPatient(); if(patient == null || patient.getBirthdate() == null){ return null; // if there is error in patient's data return age as null } Date birthdate = patient.getBirthdate(); DateTime today = new DateTime(); DateTime dob = new DateTime(birthdate.getTime()); return Days.daysBetween(dob.toDateMidnight(), today.toDateMidnight()).getDays(); }
@Override public void testResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); results.assertEncounterCreated(); Assert.assertEquals(datePartOnly, results.getEncounterCreated().getEncounterDatetime()); results.assertProvider(502); results.assertLocation(2); results.assertObsCreatedCount(3); results.assertObsCreated(2, new Double(75)); results.assertObsCreated(8, "Bee stings"); results.assertObsCreated(1119, datePartOnly); } }.run();
/** * * @return patient's age given in months * @should return the ageInMonths accurately to the nearest month */ public Integer patientAgeInMonths() { Patient patient = session.getPatient(); if(patient == null || patient.getBirthdate() == null){ return null; // if there is error in patient's data return age as null } Date birthdate = patient.getBirthdate(); DateTime today = new DateTime(); DateTime dob = new DateTime(birthdate.getTime()); return Months.monthsBetween(dob.toDateMidnight(), today.toDateMidnight()).getMonths(); }
@Override public void testEditedResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getGivenName()); Assert.assertEquals("Family", results.getPatient().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); results.assertEncounterEdited(); Assert.assertEquals(datePartOnly, results.getEncounterCreated().getEncounterDatetime()); results.assertProvider(502); results.assertLocation(2); results.assertObsCreatedCount(3); results.assertObsCreated(2,new Double(75)); results.assertObsCreated(8, "Bee stings"); results.assertObsCreated(1119, datePartOnly); } }.run();
private void validatePatientForAPregnancyMother(org.openmrs.Patient patient, ValidationErrors errors, String fieldName) { if (patient != null) { List<Encounter> encounters = registrarBean.getEncounters(patient, MotechConstants.ENCOUNTER_TYPE_PREGREGVISIT, patient.getBirthdate()); if (encounters == null || encounters.isEmpty()) { errors.add(messageBean.getMessage("motechmodule.ws.invalid.mother.motechId", fieldName)); } } }
@Override public void testResults(SubmissionResults results) { Date datePartOnly = ymdToDate(dateAsString(date)); results.assertNoErrors(); results.assertPatient(); Assert.assertEquals("Given", results.getPatient().getPersonName().getGivenName()); Assert.assertEquals("Family", results.getPatient().getPersonName().getFamilyName()); Assert.assertEquals("F", results.getPatient().getGender()); Assert.assertEquals(datePartOnly, results.getPatient().getBirthdate()); Assert.assertEquals(false, results.getPatient().getBirthdateEstimated()); Assert.assertEquals("987654-1", results.getPatient().getPatientIdentifier().getIdentifier()); results.assertEncounterCreated(); Assert.assertEquals(datePartOnly, results.getEncounterCreated().getEncounterDatetime()); results.assertProvider(502); results.assertLocation(2); } }.run();
@Override public void testEditedResults(SubmissionResults results) { results.assertNoErrors(); results.assertPatient(); //the birthdate should have been computed basing on the entered age long oneYear = Long.valueOf("31536000000"); long oneMonth = Long.valueOf("2628000000"); Assert.assertTrue(((new Date()).getTime() - oneYear*5) > results.getPatient().getBirthdate().getTime()); //birthdate is before 5 years ago Assert.assertTrue(((new Date()).getTime() - oneYear*5) < (results.getPatient().getBirthdate().getTime() + (4*oneMonth))); //birthdate + 4 months is greater than 5years ago results.assertEncounterEdited(); } }.run();
@Override public void testEditedResults(SubmissionResults results) { results.assertNoErrors(); results.assertPatient(); //the birthdate should have been computed basing on the entered birthdate Assert.assertEquals(ymdToDate(dateAsString(expectedBirthDate)), results.getPatient().getBirthdate()); results.assertEncounterEdited(); } }.run();
@Override public void testEditedResults(SubmissionResults results) { results.assertNoErrors(); results.assertPatient(); //the birthdate should have been computed basing on the entered birthdate Assert.assertEquals(ymdToDate(dateAsString(expectedBirthDate)), results.getPatient().getBirthdate()); results.assertEncounterEdited(); } }.run();
/** * @return a new VelocityFunctions instance for the given patientId */ private VelocityFunctions setupFunctionsForPatient(Integer patientId) throws Exception { HtmlForm htmlform = new HtmlForm(); Form form = new Form(); form.setEncounterType(new EncounterType(1)); htmlform.setForm(form); htmlform.setDateChanged(new Date()); htmlform.setXmlData("<htmlform></htmlform>"); Patient p = new Patient(patientId); String[] datePattern = {"yyyy.MM.dd"}; p.setBirthdate(DateUtils.parseDate("1970.01.01",datePattern )); measureAgeInDaysAndMonths(new Date(), p.getBirthdate()); FormEntrySession session = new FormEntrySession(p, htmlform, null); return new VelocityFunctions(session); }
@Override public void testEditedResults(SubmissionResults results) { results.assertNoErrors(); results.assertPatient(); //the birthdate should have been computed basing on the entered age Assert.assertEquals(ymdToDate(dateAsString(expectedBirthDate)), ymdToDate(dateAsString(results.getPatient() .getBirthdate()))); results.assertEncounterEdited(); } }.run();