Skip to content

Commit

Permalink
RequestSummary endpoint patch (#447)
Browse files Browse the repository at this point in the history
RequestSummary endpoint now returns descriptive list of RequestSummary objects
when returning detailed results Instead of a List<List<String>>

Signed-off-by: Angelica Ochoa <[email protected]>
  • Loading branch information
ao508 authored Oct 27, 2021
1 parent da8296a commit 0bfff07
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package org.mskcc.cmo.metadb.model.web;

import java.io.Serializable;
import java.util.List;
import java.util.UUID;
import org.neo4j.ogm.annotation.typeconversion.Convert;
import org.neo4j.ogm.typeconversion.UuidStringConverter;

/**
*
* @author ochoaa
*/
public class RequestSummary implements Serializable {
@Convert(UuidStringConverter.class)
private UUID metaDbRequestId;
private String projectId;
private String requestId;
private String importDate;

/**
* RequestSummary default constructor.
*/
public RequestSummary(){}

/**
* RequestSummary args constructor.
* @param metaDbRequestId
* @param projectId
* @param requestId
* @param importDate
*/
public RequestSummary(UUID metaDbRequestId, String projectId, String requestId, String importDate) {
this.metaDbRequestId = metaDbRequestId;
this.projectId = projectId;
this.requestId = requestId;
this.importDate = importDate;
}

/**
* RequestSummary cypher query results constructor.
* @param values
*/
public RequestSummary(List<String> values) {
this.metaDbRequestId = UUID.fromString(values.get(0));
this.projectId = values.get(1);
this.requestId = values.get(2);
this.importDate = values.get(3);
}

public UUID getMetaDbRequestId() {
return metaDbRequestId;
}

public void setMetaDbRequestId(UUID metaDbRequestId) {
this.metaDbRequestId = metaDbRequestId;
}

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 getImportDate() {
return importDate;
}

public void setImportDate(String importDate) {
this.importDate = importDate;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public interface MetadbRequestRepository extends Neo4jRepository<MetadbRequest,

@Query("MATCH (r:Request)-[:HAS_METADATA]->(rm:RequestMetadata) "
+ "WHERE $dateRangeStart <= [rm][0].importDate <= $dateRangeEnd "
+ "RETURN [r.metaDbRequestId, r.requestId, [rm][0].importDate]")
+ "RETURN [r.metaDbRequestId, r.projectId, r.requestId, [rm][0].importDate]")
List<List<String>> findRequestWithinDateRange(@Param("dateRangeStart") String startDate,
@Param("dateRangeEnd") String endDate);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.mskcc.cmo.metadb.model.MetadbSample;
import org.mskcc.cmo.metadb.model.RequestMetadata;
import org.mskcc.cmo.metadb.model.web.PublishedMetadbRequest;
import org.mskcc.cmo.metadb.model.web.RequestSummary;

/**
*
Expand All @@ -19,7 +20,7 @@ public interface MetadbRequestService {
Boolean requestHasMetadataUpdates(RequestMetadata existingRequestMetadata,
RequestMetadata requestMetadata) throws Exception;
List<MetadbSample> getRequestSamplesWithUpdates(MetadbRequest request) throws Exception;
List<List<String>> getRequestsByDate(String startDate, String endDate) throws Exception;
List<RequestSummary> getRequestsByDate(String startDate, String endDate) throws Exception;
List<RequestMetadata> getRequestMetadataHistory(String reqId);
MetadbRequest getRequestBySample(MetadbSample sample) throws Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.mskcc.cmo.metadb.model.RequestMetadata;
import org.mskcc.cmo.metadb.model.SampleMetadata;
import org.mskcc.cmo.metadb.model.web.PublishedMetadbRequest;
import org.mskcc.cmo.metadb.model.web.RequestSummary;
import org.mskcc.cmo.metadb.persistence.MetadbRequestRepository;
import org.mskcc.cmo.metadb.service.MetadbRequestService;
import org.mskcc.cmo.metadb.service.MetadbSampleService;
Expand Down Expand Up @@ -244,7 +245,7 @@ public List<MetadbSample> getRequestSamplesWithUpdates(MetadbRequest request) th
}

@Override
public List<List<String>> getRequestsByDate(String startDate, String endDate) throws Exception {
public List<RequestSummary> getRequestsByDate(String startDate, String endDate) throws Exception {
if (Strings.isNullOrEmpty(startDate)) {
throw new RuntimeException("Start date " + startDate + " cannot be null or empty");
}
Expand All @@ -262,15 +263,8 @@ public List<List<String>> getRequestsByDate(String startDate, String endDate) th
+ endDate);
}

return requestRepository.findRequestWithinDateRange(startDate, endDate);
}

private Date getFormattedDate(String dateString) {
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
} catch (ParseException e) {
throw new RuntimeException("Could not parse date: " + dateString, e);
}
return transformRequestSummaryResults(
requestRepository.findRequestWithinDateRange(startDate, endDate));
}

@Override
Expand All @@ -283,4 +277,19 @@ public MetadbRequest getRequestBySample(MetadbSample sample) throws Exception {
return requestRepository.findRequestBySample(sample);
}

private Date getFormattedDate(String dateString) {
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(dateString);
} catch (ParseException e) {
throw new RuntimeException("Could not parse date: " + dateString, e);
}
}

private List<RequestSummary> transformRequestSummaryResults(List<List<String>> results) {
List<RequestSummary> requestSummaryList = new ArrayList<>();
for (List<String> result : results) {
requestSummaryList.add(new RequestSummary(result));
}
return requestSummaryList;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.mskcc.cmo.metadb.model.MetadbRequest;
import org.mskcc.cmo.metadb.model.MetadbSample;
import org.mskcc.cmo.metadb.model.RequestMetadata;
import org.mskcc.cmo.metadb.model.web.RequestSummary;
import org.mskcc.cmo.metadb.persistence.MetadbPatientRepository;
import org.mskcc.cmo.metadb.persistence.MetadbRequestRepository;
import org.mskcc.cmo.metadb.persistence.MetadbSampleRepository;
Expand Down Expand Up @@ -214,7 +215,7 @@ public void testRequestMetadataHistoryByRequestId() throws Exception {
@Test
public void testGetRequestsByNullEndDate() throws Exception {
String startDate = "2021-10-25";
List<List<String>> requestDataList = requestService.getRequestsByDate(startDate, null);
List<RequestSummary> requestDataList = requestService.getRequestsByDate(startDate, null);
Assertions.assertThat(requestDataList.size()).isEqualTo(3);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.List;
import java.util.Map;
import org.mskcc.cmo.metadb.model.web.PublishedMetadbRequest;
import org.mskcc.cmo.metadb.model.web.RequestSummary;
import org.mskcc.cmo.metadb.service.MetadbRequestService;
import org.mskcc.cmo.metadb.service.exception.MetadbWebServiceException;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -137,7 +138,7 @@ public ResponseEntity<Object> fetchRequestsByImportDatePOST(@ApiParam(value =
"JSON with 'startDate' (required) and 'endDate' (optional) to query for.", required = true)
@RequestBody DateRange dateRange, ReturnTypeDetails returnType) throws Exception {
// get request summary for given date range
List<List<String>> requestSummaryList;
List<RequestSummary> requestSummaryList;
try {
requestSummaryList = requestService.getRequestsByDate(
dateRange.getStartDate(), dateRange.getEndDate());
Expand All @@ -152,8 +153,8 @@ public ResponseEntity<Object> fetchRequestsByImportDatePOST(@ApiParam(value =
// make list of request ids if specified
if (returnType.equals(ReturnTypeDetails.REQUEST_ID_LIST)) {
List<String> requestIds = new ArrayList<>();
for (List<String> request: requestSummaryList) {
requestIds.add(request.get(1));
for (RequestSummary request: requestSummaryList) {
requestIds.add(request.getRequestId());
}
return sendResponse(requestIds);
}
Expand Down

0 comments on commit 0bfff07

Please sign in to comment.