Skip to content

Commit

Permalink
#382 - Change display and translations structure for criteria and con…
Browse files Browse the repository at this point in the history
…cepts

- Change responses to codeable concept and terminology replies to the new structure
- missing: tests, actual ontology files to conveniently check if responses make sense
  • Loading branch information
michael-82 committed Oct 21, 2024
1 parent 1ffe835 commit 96b5da3
Show file tree
Hide file tree
Showing 19 changed files with 112 additions and 49 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package de.numcodex.feasibility_gui_backend.common.api;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.numcodex.feasibility_gui_backend.dse.api.LocalizedValue;
import de.numcodex.feasibility_gui_backend.terminology.es.model.Display;
import lombok.Builder;

import java.util.List;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder
public record DisplayEntry(
@JsonProperty String original,
@JsonProperty List<LocalizedValue> translations
) {

public static DisplayEntry of(Display display) {
return DisplayEntry.builder()
.original(display.original())
.translations(List.of(
LocalizedValue.builder()
.language("de-DE")
.value(display.deDe())
.build(),
LocalizedValue.builder()
.language("en-US")
.value(display.enUs())
.build()
))
.build();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import lombok.Builder;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
@Builder
public class CcSearchResult {
private long totalHits;
private List<TermCode> results;
private List<CodeableConceptEntry> results;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package de.numcodex.feasibility_gui_backend.terminology.api;

import de.numcodex.feasibility_gui_backend.common.api.TermCode;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.dse.api.LocalizedValue;
import de.numcodex.feasibility_gui_backend.terminology.es.model.CodeableConceptDocument;
import lombok.Builder;

import java.util.List;

@Builder
public record CodeableConceptEntry(
TermCode termCode,
DisplayEntry display
) {
public static CodeableConceptEntry of(CodeableConceptDocument document) {
return CodeableConceptEntry.builder()
.termCode(document.termCode())
.display(DisplayEntry.builder()
.original(document.display().original())
.translations(List.of(
LocalizedValue.builder()
.language("de-DE")
.value(document.display().deDe())
.build(),
LocalizedValue.builder()
.language("en-US")
.value(document.display().enUs())
.build()
))
.build()
)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package de.numcodex.feasibility_gui_backend.terminology.api;

import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.terminology.es.model.OntologyListItemDocument;
import lombok.Builder;

@Builder
public record EsSearchResultEntry(
String id,
String name,
DisplayEntry display,
int availability,
String context,
String terminology,
Expand All @@ -17,7 +18,7 @@ public record EsSearchResultEntry(
public static EsSearchResultEntry of(OntologyListItemDocument ontologyListItemDocument) {
return EsSearchResultEntry.builder()
.id(ontologyListItemDocument.id())
.name(ontologyListItemDocument.name())
.display(DisplayEntry.of(ontologyListItemDocument.display()))
.availability(ontologyListItemDocument.availability())
.context(ontologyListItemDocument.context().code())
.terminology(ontologyListItemDocument.terminology())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch._types.query_dsl.*;
import de.numcodex.feasibility_gui_backend.common.api.TermCode;
import de.numcodex.feasibility_gui_backend.terminology.api.CcSearchResult;
import de.numcodex.feasibility_gui_backend.terminology.api.CodeableConceptEntry;
import de.numcodex.feasibility_gui_backend.terminology.es.model.CodeableConceptDocument;
import de.numcodex.feasibility_gui_backend.terminology.es.repository.CodeableConceptEsRepository;
import de.numcodex.feasibility_gui_backend.terminology.es.repository.OntologyItemNotFoundException;
Expand Down Expand Up @@ -47,17 +47,18 @@ public CcSearchResult performCodeableConceptSearchWithRepoAndPaging(String keywo
}

var searchHitPage = findByCodeOrDisplay(keyword, filterList, PageRequest.of(page, pageSize));
List<TermCode> codeableConceptEntries = new ArrayList<>();
List<CodeableConceptEntry> codeableConceptEntries = new ArrayList<>();

searchHitPage.getSearchHits().forEach(hit -> codeableConceptEntries.add(hit.getContent().termCode()));
searchHitPage.getSearchHits().forEach(hit -> codeableConceptEntries.add(CodeableConceptEntry.of(hit.getContent())));
return CcSearchResult.builder()
.totalHits(searchHitPage.getTotalHits())
.results(codeableConceptEntries)
.build();
}

public TermCode getSearchResultEntryByCode(String code) {
return repo.findById(code).orElseThrow(OntologyItemNotFoundException::new).termCode();
public CodeableConceptEntry getSearchResultEntryByCode(String code) {
var document = repo.findById(code).orElseThrow(OntologyItemNotFoundException::new);
return CodeableConceptEntry.of(document);
}

private SearchHits<CodeableConceptDocument> findByCodeOrDisplay(String keyword,
Expand Down Expand Up @@ -88,7 +89,7 @@ private SearchHits<CodeableConceptDocument> findByCodeOrDisplay(String keyword,
} else {
var mmQuery = new MultiMatchQuery.Builder()
.query(keyword)
.fields(List.of("termcode.display", "termcode.code^2"))
.fields(List.of("display.de-DE", "display.en-US", "termcode.code^2"))
.build();

boolQuery = new BoolQuery.Builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ private SearchHits<OntologyListItemDocument> findByNameOrTermcode(String keyword
} else {
var mmQuery = new MultiMatchQuery.Builder()
.query(keyword)
.fields(List.of("name", "termcode^2"))
.fields(List.of("display.de-DE", "display.en-US", "termcode^2"))
.build();

boolQuery = new BoolQuery.Builder()
Expand Down Expand Up @@ -196,7 +196,7 @@ private SearchHits<OntologyListItemDocument> findByNameOrTermcode(String keyword
public OntologyItemRelationsDocument getOntologyItemRelationsByHash(String hash) {
var ontologyItem = ontologyItemEsRepository.findById(hash).orElseThrow(OntologyItemNotFoundException::new);
return OntologyItemRelationsDocument.builder()
.translations(ontologyItem.translations())
.display(ontologyItem.display())
.parents(ontologyItem.parents())
.children(ontologyItem.children())
.relatedTerms(ontologyItem.relatedTerms())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public record CodeableConceptDocument(
@Field(name = "termcode")
TermCode termCode,
@Field(name = "value_sets")
List<String> valueSets
List<String> valueSets,
@Field(name = "display")
Display display
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package de.numcodex.feasibility_gui_backend.terminology.es.model;

import lombok.Builder;
import org.springframework.data.elasticsearch.annotations.Field;

@Builder
public record Display(
String original,
@Field(name = "de-De")
String deDe,
@Field(name = "en-Us")
String enUs
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,14 @@
@Document(indexName = "ontology")
public record OntologyItemDocument(
@Id String id,
String name,
int availability,
TermCode context,
String terminology,
String termcode,
@Field(name = "kds_module") String kdsModule,

@Field(name = "translations")
Collection<Translation> translations,
@Field(name = "display")
Display display,
@Field(name = "kds_module")
String kdsModule,
@Field(name = "parents")
Collection<Relative> parents,
@Field(name = "children")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
@Builder
@Document(indexName = "ontology")
public record OntologyItemRelationsDocument(
@Field(name = "translations")
Collection<Translation> translations,
@Field(name = "display")
Display display,
@Field(name = "parents")
Collection<Relative> parents,
@Field(name = "children")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
@Document(indexName = "ontology")
public record OntologyListItemDocument(
@Id String id,
String name,
Display display,
int availability,
TermCode context,
String terminology,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package de.numcodex.feasibility_gui_backend.terminology.v4;

import de.numcodex.feasibility_gui_backend.common.api.TermCode;
import de.numcodex.feasibility_gui_backend.terminology.api.CcSearchResult;
import de.numcodex.feasibility_gui_backend.terminology.api.CodeableConceptEntry;
import de.numcodex.feasibility_gui_backend.terminology.es.CodeableConceptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
Expand Down Expand Up @@ -34,7 +34,7 @@ public CcSearchResult searchOntologyItemsCriteriaQuery(@RequestParam("searchterm
}

@GetMapping(value = "/entry/{code}", produces = MediaType.APPLICATION_JSON_VALUE)
public TermCode getCodeableConceptByCode(@PathVariable("code") String code) {
public CodeableConceptEntry getCodeableConceptByCode(@PathVariable("code") String code) {
return codeableConceptService.getSearchResultEntryByCode(code);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;
import de.numcodex.feasibility_gui_backend.dse.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.dse.api.DseProfileTreeNode;
import de.numcodex.feasibility_gui_backend.dse.api.LocalizedValue;
import de.numcodex.feasibility_gui_backend.dse.persistence.DseProfile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import de.numcodex.feasibility_gui_backend.dse.DseService;
import de.numcodex.feasibility_gui_backend.dse.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.common.api.DisplayEntry;
import de.numcodex.feasibility_gui_backend.dse.api.DseProfile;
import de.numcodex.feasibility_gui_backend.dse.api.DseProfileTreeNode;
import de.numcodex.feasibility_gui_backend.dse.api.LocalizedValue;
Expand Down

0 comments on commit 96b5da3

Please sign in to comment.