Skip to content

Commit 67f8816

Browse files
alex-odysseushernaldourbinahernaldo.urbinaoleg-odysseus
authored
Extending Concept Set Items with Annotations (#2403)
Co-authored-by: Hernaldo Urbina <[email protected]> Co-authored-by: hernaldo.urbina <mailto:[email protected]> Co-authored-by: oleg-odysseus <[email protected]>
1 parent 02a9c9f commit 67f8816

19 files changed

+813
-106
lines changed

src/main/java/org/ohdsi/webapi/conceptset/ConceptSet.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import javax.persistence.JoinTable;
2727
import javax.persistence.ManyToMany;
2828
import javax.persistence.Table;
29+
import javax.persistence.OneToOne;
2930
import org.hibernate.annotations.GenericGenerator;
3031
import org.hibernate.annotations.Parameter;
3132
import org.ohdsi.webapi.model.CommonEntity;
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package org.ohdsi.webapi.conceptset.annotation;
2+
3+
import org.hibernate.annotations.GenericGenerator;
4+
import org.hibernate.annotations.Parameter;
5+
import org.ohdsi.webapi.model.CommonEntity;
6+
7+
import javax.persistence.Column;
8+
import javax.persistence.Entity;
9+
import javax.persistence.GeneratedValue;
10+
import javax.persistence.Id;
11+
import javax.persistence.Table;
12+
import java.io.Serializable;
13+
14+
@Entity(name = "ConceptSetAnnotation")
15+
@Table(name = "concept_set_annotation")
16+
public class ConceptSetAnnotation implements Serializable {
17+
/**
18+
*
19+
*/
20+
private static final long serialVersionUID = 1L;
21+
22+
@Id
23+
@GenericGenerator(
24+
name = "concept_set_annotation_generator",
25+
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
26+
parameters = {
27+
@Parameter(name = "sequence_name", value = "concept_set_annotation_sequence"),
28+
@Parameter(name = "increment_size", value = "1")
29+
}
30+
)
31+
@GeneratedValue(generator = "concept_set_annotation_generator")
32+
@Column(name = "concept_set_annotation_id")
33+
private Integer id;
34+
35+
@Column(name = "concept_set_id", nullable = false)
36+
private Integer conceptSetId;
37+
38+
@Column(name = "concept_id")
39+
private Integer conceptId;
40+
41+
@Column(name = "annotation_details")
42+
private String annotationDetails;
43+
44+
@Column(name = "vocabulary_version")
45+
private String vocabularyVersion;
46+
47+
@Column(name = "concept_set_version")
48+
private Integer conceptSetVersion;
49+
50+
@Column(name = "copied_from_concept_set_ids")
51+
private String copiedFromConceptSetIds;
52+
53+
public Integer getId() {
54+
return id;
55+
}
56+
57+
public void setId(Integer id) {
58+
this.id = id;
59+
}
60+
61+
public Integer getConceptSetId() {
62+
return conceptSetId;
63+
}
64+
65+
public void setConceptSetId(Integer conceptSetId) {
66+
this.conceptSetId = conceptSetId;
67+
}
68+
69+
public Integer getConceptId() {
70+
return conceptId;
71+
}
72+
73+
public void setConceptId(Integer conceptId) {
74+
this.conceptId = conceptId;
75+
}
76+
77+
public String getAnnotationDetails() {
78+
return annotationDetails;
79+
}
80+
81+
public void setAnnotationDetails(String annotationDetails) {
82+
this.annotationDetails = annotationDetails;
83+
}
84+
85+
public String getVocabularyVersion() {
86+
return vocabularyVersion;
87+
}
88+
89+
public void setVocabularyVersion(String vocabularyVersion) {
90+
this.vocabularyVersion = vocabularyVersion;
91+
}
92+
93+
public Integer getConceptSetVersion() {
94+
return conceptSetVersion;
95+
}
96+
97+
public void setConceptSetVersion(Integer conceptSetVersion) {
98+
this.conceptSetVersion = conceptSetVersion;
99+
}
100+
101+
public String getCopiedFromConceptSetIds() {
102+
return copiedFromConceptSetIds;
103+
}
104+
105+
public void setCopiedFromConceptSetIds(String copiedFromConceptSetIds) {
106+
this.copiedFromConceptSetIds = copiedFromConceptSetIds;
107+
}
108+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.ohdsi.webapi.conceptset.annotation;
2+
3+
import java.util.List;
4+
import java.util.Optional;
5+
6+
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.data.jpa.repository.Query;
8+
9+
public interface ConceptSetAnnotationRepository extends JpaRepository<ConceptSetAnnotation, Integer> {
10+
11+
@Query("DELETE FROM ConceptSetAnnotation cc WHERE cc.conceptSetId = :conceptSetId and cc.conceptId in :conceptId")
12+
void deleteAnnotationByConceptSetIdAndInConceptId(int conceptSetId, List<Integer> conceptId);
13+
14+
void deleteAnnotationByConceptSetIdAndConceptId(int conceptSetId, int conceptId);
15+
16+
List<ConceptSetAnnotation> findByConceptSetId(int conceptSetId);
17+
ConceptSetAnnotation findById(int id);
18+
void deleteById(int id);
19+
Optional<ConceptSetAnnotation> findConceptSetAnnotationByConceptIdAndConceptId(int conceptSetId, int conceptId);
20+
}

src/main/java/org/ohdsi/webapi/security/model/ConceptSetPermissionSchema.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,21 @@ public class ConceptSetPermissionSchema extends EntityPermissionSchema {
1111
private static Map<String, String> writePermissions = new HashMap<String, String>() {{
1212
put("conceptset:%s:put", "Update Concept Set with ID = %s");
1313
put("conceptset:%s:items:put", "Update Items of Concept Set with ID = %s");
14+
put("conceptset:*:annotation:put", "Create Concept Set Annotation");
15+
put("conceptset:%s:annotation:*:delete", "Delete Annotations of Concept Set with ID = %s");
16+
put("conceptset:*:annotation:*:delete", "Delete Annotations of any Concept Set");
1417
put("conceptset:%s:delete", "Delete Concept Set with ID = %s");
1518
}};
1619

1720
private static Map<String, String> readPermissions = new HashMap<String, String>() {{
1821
put("conceptset:%s:get", "view conceptset definition with id %s");
1922
put("conceptset:%s:expression:get", "Resolve concept set %s expression");
23+
put("conceptset:%s:annotation:get", "Resolve concept set annotations");
24+
put("conceptset:*:annotation:get", "Resolve concept set annotations");
2025
put("conceptset:%s:version:*:expression:get", "Get expression for concept set %s items for default source");
2126
}};
2227

2328
public ConceptSetPermissionSchema() {
24-
2529
super(EntityType.CONCEPT_SET, readPermissions, writePermissions);
2630
}
2731
}

src/main/java/org/ohdsi/webapi/security/model/EntityType.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public enum EntityType {
2727
COHORT_SAMPLE(CohortSample.class),
2828
TAG(Tag.class),
2929
REUSABLE(Reusable.class);
30-
3130
private final Class<? extends CommonEntity> entityClass;
3231

3332
EntityType(Class<? extends CommonEntity> entityClass) {

src/main/java/org/ohdsi/webapi/service/AbstractDaoService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.ohdsi.webapi.conceptset.ConceptSetComparison;
2121
import org.ohdsi.webapi.conceptset.ConceptSetItemRepository;
2222
import org.ohdsi.webapi.conceptset.ConceptSetRepository;
23+
import org.ohdsi.webapi.conceptset.annotation.ConceptSetAnnotationRepository;
2324
import org.ohdsi.webapi.exception.BadRequestAtlasException;
2425
import org.ohdsi.webapi.ircalc.IncidenceRateAnalysis;
2526
import org.ohdsi.webapi.model.CommonEntity;
@@ -106,6 +107,9 @@ public abstract class AbstractDaoService extends AbstractAdminService {
106107
@Autowired
107108
private ConceptSetItemRepository conceptSetItemRepository;
108109

110+
@Autowired
111+
private ConceptSetAnnotationRepository conceptSetAnnotationRepository;
112+
109113
@Autowired
110114
protected Security security;
111115

@@ -120,6 +124,9 @@ public abstract class AbstractDaoService extends AbstractAdminService {
120124
public ConceptSetItemRepository getConceptSetItemRepository() {
121125
return conceptSetItemRepository;
122126
}
127+
public ConceptSetAnnotationRepository getConceptSetAnnotationRepository() {
128+
return conceptSetAnnotationRepository;
129+
}
123130

124131
@Autowired
125132
private ConceptSetRepository conceptSetRepository;

0 commit comments

Comments
 (0)