Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ This is the list of currently supported domains in their loading order:
1. [AMPATH Forms Translations (JSON files)](readme/ampathformstranslations.md)
1. [HTML Forms (XML files)](readme/htmlforms.md)
1. [Disposition Config (json file)](readme/dispositions.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:
Expand Down Expand Up @@ -208,6 +209,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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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
Expand Down
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_RANGES.getName());

boolean result = true;
Set<String> loaderDomains = loaders.stream().map(Loader::getDomainName).collect(Collectors.toSet());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
119 changes: 119 additions & 0 deletions api-2.7/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?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>
<groupId>org.openmrs.module</groupId>
<artifactId>initializer</artifactId>
<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>
<datafilterVersion>2.2.0</datafilterVersion>
</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>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</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>

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

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

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

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

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

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

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

<dependency>
<groupId>org.openmrs.module</groupId>
<artifactId>datafilter-api</artifactId>
<version>${datafilterVersion}</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

import org.apache.commons.lang3.StringUtils;
import org.openmrs.ConceptReferenceRange;
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.stereotype.Component;

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

private ConceptReferenceRangeService conceptReferenceRangeService;

@Autowired
public ConceptReferenceRangeCsvParser(ConceptReferenceRangeLineProcessor processor,
ConceptReferenceRangeService conceptReferenceRangeService) {
super(processor);
this.conceptReferenceRangeService = conceptReferenceRangeService;
}

@Override
public Domain getDomain() {
return Domain.CONCEPT_REFERENCE_RANGES;
}

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

ConceptReferenceRange referenceRange = conceptReferenceRangeService.getConceptReferenceRangeByUuid(uuid);

if (referenceRange == null) {
referenceRange = new ConceptReferenceRange();
if (!StringUtils.isEmpty(uuid)) {
referenceRange.setUuid(uuid);
}
}

return referenceRange;
}

@Override
public ConceptReferenceRange save(ConceptReferenceRange instance) {
return conceptReferenceRangeService.saveReferenceRange(instance);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

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

@Component("initializer.conceptReferenceRangeLineProcessor")
public class ConceptReferenceRangeLineProcessor extends BaseLineProcessor<ConceptReferenceRange> {

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;

private final ConceptReferenceRangeService conceptReferenceRangeService;

@Autowired
public ConceptReferenceRangeLineProcessor(@Qualifier("conceptService") ConceptService conceptService,
ConceptReferenceRangeService conceptReferenceRangeService) {
this.conceptService = conceptService;
this.conceptReferenceRangeService = conceptReferenceRangeService;
}

public ConceptReferenceRange fill(ConceptReferenceRange referenceRange, CsvLine line) throws IllegalArgumentException {
// ConceptNumeric conceptNumeric = conceptService.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID));
ConceptNumeric conceptNumeric = conceptReferenceRangeService
.getConceptNumericByUuid(line.get(HEADER_CONCEPT_NUMERIC_UUID));

if (conceptNumeric == null) {
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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

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

import java.io.File;

@Component
public class ConceptReferenceRangeLoader extends BaseCsvLoader<ConceptReferenceRange, ConceptReferenceRangeCsvParser> {

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

@Override
protected void preload(File file) {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.openmrs.module.initializer.api.conceptreferencerange;

import org.openmrs.ConceptNumeric;
import org.openmrs.ConceptReferenceRange;
import org.openmrs.annotation.OpenmrsProfile;
import org.openmrs.api.ConceptService;
import org.openmrs.api.OpenmrsService;
import org.openmrs.api.context.Context;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

@OpenmrsProfile(openmrsPlatformVersion = "[2.7.0 - 2.7.*]")
public class ConceptReferenceRangeService implements OpenmrsService {

@Autowired
private final ConceptService conceptService;

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

/**
* Gets an <code>ConceptReferenceRange</code> by uuid.
*
* @param uuid uuid of the <code>ConceptReferenceRange</code>
* @return conceptReferenceRange or <code>null</code>
*/
public ConceptReferenceRange getConceptReferenceRangeByUuid(String uuid) {
return Context.getConceptService().getConceptReferenceRangeByUuid(uuid);
}

/**
* Saves a <code>ConceptReferenceRange</code>.
*
* @param referenceRange the <code>ConceptReferenceRange</code> to be saved
* @return the saved <code>ConceptReferenceRange</code>
*/
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() {
}
}
Loading