use of org.hl7.fhir.r5.model.ValueSet in project bunsen by cerner.
the class ValueSets method getValueSet.
/**
* Returns the value set with the given uri and version, or null if there is no such value set.
*
* @param uri the uri of the value set to return
* @param version the version of the value set to return
* @return the specified value set.
*/
public ValueSet getValueSet(String uri, String version) {
// Load the value sets, which may contain zero items if the value set does not exist
// Typecast necessary to placate the Java compiler calling this Scala function
ValueSet[] valueSets = (ValueSet[]) this.valueSets.filter(col("url").equalTo(lit(uri)).and(col("version").equalTo(lit(version)))).head(1);
if (valueSets.length == 0) {
return null;
} else {
ValueSet valueSet = valueSets[0];
Dataset<Value> filteredValues = getValues(uri, version);
addToValueSet(valueSet, filteredValues);
return valueSet;
}
}
use of org.hl7.fhir.r5.model.ValueSet in project bunsen by cerner.
the class ValueSets method addToValueSet.
/**
* Adds the given values to the given value set instance.
*/
private void addToValueSet(ValueSet valueSet, Dataset<Value> values) {
ValueSetComposeComponent composeComponent = valueSet.getCompose();
ConceptSetComponent currentInclusion = null;
ConceptReferenceComponent concept = null;
List<Value> sortedValues = values.sort("system", "version", "value").collectAsList();
// Workaround for the decoder producing an immutable array by replacing it with a mutable one
composeComponent.setInclude(new ArrayList<>(composeComponent.getInclude()));
for (Value value : sortedValues) {
if (currentInclusion == null || !value.getSystem().equals(currentInclusion.getSystem()) || !value.getVersion().equals(currentInclusion.getVersion())) {
// Find a matching inclusion
for (ConceptSetComponent candidate : composeComponent.getInclude()) {
if (value.getSystem().equals(candidate.getSystem()) && value.getVersion().equals(candidate.getVersion())) {
currentInclusion = candidate;
// Workaround for the decoder producing an immutable array by replacing it with a
// mutable one
currentInclusion.setConcept(new ArrayList<>(currentInclusion.getConcept()));
}
}
// No matching inclusion found, so add one
if (currentInclusion == null) {
currentInclusion = composeComponent.addInclude();
currentInclusion.setSystem(value.getSystem());
currentInclusion.setVersion(value.getVersion());
concept = null;
}
}
// Create concept if not exists
if (concept == null || !value.getValue().equals(concept.getCode())) {
concept = currentInclusion.addConcept();
concept.setCode(value.getValue());
}
}
}
use of org.hl7.fhir.r5.model.ValueSet in project bunsen by cerner.
the class ValueSetsTest method testCreateSimpleValueSets.
@Test
public void testCreateSimpleValueSets() {
ValueSets valueSets = ValueSets.getEmpty(spark).withValueSets(valueSet("urn:cerner:valueset:valueset1", "1"), valueSet("urn:cerner:valueset:valueset2", "1"));
Dataset<Value> values = valueSets.getValues();
Assert.assertEquals(2, values.count());
ValueSet firstValueSet = valueSets.getValueSet("urn:cerner:valueset:valueset1", "1");
checkValueSet(firstValueSet, "urn:cerner:valueset:valueset1", "1");
ValueSet secondValueSet = valueSets.getValueSet("urn:cerner:valueset:valueset2", "1");
checkValueSet(secondValueSet, "urn:cerner:valueset:valueset2", "1");
}
use of org.hl7.fhir.r5.model.ValueSet in project bunsen by cerner.
the class ValueSetsTest method testWithValueSetsFromDirectoryJson.
@Test
public void testWithValueSetsFromDirectoryJson() {
ValueSets valueSets = ValueSets.getEmpty(spark).withValueSetsFromDirectory("src/test/resources/json/valuesets");
ValueSet marriedValueSet = valueSets.getValueSet("urn:cerner:bunsen:valueset:married_maritalstatus", "0.0.1");
Assert.assertNotNull(marriedValueSet);
Assert.assertEquals("urn:cerner:bunsen:valueset:married_maritalstatus", marriedValueSet.getUrl());
Assert.assertEquals("0.0.1", marriedValueSet.getVersion());
}
use of org.hl7.fhir.r5.model.ValueSet in project bunsen by cerner.
the class ValueSetsTest method testAppendValueSets.
@Test
public void testAppendValueSets() {
ValueSets original = ValueSets.getEmpty(spark).withValueSets(valueSet("urn:cerner:valueset:valueset1", "1"), valueSet("urn:cerner:valueset:valueset2", "1"));
ValueSets valueSets = original.withValueSets(valueSet("urn:cerner:valueset:valueset3", "1"));
Assert.assertEquals(2, original.getValues().count());
Assert.assertEquals(3, valueSets.getValues().count());
ValueSet firstValueSet = valueSets.getValueSet("urn:cerner:valueset:valueset1", "1");
checkValueSet(firstValueSet, "urn:cerner:valueset:valueset1", "1");
ValueSet secondValueSet = valueSets.getValueSet("urn:cerner:valueset:valueset2", "1");
checkValueSet(secondValueSet, "urn:cerner:valueset:valueset2", "1");
ValueSet newValueSet = valueSets.getValueSet("urn:cerner:valueset:valueset3", "1");
checkValueSet(newValueSet, "urn:cerner:valueset:valueset3", "1");
}
Aggregations