From b80dbadc23e5cc174ae28f17f6c39930d45338a1 Mon Sep 17 00:00:00 2001 From: Dan Birman Date: Wed, 7 Oct 2026 21:42:19 -0700 Subject: [PATCH 1/5] fix: remove injection (use nonsurgicalinjection) --- src/biodata_schema/core/procedures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/biodata_schema/core/procedures.py b/src/biodata_schema/core/procedures.py index 2b8e19ac..bbeb254f 100644 --- a/src/biodata_schema/core/procedures.py +++ b/src/biodata_schema/core/procedures.py @@ -32,7 +32,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" From 334d5a6e779fb1e4e95da20842c8162decbcc80a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Oct 2026 04:43:40 +0000 Subject: [PATCH 2/5] update docs --- docs/source/procedures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/procedures.md b/docs/source/procedures.md index f50e9e95..29e66954 100644 --- a/docs/source/procedures.md +++ b/docs/source/procedures.md @@ -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 | From 4726a374c0e707830e2408f9f45e05dab091bbd6 Mon Sep 17 00:00:00 2001 From: Dan Birman Date: Wed, 7 Oct 2026 21:44:36 -0700 Subject: [PATCH 3/5] chore: remove unnecessary injection rejection validator --- src/biodata_schema/core/procedures.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/biodata_schema/core/procedures.py b/src/biodata_schema/core/procedures.py index bbeb254f..9b185d06 100644 --- a/src/biodata_schema/core/procedures.py +++ b/src/biodata_schema/core/procedures.py @@ -73,18 +73,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""" From 8700653d9884e5fcbcfb247464980e091e505c54 Mon Sep 17 00:00:00 2001 From: Dan Birman Date: Fri, 9 Oct 2026 08:43:54 -0700 Subject: [PATCH 4/5] chore: lint --- src/biodata_schema/core/procedures.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/biodata_schema/core/procedures.py b/src/biodata_schema/core/procedures.py index 9b185d06..69d74670 100644 --- a/src/biodata_schema/core/procedures.py +++ b/src/biodata_schema/core/procedures.py @@ -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, From 2ed5a42809b5f2548f86bd3b30ee5970e807bea0 Mon Sep 17 00:00:00 2001 From: Dan Birman Date: Fri, 9 Oct 2026 08:55:45 -0700 Subject: [PATCH 5/5] chore: fix imports for modlaity -> injection validators --- src/biodata_schema/core/metadata.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/biodata_schema/core/metadata.py b/src/biodata_schema/core/metadata.py index de6fa41e..696b0107 100644 --- a/src/biodata_schema/core/metadata.py +++ b/src/biodata_schema/core/metadata.py @@ -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