Skip to content

Commit

Permalink
Merge branch 'improve-order-flow-main' into move-validation-service
Browse files Browse the repository at this point in the history
  • Loading branch information
diitaz93 committed Jan 17, 2025
2 parents 8c013fb + f91d98e commit a7a9bef
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
1 change: 1 addition & 0 deletions cg/constants/orderforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,5 @@ def get_current_orderform_version(order_form: str) -> str:
"LaboratorieMedicinskt Centrum Gotland": "621 84 Visby",
"Unilabs Eskilstuna Laboratorium": "631 88 Eskilstuna",
"Norrland University Hospital": "901 85 Umeå",
"Länssjukhuset Sundsvall": "856 43 Sundsvall",
}
29 changes: 28 additions & 1 deletion cg/services/orders/validation/workflows/mutant/models/sample.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from datetime import date

from pydantic import BeforeValidator, PrivateAttr, field_serializer
from pydantic import BeforeValidator, PrivateAttr, field_serializer, model_validator
from typing_extensions import Annotated

from cg.constants.orderforms import ORIGINAL_LAB_ADDRESSES, REGION_CODES
from cg.models.orders.sample_base import ControlEnum, PriorityEnum
from cg.services.orders.validation.constants import ElutionBuffer, ExtractionMethod
from cg.services.orders.validation.models.sample import Sample
Expand All @@ -22,17 +23,43 @@ class MutantSample(Sample):
control: Annotated[ControlEnum, BeforeValidator(parse_control)] = ControlEnum.not_control
elution_buffer: Annotated[ElutionBuffer, BeforeValidator(parse_buffer)]
extraction_method: Annotated[ExtractionMethod, BeforeValidator(parse_extraction_method)]
_lab_code: str = PrivateAttr(default="SE100 Karolinska")
organism: str
original_lab: OriginalLab
original_lab_address: str
pre_processing_method: PreProcessingMethod
primer: Primer
priority: PriorityEnum
quantity: int | None = None
reference_genome: str
region: Region
region_code: str
selection_criteria: SelectionCriteria
_verified_organism: str | None = PrivateAttr(default=None)

@model_validator(mode="before")
@classmethod
def set_original_lab_address(cls, data: any):
if isinstance(data, dict):
is_set = bool(data.get("original_lab_address"))
if not is_set:
data["original_lab_address"] = ORIGINAL_LAB_ADDRESSES[data["original_lab"]]
return data

@model_validator(mode="before")
@classmethod
def set_region_code(cls, data: any):
if isinstance(data, dict):
is_set = bool(data.get("region_code"))
if not is_set:
data["region_code"] = REGION_CODES[data["region"]]
return data

@field_serializer("collection_date")
def serialize_collection_date(self, value: date) -> str:
return value.isoformat()

def model_dump(self, **kwargs) -> dict:
data = super().model_dump(**kwargs)
data["lab_code"] = self._lab_code
return data

0 comments on commit a7a9bef

Please sign in to comment.