From 1364cd25521896475c2d393a3f630c894cf2aa85 Mon Sep 17 00:00:00 2001 From: MOHANKUMAR T Date: Fri, 2 Feb 2024 22:37:40 +0530 Subject: [PATCH] BAH-3513 | Fix. Disable encounter search when patient does not have visit. - When a new patient uuid without visit is passed, encounterSearch happens without any criteria leading to OutOfMemoryError. --- .../impl/BahmniFormDetailsServiceImpl.java | 4 ++ .../BahmniFormDetailsServiceImplTest.java | 43 +++++++++++-------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImpl.java b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImpl.java index c6d369459f..7e3699bcbb 100644 --- a/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImpl.java +++ b/bahmnicore-api/src/main/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImpl.java @@ -57,6 +57,10 @@ public BahmniFormDetailsServiceImpl(PatientService patientService, VisitService public Collection getFormDetails(String patientUuid, FormType formType, int numberOfVisits) { Patient patient = getPatient(patientUuid); List visits = visitService.getVisitsByPatient(patient); + + if(visits.isEmpty()) + return Collections.emptyList(); + List limitedVisits = limitVisits(visits, numberOfVisits); List encounters = getEncounters(limitedVisits); diff --git a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImplTest.java b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImplTest.java index 5ec1a9a612..84d96f4bc6 100644 --- a/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImplTest.java +++ b/bahmnicore-api/src/test/java/org/bahmni/module/bahmnicore/forms2/service/impl/BahmniFormDetailsServiceImplTest.java @@ -166,14 +166,36 @@ public void shouldReturnFormDetailsGivenPatientUuidFormTypeAsV2AndNumberOfVisits @Test public void shouldReturnEmptyCollectionsOfFormDetailsIfPatientDoesNotHaveVisits() { when(visitService.getVisitsByPatient(patient)).thenReturn(Collections.emptyList()); - shouldReturnEmptyCollectionsOfFormDetailsIfPatientDoesNotHaveVisitsOrEncounters(); + Collection formDetailsCollection = bahmniFormDetailsService.getFormDetails(patientUuid, FormType.FORMS2, -1); + + assertEquals(0, formDetailsCollection.size()); + + verify(patientService, times(1)).getPatientByUuid(patientUuid); + verify(visitService, times(1)).getVisitsByPatient(patient); + verify(encounterService, times(0)).getEncounters(any(EncounterSearchCriteria.class)); + + verify(patient, times(0)).getPerson(); + verify(obsService, times(0)).getObservations(anyListOf(Person.class), + anyListOf(Encounter.class), any(), any(), any(), any(), any(), any(), any(), any(), any(), + any(Boolean.class)); } @Test public void shouldReturnEmptyCollectionsOfFormDetailsIfPatientDoesNotHaveEncounters() { when(encounterService.getEncounters(any(EncounterSearchCriteria.class))).thenReturn(Collections.emptyList()); - shouldReturnEmptyCollectionsOfFormDetailsIfPatientDoesNotHaveVisitsOrEncounters(); + Collection formDetailsCollection = bahmniFormDetailsService.getFormDetails(patientUuid, FormType.FORMS2, -1); + + assertEquals(0, formDetailsCollection.size()); + + verify(patientService, times(1)).getPatientByUuid(patientUuid); + verify(visitService, times(1)).getVisitsByPatient(patient); + verify(encounterService, times(1)).getEncounters(any(EncounterSearchCriteria.class)); + + verify(patient, times(0)).getPerson(); + verify(obsService, times(0)).getObservations(anyListOf(Person.class), + anyListOf(Encounter.class), any(), any(), any(), any(), any(), any(), any(), any(), any(), + any(Boolean.class)); } @Test @@ -314,21 +336,4 @@ private void verifyCommonMockCalls() { any(Boolean.class)); } - private void shouldReturnEmptyCollectionsOfFormDetailsIfPatientDoesNotHaveVisitsOrEncounters() { - - Collection formDetailsCollection = bahmniFormDetailsService.getFormDetails(patientUuid, FormType.FORMS2, -1); - - assertEquals(0, formDetailsCollection.size()); - - verify(patientService, times(1)).getPatientByUuid(patientUuid); - verify(visitService, times(1)).getVisitsByPatient(patient); - verify(encounterService, times(1)).getEncounters(any(EncounterSearchCriteria.class)); - - verify(patient, times(0)).getPerson(); - verify(obsService, times(0)).getObservations(anyListOf(Person.class), - anyListOf(Encounter.class), any(), any(), any(), any(), any(), any(), any(), any(), any(), - any(Boolean.class)); - - } - }