felicity-lims/felicity/apps/reflex/schemas.py
2023-05-11 20:32:50 +02:00

194 lines
3.9 KiB
Python

from typing import List, Optional
from apps.analysis.schemas import Analysis, SampleType
from apps.common.schemas import BaseAuditModel
#
# ReflexRule Schema
#
# Shared properties
class ReflexRuleBase(BaseAuditModel):
name: str
description: str
sample_types: Optional[List[SampleType]]
# Additional properties to return via API
class ReflexRule(ReflexRuleBase):
uid: str
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexRuleCreate(ReflexRuleBase):
pass
# Properties to receive via API on update
class ReflexRuleUpdate(ReflexRuleBase):
pass
#
# ReflexBrainAddition Schema
#
# Shared properties
class ReflexBrainAdditionBase(BaseAuditModel):
analysis_uid: str
analysis: Optional[Analysis]
reflex_brain_uid: str
reflex_brain: Optional["ReflexBrain"]
count: int
# Additional properties to return via API
class ReflexBrainAddition(ReflexBrainAdditionBase):
uid: str
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexBrainAdditionCreate(ReflexBrainAdditionBase):
pass
# Properties to receive via API on update
class ReflexBrainAdditionUpdate(ReflexBrainAdditionBase):
pass
#
# ReflexBrainFinal Schema
#
# Shared properties
class ReflexBrainFinalBase(BaseAuditModel):
analysis_uid: str
analysis: Optional[Analysis]
reflex_brain_uid: str
reflex_brain: Optional["ReflexBrain"]
value: str
# Additional properties to return via API
class ReflexBrainFinal(ReflexBrainFinalBase):
uid: str
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexBrainFinalCreate(ReflexBrainFinalBase):
pass
# Properties to receive via API on update
class ReflexBrainFinalUpdate(ReflexBrainFinalBase):
pass
#
# ReflexBrainCriteria Schema
#
# Shared properties
class ReflexBrainCriteriaBase(BaseAuditModel):
analysis_uid: str
analysis: Optional[Analysis]
reflex_brain_uid: str
reflex_brain: Optional["ReflexBrain"]
value: str
# Additional properties to return via API
class ReflexBrainCriteria(ReflexBrainCriteriaBase):
uid: str
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexBrainCriteriaCreate(ReflexBrainCriteriaBase):
pass
# Properties to receive via API on update
class ReflexBrainCriteriaUpdate(ReflexBrainCriteriaBase):
pass
#
# ReflexBrain Schema
#
# Shared properties
class ReflexBrainBase(BaseAuditModel):
reflex_action_uid: str
reflex_action: Optional["ReflexAction"]
description: str | None
analyses_values: Optional[List[ReflexBrainCriteria]]
add_new: Optional[List[ReflexBrainAddition]]
finalise: Optional[List[ReflexBrainFinal]]
# Additional properties to return via API
class ReflexBrain(ReflexBrainBase):
uid: str| None = None
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexBrainCreate(ReflexBrainBase):
pass
# Properties to receive via API on update
class ReflexBrainUpdate(ReflexBrainBase):
pass
#
# ReflexBrain Schema
#
# Shared properties
class ReflexActionBase(BaseAuditModel):
level: int
description: str | None
reflex_rule_uid: str
reflex_rule: Optional[ReflexRule]
brains: Optional[List[ReflexBrain]]
analyses: Optional[List[Analysis]]
sample_type_uid: str| None
sample_type: Optional[SampleType]
# Additional properties to return via API
class ReflexAction(ReflexActionBase):
uid: str| None = None
class Config:
orm_mode = True
# Properties to receive via API on creation
class ReflexActionCreate(ReflexActionBase):
pass
# Properties to receive via API on update
class ReflexActionUpdate(ReflexActionBase):
pass