-
Notifications
You must be signed in to change notification settings - Fork 604
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rfc80/treatments patients endpoint (#10903)
* Create new endpoint treatment/patient-counts/fetch * Create StudyViewFilterHelper class * ⬆️ Upgrade CH client Version * Fix Merge Conflict issue * Update Treatment event name * Update to handle patient treatment filtering * Fix sonar issues * Fix sonar comments 2
- Loading branch information
Showing
15 changed files
with
295 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package org.cbioportal.model; | ||
|
||
import java.io.Serializable; | ||
|
||
public record PatientTreatment (String treatment, int count) implements Serializable { | ||
|
||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/org/cbioportal/model/PatientTreatmentReport.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package org.cbioportal.model; | ||
|
||
import java.io.Serializable; | ||
import java.util.Collections; | ||
import java.util.List; | ||
|
||
public record PatientTreatmentReport (int totalPatients, int totalSamples, List<PatientTreatment> patientTreatments) implements Serializable { | ||
public PatientTreatmentReport(int totalPatients, int totalSamples) { | ||
this(totalPatients, totalSamples, Collections.emptyList()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
78 changes: 78 additions & 0 deletions
78
src/main/java/org/cbioportal/persistence/helper/StudyViewFilterHelper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package org.cbioportal.persistence.helper; | ||
|
||
import org.cbioportal.model.ClinicalAttribute; | ||
import org.cbioportal.persistence.enums.ClinicalAttributeDataSource; | ||
import org.cbioportal.web.parameter.CategorizedClinicalDataCountFilter; | ||
import org.cbioportal.web.parameter.StudyViewFilter; | ||
import org.springframework.lang.NonNull; | ||
import org.springframework.lang.Nullable; | ||
|
||
import java.util.EnumMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Objects; | ||
|
||
public class StudyViewFilterHelper { | ||
public static StudyViewFilterHelper build(@Nullable StudyViewFilter studyViewFilter, @Nullable EnumMap<ClinicalAttributeDataSource, List<ClinicalAttribute>> clinicalAttributesMap) { | ||
if (Objects.isNull(studyViewFilter)) { | ||
studyViewFilter = new StudyViewFilter(); | ||
} | ||
if (Objects.isNull(clinicalAttributesMap)) { | ||
clinicalAttributesMap = new EnumMap<>(ClinicalAttributeDataSource.class); | ||
} | ||
return new StudyViewFilterHelper(studyViewFilter, clinicalAttributesMap); | ||
} | ||
|
||
private final StudyViewFilter studyViewFilter; | ||
private final CategorizedClinicalDataCountFilter categorizedClinicalDataCountFilter; | ||
|
||
|
||
private StudyViewFilterHelper(@NonNull StudyViewFilter studyViewFilter, @NonNull Map<ClinicalAttributeDataSource, List<ClinicalAttribute>> clinicalAttributesMap ) { | ||
this.studyViewFilter = studyViewFilter; | ||
this.categorizedClinicalDataCountFilter = extractClinicalDataCountFilters(studyViewFilter, clinicalAttributesMap); | ||
} | ||
|
||
private CategorizedClinicalDataCountFilter extractClinicalDataCountFilters(final StudyViewFilter studyViewFilter, Map<ClinicalAttributeDataSource, List<ClinicalAttribute>> clinicalAttributesMap) { | ||
|
||
if (studyViewFilter.getClinicalDataFilters() == null || clinicalAttributesMap.isEmpty()) { | ||
return CategorizedClinicalDataCountFilter.getBuilder().build(); | ||
} | ||
|
||
List<String> patientCategoricalAttributes = clinicalAttributesMap.get(ClinicalAttributeDataSource.PATIENT) | ||
.stream().filter(ca -> ca.getDatatype().equals("STRING")) | ||
.map(ClinicalAttribute::getAttrId) | ||
.toList(); | ||
|
||
List<String> patientNumericalAttributes = clinicalAttributesMap.get(ClinicalAttributeDataSource.PATIENT) | ||
.stream().filter(ca -> ca.getDatatype().equals("NUMBER")) | ||
.map(ClinicalAttribute::getAttrId) | ||
.toList(); | ||
|
||
List<String> sampleCategoricalAttributes = clinicalAttributesMap.get(ClinicalAttributeDataSource.SAMPLE) | ||
.stream().filter(ca -> ca.getDatatype().equals("STRING")) | ||
.map(ClinicalAttribute::getAttrId) | ||
.toList(); | ||
|
||
List<String> sampleNumericalAttributes = clinicalAttributesMap.get(ClinicalAttributeDataSource.SAMPLE) | ||
.stream().filter(ca -> ca.getDatatype().equals("NUMBER")) | ||
.map(ClinicalAttribute::getAttrId) | ||
.toList(); | ||
|
||
return CategorizedClinicalDataCountFilter.getBuilder() | ||
.setPatientCategoricalClinicalDataFilters(studyViewFilter.getClinicalDataFilters() | ||
.stream().filter(clinicalDataFilter -> patientCategoricalAttributes.contains(clinicalDataFilter.getAttributeId())) | ||
.toList()) | ||
.setPatientNumericalClinicalDataFilters(studyViewFilter.getClinicalDataFilters().stream() | ||
.filter(clinicalDataFilter -> patientNumericalAttributes.contains(clinicalDataFilter.getAttributeId())) | ||
.toList()) | ||
.setSampleCategoricalClinicalDataFilters(studyViewFilter.getClinicalDataFilters().stream() | ||
.filter(clinicalDataFilter -> sampleCategoricalAttributes.contains(clinicalDataFilter.getAttributeId())) | ||
.toList()) | ||
.setSampleNumericalClinicalDataFilters(studyViewFilter.getClinicalDataFilters().stream() | ||
.filter(clinicalDataFilter -> sampleNumericalAttributes.contains(clinicalDataFilter.getAttributeId())) | ||
.toList()) | ||
.build(); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.