From 47fd64e8604f03b32e4b4643aeda3e1f2964534a Mon Sep 17 00:00:00 2001 From: MOHANKUMAR T Date: Thu, 30 May 2024 10:16:17 +0530 Subject: [PATCH 1/2] BAH-3892 | Support atomfeed test events for concepts with class Test --- .../labconcepts/contract/LabTest.java | 6 ++- .../labconcepts/mapper/ConceptExtension.java | 15 ++++++ .../labconcepts/mapper/DepartmentMapper.java | 4 +- .../labconcepts/mapper/PanelMapper.java | 2 +- .../labconcepts/mapper/SampleMapper.java | 5 +- .../mapper/TestAndPanelMapper.java | 9 ++-- .../labconcepts/model/event/LabTestEvent.java | 11 ++--- .../model/event/SaleableTypeEvent.java | 12 ++--- .../AllTestsPanelsConceptSetEventTest.java | 4 +- .../model/event/LabTestEventTest.java | 48 +++++++++++-------- .../contract/mapper/AllSamplesMapperTest.java | 2 +- .../mapper/AllTestsAndPanelsMapperTest.java | 6 +-- .../contract/mapper/LabTestMapperTest.java | 2 +- .../web/contract/mapper/PanelMapperTest.java | 4 +- 14 files changed, 79 insertions(+), 51 deletions(-) diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/contract/LabTest.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/contract/LabTest.java index 2649702cf4..c71f37da25 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/contract/LabTest.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/contract/LabTest.java @@ -3,14 +3,18 @@ import org.openmrs.ConceptAnswer; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.List; public class LabTest extends Resource { private String description; private String resultType; private String testUnitOfMeasure; private Double sortOrder; - public static final String LAB_TEST_CONCEPT_CLASS = "LabTest"; + + public static final List LAB_TEST_CONCEPT_CLASSES = Arrays.asList("LabTest","Test"); + private Collection codedTestAnswer; diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java index 0eada53a55..9d92ec5ef5 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java @@ -107,6 +107,10 @@ public static boolean isOfConceptClass(Concept concept, String conceptClassName) return concept.getConceptClass() != null && concept.getConceptClass().getName() != null && concept.getConceptClass().getName().equals(conceptClassName); } + public static boolean isOfAnyConceptClass(Concept concept, List conceptClassNames) { + return concept.getConceptClass() != null && concept.getConceptClass().getName() != null && conceptClassNames.contains(concept.getConceptClass().getName()); + } + public static boolean isOfConceptClassByUUID(Concept concept, String conceptClassUUID) { return concept.getConceptClass() != null && concept.getConceptClass().getUuid().equals(conceptClassUUID); } @@ -122,4 +126,15 @@ public static List getResourceReferencesOfConceptClass(List getResourceReferencesOfConceptClasses(List setMembers, List conceptClasses) { + ResourceReferenceMapper resourceReferenceMapper = new ResourceReferenceMapper(); + List resourceReferences = new ArrayList<>(); + for (Concept setMember : setMembers) { + if (isOfAnyConceptClass(setMember, conceptClasses)) { + resourceReferences.add(resourceReferenceMapper.map(setMember)); + } + } + return resourceReferences; + } + } diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/DepartmentMapper.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/DepartmentMapper.java index 45159ca3ee..22fe234cf6 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/DepartmentMapper.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/DepartmentMapper.java @@ -4,7 +4,7 @@ import org.bahmni.module.referencedata.labconcepts.contract.LabTest; import org.openmrs.Concept; -import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.getResourceReferencesOfConceptClass; +import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.getResourceReferencesOfConceptClasses; public class DepartmentMapper extends ResourceMapper { @@ -17,7 +17,7 @@ public Department map(Concept departmentConcept) { Department department = new Department(); department = mapResource(department, departmentConcept); department.setDescription(ConceptExtension.getDescriptionOrName(departmentConcept)); - department.setTests(getResourceReferencesOfConceptClass(departmentConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASS)); + department.setTests(getResourceReferencesOfConceptClasses(departmentConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASSES)); return department; } } diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/PanelMapper.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/PanelMapper.java index 538e628e31..9555e65a52 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/PanelMapper.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/PanelMapper.java @@ -14,7 +14,7 @@ public PanelMapper() { public Panel map(Concept panelConcept) { Panel panel = new Panel(); panel = mapResource(panel, panelConcept); - panel.setTests(ConceptExtension.getResourceReferencesOfConceptClass(panelConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASS)); + panel.setTests(ConceptExtension.getResourceReferencesOfConceptClasses(panelConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASSES)); panel.setSortOrder(getSortWeight(panelConcept)); panel.setDescription(ConceptExtension.getDescriptionOrName(panelConcept)); return panel; diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/SampleMapper.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/SampleMapper.java index 8a95d771c4..4dab4563c0 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/SampleMapper.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/SampleMapper.java @@ -8,6 +8,7 @@ import org.openmrs.api.context.Context; import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.getResourceReferencesOfConceptClass; +import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.getResourceReferencesOfConceptClasses; public class SampleMapper extends ResourceMapper { public SampleMapper() { @@ -20,9 +21,9 @@ public Sample map(Concept sampleConcept) { sample = mapResource(sample, sampleConcept); sample.setShortName(sampleConcept.getShortestName(Context.getLocale(), false).getName()); sample.setSortOrder(getSortWeight(sampleConcept)); - sample.setTests(getResourceReferencesOfConceptClass(sampleConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASS)); + sample.setTests(getResourceReferencesOfConceptClasses(sampleConcept.getSetMembers(), LabTest.LAB_TEST_CONCEPT_CLASSES)); sample.setPanels(getResourceReferencesOfConceptClass(sampleConcept.getSetMembers(), Panel.LAB_SET_CONCEPT_CLASS)); return sample; } -} \ No newline at end of file +} diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/TestAndPanelMapper.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/TestAndPanelMapper.java index b1ea11997b..5789fba58a 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/TestAndPanelMapper.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/TestAndPanelMapper.java @@ -6,9 +6,8 @@ import org.openmrs.Concept; import org.openmrs.ConceptClass; -import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASS; -import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.isOfConceptClass; -import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.isOfConceptClassByUUID; +import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASSES; +import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.*; public class TestAndPanelMapper extends ResourceMapper { @@ -31,7 +30,7 @@ public TestsAndPanels map(Concept sampleConcept) { } private void addConcept(TestsAndPanels testsAndPanels, Concept concept) { - if (isOfConceptClass(concept, LAB_TEST_CONCEPT_CLASS)) { + if (isOfAnyConceptClass(concept, LAB_TEST_CONCEPT_CLASSES)) { LabTest test = labTestMapper.map(concept); testsAndPanels.addTest(test); } else if (isOfConceptClassByUUID(concept, ConceptClass.LABSET_UUID)) { @@ -39,4 +38,4 @@ private void addConcept(TestsAndPanels testsAndPanels, Concept concept) { testsAndPanels.addPanel(panel); } } -} \ No newline at end of file +} diff --git a/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEvent.java b/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEvent.java index 9aa4ea3120..06926f13d2 100644 --- a/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEvent.java +++ b/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEvent.java @@ -10,8 +10,8 @@ import java.util.List; import java.util.UUID; -import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASS; -import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.isOfConceptClass; +import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASSES; +import static org.bahmni.module.referencedata.labconcepts.mapper.ConceptExtension.isOfAnyConceptClass; public class LabTestEvent extends ConceptOperationEvent { @@ -20,17 +20,16 @@ public LabTestEvent(String url, String category, String title) { } public boolean isResourceConcept(Concept concept) { - return isOfConceptClass(concept, LAB_TEST_CONCEPT_CLASS) || (getParentOfTypeLabTest(concept) != null); + return isOfAnyConceptClass(concept, LAB_TEST_CONCEPT_CLASSES) || (getParentOfTypeLabTest(concept) != null); } private Concept getParentOfTypeLabTest(Concept concept) { ConceptHelper conceptHelper = new ConceptHelper(Context.getConceptService()); List parentConcepts = conceptHelper.getParentConcepts(concept); for (Concept parentConcept : parentConcepts) { - if (isOfConceptClass(parentConcept, LAB_TEST_CONCEPT_CLASS)) { + if (isOfAnyConceptClass(parentConcept, LAB_TEST_CONCEPT_CLASSES)) { return parentConcept; } - ; } return null; } @@ -38,7 +37,7 @@ private Concept getParentOfTypeLabTest(Concept concept) { @Override public Event asAtomFeedEvent(Object[] arguments) throws URISyntaxException { Concept concept = (Concept) arguments[0]; - if (!isOfConceptClass(concept, LAB_TEST_CONCEPT_CLASS)) { + if (!isOfAnyConceptClass(concept, LAB_TEST_CONCEPT_CLASSES)) { concept = getParentOfTypeLabTest(concept); } String url = String.format(this.url, title, concept.getUuid()); diff --git a/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/SaleableTypeEvent.java b/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/SaleableTypeEvent.java index 18bf747ae8..0deaaef970 100644 --- a/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/SaleableTypeEvent.java +++ b/reference-data/omod/src/main/java/org/bahmni/module/referencedata/labconcepts/model/event/SaleableTypeEvent.java @@ -9,15 +9,12 @@ import java.net.URI; import java.net.URISyntaxException; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.UUID; +import java.util.*; import static org.bahmni.module.referencedata.labconcepts.contract.AllSamples.ALL_SAMPLES; import static org.bahmni.module.referencedata.labconcepts.contract.AllTestsAndPanels.ALL_TESTS_AND_PANELS; import static org.bahmni.module.referencedata.labconcepts.contract.Department.DEPARTMENT_CONCEPT_CLASS; -import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASS; +import static org.bahmni.module.referencedata.labconcepts.contract.LabTest.LAB_TEST_CONCEPT_CLASSES; import static org.bahmni.module.referencedata.labconcepts.contract.Panel.LAB_SET_CONCEPT_CLASS; import static org.bahmni.module.referencedata.labconcepts.contract.RadiologyTest.RADIOLOGY_TEST_CONCEPT_CLASS; import static org.bahmni.module.referencedata.labconcepts.contract.Sample.SAMPLE_CONCEPT_CLASS; @@ -31,7 +28,10 @@ public class SaleableTypeEvent implements ConceptServiceOperationEvent { private final String category; private List supportedOperations = Arrays.asList("saveConcept", "updateConcept", "retireConcept", "purgeConcept"); - private List unhandledClasses = Arrays.asList(LAB_TEST_CONCEPT_CLASS, LAB_SET_CONCEPT_CLASS, SAMPLE_CONCEPT_CLASS, DEPARTMENT_CONCEPT_CLASS, RADIOLOGY_TEST_CONCEPT_CLASS); + private List unhandledClasses = new ArrayList(){{ + addAll(Arrays.asList(LAB_SET_CONCEPT_CLASS, SAMPLE_CONCEPT_CLASS, DEPARTMENT_CONCEPT_CLASS, RADIOLOGY_TEST_CONCEPT_CLASS)); + addAll(LAB_TEST_CONCEPT_CLASSES); + }}; private List unhandledConcepsByName = Arrays.asList(ALL_SAMPLES, ALL_TESTS_AND_PANELS); public SaleableTypeEvent(String url, String category) { diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/AllTestsPanelsConceptSetEventTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/AllTestsPanelsConceptSetEventTest.java index 753f3f7cff..6ab6cfea55 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/AllTestsPanelsConceptSetEventTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/AllTestsPanelsConceptSetEventTest.java @@ -46,7 +46,7 @@ public void setUp() { PowerMockito.mockStatic(Context.class); when(Context.getLocale()).thenReturn(defaultLocale); when(Context.getConceptService()).thenReturn(conceptService); - testConcept = new ConceptBuilder().withClass(LabTest.LAB_TEST_CONCEPT_CLASS).build(); + testConcept = new ConceptBuilder().withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).build(); panelConcept = new ConceptBuilder().withClassUUID(ConceptClass.LABSET_UUID).build(); parentConcept = new ConceptBuilder().withName(AllTestsAndPanels.ALL_TESTS_AND_PANELS).withClass("ConvSet").withSetMember(testConcept).withSetMember(panelConcept).build(); } @@ -60,4 +60,4 @@ public void shouldCreateOneEventForAllTestsAndPanelsAndSetMembers() throws Excep assertEquals(ConceptServiceEventFactory.TESTS_AND_PANEL, event.getTitle()); assertEquals("lab", event.getCategory()); } -} \ No newline at end of file +} diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java index dce35e3e2c..4b61d6e9f2 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java @@ -34,8 +34,10 @@ @RunWith(PowerMockRunner.class) public class LabTestEventTest { public static final String TEST_CONCEPT_UUID = "aebc57b7-0683-464e-ac48-48b8838abdfc"; + public static final String LAB_TEST_CONCEPT_UUID = "9b11d2d1-c7ea-40f7-8616-be9bec4c6bb7"; - private Concept concept; + private Concept conceptWithLabTestClass; + private Concept conceptWithTestClass; @Mock private ConceptService conceptService; @@ -45,11 +47,13 @@ public class LabTestEventTest { public void setup() { MockitoAnnotations.initMocks(this); - concept = new ConceptBuilder().withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withUUID(TEST_CONCEPT_UUID).build(); + conceptWithLabTestClass = new ConceptBuilder().withClass("LabTest").withUUID(LAB_TEST_CONCEPT_UUID).build(); + conceptWithTestClass = new ConceptBuilder().withClass("Test").withUUID(TEST_CONCEPT_UUID).build(); - parentConcept = new ConceptBuilder().withName(AllTestsAndPanels.ALL_TESTS_AND_PANELS).withSetMember(concept).build(); + parentConcept = new ConceptBuilder().withName(AllTestsAndPanels.ALL_TESTS_AND_PANELS).withSetMember(conceptWithLabTestClass).build(); + parentConcept.addSetMember(conceptWithTestClass); - List conceptSets = getConceptSets(parentConcept, concept); + List conceptSets = getConceptSets(parentConcept, conceptWithLabTestClass); when(conceptService.getSetsContainingConcept(any(Concept.class))).thenReturn(conceptSets); @@ -61,26 +65,32 @@ public void setup() { @Test - public void createEventForTestEvent() throws Exception { - Event event = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{concept}).get(0); - Event anotherEvent = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{concept}).get(0); - assertNotNull(event); - assertFalse(event.getUuid().equals(anotherEvent.getUuid())); - assertEquals(event.getTitle(), ConceptServiceEventFactory.TEST); - assertEquals(event.getCategory(), ConceptServiceEventFactory.LAB); + public void createEventForTestEventIfConceptClassIsLabTestOrTest() throws Exception { + Event eventForLabTestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithLabTestClass}).get(0); + Event anotherEventForLabTestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithLabTestClass}).get(0); + Event eventForTestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithTestClass}).get(0); + Event anotherEventForTestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithTestClass}).get(0); + assertNotNull(eventForLabTestConceptClass); + assertNotNull(eventForTestConceptClass); + assertFalse(eventForLabTestConceptClass.getUuid().equals(anotherEventForLabTestConceptClass.getUuid())); + assertEquals(eventForLabTestConceptClass.getTitle(), ConceptServiceEventFactory.TEST); + assertEquals(eventForLabTestConceptClass.getCategory(), ConceptServiceEventFactory.LAB); + assertFalse(eventForTestConceptClass.getUuid().equals(anotherEventForTestConceptClass.getUuid())); + assertEquals(eventForTestConceptClass.getTitle(), ConceptServiceEventFactory.TEST); + assertEquals(eventForTestConceptClass.getCategory(), ConceptServiceEventFactory.LAB); } @Test public void shouldNotCreateEventForTestEventIfThereIsDifferentConceptClass() throws Exception { - concept = new ConceptBuilder().withClassUUID("some").withClass("some").withUUID(TEST_CONCEPT_UUID).build(); - List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{concept}); + conceptWithLabTestClass = new ConceptBuilder().withClassUUID("some").withClass("some").withUUID(TEST_CONCEPT_UUID).build(); + List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithLabTestClass}); assertTrue(events.isEmpty()); } @Test public void shouldCreateEventForTestEventIfParentConceptIsMissing() throws Exception { when(conceptService.getSetsContainingConcept(any(Concept.class))).thenReturn(new ArrayList()); - List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{concept}); + List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithLabTestClass}); Event event = events.get(0); assertNotNull(event); assertEquals(event.getTitle(), ConceptServiceEventFactory.TEST); @@ -90,9 +100,9 @@ public void shouldCreateEventForTestEventIfParentConceptIsMissing() throws Excep @Test public void shouldCreateEventForTestEventIfParentConceptIsWrong() throws Exception { - parentConcept = new ConceptBuilder().withName("Some wrong name").withSetMember(concept).build(); - when(conceptService.getSetsContainingConcept(any(Concept.class))).thenReturn(getConceptSets(parentConcept, concept)); - List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{concept}); + parentConcept = new ConceptBuilder().withName("Some wrong name").withSetMember(conceptWithLabTestClass).build(); + when(conceptService.getSetsContainingConcept(any(Concept.class))).thenReturn(getConceptSets(parentConcept, conceptWithLabTestClass)); + List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithLabTestClass}); Event event = events.get(0); assertNotNull(event); assertEquals(event.getTitle(), ConceptServiceEventFactory.TEST); @@ -102,7 +112,7 @@ public void shouldCreateEventForTestEventIfParentConceptIsWrong() throws Excepti @Test public void createEventForTestWithParentConceptMissing() throws Exception { - Concept testConcept = new ConceptBuilder().withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withUUID("testUUID").withClass("LabTest").build(); + Concept testConcept = new ConceptBuilder().withUUID("testUUID").withClass("LabTest").build(); List events = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{testConcept}); Event event = events.get(0); assertNotNull(event); @@ -110,4 +120,4 @@ public void createEventForTestWithParentConceptMissing() throws Exception { assertEquals(event.getCategory(), ConceptServiceEventFactory.LAB); } -} \ No newline at end of file +} diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllSamplesMapperTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllSamplesMapperTest.java index 921dd8ca41..93b070b8bb 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllSamplesMapperTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllSamplesMapperTest.java @@ -56,7 +56,7 @@ public void setUp() throws Exception { Locale defaultLocale = new Locale("en", "GB"); PowerMockito.mockStatic(Context.class); when(Context.getLocale()).thenReturn(defaultLocale); - Concept testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withDescription("SomeDescription") + Concept testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).withDescription("SomeDescription") .withDateChanged(dateChanged).withShortName("ShortName").withName("Test concept").withDataType(ConceptDatatype.NUMERIC).build(); sampleConcept = new ConceptBuilder().withUUID("Sample UUID").withDateCreated(dateCreated).withClass(Sample.SAMPLE_CONCEPT_CLASS). diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllTestsAndPanelsMapperTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllTestsAndPanelsMapperTest.java index 4d743c0aeb..3335cfa7ce 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllTestsAndPanelsMapperTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/AllTestsAndPanelsMapperTest.java @@ -58,7 +58,7 @@ public void setUp() throws Exception { PowerMockito.mockStatic(Context.class); when(Context.getLocale()).thenReturn(defaultLocale); - testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withDescription("SomeDescription") + testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).withDescription("SomeDescription") .withDateChanged(dateChanged).withShortName("ShortName").withName("Test concept").withDataType(ConceptDatatype.NUMERIC).build(); panelConcept = new ConceptBuilder().withUUID("Panel UUID").withDateCreated(dateCreated).withClassUUID(ConceptClass.LABSET_UUID).withDescription("SomeDescription") @@ -94,7 +94,7 @@ public void mapAllTestsAndPanelsFieldsFromConcept() throws Exception { @Test public void shouldNotMapTheTestOrPanelWhichIsRetired() throws Exception { - Concept testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withDescription("SomeDescription") + Concept testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).withDescription("SomeDescription") .withDateChanged(dateChanged).withShortName("ShortName").withName("Test concept").withDataType(ConceptDatatype.NUMERIC).withRetired(true).build(); Concept panelConcept = new ConceptBuilder().withUUID("Panel UUID").withDateCreated(dateCreated).withClassUUID(ConceptClass.LABSET_UUID).withDescription("SomeDescription") .withSetMember(testConcept).withDateChanged(dateChanged).withShortName("ShortName").withName("Panel Name").withDataType(ConceptDatatype.NUMERIC).withRetired(true).build(); @@ -115,4 +115,4 @@ public void shouldNotMapTheTestOrPanelWhichIsRetired() throws Exception { Set panels = testsAndPanels.getPanels(); assertEquals(0, panels.size()); } -} \ No newline at end of file +} diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/LabTestMapperTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/LabTestMapperTest.java index c559afd8f4..135e1b1805 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/LabTestMapperTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/LabTestMapperTest.java @@ -65,7 +65,7 @@ public void setUp() throws Exception { Locale defaultLocale = new Locale("en", "GB"); PowerMockito.mockStatic(Context.class); when(Context.getLocale()).thenReturn(defaultLocale); - testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withDescription("SomeDescription") + testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).withDescription("SomeDescription") .withDateChanged(dateChanged).withShortName("ShortName").withName("Test Name Here").withDataType(ConceptDatatype.NUMERIC).build(); Concept testAndPanelsConcept = new ConceptBuilder().withUUID("Test and Panels UUID").withDateCreated(dateCreated).withClassUUID(ConceptClass.CONVSET_UUID) .withDateChanged(dateChanged).withShortName("ShortName").withName(AllTestsAndPanels.ALL_TESTS_AND_PANELS).withSetMember(testConcept).build(); diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/PanelMapperTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/PanelMapperTest.java index d36951de14..37a9fc3aca 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/PanelMapperTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/web/contract/mapper/PanelMapperTest.java @@ -63,7 +63,7 @@ public void setUp() throws Exception { Locale defaultLocale = new Locale("en", "GB"); PowerMockito.mockStatic(Context.class); when(Context.getLocale()).thenReturn(defaultLocale); - testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASS).withDescription("SomeDescription") + testConcept = new ConceptBuilder().withUUID("Test UUID").withDateCreated(dateCreated).withClass(LabTest.LAB_TEST_CONCEPT_CLASSES.get(0)).withDescription("SomeDescription") .withDateChanged(dateChanged).withShortName("ShortName").withName("Panel Name Here").withDataType(ConceptDatatype.NUMERIC).build(); panelConcept = new ConceptBuilder().withUUID("Panel UUID").withDateCreated(dateCreated).withClassUUID(ConceptClass.LABSET_UUID).withDescription("SomeDescription") .withSetMember(testConcept).withDateChanged(dateChanged).withShortName("ShortName").withName("Panel Name Here").withDataType(ConceptDatatype.NUMERIC).build(); @@ -129,4 +129,4 @@ public void shouldSetNameIfDescriptionIsNull() throws Exception { Panel panelData = panelMapper.map(panelConceptWithoutDescription); assertEquals("Panel Name Here", panelData.getDescription()); } -} \ No newline at end of file +} From 87b29a72e9288dbde56b8f96d1a76a95c21f5d82 Mon Sep 17 00:00:00 2001 From: MOHANKUMAR T Date: Tue, 4 Jun 2024 15:33:47 +0530 Subject: [PATCH 2/2] BAH-3892 | Refactor. Support case-insensitive match for concept class names --- .../labconcepts/mapper/ConceptExtension.java | 10 +++++++++- .../labconcepts/model/event/LabTestEventTest.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java index 9d92ec5ef5..657d7f4a13 100644 --- a/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java +++ b/reference-data/api/src/main/java/org/bahmni/module/referencedata/labconcepts/mapper/ConceptExtension.java @@ -102,13 +102,21 @@ private static boolean isFullySpecifiedName(ConceptName conceptName) { return ObjectUtils.equals(conceptName.getConceptNameType(), ConceptNameType.FULLY_SPECIFIED); } + private static boolean containsClassName(String conceptClassName, List classNames){ + for (String className : classNames) { + if (className.equalsIgnoreCase(conceptClassName)) { + return true; + } + } + return false; + } public static boolean isOfConceptClass(Concept concept, String conceptClassName) { return concept.getConceptClass() != null && concept.getConceptClass().getName() != null && concept.getConceptClass().getName().equals(conceptClassName); } public static boolean isOfAnyConceptClass(Concept concept, List conceptClassNames) { - return concept.getConceptClass() != null && concept.getConceptClass().getName() != null && conceptClassNames.contains(concept.getConceptClass().getName()); + return concept.getConceptClass() != null && concept.getConceptClass().getName() != null && containsClassName(concept.getConceptClass().getName(),conceptClassNames); } public static boolean isOfConceptClassByUUID(Concept concept, String conceptClassUUID) { diff --git a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java index 4b61d6e9f2..bd489ac4be 100644 --- a/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java +++ b/reference-data/omod/src/test/java/org/bahmni/module/referencedata/labconcepts/model/event/LabTestEventTest.java @@ -80,6 +80,17 @@ public void createEventForTestEventIfConceptClassIsLabTestOrTest() throws Except assertEquals(eventForTestConceptClass.getCategory(), ConceptServiceEventFactory.LAB); } + @Test + public void shouldCreateEventForCaseInsensitiveConceptClassMatches() throws Exception { + Concept conceptWithClassLabTest = new ConceptBuilder().withClass("LabTest").withUUID(LAB_TEST_CONCEPT_UUID).build(); + Concept conceptWithClasslabtest = new ConceptBuilder().withClass("labtest").withUUID("9b11d2d1-c7ea-40f7-8616-be9bec4c6b98").build(); + Event eventForLabTestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithClassLabTest}).get(0); + Event eventForlabtestConceptClass = new Operation(ConceptService.class.getMethod("saveConcept", Concept.class)).apply(new Object[]{conceptWithClasslabtest}).get(0); + assertNotNull(eventForLabTestConceptClass); + assertNotNull(eventForlabtestConceptClass); + + } + @Test public void shouldNotCreateEventForTestEventIfThereIsDifferentConceptClass() throws Exception { conceptWithLabTestClass = new ConceptBuilder().withClassUUID("some").withClass("some").withUUID(TEST_CONCEPT_UUID).build();