-
-
Notifications
You must be signed in to change notification settings - Fork 728
Migrate clinical-data
endpoint to clean architecture with ClickHouse support
#11425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate clinical-data
endpoint to clean architecture with ClickHouse support
#11425
Conversation
4758f70
to
3ef5db7
Compare
|
62abff3
to
c9d7a32
Compare
df74892
to
392691d
Compare
2e4a73d
to
abb7772
Compare
|
5027914
to
de9f107
Compare
956625b
to
65409a8
Compare
c5fb8db
to
f4f4630
Compare
|
e349697
to
ec29084
Compare
8b255eb
to
2f7aa88
Compare
e615615
to
e903864
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!! Great job @fuzhaoyuan
just had a few comments
...main/java/org/cbioportal/application/rest/vcolumnstore/ColumnarStoreStudyViewController.java
Show resolved
Hide resolved
src/main/java/org/cbioportal/legacy/service/util/ClinicalDataUtil.java
Outdated
Show resolved
Hide resolved
c788637
to
b407d4d
Compare
…e support (cBioPortal#11425) * Implement clinical-data in clean arch with ClickHouse support * Add integration tests * Fix ResultMap * Rectify naming * Address comments
Fix #11384
Migrate
clinical-data
to Clean Architecture with ClickHouse SupportOverview
This PR refactors clinical data endpoints from legacy architecture to clean architecture with ClickHouse support, as part of the broader backend migration to ClickHouse and clean architecture patterns.
Architecture Changes
Domain Layer - Record-Based Models
Use Case Layer
Repository Layer - Projection-Based Queries
New repository methods supporting different data retrieval levels:
getClinicalDataId()
- Basic identifiers onlygetClinicalDataSummary()
- Identifiers + attribute valuesgetClinicalDataDetailed()
- Complete data with clinical attribute metadatagetClinicalDataMeta()
- Count operations onlyMyBatis Layer - Constructor Mapping
<result>
+<association>
patterns with<constructor>
mapping for Recordsclinical_data
→clinical_attributes
REST Layer
@Profile("clickhouse")
controller supporting multiple projection typesMapStruct Integration
uniqueKey
fieldsuses = ClinicalAttributeMapper.class
Files Changed
Core New Architecture
domain/clinical_data/ClinicalData.java
domain/clinical_attributes/ClinicalAttribute.java
domain/clinical_data/repository/ClinicalDataRepository.java
domain/clinical_data/usecase/GetClinicalDataUseCase.java
domain/clinical_data/usecase/GetClinicalDataMetaUseCase.java
application/rest/vcolumnstore/ColumnarStoreClinicalDataController.java
application/rest/response/ClinicalDataDTO.java
application/rest/response/ClinicalAttributeDTO.java
application/rest/mapper/ClinicalDataMapper.java
application/rest/mapper/ClinicalAttributeMapper.java
Compatibility Updates
domain/clinical_data/usecase/ClinicalDataUseCases.java
domain/clinical_data/usecase/GetPatientClinicalDataUseCase.java
domain/clinical_data/usecase/GetSampleClinicalDataUseCase.java
domain/clinical_data/usecase/GetClinicalDataForXyPlotUseCase.java
domain/clinical_data/ClinicalDataType.java
application/rest/vcolumnstore/ColumnarStoreStudyViewController.java
Testing
Added comprehensive integration tests in
ClickhouseClinicalDataMapperTest
:Migration Notes
@Profile("clickhouse")