use of org.hl7.fhir.dstu3.model.ValueSet in project bunsen by cerner.
the class ValueSets method expandValuesIterator.
private static Iterator<Value> expandValuesIterator(ValueSet valueSet) {
List<Value> values = new ArrayList<>();
ValueSetComposeComponent compose = valueSet.getCompose();
for (ConceptSetComponent inclusion : compose.getInclude()) {
for (ConceptReferenceComponent concept : inclusion.getConcept()) {
Value value = new Value();
value.setValueSetUri(valueSet.getUrl());
value.setValueSetVersion(valueSet.getVersion());
value.setSystem(inclusion.getSystem());
value.setVersion(inclusion.getVersion());
value.setValue(concept.getCode());
values.add(value);
}
}
return values.iterator();
}
use of org.hl7.fhir.dstu3.model.ValueSet in project bunsen by cerner.
the class ValueSets method withValueSets.
private ValueSets withValueSets(Dataset<ValueSet> newValueSets, Dataset<Value> newValues) {
Dataset<UrlAndVersion> newMembers = getUrlAndVersions(newValueSets);
// Instantiating a new composite ConceptMaps requires a new timestamp
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
Dataset<ValueSet> newValueSetsWithTimestamp = newValueSets.withColumn("timestamp", lit(timestamp.toString()).cast("timestamp")).as(VALUE_SET_ENCODER);
return new ValueSets(spark, this.members.union(newMembers), this.valueSets.union(newValueSetsWithTimestamp), this.values.union(newValues));
}
use of org.hl7.fhir.dstu3.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.dstu3.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.dstu3.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");
}
Aggregations