Skip to content

Commit

Permalink
Merge pull request #1308 from b2ihealthcare/feature/create-concept-pa…
Browse files Browse the repository at this point in the history
…rameter-disable-acceptability-check

Create concept parameter to disable duplicate preferred term check
  • Loading branch information
cmark authored Jul 10, 2024
2 parents b732645 + f2d8e58 commit 2179707
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.b2international.snowowl.snomed.core.domain.refset.SnomedReferenceSet;
import com.b2international.snowowl.snomed.core.domain.refset.SnomedReferenceSetMember;
import com.b2international.snowowl.snomed.datastore.index.entry.SnomedConceptDocument;
import com.b2international.snowowl.snomed.datastore.request.SnomedConceptCreateRequestBuilder;
import com.b2international.snowowl.snomed.datastore.request.SnomedRequests;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand Down Expand Up @@ -499,6 +500,10 @@ public List<String> getSemanticTags() {

@Override
public Request<TransactionContext, String> toCreateRequest(String containerId) {
return toCreateRequestBuilder().build();
}

public SnomedConceptCreateRequestBuilder toCreateRequestBuilder() {
return SnomedRequests.prepareNewConcept()
.setActive(isActive())
.addMembers(getMembers())
Expand All @@ -507,8 +512,7 @@ public Request<TransactionContext, String> toCreateRequest(String containerId) {
.setDefinitionStatusId(getDefinitionStatusId())
.setId(getId())
.setModuleId(getModuleId())
.setSubclassDefinitionStatus(getSubclassDefinitionStatus())
.build();
.setSubclassDefinitionStatus(getSubclassDefinitionStatus());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ public final class SnomedConceptCreateRequest extends BaseSnomedComponentCreateR
@NotNull
private SubclassDefinitionStatus subclassDefinitionStatus = SubclassDefinitionStatus.NON_DISJOINT_SUBCLASSES;

@NotNull
private Boolean ignoreDuplicatePreferredTerms;

SnomedConceptCreateRequest() {}

void setSubclassDefinitionStatus(SubclassDefinitionStatus subclassDefinitionStatus) {
Expand All @@ -82,6 +85,10 @@ void setRefSet(SnomedRefSetCreateRequest refSet) {
this.refSetRequest = refSet;
}

void setIgnoreDuplicatePreferredTerms(Boolean ignoreDuplicatePreferredTerms) {
this.ignoreDuplicatePreferredTerms = ignoreDuplicatePreferredTerms;
}

@Override
public Set<String> getRequiredComponentIds(TransactionContext context) {
return ImmutableSet.<String>builder()
Expand Down Expand Up @@ -173,9 +180,11 @@ private void convertDescriptions(TransactionContext context, final String concep
throw new BadRequestException("At least one fully specified name and one preferred term must be supplied with the concept.");
}

for (final com.google.common.collect.Multiset.Entry<String> languageRefSetIdOccurence : preferredLanguageRefSetIds.entrySet()) {
if (languageRefSetIdOccurence.getCount() > 1) {
throw new BadRequestException("More than one preferred term has been added for language reference set %s.", languageRefSetIdOccurence.getElement());
if (!ignoreDuplicatePreferredTerms) {
for (final com.google.common.collect.Multiset.Entry<String> languageRefSetIdOccurence : preferredLanguageRefSetIds.entrySet()) {
if (languageRefSetIdOccurence.getCount() > 1) {
throw new BadRequestException("More than one preferred term has been added for language reference set %s.", languageRefSetIdOccurence.getElement());
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2011-2021 B2i Healthcare, https://b2ihealthcare.com
* Copyright 2011-2024 B2i Healthcare, https://b2ihealthcare.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -37,6 +37,7 @@ public final class SnomedConceptCreateRequestBuilder extends SnomedComponentCrea
private List<SnomedRelationshipCreateRequest> relationships = newArrayList();
private SnomedRefSetCreateRequest refSet;
private SubclassDefinitionStatus subclassDefinitionStatus = SubclassDefinitionStatus.NON_DISJOINT_SUBCLASSES;
private Boolean ignoreDuplicatePreferredTerms = Boolean.FALSE;

SnomedConceptCreateRequestBuilder() {
super();
Expand Down Expand Up @@ -112,6 +113,13 @@ public SnomedConceptCreateRequestBuilder setRefSet(SnomedRefSetCreateRequest ref
return getSelf();
}

// other arguments

public SnomedConceptCreateRequestBuilder setIgnoreDuplicatePreferredTerms(Boolean ignoreDuplicatePreferredTerms) {
this.ignoreDuplicatePreferredTerms = ignoreDuplicatePreferredTerms == null ? Boolean.FALSE : ignoreDuplicatePreferredTerms;
return getSelf();
}

@Override
protected BaseSnomedComponentCreateRequest createRequest() {
return new SnomedConceptCreateRequest();
Expand All @@ -125,6 +133,7 @@ protected void init(BaseSnomedComponentCreateRequest request) {
req.setDescriptions(descriptions);
req.setRelationships(relationships);
req.setRefSet(refSet);
req.setIgnoreDuplicatePreferredTerms(ignoreDuplicatePreferredTerms);
}

}

0 comments on commit 2179707

Please sign in to comment.