diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/MetadbRequest.java b/model/src/main/java/org/mskcc/cmo/metadb/model/MetadbRequest.java index a3003b63..28a8f5d3 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/MetadbRequest.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/MetadbRequest.java @@ -12,6 +12,7 @@ import java.util.Map; import java.util.UUID; import org.apache.commons.lang.builder.ToStringBuilder; +import org.mskcc.cmo.metadb.model.igo.IgoRequest; import org.neo4j.ogm.annotation.GeneratedValue; import org.neo4j.ogm.annotation.Id; import org.neo4j.ogm.annotation.NodeEntity; @@ -28,6 +29,8 @@ @JsonIgnoreProperties({"samples"}) @JsonInclude(JsonInclude.Include.NON_NULL) public class MetadbRequest implements Serializable { + private final ObjectMapper mapper = new ObjectMapper(); + @Id @GeneratedValue(strategy = UuidStrategy.class) @Convert(UuidStringConverter.class) private UUID metaDbRequestId; @@ -65,54 +68,32 @@ public class MetadbRequest implements Serializable { public MetadbRequest() {} /** - * MetaDbRequest constructor - * @param requestId - * @param recipe - * @param projectManagerName - * @param piEmail - * @param labHeadName - * @param labHeadEmail - * @param investigatorName - * @param investigatorEmail - * @param dataAnalystName - * @param dataAnalystEmail - * @param otherContactEmails - * @param dataAccessEmails - * @param qcAccessEmails - * @param strand - * @param libraryType - * @param metaDbSampleList - * @param requestJson - * @param bicAnalysis - * @param isCmoRequest + * MetadbRequest constructor. + * @param igoRequest + * @throws JsonProcessingException */ - public MetadbRequest(String requestId, String recipe, String projectManagerName, - String piEmail, String labHeadName, String labHeadEmail, - String investigatorName, String investigatorEmail, String dataAnalystName, - String dataAnalystEmail, String otherContactEmails, String dataAccessEmails, - String qcAccessEmails, String strand, String libraryType, - List metaDbSampleList, String requestJson, - boolean bicAnalysis, boolean isCmoRequest) { - this.requestId = requestId; - this.recipe = recipe; - this.projectManagerName = projectManagerName; - this.piEmail = piEmail; - this.labHeadName = labHeadName; - this.labHeadEmail = labHeadEmail; - this.investigatorName = investigatorName; - this.investigatorEmail = investigatorEmail; - this.dataAnalystName = dataAnalystName; - this.dataAnalystEmail = dataAnalystEmail; - this.otherContactEmails = otherContactEmails; - this.dataAccessEmails = dataAccessEmails; - this.qcAccessEmails = qcAccessEmails; - this.strand = strand; - this.libraryType = libraryType; - this.metaDbSampleList = metaDbSampleList; - this.metaDbProject = new MetadbProject(requestId.split("_")[0]); - this.requestJson = requestJson; - this.bicAnalysis = bicAnalysis; - this.isCmoRequest = isCmoRequest; + public MetadbRequest(IgoRequest igoRequest) throws JsonProcessingException { + this.requestId = igoRequest.getRequestId(); + this.projectId = igoRequest.getProjectId(); + this.dataAccessEmails = igoRequest.getDataAccessEmails(); + this.dataAnalystEmail = igoRequest.getDataAnalystEmail(); + this.dataAnalystName = igoRequest.getDataAnalystName(); + this.investigatorEmail = igoRequest.getInvestigatorEmail(); + this.investigatorName = igoRequest.getInvestigatorName(); + this.labHeadEmail = igoRequest.getLabHeadEmail(); + this.labHeadName = igoRequest.getLabHeadName(); + this.libraryType = igoRequest.getLibraryType(); + this.otherContactEmails = igoRequest.getOtherContactEmails(); + this.piEmail = igoRequest.getPiEmail(); + this.projectManagerName = igoRequest.getProjectManagerName(); + this.qcAccessEmails = igoRequest.getQcAccessEmails(); + this.recipe = igoRequest.getRecipe(); + this.strand = igoRequest.getStrand(); + this.pooledNormals = igoRequest.getPooledNormals(); + this.bicAnalysis = igoRequest.getBicAnalysis(); + this.isCmoRequest = igoRequest.getIsCmoRequest(); + this.namespace = "igo"; + this.requestJson = mapper.writeValueAsString(igoRequest); } public UUID getMetaDbRequestId() { diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/SampleMetadata.java b/model/src/main/java/org/mskcc/cmo/metadb/model/SampleMetadata.java index d63a0292..e85c78e3 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/SampleMetadata.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/SampleMetadata.java @@ -1,9 +1,8 @@ package org.mskcc.cmo.metadb.model; -import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -12,6 +11,9 @@ import org.mskcc.cmo.metadb.model.converter.LibrariesStringConverter; import org.mskcc.cmo.metadb.model.converter.MapStringConverter; import org.mskcc.cmo.metadb.model.converter.QcReportsStringConverter; +import org.mskcc.cmo.metadb.model.igo.IgoSampleManifest; +import org.mskcc.cmo.metadb.model.igo.Library; +import org.mskcc.cmo.metadb.model.igo.QcReport; import org.neo4j.ogm.annotation.GeneratedValue; import org.neo4j.ogm.annotation.Id; import org.neo4j.ogm.annotation.typeconversion.Convert; @@ -21,122 +23,68 @@ public class SampleMetadata implements Serializable, Comparable @Id @GeneratedValue @JsonIgnore private Long id; - private String importDate; - private String cmoInfoIgoId; + private String primaryId; + private String cmoPatientId; + private String investigatorSampleId; private String cmoSampleName; private String sampleName; + private String requestId; + private String importDate; + private String cmoInfoIgoId; private String cmoSampleClass; private String oncoTreeCode; private String collectionYear; private String tubeId; private String cfDNA2dBarcode; - @Convert(QcReportsStringConverter.class) - private List qcReports; - @Convert(LibrariesStringConverter.class) - private List libraries; - private String mrn; - private String cmoPatientId; - @JsonAlias("igoId") - private String primaryId; - private String investigatorSampleId; private String species; private String sex; private String tumorOrNormal; private String sampleType; private String preservation; - private String tumorType; - private String parentTumorType; private String specimenType; private String sampleOrigin; - private String tissueSource; private String tissueLocation; private String recipe; private String baitSet; - private String fastqPath; - private String principalInvestigator; - private String ancestorSample; - private String sampleStatus; - private String requestId; + @Convert(QcReportsStringConverter.class) + private List qcReports; + @Convert(LibrariesStringConverter.class) + private List libraries; @Convert(MapStringConverter.class) private Map cmoSampleIdFields; public SampleMetadata() {} /** - * SampleMetadata constructor - * @param primaryId - * @param cmoInfoIgoId - * @param cmoSampleName - * @param sampleName - * @param cmoSampleClass - * @param cmoPatientId - * @param investigatorSampleId - * @param oncoTreeCode - * @param tumorOrNormal - * @param tissueLocation - * @param specimenType - * @param sampleOrigin - * @param preservation - * @param collectionYear - * @param sex - * @param species - * @param tubeId - * @param cfDNA2dBarcode - * @param qcReports - * @param libraries - * @param mrn - * @param sampleType - * @param tumorType - * @param parentTumorType - * @param tissueSource - * @param recipe - * @param baitSet - * @param fastqPath - * @param principalInvestigator - * @param ancestorSample - * @param sampleStatus - * @param importDate + * SampleMetadata constructor from igoSampleManifest. + * @param igoSampleManifest + * @throws JsonProcessingException */ - public SampleMetadata(String primaryId, String cmoInfoIgoId, String cmoSampleName, String sampleName, - String cmoSampleClass, String cmoPatientId, String investigatorSampleId, String oncoTreeCode, - String tumorOrNormal, String tissueLocation, String specimenType, String sampleOrigin, - String preservation, String collectionYear, String sex, String species, String tubeId, - String cfDNA2dBarcode, List qcReports, List libraries, - String mrn, String sampleType, String tumorType, String parentTumorType, - String tissueSource, String recipe, String baitSet, String fastqPath, - String principalInvestigator, String ancestorSample, String sampleStatus, String importDate) { - this.mrn = mrn; - this.cmoInfoIgoId = cmoInfoIgoId; - this.cmoSampleName = cmoSampleName; - this.sampleName = sampleName; - this.cmoSampleClass = cmoSampleClass; - this.cmoPatientId = cmoPatientId; - this.primaryId = primaryId; - this.investigatorSampleId = investigatorSampleId; - this.species = species; - this.sex = sex; - this.tumorOrNormal = tumorOrNormal; - this.sampleType = sampleType; - this.preservation = preservation; - this.tumorType = tumorType; - this.parentTumorType = parentTumorType; - this.specimenType = specimenType; - this.sampleOrigin = sampleOrigin; - this.tissueSource = tissueSource; - this.tissueLocation = tissueLocation; - this.recipe = recipe; - this.baitSet = baitSet; - this.principalInvestigator = principalInvestigator; - this.fastqPath = fastqPath; - this.ancestorSample = ancestorSample; - this.sampleStatus = sampleStatus; - this.importDate = importDate; - this.oncoTreeCode = oncoTreeCode; - this.collectionYear = collectionYear; - this.tubeId = tubeId; - this.cfDNA2dBarcode = cfDNA2dBarcode; - this.qcReports = qcReports; - this.libraries = libraries; + public SampleMetadata(IgoSampleManifest igoSampleManifest) throws JsonProcessingException { + this.primaryId = igoSampleManifest.getIgoId(); + this.cmoPatientId = igoSampleManifest.getCmoPatientId(); + this.investigatorSampleId = igoSampleManifest.getInvestigatorSampleId(); + this.cmoSampleName = igoSampleManifest.getCmoSampleName(); + this.sampleName = igoSampleManifest.getSampleName(); + this.cmoInfoIgoId = igoSampleManifest.getCmoInfoIgoId(); + this.cmoSampleClass = igoSampleManifest.getCmoSampleClass(); + this.oncoTreeCode = igoSampleManifest.getOncoTreeCode(); + this.collectionYear = igoSampleManifest.getCollectionYear(); + this.tubeId = igoSampleManifest.getTubeId(); + this.cfDNA2dBarcode = igoSampleManifest.getCfDNA2dBarcode(); + this.species = igoSampleManifest.getSpecies(); + this.sex = igoSampleManifest.getSex(); + this.tumorOrNormal = igoSampleManifest.getTumorOrNormal(); + this.sampleType = igoSampleManifest.getCmoSampleIdFieldValue("sampleType"); + this.preservation = igoSampleManifest.getPreservation(); + this.specimenType = igoSampleManifest.getSpecimenType(); + this.sampleOrigin = igoSampleManifest.getSampleOrigin(); + this.tissueLocation = igoSampleManifest.getTissueLocation(); + this.recipe = igoSampleManifest.getCmoSampleIdFieldValue("recipe"); + this.baitSet = igoSampleManifest.getBaitSet(); + this.qcReports = igoSampleManifest.getQcReports(); + this.libraries = igoSampleManifest.getLibraries(); + this.cmoSampleIdFields = igoSampleManifest.getCmoSampleIdFields(); } public Long getId() { @@ -271,14 +219,6 @@ public void addLibrary(Library library) { libraries.add(library); } - public String getMrn() { - return mrn; - } - - public void setMrn(String mrn) { - this.mrn = mrn; - } - public String getCmoPatientId() { return cmoPatientId; } @@ -343,22 +283,6 @@ public void setPreservation(String preservation) { this.preservation = preservation; } - public String getTumorType() { - return tumorType; - } - - public void setTumorType(String tumorType) { - this.tumorType = tumorType; - } - - public String getParentTumorType() { - return parentTumorType; - } - - public void setParentTumorType(String parentTumorType) { - this.parentTumorType = parentTumorType; - } - public String getSpecimenType() { return specimenType; } @@ -375,14 +299,6 @@ public void setSampleOrigin(String sampleOrigin) { this.sampleOrigin = sampleOrigin; } - public String getTissueSource() { - return tissueSource; - } - - public void setTissueSource(String tissueSource) { - this.tissueSource = tissueSource; - } - public String getTissueLocation() { return tissueLocation; } @@ -407,38 +323,6 @@ public void setBaitSet(String baitSet) { this.baitSet = baitSet; } - public String getFastqPath() { - return fastqPath; - } - - public void setFastqPath(String fastqPath) { - this.fastqPath = fastqPath; - } - - public String getPrincipalInvestigator() { - return principalInvestigator; - } - - public void setPrincipalInvestigator(String principalInvestigator) { - this.principalInvestigator = principalInvestigator; - } - - public String getAncestorSample() { - return ancestorSample; - } - - public void setAncestorSample(String ancestorSample) { - this.ancestorSample = ancestorSample; - } - - public String getSampleStatus() { - return sampleStatus; - } - - public void setSampleStatus(String sampleStatus) { - this.sampleStatus = sampleStatus; - } - public String getRequestId() { return requestId; } diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/LibrariesStringConverter.java b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/LibrariesStringConverter.java index ae6b7f08..ada01648 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/LibrariesStringConverter.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/LibrariesStringConverter.java @@ -6,7 +6,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.mskcc.cmo.metadb.model.Library; +import org.mskcc.cmo.metadb.model.igo.Library; import org.neo4j.ogm.typeconversion.AttributeConverter; public class LibrariesStringConverter implements AttributeConverter, String> { diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/QcReportsStringConverter.java b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/QcReportsStringConverter.java index bbef1dff..a4f66c75 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/QcReportsStringConverter.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/QcReportsStringConverter.java @@ -6,7 +6,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.mskcc.cmo.metadb.model.QcReport; +import org.mskcc.cmo.metadb.model.igo.QcReport; import org.neo4j.ogm.typeconversion.AttributeConverter; public class QcReportsStringConverter implements AttributeConverter, String> { diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/RunStringConverter.java b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/RunStringConverter.java index e2f0e9d3..e91c61a4 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/converter/RunStringConverter.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/converter/RunStringConverter.java @@ -6,7 +6,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.mskcc.cmo.metadb.model.Run; +import org.mskcc.cmo.metadb.model.igo.Run; import org.neo4j.ogm.typeconversion.AttributeConverter; public class RunStringConverter implements AttributeConverter, String> { diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoRequest.java b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoRequest.java new file mode 100644 index 00000000..c5db094b --- /dev/null +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoRequest.java @@ -0,0 +1,223 @@ +package org.mskcc.cmo.metadb.model.igo; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * + * @author ochoaa + */ +public class IgoRequest implements Serializable { + private String requestId; + private String projectId; + private String dataAccessEmails; + private String dataAnalystEmail; + private String dataAnalystName; + private String investigatorEmail; + private String investigatorName; + private String labHeadEmail; + private String labHeadName; + private String libraryType; + private String otherContactEmails; + private String piEmail; + private String projectManagerName; + private String qcAccessEmails; + private String recipe; + private String strand; + private Long deliveryDate; + private Boolean bicAnalysis; + private Boolean isCmoRequest; + private List samples; + private List pooledNormals; + + public IgoRequest() {} + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public String getDataAccessEmails() { + return dataAccessEmails; + } + + public void setDataAccessEmails(String dataAccessEmails) { + this.dataAccessEmails = dataAccessEmails; + } + + public String getDataAnalystEmail() { + return dataAnalystEmail; + } + + public void setDataAnalystEmail(String dataAnalystEmail) { + this.dataAnalystEmail = dataAnalystEmail; + } + + public String getDataAnalystName() { + return dataAnalystName; + } + + public void setDataAnalystName(String dataAnalystName) { + this.dataAnalystName = dataAnalystName; + } + + public String getInvestigatorEmail() { + return investigatorEmail; + } + + public void setInvestigatorEmail(String investigatorEmail) { + this.investigatorEmail = investigatorEmail; + } + + public String getInvestigatorName() { + return investigatorName; + } + + public void setInvestigatorName(String investigatorName) { + this.investigatorName = investigatorName; + } + + public String getLabHeadEmail() { + return labHeadEmail; + } + + public void setLabHeadEmail(String labHeadEmail) { + this.labHeadEmail = labHeadEmail; + } + + public String getLabHeadName() { + return labHeadName; + } + + public void setLabHeadName(String labHeadName) { + this.labHeadName = labHeadName; + } + + public String getLibraryType() { + return libraryType; + } + + public void setLibraryType(String libraryType) { + this.libraryType = libraryType; + } + + public String getOtherContactEmails() { + return otherContactEmails; + } + + public void setOtherContactEmails(String otherContactEmails) { + this.otherContactEmails = otherContactEmails; + } + + public String getPiEmail() { + return piEmail; + } + + public void setPiEmail(String piEmail) { + this.piEmail = piEmail; + } + + public String getProjectManagerName() { + return projectManagerName; + } + + public void setProjectManagerName(String projectManagerName) { + this.projectManagerName = projectManagerName; + } + + public String getQcAccessEmails() { + return qcAccessEmails; + } + + public void setQcAccessEmails(String qcAccessEmails) { + this.qcAccessEmails = qcAccessEmails; + } + + public String getRecipe() { + return recipe; + } + + public void setRecipe(String recipe) { + this.recipe = recipe; + } + + public String getStrand() { + return strand; + } + + public void setStrand(String strand) { + this.strand = strand; + } + + public Long getDeliveryDate() { + return deliveryDate; + } + + public void setDeliveryDate(Long deliveryDate) { + this.deliveryDate = deliveryDate; + } + + public Boolean getBicAnalysis() { + return bicAnalysis; + } + + public void setBicAnalysis(Boolean bicAnalysis) { + this.bicAnalysis = bicAnalysis; + } + + public Boolean getIsCmoRequest() { + return isCmoRequest; + } + + public void setIsCmoRequest(Boolean isCmoRequest) { + this.isCmoRequest = isCmoRequest; + } + + /** + * Returns samples or empty array list if null. + * @return List + */ + public List getSamples() { + if (samples == null) { + this.samples = new ArrayList<>(); + } + return samples; + } + + public void setSamples(List samples) { + this.samples = samples; + } + + /** + * Returns pooled normals or empty array list if null. + * @return List + */ + public List getPooledNormals() { + if (pooledNormals == null) { + this.pooledNormals = new ArrayList<>(); + } + return pooledNormals; + } + + public void setPooledNormals(List pooledNormals) { + this.pooledNormals = pooledNormals; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoSampleManifest.java b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoSampleManifest.java new file mode 100644 index 00000000..d9d1be5b --- /dev/null +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/IgoSampleManifest.java @@ -0,0 +1,222 @@ +package org.mskcc.cmo.metadb.model.igo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * + * @author ochoaa + */ +public class IgoSampleManifest { + private String igoId; + private String cmoPatientId; + private String cmoSampleName; + private String sampleName; + private String baitSet; + private String cfDNA2dBarcode; + private String cmoInfoIgoId; + private String cmoSampleClass; + private String collectionYear; + private String investigatorSampleId; + private String oncoTreeCode; + private String preservation; + private String sampleOrigin; + private String sex; + private String species; + private String specimenType; + private String tissueLocation; + private String tubeId; + private String tumorOrNormal; + private List qcReports; + private List libraries; + private Map cmoSampleIdFields = new HashMap<>(); + + public IgoSampleManifest() {} + + public String getIgoId() { + return igoId; + } + + public void setIgoId(String igoId) { + this.igoId = igoId; + } + + public String getCmoPatientId() { + return cmoPatientId; + } + + public void setCmoPatientId(String cmoPatientId) { + this.cmoPatientId = cmoPatientId; + } + + public String getCmoSampleName() { + return cmoSampleName; + } + + public void setCmoSampleName(String cmoSampleName) { + this.cmoSampleName = cmoSampleName; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getBaitSet() { + return baitSet; + } + + public void setBaitSet(String baitSet) { + this.baitSet = baitSet; + } + + public String getCfDNA2dBarcode() { + return cfDNA2dBarcode; + } + + public void setCfDNA2dBarcode(String cfDNA2dBarcode) { + this.cfDNA2dBarcode = cfDNA2dBarcode; + } + + public String getCmoInfoIgoId() { + return cmoInfoIgoId; + } + + public void setCmoInfoIgoId(String cmoInfoIgoId) { + this.cmoInfoIgoId = cmoInfoIgoId; + } + + public String getCmoSampleClass() { + return cmoSampleClass; + } + + public void setCmoSampleClass(String cmoSampleClass) { + this.cmoSampleClass = cmoSampleClass; + } + + public String getCollectionYear() { + return collectionYear; + } + + public void setCollectionYear(String collectionYear) { + this.collectionYear = collectionYear; + } + + public String getInvestigatorSampleId() { + return investigatorSampleId; + } + + public void setInvestigatorSampleId(String investigatorSampleId) { + this.investigatorSampleId = investigatorSampleId; + } + + public String getOncoTreeCode() { + return oncoTreeCode; + } + + public void setOncoTreeCode(String oncoTreeCode) { + this.oncoTreeCode = oncoTreeCode; + } + + public String getPreservation() { + return preservation; + } + + public void setPreservation(String preservation) { + this.preservation = preservation; + } + + public String getSampleOrigin() { + return sampleOrigin; + } + + public void setSampleOrigin(String sampleOrigin) { + this.sampleOrigin = sampleOrigin; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getSpecies() { + return species; + } + + public void setSpecies(String species) { + this.species = species; + } + + public String getSpecimenType() { + return specimenType; + } + + public void setSpecimenType(String specimenType) { + this.specimenType = specimenType; + } + + public String getTissueLocation() { + return tissueLocation; + } + + public void setTissueLocation(String tissueLocation) { + this.tissueLocation = tissueLocation; + } + + public String getTubeId() { + return tubeId; + } + + public void setTubeId(String tubeId) { + this.tubeId = tubeId; + } + + public String getTumorOrNormal() { + return tumorOrNormal; + } + + public void setTumorOrNormal(String tumorOrNormal) { + this.tumorOrNormal = tumorOrNormal; + } + + public List getQcReports() { + return qcReports; + } + + public void setQcReports(List qcReports) { + this.qcReports = qcReports; + } + + public List getLibraries() { + return libraries; + } + + public void setLibraries(List libraries) { + this.libraries = libraries; + } + + public Map getCmoSampleIdFields() { + return cmoSampleIdFields; + } + + public void setCmoSampleIdFields(Map cmoSampleIdFields) { + this.cmoSampleIdFields = cmoSampleIdFields; + } + + public String getCmoSampleIdFieldValue(String field) { + return cmoSampleIdFields.getOrDefault(field, ""); + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/Library.java b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/Library.java similarity index 99% rename from model/src/main/java/org/mskcc/cmo/metadb/model/Library.java rename to model/src/main/java/org/mskcc/cmo/metadb/model/igo/Library.java index a2ecdb3c..e02ca351 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/Library.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/Library.java @@ -1,4 +1,4 @@ -package org.mskcc.cmo.metadb.model; +package org.mskcc.cmo.metadb.model.igo; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.io.Serializable; diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/QcReport.java b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/QcReport.java similarity index 98% rename from model/src/main/java/org/mskcc/cmo/metadb/model/QcReport.java rename to model/src/main/java/org/mskcc/cmo/metadb/model/igo/QcReport.java index 18113b38..4e0380eb 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/QcReport.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/QcReport.java @@ -1,4 +1,4 @@ -package org.mskcc.cmo.metadb.model; +package org.mskcc.cmo.metadb.model.igo; import com.fasterxml.jackson.annotation.JsonProperty; import java.io.Serializable; diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/Run.java b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/Run.java similarity index 98% rename from model/src/main/java/org/mskcc/cmo/metadb/model/Run.java rename to model/src/main/java/org/mskcc/cmo/metadb/model/igo/Run.java index 34e7a743..390f6d6c 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/Run.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/igo/Run.java @@ -1,4 +1,4 @@ -package org.mskcc.cmo.metadb.model; +package org.mskcc.cmo.metadb.model.igo; import java.io.Serializable; import java.util.ArrayList; diff --git a/model/src/main/java/org/mskcc/cmo/metadb/model/web/PublishedMetadbSample.java b/model/src/main/java/org/mskcc/cmo/metadb/model/web/PublishedMetadbSample.java index 4b8e14d2..56d5be36 100644 --- a/model/src/main/java/org/mskcc/cmo/metadb/model/web/PublishedMetadbSample.java +++ b/model/src/main/java/org/mskcc/cmo/metadb/model/web/PublishedMetadbSample.java @@ -6,58 +6,49 @@ import java.util.Map; import java.util.UUID; import org.apache.commons.lang.builder.ToStringBuilder; -import org.mskcc.cmo.metadb.model.Library; import org.mskcc.cmo.metadb.model.MetadbSample; -import org.mskcc.cmo.metadb.model.QcReport; import org.mskcc.cmo.metadb.model.SampleAlias; import org.mskcc.cmo.metadb.model.SampleMetadata; import org.mskcc.cmo.metadb.model.converter.LibrariesStringConverter; import org.mskcc.cmo.metadb.model.converter.MapStringConverter; import org.mskcc.cmo.metadb.model.converter.QcReportsStringConverter; +import org.mskcc.cmo.metadb.model.igo.Library; +import org.mskcc.cmo.metadb.model.igo.QcReport; import org.neo4j.ogm.annotation.typeconversion.Convert; import org.neo4j.ogm.typeconversion.UuidStringConverter; public class PublishedMetadbSample { @Convert(UuidStringConverter.class) private UUID metaDbSampleId; - private String importDate; - private String cmoInfoIgoId; + private UUID metaDbPatientId; + private String primaryId; + private String cmoPatientId; private String cmoSampleName; private String sampleName; + private String cmoInfoIgoId; + private String investigatorSampleId; + private String importDate; private String cmoSampleClass; private String oncoTreeCode; private String collectionYear; private String tubeId; private String cfDNA2dBarcode; - @Convert(QcReportsStringConverter.class) - private List qcReports; - @Convert(LibrariesStringConverter.class) - private List libraries; - private String mrn; - private String cmoPatientId; - private UUID metaDbPatientId; - private String primaryId; - private String investigatorSampleId; private String species; private String sex; private String tumorOrNormal; - private String sampleType; private String preservation; - private String tumorType; - private String parentTumorType; private String specimenType; private String sampleOrigin; - private String tissueSource; private String tissueLocation; private String recipe; private String baitSet; - private String fastqPath; - private String principalInvestigator; - private String ancestorSample; - private String sampleStatus; private String requestId; @Convert(MapStringConverter.class) private Map cmoSampleIdFields; + @Convert(QcReportsStringConverter.class) + private List qcReports; + @Convert(LibrariesStringConverter.class) + private List libraries; private List sampleAliases; public PublishedMetadbSample() {} @@ -70,7 +61,6 @@ public PublishedMetadbSample() {} public PublishedMetadbSample(MetadbSample metaDbSample) throws ParseException { SampleMetadata latestSampleMetadata = metaDbSample.getLatestSampleMetadata(); this.metaDbSampleId = metaDbSample.getMetaDbSampleId(); - this.mrn = latestSampleMetadata.getMrn(); this.cmoInfoIgoId = latestSampleMetadata.getCmoInfoIgoId(); this.cmoSampleName = latestSampleMetadata.getCmoSampleName(); this.sampleName = latestSampleMetadata.getSampleName(); @@ -82,20 +72,12 @@ public PublishedMetadbSample(MetadbSample metaDbSample) throws ParseException { this.species = latestSampleMetadata.getSpecies(); this.sex = latestSampleMetadata.getSex(); this.tumorOrNormal = latestSampleMetadata.getTumorOrNormal(); - this.sampleType = latestSampleMetadata.getSampleType(); this.preservation = latestSampleMetadata.getPreservation(); - this.tumorType = latestSampleMetadata.getTumorType(); - this.parentTumorType = latestSampleMetadata.getParentTumorType(); this.specimenType = latestSampleMetadata.getSpecimenType(); this.sampleOrigin = latestSampleMetadata.getSampleOrigin(); - this.tissueSource = latestSampleMetadata.getTissueSource(); this.tissueLocation = latestSampleMetadata.getTissueLocation(); this.recipe = latestSampleMetadata.getRecipe(); this.baitSet = latestSampleMetadata.getBaitSet(); - this.principalInvestigator = latestSampleMetadata.getPrincipalInvestigator(); - this.fastqPath = latestSampleMetadata.getFastqPath(); - this.ancestorSample = latestSampleMetadata.getAncestorSample(); - this.sampleStatus = latestSampleMetadata.getSampleStatus(); this.importDate = latestSampleMetadata.getImportDate(); this.oncoTreeCode = latestSampleMetadata.getOncoTreeCode(); this.collectionYear = latestSampleMetadata.getCollectionYear(); @@ -104,90 +86,7 @@ public PublishedMetadbSample(MetadbSample metaDbSample) throws ParseException { this.qcReports = latestSampleMetadata.getQcReports(); this.libraries = latestSampleMetadata.getLibraries(); this.sampleAliases = metaDbSample.getSampleAliases(); - } - - /** - * All args constructor - * @param primaryId - * @param cmoInfoIgoId - * @param cmoSampleName - * @param sampleName - * @param cmoSampleClass - * @param cmoPatientId - * @param investigatorSampleId - * @param oncoTreeCode - * @param tumorOrNormal - * @param tissueLocation - * @param specimenType - * @param sampleOrigin - * @param preservation - * @param collectionYear - * @param sex - * @param species - * @param tubeId - * @param cfDNA2dBarcode - * @param qcReports - * @param libraries - * @param mrn - * @param sampleType - * @param tumorType - * @param parentTumorType - * @param tissueSource - * @param recipe - * @param baitSet - * @param fastqPath - * @param principalInvestigator - * @param ancestorSample - * @param sampleStatus - * @param importDate - * @param sampleAliases - * @param metaDbSampleId - * @param metaDbPatientId - */ - public PublishedMetadbSample(String primaryId, String cmoInfoIgoId, String cmoSampleName, - String sampleName, String cmoSampleClass, String cmoPatientId, String investigatorSampleId, - String oncoTreeCode, String tumorOrNormal, String tissueLocation, String specimenType, - String sampleOrigin, String preservation, String collectionYear, String sex, String species, - String tubeId, String cfDNA2dBarcode, List qcReports, List libraries, - String mrn, String sampleType, String tumorType, String parentTumorType, - String tissueSource, String recipe, String baitSet, String fastqPath, - String principalInvestigator, String ancestorSample, String sampleStatus, String importDate, - List sampleAliases, UUID metaDbSampleId, UUID metaDbPatientId) { - this.mrn = mrn; - this.cmoInfoIgoId = cmoInfoIgoId; - this.cmoSampleName = cmoSampleName; - this.sampleName = sampleName; - this.cmoSampleClass = cmoSampleClass; - this.cmoPatientId = cmoPatientId; - this.primaryId = primaryId; - this.investigatorSampleId = investigatorSampleId; - this.species = species; - this.sex = sex; - this.tumorOrNormal = tumorOrNormal; - this.sampleType = sampleType; - this.preservation = preservation; - this.tumorType = tumorType; - this.parentTumorType = parentTumorType; - this.specimenType = specimenType; - this.sampleOrigin = sampleOrigin; - this.tissueSource = tissueSource; - this.tissueLocation = tissueLocation; - this.recipe = recipe; - this.baitSet = baitSet; - this.principalInvestigator = principalInvestigator; - this.fastqPath = fastqPath; - this.ancestorSample = ancestorSample; - this.sampleStatus = sampleStatus; - this.importDate = importDate; - this.oncoTreeCode = oncoTreeCode; - this.collectionYear = collectionYear; - this.tubeId = tubeId; - this.cfDNA2dBarcode = cfDNA2dBarcode; - this.qcReports = qcReports; - this.libraries = libraries; - this.sampleAliases = sampleAliases; - this.metaDbSampleId = metaDbSampleId; - this.metaDbPatientId = metaDbPatientId; + this.cmoSampleIdFields = latestSampleMetadata.getCmoSampleIdFields(); } public UUID getMetaDbSampleId() { @@ -301,14 +200,6 @@ public void setLibraries(List libraries) { this.libraries = libraries; } - public String getMrn() { - return mrn; - } - - public void setMrn(String mrn) { - this.mrn = mrn; - } - public String getCmoPatientId() { return cmoPatientId; } @@ -365,14 +256,6 @@ public void setTumorOrNormal(String tumorOrNormal) { this.tumorOrNormal = tumorOrNormal; } - public String getSampleType() { - return sampleType; - } - - public void setSampleType(String sampleType) { - this.sampleType = sampleType; - } - public String getPreservation() { return preservation; } @@ -381,22 +264,6 @@ public void setPreservation(String preservation) { this.preservation = preservation; } - public String getTumorType() { - return tumorType; - } - - public void setTumorType(String tumorType) { - this.tumorType = tumorType; - } - - public String getParentTumorType() { - return parentTumorType; - } - - public void setParentTumorType(String parentTumorType) { - this.parentTumorType = parentTumorType; - } - public String getSpecimenType() { return specimenType; } @@ -413,14 +280,6 @@ public void setSampleOrigin(String sampleOrigin) { this.sampleOrigin = sampleOrigin; } - public String getTissueSource() { - return tissueSource; - } - - public void setTissueSource(String tissueSource) { - this.tissueSource = tissueSource; - } - public String getTissueLocation() { return tissueLocation; } @@ -445,38 +304,6 @@ public void setBaitSet(String baitSet) { this.baitSet = baitSet; } - public String getFastqPath() { - return fastqPath; - } - - public void setFastqPath(String fastqPath) { - this.fastqPath = fastqPath; - } - - public String getPrincipalInvestigator() { - return principalInvestigator; - } - - public void setPrincipalInvestigator(String principalInvestigator) { - this.principalInvestigator = principalInvestigator; - } - - public String getAncestorSample() { - return ancestorSample; - } - - public void setAncestorSample(String ancestorSample) { - this.ancestorSample = ancestorSample; - } - - public String getSampleStatus() { - return sampleStatus; - } - - public void setSampleStatus(String sampleStatus) { - this.sampleStatus = sampleStatus; - } - public String getRequestId() { return requestId; } diff --git a/pom.xml b/pom.xml index af493899..bb7e959b 100644 --- a/pom.xml +++ b/pom.xml @@ -48,10 +48,10 @@ 1.16.0 com.github.mskcc - 1.1.6.RELEASE + 1.1.7.RELEASE com.github.mskcc - 1.1.7.RELEASE + 1.1.8.RELEASE v1.2 diff --git a/service/src/main/java/org/mskcc/cmo/metadb/service/impl/MessageHandlingServiceImpl.java b/service/src/main/java/org/mskcc/cmo/metadb/service/impl/MessageHandlingServiceImpl.java index 62eaddfa..cb72162a 100644 --- a/service/src/main/java/org/mskcc/cmo/metadb/service/impl/MessageHandlingServiceImpl.java +++ b/service/src/main/java/org/mskcc/cmo/metadb/service/impl/MessageHandlingServiceImpl.java @@ -228,7 +228,8 @@ public void run() { + sampleMetadata.getPrimaryId()); // handle and persist new sample received MetadbSample sample = SampleDataFactory - .buildNewResearchSampleFromMetadata(sampleMetadata); + .buildNewResearchSampleFromMetadata(sampleMetadata.getRequestId(), + sampleMetadata); sampleService.saveSampleMetadata(sample); LOG.info("Publishing metadata history for new sample: " + sampleMetadata.getPrimaryId()); diff --git a/service/src/main/java/org/mskcc/cmo/metadb/service/util/RequestDataFactory.java b/service/src/main/java/org/mskcc/cmo/metadb/service/util/RequestDataFactory.java index 189ed836..400923d7 100644 --- a/service/src/main/java/org/mskcc/cmo/metadb/service/util/RequestDataFactory.java +++ b/service/src/main/java/org/mskcc/cmo/metadb/service/util/RequestDataFactory.java @@ -12,6 +12,8 @@ import org.mskcc.cmo.metadb.model.MetadbSample; import org.mskcc.cmo.metadb.model.RequestMetadata; import org.mskcc.cmo.metadb.model.SampleMetadata; +import org.mskcc.cmo.metadb.model.igo.IgoRequest; +import org.mskcc.cmo.metadb.model.igo.IgoSampleManifest; /** * @@ -29,11 +31,9 @@ public class RequestDataFactory { */ public static MetadbRequest buildNewLimsRequestFromJson(String requestJson) throws JsonProcessingException { - MetadbRequest request = mapper.readValue(requestJson, - MetadbRequest.class); - request.setRequestJson(requestJson); + IgoRequest igoRequest = mapper.readValue(requestJson, IgoRequest.class); + MetadbRequest request = new MetadbRequest(igoRequest); request.setMetaDbSampleList(extractMetadbSamplesFromIgoResponse(requestJson)); - request.setNamespace("igo"); // creates and inits request metadata request.addRequestMetadata(extractRequestMetadataFromJson(requestJson)); return request; @@ -68,12 +68,12 @@ public static RequestMetadata buildNewRequestMetadataFromMetadata(String request private static List extractMetadbSamplesFromIgoResponse(Object message) throws JsonProcessingException { Map map = mapper.readValue(message.toString(), Map.class); - SampleMetadata[] samples = mapper.convertValue(map.get("samples"), - SampleMetadata[].class); + IgoSampleManifest[] samples = mapper.convertValue(map.get("samples"), + IgoSampleManifest[].class); String requestId = (String) map.get("requestId"); List requestSamplesList = new ArrayList<>(); - for (SampleMetadata s: samples) { + for (IgoSampleManifest s: samples) { MetadbSample sample = SampleDataFactory.buildNewResearchSampleFromMetadata(requestId, s); requestSamplesList.add(sample); } diff --git a/service/src/main/java/org/mskcc/cmo/metadb/service/util/SampleDataFactory.java b/service/src/main/java/org/mskcc/cmo/metadb/service/util/SampleDataFactory.java index 90124855..621dbeb2 100644 --- a/service/src/main/java/org/mskcc/cmo/metadb/service/util/SampleDataFactory.java +++ b/service/src/main/java/org/mskcc/cmo/metadb/service/util/SampleDataFactory.java @@ -9,20 +9,11 @@ import org.mskcc.cmo.metadb.model.PatientAlias; import org.mskcc.cmo.metadb.model.SampleAlias; import org.mskcc.cmo.metadb.model.SampleMetadata; +import org.mskcc.cmo.metadb.model.igo.IgoSampleManifest; public class SampleDataFactory { private static final ObjectMapper mapper = new ObjectMapper(); - /** - * Method factory returns an instance of MetadbSample with sampleCategory "research" - * from an instance of SampleMetadata. - * @param sampleMetadata - * @return MetadbSample - */ - public static MetadbSample buildNewResearchSampleFromMetadata(SampleMetadata sampleMetadata) { - return buildNewResearchSampleFromMetadata(sampleMetadata.getRequestId(), sampleMetadata); - } - /** * Method factory returns an instance of MetadbSample with sampleCategory "research" * from an instance of SampleMetadata and the provided request id. @@ -48,6 +39,20 @@ public static MetadbSample buildNewResearchSampleFromMetadata(String requestId, return sample; } + /** + * Method factory returns an instance of MetadbSample with sampleCategory "research" + * from an instance of SampleMetadata and the provided request id. + * @param requestId + * @param igoSampleManifest + * @return MetadbSample + * @throws JsonProcessingException + */ + public static MetadbSample buildNewResearchSampleFromMetadata(String requestId, + IgoSampleManifest igoSampleManifest) throws JsonProcessingException { + SampleMetadata sampleMetadata = new SampleMetadata(igoSampleManifest); + return buildNewResearchSampleFromMetadata(requestId, sampleMetadata); + } + /** * Method factory returns an instance of MetadbSample with sampleCategory "clinical" * from an instance of SampleMetadata. @@ -76,7 +81,7 @@ public static MetadbSample buildNewClinicalSampleFromMetadata(SampleMetadata sam * Method factory returns an instance of SampleMetadata from a sample metadata JSON. * @param sampleMetadataJson * @return SampleMetadata - * @throws com.fasterxml.jackson.core.JsonProcessingException + * @throws JsonProcessingException */ public static SampleMetadata buildNewSampleMetadatafromJson(String sampleMetadataJson) throws JsonProcessingException { diff --git a/service/src/test/resources/data/incoming_requests/mocked_request5_pt_multi_samples.json b/service/src/test/resources/data/incoming_requests/mocked_request5_pt_multi_samples.json index 7bc02191..81a84a87 100644 --- a/service/src/test/resources/data/incoming_requests/mocked_request5_pt_multi_samples.json +++ b/service/src/test/resources/data/incoming_requests/mocked_request5_pt_multi_samples.json @@ -63,7 +63,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED" @@ -115,7 +114,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED" @@ -167,7 +165,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED" @@ -219,7 +216,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED" @@ -271,7 +267,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED" @@ -323,7 +318,6 @@ "sampleOrigin": "Plasma", "tissueLocation": "", "baitSet": "null", - "requestId": "145145_IM", "cmoSampleIdFields": { "naToExtract": "", "normalizedPatientId": "MRN_REDACTED"