Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/source/procedures.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Description of all procedures performed on a subject, including surgeries, injec
| Field | Type | Title (Description) |
|-------|------|-------------|
| `subject_name` | `str` | Subject name (Unique name for the subject of data acquisition) |
| `subject_procedures` | List[[Surgery](components/subject_procedures.md#surgery) or [Injection](components/injection_procedures.md#injection) or [NonSurgicalInjection](components/subject_procedures.md#nonsurgicalinjection) or [TrainingProtocol](components/subject_procedures.md#trainingprotocol) or [WaterRestriction](components/subject_procedures.md#waterrestriction) or [GenericSubjectProcedure](components/subject_procedures.md#genericsubjectprocedure)] | Subject Procedures (Procedures performed on a live subject) |
| `subject_procedures` | List[[Surgery](components/subject_procedures.md#surgery) or [NonSurgicalInjection](components/subject_procedures.md#nonsurgicalinjection) or [TrainingProtocol](components/subject_procedures.md#trainingprotocol) or [WaterRestriction](components/subject_procedures.md#waterrestriction) or [GenericSubjectProcedure](components/subject_procedures.md#genericsubjectprocedure)] | Subject Procedures (Procedures performed on a live subject) |
| `specimen_procedures` | List[[SpecimenProcedure](components/specimen_procedures.md#specimenprocedure)] | Specimen Procedures (Procedures performed on tissue extracted after perfusion) |
| `global_coordinate_system` | Optional[[CoordinateSystem](components/coordinates.md#coordinatesystem)] | Global Coordinate System (Origin and axis definitions for determining the configured position of devices implanted during procedures. Required when coordinates are provided within the Procedures) |
| `notes` | `Optional[str]` | Notes |
3 changes: 2 additions & 1 deletion src/biodata_schema/core/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@

from biodata_schema.base import DataCoreModel, DraftRequirement
from biodata_schema.components.identifiers import DatabaseIdentifiers
from biodata_schema.components.injection_procedures import Injection
from biodata_schema.components.subject_procedures import TrainingProtocol
from biodata_schema.components.subjects import CalibrationObject
from biodata_schema.core.acquisition import Acquisition, DataStream, ExternalDataStream
from biodata_schema.core.data_description import DataDescription
from biodata_schema.core.instrument import Instrument
from biodata_schema.core.model import Model
from biodata_schema.core.procedures import Injection, Procedures, Surgery
from biodata_schema.core.procedures import Procedures, Surgery
from biodata_schema.core.processing import Processing
from biodata_schema.core.quality_control import QualityControl
from biodata_schema.core.subject import Subject
Expand Down
15 changes: 1 addition & 14 deletions src/biodata_schema/core/procedures.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

from biodata_schema.base import DataCoreModel, DiscriminatedList
from biodata_schema.components.coordinates import CoordinateSystem
from biodata_schema.components.injection_procedures import Injection
from biodata_schema.components.specimen_procedures import SpecimenProcedure
from biodata_schema.components.subject_procedures import (
GenericSubjectProcedure,
Expand All @@ -32,7 +31,7 @@ class Procedures(DataCoreModel):
title="Subject name",
)
subject_procedures: DiscriminatedList[
Surgery | Injection | NonSurgicalInjection | TrainingProtocol | WaterRestriction | GenericSubjectProcedure
Surgery | NonSurgicalInjection | TrainingProtocol | WaterRestriction | GenericSubjectProcedure
] = Field(default=[], title="Subject Procedures", description="Procedures performed on a live subject")
specimen_procedures: List[SpecimenProcedure] = Field(
default=[], title="Specimen Procedures", description="Procedures performed on tissue extracted after perfusion"
Expand Down Expand Up @@ -73,18 +72,6 @@ def get_device_names(self) -> List[str]:

return list(device_names)

@model_validator(mode="after")
def reject_injections(self):
"""Reject bare injections since they must be wrapped
in a Surgery or NonSurgicalInjection procedure
"""

for procedure in self.subject_procedures:
if isinstance(procedure, Injection):
raise ValueError("Injection procedures must be wrapped in a Surgery or NonSurgicalInjection procedure.")

return self

@model_validator(mode="after")
def validate_subject_specimen_names(self):
"""Validate that the subject_name and specimen_name match"""
Expand Down
Loading