-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add mip rna messages (#3902) (patch)
### Added - crud functions to retrieve dna cases related to an case. - Logic for generation of delivery messages for mip-rna.
- Loading branch information
1 parent
0fadd58
commit 5aba7cb
Showing
15 changed files
with
294 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,25 @@ | ||
from cg.services.delivery_message.messages.analysis_scout_message import AnalysisScoutMessage | ||
from cg.services.delivery_message.messages.analysis_scout_message import ( | ||
AnalysisScoutMessage, | ||
) | ||
from cg.services.delivery_message.messages.covid_message import CovidMessage | ||
from cg.services.delivery_message.messages.fastq_message import FastqMessage | ||
from cg.services.delivery_message.messages.fastq_scout_message import FastqScoutMessage | ||
from cg.services.delivery_message.messages.fastq_analysis_scout_message import ( | ||
FastqAnalysisScoutMessage, | ||
) | ||
from cg.services.delivery_message.messages.microsalt_mwr_message import MicrosaltMwrMessage | ||
from cg.services.delivery_message.messages.microsalt_mwx_message import MicrosaltMwxMessage | ||
from cg.services.delivery_message.messages.fastq_message import FastqMessage | ||
from cg.services.delivery_message.messages.fastq_scout_message import FastqScoutMessage | ||
from cg.services.delivery_message.messages.microsalt_mwr_message import ( | ||
MicrosaltMwrMessage, | ||
) | ||
from cg.services.delivery_message.messages.microsalt_mwx_message import ( | ||
MicrosaltMwxMessage, | ||
) | ||
from cg.services.delivery_message.messages.scout_message import ScoutMessage | ||
from cg.services.delivery_message.messages.statina_message import StatinaMessage | ||
from cg.services.delivery_message.messages.rna_delivery_message import ( | ||
RNAScoutStrategy, | ||
RNAFastqStrategy, | ||
RNAAnalysisStrategy, | ||
RNAFastqAnalysisStrategy, | ||
RNAUploadMessageStrategy, | ||
RNADeliveryMessage, | ||
) |
81 changes: 81 additions & 0 deletions
81
cg/services/delivery_message/messages/rna_delivery_message.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
from abc import abstractmethod, ABC | ||
|
||
from cg.services.delivery_message.messages.utils import ( | ||
get_scout_links_row_separated, | ||
get_caesar_delivery_path, | ||
) | ||
from cg.store.models import Case | ||
|
||
|
||
class RNAUploadMessageStrategy(ABC): | ||
"""Abstract base class for delivery message strategies.""" | ||
|
||
@abstractmethod | ||
def get_file_upload_message(self, delivery_path: str) -> str: | ||
"""Generate the file upload message part.""" | ||
pass | ||
|
||
|
||
class RNAAnalysisStrategy(RNAUploadMessageStrategy): | ||
def get_file_upload_message(self, delivery_path: str) -> str: | ||
return ( | ||
f"The analysis files are currently being uploaded to your inbox on Caesar:\n\n" | ||
f"{delivery_path}" | ||
) | ||
|
||
|
||
class RNAFastqAnalysisStrategy(RNAUploadMessageStrategy): | ||
def get_file_upload_message(self, delivery_path: str) -> str: | ||
return ( | ||
f"The fastq and analysis files are currently being uploaded to your inbox on Caesar:\n\n" | ||
f"{delivery_path}" | ||
) | ||
|
||
|
||
class RNAFastqStrategy(RNAUploadMessageStrategy): | ||
def get_file_upload_message(self, delivery_path: str) -> str: | ||
return ( | ||
f"The fastq files are currently being uploaded to your inbox on Caesar:\n\n" | ||
f"{delivery_path}" | ||
) | ||
|
||
|
||
class RNAScoutStrategy(RNAUploadMessageStrategy): | ||
def get_file_upload_message(self, delivery_path: str) -> str: | ||
return "" # No file upload message needed for this case. | ||
|
||
|
||
class RNADeliveryMessage: | ||
def __init__(self, store, strategy: RNAUploadMessageStrategy): | ||
self.store = store | ||
self.strategy = strategy | ||
|
||
def create_message(self, cases: list[Case]) -> str: | ||
if len(cases) == 1: | ||
return self._get_case_message(cases[0]) | ||
return self._get_cases_message(cases) | ||
|
||
def _get_case_message(self, case: Case) -> str: | ||
related_uploaded_dna_cases = self.store.get_uploaded_related_dna_cases(rna_case=case) | ||
scout_links = get_scout_links_row_separated(cases=related_uploaded_dna_cases) | ||
delivery_path = get_caesar_delivery_path(case) | ||
file_upload_message = self.strategy.get_file_upload_message(delivery_path) | ||
return ( | ||
f"Hello,\n\n" | ||
f"The analysis for case {case.name} has been uploaded to the corresponding DNA case(s) on Scout at:\n\n" | ||
f"{scout_links}\n\n" | ||
f"{file_upload_message}" | ||
) | ||
|
||
def _get_cases_message(self, cases: list[Case]) -> str: | ||
message = "Hello,\n\n" | ||
for case in cases: | ||
related_uploaded_dna_cases = self.store.get_uploaded_related_dna_cases(rna_case=case) | ||
scout_links = get_scout_links_row_separated(cases=related_uploaded_dna_cases) | ||
message += ( | ||
f"The analysis for case {case.name} has been uploaded to the corresponding DNA case(s) on Scout at:\n\n" | ||
f"{scout_links}\n\n" | ||
) | ||
delivery_path = get_caesar_delivery_path(cases[0]) | ||
file_upload_message = self.strategy.get_file_upload_message(delivery_path) | ||
return message + file_upload_message |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.