Skip to content

Commit 5482952

Browse files
author
Luke Sikina
committed
4
1 parent b0ec219 commit 5482952

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/main/java/edu/harvard/dbmi/avillach/dictionary/ConceptDecoratorService.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ public Concept populateParentConcepts(Concept concept) {
5454
private Concept populateTabledConcept(Concept concept, List<String> conceptNodes) {
5555
String studyPath = String.join("\\", conceptNodes.subList(0, 1)) + "\\";
5656
String tablePath = String.join("\\", conceptNodes.subList(0, 2)) + "\\";
57-
Concept study = conceptService.conceptDetail(concept.dataset(), studyPath).orElse(null);
58-
Concept table = conceptService.conceptDetail(concept.dataset(), tablePath).orElse(null);
57+
Concept study = conceptService.conceptDetailWithoutAncestors(concept.dataset(), studyPath).orElse(null);
58+
Concept table = conceptService.conceptDetailWithoutAncestors(concept.dataset(), tablePath).orElse(null);
5959
return concept.withStudy(study).withTable(table);
6060
}
6161

src/main/java/edu/harvard/dbmi/avillach/dictionary/concept/ConceptService.java

+18-9
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,28 @@ public long countConcepts(Filter filter) {
4848
}
4949

5050
public Optional<Concept> conceptDetail(String dataset, String conceptPath) {
51-
return conceptRepository.getConcept(dataset, conceptPath)
51+
return getConcept(dataset, conceptPath, true);
52+
}
53+
54+
private Optional<Concept> getConcept(String dataset, String conceptPath, boolean addAncestors) {
55+
Optional<Concept> concept = conceptRepository.getConcept(dataset, conceptPath)
5256
.map(core -> {
53-
var meta = conceptRepository.getConceptMeta(dataset, conceptPath);
54-
return switch (core) {
55-
case ContinuousConcept cont -> new ContinuousConcept(cont, meta);
56-
case CategoricalConcept cat -> new CategoricalConcept(cat, meta);
57-
case ConceptShell ignored -> throw new RuntimeException("Concept shell escaped to API");
58-
};
59-
}
60-
).map(conceptDecoratorService::populateParentConcepts);
57+
var meta = conceptRepository.getConceptMeta(dataset, conceptPath);
58+
return switch (core) {
59+
case ContinuousConcept cont -> new ContinuousConcept(cont, meta);
60+
case CategoricalConcept cat -> new CategoricalConcept(cat, meta);
61+
case ConceptShell ignored -> throw new RuntimeException("Concept shell escaped to API");
62+
};
63+
}
64+
);
65+
return addAncestors ? concept.map(conceptDecoratorService::populateParentConcepts) : concept;
6166
}
6267

6368
public Optional<Concept> conceptTree(String dataset, String conceptPath, int depth) {
6469
return conceptRepository.getConceptTree(dataset, conceptPath, depth);
6570
}
71+
72+
public Optional<Concept> conceptDetailWithoutAncestors(String dataset, String conceptPath) {
73+
return getConcept(dataset, conceptPath, false);
74+
}
6675
}

0 commit comments

Comments
 (0)