From b7d3639b50da5fb825b250b198710db3f6b0a478 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Tue, 17 Sep 2024 23:58:04 +0300 Subject: [PATCH 01/14] Adding referencer range parser and loader classes --- .../openmrs/module/initializer/Domain.java | 1 + .../api/c/ConceptReferenceRangeCsvParser.java | 50 ++++++++++++++++ .../c/ConceptReferenceRangeLineProcessor.java | 59 +++++++++++++++++++ .../api/c/ConceptReferenceRangeLoader.java | 19 ++++++ pom.xml | 3 +- 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java create mode 100644 api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java create mode 100644 api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java diff --git a/api/src/main/java/org/openmrs/module/initializer/Domain.java b/api/src/main/java/org/openmrs/module/initializer/Domain.java index 10eb67ad..e06f2e32 100644 --- a/api/src/main/java/org/openmrs/module/initializer/Domain.java +++ b/api/src/main/java/org/openmrs/module/initializer/Domain.java @@ -26,6 +26,7 @@ public enum Domain { OCL, CONCEPTS, CONCEPT_SETS, + CONCEPT_REFERENCE_RANGE, BILLABLE_SERVICES, PAYMENT_MODES, CASH_POINTS, diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java new file mode 100644 index 00000000..606fb98f --- /dev/null +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java @@ -0,0 +1,50 @@ +package org.openmrs.module.initializer.api.c; + +import org.apache.commons.lang3.StringUtils; +import org.openmrs.Concept; +import org.openmrs.ConceptReferenceRange; +import org.openmrs.api.ConceptService; +import org.openmrs.module.initializer.Domain; +import org.openmrs.module.initializer.api.CsvLine; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +@Component +public class ConceptReferenceRangeCsvParser extends CsvParser> { + + private final ConceptService conceptService; + + @Autowired + public ConceptReferenceRangeCsvParser(@Qualifier("conceptService") ConceptService conceptService, + ConceptReferenceRangeLineProcessor processor) { + super(processor); + this.conceptService = conceptService; + } + + @Override + public Domain getDomain() { + return Domain.CONCEPT_REFERENCE_RANGE; + } + + @Override + public Concept bootstrap(CsvLine line) throws IllegalArgumentException { + String uuid = line.getUuid(); + + ConceptReferenceRange referenceRange = conceptService.getconceptReferenceRangeByUuid(uuid); + + if (referenceRange == null) { + referenceRange = new ConceptReferenceRange(); + if (!StringUtils.isEmpty(uuid)) { + referenceRange.setUuid(uuid); + } + } + + return concept; + } + + @Override + public Concept save(ConceptReferenceRange instance) { + return conceptService.saveConcept(instance); + } +} diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java new file mode 100644 index 00000000..49022da3 --- /dev/null +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java @@ -0,0 +1,59 @@ +package org.openmrs.module.initializer.api.c; + +import org.openmrs.ConceptNumeric; +import org.openmrs.api.ConceptService; +import org.openmrs.module.initializer.api.CsvLine; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +@Component("initializer.conceptReferenceRangeLineProcessor") +public class ConceptReferenceRangeLineProcessor extends BaseLineProcessor { + + + private final String HEADER_CONCEPT_NUMERIC_UUID = "Concept Numeric uuid"; + + private final String HEADER_AH = "Absolute high"; + + private final String HEADER_CH = "Critical high"; + + private final String HEADER_NH = "Normal high"; + + private final String HEADER_AL = "Absolute low"; + + private final String HEADER_CL = "Critical low"; + + private final String HEADER_NL = "Normal low"; + + private final String HEADER_CRITERIA = "Criteria"; + + private ConceptService conceptService; + + @Autowired + public ConceptReferenceRangeLineProcessor(@Qualifier("conceptService") ConceptService conceptService) { + this.conceptService = conceptService; + } + + public ConceptReferenceRange fill(ConceptReferenceRange referenceRange, CsvLine line) throws IllegalArgumentException { + ConceptNumeric conceptNumeric = conceptService.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID)); + + if (conceptNumeric == null) { // below overrides any other processors work, so this one should be called first + throw new IllegalArgumentException("No concept numeric found for '" + line.get(HEADER_CONCEPT_NUMERIC_UUID) + "'"); + } + + if (referenceRange == null) { + referenceRange = new ConceptReferenceRange(); + } + + referenceRange.setHiAbsolute(line.getDouble(HEADER_AH)); + referenceRange.setHiCritical(line.getDouble(HEADER_CH)); + referenceRange.setHiNormal(line.getDouble(HEADER_NH)); + referenceRange.setLowAbsolute(line.getDouble(HEADER_AL)); + referenceRange.setLowCritical(line.getDouble(HEADER_CL)); + referenceRange.setLowNormal(line.getDouble(HEADER_NL)); + referenceRange.setConceptNumeric(conceptNumeric); + referenceRange.setCriteria(line.getString(HEADER_CRITERIA)); + + return referenceRange; + } +} diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java new file mode 100644 index 00000000..7dd1c23e --- /dev/null +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java @@ -0,0 +1,19 @@ +package org.openmrs.module.initializer.api.c; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; + +@Component +public class ConceptReferenceRangeLoader extends BaseCsvLoader { + + @Autowired + public void setParser(ConceptsCsvParser parser) { + this.parser = parser; + } + + @Override + protected void preload(File file) { + } +} diff --git a/pom.xml b/pom.xml index 6ce21311..6e1ce46c 100644 --- a/pom.xml +++ b/pom.xml @@ -58,8 +58,9 @@ 2.3.6 2.4.5 2.5.5 + 2.7.0-SNAPSHOT - ${openmrsVersion2.1} + ${openmrsVersion2.7} 1.2.1 From 50220a7f961b09622eea2da30507958124752545 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Wed, 18 Sep 2024 13:57:55 +0300 Subject: [PATCH 02/14] Updating core version --- .../api/c/ConceptReferenceRangeCsvParser.java | 10 ++++++---- .../api/c/ConceptReferenceRangeLineProcessor.java | 2 ++ .../initializer/api/c/ConceptReferenceRangeLoader.java | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java index 606fb98f..cee79d02 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java @@ -5,7 +5,9 @@ import org.openmrs.ConceptReferenceRange; import org.openmrs.api.ConceptService; import org.openmrs.module.initializer.Domain; +import org.openmrs.module.initializer.api.BaseLineProcessor; import org.openmrs.module.initializer.api.CsvLine; +import org.openmrs.module.initializer.api.CsvParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @@ -28,7 +30,7 @@ public Domain getDomain() { } @Override - public Concept bootstrap(CsvLine line) throws IllegalArgumentException { + public ConceptReferenceRange bootstrap(CsvLine line) throws IllegalArgumentException { String uuid = line.getUuid(); ConceptReferenceRange referenceRange = conceptService.getconceptReferenceRangeByUuid(uuid); @@ -40,11 +42,11 @@ public Concept bootstrap(CsvLine line) throws IllegalArgumentException { } } - return concept; + return referenceRange; } @Override - public Concept save(ConceptReferenceRange instance) { - return conceptService.saveConcept(instance); + public ConceptReferenceRange save(ConceptReferenceRange instance) { + return conceptService.saveConceptReferenceRange(instance); } } diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java index 49022da3..56e38938 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java @@ -1,7 +1,9 @@ package org.openmrs.module.initializer.api.c; import org.openmrs.ConceptNumeric; +import org.openmrs.ConceptReferenceRange; import org.openmrs.api.ConceptService; +import org.openmrs.module.initializer.api.BaseLineProcessor; import org.openmrs.module.initializer.api.CsvLine; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java index 7dd1c23e..70c155c7 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java @@ -1,5 +1,7 @@ package org.openmrs.module.initializer.api.c; +import org.openmrs.ConceptReferenceRange; +import org.openmrs.module.initializer.api.loaders.BaseCsvLoader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -9,7 +11,7 @@ public class ConceptReferenceRangeLoader extends BaseCsvLoader { @Autowired - public void setParser(ConceptsCsvParser parser) { + public void setParser(ConceptReferenceRangeCsvParser parser) { this.parser = parser; } From 6588fb2af0ed2cc37e9220c9b18739cc65c21673 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Wed, 18 Sep 2024 18:45:45 +0300 Subject: [PATCH 03/14] Adding reference range csv --- .../ConceptReferenceRangeIntegrationTest.java | 45 +++++++++++++++++++ .../concepts/concept_referenceranges.csv | 4 ++ 2 files changed, 49 insertions(+) create mode 100644 api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java create mode 100644 api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv diff --git a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java new file mode 100644 index 00000000..1e5fb18b --- /dev/null +++ b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java @@ -0,0 +1,45 @@ +package org.openmrs.module.initializer.api; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.openmrs.api.ConceptService; +import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; +import org.openmrs.module.initializer.api.c.ConceptReferenceRangeLoader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { + + @Autowired + private ConceptService conceptService; + + @Autowired + private ConceptReferenceRangeLoader conceptReferenceRangeLoader; + + @Autowired + @Qualifier("sessionFactory") + private SessionFactory sessionFactory; + + @Test + public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { + conceptReferenceRangeLoader.load(); + + Session session = sessionFactory.getCurrentSession(); + Query getObsCategoryByCategoryQuery = session.createQuery("from " + ConceptReferenceRange.class.getSimpleName() + + " where observationCategory = :observationCategory"); + + { + ConceptReferenceRange referenceRange = conceptService.getConceptReferenceRangeByUuid("69d620da-93c4-4767-916e-48f5fe8824c4"); + Assert.assertNotNull(referenceRange); + Assert.assertEquals("Reference range 1", referenceRange.getName()); + } + + { + conceptService.getConceptReferenceRangesByConcept(); + assertThat(observationCategories, hasSize(1)); + } + } +} diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv new file mode 100644 index 00000000..126350e8 --- /dev/null +++ b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv @@ -0,0 +1,4 @@ +Uuid,Concept Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria +bc059100-4ace-4af5-afbf-2da7f3a34acf,30247229-052c-400b-a823-cb66b1c506c7,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 +930e1fb4-490d-45fe-a137-0cd941c76124,,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 +b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,,60,70,80,120,130,150, $fn.getCurrentHour() > 2 From cf86dc030535dfd5b99e0082742e07eeeaea25e7 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Wed, 18 Sep 2024 23:24:10 +0300 Subject: [PATCH 04/14] Adding integration test --- .../ConceptReferenceRangeIntegrationTest.java | 43 ++++++++----------- pom.xml | 2 +- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java index 1e5fb18b..bc515f31 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java @@ -5,6 +5,7 @@ import org.hibernate.SessionFactory; import org.junit.Assert; import org.junit.jupiter.api.Test; +import org.openmrs.ConceptReferenceRange; import org.openmrs.api.ConceptService; import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; import org.openmrs.module.initializer.api.c.ConceptReferenceRangeLoader; @@ -13,33 +14,27 @@ public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { - @Autowired - private ConceptService conceptService; + @Autowired + private ConceptService conceptService; - @Autowired - private ConceptReferenceRangeLoader conceptReferenceRangeLoader; + @Autowired + private ConceptReferenceRangeLoader conceptReferenceRangeLoader; - @Autowired - @Qualifier("sessionFactory") - private SessionFactory sessionFactory; + @Autowired + @Qualifier("sessionFactory") + private SessionFactory sessionFactory; - @Test - public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { - conceptReferenceRangeLoader.load(); + @Test + public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { + conceptReferenceRangeLoader.load(); - Session session = sessionFactory.getCurrentSession(); - Query getObsCategoryByCategoryQuery = session.createQuery("from " + ConceptReferenceRange.class.getSimpleName() - + " where observationCategory = :observationCategory"); + Session session = sessionFactory.getCurrentSession(); - { - ConceptReferenceRange referenceRange = conceptService.getConceptReferenceRangeByUuid("69d620da-93c4-4767-916e-48f5fe8824c4"); - Assert.assertNotNull(referenceRange); - Assert.assertEquals("Reference range 1", referenceRange.getName()); - } - - { - conceptService.getConceptReferenceRangesByConcept(); - assertThat(observationCategories, hasSize(1)); - } - } + { + ConceptReferenceRange referenceRange = conceptService + .getConceptReferenceRangeByUuid("69d620da-93c4-4767-916e-48f5fe8824c4"); + Assert.assertNotNull(referenceRange); + Assert.assertEquals("Reference range 1", referenceRange.getCriteria()); + } + } } diff --git a/pom.xml b/pom.xml index 6e1ce46c..8c952709 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 2.5.5 2.7.0-SNAPSHOT - ${openmrsVersion2.7} + ${openmrsVersion2.1} 1.2.1 From 7e89c2a0681fb90d26dcabf4bf41dc6228e83783 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Thu, 19 Sep 2024 22:59:16 +0300 Subject: [PATCH 05/14] Adding README file for reference ranges --- README.md | 2 + .../api/c/ConceptReferenceRangeCsvParser.java | 19 ++++--- .../c/ConceptReferenceRangeLineProcessor.java | 24 ++++----- .../api/c/ConceptReferenceRangeLoader.java | 18 +++---- .../ConceptReferenceRangeIntegrationTest.java | 22 +++------ .../concepts/concept_referenceranges.csv | 2 +- readme/conceptreferenceranges.md | 49 +++++++++++++++++++ 7 files changed, 88 insertions(+), 48 deletions(-) create mode 100644 readme/conceptreferenceranges.md diff --git a/README.md b/README.md index 48dc13f6..07656514 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ This is the list of currently supported domains in their loading order: 1. [AMPATH Forms (JSON files)](readme/ampathforms.md) 1. [AMPATH Forms Translations (JSON files)](readme/ampathformstranslations.md) 1. [HTML Forms (XML files)](readme/htmlforms.md) +1. [Concept Reference Ranges (CSV files)](readme/conceptreferenceranges.md) ## Try it out Build the master branch and install the built OMOD to your OpenMRS instance: @@ -206,6 +207,7 @@ See the [documentation on Initializer's logging properties](readme/rtprops.md#lo * Ampath forms translation files will now generate checksums. * Enhancement to ensure that when an Ampath forms file is loaded, a new resource with the existing Ampath forms translations is created. * Added support for 'billing' (billableservices, paymentmodes, cashpoints) domains. +* Added support for 'conceptreferencerange' domain. #### Version 2.7.0 * Added support for 'queues' domain. diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java index cee79d02..5f39935c 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java @@ -1,7 +1,6 @@ package org.openmrs.module.initializer.api.c; import org.apache.commons.lang3.StringUtils; -import org.openmrs.Concept; import org.openmrs.ConceptReferenceRange; import org.openmrs.api.ConceptService; import org.openmrs.module.initializer.Domain; @@ -14,12 +13,12 @@ @Component public class ConceptReferenceRangeCsvParser extends CsvParser> { - + private final ConceptService conceptService; - + @Autowired public ConceptReferenceRangeCsvParser(@Qualifier("conceptService") ConceptService conceptService, - ConceptReferenceRangeLineProcessor processor) { + ConceptReferenceRangeLineProcessor processor) { super(processor); this.conceptService = conceptService; } @@ -32,14 +31,14 @@ public Domain getDomain() { @Override public ConceptReferenceRange bootstrap(CsvLine line) throws IllegalArgumentException { String uuid = line.getUuid(); - - ConceptReferenceRange referenceRange = conceptService.getconceptReferenceRangeByUuid(uuid); - + + ConceptReferenceRange referenceRange = conceptService.getConceptReferenceRangeByUuid(uuid); + if (referenceRange == null) { referenceRange = new ConceptReferenceRange(); - if (!StringUtils.isEmpty(uuid)) { - referenceRange.setUuid(uuid); - } + if (!StringUtils.isEmpty(uuid)) { + referenceRange.setUuid(uuid); + } } return referenceRange; diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java index 56e38938..2eaca95d 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java @@ -11,26 +11,25 @@ @Component("initializer.conceptReferenceRangeLineProcessor") public class ConceptReferenceRangeLineProcessor extends BaseLineProcessor { - - private final String HEADER_CONCEPT_NUMERIC_UUID = "Concept Numeric uuid"; - + private final String HEADER_CONCEPT_NUMERIC_UUID = "Concept Numeric Uuid"; + private final String HEADER_AH = "Absolute high"; - + private final String HEADER_CH = "Critical high"; - + private final String HEADER_NH = "Normal high"; - + private final String HEADER_AL = "Absolute low"; - + private final String HEADER_CL = "Critical low"; - + private final String HEADER_NL = "Normal low"; - + private final String HEADER_CRITERIA = "Criteria"; - + private ConceptService conceptService; - + @Autowired public ConceptReferenceRangeLineProcessor(@Qualifier("conceptService") ConceptService conceptService) { this.conceptService = conceptService; @@ -40,7 +39,8 @@ public ConceptReferenceRange fill(ConceptReferenceRange referenceRange, CsvLine ConceptNumeric conceptNumeric = conceptService.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID)); if (conceptNumeric == null) { // below overrides any other processors work, so this one should be called first - throw new IllegalArgumentException("No concept numeric found for '" + line.get(HEADER_CONCEPT_NUMERIC_UUID) + "'"); + throw new IllegalArgumentException( + "No concept numeric found for '" + line.get(HEADER_CONCEPT_NUMERIC_UUID) + "'"); } if (referenceRange == null) { diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java index 70c155c7..f040f54c 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java @@ -9,13 +9,13 @@ @Component public class ConceptReferenceRangeLoader extends BaseCsvLoader { - - @Autowired - public void setParser(ConceptReferenceRangeCsvParser parser) { - this.parser = parser; - } - - @Override - protected void preload(File file) { - } + + @Autowired + public void setParser(ConceptReferenceRangeCsvParser parser) { + this.parser = parser; + } + + @Override + protected void preload(File file) { + } } diff --git a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java index bc515f31..59a49686 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java @@ -1,8 +1,5 @@ package org.openmrs.module.initializer.api; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.SessionFactory; import org.junit.Assert; import org.junit.jupiter.api.Test; import org.openmrs.ConceptReferenceRange; @@ -10,31 +7,24 @@ import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; import org.openmrs.module.initializer.api.c.ConceptReferenceRangeLoader; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { - + @Autowired private ConceptService conceptService; - + @Autowired private ConceptReferenceRangeLoader conceptReferenceRangeLoader; - - @Autowired - @Qualifier("sessionFactory") - private SessionFactory sessionFactory; - + @Test public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { conceptReferenceRangeLoader.load(); - - Session session = sessionFactory.getCurrentSession(); - + { ConceptReferenceRange referenceRange = conceptService - .getConceptReferenceRangeByUuid("69d620da-93c4-4767-916e-48f5fe8824c4"); + .getConceptReferenceRangeByUuid("239c1904-15ff-45e1-ac9d-d83afb637926"); Assert.assertNotNull(referenceRange); - Assert.assertEquals("Reference range 1", referenceRange.getCriteria()); + Assert.assertEquals(Double.valueOf("70"), referenceRange.getLowAbsolute()); } } } diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv index 126350e8..0f6aac1d 100644 --- a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv +++ b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv @@ -1,4 +1,4 @@ -Uuid,Concept Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria +Uuid,Concept Numeric Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria bc059100-4ace-4af5-afbf-2da7f3a34acf,30247229-052c-400b-a823-cb66b1c506c7,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 930e1fb4-490d-45fe-a137-0cd941c76124,,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,,60,70,80,120,130,150, $fn.getCurrentHour() > 2 diff --git a/readme/conceptreferenceranges.md b/readme/conceptreferenceranges.md new file mode 100644 index 00000000..bb5ba7b6 --- /dev/null +++ b/readme/conceptreferenceranges.md @@ -0,0 +1,49 @@ +## Domain 'conceptreferenceranges' + +The **conceptreferenceranges** subfolder contains CSV configuration files that help manage ConceptReferenceRange entity. + +This is a possible example of how the configuration subfolder may look like: + +```bash +concepts/ + └── concepts_referenceranges.csv +``` + +Here is a sample CSV: + +| Uuid | Concept Numeric Uuid | Absolute low | Critical low | Normal low | Normal high | Absolute high | Absolute high | Criteria | +|--------------------------------------|-|----------------------------------|-------------------------------------------------|---------------------------------|------------------------------------|-|-------------------------| - | +| bc059100-4ace-4af5-afbf-2da7f3a34acf | 3f8f0ab7-c240-4b68-8951-bb7020be01f6 | 60 | 70 | 80 | 120 | 130 | 150 | $patient.getAge() > 3 | + + +Summery of the set of available headers. + +###### Header `Uuid` +Uuid of the conceptReferenceRange entity. + +###### Header `Concept Numeric Uuid` *(mandatory)* +UUID of ConceptNumeric. + +###### Header `Absolute low` *(mandatory)* +Absolute low of referenceRange. + +###### Header `Critical low` *(mandatory)* +Critical low of referenceRange. + +###### Header `Normal low` *(mandatory)* +Normal low of referenceRange. + +###### Header `Normal high` +Normal high of referenceRange. + +###### Header `Critical high` +Critical high of referenceRange. + +###### Header `Absolute high` *(mandatory)* +Absolute high of referenceRange. + +###### Header `Criteria` *(mandatory)* +Criteria. + +#### Further examples: +Please look at the test configuration folder for sample import files for all domains, see [here](../api/src/test/resources/testAppDataDir/configuration). \ No newline at end of file From 30f8777b05e1224a805932fbd9514ef5769edef6 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Fri, 20 Sep 2024 15:43:07 +0300 Subject: [PATCH 06/14] Updating the readme --- .../configuration/concepts/concept_referenceranges.csv | 6 +++--- readme/conceptreferenceranges.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv index 0f6aac1d..87bba327 100644 --- a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv +++ b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv @@ -1,4 +1,4 @@ Uuid,Concept Numeric Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria -bc059100-4ace-4af5-afbf-2da7f3a34acf,30247229-052c-400b-a823-cb66b1c506c7,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 -930e1fb4-490d-45fe-a137-0cd941c76124,,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 -b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,,60,70,80,120,130,150, $fn.getCurrentHour() > 2 +bc059100-4ace-4af5-afbf-2da7f3a34acf,239c1904-15ff-45e1-ac9d-d83afb637926,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 +930e1fb4-490d-45fe-a137-0cd941c76124,239c1904-15ff-45e1-ac9d-d83afb637926,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 +b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,239c1904-15ff-45e1-ac9d-d83afb637926,60,70,80,120,130,150, $fn.getCurrentHour() > 2 diff --git a/readme/conceptreferenceranges.md b/readme/conceptreferenceranges.md index bb5ba7b6..5236e4cc 100644 --- a/readme/conceptreferenceranges.md +++ b/readme/conceptreferenceranges.md @@ -16,7 +16,7 @@ Here is a sample CSV: | bc059100-4ace-4af5-afbf-2da7f3a34acf | 3f8f0ab7-c240-4b68-8951-bb7020be01f6 | 60 | 70 | 80 | 120 | 130 | 150 | $patient.getAge() > 3 | -Summery of the set of available headers. +Available headers for this domain ###### Header `Uuid` Uuid of the conceptReferenceRange entity. @@ -27,10 +27,10 @@ UUID of ConceptNumeric. ###### Header `Absolute low` *(mandatory)* Absolute low of referenceRange. -###### Header `Critical low` *(mandatory)* +###### Header `Critical low` Critical low of referenceRange. -###### Header `Normal low` *(mandatory)* +###### Header `Normal low` Normal low of referenceRange. ###### Header `Normal high` From bcef1a0b617a72614f893d470cbd315732408712 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Fri, 20 Sep 2024 17:30:53 +0300 Subject: [PATCH 07/14] Removing unnecessary comment and updating csv --- .../api/c/ConceptReferenceRangeLineProcessor.java | 2 +- .../configuration/concepts/concept_referenceranges.csv | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java index 2eaca95d..c95967df 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java @@ -38,7 +38,7 @@ public ConceptReferenceRangeLineProcessor(@Qualifier("conceptService") ConceptSe public ConceptReferenceRange fill(ConceptReferenceRange referenceRange, CsvLine line) throws IllegalArgumentException { ConceptNumeric conceptNumeric = conceptService.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID)); - if (conceptNumeric == null) { // below overrides any other processors work, so this one should be called first + if (conceptNumeric == null) { throw new IllegalArgumentException( "No concept numeric found for '" + line.get(HEADER_CONCEPT_NUMERIC_UUID) + "'"); } diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv index 87bba327..a269630b 100644 --- a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv +++ b/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv @@ -1,4 +1,4 @@ Uuid,Concept Numeric Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria -bc059100-4ace-4af5-afbf-2da7f3a34acf,239c1904-15ff-45e1-ac9d-d83afb637926,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 -930e1fb4-490d-45fe-a137-0cd941c76124,239c1904-15ff-45e1-ac9d-d83afb637926,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 -b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,239c1904-15ff-45e1-ac9d-d83afb637926,60,70,80,120,130,150, $fn.getCurrentHour() > 2 +bc059100-4ace-4af5-afbf-2da7f3a34acf,3f881c96-485a-482a-9d57-80e917aa2500,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() > 3 +930e1fb4-490d-45fe-a137-0cd941c76124,3f881c96-485a-482a-9d57-80e917aa2500,-100.5,-85.7,-50.3,45.1,78,98.8, $patient.getAge() < 10 +b5a7b296-e500-4a2c-ab2e-eb012ed9ae1e,3f881c96-485a-482a-9d57-80e917aa2500,60,70,80,120,130,150, $fn.getCurrentHour() > 2 From 55e27f941c2c2cc435420254a7f097f9f4643806 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Fri, 20 Sep 2024 23:35:44 +0300 Subject: [PATCH 08/14] Upgrading core version --- api/pom.xml | 2 +- api/src/main/java/org/openmrs/module/initializer/Domain.java | 2 +- .../initializer/api/c/ConceptReferenceRangeCsvParser.java | 2 +- .../module/initializer/api/loaders/LiquibaseLoader.java | 3 ++- .../initializer/api/OpenConceptLabLoaderIntegrationTest.java | 2 +- ...oncept_referenceranges.csv => concepts_referenceranges.csv} | 0 pom.xml | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) rename api/src/test/resources/testAppDataDir/configuration/concepts/{concept_referenceranges.csv => concepts_referenceranges.csv} (100%) diff --git a/api/pom.xml b/api/pom.xml index 6848a8f0..02707d74 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -13,7 +13,7 @@ API project for Initializer - ${openmrsVersion2.1} + ${openmrsVersion2.7} diff --git a/api/src/main/java/org/openmrs/module/initializer/Domain.java b/api/src/main/java/org/openmrs/module/initializer/Domain.java index e06f2e32..e3daf9e9 100644 --- a/api/src/main/java/org/openmrs/module/initializer/Domain.java +++ b/api/src/main/java/org/openmrs/module/initializer/Domain.java @@ -26,7 +26,7 @@ public enum Domain { OCL, CONCEPTS, CONCEPT_SETS, - CONCEPT_REFERENCE_RANGE, + CONCEPT_REFERENCE_RANGES, BILLABLE_SERVICES, PAYMENT_MODES, CASH_POINTS, diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java index 5f39935c..d31d7f98 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java @@ -25,7 +25,7 @@ public ConceptReferenceRangeCsvParser(@Qualifier("conceptService") ConceptServic @Override public Domain getDomain() { - return Domain.CONCEPT_REFERENCE_RANGE; + return Domain.CONCEPT_REFERENCE_RANGES; } @Override diff --git a/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java b/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java index 5e9a1049..98b28bb1 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java @@ -1,6 +1,7 @@ package org.openmrs.module.initializer.api.loaders; import org.openmrs.annotation.OpenmrsProfile; +import org.openmrs.liquibase.ChangeSetExecutorCallback; import org.openmrs.module.initializer.Domain; import org.openmrs.module.initializer.api.ConfigDirUtil; import org.openmrs.util.DatabaseUpdater; @@ -25,7 +26,7 @@ protected String getFileExtension() { @Override protected void load(File file) throws Exception { if (file.getName().equalsIgnoreCase(LIQUIBASE_FILE_NAME + "." + getFileExtension())) { - DatabaseUpdater.executeChangelog(file.getPath(), null); + DatabaseUpdater.executeChangelog(file.getPath(), (ChangeSetExecutorCallback) null); } } diff --git a/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java index f59ec18e..84f43ee0 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java @@ -58,7 +58,7 @@ public static void setupDaemonToken() { } @After - public void deleteAllData() throws Exception { + public void deleteAllData() { // this is necessary or else future test cases will fail because of two sources named CIEL super.deleteAllData(); } diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv b/api/src/test/resources/testAppDataDir/configuration/concepts/concepts_referenceranges.csv similarity index 100% rename from api/src/test/resources/testAppDataDir/configuration/concepts/concept_referenceranges.csv rename to api/src/test/resources/testAppDataDir/configuration/concepts/concepts_referenceranges.csv diff --git a/pom.xml b/pom.xml index 8c952709..6e1ce46c 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 2.5.5 2.7.0-SNAPSHOT - ${openmrsVersion2.1} + ${openmrsVersion2.7} 1.2.1 From 3911d33f6a6c7778fe7985d543361c14c7bc7c59 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Wed, 25 Sep 2024 10:11:11 +0300 Subject: [PATCH 09/14] Adding a sub module - initializer-api-2.7 --- .../api/BaseLineProcessorTest.java | 2 +- .../initializer/api/ConfigDirUtilTest.java | 2 +- .../EncounterTypesLoaderIntegrationTest.java | 2 +- ...GlobalPropertiesLoaderIntegrationTest.java | 2 +- .../api/InitializerServiceImplTest.java | 1 - .../JsonKeyValuesLoaderIntegrationTest.java | 6 +- .../api/MdsLoaderIntegrationTest.java | 2 +- .../api/RolesLoaderIntegrationTest.java | 2 +- .../api/c/ConceptsCsvParserTest.java | 2 +- initializer-api-2.7/pom.xml | 157 ++++++++++++++++++ .../ConceptReferenceRangeCsvParser.java | 2 +- .../ConceptReferenceRangeLineProcessor.java | 2 +- .../ConceptReferenceRangeLoader.java | 2 +- .../ConceptReferenceRangeIntegrationTest.java | 10 +- omod/src/main/resources/config.xml | 4 + pom.xml | 3 +- validator/pom.xml | 2 +- 17 files changed, 182 insertions(+), 21 deletions(-) create mode 100644 initializer-api-2.7/pom.xml rename {api/src/main/java/org/openmrs/module/initializer/api/c => initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange}/ConceptReferenceRangeCsvParser.java (96%) rename {api/src/main/java/org/openmrs/module/initializer/api/c => initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange}/ConceptReferenceRangeLineProcessor.java (97%) rename {api/src/main/java/org/openmrs/module/initializer/api/c => initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange}/ConceptReferenceRangeLoader.java (89%) rename {api/src/test/java/org/openmrs/module/initializer/api => initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange}/ConceptReferenceRangeIntegrationTest.java (86%) diff --git a/api/src/test/java/org/openmrs/module/initializer/api/BaseLineProcessorTest.java b/api/src/test/java/org/openmrs/module/initializer/api/BaseLineProcessorTest.java index 62fe5b83..019b7636 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/BaseLineProcessorTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/BaseLineProcessorTest.java @@ -126,7 +126,7 @@ public void getLocalizedHeaders_shouldListLocalizedHeaders() { // a regular header line Map lhMap = LocalizedHeader.getLocalizedHeadersMap(hl1.toArray(new String[hl1.size()])); - // Verif + // Verify Assert.assertEquals(2, lhMap.size()); LocalizedHeader lh = null; Assert.assertTrue(lhMap.containsKey("name")); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/ConfigDirUtilTest.java b/api/src/test/java/org/openmrs/module/initializer/api/ConfigDirUtilTest.java index 8a6357ad..bd9d4cb9 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/ConfigDirUtilTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/ConfigDirUtilTest.java @@ -155,7 +155,7 @@ public void getFiles_shouldAllowToOrderCsvFilesWithConceptsLoader() { List orderedFilenames = dirUtil.getFiles("csv", null).stream() .map(f -> new ConceptsLoader().toOrderedFile(f)).sorted().map(f -> f.getName()).collect(Collectors.toList()); - // Verif + // Verify assertThat(orderedFilenames.size(), is(5)); Assert.assertEquals("5_order_500.csv", orderedFilenames.get(0)); Assert.assertEquals("4_order_1000.csv", orderedFilenames.get(1)); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/EncounterTypesLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/EncounterTypesLoaderIntegrationTest.java index d40aa223..da5400e6 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/EncounterTypesLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/EncounterTypesLoaderIntegrationTest.java @@ -70,7 +70,7 @@ public void load_shouldLoadEncounterTypesAccordingToCsvFiles() { // Replay loader.load(); - // verif + // verify { EncounterType et = es.getEncounterType("Triage Encounter"); Assert.assertNotNull(et); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/GlobalPropertiesLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/GlobalPropertiesLoaderIntegrationTest.java index e4df73e5..44a502dc 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/GlobalPropertiesLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/GlobalPropertiesLoaderIntegrationTest.java @@ -28,7 +28,7 @@ public void loadGlobalProperties_shouldLoadGlobalProperties() { // Replay loader.load(); - // Verif + // Verify Assert.assertEquals("GP one one", Context.getAdministrationService().getGlobalProperty("gp.gp11")); Assert.assertEquals("GP one two", Context.getAdministrationService().getGlobalProperty("gp.gp12")); Assert.assertEquals("GP two one", Context.getAdministrationService().getGlobalProperty("gp.gp21")); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/InitializerServiceImplTest.java b/api/src/test/java/org/openmrs/module/initializer/api/InitializerServiceImplTest.java index b27f305c..cb231acf 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/InitializerServiceImplTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/InitializerServiceImplTest.java @@ -1,6 +1,5 @@ package org.openmrs.module.initializer.api; -import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyListOf; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Mockito.never; diff --git a/api/src/test/java/org/openmrs/module/initializer/api/JsonKeyValuesLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/JsonKeyValuesLoaderIntegrationTest.java index 0e5fae9d..ebda4695 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/JsonKeyValuesLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/JsonKeyValuesLoaderIntegrationTest.java @@ -115,7 +115,7 @@ public void load_shouldLoadStructuredJsonValue() { loader.load(); String json = getService().getValueFromKey("structured.json"); - // Verif + // Verify Assert.assertEquals("{\"foo\":\"bar\",\"fooz\":{\"baz\":\"value\"}}", json); } @@ -125,7 +125,7 @@ public void load_shouldLoadConceptList() { loader.load(); List concepts = getService().getConceptsFromKey("impl.purpose.concepts"); - // Verif + // Verify Assert.assertThat(concepts.size(), is(2)); for (Concept c : concepts) { Assert.assertNotNull(c); @@ -138,7 +138,7 @@ public void getDirUtil_shouldConfigureDirUtilToSkipChecksums() { // Replay ConfigDirUtil dirUtil = loader.getDirUtil(); - // Verif + // Verify Assert.assertEquals(true, dirUtil.skipChecksums); Assert.assertEquals(iniz.getChecksumsDirPath() + File.separator + loader.getDomainName(), dirUtil.getDomainChecksumsDirPath()); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/MdsLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/MdsLoaderIntegrationTest.java index b8d581cf..469090a2 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/MdsLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/MdsLoaderIntegrationTest.java @@ -33,7 +33,7 @@ public void load_shouldImportMDSPackages() { loader.load(); - // Verif + // Verify PatientIdentifierType patientIdType = Context.getPatientService() .getPatientIdentifierTypeByUuid("0d2ac572-8de3-46c8-9976-1f78899c599f"); Assert.assertEquals("National ID card number", patientIdType.getName()); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/RolesLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/RolesLoaderIntegrationTest.java index 6e2fa201..6f84a13e 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/RolesLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/RolesLoaderIntegrationTest.java @@ -89,7 +89,7 @@ public void load_shouldLoadRolesAccordingToCsvFiles() { // replay Role role = us.getRoleByUuid("d2fcb604-2700-102b-80cb-0017a47871b2"); - // verif + // verify Assert.assertNotNull(role); Assert.assertEquals("Organizational: Doctor", role.getName()); Assert.assertEquals("Doctor role", role.getDescription()); diff --git a/api/src/test/java/org/openmrs/module/initializer/api/c/ConceptsCsvParserTest.java b/api/src/test/java/org/openmrs/module/initializer/api/c/ConceptsCsvParserTest.java index 79cd6e9e..8e740570 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/c/ConceptsCsvParserTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/c/ConceptsCsvParserTest.java @@ -120,7 +120,7 @@ public void process_shouldParseBaseCsv() throws IOException { List lines = parser.process(parser.getLines()).getFailingLines(); - // verif + // verify Assert.assertEquals(1, lines.size()); } diff --git a/initializer-api-2.7/pom.xml b/initializer-api-2.7/pom.xml new file mode 100644 index 00000000..6621b7cc --- /dev/null +++ b/initializer-api-2.7/pom.xml @@ -0,0 +1,157 @@ + + + + org.openmrs.module + initializer + 2.8.0-SNAPSHOT + + 4.0.0 + + initializer-api-2.7 + jar + Initializer API 2.7 + API 2.7 project for Initializer + + + + + + ${openmrsVersion2.7} + 2.2.0 + + + + + org.openmrs.test + openmrs-test + pom + ${openmrsPlatformVersion} + test + + + org.powermock + powermock-api-mockito2 + + + + + + + + + + + + + + + + + + + + org.mockito + mockito-core + 3.12.4 + jar + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api + ${project.parent.version} + provided + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api + ${project.parent.version} + test + test-jar + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.5 + ${project.parent.version} + provided + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.4 + ${project.parent.version} + provided + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.4 + ${project.parent.version} + test + test-jar + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.3 + ${project.parent.version} + provided + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.3 + ${project.parent.version} + test + test-jar + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.2 + ${project.parent.version} + provided + + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.2 + ${project.parent.version} + test + test-jar + + + + + + + + + + + + + + + + + + + + + + + + + org.openmrs.module + datafilter-api + ${datafilterVersion} + test + + + + \ No newline at end of file diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java similarity index 96% rename from api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java rename to initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java index d31d7f98..b501a734 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeCsvParser.java +++ b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java @@ -1,4 +1,4 @@ -package org.openmrs.module.initializer.api.c; +package org.openmrs.module.initializer.api.conceptreferencerange; import org.apache.commons.lang3.StringUtils; import org.openmrs.ConceptReferenceRange; diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java similarity index 97% rename from api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java rename to initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java index c95967df..34f6ecce 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLineProcessor.java +++ b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java @@ -1,4 +1,4 @@ -package org.openmrs.module.initializer.api.c; +package org.openmrs.module.initializer.api.conceptreferencerange; import org.openmrs.ConceptNumeric; import org.openmrs.ConceptReferenceRange; diff --git a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLoader.java similarity index 89% rename from api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java rename to initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLoader.java index f040f54c..9516a276 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/c/ConceptReferenceRangeLoader.java +++ b/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLoader.java @@ -1,4 +1,4 @@ -package org.openmrs.module.initializer.api.c; +package org.openmrs.module.initializer.api.conceptreferencerange; import org.openmrs.ConceptReferenceRange; import org.openmrs.module.initializer.api.loaders.BaseCsvLoader; diff --git a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java b/initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java similarity index 86% rename from api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java rename to initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java index 59a49686..18ccbccb 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/ConceptReferenceRangeIntegrationTest.java +++ b/initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java @@ -1,11 +1,11 @@ -package org.openmrs.module.initializer.api; +package org.openmrs.module.initializer.api.conceptreferencerange; import org.junit.Assert; import org.junit.jupiter.api.Test; +import org.mockito.Mock; import org.openmrs.ConceptReferenceRange; import org.openmrs.api.ConceptService; import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; -import org.openmrs.module.initializer.api.c.ConceptReferenceRangeLoader; import org.springframework.beans.factory.annotation.Autowired; public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { @@ -13,13 +13,13 @@ public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContex @Autowired private ConceptService conceptService; - @Autowired + @Mock private ConceptReferenceRangeLoader conceptReferenceRangeLoader; - + @Test public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { conceptReferenceRangeLoader.load(); - + { ConceptReferenceRange referenceRange = conceptService .getConceptReferenceRangeByUuid("239c1904-15ff-45e1-ac9d-d83afb637926"); diff --git a/omod/src/main/resources/config.xml b/omod/src/main/resources/config.xml index d75489a8..499edf76 100644 --- a/omod/src/main/resources/config.xml +++ b/omod/src/main/resources/config.xml @@ -23,6 +23,10 @@ /lib/initializer-api-2.5-${project.version}.jar 2.5.* - 9.* + + /lib/initializer-api-2.7-${project.version}.jar + 2.7.* - 9.* + diff --git a/pom.xml b/pom.xml index 6e1ce46c..1a42a5c4 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ api-2.4 api-2.5 omod + initializer-api-2.7 @@ -60,7 +61,7 @@ 2.5.5 2.7.0-SNAPSHOT - ${openmrsVersion2.7} + ${openmrsVersion2.1} 1.2.1 diff --git a/validator/pom.xml b/validator/pom.xml index 17a705bd..2f2a92f7 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -59,7 +59,7 @@ org.mockito mockito-core - 3.6.28 + 3.12.4 jar From 2c9484e975611559ad4abe5a773d0b41d5db6581 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Thu, 26 Sep 2024 00:50:15 +0300 Subject: [PATCH 10/14] Adding test data --- .../InitializerLogConfigurator2_4.java | 2 - {initializer-api-2.7 => api-2.7}/pom.xml | 12 ++-- .../ConceptReferenceRangeCsvParser.java | 16 +++-- .../ConceptReferenceRangeLineProcessor.java | 10 +++- .../ConceptReferenceRangeLoader.java | 0 .../ConceptReferenceRangeService.java | 58 +++++++++++++++++++ .../ConceptReferenceRangeIntegrationTest.java | 43 ++++++++++++++ .../concepts_referenceranges.csv | 0 ...lobalPropertiesConfigDeserializerTest.java | 4 +- .../ConceptReferenceRangeIntegrationTest.java | 30 ---------- omod/pom.xml | 6 ++ pom.xml | 2 +- 12 files changed, 131 insertions(+), 52 deletions(-) rename {initializer-api-2.7 => api-2.7}/pom.xml (95%) rename {initializer-api-2.7 => api-2.7}/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java (69%) rename {initializer-api-2.7 => api-2.7}/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java (80%) rename {initializer-api-2.7 => api-2.7}/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLoader.java (100%) create mode 100644 api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeService.java create mode 100644 api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java rename {api/src/test/resources/testAppDataDir/configuration/concepts => api-2.7/src/test/resources/configuration/conceptreferenceranges}/concepts_referenceranges.csv (100%) delete mode 100644 initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java diff --git a/api-2.4/src/main/java/org/openmrs/module/initializer/api/logging/InitializerLogConfigurator2_4.java b/api-2.4/src/main/java/org/openmrs/module/initializer/api/logging/InitializerLogConfigurator2_4.java index 53040722..95f74878 100644 --- a/api-2.4/src/main/java/org/openmrs/module/initializer/api/logging/InitializerLogConfigurator2_4.java +++ b/api-2.4/src/main/java/org/openmrs/module/initializer/api/logging/InitializerLogConfigurator2_4.java @@ -6,11 +6,9 @@ import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Appender; -import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.appender.FileAppender; -import org.apache.logging.log4j.core.filter.LevelRangeFilter; import org.apache.logging.log4j.core.layout.PatternLayout; import org.openmrs.annotation.OpenmrsProfile; import org.openmrs.module.initializer.InitializerActivator; diff --git a/initializer-api-2.7/pom.xml b/api-2.7/pom.xml similarity index 95% rename from initializer-api-2.7/pom.xml rename to api-2.7/pom.xml index 6621b7cc..b7bd1ca0 100644 --- a/initializer-api-2.7/pom.xml +++ b/api-2.7/pom.xml @@ -139,12 +139,12 @@ - - - - - - + + org.openmrs.module + fhir2-api-2.5 + ${fhir2Version} + test + org.openmrs.module diff --git a/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java similarity index 69% rename from initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java rename to api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java index b501a734..97c71e23 100644 --- a/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java +++ b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java @@ -2,25 +2,23 @@ import org.apache.commons.lang3.StringUtils; import org.openmrs.ConceptReferenceRange; -import org.openmrs.api.ConceptService; import org.openmrs.module.initializer.Domain; import org.openmrs.module.initializer.api.BaseLineProcessor; import org.openmrs.module.initializer.api.CsvLine; import org.openmrs.module.initializer.api.CsvParser; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @Component public class ConceptReferenceRangeCsvParser extends CsvParser> { - private final ConceptService conceptService; + private ConceptReferenceRangeService conceptReferenceRangeService; @Autowired - public ConceptReferenceRangeCsvParser(@Qualifier("conceptService") ConceptService conceptService, - ConceptReferenceRangeLineProcessor processor) { + public ConceptReferenceRangeCsvParser(ConceptReferenceRangeLineProcessor processor, + ConceptReferenceRangeService conceptReferenceRangeService) { super(processor); - this.conceptService = conceptService; + this.conceptReferenceRangeService = conceptReferenceRangeService; } @Override @@ -31,8 +29,8 @@ public Domain getDomain() { @Override public ConceptReferenceRange bootstrap(CsvLine line) throws IllegalArgumentException { String uuid = line.getUuid(); - - ConceptReferenceRange referenceRange = conceptService.getConceptReferenceRangeByUuid(uuid); + + ConceptReferenceRange referenceRange = conceptReferenceRangeService.getConceptReferenceRangeByUuid(uuid); if (referenceRange == null) { referenceRange = new ConceptReferenceRange(); @@ -46,6 +44,6 @@ public ConceptReferenceRange bootstrap(CsvLine line) throws IllegalArgumentExcep @Override public ConceptReferenceRange save(ConceptReferenceRange instance) { - return conceptService.saveConceptReferenceRange(instance); + return conceptReferenceRangeService.saveReferenceRange(instance); } } diff --git a/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java similarity index 80% rename from initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java rename to api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java index 34f6ecce..7c07b7b9 100644 --- a/initializer-api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java +++ b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeLineProcessor.java @@ -30,13 +30,19 @@ public class ConceptReferenceRangeLineProcessor extends BaseLineProcessorConceptReferenceRange by uuid. + * + * @param uuid uuid of the ConceptReferenceRange + * @return conceptReferenceRange or null + */ + public ConceptReferenceRange getConceptReferenceRangeByUuid(String uuid) { + return Context.getConceptService().getConceptReferenceRangeByUuid(uuid); + } + + /** + * Saves a ConceptReferenceRange. + * + * @param referenceRange the ConceptReferenceRange to be saved + * @return the saved ConceptReferenceRange + */ + public ConceptReferenceRange saveReferenceRange(ConceptReferenceRange referenceRange) { + return Context.getConceptService().saveConceptReferenceRange(referenceRange); + } + + /** + * Gets a {@link ConceptNumeric} by uuid. + * + * @param uuid uuid of the {@link ConceptNumeric} + */ + public ConceptNumeric getConceptNumericByUuid(String uuid) { + return Context.getConceptService().getConceptNumericByUuid(uuid); + } + + @Override + public void onStartup() { + } + + @Override + public void onShutdown() { + } +} diff --git a/api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java b/api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java new file mode 100644 index 00000000..c7672219 --- /dev/null +++ b/api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java @@ -0,0 +1,43 @@ +package org.openmrs.module.initializer.api.conceptreferencerange; + +import org.junit.Assert; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.openmrs.ConceptReferenceRange; +import org.openmrs.api.ConceptService; +import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { + + @Autowired + @Qualifier("conceptService") + private ConceptService conceptService; + + @Autowired + private ConceptReferenceRangeService conceptReferenceRangeService; + + @Autowired + private ConceptReferenceRangeLoader conceptReferenceRangeLoader; + + @BeforeEach + public void setUp() { + if (conceptReferenceRangeLoader == null) { + conceptReferenceRangeLoader = new ConceptReferenceRangeLoader(); + } + if (conceptReferenceRangeService == null) { + conceptReferenceRangeService = new ConceptReferenceRangeService(conceptService); + } + } + + @Test + public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { + conceptReferenceRangeLoader.load(); + + ConceptReferenceRange referenceRange = conceptReferenceRangeService + .getConceptReferenceRangeByUuid("239c1904-15ff-45e1-ac9d-d83afb637926"); + Assert.assertNotNull(referenceRange); + Assert.assertEquals(Double.valueOf("70"), referenceRange.getLowAbsolute()); + } +} diff --git a/api/src/test/resources/testAppDataDir/configuration/concepts/concepts_referenceranges.csv b/api-2.7/src/test/resources/configuration/conceptreferenceranges/concepts_referenceranges.csv similarity index 100% rename from api/src/test/resources/testAppDataDir/configuration/concepts/concepts_referenceranges.csv rename to api-2.7/src/test/resources/configuration/conceptreferenceranges/concepts_referenceranges.csv diff --git a/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java b/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java index 910d2dc7..6d117fcc 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java @@ -39,7 +39,7 @@ public void shouldDeserializeConfigWithUnmappedFields() { @Verifies(value = "should throw XStream exception on invalid config", method = "fromXML(InputStream input)") public void shouldThrowException() { - InitializerSerializer.getGlobalPropertiesConfig( - getClass().getClassLoader().getResourceAsStream("org/openmrs/module/initializer/include/gp_error.xml")); + InitializerSerializer.getGlobalPropertiesConfig(getClass().getClassLoader().getResourceAsStream( + "org/openmrs/module/initializer/include/gp_error.xml")); } } diff --git a/initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java b/initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java deleted file mode 100644 index 18ccbccb..00000000 --- a/initializer-api-2.7/src/test/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeIntegrationTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.openmrs.module.initializer.api.conceptreferencerange; - -import org.junit.Assert; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.openmrs.ConceptReferenceRange; -import org.openmrs.api.ConceptService; -import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest; -import org.springframework.beans.factory.annotation.Autowired; - -public class ConceptReferenceRangeIntegrationTest extends DomainBaseModuleContextSensitiveTest { - - @Autowired - private ConceptService conceptService; - - @Mock - private ConceptReferenceRangeLoader conceptReferenceRangeLoader; - - @Test - public void load_shouldLoadConceptReferenceRangeFromCsvFiles() { - conceptReferenceRangeLoader.load(); - - { - ConceptReferenceRange referenceRange = conceptService - .getConceptReferenceRangeByUuid("239c1904-15ff-45e1-ac9d-d83afb637926"); - Assert.assertNotNull(referenceRange); - Assert.assertEquals(Double.valueOf("70"), referenceRange.getLowAbsolute()); - } - } -} diff --git a/omod/pom.xml b/omod/pom.xml index 92a6e2a1..7653d1f5 100644 --- a/omod/pom.xml +++ b/omod/pom.xml @@ -42,6 +42,12 @@ ${project.parent.artifactId}-api-2.5 ${project.parent.version} + + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.7 + ${project.parent.version} + ${project.parent.groupId} diff --git a/pom.xml b/pom.xml index 1a42a5c4..64db349c 100644 --- a/pom.xml +++ b/pom.xml @@ -39,8 +39,8 @@ api-2.3 api-2.4 api-2.5 + api-2.7 omod - initializer-api-2.7 From 1927770cad0422fd7ee8fbf43b1abb5120c2fbe5 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Fri, 27 Sep 2024 00:58:48 +0300 Subject: [PATCH 11/14] Updating initializer-2.7 --- .../api/AttributeTypesLoaderTest2_2.java | 3 +- .../api/loaders/LoadersOrderTest.java | 1 + api-2.7/pom.xml | 46 ++----------------- .../ConceptReferenceRangeCsvParser.java | 4 +- .../ConceptReferenceRangeService.java | 1 + .../ConceptReferenceRangeIntegrationTest.java | 22 +++++---- ...eranges.csv => conceptreferenceranges.csv} | 0 api/pom.xml | 15 +++++- .../api/BaseAttributeLineProcessor.java | 2 +- .../api/loaders/LiquibaseLoader.java | 3 +- .../OpenConceptLabLoaderIntegrationTest.java | 2 +- .../LocationAttributeLineProcessorTest.java | 2 - pom.xml | 16 +++++-- validator/pom.xml | 7 +++ 14 files changed, 60 insertions(+), 64 deletions(-) rename api-2.7/src/test/resources/configuration/conceptreferenceranges/{concepts_referenceranges.csv => conceptreferenceranges.csv} (100%) diff --git a/api-2.2/src/test/java/org/openmrs/module/initializer/api/AttributeTypesLoaderTest2_2.java b/api-2.2/src/test/java/org/openmrs/module/initializer/api/AttributeTypesLoaderTest2_2.java index 830b9b03..8215044c 100644 --- a/api-2.2/src/test/java/org/openmrs/module/initializer/api/AttributeTypesLoaderTest2_2.java +++ b/api-2.2/src/test/java/org/openmrs/module/initializer/api/AttributeTypesLoaderTest2_2.java @@ -2,6 +2,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.text.IsEmptyString.isEmptyOrNullString; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.openmrs.module.initializer.api.AttributeTypesLoaderTest.assertCustomDatatype; @@ -46,7 +47,7 @@ public void load_shouldLoadAccordingToCsvFiles() { Assert.assertEquals("Program Efficiency Score", attType.getName()); Assert.assertEquals("Metric of the program efficiency", attType.getDescription()); Assert.assertThat(attType.getMinOccurs(), is(0)); - Assert.assertThat(attType.getMaxOccurs(), is(1)); + assertNull(attType.getMaxOccurs()); } // Replay diff --git a/api-2.3/src/test/java/org/openmrs/module/initializer/api/loaders/LoadersOrderTest.java b/api-2.3/src/test/java/org/openmrs/module/initializer/api/loaders/LoadersOrderTest.java index 448a2f42..15e3cbf2 100644 --- a/api-2.3/src/test/java/org/openmrs/module/initializer/api/loaders/LoadersOrderTest.java +++ b/api-2.3/src/test/java/org/openmrs/module/initializer/api/loaders/LoadersOrderTest.java @@ -73,6 +73,7 @@ protected boolean matchesSafely(List loaders, Description mismatchDescri exclude.add(Domain.PAYMENT_MODES.getName()); exclude.add(Domain.BILLABLE_SERVICES.getName()); exclude.add(Domain.CASH_POINTS.getName()); + exclude.add(Domain.CONCEPT_REFERENCE_RANGES.getName()); boolean result = true; Set loaderDomains = loaders.stream().map(Loader::getDomainName).collect(Collectors.toSet()); diff --git a/api-2.7/pom.xml b/api-2.7/pom.xml index b7bd1ca0..133ff4ce 100644 --- a/api-2.7/pom.xml +++ b/api-2.7/pom.xml @@ -15,9 +15,6 @@ API 2.7 project for Initializer - - - ${openmrsVersion2.7} 2.2.0 @@ -37,25 +34,11 @@ - - - - - - - - - - - - - - - org.mockito - mockito-core - 3.12.4 - jar + junit + junit + 4.13.2 + test @@ -125,27 +108,6 @@ test-jar - - - - - - - - - - - - - - - - org.openmrs.module - fhir2-api-2.5 - ${fhir2Version} - test - - org.openmrs.module datafilter-api diff --git a/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java index 97c71e23..1e8354d9 100644 --- a/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java +++ b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeCsvParser.java @@ -16,7 +16,7 @@ public class ConceptReferenceRangeCsvParser extends CsvParserAPI project for Initializer - ${openmrsVersion2.7} + ${openmrsVersion2.1} @@ -36,6 +36,19 @@ org.openmrs.module openconceptlab-api + + + org.powermock + powermock-module-junit4 + 2.0.9 + test + + + org.powermock + powermock-api-mockito2 + 2.0.9 + test + diff --git a/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java index b7c64acd..218473de 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java @@ -41,7 +41,7 @@ public T fill(T instance, CsvLine line) throws IllegalArgumentException { CustomDatatype datatype = CustomDatatypeUtil.getDatatype(attType.getDatatypeClassname(), attType.getDatatypeConfig()); - Object value = datatype.fromReferenceString(attData.getValue()); + Object value = datatype == null ? null : datatype.fromReferenceString(attData.getValue()); A attribute = newAttribute(); attribute.setAttributeType(attType); diff --git a/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java b/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java index 98b28bb1..5e9a1049 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/loaders/LiquibaseLoader.java @@ -1,7 +1,6 @@ package org.openmrs.module.initializer.api.loaders; import org.openmrs.annotation.OpenmrsProfile; -import org.openmrs.liquibase.ChangeSetExecutorCallback; import org.openmrs.module.initializer.Domain; import org.openmrs.module.initializer.api.ConfigDirUtil; import org.openmrs.util.DatabaseUpdater; @@ -26,7 +25,7 @@ protected String getFileExtension() { @Override protected void load(File file) throws Exception { if (file.getName().equalsIgnoreCase(LIQUIBASE_FILE_NAME + "." + getFileExtension())) { - DatabaseUpdater.executeChangelog(file.getPath(), (ChangeSetExecutorCallback) null); + DatabaseUpdater.executeChangelog(file.getPath(), null); } } diff --git a/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java b/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java index 84f43ee0..f59ec18e 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/OpenConceptLabLoaderIntegrationTest.java @@ -58,7 +58,7 @@ public static void setupDaemonToken() { } @After - public void deleteAllData() { + public void deleteAllData() throws Exception { // this is necessary or else future test cases will fail because of two sources named CIEL super.deleteAllData(); } diff --git a/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java b/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java index e4528b9f..8442bc03 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java @@ -1,13 +1,11 @@ package org.openmrs.module.initializer.api.loc; -import static org.hamcrest.Matchers.is; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.openmrs.module.initializer.api.BaseAttributeLineProcessor.HEADER_ATTRIBUTE_PREFIX; -import java.util.Arrays; import java.util.Collection; import java.util.Properties; diff --git a/pom.xml b/pom.xml index 64db349c..8819282a 100644 --- a/pom.xml +++ b/pom.xml @@ -112,14 +112,22 @@ org.powermock - powermock-api-mockito - 1.6.1 + powermock-module-junit4 + 2.0.9 test + org.powermock - powermock-module-junit4 - 1.6.1 + powermock-api-mockito2 + 2.0.9 + test + + + + org.mockito + mockito-core + 2.28.2 test diff --git a/validator/pom.xml b/validator/pom.xml index 2f2a92f7..b4d7bf5d 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -141,6 +141,13 @@ jar + + ${project.parent.groupId} + ${project.parent.artifactId}-api-2.7 + ${project.parent.version} + jar + + org.openmrs.api openmrs-api From 0c18db348fc907b871e5e0e26680d886aed5bfcd Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Fri, 27 Sep 2024 01:04:07 +0300 Subject: [PATCH 12/14] Fixing Mockito error --- .../api/gp/GlobalPropertiesConfigDeserializerTest.java | 4 ++-- .../api/pat/PersonAttributeTypeLineProcessorTest.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java b/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java index 6d117fcc..910d2dc7 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/gp/GlobalPropertiesConfigDeserializerTest.java @@ -39,7 +39,7 @@ public void shouldDeserializeConfigWithUnmappedFields() { @Verifies(value = "should throw XStream exception on invalid config", method = "fromXML(InputStream input)") public void shouldThrowException() { - InitializerSerializer.getGlobalPropertiesConfig(getClass().getClassLoader().getResourceAsStream( - "org/openmrs/module/initializer/include/gp_error.xml")); + InitializerSerializer.getGlobalPropertiesConfig( + getClass().getClassLoader().getResourceAsStream("org/openmrs/module/initializer/include/gp_error.xml")); } } diff --git a/api/src/test/java/org/openmrs/module/initializer/api/pat/PersonAttributeTypeLineProcessorTest.java b/api/src/test/java/org/openmrs/module/initializer/api/pat/PersonAttributeTypeLineProcessorTest.java index 79473563..fe7c5892 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/pat/PersonAttributeTypeLineProcessorTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/pat/PersonAttributeTypeLineProcessorTest.java @@ -7,6 +7,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.openmrs.PersonAttributeType; @@ -14,10 +15,12 @@ import org.openmrs.api.PersonService; import org.openmrs.module.initializer.api.CsvLine; import org.openmrs.module.initializer.api.pat.PersonAttributeTypeLineProcessor.Helper; +import org.powermock.modules.junit4.PowerMockRunner; /* * This kind of test case can be used to quickly trial the parsing routines on test CSVs */ +@RunWith(PowerMockRunner.class) public class PersonAttributeTypeLineProcessorTest { private PersonService ps = mock(PersonService.class); From 0f2f2b86d4a392399aa0eaff41cdd1065ba44007 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Sun, 29 Sep 2024 16:05:40 +0300 Subject: [PATCH 13/14] Reversing mockito version in validator --- validator/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validator/pom.xml b/validator/pom.xml index b4d7bf5d..04220b3e 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -59,7 +59,7 @@ org.mockito mockito-core - 3.12.4 + 3.6.28 jar From 157258db455b4f34eed30c0ea3b0cfae321c86c8 Mon Sep 17 00:00:00 2001 From: Isaiah Muli Date: Thu, 14 Nov 2024 10:33:24 +0300 Subject: [PATCH 14/14] Code refactor --- .../ConceptReferenceRangeService.java | 2 +- .../api/BaseAttributeLineProcessor.java | 4 ++-- .../LocationAttributeLineProcessorTest.java | 23 +++++++++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeService.java b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeService.java index bb0d57c3..7538ce02 100644 --- a/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeService.java +++ b/api-2.7/src/main/java/org/openmrs/module/initializer/api/conceptreferencerange/ConceptReferenceRangeService.java @@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -@OpenmrsProfile(openmrsPlatformVersion = "2.7.0 - 2.7.*") +@OpenmrsProfile(openmrsPlatformVersion = "[2.7.0 - 2.7.*]") public class ConceptReferenceRangeService implements OpenmrsService { @Autowired diff --git a/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java b/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java index 218473de..822e111b 100644 --- a/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java +++ b/api/src/main/java/org/openmrs/module/initializer/api/BaseAttributeLineProcessor.java @@ -3,7 +3,6 @@ import java.util.AbstractMap; import java.util.AbstractMap.SimpleEntry; import java.util.Arrays; -import java.util.Collection; import java.util.function.Consumer; import org.apache.commons.lang3.StringUtils; @@ -12,6 +11,7 @@ import org.openmrs.attribute.BaseAttribute; import org.openmrs.attribute.BaseAttributeType; import org.openmrs.customdatatype.CustomDatatype; +import org.openmrs.customdatatype.CustomDatatypeException; import org.openmrs.customdatatype.CustomDatatypeUtil; import org.openmrs.customdatatype.Customizable; @@ -24,7 +24,7 @@ public abstract class BaseAttributeLineProcessor attributable = (Customizable) instance; diff --git a/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java b/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java index 8442bc03..44b3c41a 100644 --- a/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java +++ b/api/src/test/java/org/openmrs/module/initializer/api/loc/LocationAttributeLineProcessorTest.java @@ -1,5 +1,7 @@ package org.openmrs.module.initializer.api.loc; +import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; @@ -19,6 +21,7 @@ import org.openmrs.api.DatatypeService; import org.openmrs.api.LocationService; import org.openmrs.api.context.Context; +import org.openmrs.customdatatype.CustomDatatypeException; import org.openmrs.customdatatype.datatype.FreeTextDatatype; import org.openmrs.module.initializer.api.CsvLine; import org.powermock.api.mockito.PowerMockito; @@ -83,9 +86,8 @@ public void fill_shouldParseLocationAttributes() { // Verify Collection attributes = loc.getActiveAttributes(); Assert.assertEquals(2, attributes.size()); - Assert.assertTrue("Must have attribute +1 206 555 0100", - attributes.removeIf(a -> a.getValue().equals("+1 206 555 0100"))); - Assert.assertTrue("Must have attribute jdoe@example.com", + assertTrue("Must have attribute +1 206 555 0100", attributes.removeIf(a -> a.getValue().equals("+1 206 555 0100"))); + assertTrue("Must have attribute jdoe@example.com", attributes.removeIf(a -> a.getValue().equals("jdoe@example.com"))); } @@ -106,13 +108,12 @@ public void fill_shouldLeaveUnspecifiedAttributesIntact() { // Verify Collection attributes = loc.getActiveAttributes(); Assert.assertEquals(2, attributes.size()); - Assert.assertTrue("Must have attribute +1 206 555 0100", - attributes.removeIf(a -> a.getValue().equals("+1 206 555 0100"))); - Assert.assertTrue("Must have attribute janedoe@example.com", + assertTrue("Must have attribute +1 206 555 0100", attributes.removeIf(a -> a.getValue().equals("+1 206 555 0100"))); + assertTrue("Must have attribute janedoe@example.com", attributes.removeIf(a -> a.getValue().equals("janedoe@example.com"))); } - @Test(expected = IllegalArgumentException.class) + @Test public void fill_shouldFailIfAttributeTypeDoesNotExistAndAttributeValueIsNotBlank() { // Setup String[] headerLine = { HEADER_ATTRIBUTE_PREFIX + PHONE_ATT_TYPE_UUID, @@ -121,7 +122,11 @@ public void fill_shouldFailIfAttributeTypeDoesNotExistAndAttributeValueIsNotBlan when(ls.getLocationAttributeTypeByName(EMAIL_ATT_TYPE_NAME)).thenReturn(null); // Replay - processor.fill(new Location(), new CsvLine(headerLine, line)); + Exception exception = assertThrows(Exception.class, () -> { + processor.fill(new Location(), new CsvLine(headerLine, line)); + }); + + // Check if it's either IllegalArgumentException or CustomDatatypeException + assertTrue(exception instanceof IllegalArgumentException || exception instanceof CustomDatatypeException); } - }