From d206fb904249866bb61ac51d1a730bb6cabf016b Mon Sep 17 00:00:00 2001 From: Dillan Cooke Date: Fri, 15 Sep 2023 09:28:49 -0400 Subject: [PATCH] [GLT-3995] renamed analysis and release steps --- changes/change_gate_renames.md | 4 + docs/user_manual/details.md | 6 +- docs/user_manual/qc_dashboard.md | 8 +- pom.xml | 2 +- .../ca/on/oicr/gsi/dimsum/CaseLoader.java | 36 +- .../oicr/gsi/dimsum/data/ProjectSummary.java | 144 +-- .../gsi/dimsum/data/ProjectSummaryRow.java | 42 +- .../oicr/gsi/dimsum/service/CaseService.java | 36 +- .../service/filtering/CompletedGate.java | 19 +- .../service/filtering/PendingState.java | 17 +- .../reporting/reports/TglTrackingReport.java | 2 +- src/main/resources/templates/case-report.html | 4 +- .../java/ca/on/oicr/gsi/dimsum/MockCase.java | 41 +- .../service/filtering/CaseFilterTest.java | 53 +- src/test/resources/testdata/assays.json | 938 -------------- src/test/resources/testdata/cases.json | 67 - src/test/resources/testdata/donors.json | 12 - src/test/resources/testdata/projects.json | 6 - .../resources/testdata/receipts_nocase.json | 20 - src/test/resources/testdata/requisitions.json | 60 - src/test/resources/testdata/runs.json | 210 ---- src/test/resources/testdata/samples.json | 1099 ----------------- src/test/resources/testdata/timestamp | 1 - ts/case-report.ts | 22 +- ts/data/assay.ts | 2 +- ts/data/case.ts | 40 +- ts/data/project-summary-row.ts | 32 +- ts/data/project.ts | 30 +- ts/data/requisition.ts | 22 +- ts/data/test.ts | 3 - ts/details.ts | 12 +- ts/project-details.ts | 12 +- 32 files changed, 264 insertions(+), 2738 deletions(-) create mode 100644 changes/change_gate_renames.md delete mode 100644 src/test/resources/testdata/assays.json delete mode 100644 src/test/resources/testdata/cases.json delete mode 100644 src/test/resources/testdata/donors.json delete mode 100644 src/test/resources/testdata/projects.json delete mode 100644 src/test/resources/testdata/receipts_nocase.json delete mode 100644 src/test/resources/testdata/requisitions.json delete mode 100644 src/test/resources/testdata/runs.json delete mode 100644 src/test/resources/testdata/samples.json delete mode 100644 src/test/resources/testdata/timestamp diff --git a/changes/change_gate_renames.md b/changes/change_gate_renames.md new file mode 100644 index 00000000..eec46897 --- /dev/null +++ b/changes/change_gate_renames.md @@ -0,0 +1,4 @@ +Renamed steps: +* Informatics Review -> Analysis Review +* Draft Report -> Release Approval +* Final Report -> Release diff --git a/docs/user_manual/details.md b/docs/user_manual/details.md index 63eb74d2..b6b53b3d 100644 --- a/docs/user_manual/details.md +++ b/docs/user_manual/details.md @@ -24,9 +24,9 @@ The Details page includes tables detailing the following: - Library Preparations - Library Qualifications - Full Depth Sequencings -- Informatics Review -- Draft Report -- Final Report +- Analysis Review +- Release Approvals +- Releases Navigate through each of the tables using the tabbed bar at the top of the page. diff --git a/docs/user_manual/qc_dashboard.md b/docs/user_manual/qc_dashboard.md index 7815ebb8..e1dd7253 100644 --- a/docs/user_manual/qc_dashboard.md +++ b/docs/user_manual/qc_dashboard.md @@ -45,7 +45,7 @@ page in a new tab. Displays the case start date and total turn-around time. Start date is the earliest receipt date of the tumour sample(s) involved in the case. For ongoing cases, the turn-around time is the number of days from the start date until the current date. For completed cases, the turn-around time is the -number of days from the start date until the Final Report sign-off. +number of days from the start date until the Release sign-off. ### Test @@ -63,9 +63,9 @@ The following are QC gate columns, and their associated items: | Library Preparation | Libraries | | Library Qualification | Library aliquots or run-libraries, depending on the assay | | Full-Depth Sequencing | Run-libraries | -| Informatics Review | Requisition-level QC | -| Draft Report | Requisition-level QC | -| Final Report | Requisition-level QC | +| Analysis Review | Requisition-level QC | +| Release Approvals | Requisition-level QC | +| Releases | Requisition-level QC | Each QC gate cell includes icons representing the QC status of each item relevant to that gate. A checkmark represents an item that has passed QC, while an 'X' represents a QC failure. Click the diff --git a/pom.xml b/pom.xml index 3f53939b..0d71f46c 100644 --- a/pom.xml +++ b/pom.xml @@ -138,7 +138,7 @@ ca.on.oicr.gsi.cardea cardea-data - 1.4.0 + 1.4.1-SNAPSHOT diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/CaseLoader.java b/src/main/java/ca/on/oicr/gsi/dimsum/CaseLoader.java index 24782c97..6df5f34d 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/CaseLoader.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/CaseLoader.java @@ -261,31 +261,31 @@ && anySamplesMatch(test.getFullDepthSequencings(), dateFilters)) { } } - // informatics review - if (CompletedGate.INFORMATICS_REVIEW.qualifyCase(kase) - && anyRequisitionQcsMatch(kase.getRequisition().getInformaticsReviews(), dateFilters)) { - caseSummary.informaticsCompletedCount(testSize); + // analysis review + if (CompletedGate.ANALYSIS_REVIEW.qualifyCase(kase) + && anyRequisitionQcsMatch(kase.getRequisition().getAnalysisReviews(), dateFilters)) { + caseSummary.analysisReviewCompletedCount(testSize); } - if (PendingState.INFORMATICS_REVIEW.qualifyCase(kase) && !kase.isStopped()) { - caseSummary.informaticsPendingCount(testSize); + if (PendingState.ANALYSIS_REVIEW.qualifyCase(kase) && !kase.isStopped()) { + caseSummary.analysisReviewPendingCount(testSize); } - // draft report - if (CompletedGate.DRAFT_REPORT.qualifyCase(kase) - && anyRequisitionQcsMatch(kase.getRequisition().getDraftReports(), dateFilters)) { - caseSummary.draftReportCompletedCount(testSize); + // release approval + if (CompletedGate.RELEASE_APPROVAL.qualifyCase(kase) + && anyRequisitionQcsMatch(kase.getRequisition().getReleaseApprovals(), dateFilters)) { + caseSummary.releaseApprovalCompletedCount(testSize); } - if (PendingState.DRAFT_REPORT.qualifyCase(kase) && !kase.isStopped()) { - caseSummary.draftReportPendingCount(testSize); + if (PendingState.RELEASE_APPROVAL.qualifyCase(kase) && !kase.isStopped()) { + caseSummary.releaseApprovalPendingCount(testSize); } - // final report - if (CompletedGate.FINAL_REPORT.qualifyCase(kase) - && anyRequisitionQcsMatch(kase.getRequisition().getFinalReports(), dateFilters)) { - caseSummary.finalReportCompletedCount(testSize); + // release + if (CompletedGate.RELEASE.qualifyCase(kase) + && anyRequisitionQcsMatch(kase.getRequisition().getReleases(), dateFilters)) { + caseSummary.releaseCompletedCount(testSize); } - if (PendingState.FINAL_REPORT.qualifyCase(kase) && !kase.isStopped()) { - caseSummary.finalReportPendingCount(testSize); + if (PendingState.RELEASE.qualifyCase(kase) && !kase.isStopped()) { + caseSummary.releasePendingCount(testSize); } // add the counts to each project in the case if the project exists in the diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummary.java b/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummary.java index a1761b57..d439ca8b 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummary.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummary.java @@ -11,66 +11,50 @@ public class ProjectSummary { private final String name; private final int totalTestCount; - // receipt private final int receiptPendingQcCount; private final int receiptCompletedCount; - // extraction private final int extractionPendingCount; private final int extractionPendingQcCount; private final int extractionCompletedCount; - // library preparation private final int libraryPrepPendingCount; private final int libraryPrepPendingQcCount; private final int libraryPrepCompletedCount; - // library qualification private final int libraryQualPendingCount; private final int libraryQualPendingQcCount; private final int libraryQualCompletedCount; - // full depth sequencing private final int fullDepthSeqPendingCount; private final int fullDepthSeqPendingQcCount; private final int fullDepthSeqCompletedCount; - // informatics review - private final int informaticsPendingCount; - private final int informaticsCompletedCount; - // draft report - private final int draftReportPendingCount; - private final int draftReportCompletedCount; - // final report - private final int finalReportPendingCount; - private final int finalReportCompletedCount; + private final int analysisReviewPendingCount; + private final int analysisReviewCompletedCount; + private final int releaseApprovalPendingCount; + private final int releaseApprovalCompletedCount; + private final int releasePendingCount; + private final int releaseCompletedCount; private ProjectSummary(Builder builder) { this.name = requireNonNull(builder.name); this.totalTestCount = builder.totalTestCount; - // receipt this.receiptPendingQcCount = builder.receiptPendingQcCount; this.receiptCompletedCount = builder.receiptCompletedCount; - // extraction this.extractionPendingCount = builder.extractionPendingCount; this.extractionPendingQcCount = builder.extractionPendingQcCount; this.extractionCompletedCount = builder.extractionCompletedCount; - // library preparation this.libraryPrepPendingCount = builder.libraryPrepPendingCount; this.libraryPrepPendingQcCount = builder.libraryPrepPendingQcCount; this.libraryPrepCompletedCount = builder.libraryPrepCompletedCount; - // library qualification this.libraryQualPendingCount = builder.libraryQualPendingCount; this.libraryQualPendingQcCount = builder.libraryQualPendingQcCount; this.libraryQualCompletedCount = builder.libraryQualCompletedCount; - // full depth sequencing this.fullDepthSeqPendingCount = builder.fullDepthSeqPendingCount; this.fullDepthSeqPendingQcCount = builder.fullDepthSeqPendingQcCount; this.fullDepthSeqCompletedCount = builder.fullDepthSeqCompletedCount; - // informatics review - this.informaticsPendingCount = builder.informaticsPendingCount; - this.informaticsCompletedCount = builder.informaticsCompletedCount; - // draft report - this.draftReportPendingCount = builder.draftReportPendingCount; - this.draftReportCompletedCount = builder.draftReportCompletedCount; - // final report - this.finalReportPendingCount = builder.finalReportPendingCount; - this.finalReportCompletedCount = builder.finalReportCompletedCount; + this.analysisReviewPendingCount = builder.analysisReviewPendingCount; + this.analysisReviewCompletedCount = builder.analysisReviewCompletedCount; + this.releaseApprovalPendingCount = builder.releaseApprovalPendingCount; + this.releaseApprovalCompletedCount = builder.releaseApprovalCompletedCount; + this.releasePendingCount = builder.releasePendingCount; + this.releaseCompletedCount = builder.releaseCompletedCount; } @@ -91,7 +75,6 @@ public int getReceiptCompletedCount() { return receiptCompletedCount; } - // extraction public int getExtractionPendingCount() { return extractionPendingCount; } @@ -104,7 +87,6 @@ public int getExtractionCompletedCount() { return extractionCompletedCount; } - // library preparation public int getLibraryPrepPendingCount() { return libraryPrepPendingCount; } @@ -117,7 +99,6 @@ public int getLibraryPrepCompletedCount() { return libraryPrepCompletedCount; } - // library qualification public int getLibraryQualPendingCount() { return libraryQualPendingCount; } @@ -131,7 +112,6 @@ public int getLibraryQualCompletedCount() { } - // full depth sequencing public int getFullDepthSeqPendingCount() { return fullDepthSeqPendingCount; } @@ -144,31 +124,28 @@ public int getFullDepthSeqCompletedCount() { return fullDepthSeqCompletedCount; } - // informatics review - public int getInformaticsPendingCount() { - return informaticsPendingCount; + public int getAnalysisReviewPendingCount() { + return analysisReviewPendingCount; } - public int getInformaticsCompletedCount() { - return informaticsCompletedCount; + public int getAnalysisReviewCompletedCount() { + return analysisReviewCompletedCount; } - // draft report - public int getDraftReportPendingCount() { - return draftReportPendingCount; + public int getReleaseApprovalPendingCount() { + return releaseApprovalPendingCount; } - public int getDraftReportCompletedCount() { - return draftReportCompletedCount; + public int getReleaseApprovalCompletedCount() { + return releaseApprovalCompletedCount; } - // final report - public int getFinalReportPendingCount() { - return finalReportPendingCount; + public int getReleasePendingCount() { + return releasePendingCount; } - public int getFinalReportCompletedCount() { - return finalReportCompletedCount; + public int getReleaseCompletedCount() { + return releaseCompletedCount; } @JsonPOJOBuilder(withPrefix = "") @@ -176,34 +153,26 @@ public static class Builder { private String name; private int totalTestCount = 0; - // receipt private int receiptPendingQcCount = 0; private int receiptCompletedCount = 0; - // extraction private int extractionPendingCount = 0; private int extractionPendingQcCount = 0; private int extractionCompletedCount = 0; - // library preparation private int libraryPrepPendingCount = 0; private int libraryPrepPendingQcCount = 0; private int libraryPrepCompletedCount = 0; - // library qualification private int libraryQualPendingCount = 0; private int libraryQualPendingQcCount = 0; private int libraryQualCompletedCount = 0; - // full depth sequencing private int fullDepthSeqPendingCount = 0; private int fullDepthSeqPendingQcCount = 0; private int fullDepthSeqCompletedCount = 0; - // informatics review - private int informaticsPendingCount = 0; - private int informaticsCompletedCount = 0; - // draft report - private int draftReportPendingCount = 0; - private int draftReportCompletedCount = 0; - // final report - private int finalReportPendingCount = 0; - private int finalReportCompletedCount = 0; + private int analysisReviewPendingCount = 0; + private int analysisReviewCompletedCount = 0; + private int releaseApprovalPendingCount = 0; + private int releaseApprovalCompletedCount = 0; + private int releasePendingCount = 0; + private int releaseCompletedCount = 0; public Builder name(String name) { @@ -223,7 +192,6 @@ public void receiptCompletedCount(int receiptCompletedCount) { this.receiptCompletedCount = receiptCompletedCount; } - // extraction public void incrementExtractionPendingCount() { this.extractionPendingCount += 1; } @@ -236,7 +204,6 @@ public void incrementExtractionCompletedCount() { this.extractionCompletedCount += 1; } - // library preparation public void incrementLibraryPrepPendingCount() { this.libraryPrepPendingCount += 1; } @@ -249,7 +216,6 @@ public void incrementLibraryPrepCompletedCount() { this.libraryPrepCompletedCount += 1; } - // library qualification public void incrementLibraryQualPendingCount() { this.libraryQualPendingCount += 1; } @@ -262,7 +228,6 @@ public void incrementLibraryQualCompletedCount() { this.libraryQualCompletedCount += 1; } - // full depth sequencing public void incrementFullDepthSeqPendingCount() { this.fullDepthSeqPendingCount += 1; } @@ -276,65 +241,52 @@ public void incrementFullDepthSeqCompletedCount() { this.fullDepthSeqCompletedCount += 1; } - // informatics review - public void informaticsPendingCount(int informaticsPendingCount) { - this.informaticsPendingCount = informaticsPendingCount; + public void analysisReviewPendingCount(int analysisReviewPendingCount) { + this.analysisReviewPendingCount = analysisReviewPendingCount; } - public void informaticsCompletedCount(int informaticsCompletedCount) { - this.informaticsCompletedCount = informaticsCompletedCount; + public void analysisReviewCompletedCount(int analysisReviewCompletedCount) { + this.analysisReviewCompletedCount = analysisReviewCompletedCount; } - // draft report - public void draftReportPendingCount(int draftReportPendingCount) { - this.draftReportPendingCount = draftReportPendingCount; + public void releaseApprovalPendingCount(int releaseApprovalPendingCount) { + this.releaseApprovalPendingCount = releaseApprovalPendingCount; } - public void draftReportCompletedCount(int draftReportCompletedCount) { - this.draftReportCompletedCount = draftReportCompletedCount; + public void releaseApprovalCompletedCount(int releaseApprovalCompletedCount) { + this.releaseApprovalCompletedCount = releaseApprovalCompletedCount; } - // final report - public void finalReportPendingCount(int finalReportPendingCount) { - this.finalReportPendingCount = finalReportPendingCount; + public void releasePendingCount(int releasePendingCount) { + this.releasePendingCount = releasePendingCount; } - public void finalReportCompletedCount(int finalReportCompletedCount) { - this.finalReportCompletedCount = finalReportCompletedCount; + public void releaseCompletedCount(int releaseCompletedCount) { + this.releaseCompletedCount = releaseCompletedCount; } - - public Builder addCounts(ProjectSummary.Builder builder) { this.totalTestCount += builder.totalTestCount; - // receipt this.receiptPendingQcCount += builder.receiptPendingQcCount; this.receiptCompletedCount += builder.receiptCompletedCount; - // extraction this.extractionPendingCount += builder.extractionPendingCount; this.extractionPendingQcCount += builder.extractionPendingQcCount; this.extractionCompletedCount += builder.extractionCompletedCount; - // library preparation this.libraryPrepPendingCount += builder.libraryPrepPendingCount; this.libraryPrepPendingQcCount += builder.libraryPrepPendingQcCount; this.libraryPrepCompletedCount += builder.libraryPrepCompletedCount; - // library qualification this.libraryQualPendingCount += builder.libraryQualPendingCount; this.libraryQualPendingQcCount += builder.libraryQualPendingQcCount; this.libraryQualCompletedCount += builder.libraryQualCompletedCount; - // full depth sequencing this.fullDepthSeqPendingCount += builder.fullDepthSeqPendingCount; this.fullDepthSeqPendingQcCount += builder.fullDepthSeqPendingQcCount; this.fullDepthSeqCompletedCount += builder.fullDepthSeqCompletedCount; - // informatics review - this.informaticsPendingCount += builder.informaticsPendingCount; - this.informaticsCompletedCount += builder.informaticsCompletedCount; - // draft report - this.draftReportPendingCount += builder.draftReportPendingCount; - this.draftReportCompletedCount += builder.draftReportCompletedCount; - // final report - this.finalReportPendingCount += builder.finalReportPendingCount; - this.finalReportCompletedCount += builder.finalReportCompletedCount; + this.analysisReviewPendingCount += builder.analysisReviewPendingCount; + this.analysisReviewCompletedCount += builder.analysisReviewCompletedCount; + this.releaseApprovalPendingCount += builder.releaseApprovalPendingCount; + this.releaseApprovalCompletedCount += builder.releaseApprovalCompletedCount; + this.releasePendingCount += builder.releasePendingCount; + this.releaseCompletedCount += builder.releaseCompletedCount; return this; } diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummaryRow.java b/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummaryRow.java index 2a4a3ed0..4399d6b2 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummaryRow.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/data/ProjectSummaryRow.java @@ -14,9 +14,9 @@ public class ProjectSummaryRow { private final ProjectSummaryField libraryPreparation; private final ProjectSummaryField libraryQualification; private final ProjectSummaryField fullDepthSequencing; - private final ProjectSummaryField informaticsReview; - private final ProjectSummaryField draftReport; - private final ProjectSummaryField finalReport; + private final ProjectSummaryField analysisReview; + private final ProjectSummaryField releaseApproval; + private final ProjectSummaryField release; private ProjectSummaryRow(Builder builder) { this.title = requireNonNull(builder.title); @@ -25,9 +25,9 @@ private ProjectSummaryRow(Builder builder) { this.libraryPreparation = builder.libraryPreparation; this.libraryQualification = builder.libraryQualification; this.fullDepthSequencing = builder.fullDepthSequencing; - this.informaticsReview = builder.informaticsReview; - this.draftReport = builder.draftReport; - this.finalReport = builder.finalReport; + this.analysisReview = builder.analysisReview; + this.releaseApproval = builder.releaseApproval; + this.release = builder.release; } public String getTitle() { @@ -54,16 +54,16 @@ public ProjectSummaryField getFullDepthSequencing() { return fullDepthSequencing; } - public ProjectSummaryField getInformaticsReview() { - return informaticsReview; + public ProjectSummaryField getAnalysisReview() { + return analysisReview; } - public ProjectSummaryField getDraftReport() { - return draftReport; + public ProjectSummaryField getReleaseApproval() { + return releaseApproval; } - public ProjectSummaryField getFinalReport() { - return finalReport; + public ProjectSummaryField getRelease() { + return release; } @JsonPOJOBuilder(withPrefix = "") @@ -74,9 +74,9 @@ public static class Builder { private ProjectSummaryField libraryPreparation; private ProjectSummaryField libraryQualification; private ProjectSummaryField fullDepthSequencing; - private ProjectSummaryField informaticsReview; - private ProjectSummaryField draftReport; - private ProjectSummaryField finalReport; + private ProjectSummaryField analysisReview; + private ProjectSummaryField releaseApproval; + private ProjectSummaryField release; public Builder title(String title) { this.title = title; @@ -108,18 +108,18 @@ public Builder fullDepthSequencing(ProjectSummaryField fullDepthSequencing) { return this; } - public Builder informaticsReview(ProjectSummaryField informaticsReview) { - this.informaticsReview = informaticsReview; + public Builder analysisReview(ProjectSummaryField analysisReview) { + this.analysisReview = analysisReview; return this; } - public Builder draftReport(ProjectSummaryField draftReport) { - this.draftReport = draftReport; + public Builder releaseApproval(ProjectSummaryField releaseApproval) { + this.releaseApproval = releaseApproval; return this; } - public Builder finalReport(ProjectSummaryField finalReport) { - this.finalReport = finalReport; + public Builder release(ProjectSummaryField release) { + this.release = release; return this; } diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/service/CaseService.java b/src/main/java/ca/on/oicr/gsi/dimsum/service/CaseService.java index 59f09d44..16fe84b9 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/service/CaseService.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/service/CaseService.java @@ -611,15 +611,15 @@ private ProjectSummaryRow getCompletedProjectSummaryRow(ProjectSummary projectSu .fullDepthSequencing( new ProjectSummaryField(projectSummary.getFullDepthSeqCompletedCount(), CaseFilterKey.COMPLETED.name(), CompletedGate.FULL_DEPTH_SEQUENCING.getLabel())) - .informaticsReview( - new ProjectSummaryField(projectSummary.getInformaticsCompletedCount(), - CaseFilterKey.COMPLETED.name(), CompletedGate.INFORMATICS_REVIEW.getLabel())) - .draftReport( - new ProjectSummaryField(projectSummary.getDraftReportCompletedCount(), - CaseFilterKey.COMPLETED.name(), CompletedGate.DRAFT_REPORT.getLabel())) - .finalReport( - new ProjectSummaryField(projectSummary.getFinalReportCompletedCount(), - CaseFilterKey.COMPLETED.name(), CompletedGate.FINAL_REPORT.getLabel())) + .analysisReview( + new ProjectSummaryField(projectSummary.getAnalysisReviewCompletedCount(), + CaseFilterKey.COMPLETED.name(), CompletedGate.ANALYSIS_REVIEW.getLabel())) + .releaseApproval( + new ProjectSummaryField(projectSummary.getReleaseApprovalCompletedCount(), + CaseFilterKey.COMPLETED.name(), CompletedGate.RELEASE_APPROVAL.getLabel())) + .release( + new ProjectSummaryField(projectSummary.getReleaseCompletedCount(), + CaseFilterKey.COMPLETED.name(), CompletedGate.RELEASE.getLabel())) .build(); } @@ -638,15 +638,15 @@ private ProjectSummaryRow getPendingProjectSummaryRow(ProjectSummary projectSumm .fullDepthSequencing( new ProjectSummaryField(projectSummary.getFullDepthSeqPendingCount(), CaseFilterKey.PENDING.name(), PendingState.FULL_DEPTH_SEQUENCING.getLabel())) - .informaticsReview( - new ProjectSummaryField(projectSummary.getInformaticsPendingCount(), - CaseFilterKey.PENDING.name(), PendingState.INFORMATICS_REVIEW.getLabel())) - .draftReport( - new ProjectSummaryField(projectSummary.getDraftReportPendingCount(), - CaseFilterKey.PENDING.name(), PendingState.DRAFT_REPORT.getLabel())) - .finalReport( - new ProjectSummaryField(projectSummary.getFinalReportPendingCount(), - CaseFilterKey.PENDING.name(), PendingState.FINAL_REPORT.getLabel())) + .analysisReview( + new ProjectSummaryField(projectSummary.getAnalysisReviewPendingCount(), + CaseFilterKey.PENDING.name(), PendingState.ANALYSIS_REVIEW.getLabel())) + .releaseApproval( + new ProjectSummaryField(projectSummary.getReleaseApprovalPendingCount(), + CaseFilterKey.PENDING.name(), PendingState.RELEASE_APPROVAL.getLabel())) + .release( + new ProjectSummaryField(projectSummary.getReleasePendingCount(), + CaseFilterKey.PENDING.name(), PendingState.RELEASE.getLabel())) .build(); } diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/CompletedGate.java b/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/CompletedGate.java index a747cb3b..9f1fba07 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/CompletedGate.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/CompletedGate.java @@ -7,7 +7,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; - import ca.on.oicr.gsi.cardea.data.Case; import ca.on.oicr.gsi.cardea.data.MetricCategory; import ca.on.oicr.gsi.cardea.data.Requisition; @@ -121,39 +120,39 @@ public boolean qualifySample(Sample sample, MetricCategory requestCategory) { } } }, - INFORMATICS_REVIEW("Informatics Review") { + ANALYSIS_REVIEW("Analysis Review") { @Override public boolean qualifyCase(Case kase) { - return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getInformaticsReviews); + return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getAnalysisReviews); } @Override public boolean qualifyRequisition(Requisition requisition) { - return Helpers.isCompletedRequisitionQc(requisition, Requisition::getInformaticsReviews); + return Helpers.isCompletedRequisitionQc(requisition, Requisition::getAnalysisReviews); } }, - DRAFT_REPORT("Draft Report") { + RELEASE_APPROVAL("Release Approval") { @Override public boolean qualifyCase(Case kase) { - return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getDraftReports); + return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getReleaseApprovals); } @Override public boolean qualifyRequisition(Requisition requisition) { - return Helpers.isCompletedRequisitionQc(requisition, Requisition::getDraftReports); + return Helpers.isCompletedRequisitionQc(requisition, Requisition::getReleaseApprovals); } }, - FINAL_REPORT("Final Report") { + RELEASE("Release") { @Override public boolean qualifyCase(Case kase) { - return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getFinalReports); + return Helpers.isCompletedRequisitionQc(kase.getRequisition(), Requisition::getReleases); } @Override public boolean qualifyRequisition(Requisition requisition) { - return Helpers.isCompletedRequisitionQc(requisition, Requisition::getFinalReports); + return Helpers.isCompletedRequisitionQc(requisition, Requisition::getReleases); } }; // @formatter:on diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/PendingState.java b/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/PendingState.java index 4b500eb4..3dbc3899 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/PendingState.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/service/filtering/PendingState.java @@ -6,7 +6,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; - import ca.on.oicr.gsi.cardea.data.Case; import ca.on.oicr.gsi.cardea.data.MetricCategory; import ca.on.oicr.gsi.cardea.data.Requisition; @@ -232,7 +231,7 @@ public boolean qualifySample(Sample sample, MetricCategory requestCategory) { } } }, - INFORMATICS_REVIEW("Informatics Review") { + ANALYSIS_REVIEW("Analysis Review") { @Override public boolean qualifyCase(Case kase) { return kase.getTests().stream().allMatch(Helpers.isCompleted(Test::getFullDepthSequencings)) @@ -241,32 +240,32 @@ public boolean qualifyCase(Case kase) { @Override public boolean qualifyRequisition(Requisition requisition) { - return requisition.getInformaticsReviews().isEmpty(); + return requisition.getAnalysisReviews().isEmpty(); } }, - DRAFT_REPORT("Draft Report") { + RELEASE_APPROVAL("Release Approval") { @Override public boolean qualifyCase(Case kase) { - return Helpers.isCompletedRequisitionQc(kase, Requisition::getInformaticsReviews) + return Helpers.isCompletedRequisitionQc(kase, Requisition::getAnalysisReviews) && this.qualifyRequisition(kase.getRequisition()); } @Override public boolean qualifyRequisition(Requisition requisition) { - return requisition.getDraftReports().isEmpty(); + return requisition.getReleaseApprovals().isEmpty(); } }, - FINAL_REPORT("Final Report") { + RELEASE("Release") { @Override public boolean qualifyCase(Case kase) { - return Helpers.isCompletedRequisitionQc(kase, Requisition::getDraftReports) + return Helpers.isCompletedRequisitionQc(kase, Requisition::getReleaseApprovals) && this.qualifyRequisition(kase.getRequisition()); } @Override public boolean qualifyRequisition(Requisition requisition) { - return requisition.getFinalReports().isEmpty(); + return requisition.getReleases().isEmpty(); } }; // @formatter:on diff --git a/src/main/java/ca/on/oicr/gsi/dimsum/util/reporting/reports/TglTrackingReport.java b/src/main/java/ca/on/oicr/gsi/dimsum/util/reporting/reports/TglTrackingReport.java index f5f0d6de..35ff2acf 100644 --- a/src/main/java/ca/on/oicr/gsi/dimsum/util/reporting/reports/TglTrackingReport.java +++ b/src/main/java/ca/on/oicr/gsi/dimsum/util/reporting/reports/TglTrackingReport.java @@ -122,7 +122,7 @@ private TglTrackingReport() { } private static String getCaseStatus(Case kase) { - if (CompletedGate.FINAL_REPORT.qualifyCase(kase)) { + if (CompletedGate.RELEASE.qualifyCase(kase)) { return "Completed"; } else if (kase.isStopped()) { return "Failed (%s)".formatted( diff --git a/src/main/resources/templates/case-report.html b/src/main/resources/templates/case-report.html index e2ab89c3..aea675f3 100644 --- a/src/main/resources/templates/case-report.html +++ b/src/main/resources/templates/case-report.html @@ -44,9 +44,9 @@

Full-Depth Seque
-

Informatics Review

+

Analysis Review

-
+
diff --git a/src/test/java/ca/on/oicr/gsi/dimsum/MockCase.java b/src/test/java/ca/on/oicr/gsi/dimsum/MockCase.java index 00f302dc..a3ed3e31 100644 --- a/src/test/java/ca/on/oicr/gsi/dimsum/MockCase.java +++ b/src/test/java/ca/on/oicr/gsi/dimsum/MockCase.java @@ -31,7 +31,7 @@ private static Case makeCase0() { final int caseNumber = 0; Case kase = makeCase("PRO1_0001", "WGTS assay 1", "PRO1", "REQ01", caseNumber); // Test 1 is pending extraction - ca.on.oicr.gsi.cardea.data.Test test1 = addTest(kase, 0, 1, "Normal WG", "WG"); + addTest(kase, 0, 1, "Normal WG", "WG"); // Test 2 is pending extraction QC ca.on.oicr.gsi.cardea.data.Test test2 = addTest(kase, 0, 2, "Tumour WG", "WG"); String test2ExtractionId = makeSampleId(caseNumber, 2, MetricCategory.EXTRACTION, 1); @@ -53,8 +53,7 @@ private static Case makeCase1() { String test1LibraryId = makeSampleId(caseNumber, 1, MetricCategory.LIBRARY_PREP, 1); addSample(test1.getLibraryPreparations(), test1LibraryId, null, null); // Test 2 is pending library qualification - ca.on.oicr.gsi.cardea.data.Test test2 = - addTest(kase, caseNumber, 2, "Tumour WG", "WG", true, true, false, false); + addTest(kase, caseNumber, 2, "Tumour WG", "WG", true, true, false, false); // Test 3 is pending library qualification QC ca.on.oicr.gsi.cardea.data.Test test3 = addTest(kase, caseNumber, 3, "Tumour WT", "WT", true, true, false, false); @@ -72,8 +71,7 @@ private static Case makeCase2() { String sampleId = makeSampleId(caseNumber, 1, MetricCategory.LIBRARY_QUALIFICATION, 1); addRunLibrary(test1.getLibraryQualifications(), sampleId, true, "Good", null); // Test 2 is pending full depth sequencing - ca.on.oicr.gsi.cardea.data.Test test2 = - addTest(kase, caseNumber, 2, "Tumour WG", "WG", true, true, true, false); + addTest(kase, caseNumber, 2, "Tumour WG", "WG", true, true, true, false); return kase; } @@ -95,7 +93,7 @@ private static Case makeCase3() { private static Case makeCase4() { final int caseNumber = 4; - // Case is pending informatics review + // Case is pending analysis review Case kase = makeCase("PRO3_0001", "Single Test", "PRO3", "REQ04", caseNumber); addTest(kase, caseNumber, 1, "Test", "WG", true, true, true, true); return kase; @@ -103,23 +101,23 @@ private static Case makeCase4() { private static Case makeCase5() { final int caseNumber = 5; - // Case is pending draft report + // Case is pending release approval Case kase = makeCase("PRO4_0001", "Single Test", "PRO4", "REQ04", caseNumber); addTest(kase, caseNumber, 1, "Test", "WG", true, true, true, true); Requisition requisition = kase.getRequisition(); - addRequisitionQc(requisition.getInformaticsReviews(), true); + addRequisitionQc(requisition.getAnalysisReviews(), true); return kase; } private static Case makeCase6() { final int caseNumber = 6; - // Case is pending final report + // Case is pending release Case kase = makeCase("PRO5_0001", "Single Test", "PRO5", "REQ04", caseNumber); addTest(kase, caseNumber, 1, "Test", "WG", true, true, true, true); addTest(kase, caseNumber, 2, "Test", "WG", true, true, true, true); Requisition requisition = kase.getRequisition(); - addRequisitionQc(requisition.getInformaticsReviews(), true); - addRequisitionQc(requisition.getDraftReports(), true); + addRequisitionQc(requisition.getAnalysisReviews(), true); + addRequisitionQc(requisition.getReleaseApprovals(), true); return kase; } @@ -127,8 +125,7 @@ private static Case makeCase7() { final int caseNumber = 7; Case kase = makeCase("PRO7_0001", "Single Test", "PRO7", "REQ07", caseNumber); // Test 1 is pending extraction - ca.on.oicr.gsi.cardea.data.Test test1 = - addTest(kase, caseNumber, 1, "Test", "WG", false, false, false, false); + addTest(kase, caseNumber, 1, "Test", "WG", false, false, false, false); return kase; } @@ -147,8 +144,7 @@ private static Case makeCase9() { final int caseNumber = 9; Case kase = makeCase("PRO9_0001", "Single Test", "PRO9", "REQ09", caseNumber); // Test 1 is pending library prep - ca.on.oicr.gsi.cardea.data.Test test1 = - addTest(kase, caseNumber, 1, "Test", "WG", true, false, false, false); + addTest(kase, caseNumber, 1, "Test", "WG", true, false, false, false); return kase; } @@ -167,8 +163,7 @@ private static Case makeCase11() { final int caseNumber = 11; Case kase = makeCase("PRO11_0001", "Single Test", "PRO11", "REQ11", caseNumber); // Test 1 is pending library qualification - ca.on.oicr.gsi.cardea.data.Test test1 = - addTest(kase, caseNumber, 1, "Test", "WG", true, true, false, false); + addTest(kase, caseNumber, 1, "Test", "WG", true, true, false, false); return kase; } @@ -220,8 +215,7 @@ private static Case makeCase16() { final int caseNumber = 16; Case kase = makeCase("PRO16_0001", "Single Test", "PRO16", "REQ16", caseNumber); // Test 1 is pending full depth sequencing - ca.on.oicr.gsi.cardea.data.Test test1 = - addTest(kase, caseNumber, 1, "Test", "WG", true, true, true, false); + addTest(kase, caseNumber, 1, "Test", "WG", true, true, true, false); return kase; } @@ -287,8 +281,7 @@ private static Case makeCase22() { kase.getReceipts().remove(0); String sampleId = makeSampleId(caseNumber, 1, MetricCategory.RECEIPT, 1); addSample(kase.getReceipts(), sampleId, null, null); - ca.on.oicr.gsi.cardea.data.Test test1 = - addTest(kase, caseNumber, 1, "Test", "WG", false, false, false, false); + addTest(kase, caseNumber, 1, "Test", "WG", false, false, false, false); return kase; } @@ -333,9 +326,9 @@ private static Requisition addRequisition(Case kase, int caseNumber, String name when(requisition.getId()).thenReturn(Long.valueOf(caseNumber)); when(requisition.isStopped()).thenReturn(caseNumber == 23); when(requisition.getName()).thenReturn(name); - when(requisition.getInformaticsReviews()).thenReturn(new ArrayList<>()); - when(requisition.getDraftReports()).thenReturn(new ArrayList<>()); - when(requisition.getFinalReports()).thenReturn(new ArrayList<>()); + when(requisition.getAnalysisReviews()).thenReturn(new ArrayList<>()); + when(requisition.getReleaseApprovals()).thenReturn(new ArrayList<>()); + when(requisition.getReleases()).thenReturn(new ArrayList<>()); when(kase.getRequisition()).thenReturn(requisition); return requisition; } diff --git a/src/test/java/ca/on/oicr/gsi/dimsum/service/filtering/CaseFilterTest.java b/src/test/java/ca/on/oicr/gsi/dimsum/service/filtering/CaseFilterTest.java index e0ddf5f1..46d0f5ad 100644 --- a/src/test/java/ca/on/oicr/gsi/dimsum/service/filtering/CaseFilterTest.java +++ b/src/test/java/ca/on/oicr/gsi/dimsum/service/filtering/CaseFilterTest.java @@ -1,8 +1,6 @@ package ca.on.oicr.gsi.dimsum.service.filtering; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - +import static org.junit.jupiter.api.Assertions.*; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -442,42 +440,43 @@ public void testPendingFullDepthDataReviewSampleFilter() { } @org.junit.jupiter.api.Test - public void testPendingInformaticsFilter() { + public void testPendingAnalysisFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.PENDING, PendingState.INFORMATICS_REVIEW.getLabel()); + new CaseFilter(CaseFilterKey.PENDING, PendingState.ANALYSIS_REVIEW.getLabel()); testFilterCases(filter, Arrays.asList(4)); } @org.junit.jupiter.api.Test - public void testPendingInformaticsRequisitionFilter() { + public void testPendingAnalysisRequisitionFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.PENDING, PendingState.INFORMATICS_REVIEW.getLabel()); + new CaseFilter(CaseFilterKey.PENDING, PendingState.ANALYSIS_REVIEW.getLabel()); testFilterRequisitions(filter, Arrays.asList(4L)); } @org.junit.jupiter.api.Test - public void testPendingDraftReportFilter() { - CaseFilter filter = new CaseFilter(CaseFilterKey.PENDING, PendingState.DRAFT_REPORT.getLabel()); + public void testPendingReleaseApprovalFilter() { + CaseFilter filter = + new CaseFilter(CaseFilterKey.PENDING, PendingState.RELEASE_APPROVAL.getLabel()); testFilterCases(filter, Arrays.asList(5)); } @org.junit.jupiter.api.Test - public void testPendingDraftReportRequisitionFilter() { + public void testPendingReleaseApprovalRequisitionFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.PENDING, PendingState.DRAFT_REPORT.getLabel()); + new CaseFilter(CaseFilterKey.PENDING, PendingState.RELEASE_APPROVAL.getLabel()); testFilterRequisitions(filter, Arrays.asList(5L)); } @org.junit.jupiter.api.Test - public void testPendingFinalReportFilter() { - CaseFilter filter = new CaseFilter(CaseFilterKey.PENDING, PendingState.FINAL_REPORT.getLabel()); + public void testPendingReleaseFilter() { + CaseFilter filter = new CaseFilter(CaseFilterKey.PENDING, PendingState.RELEASE.getLabel()); testFilterCases(filter, Arrays.asList(6)); } @org.junit.jupiter.api.Test - public void testPendingFinalReportRequisitionFilter() { + public void testPendingReleaseRequisitionFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.PENDING, PendingState.FINAL_REPORT.getLabel()); + new CaseFilter(CaseFilterKey.PENDING, PendingState.RELEASE.getLabel()); testFilterRequisitions(filter, Arrays.asList(6L)); } @@ -776,48 +775,48 @@ public void testCompletedFullDepthSampleFilter() { } @org.junit.jupiter.api.Test - public void testCompletedInformaticsFilter() { + public void testCompletedAnalysisFilter() { CaseFilter filter = new CaseFilter(CaseFilterKey.COMPLETED, - CompletedGate.INFORMATICS_REVIEW.getLabel()); + CompletedGate.ANALYSIS_REVIEW.getLabel()); testFilterCases(filter, Arrays.asList(5, 6)); } @org.junit.jupiter.api.Test - public void testCompletedInformaticsRequisitionFilter() { + public void testCompletedAnalysisRequisitionFilter() { CaseFilter filter = new CaseFilter(CaseFilterKey.COMPLETED, - CompletedGate.INFORMATICS_REVIEW.getLabel()); + CompletedGate.ANALYSIS_REVIEW.getLabel()); testFilterRequisitions(filter, Arrays.asList(5L, 6L)); } @org.junit.jupiter.api.Test - public void testCompletedDraftReportFilter() { + public void testCompletedReleaseApprovalFilter() { CaseFilter filter = new CaseFilter(CaseFilterKey.COMPLETED, - CompletedGate.DRAFT_REPORT.getLabel()); + CompletedGate.RELEASE_APPROVAL.getLabel()); testFilterCases(filter, Arrays.asList(6)); } @org.junit.jupiter.api.Test - public void testCompletedDraftReportRequisitionFilter() { + public void testCompletedReleaseApprovalRequisitionFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.COMPLETED, CompletedGate.DRAFT_REPORT.getLabel()); + new CaseFilter(CaseFilterKey.COMPLETED, CompletedGate.RELEASE_APPROVAL.getLabel()); testFilterRequisitions(filter, Arrays.asList(6L)); } @org.junit.jupiter.api.Test - public void testCompletedFinalReportFilter() { + public void testCompletedReleaseFilter() { CaseFilter filter = new CaseFilter(CaseFilterKey.COMPLETED, - CompletedGate.FINAL_REPORT.getLabel()); + CompletedGate.RELEASE.getLabel()); testFilterCases(filter, Collections.emptyList()); } @org.junit.jupiter.api.Test - public void testCompletedFinalReportRequisitionFilter() { + public void testCompletedReleaseRequisitionFilter() { CaseFilter filter = - new CaseFilter(CaseFilterKey.COMPLETED, CompletedGate.FINAL_REPORT.getLabel()); + new CaseFilter(CaseFilterKey.COMPLETED, CompletedGate.RELEASE.getLabel()); testFilterRequisitions(filter, Collections.emptyList()); } diff --git a/src/test/resources/testdata/assays.json b/src/test/resources/testdata/assays.json deleted file mode 100644 index 44908091..00000000 --- a/src/test/resources/testdata/assays.json +++ /dev/null @@ -1,938 +0,0 @@ -[ - { - "id": 2, - "name": "WGTS - 40XT/30XN", - "description": "Whole Genome and Transcriptome Sequencing (WGTS) - 40X Tumour, 30X Normal", - "version": "1.0", - "metric_categories": { - "FULL_DEPTH_SEQUENCING": [ - { - "name": "WT NovaSeq Sequencing (Dashi Call Ready Analysis)", - "sort_priority": 30, - "library_design": "WT", - "metrics": [ - { - "name": "Clusters Per Sample", - "sort_priority": 10, - "minimum": "80000000.0", - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "rRNA Contamination", - "sort_priority": 20, - "minimum": null, - "maximum": "35.0", - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LT" - }, - { - "name": "Mean Insert Size", - "sort_priority": 40, - "minimum": "150.0", - "maximum": null, - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Mapped to Coding", - "sort_priority": 30, - "minimum": "5.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - } - ] - }, - { - "name": "NovaSeq (SAV, MISO)", - "sort_priority": 10, - "library_design": null, - "metrics": [ - { - "name": "Bases Over Q30", - "sort_priority": 10, - "minimum": "75.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": 150, - "read_length_2": 150, - "threshold_type": "GT" - }, - { - "name": "Min Reads Delivered (PF)", - "sort_priority": 20, - "minimum": "0.52", - "maximum": null, - "units": "B/lane", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": "S1", - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Min Reads Delivered (PF)", - "sort_priority": 20, - "minimum": "0.26", - "maximum": null, - "units": "B/lane", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": "SP", - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Min Reads Delivered (PF)", - "sort_priority": 20, - "minimum": "1.6", - "maximum": null, - "units": "B/lane", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": "S4", - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Min Reads Delivered (PF)", - "sort_priority": 20, - "minimum": "1.32", - "maximum": null, - "units": "B/lane", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": "S2", - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Bases Over Q30", - "sort_priority": 10, - "minimum": "80.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": 100, - "read_length_2": 100, - "threshold_type": "GT" - }, - { - "name": "PhiX Control", - "sort_priority": 30, - "minimum": "0.1", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - } - ] - }, - { - "name": "WG NovaSeq Sequencing (Dashi Call Ready Analysis)", - "sort_priority": 20, - "library_design": "WG", - "metrics": [ - { - "name": "Duplication Rate", - "sort_priority": 30, - "minimum": null, - "maximum": "50.0", - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LE" - }, - { - "name": "Mean Insert Size", - "sort_priority": 20, - "minimum": "150.0", - "maximum": null, - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Mean Coverage Deduplicated", - "sort_priority": 10, - "minimum": "40.0", - "maximum": null, - "units": "X", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": "R", - "negate_tissue_type": true, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Mean Coverage Deduplicated", - "sort_priority": 10, - "minimum": "30.0", - "maximum": null, - "units": "X", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": "R", - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - } - ] - } - ], - "EXTRACTION": [ - { - "name": "Fluorometric Quantification (Qubit or Plate Reader)", - "sort_priority": 10, - "library_design": null, - "metrics": [ - { - "name": "Yield", - "sort_priority": 50, - "minimum": "220.0", - "maximum": null, - "units": "ng", - "tissue_material": "FFPE", - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "RNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Yield", - "sort_priority": 10, - "minimum": "200.0", - "maximum": null, - "units": "ng", - "tissue_material": "Blood", - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "DNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Yield", - "sort_priority": 40, - "minimum": "60.0", - "maximum": null, - "units": "ng", - "tissue_material": "Fresh Frozen", - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "RNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Yield", - "sort_priority": 30, - "minimum": "100.0", - "maximum": null, - "units": "ng", - "tissue_material": "FFPE", - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "DNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Yield", - "sort_priority": 20, - "minimum": "50.0", - "maximum": null, - "units": "ng", - "tissue_material": "Fresh Frozen", - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "DNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - } - ] - }, - { - "name": null, - "sort_priority": 0, - "library_design": null, - "metrics": [ - { - "name": "Appropriate volume", - "sort_priority": 20, - "minimum": "11.0", - "maximum": null, - "units": "\u03bcL", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Extraction proceeds to completion", - "sort_priority": 10, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - } - ] - } - ], - "RECEIPT": [ - { - "name": null, - "sort_priority": 0, - "library_design": null, - "metrics": [ - { - "name": "Marked H+E included if macrodissection is requested", - "sort_priority": 50, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - }, - { - "name": "Receipt temperature appropriate", - "sort_priority": 20, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - }, - { - "name": "Appropriate volume", - "sort_priority": 70, - "minimum": "12.0", - "maximum": null, - "units": "\u03bcL", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "RNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Appropriate volume", - "sort_priority": 60, - "minimum": "12.0", - "maximum": null, - "units": "\u03bcL", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": "DNA", - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Labelled correctly", - "sort_priority": 30, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - }, - { - "name": "Container intact", - "sort_priority": 10, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - }, - { - "name": "Appropriate amount of material (tissue/blood)", - "sort_priority": 40, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - } - ] - } - ], - "LIBRARY_QUALIFICATION": [ - { - "name": "WT MiSeq Sequencing (Dashi Single Lane Analysis)", - "sort_priority": 30, - "library_design": "WT", - "metrics": [ - { - "name": "rRNA Contamination", - "sort_priority": 30, - "minimum": null, - "maximum": "35.0", - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LT" - }, - { - "name": "Clusters Per Sample", - "sort_priority": 20, - "minimum": "10000.0", - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Mean Insert Size", - "sort_priority": 10, - "minimum": "150.0", - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - } - ] - }, - { - "name": "WG MiSeq Sequencing (Dashi Single Lane Analysis)", - "sort_priority": 20, - "library_design": "WG", - "metrics": [ - { - "name": "Clusters Per Sample", - "sort_priority": 30, - "minimum": "10000.0", - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Mean Insert Size", - "sort_priority": 10, - "minimum": "150.0", - "maximum": null, - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Duplication Rate", - "sort_priority": 20, - "minimum": null, - "maximum": "50.0", - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LE" - } - ] - }, - { - "name": "MiSeq Nano Flow Cell (SAV, MISO)", - "sort_priority": 10, - "library_design": null, - "metrics": [ - { - "name": "Bases Over Q30", - "sort_priority": 10, - "minimum": "80.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Min Clusters (PF)", - "sort_priority": 20, - "minimum": "500.0", - "maximum": null, - "units": "K/lane", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "PhiX Control", - "sort_priority": 30, - "minimum": "0.1", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - } - ] - } - ], - "INFORMATICS": [ - { - "name": "WG Informatics Review", - "sort_priority": 1, - "library_design": "WG", - "metrics": [ - { - "name": "Trimming; Minimum base quality Q", - "sort_priority": 30, - "minimum": "20.0", - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GT" - }, - { - "name": "Callability (exonic space); Target bases above 30X", - "sort_priority": 10, - "minimum": "75.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": "R", - "negate_tissue_type": true, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Inferred Tumour Purity", - "sort_priority": 20, - "minimum": "65.0", - "maximum": null, - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": "R", - "negate_tissue_type": true, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - } - ] - } - ], - "LIBRARY_PREP": [ - { - "name": "WT Library QC (Qubit, TS, FA)", - "sort_priority": 20, - "library_design": "WT", - "metrics": [ - { - "name": "Adaptor Contamination (TS, FA); Area under curve between lower size marker and 170bp", - "sort_priority": 40, - "minimum": null, - "maximum": "10.0", - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LT" - }, - { - "name": "Avg Size Distribution (TS, FA)", - "sort_priority": 30, - "minimum": "250.0", - "maximum": "500.0", - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BETWEEN" - }, - { - "name": "DV200 (Total RNA) (TS, FA); No cutoff, values logged", - "sort_priority": 10, - "minimum": null, - "maximum": null, - "units": null, - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BOOLEAN" - }, - { - "name": "Concentration (Qubit)", - "sort_priority": 20, - "minimum": "0.7", - "maximum": null, - "units": "ng/\u03bcL", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Concentration (Qubit)", - "sort_priority": 20, - "minimum": "4.0", - "maximum": null, - "units": "nM", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Adaptor Contamination (TS, FA); Adapter peak", - "sort_priority": 50, - "minimum": "130.0", - "maximum": "140.0", - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BETWEEN" - } - ] - }, - { - "name": "WG Library QC (Qubit, TS, FA)", - "sort_priority": 10, - "library_design": "WG", - "metrics": [ - { - "name": "Avg Size Distribution (TS, FA)", - "sort_priority": 20, - "minimum": "300.0", - "maximum": "700.0", - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BETWEEN" - }, - { - "name": "Adaptor Contamination (TS, FA); Adapter peak", - "sort_priority": 40, - "minimum": "130.0", - "maximum": "140.0", - "units": "bp", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "BETWEEN" - }, - { - "name": "Concentration (Qubit)", - "sort_priority": 10, - "minimum": "4.0", - "maximum": null, - "units": "nM", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Concentration (Qubit)", - "sort_priority": 10, - "minimum": "0.8", - "maximum": null, - "units": "ng/\u03bcL", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "GE" - }, - { - "name": "Adaptor Contamination (TS, FA); Area under curve between lower size marker and 170bp", - "sort_priority": 30, - "minimum": null, - "maximum": "10.0", - "units": "%", - "tissue_material": null, - "tissue_origin": null, - "tissue_type": null, - "negate_tissue_type": false, - "nucleic_acid_type": null, - "container_model": null, - "read_length": null, - "read_length_2": null, - "threshold_type": "LT" - } - ] - } - ] - } - } -] diff --git a/src/test/resources/testdata/cases.json b/src/test/resources/testdata/cases.json deleted file mode 100644 index 23492e57..00000000 --- a/src/test/resources/testdata/cases.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "id": "PROJ_1289_a2_Lv_M", - "donor_id": "SAM413576", - "project_names": ["PROJ"], - "assay_id": 2, - "tissue_origin": "Lv", - "tissue_type": "M", - "timepoint": null, - "receipt_ids": [ - "SAM413577", - "SAM413641", - "SAM413643", - "SAM413645", - "SAM413647" - ], - "assay_tests": [ - { - "name": "Normal WG", - "tissue_origin": "Ly", - "tissue_type": "R", - "timepoint": null, - "group_id": "proj-extnl_BC", - "library_design": "WG", - "targeted_sequencing": null, - "extraction_skipped": false, - "library_preparation_skipped": false, - "extraction_ids": ["SAM413593"], - "library_preparation_ids": ["LIB75802"], - "library_qualification_ids": ["5459_1_LDI73620", "5467_1_LDI73620"], - "full_depth_sequencing_ids": ["5476_1_LDI73620"] - }, - { - "name": "Tumour WT", - "tissue_origin": "Lv", - "tissue_type": "M", - "timepoint": null, - "group_id": "proj-extnl_1_5", - "library_design": "WT", - "targeted_sequencing": null, - "extraction_skipped": false, - "library_preparation_skipped": false, - "extraction_ids": ["SAM413648"], - "library_preparation_ids": ["LIB76197"], - "library_qualification_ids": ["5460_1_LDI73998"], - "full_depth_sequencing_ids": ["5481_1_LDI73998"] - }, - { - "name": "Tumour WG", - "tissue_origin": "Lv", - "tissue_type": "M", - "timepoint": null, - "group_id": "proj-extnl_1_5", - "library_design": "WG", - "targeted_sequencing": null, - "extraction_skipped": false, - "library_preparation_skipped": false, - "extraction_ids": ["SAM413735"], - "library_preparation_ids": ["LIB75803"], - "library_qualification_ids": ["5459_1_LDI73621", "5467_1_LDI73621"], - "full_depth_sequencing_ids": ["5476_1_LDI73621", "5540_1_LDI73621"] - } - ], - "requisition_id": 512, - "stopped": false - } -] diff --git a/src/test/resources/testdata/donors.json b/src/test/resources/testdata/donors.json deleted file mode 100644 index 41a72696..00000000 --- a/src/test/resources/testdata/donors.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "id": "SAM413576", - "name": "PROJ_1289", - "external_name": "proj-extnl-1" - }, - { - "id": "SAM123456", - "name": "NOCASE_0001", - "external_name": "nocase1-extnl" - } -] diff --git a/src/test/resources/testdata/projects.json b/src/test/resources/testdata/projects.json deleted file mode 100644 index 7121d03b..00000000 --- a/src/test/resources/testdata/projects.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "name": "PROJ", - "pipeline": "Research" - } -] \ No newline at end of file diff --git a/src/test/resources/testdata/receipts_nocase.json b/src/test/resources/testdata/receipts_nocase.json deleted file mode 100644 index 781f75eb..00000000 --- a/src/test/resources/testdata/receipts_nocase.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "sample_id": "SAM123457", - "oicr_internal_name": "NOCASE_0001_01", - "project_name": "NOCASE", - "donor_id": "SAM123456", - "requisitioned": true, - "requisition_id": 999, - "received": "2022-12-13" - }, - { - "sample_id": "SAM123458", - "oicr_internal_name": "NOCASE_0001_02", - "project_name": "NOCASE", - "donor_id": "SAM123456", - "requisitioned": false, - "requisition_id": null, - "received": "2022-12-13" - } -] diff --git a/src/test/resources/testdata/requisitions.json b/src/test/resources/testdata/requisitions.json deleted file mode 100644 index 519ca00f..00000000 --- a/src/test/resources/testdata/requisitions.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - { - "id": 512, - "name": "REQ-1", - "assay_id": 2, - "stopped": false, - "qc_groups": [ - { - "donor_id": "SAM413576", - "tissue_origin": "Ly", - "tissue_type": "R", - "library_design": "WG", - "group_id": null, - "purity": null, - "collapsed_coverage": null, - "callability": null - }, - { - "donor_id": "SAM413576", - "tissue_origin": "Lv", - "tissue_type": "M", - "library_design": "WT", - "group_id": null, - "purity": 65.0, - "collapsed_coverage": null, - "callability": null - }, - { - "donor_id": "SAM413576", - "tissue_origin": "Lv", - "tissue_type": "M", - "library_design": "WG", - "group_id": null, - "purity": 65.0, - "collapsed_coverage": null, - "callability": 87.6189 - } - ], - "informatics_reviews": [ - { - "qcable_type": "informatics_interpretation", - "qc_state": "Ready", - "qc_user": "Person", - "qc_date": "2021-08-10" - } - ], - "draft_reports": [], - "final_reports": [] - }, - { - "id": 999, - "name": "REQ-X", - "assay_id": null, - "stopped": false, - "qc_groups": [], - "informatics_reviews": [], - "draft_reports": [], - "final_reports": [] - } -] diff --git a/src/test/resources/testdata/runs.json b/src/test/resources/testdata/runs.json deleted file mode 100644 index f154d43e..00000000 --- a/src/test/resources/testdata/runs.json +++ /dev/null @@ -1,210 +0,0 @@ -[ - { - "id": 5459, - "name": "210805_M00753_0369_000000000-G8WYC", - "container_model": "PE-Micro MiSeq Flow Cell", - "joined_lanes": false, - "sequencing_parameters": "Micro 2\u00d7151", - "read_length": 151, - "read_length_2": 151, - "completion_date": "2021-08-06T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-08-09", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-09", - "percent_over_q30": 92.45, - "clusters_pf": 4835207, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 95, - "percent_over_q30_read2": 90, - "clusters_pf": 4835207, - "percent_phix_read1": 0.43, - "percent_phix_read2": 0.41 - } - } - }, - { - "id": 5460, - "name": "210805_M00146_0312_000000000-DD4CF", - "container_model": "PE-Nano MiSeq Flow Cell", - "joined_lanes": false, - "sequencing_parameters": "Nano 2\u00d7151", - "read_length": 151, - "read_length_2": 151, - "completion_date": "2021-08-06T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-08-06", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-09", - "percent_over_q30": 93.0, - "clusters_pf": 965014, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 96, - "percent_over_q30_read2": 90, - "clusters_pf": 965014, - "percent_phix_read1": 0.86, - "percent_phix_read2": 0.83 - } - } - }, - { - "id": 5467, - "name": "210809_M06816_0181_000000000-DD4R9", - "container_model": "PE-Nano MiSeq Flow Cell", - "joined_lanes": false, - "sequencing_parameters": "Nano 2\u00d7151", - "read_length": 151, - "read_length_2": 151, - "completion_date": "2021-08-10T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-08-10", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-11", - "percent_over_q30": 95.43, - "clusters_pf": 1435837, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 97, - "percent_over_q30_read2": 94, - "clusters_pf": 1435837, - "percent_phix_read1": 0.29, - "percent_phix_read2": 0.28 - } - } - }, - { - "id": 5476, - "name": "210810_A00469_0195_BH2YF2DMXY", - "container_model": "S2", - "joined_lanes": false, - "sequencing_parameters": "2\u00d7151", - "read_length": 151, - "read_length_2": 151, - "completion_date": "2021-08-12T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-08-12", - "data_review_state": "Passed", - "data_review_user": "Lab Manager", - "data_review_date": "2021-08-18", - "percent_over_q30": 89.1, - "clusters_pf": 4361124864, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 90, - "percent_over_q30_read2": 88, - "clusters_pf": 2163613696, - "percent_phix_read1": 0.66, - "percent_phix_read2": 0.65 - }, - "2": { - "lane_number": 2, - "percent_over_q30_read1": 90, - "percent_over_q30_read2": 88, - "clusters_pf": 2197511424, - "percent_phix_read1": 0.66, - "percent_phix_read2": 0.65 - } - } - }, - { - "id": 5481, - "name": "210811_A00469_0196_AHFL35DRXY", - "container_model": "S1", - "joined_lanes": false, - "sequencing_parameters": "2\u00d7101", - "read_length": 101, - "read_length_2": 101, - "completion_date": "2021-08-12T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-08-12", - "data_review_state": "Passed", - "data_review_user": "Lab Manager", - "data_review_date": "2021-08-18", - "percent_over_q30": 92.97, - "clusters_pf": 2087202688, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 95, - "percent_over_q30_read2": 91, - "clusters_pf": 1043381376, - "percent_phix_read1": 1.8, - "percent_phix_read2": 1.8 - }, - "2": { - "lane_number": 2, - "percent_over_q30_read1": 95, - "percent_over_q30_read2": 91, - "clusters_pf": 1043821312, - "percent_phix_read1": 1.9, - "percent_phix_read2": 1.8 - } - } - }, - { - "id": 5540, - "name": "210914_A00469_0210_BHLFMGDSX2", - "container_model": "S4", - "joined_lanes": false, - "sequencing_parameters": "2\u00d7151", - "read_length": 151, - "read_length_2": 151, - "completion_date": "2021-09-16T00:00:00-04:00", - "qc_state": "Ready", - "qc_user": "Technician One", - "qc_date": "2021-09-16", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-09-27", - "percent_over_q30": 89.47, - "clusters_pf": 11014852608, - "lanes": { - "1": { - "lane_number": 1, - "percent_over_q30_read1": 91, - "percent_over_q30_read2": 89, - "clusters_pf": 2789968896, - "percent_phix_read1": 0.66, - "percent_phix_read2": 0.64 - }, - "2": { - "lane_number": 2, - "percent_over_q30_read1": 91, - "percent_over_q30_read2": 88, - "clusters_pf": 2752289536, - "percent_phix_read1": 0.65, - "percent_phix_read2": 0.63 - }, - "3": { - "lane_number": 3, - "percent_over_q30_read1": 91, - "percent_over_q30_read2": 88, - "clusters_pf": 2734044928, - "percent_phix_read1": 0.66, - "percent_phix_read2": 0.63 - }, - "4": { - "lane_number": 4, - "percent_over_q30_read1": 90, - "percent_over_q30_read2": 88, - "clusters_pf": 2738548480, - "percent_phix_read1": 0.65, - "percent_phix_read2": 0.63 - } - } - } -] diff --git a/src/test/resources/testdata/samples.json b/src/test/resources/testdata/samples.json deleted file mode 100644 index dde176a3..00000000 --- a/src/test/resources/testdata/samples.json +++ /dev/null @@ -1,1099 +0,0 @@ -[ - { - "sample_id": "SAM413577", - "donor_id": "SAM413576", - "parent_id": "SAM413576", - "child_ids": ["SAM413593"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_nn_1-1", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": null, - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "Reference Tissue", - "sample_category": "tissue", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl-1", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T17:45:51-04:00", - "created": null, - "received": "2021-07-19", - "ghost": false, - "requisitioned": true, - "requisition_id": 512, - "qcable_type": "receipt_inspection", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413641", - "donor_id": "SAM413576", - "parent_id": "SAM413640", - "child_ids": ["SAM413735"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_LCM01", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": null, - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "Tissue Piece", - "sample_category": "tissue_processing", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:54:57-04:00", - "created": null, - "received": "2021-07-19", - "ghost": false, - "requisitioned": true, - "requisition_id": 512, - "qcable_type": "receipt_inspection", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413643", - "donor_id": "SAM413576", - "parent_id": "SAM413642", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_LCM02", - "external_name": "proj_extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": null, - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "Tissue Piece", - "sample_category": "tissue_processing", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj_extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:54:59-04:00", - "created": null, - "received": "2021-07-19", - "ghost": false, - "requisitioned": true, - "requisition_id": 512, - "qcable_type": "receipt_inspection", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413645", - "donor_id": "SAM413576", - "parent_id": "SAM413644", - "child_ids": ["SAM413648"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_LCM03", - "external_name": "proj_extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": null, - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "Tissue Piece", - "sample_category": "tissue_processing", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:55:00-04:00", - "created": null, - "received": "2021-07-19", - "ghost": false, - "requisitioned": true, - "requisition_id": 512, - "qcable_type": "receipt_inspection", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413647", - "donor_id": "SAM413576", - "parent_id": "SAM413646", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_LCM04", - "external_name": "proj_extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": null, - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "Tissue Piece", - "sample_category": "tissue_processing", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:55:01-04:00", - "created": null, - "received": "2021-07-19", - "ghost": false, - "requisitioned": true, - "requisition_id": 512, - "qcable_type": "receipt_inspection", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413593", - "donor_id": "SAM413576", - "parent_id": "SAM413577", - "child_ids": ["SAM413761"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_nn_1-1_D_S1", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "gDNA", - "sample_category": "stock", - "volume": "99", - "concentration": 298.0, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_BC", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:01:38-04:00", - "created": "2021-07-19", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "extraction", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "LIB75802", - "donor_id": "SAM413576", - "parent_id": "SAM413593", - "child_ids": ["LDI73620"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_PE_567_WG", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": "KAPA Hyper Prep", - "library_size": 567, - "barcodes": "GTTCTCGT", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library", - "sample_category": "library", - "volume": "18", - "concentration": 96.6, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_BC", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User Two", - "qc_date": "2021-07-22", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-22T17:54:19-04:00", - "created": "2021-07-22", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_preparation", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5459_1_LDI73620", - "donor_id": "SAM413576", - "parent_id": "LIB75802", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_PE_567_WG", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 567, - "barcodes": "GTTCTCGT", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_BC", - "sequencing_type": "low_pass", - "sequencing_run_id": 5459, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-09", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-09", - "entered": "2021-08-05T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_qualification", - "mean_insert": 303.2, - "clusters_per_sample": 116636, - "preliminary_clusters_per_sample": null, - "duplication_rate": 0.050600000000000006, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5467_1_LDI73620", - "donor_id": "SAM413576", - "parent_id": "LIB75802", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_PE_567_WG", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 567, - "barcodes": "GTTCTCGT", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_BC", - "sequencing_type": "low_pass", - "sequencing_run_id": 5467, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "data_review_date": "2021-08-11", - "entered": "2021-08-09T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_qualification", - "mean_insert": 298.9, - "clusters_per_sample": 150570, - "preliminary_clusters_per_sample": null, - "duplication_rate": 0.0236, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5476_1_LDI73620", - "donor_id": "SAM413576", - "parent_id": "LIB75802", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Ly_R_PE_567_WG", - "external_name": "proj-extnl", - "tissue_material": "Blood", - "tissue_origin": "Ly", - "tissue_type": "R", - "purity": null, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 567, - "barcodes": "GTTCTCGT", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_BC", - "sequencing_type": "full_depth", - "sequencing_run_id": 5476, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-16", - "data_review_state": "Passed", - "data_review_user": "Lab Manager", - "data_review_date": "2021-08-18", - "entered": "2021-08-10T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "full_depth_sequencing", - "mean_insert": 311.2, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": 7.2273000000000005, - "mean_coverage_deduplicated": 38.01823419365858, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413648", - "donor_id": "SAM413576", - "parent_id": "SAM413645", - "child_ids": ["SAM413677"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_R_S1", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "RNA", - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "whole RNA", - "sample_category": "stock", - "volume": "11.5", - "concentration": 25.8, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-19", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-19T18:56:00-04:00", - "created": "2021-07-19", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "extraction", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "LIB76197", - "donor_id": "SAM413576", - "parent_id": "SAM413648", - "child_ids": ["LDI73998"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_318_WT", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "RNA", - "library_design": "WT", - "library_kit": "TruSeq_Stranded_TotalRNA", - "library_size": 318, - "barcodes": "TCCGCGAA", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library", - "sample_category": "library", - "volume": "28", - "concentration": 3.76, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User Three", - "qc_date": "2021-07-27", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-27T19:57:50-04:00", - "created": "2021-07-27", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_preparation", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "LIB75803", - "donor_id": "SAM413576", - "parent_id": "SAM413735", - "child_ids": ["LDI73621"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_557_WG", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": "KAPA Hyper Prep", - "library_size": 557, - "barcodes": "TATCGGTC", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library", - "sample_category": "library", - "volume": "18", - "concentration": 193.0, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User Two", - "qc_date": "2021-07-22", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-22T17:54:19-04:00", - "created": "2021-07-22", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_preparation", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5460_1_LDI73998", - "donor_id": "SAM413576", - "parent_id": "LIB76197", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_318_WT", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "RNA", - "library_design": "WT", - "library_kit": null, - "library_size": 318, - "barcodes": "TCCGCGAA", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "low_pass", - "sequencing_run_id": 5460, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-09", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-09", - "entered": "2021-08-05T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_qualification", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5459_1_LDI73621", - "donor_id": "SAM413576", - "parent_id": "LIB75803", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_557_WG", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 557, - "barcodes": "TATCGGTC", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "low_pass", - "sequencing_run_id": 5459, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-09", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-09", - "entered": "2021-08-05T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_qualification", - "mean_insert": 325.9, - "clusters_per_sample": 41082, - "preliminary_clusters_per_sample": null, - "duplication_rate": 0.060899999999999996, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5467_1_LDI73621", - "donor_id": "SAM413576", - "parent_id": "LIB75803", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_557_WG", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 557, - "barcodes": "TATCGGTC", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "low_pass", - "sequencing_run_id": 5467, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-11", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-08-11", - "entered": "2021-08-09T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "library_qualification", - "mean_insert": 321.6, - "clusters_per_sample": 190218, - "preliminary_clusters_per_sample": null, - "duplication_rate": 0.058100000000000006, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5481_1_LDI73998", - "donor_id": "SAM413576", - "parent_id": "LIB76197", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_318_WT", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "RNA", - "library_design": "WT", - "library_kit": null, - "library_size": 318, - "barcodes": "TCCGCGAA", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "full_depth", - "sequencing_run_id": 5481, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-08-16", - "data_review_state": "Passed", - "data_review_user": "Lab Manager", - "data_review_date": "2021-08-18", - "entered": "2021-08-11T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "full_depth_sequencing", - "mean_insert": 780.5, - "clusters_per_sample": 152050691, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": 3.6213356920990045, - "mapped_to_coding": 27.0237, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5476_1_LDI73621", - "donor_id": "SAM413576", - "parent_id": "LIB75803", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_557_WG", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 557, - "barcodes": "TATCGGTC", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "full_depth", - "sequencing_run_id": 5476, - "sequencing_lane": 1, - "qc_state": "Not Ready", - "qc_reason": "Top-up Required", - "qc_user": "User Two", - "qc_date": "2021-09-08", - "data_review_state": "Pending", - "data_review_user": null, - "data_review_date": null, - "entered": "2021-08-10T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "full_depth_sequencing", - "mean_insert": 342.1, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": 13.6182, - "mean_coverage_deduplicated": 94.15859513285935, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "5540_1_LDI73621", - "donor_id": "SAM413576", - "parent_id": "LIB75803", - "child_ids": [], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_PE_557_WG", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": "WG", - "library_kit": null, - "library_size": 557, - "barcodes": "TATCGGTC", - "targeted_sequencing": null, - "sample_type": "Illumina PE Library Seq", - "sample_category": "sequenced_sample", - "volume": null, - "concentration": null, - "concentration_units": null, - "group_id": "proj-extnl_1_5", - "sequencing_type": "full_depth", - "sequencing_run_id": 5540, - "sequencing_lane": 1, - "qc_state": "Ready", - "qc_reason": "Passed", - "qc_user": "User Two", - "qc_date": "2021-09-22", - "data_review_state": "Passed", - "data_review_user": "QA Manager", - "data_review_date": "2021-09-27", - "entered": "2021-09-14T00:00:00-04:00", - "created": null, - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "full_depth_sequencing", - "mean_insert": 342.1, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": 13.6182, - "mean_coverage_deduplicated": 94.15859513285935, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - }, - { - "sample_id": "SAM413735", - "donor_id": "SAM413576", - "parent_id": "SAM413641", - "child_ids": ["SAM413763"], - "project_name": "PROJ", - "oicr_internal_name": "PROJ_1289_Lv_M_nn_1-1_D_S1", - "external_name": "proj-extnl", - "tissue_material": "Fresh Frozen", - "tissue_origin": "Lv", - "tissue_type": "M", - "purity": 65.0, - "collapsed_coverage": null, - "timepoint": null, - "secondary_id": null, - "nucleic_acid_type": "DNA", - "library_design": null, - "library_kit": null, - "library_size": null, - "barcodes": null, - "targeted_sequencing": null, - "sample_type": "gDNA", - "sample_category": "stock", - "volume": "11", - "concentration": 12.2, - "concentration_units": "NANOGRAMS_PER_MICROLITRE", - "group_id": "proj-extnl_1_5", - "sequencing_type": null, - "sequencing_run_id": null, - "sequencing_lane": null, - "qc_state": "Ready", - "qc_reason": "Ready", - "qc_user": "User One", - "qc_date": "2021-07-20", - "data_review_state": null, - "data_review_user": null, - "data_review_date": null, - "entered": "2021-07-20T16:38:35-04:00", - "created": "2021-07-20", - "received": null, - "ghost": false, - "requisitioned": false, - "requisition_id": 512, - "qcable_type": "extraction", - "mean_insert": null, - "clusters_per_sample": null, - "preliminary_clusters_per_sample": null, - "duplication_rate": null, - "mean_coverage_deduplicated": null, - "preliminary_mean_coverage_deduplicated": null, - "rrna_contamination": null, - "mapped_to_coding": null, - "raw_coverage": null, - "on_target_reads": null - } -] diff --git a/src/test/resources/testdata/timestamp b/src/test/resources/testdata/timestamp deleted file mode 100644 index 6bcc03ea..00000000 --- a/src/test/resources/testdata/timestamp +++ /dev/null @@ -1 +0,0 @@ -2022-05-26T14:33:28Z diff --git a/ts/case-report.ts b/ts/case-report.ts index 2c868110..ebdfce85 100644 --- a/ts/case-report.ts +++ b/ts/case-report.ts @@ -38,7 +38,7 @@ interface ReportSample { caseAssayId: number; } -interface ReportInformatics { +interface ReportAnalysisReview { requisition: Requisition; requisitionQcGroup: RequisitionQcGroup; requisitionQc: RequisitionQc | null; // null if no informatics review QC has been added @@ -304,7 +304,7 @@ function addAssayMismatchText(fragment: Node, object: ReportSample) { } const requisitionGateMetricsDefinition: TableDefinition< - ReportInformatics, + ReportAnalysisReview, Metric > = { disablePageControls: true, @@ -524,11 +524,11 @@ async function loadCase(caseId: string) { sampleGateMetricsDefinition, "fullDepthSequencingTableContainer" ).build(fullDepths); - const informatics = getReportInformatics(data); + const analysisReviews = getReportAnalysisReviews(data); new TableBuilder( requisitionGateMetricsDefinition, - "informaticsTableContainer" - ).build(informatics); + "analysisReviewTableContainer" + ).build(analysisReviews); setupPrint(data); } @@ -599,11 +599,11 @@ function getReportSamples( }, []); } -function getReportInformatics(kase: Case) { +function getReportAnalysisReviews(kase: Case) { const assay = siteConfig.assaysById[kase.assayId]; - const qc = !kase.requisition.informaticsReviews.length + const qc = !kase.requisition.analysisReviews.length ? null - : kase.requisition.informaticsReviews.reduce((accumulator, current) => { + : kase.requisition.analysisReviews.reduce((accumulator, current) => { if (!accumulator || current.qcDate > accumulator.qcDate) { return current; } else { @@ -613,14 +613,14 @@ function getReportInformatics(kase: Case) { return kase.requisition.qcGroups .filter((qcGroup) => qcGroup.donor.id === kase.donor.id) .flatMap((qcGroup) => { - return assay.metricCategories.INFORMATICS.filter((subcategory) => + return assay.metricCategories.ANALYSIS_REVIEW.filter((subcategory) => requisitionSubcategoryApplies(subcategory, qcGroup) - ).map((subcategory): ReportInformatics => { + ).map((subcategory): ReportAnalysisReview => { return { requisition: kase.requisition, requisitionQcGroup: qcGroup, requisitionQc: qc, - metricCategory: "INFORMATICS", + metricCategory: "ANALYSIS_REVIEW", metricSubcategory: subcategory, }; }); diff --git a/ts/data/assay.ts b/ts/data/assay.ts index bc8b6ae0..6f6407ca 100644 --- a/ts/data/assay.ts +++ b/ts/data/assay.ts @@ -4,7 +4,7 @@ export type MetricCategory = | "LIBRARY_PREP" | "LIBRARY_QUALIFICATION" | "FULL_DEPTH_SEQUENCING" - | "INFORMATICS"; + | "ANALYSIS_REVIEW"; export interface Metric { name: string; diff --git a/ts/data/case.ts b/ts/data/case.ts index d9fd5479..2d840804 100644 --- a/ts/data/case.ts +++ b/ts/data/case.ts @@ -3,7 +3,6 @@ import { addLink, makeIcon, styleText, - addMisoIcon, makeNameDiv, addNaText, addTextDiv, @@ -21,7 +20,6 @@ import { } from "./requisition"; import { Tooltip } from "../component/tooltip"; import { caseFilters, latestActivitySort } from "../component/table-components"; -import { makeCopyButton } from "../util/html-utils"; const dayMillis = 1000 * 60 * 60 * 24; @@ -384,10 +382,10 @@ export const caseDefinition: TableDefinition = { }, }, { - title: "Informatics Review", + title: "Analysis Review", addParentContents(kase, fragment) { if ( - handleNaRequisitionPhase(kase, (x) => x.informaticsReviews, fragment) + handleNaRequisitionPhase(kase, (x) => x.analysisReviews, fragment) ) { return; } @@ -396,7 +394,7 @@ export const caseDefinition: TableDefinition = { ); addRequisitionIcons( kase.requisition, - (requisition) => requisition.informaticsReviews, + (requisition) => requisition.analysisReviews, sequencingComplete, fragment ); @@ -404,47 +402,49 @@ export const caseDefinition: TableDefinition = { getCellHighlight(kase) { return getRequisitionPhaseHighlight( kase, - (requisition) => requisition.informaticsReviews + (requisition) => requisition.analysisReviews ); }, }, { - title: "Draft Report", + title: "Release Approval", addParentContents(kase, fragment) { - if (handleNaRequisitionPhase(kase, (x) => x.draftReports, fragment)) { + if ( + handleNaRequisitionPhase(kase, (x) => x.releaseApprovals, fragment) + ) { return; } - const informaticsComplete = requisitionPhaseComplete( + const analysisReviewComplete = requisitionPhaseComplete( kase.requisition, - (requisition) => requisition.informaticsReviews + (requisition) => requisition.analysisReviews ); addRequisitionIcons( kase.requisition, - (requisition) => requisition.draftReports, - informaticsComplete, + (requisition) => requisition.releaseApprovals, + analysisReviewComplete, fragment ); }, getCellHighlight(kase) { return getRequisitionPhaseHighlight( kase, - (requisition) => requisition.draftReports + (requisition) => requisition.releaseApprovals ); }, }, { - title: "Final Report", + title: "Release", addParentContents(kase, fragment) { - if (handleNaRequisitionPhase(kase, (x) => x.finalReports, fragment)) { + if (handleNaRequisitionPhase(kase, (x) => x.releases, fragment)) { return; } const draftComplete = requisitionPhaseComplete( kase.requisition, - (requisition) => requisition.draftReports + (requisition) => requisition.releaseApprovals ); addRequisitionIcons( kase.requisition, - (requisition) => requisition.finalReports, + (requisition) => requisition.releases, draftComplete, fragment ); @@ -452,7 +452,7 @@ export const caseDefinition: TableDefinition = { getCellHighlight(kase) { return getRequisitionPhaseHighlight( kase, - (requisition) => requisition.finalReports + (requisition) => requisition.releases ); }, }, @@ -739,11 +739,11 @@ function getElapsedMessage(kase: Case, startDateString: string) { if ( requisitionPhaseComplete( kase.requisition, - (requisition) => requisition.finalReports + (requisition) => requisition.releases ) ) { endDate = new Date( - kase.requisition.finalReports + kase.requisition.releases .map((qc) => qc.qcDate) .reduce((previous, current) => previous > current ? previous : current diff --git a/ts/data/project-summary-row.ts b/ts/data/project-summary-row.ts index 79f09df7..6874ba13 100644 --- a/ts/data/project-summary-row.ts +++ b/ts/data/project-summary-row.ts @@ -16,9 +16,9 @@ export interface ProjectSummaryRow { libraryPreparation: ProjectSummaryField; libraryQualification: ProjectSummaryField; fullDepthSequencing: ProjectSummaryField; - informaticsReview: ProjectSummaryField; - draftReport: ProjectSummaryField; - finalReport: ProjectSummaryField; + analysisReview: ProjectSummaryField; + releaseApproval: ProjectSummaryField; + release: ProjectSummaryField; } export function getProjectSummaryRowDefinition( @@ -96,42 +96,38 @@ export function getProjectSummaryRowDefinition( }, }, { - title: "Informatics Review", + title: "Analysis Review", addParentContents(projectSummaryRow, fragment) { displayCount( - "Informatics Reviews", - projectSummaryRow.informaticsReview, + "Analysis Reviews", + projectSummaryRow.analysisReview, fragment ); }, getCellHighlight(projectSummaryRow) { - return !projectSummaryRow.informaticsReview ? "na" : null; + return !projectSummaryRow.analysisReview ? "na" : null; }, }, { - title: "Draft Report", + title: "Release Approval", addParentContents(projectSummaryRow, fragment) { displayCount( - "Draft Reports", - projectSummaryRow.draftReport, + "Release Approvals", + projectSummaryRow.releaseApproval, fragment ); }, getCellHighlight(projectSummaryRow) { - return !projectSummaryRow.draftReport ? "na" : null; + return !projectSummaryRow.releaseApproval ? "na" : null; }, }, { - title: "Final Report", + title: "Release", addParentContents(projectSummaryRow, fragment) { - displayCount( - "Final Reports", - projectSummaryRow.finalReport, - fragment - ); + displayCount("Releases", projectSummaryRow.release, fragment); }, getCellHighlight(projectSummaryRow) { - return !projectSummaryRow.finalReport ? "na" : null; + return !projectSummaryRow.release ? "na" : null; }, }, ]; diff --git a/ts/data/project.ts b/ts/data/project.ts index 0023ef00..f3b57cbe 100644 --- a/ts/data/project.ts +++ b/ts/data/project.ts @@ -20,12 +20,12 @@ export interface ProjectSummary { fullDepthSeqPendingCount: number; fullDepthSeqPendingQcCount: number; fullDepthSeqCompletedCount: number; - informaticsPendingCount: number; - informaticsCompletedCount: number; - draftReportPendingCount: number; - draftReportCompletedCount: number; - finalReportPendingCount: number; - finalReportCompletedCount: number; + analysisReviewPendingCount: number; + analysisReviewCompletedCount: number; + releaseApprovalPendingCount: number; + releaseApprovalCompletedCount: number; + releasePendingCount: number; + releaseCompletedCount: number; } export const projectDefinition: TableDefinition = { @@ -140,37 +140,37 @@ export const projectDefinition: TableDefinition = { }, }, { - title: "Informatics Reviewed", + title: "Analysis Reviewed", addParentContents(projectSummary, fragment) { fragment.appendChild( displayFilteredProject( - projectSummary.informaticsCompletedCount, + projectSummary.analysisReviewCompletedCount, projectSummary.name, - "Informatics Review" + "Analysis Review" ) ); }, }, { - title: "Report Drafted", + title: "Release Approved", addParentContents(projectSummary, fragment) { fragment.appendChild( displayFilteredProject( - projectSummary.draftReportCompletedCount, + projectSummary.releaseApprovalCompletedCount, projectSummary.name, - "Draft Report" + "Release Approval" ) ); }, }, { - title: "Report Finalized", + title: "Released", addParentContents(projectSummary, fragment) { fragment.appendChild( displayFilteredProject( - projectSummary.finalReportCompletedCount, + projectSummary.releaseCompletedCount, projectSummary.name, - "Final Report" + "Release" ) ); }, diff --git a/ts/data/requisition.ts b/ts/data/requisition.ts index 314f7f41..5f1db98e 100644 --- a/ts/data/requisition.ts +++ b/ts/data/requisition.ts @@ -48,9 +48,9 @@ export interface Requisition { stopped: boolean; stopReason?: string; qcGroups: RequisitionQcGroup[]; - informaticsReviews: RequisitionQc[]; - draftReports: RequisitionQc[]; - finalReports: RequisitionQc[]; + analysisReviews: RequisitionQc[]; + releaseApprovals: RequisitionQc[]; + releases: RequisitionQc[]; latestActivityDate?: string; } @@ -96,38 +96,38 @@ const latestActivityColumn: ColumnDefinition = { }, }; -export const informaticsReviewDefinition: TableDefinition = { +export const analysisReviewDefinition: TableDefinition = { queryUrl: urls.rest.requisitions, defaultSort: latestActivitySort, filters: caseFilters, staticActions: [legendAction], generateColumns: (data?: Requisition[]) => [ - qcStatusColumn((requisition) => requisition.informaticsReviews), + qcStatusColumn((requisition) => requisition.analysisReviews), requisitionColumn, ...generateMetricColumns(data), latestActivityColumn, ], }; -export const draftReportDefinition: TableDefinition = { +export const releaseApprovalDefinition: TableDefinition = { queryUrl: urls.rest.requisitions, defaultSort: latestActivitySort, filters: caseFilters, staticActions: [legendAction], generateColumns: () => [ - qcStatusColumn((requisition) => requisition.draftReports), + qcStatusColumn((requisition) => requisition.releaseApprovals), requisitionColumn, latestActivityColumn, ], }; -export const finalReportDefinition: TableDefinition = { +export const releaseDefinition: TableDefinition = { queryUrl: urls.rest.requisitions, defaultSort: latestActivitySort, filters: caseFilters, staticActions: [legendAction], generateColumns: () => [ - qcStatusColumn((requisition) => requisition.finalReports), + qcStatusColumn((requisition) => requisition.releases), requisitionColumn, latestActivityColumn, ], @@ -142,7 +142,7 @@ function generateMetricColumns( const assayIds = requisitions .map((requisition) => requisition.assayId || 0) .filter((assayId) => assayId > 0); - const metricNames = getMetricNames("INFORMATICS", assayIds); + const metricNames = getMetricNames("ANALYSIS_REVIEW", assayIds); return metricNames.map((metricName) => { return { title: metricName, @@ -323,7 +323,7 @@ function getMatchingMetrics( return null; } return siteConfig.assaysById[requisition.assayId].metricCategories[ - "INFORMATICS" + "ANALYSIS_REVIEW" ] .filter((subcategory) => subcategoryApplies(subcategory, qcGroup)) .flatMap((subcategory) => subcategory.metrics) diff --git a/ts/data/test.ts b/ts/data/test.ts index dc0271f4..90403e04 100644 --- a/ts/data/test.ts +++ b/ts/data/test.ts @@ -1,7 +1,6 @@ import { legendAction, TableDefinition } from "../component/table-builder"; import { addLink, - makeIcon, styleText, addMisoIcon, makeNameDiv, @@ -15,7 +14,6 @@ import { Test, Donor, Project, - makeSampleTooltip, samplePhaseComplete, addConstructionIcon, addSpace, @@ -25,7 +23,6 @@ import { handleNaSamplePhase, addSampleIcons, } from "./case"; -import { Assay } from "./assay"; import { Sample } from "./sample"; import { Requisition } from "./requisition"; import { Tooltip } from "../component/tooltip"; diff --git a/ts/details.ts b/ts/details.ts index c71d4b25..c25581b0 100644 --- a/ts/details.ts +++ b/ts/details.ts @@ -1,9 +1,9 @@ import { caseDefinition } from "./data/case"; import { testDefinition } from "./data/test"; import { - draftReportDefinition, - finalReportDefinition, - informaticsReviewDefinition, + releaseApprovalDefinition, + releaseDefinition, + analysisReviewDefinition, } from "./data/requisition"; import { extractionDefinition, @@ -42,9 +42,9 @@ const tables = [ getFullDepthSequencingsDefinition(urls.rest.fullDepthSequencings, true) ) ), - new Pair("Informatics Review", () => reload(informaticsReviewDefinition)), - new Pair("Draft Reports", () => reload(draftReportDefinition)), - new Pair("Final Reports", () => reload(finalReportDefinition)), + new Pair("Analysis Reviews", () => reload(analysisReviewDefinition)), + new Pair("Release Approvals", () => reload(releaseApprovalDefinition)), + new Pair("Releases", () => reload(releaseDefinition)), ]; // tabbed interface defaults to the cases table diff --git a/ts/project-details.ts b/ts/project-details.ts index a9fa86a9..ad25003c 100644 --- a/ts/project-details.ts +++ b/ts/project-details.ts @@ -1,9 +1,9 @@ import { caseDefinition } from "./data/case"; import { testDefinition } from "./data/test"; import { - draftReportDefinition, - finalReportDefinition, - informaticsReviewDefinition, + releaseApprovalDefinition, + releaseDefinition, + analysisReviewDefinition, } from "./data/requisition"; import { extractionDefinition, @@ -166,9 +166,9 @@ const tables = [ getFullDepthSequencingsDefinition(urls.rest.fullDepthSequencings, true) ) ), - new Pair("Informatics Reviews", () => reload(informaticsReviewDefinition)), - new Pair("Draft Reports", () => reload(draftReportDefinition)), - new Pair("Final Reports", () => reload(finalReportDefinition)), + new Pair("Analysis Reviews", () => reload(analysisReviewDefinition)), + new Pair("Release Approvals", () => reload(releaseApprovalDefinition)), + new Pair("Releases", () => reload(releaseDefinition)), ]; // tabbed interface defaults to the cases table