Skip to content

Commit

Permalink
Loading Concept Reference Range Configurations
Browse files Browse the repository at this point in the history
  • Loading branch information
wikumChamith committed Dec 12, 2024
1 parent 26222b4 commit 614e0e2
Show file tree
Hide file tree
Showing 9 changed files with 219 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ protected boolean matchesSafely(List<Loader> 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_RANGE.getName());

boolean result = true;
Set<String> loaderDomains = loaders.stream().map(Loader::getDomainName).collect(Collectors.toSet());
Expand Down
53 changes: 53 additions & 0 deletions api-2.7/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>initializer</artifactId>
<groupId>org.openmrs.module</groupId>
<version>2.8.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>initializer-api-2.7</artifactId>
<packaging>jar</packaging>
<name>Initializer API 2.7</name>
<description>API 2.7 project for Initializer</description>

<properties>
<openmrsPlatformVersion>${openmrsVersion2.7}</openmrsPlatformVersion>
</properties>

<dependencies>

<dependency>
<groupId>org.openmrs.test</groupId>
<artifactId>openmrs-test</artifactId>
<type>pom</type>
<version>${openmrsPlatformVersion}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>${project.parent.artifactId}-api</artifactId>
<version>${project.parent.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>${project.parent.artifactId}-api</artifactId>
<version>${project.parent.version}</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.openmrs.module.initializer.api.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.Qualifier;
import org.springframework.stereotype.Component;
import org.openmrs.ConceptReferenceRange;

@Component
public class ConceptReferenceRangeLineProcessor extends BaseLineProcessor<ConceptReferenceRange> {

private final String HEADER_CONCEPT_NUMERIC_UUID = "Concept Numeric UUID";

private final String HEADER_ABSOLUTE_LOW = "Absolute Low";

private final String HEADER_ABSOLUTE_HIGH = "Absolute High";

private final String HEADER_CRITICAL_LOW = "Critical Low";

private final String HEADER_CRITICAL_HIGH = "Critical High";

private final String HEADER_NORMAL_LOW = "Normal Low";

private final String HEADER_NORMAL_HIGH = "Normal High";

private final String HEADER_CRITERIA = "Criteria";

private final ConceptService conceptService;

public ConceptReferenceRangeLineProcessor(@Qualifier("conceptService") ConceptService conceptService) {
this.conceptService = conceptService;
}

public ConceptReferenceRange fill(ConceptReferenceRange instance, CsvLine line) throws IllegalArgumentException {
ConceptReferenceRange conceptReferenceRange = new ConceptReferenceRange();

if (instance.getUuid() != null) {
conceptReferenceRange = conceptService.getConceptReferenceRangeByUuid(instance.getUuid());
}

conceptReferenceRange
.setConceptNumeric(conceptService.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID)));
conceptReferenceRange.setHiAbsolute(line.getDouble(HEADER_ABSOLUTE_HIGH));
conceptReferenceRange.setLowAbsolute(line.getDouble(HEADER_ABSOLUTE_LOW));
conceptReferenceRange.setHiCritical(line.getDouble(HEADER_CRITICAL_HIGH));
conceptReferenceRange.setLowCritical(line.getDouble(HEADER_CRITICAL_LOW));
conceptReferenceRange.setHiNormal(line.getDouble(HEADER_NORMAL_HIGH));
conceptReferenceRange.setLowNormal(line.getDouble(HEADER_NORMAL_LOW));
conceptReferenceRange.setCriteria(line.getString(HEADER_CRITERIA));

return conceptReferenceRange;

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

import org.openmrs.ConceptReferenceRange;
import org.openmrs.annotation.OpenmrsProfile;
import org.openmrs.module.initializer.api.loaders.BaseCsvLoader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.File;

@OpenmrsProfile(openmrsPlatformVersion = "2.7.x")
@Component
public class ConceptReferenceRangeLoader extends BaseCsvLoader<ConceptReferenceRange, ConceptReferenceRangeParser> {

@Autowired
public void setParser(ConceptReferenceRangeParser parser) {
this.parser = parser;
}

@Override
protected void preload(File file) {
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

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.Qualifier;
import org.springframework.stereotype.Component;

@Component
public class ConceptReferenceRangeParser extends CsvParser<ConceptReferenceRange, BaseLineProcessor<ConceptReferenceRange>> {

private ConceptService conceptService;

public ConceptReferenceRangeParser(@Qualifier("conceptService") ConceptService conceptService,
ConceptReferenceRangeLineProcessor lineProcessor) {
super(lineProcessor);
this.conceptService = conceptService;
}

@Override
public ConceptReferenceRange bootstrap(CsvLine line) throws IllegalArgumentException {
String uuid = line.getUuid();
ConceptReferenceRange conceptReferenceRange = conceptService.getConceptReferenceRangeByUuid(uuid);

if (conceptReferenceRange == null) {
conceptReferenceRange = new ConceptReferenceRange();
conceptReferenceRange.setUuid(uuid);
}

return conceptReferenceRange;
}

@Override
public ConceptReferenceRange save(ConceptReferenceRange instance) {
return conceptService.saveConceptReferenceRange(instance);
}

@Override
public Domain getDomain() {
return Domain.CONCEPT_REFERENCE_RANGE;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.openmrs.module.initializer.api.loaders;

import org.junit.Test;
import org.junit.Before;
import org.openmrs.ConceptReferenceRange;
import org.openmrs.api.ConceptService;
import org.openmrs.module.initializer.DomainBaseModuleContextSensitiveTest;
import org.openmrs.module.initializer.api.c.ConceptClassesLoader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class ConceptReferenceRangeLoaderIntegrationTest extends DomainBaseModuleContextSensitiveTest {

@Autowired
@Qualifier("conceptService")
private ConceptService conceptService;

@Autowired
private ConceptClassesLoader loader;

@Before
public void setup() {
loader = new ConceptClassesLoader();
}

@Test
public void load_shouldLoadConceptReferenceRangesAccordingToCsvFiles() {
loader.load();
ConceptReferenceRange conceptReferenceRange = conceptService
.getConceptReferenceRangeByUuid("bc059100-4ace-4af5-afbf-2da7f3a34acf");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Uuid,Concept Numeric Uuid,Absolute low,Critical low,Normal low,Normal high,Critical high,Absolute high,Criteria
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
3 changes: 2 additions & 1 deletion api/src/main/java/org/openmrs/module/initializer/Domain.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ public enum Domain {
AMPATH_FORMS,
AMPATH_FORMS_TRANSLATIONS,
HTML_FORMS,
DISPOSITIONS;
DISPOSITIONS,
CONCEPT_REFERENCE_RANGE;

public int getOrder() {
return ArrayUtils.indexOf(values(), this) + 1;
Expand Down
2 changes: 2 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
<module>api-2.3</module>
<module>api-2.4</module>
<module>api-2.5</module>
<module>api-2.7</module>
<module>omod</module>
</modules>

Expand All @@ -58,6 +59,7 @@
<openmrsVersion2.3>2.3.6</openmrsVersion2.3>
<openmrsVersion2.4>2.4.5</openmrsVersion2.4>
<openmrsVersion2.5>2.5.5</openmrsVersion2.5>
<openmrsVersion2.7>2.7.0</openmrsVersion2.7>

<openmrsPlatformVersion>${openmrsVersion2.1}</openmrsPlatformVersion>

Expand Down

0 comments on commit 614e0e2

Please sign in to comment.