Skip to content

Update UI profile model to allow support of multiple value sets #599

@paulolaup

Description

@paulolaup

BACKGROUND:

Recent updates in the fhir-ontology-generator project have introduced support of multiple value sets for a single attribute. With this change, there is no longer a need to support multiple attributes for each value set an element supports via slicing. An example is the element Specimen.bodySite.coding of the MII CDS Biobank modules Bioprobe profile which supports both SNOMED CT and ICD-O-3 codes.

Refer to the relevant issue in the fhir-ontology-generator repository.

TODO:

Update to UI profile model in the backend to support the new ontology version.

Current:

@JsonInclude(JsonInclude.Include.ALWAYS)
@Builder
public record AttributeDefinition(
    @JsonProperty(value = "display", required = true) DisplayEntry display,
    @JsonProperty(value = "type", required = true) ValueDefinitonType type,
    @JsonProperty("selectableConcepts") List<TermCode> selectableConcepts,
    @JsonProperty("attributeCode") TermCode attributeCode,
    @JsonProperty("comparator") Comparator comparator,
    @JsonProperty("optional") Boolean optional,
    @JsonProperty("allowedUnits") List<TermCode> allowedUnits,
    @JsonProperty(value = "precision", required = true, defaultValue = "0") double precision,
    @JsonProperty(value = "min") Double min,
    @JsonProperty(value = "max") Double max,
    @JsonProperty("referencedCriteriaSet") String referencedCriteriaSet,
    @JsonProperty("referencedValueSet") String referencedValueSet
) {
    public AttributeDefinition {
        selectableConcepts = (selectableConcepts == null) ? List.of() : selectableConcepts;
        allowedUnits = (allowedUnits == null) ? List.of() : allowedUnits;
    }
}

New:

@JsonInclude(JsonInclude.Include.ALWAYS)
@Builder
public record AttributeDefinition(
    @JsonProperty(value = "display", required = true) DisplayEntry display,
    @JsonProperty(value = "type", required = true) ValueDefinitonType type,
    @JsonProperty("selectableConcepts") List<TermCode> selectableConcepts,
    @JsonProperty("attributeCode") TermCode attributeCode,
    @JsonProperty("comparator") Comparator comparator,
    @JsonProperty("optional") Boolean optional,
    @JsonProperty("allowedUnits") List<TermCode> allowedUnits,
    @JsonProperty(value = "precision", required = true, defaultValue = "0") double precision,
    @JsonProperty(value = "min") Double min,
    @JsonProperty(value = "max") Double max,
    @JsonProperty("referencedCriteriaSet") List<String> referencedCriteriaSet, //Updated
    @JsonProperty("referencedValueSet") List<String> referencedValueSets // Updated
) {
    public AttributeDefinition {
        selectableConcepts = (selectableConcepts == null) ? List.of() : selectableConcepts;
        allowedUnits = (allowedUnits == null) ? List.of() : allowedUnits;
    }
}

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions