diff --git a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParameters.java b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParameters.java index 222bc955cf..1694f4f8ac 100644 --- a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParameters.java +++ b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParameters.java @@ -3,13 +3,18 @@ import org.apache.commons.lang.StringUtils; import org.openmrs.module.webservices.rest.web.RequestContext; +import java.sql.Timestamp; +import java.util.Date; import java.util.Map; public class PatientSearchParameters { + private final String MIDNIGHT = "00:00:00"; + private Boolean filterPatientsByLocation; private String identifier; private String name; private String gender; + private Date birthdate; private String addressFieldName; private String addressFieldValue; private Integer start; @@ -45,6 +50,7 @@ public PatientSearchParameters(RequestContext context) { this.setAddressFieldName("city_village"); } this.setGender(context.getParameter("gender")); + this.setBirthdate(context.getParameter("birthdate")); this.setAddressFieldValue(context.getParameter("addressFieldValue")); Map parameterMap = context.getRequest().getParameterMap(); this.setAddressSearchResultFields((String[]) parameterMap.get("addressSearchResultsConfig")); @@ -81,6 +87,24 @@ public void setGender(String gender) { this.gender = gender; } + public void setBirthdate(String birthdate) { + if(StringUtils.isEmpty(birthdate)) { + return; + } + + this.birthdate = Timestamp.valueOf(addTimeIfMissing(birthdate)); + } + + private String addTimeIfMissing(String birthdate) { + if(StringUtils.isNotEmpty(birthdate) && birthdate.matches("\\d{4}-\\d{2}-\\d{2}")) { + return birthdate + " " + MIDNIGHT; + } else return birthdate; + } + + public Date getBirthdate() { + return birthdate; + } + public String getAddressFieldName() { return addressFieldName; } diff --git a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/PatientDao.java b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/PatientDao.java index eca503486b..3ee778176c 100644 --- a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/PatientDao.java +++ b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/PatientDao.java @@ -4,6 +4,7 @@ import org.openmrs.Patient; import org.openmrs.RelationshipType; +import java.util.Date; import java.util.List; public interface PatientDao { @@ -19,7 +20,7 @@ List getPatientsUsingLuceneSearch(String identifier, String nam String programAttributeFieldName, String[] addressSearchResultFields, String[] patientSearchResultFields, String loginLocationUuid, Boolean filterPatientsByLocation, Boolean filterOnAllIdentifiers); - List getSimilarPatientsUsingLuceneSearch(String name, String gender, String loginLocationUuid, Integer length); + List getSimilarPatientsUsingLuceneSearch(String name, String gender, Date birthdate, String loginLocationUuid, Integer length); public Patient getPatient(String identifier); diff --git a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/impl/PatientDaoImpl.java b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/impl/PatientDaoImpl.java index 1d9ad77213..4fe8e11d56 100644 --- a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/impl/PatientDaoImpl.java +++ b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/dao/impl/PatientDaoImpl.java @@ -34,7 +34,7 @@ import org.springframework.stereotype.Repository; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -101,9 +101,9 @@ public List getPatientsUsingLuceneSearch(String identifier, Str } @Override - public List getSimilarPatientsUsingLuceneSearch(String name, String gender, String loginLocationUuid, Integer length) { + public List getSimilarPatientsUsingLuceneSearch(String name, String gender, Date birthdate, String loginLocationUuid, Integer length) { PatientResponseMapper patientResponseMapper = new PatientResponseMapper(Context.getVisitService(),new BahmniVisitLocationServiceImpl(Context.getLocationService())); - List patients = getPatientsByNameAndGender(name, gender, length); + List patients = getPatientsByNameGenderAndBirthdate(name, gender, birthdate, length); List patientResponses = patients.stream() .map(patient -> {return patientResponseMapper.map(patient, loginLocationUuid, null, null,null);}).filter(Objects::nonNull) .collect(toList()); @@ -121,7 +121,7 @@ private PatientResponse toPatientResponse(PatientResponseMapper patientResponseM } } - private List getPatientsByNameAndGender(String name, String gender, Integer length) { + private List getPatientsByNameGenderAndBirthdate(String name, String gender, Date birthdate, Integer length) { if(isNullOrEmpty(name, gender)) { return new ArrayList<>(); } @@ -133,7 +133,9 @@ private List getPatientsByNameAndGender(String name, String gender, Int LuceneQuery nameQuery = personLuceneQuery.getPatientNameQueryWithOrParser(query, false); List patients = nameQuery.list().stream() .filter(personName -> - personName.getPreferred() && checkGender(personName.getPerson(), gender)) + personName.getPreferred() && checkGender(personName.getPerson(), gender) + && checkBirthdate(personName.getPerson(), birthdate) + ) .limit(length) .map(personName -> new Patient(personName.getPerson())) .collect(toList()); @@ -153,6 +155,15 @@ private Boolean checkGender(Person person, String gender) { } } + private Boolean checkBirthdate(Person person, Date birthdate) { + if(birthdate != null) { + Date extractedBirthdate = person.getBirthdate(); + return birthdate.equals(person.getBirthdate()); + } else { + return true; + } + } + private List getPatientIdentifiers(String identifier, Boolean filterOnAllIdentifiers, Integer offset, Integer length) { FullTextSession fullTextSession = Search.getFullTextSession(sessionFactory.getCurrentSession()); QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(PatientIdentifier.class).get(); @@ -161,7 +172,7 @@ private List getPatientIdentifiers(String identifier, Boolean .wildcard().onField("identifierAnywhere").matching("*" + identifier.toLowerCase() + "*").createQuery(); org.apache.lucene.search.Query nonVoidedIdentifiers = queryBuilder.keyword().onField("voided").matching(false).createQuery(); org.apache.lucene.search.Query nonVoidedPatients = queryBuilder.keyword().onField("patient.voided").matching(false).createQuery(); - + List identifierTypeNames = getIdentifierTypeNames(filterOnAllIdentifiers); BooleanJunction identifierTypeShouldJunction = queryBuilder.bool(); @@ -185,7 +196,7 @@ private List getPatientIdentifiers(String identifier, Boolean fullTextQuery.setMaxResults(length); return (List) fullTextQuery.list(); } - + private List getIdentifierTypeNames(Boolean filterOnAllIdentifiers) { List identifierTypeNames = new ArrayList<>(); addIdentifierTypeName(identifierTypeNames,"bahmni.primaryIdentifierType"); diff --git a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImpl.java b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImpl.java index 2256f31fda..fb06fb4ed5 100644 --- a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImpl.java +++ b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImpl.java @@ -88,6 +88,7 @@ public List luceneSearch(PatientSearchParameters searchParamete public List searchSimilarPatients(PatientSearchParameters searchParameters) { return patientDao.getSimilarPatientsUsingLuceneSearch(searchParameters.getName(), searchParameters.getGender(), + searchParameters.getBirthdate(), searchParameters.getLoginLocationUuid(), SIMILAR_PATIENT_RESULT_LENGTH); } diff --git a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParametersTest.java b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParametersTest.java new file mode 100644 index 0000000000..c686c10c30 --- /dev/null +++ b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/contract/patient/PatientSearchParametersTest.java @@ -0,0 +1,57 @@ +package org.bahmni.module.bahmnicore.contract.patient; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.openmrs.module.webservices.rest.web.RequestContext; + +import javax.servlet.http.HttpServletRequest; +import java.sql.Timestamp; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; + + +public class PatientSearchParametersTest { + + @Mock + RequestContext requestContext; + + @Mock + HttpServletRequest request; + + @Before + public void setup() { + initMocks(this); + when(requestContext.getRequest()).thenReturn(request); + } + + @Test + public void shouldParseTheBirtdateFromString () { + when(requestContext.getParameter("birthdate")).thenReturn("1983-01-30 00:00:00"); + PatientSearchParameters patientSearchParameters = new PatientSearchParameters(requestContext); + + assertEquals(Timestamp.valueOf("1983-01-30 00:00:00"), patientSearchParameters.getBirthdate()); + } + + @Test + public void shouldIgnoreEmptyBirthdate () { + when(requestContext.getParameter("birthdate")).thenReturn(""); + PatientSearchParameters patientSearchParameters; + patientSearchParameters = new PatientSearchParameters(requestContext); + + assertNull(patientSearchParameters.getBirthdate()); + } + + @Test + public void shouldSetToMidnightForBirthdateIfTimeIsMissing () { + when(requestContext.getParameter("birthdate")).thenReturn("1983-01-30"); + PatientSearchParameters patientSearchParameters; + patientSearchParameters = new PatientSearchParameters(requestContext); + + assertEquals(Timestamp.valueOf("1983-01-30 00:00:00"), patientSearchParameters.getBirthdate()); + } +} \ No newline at end of file diff --git a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/dao/impl/BahmniPatientDaoImplLuceneIT.java b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/dao/impl/BahmniPatientDaoImplLuceneIT.java index 580103a0ae..067af7312c 100644 --- a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/dao/impl/BahmniPatientDaoImplLuceneIT.java +++ b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/dao/impl/BahmniPatientDaoImplLuceneIT.java @@ -9,7 +9,10 @@ import org.junit.rules.ExpectedException; import org.springframework.beans.factory.annotation.Autowired; +import java.sql.Timestamp; +import java.util.Date; import java.util.List; + import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNull; @@ -20,13 +23,13 @@ public class BahmniPatientDaoImplLuceneIT extends BaseIntegrationTest { private PatientDao patientDao; @Rule public ExpectedException expectedEx = ExpectedException.none(); - + @Before public void setUp() throws Exception { executeDataSet("apiTestData.xml"); updateSearchIndex(); } - + @Test public void shouldSearchByPatientPrimaryIdentifier() { String[] addressResultFields = {"city_village"}; @@ -44,7 +47,7 @@ public void shouldSearchByPatientPrimaryIdentifier() { assertEquals(null, patient.getDeathDate()); assertEquals("{\"National ID\" : \"NAT100010\"}", patient.getExtraIdentifiers()); } - + @Test public void shouldSearchByPatientExtraIdentifier() { String[] addressResultFields = {"city_village"}; @@ -62,35 +65,35 @@ public void shouldSearchByPatientExtraIdentifier() { assertEquals(null, patient.getDeathDate()); assertEquals("{\"National ID\" : \"NAT100010\"}", patient.getExtraIdentifiers()); } - + @Test public void shouldSearchByPartialPatientIdentifier() { List patients = patientDao.getPatientsUsingLuceneSearch("02", "", null, "city_village", "", 100, 0, null,"",null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); assertEquals(1, patients.size()); PatientResponse patient = patients.get(0); - + assertEquals("GAN200002", patient.getIdentifier()); assertNull(patient.getExtraIdentifiers()); } - + @Test public void shouldReturnResultAfterGivenOffset() throws Exception { List patients = patientDao.getPatientsUsingLuceneSearch("300001", "", null, "city_village", "", 100, 1, null,"",null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); assertEquals(1, patients.size()); - + patients = patientDao.getPatientsUsingLuceneSearch("300001", "", null, "city_village", "", 100, 2, null,"",null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); assertEquals(0, patients.size()); } - + @Test public void shouldThrowErrorWhenPatientAttributesIsNotPresent() throws Exception { String[] patientAttributes = {"caste","nonExistingAttribute"}; expectedEx.expect(IllegalArgumentException.class); expectedEx.expectMessage("Invalid Attribute In Patient Attributes [caste, nonExistingAttribute]"); List patients = patientDao.getPatientsUsingLuceneSearch("", "", "testCaste1", "city_village", null, 100, 0, patientAttributes, "", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + } - + @Test public void shouldThrowErrorWhenPatientAddressIsNotPresent() throws Exception { String[] patientAttributes = {"caste"}; @@ -98,31 +101,31 @@ public void shouldThrowErrorWhenPatientAddressIsNotPresent() throws Exception { expectedEx.expect(IllegalArgumentException.class); expectedEx.expectMessage("Invalid Address Filed nonExistingAddressFiled"); List patients = patientDao.getPatientsUsingLuceneSearch("", "", "testCaste1", addressField, null, 100, 0, patientAttributes, "", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + } - + @Test public void shouldThrowErrorWhenProgramAttributesIsNotPresent() { String nonExistingAttribute = "nonExistingAttribute"; expectedEx.expect(IllegalArgumentException.class); expectedEx.expectMessage("Invalid Program Attribute nonExistingAttribute"); patientDao.getPatientsUsingLuceneSearch("", "", "", "city_village", null, 100, 0, null, "Stage1",nonExistingAttribute, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + } - + @Test public void shouldReturnAdmissionStatus() throws Exception{ List patients = patientDao.getPatientsUsingLuceneSearch("200000", null, null, "city_village", null, 10, 0, null, null, null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); assertEquals(1, patients.size()); PatientResponse patient200000 = patients.get(0); assertFalse(patient200000.getHasBeenAdmitted()); - + patients = patientDao.getPatientsUsingLuceneSearch("200002", null, null, "city_village", null, 10, 0, null, null, null,null,null, "8d6c993e-c2cc-11de-8d13-0040c6dffd0f", false, false); assertEquals(1, patients.size()); PatientResponse patient200003 = patients.get(0); assertTrue(patient200003.getHasBeenAdmitted()); } - + @Test public void shouldReturnAddressAndPatientAttributes() throws Exception{ String[] addressResultFields = {"address3"}; @@ -133,79 +136,79 @@ public void shouldReturnAddressAndPatientAttributes() throws Exception{ assertTrue("{\"middleNameLocal\" : \"singh\",\"familyNameLocal\" : \"gond\",\"givenNameLocal\" : \"ram\"}".equals(patient200002.getCustomAttribute())); assertTrue("{\"address3\" : \"Dindori\"}".equals(patient200002.getAddressFieldValue())); } - + @Test public void shouldGiveAllThePatientsIfWeSearchWithPercentileAsIdentifier() throws Exception { List patients = patientDao.getPatientsUsingLuceneSearch("%", null, null, null, null, 10, 0, null, null, null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + assertEquals(10, patients.size()); } - + @Test public void shouldFetchPatientsByPatientIdentifierWhenThereIsSingleQuoteInPatientIdentifier(){ List patients = patientDao.getPatientsUsingLuceneSearch("51'0003", "", "", null, null, 100, 0, null,null, null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + PatientResponse response = patients.get(0); - + assertEquals(1, patients.size()); assertEquals("SEV51'0003", response.getIdentifier()); } - + @Test public void shouldFetchPatientsByPatientIdentifierWhenThereIsJustOneSingleQuoteInPatientIdentifier() throws Exception { List patients = patientDao.getPatientsUsingLuceneSearch("'", "", "", null, null, 100, 0, null,null, null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + PatientResponse response = patients.get(0); - + assertEquals(1, patients.size()); assertEquals("SEV51'0003", response.getIdentifier()); } - + @Test public void shouldSearchPatientsByPatientIdentifierWhenThereAreMultipleSinglesInSearchString() throws Exception { - + List patients = patientDao.getPatientsUsingLuceneSearch("'''", "", "", null, null, 100, 0, null,null, null,null,null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + assertEquals(0, patients.size()); } - + @Test public void shouldNotReturnDuplicatePatientsEvenIfThereAreMultipleVisitsForThePatients() { List patients = patientDao.getPatientsUsingLuceneSearch("HOS1225", "", null, "city_village", "", 100, 0, null,"",null,null,null, "8d6c993e-c2cc-11de-8d34-0010c6affd0f", false, false); - + assertEquals(1, patients.size()); PatientResponse patient1 = patients.get(0); - + assertEquals("1058GivenName", patient1.getGivenName()); } - + @Test public void shouldNotSearchExtraIdentifiersIfFilterOnAllIdenfiersIsFalse() { List patients = patientDao.getPatientsUsingLuceneSearch("100010", "", null, "city_village", "", 100, 0, null,"", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, false); - + assertEquals(0, patients.size()); } - + @Test public void shouldSearchAllIdentifiersIfFilterOnAllIdentifiersIsTrue() { List patients = patientDao.getPatientsUsingLuceneSearch("0001", "", null, "city_village", "", 100, 0, null,"", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, true); - + assertEquals(3, patients.size()); assertEquals("{\"National ID\" : \"NAT100010\"}", patients.get(0).getExtraIdentifiers()); assertEquals("GAN300001",patients.get(1).getIdentifier()); } - + @Test public void shouldNotReturnPatientsIfFilterOnAllIdenfiersIsTrueButNotAnExtraIdentifier() { List patients = patientDao.getPatientsUsingLuceneSearch("DLF200001", "", null, "city_village", "", 100, 0, null,"", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, true); - + assertEquals(0, patients.size()); } - + @Test public void shouldNotReturnDuplicatePatientsEvenIfTwoIdentifiersMatches() { List patients = patientDao.getPatientsUsingLuceneSearch("200006", "", null, "city_village", "", 100, 0, null,"", null, null, null, "c36006e5-9fbb-4f20-866b-0ece245615a1", false, true); - + assertEquals(1, patients.size()); PatientResponse patient = patients.get(0); assertTrue(patient.getIdentifier().contains("200006")); @@ -214,7 +217,7 @@ public void shouldNotReturnDuplicatePatientsEvenIfTwoIdentifiersMatches() { @Test public void shouldSearchSimilarPatientByPatientName() { - List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "", "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "", null, "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); assertEquals(2, patients.size()); PatientResponse patient1 = patients.get(0); @@ -229,7 +232,7 @@ public void shouldSearchSimilarPatientByPatientName() { @Test public void shouldSearchSimilarPatientByPatientNameAndUseLimitResult() { - List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "", "c36006e5-9fbb-4f20-866b-0ece245615a1", 1); + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "", null, "c36006e5-9fbb-4f20-866b-0ece245615a1", 1); assertEquals("Should limit number of results",1, patients.size()); PatientResponse patient1 = patients.get(0); @@ -240,25 +243,36 @@ public void shouldSearchSimilarPatientByPatientNameAndUseLimitResult() { @Test public void shouldSearchSimilarPatientByPatientNameAndGender() { - List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "F", "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); - PatientResponse patient1 = patients.get(0); - + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Peet", "F", null, "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); + assertEquals(1, patients.size()); + PatientResponse patient1 = patients.get(0); assertEquals(patient1.getGivenName(), "John"); assertEquals(patient1.getMiddleName(), "Peeter"); assertEquals(patient1.getFamilyName(), "Sinha"); } + @Test + public void shouldSearchSimilarPatientByNameAndBirthdate() { + Date birthdate = Timestamp.valueOf("1983-01-30 00:00:00"); + + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("Sinha", "", birthdate, "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); + + assertEquals(1, patients.size()); + PatientResponse patient = patients.get(0); + assertEquals(patient.getBirthDate(), birthdate); + } + @Test public void shouldReturnEmptyListIfAllSearchTermsAreEmpty() { - List patients = patientDao.getSimilarPatientsUsingLuceneSearch("", "", "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("", "", null, "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); assertEquals(0, patients.size()); } @Test public void shouldReturnResultsIfOneFieldIsSet() { - List patients = patientDao.getSimilarPatientsUsingLuceneSearch("", "F", "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); + List patients = patientDao.getSimilarPatientsUsingLuceneSearch("", "F", null, "c36006e5-9fbb-4f20-866b-0ece245615a1", 5); assertEquals(5, patients.size()); } diff --git a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImplTest.java b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImplTest.java index 2a6eba22c6..1d86feb7df 100644 --- a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImplTest.java +++ b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/service/impl/BahmniPatientServiceImplTest.java @@ -13,6 +13,7 @@ import org.openmrs.module.webservices.rest.web.RequestContext; import javax.servlet.http.HttpServletRequest; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -83,9 +84,10 @@ public void shouldCallGetSimilarPatientsUsingLuceneSearch() { PatientSearchParameters patientSearchParameters = new PatientSearchParameters(requestContext); patientSearchParameters.setName("John"); patientSearchParameters.setGender("M"); + patientSearchParameters.setBirthdate("1983-01-30 00:00:00"); patientSearchParameters.setLoginLocationUuid("someUUid"); bahmniPatientService.searchSimilarPatients(patientSearchParameters); - verify(patientDao).getSimilarPatientsUsingLuceneSearch("John", "M", "someUUid", 5); + verify(patientDao).getSimilarPatientsUsingLuceneSearch("John", "M", Timestamp.valueOf("1983-01-30 00:00:00"), "someUUid", 5); } } diff --git a/bahmnicore-omod/src/test/java/org/bahmni/module/bahmnicore/web/v1_0/controller/search/BahmniPatientSearchControllerIT.java b/bahmnicore-omod/src/test/java/org/bahmni/module/bahmnicore/web/v1_0/controller/search/BahmniPatientSearchControllerIT.java index a64bd1bb2f..49b934883e 100644 --- a/bahmnicore-omod/src/test/java/org/bahmni/module/bahmnicore/web/v1_0/controller/search/BahmniPatientSearchControllerIT.java +++ b/bahmnicore-omod/src/test/java/org/bahmni/module/bahmnicore/web/v1_0/controller/search/BahmniPatientSearchControllerIT.java @@ -33,8 +33,9 @@ public void shouldReturnPatientDetailsWhenUsingLuceneSearch() throws Exception { public void shouldReturnPatientDetailsWhenUsingSimilarSearch() throws Exception { MockHttpServletRequest request = newGetRequest("/rest/v1/bahmnicore/search/patient/similar"); request.setParameter("gender", "M"); + request.setParameter("birthdate", "1983-01-30 00:00:00"); request.setParameter("loginLocationUuid", "c36006e5-9fbb-4f20-866b-0ece245615a1"); - request.setParameter("q", "John"); + request.setParameter("q", "Sinha"); MockHttpServletResponse response = handle(request);