diff --git a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalEvidenceReview.java b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalEvidenceReview.java index 2c7e101e..3eccba98 100644 --- a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalEvidenceReview.java +++ b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalEvidenceReview.java @@ -35,19 +35,25 @@ public class ClinicalEvidenceReview { private List acmg; private ClinicalProperty.ClinicalSignificance clinicalSignificance; private ClinicalDiscussion discussion; + private List tags; + private double score; public ClinicalEvidenceReview() { this.select = false; this.acmg = new ArrayList<>(); + this.tags = new ArrayList<>(); } public ClinicalEvidenceReview(boolean select, String tier, List acmg, - ClinicalSignificance clinicalSignificance, ClinicalDiscussion discussion) { + ClinicalSignificance clinicalSignificance, ClinicalDiscussion discussion, + List tags, double score) { this.select = select; this.tier = tier; this.acmg = acmg; this.clinicalSignificance = clinicalSignificance; this.discussion = discussion; + this.tags = tags; + this.score = score; } @Override @@ -58,6 +64,8 @@ public String toString() { sb.append(", acmg=").append(acmg); sb.append(", clinicalSignificance=").append(clinicalSignificance); sb.append(", discussion='").append(discussion).append('\''); + sb.append(", tags=").append(tags); + sb.append(", score=").append(score); sb.append('}'); return sb.toString(); } @@ -106,4 +114,22 @@ public ClinicalEvidenceReview setDiscussion(ClinicalDiscussion discussion) { this.discussion = discussion; return this; } + + public List getTags() { + return tags; + } + + public ClinicalEvidenceReview setTags(List tags) { + this.tags = tags; + return this; + } + + public double getScore() { + return score; + } + + public ClinicalEvidenceReview setScore(double score) { + this.score = score; + return this; + } } diff --git a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariant.java b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariant.java index 648a7d31..f10e152d 100644 --- a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariant.java +++ b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariant.java @@ -19,39 +19,45 @@ package org.opencb.biodata.models.clinical.interpretation; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.opencb.biodata.models.clinical.ClinicalComment; import org.opencb.biodata.models.clinical.ClinicalDiscussion; +import org.opencb.biodata.models.clinical.ClinicalProperty; import org.opencb.biodata.models.clinical.interpretation.stats.ClinicalVariantSummaryStats; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.VariantAvro; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class ClinicalVariant extends Variant { private List evidences; private List comments; - private Map filters; + private ClinicalVariantFilter filter; + private List modesOfInheritance; // all compatible MoIs private String recommendation; private List references; private ClinicalDiscussion discussion; private ClinicalVariantConfidence confidence; private List tags; + private List images; private List stats; private Status status; + private int version; // TODO maybe this parameter should be in Variant private Map attributes; public enum Status { NOT_REVIEWED, - REVIEW_REQUESTED, + UNDER_CONSIDERATION, + CANDIDATE, REVIEWED, + VALIDATION_REQUESTED, + VALIDATED, DISCARDED, REPORTED, ARTIFACT @@ -62,81 +68,44 @@ public ClinicalVariant() { } public ClinicalVariant(VariantAvro avro) { - this(avro, new ArrayList<>(), new ArrayList<>(), new HashMap<>(), new ClinicalDiscussion(), null, - Status.NOT_REVIEWED, new ArrayList<>(), new HashMap<>()); + this(avro, new ArrayList<>(), new ArrayList<>(), new ClinicalVariantFilter(), Collections.emptyList(), "", Collections.emptyList(), + new ClinicalDiscussion(), new ClinicalVariantConfidence(), Collections.emptyList(), Status.NOT_REVIEWED, + Collections.emptyList(), Collections.emptyList(), new HashMap<>()); } @Deprecated public ClinicalVariant(VariantAvro avro, List evidences, List comments, - Map filters, ClinicalDiscussion discussion, Status status, List tags, - Map attributes) { - super(avro); - - this.evidences = evidences; - this.comments = comments; - this.filters = filters; - this.discussion = discussion; - this.status = status; - this.tags = tags; - this.attributes = attributes; - } - - @Deprecated - public ClinicalVariant(VariantAvro avro, List evidences, List comments, - Map filters, ClinicalDiscussion discussion, - ClinicalVariantConfidence confidence, Status status, List tags, - Map attributes) { - super(avro); - - this.evidences = evidences; - this.comments = comments; - this.filters = filters; - this.discussion = discussion; - this.status = status; - this.tags = tags; - this.confidence = confidence; - this.attributes = attributes; - } - - @Deprecated - public ClinicalVariant(VariantAvro avro, List evidences, List comments, - Map filters, String recommendation, List references, - ClinicalDiscussion discussion, ClinicalVariantConfidence confidence, Status status, - List tags, Map attributes) { - super(avro); - - this.evidences = evidences; - this.comments = comments; - this.filters = filters; - this.recommendation = recommendation; - this.references = references; - this.discussion = discussion; - this.status = status; - this.tags = tags; - this.confidence = confidence; - this.attributes = attributes; + ClinicalVariantFilter filter, List modesOfInheritance, String recommendation, + List references, + ClinicalDiscussion discussion, ClinicalVariantConfidence confidence, List stats, + Status status, List tags, List images, Map attributes) { + this(avro, evidences, comments, filter, modesOfInheritance, recommendation, references, discussion, confidence, stats, + status, tags, images, 1, attributes); } public ClinicalVariant(VariantAvro avro, List evidences, List comments, - Map filters, String recommendation, List references, + ClinicalVariantFilter filter, List modesOfInheritance, String recommendation, + List references, ClinicalDiscussion discussion, ClinicalVariantConfidence confidence, List stats, - Status status, List tags, Map attributes) { + Status status, List tags, List images, int version, Map attributes) { super(avro); this.evidences = evidences; this.comments = comments; - this.filters = filters; + this.filter = filter; + this.modesOfInheritance = modesOfInheritance; this.recommendation = recommendation; this.references = references; this.discussion = discussion; this.stats = stats; this.status = status; this.tags = tags; + this.images = images; this.confidence = confidence; + this.version = version; this.attributes = attributes; } - @Override public String toString() { return super.toString(); @@ -160,12 +129,21 @@ public ClinicalVariant setComments(List comments) { return this; } - public Map getFilters() { - return filters; + public ClinicalVariantFilter getFilter() { + return filter; + } + + public ClinicalVariant setFilter(ClinicalVariantFilter filter) { + this.filter = filter; + return this; + } + + public List getModesOfInheritance() { + return modesOfInheritance; } - public ClinicalVariant setFilters(Map filters) { - this.filters = filters; + public ClinicalVariant setModesOfInheritance(List modesOfInheritance) { + this.modesOfInheritance = modesOfInheritance; return this; } @@ -232,6 +210,24 @@ public ClinicalVariant setTags(List tags) { return this; } + public List getImages() { + return images; + } + + public ClinicalVariant setImages(List images) { + this.images = images; + return this; + } + + public int getVersion() { + return version; + } + + public ClinicalVariant setVersion(int version) { + this.version = version; + return this; + } + public Map getAttributes() { return attributes; } diff --git a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariantFilter.java b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariantFilter.java new file mode 100644 index 00000000..c9a7ab44 --- /dev/null +++ b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/ClinicalVariantFilter.java @@ -0,0 +1,56 @@ +package org.opencb.biodata.models.clinical.interpretation; + +import java.util.Map; + +public class ClinicalVariantFilter { + + private Map query; + private String opencgaVersion; + private String cellbaseVersion; + + public ClinicalVariantFilter() { + } + + public ClinicalVariantFilter(Map query, String opencgaVersion, String cellbaseVersion) { + this.query = query; + this.opencgaVersion = opencgaVersion; + this.cellbaseVersion = cellbaseVersion; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("ClinicalVariantFilter{"); + sb.append("query=").append(query); + sb.append(", opencgaVersion='").append(opencgaVersion).append('\''); + sb.append(", cellbaseVersion='").append(cellbaseVersion).append('\''); + sb.append('}'); + return sb.toString(); + } + + public Map getQuery() { + return query; + } + + public ClinicalVariantFilter setQuery(Map query) { + this.query = query; + return this; + } + + public String getOpencgaVersion() { + return opencgaVersion; + } + + public ClinicalVariantFilter setOpencgaVersion(String opencgaVersion) { + this.opencgaVersion = opencgaVersion; + return this; + } + + public String getCellbaseVersion() { + return cellbaseVersion; + } + + public ClinicalVariantFilter setCellbaseVersion(String cellbaseVersion) { + this.cellbaseVersion = cellbaseVersion; + return this; + } +} diff --git a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/MiniPubmed.java b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/MiniPubmed.java index c459e498..863f4d66 100644 --- a/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/MiniPubmed.java +++ b/biodata-models/src/main/java/org/opencb/biodata/models/clinical/interpretation/MiniPubmed.java @@ -1,35 +1,51 @@ package org.opencb.biodata.models.clinical.interpretation; +import java.util.List; + public class MiniPubmed { private String id; - private String name; + private String title; private String journal; private String summary; + private List authors; private String date; private String url; public MiniPubmed() { } - public MiniPubmed(String id, String name, String summary, String date, String url, String journal) { + @Deprecated + public MiniPubmed(String id, String title, String summary, String date, String url, String journal) { this.id = id; - this.name = name; + this.title = title; this.summary = summary; this.date = date; this.url = url; this.journal = journal; } + public MiniPubmed(String id, String title, String journal, String summary, List authors, String date, String url) { + this.id = id; + this.title = title; + this.journal = journal; + this.summary = summary; + this.authors = authors; + this.date = date; + this.url = url; + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("MiniPubmed{"); sb.append("id='").append(id).append('\''); - sb.append(", name='").append(name).append('\''); + + sb.append(", title='").append(title).append('\''); + sb.append(", journal='").append(journal).append('\''); sb.append(", summary='").append(summary).append('\''); - sb.append(", date=").append(date); + sb.append(", authors=").append(authors); + sb.append(", date='").append(date).append('\''); sb.append(", url='").append(url).append('\''); - sb.append(", journal='").append(journal).append('\''); sb.append('}'); return sb.toString(); } @@ -43,12 +59,23 @@ public MiniPubmed setId(String id) { return this; } + @Deprecated public String getName() { - return name; + return title; } + @Deprecated public MiniPubmed setName(String name) { - this.name = name; + this.title = name; + return this; + } + + public String getTitle() { + return title; + } + + public MiniPubmed setTitle(String title) { + this.title = title; return this; } @@ -61,6 +88,15 @@ public MiniPubmed setSummary(String summary) { return this; } + public List getAuthors() { + return authors; + } + + public MiniPubmed setAuthors(List authors) { + this.authors = authors; + return this; + } + public String getDate() { return date; } diff --git a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/ClinicalVariantCreator.java b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/ClinicalVariantCreator.java index ce57604f..c1fa97c6 100644 --- a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/ClinicalVariantCreator.java +++ b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/ClinicalVariantCreator.java @@ -129,8 +129,9 @@ public List createSecondaryFindings(List variants) { // If we have clinical variant evidences, then we have to create the clinical variant if (CollectionUtils.isNotEmpty(clinicalVariantEvidences)) { ClinicalVariant clinicalVariant = new ClinicalVariant(variant.getImpl(), Collections.emptyList(), Collections.emptyList(), - Collections.emptyMap(), new ClinicalDiscussion(), null, ClinicalVariant.Status.NOT_REVIEWED, - Collections.emptyList(), Collections.emptyMap()); + new ClinicalVariantFilter(), Collections.emptyList(), "", Collections.emptyList(), new ClinicalDiscussion(), null, + Collections.emptyList(), ClinicalVariant.Status.NOT_REVIEWED, Collections.emptyList(), Collections.emptyList(), + Collections.emptyMap()); clinicalVariant.setEvidences(clinicalVariantEvidences); // Add variant to the list diff --git a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/DefaultClinicalVariantCreator.java b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/DefaultClinicalVariantCreator.java index 62aa8bdf..3f695bcd 100644 --- a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/DefaultClinicalVariantCreator.java +++ b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/DefaultClinicalVariantCreator.java @@ -28,6 +28,7 @@ import org.opencb.biodata.models.clinical.Disorder; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantEvidence; +import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantFilter; import org.opencb.biodata.models.clinical.interpretation.DiseasePanel; import org.opencb.biodata.models.variant.Variant; import org.opencb.biodata.models.variant.avro.ConsequenceType; @@ -134,8 +135,9 @@ public List create(List variants) { // Create a clinical variant only if we have evidences if (CollectionUtils.isNotEmpty(clinicalVariantEvidences)) { ClinicalVariant clinicalVariant = new ClinicalVariant(variant.getImpl(), Collections.emptyList(), Collections.emptyList(), - Collections.emptyMap(), new ClinicalDiscussion(), null, ClinicalVariant.Status.NOT_REVIEWED, - Collections.emptyList(), Collections.emptyMap()); + new ClinicalVariantFilter(), Collections.emptyList(), "", Collections.emptyList(), new ClinicalDiscussion(), null, + Collections.emptyList(), ClinicalVariant.Status.NOT_REVIEWED, Collections.emptyList(), Collections.emptyList(), + Collections.emptyMap()); clinicalVariant.setEvidences(clinicalVariantEvidences); // Add variant to the list diff --git a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/TeamClinicalVariantCreator.java b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/TeamClinicalVariantCreator.java index 4ccc17ea..1158e630 100644 --- a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/TeamClinicalVariantCreator.java +++ b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/TeamClinicalVariantCreator.java @@ -27,6 +27,7 @@ import org.opencb.biodata.models.clinical.ClinicalProperty.RoleInCancer; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantEvidence; +import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantFilter; import org.opencb.biodata.models.clinical.interpretation.DiseasePanel; import org.opencb.biodata.models.clinical.interpretation.exceptions.InterpretationAnalysisException; import org.opencb.biodata.models.clinical.Disorder; @@ -114,8 +115,9 @@ public List create(List variants) throws Interpretatio // If we have clinical variant evidences, then we have to create the clinical variant if (CollectionUtils.isNotEmpty(clinicalVariantEvidences)) { ClinicalVariant clinicalVariant = new ClinicalVariant(variant.getImpl(), Collections.emptyList(), Collections.emptyList(), - Collections.emptyMap(), new ClinicalDiscussion(), null, ClinicalVariant.Status.NOT_REVIEWED, - Collections.emptyList(), Collections.emptyMap()); + new ClinicalVariantFilter(), Collections.emptyList(), "", Collections.emptyList(), new ClinicalDiscussion(), null, + Collections.emptyList(), ClinicalVariant.Status.NOT_REVIEWED, Collections.emptyList(), Collections.emptyList(), + Collections.emptyMap()); clinicalVariant.setEvidences(clinicalVariantEvidences); // Add variant to the list diff --git a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/tiering/TieringClinicalVariantCreator.java b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/tiering/TieringClinicalVariantCreator.java index cf62b4d5..7f4e7285 100644 --- a/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/tiering/TieringClinicalVariantCreator.java +++ b/biodata-tools/src/main/java/org/opencb/biodata/tools/clinical/tiering/TieringClinicalVariantCreator.java @@ -26,10 +26,7 @@ import org.opencb.biodata.models.clinical.ClinicalProperty.ModeOfInheritance; import org.opencb.biodata.models.clinical.ClinicalProperty.Penetrance; import org.opencb.biodata.models.clinical.Disorder; -import org.opencb.biodata.models.clinical.interpretation.ClinicalVariant; -import org.opencb.biodata.models.clinical.interpretation.ClinicalVariantEvidence; -import org.opencb.biodata.models.clinical.interpretation.DiseasePanel; -import org.opencb.biodata.models.clinical.interpretation.GenomicFeature; +import org.opencb.biodata.models.clinical.interpretation.*; import org.opencb.biodata.models.clinical.interpretation.exceptions.InterpretationAnalysisException; import org.opencb.biodata.models.core.Region; import org.opencb.biodata.models.variant.Variant; @@ -276,8 +273,9 @@ public List create(List variants, Map