nci-cidc-api-modules 1.2.53__py3-none-any.whl → 1.2.55__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. boot.py +8 -0
  2. cidc_api/__init__.py +1 -1
  3. cidc_api/config/db.py +0 -2
  4. cidc_api/models/code_systems.py +29 -0
  5. cidc_api/models/dataset.py +80 -0
  6. cidc_api/models/db/stage1/additional_treatment_orm.py +8 -1
  7. cidc_api/models/db/stage1/adverse_event_orm.py +10 -2
  8. cidc_api/models/db/stage1/baseline_clinical_assessment_orm.py +8 -1
  9. cidc_api/models/db/stage1/comorbidity_orm.py +8 -1
  10. cidc_api/models/db/stage1/consent_group_orm.py +6 -6
  11. cidc_api/models/db/stage1/demographic_orm.py +10 -2
  12. cidc_api/models/db/stage1/disease_orm.py +8 -1
  13. cidc_api/models/db/stage1/exposure_orm.py +8 -1
  14. cidc_api/models/db/stage1/gvhd_diagnosis_acute_orm.py +8 -3
  15. cidc_api/models/db/stage1/gvhd_diagnosis_chronic_orm.py +8 -3
  16. cidc_api/models/db/stage1/gvhd_organ_acute_orm.py +8 -1
  17. cidc_api/models/db/stage1/gvhd_organ_chronic_orm.py +8 -1
  18. cidc_api/models/db/stage1/medical_history_orm.py +8 -1
  19. cidc_api/models/db/stage1/other_malignancy_orm.py +8 -1
  20. cidc_api/models/db/stage1/participant_orm.py +4 -5
  21. cidc_api/models/db/stage1/prior_treatment_orm.py +8 -2
  22. cidc_api/models/db/stage1/radiotherapy_dose_orm.py +11 -3
  23. cidc_api/models/db/stage1/response_by_system_orm.py +10 -3
  24. cidc_api/models/db/stage1/response_orm.py +11 -4
  25. cidc_api/models/db/stage1/specimen_orm.py +9 -25
  26. cidc_api/models/db/stage1/stem_cell_transplant_orm.py +8 -1
  27. cidc_api/models/db/stage1/surgery_orm.py +8 -1
  28. cidc_api/models/db/stage1/therapy_agent_dose_orm.py +8 -1
  29. cidc_api/models/db/stage1/treatment_orm.py +8 -1
  30. cidc_api/models/db/stage1/trial_orm.py +1 -2
  31. cidc_api/models/db/stage2/additional_treatment_orm.py +8 -1
  32. cidc_api/models/db/stage2/administrative_person_orm.py +8 -1
  33. cidc_api/models/db/stage2/administrative_role_assignment_orm.py +1 -0
  34. cidc_api/models/db/stage2/adverse_event_orm.py +10 -2
  35. cidc_api/models/db/stage2/arm_orm.py +5 -4
  36. cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py +8 -1
  37. cidc_api/models/db/stage2/cohort_orm.py +5 -4
  38. cidc_api/models/db/stage2/comorbidity_orm.py +8 -1
  39. cidc_api/models/db/stage2/consent_group_orm.py +5 -5
  40. cidc_api/models/db/stage2/contact_orm.py +10 -1
  41. cidc_api/models/db/stage2/demographic_orm.py +10 -2
  42. cidc_api/models/db/stage2/disease_orm.py +8 -1
  43. cidc_api/models/db/stage2/exposure_orm.py +8 -1
  44. cidc_api/models/db/stage2/file_orm.py +4 -4
  45. cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py +8 -3
  46. cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py +8 -3
  47. cidc_api/models/db/stage2/gvhd_organ_acute_orm.py +8 -1
  48. cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py +8 -1
  49. cidc_api/models/db/stage2/institution_orm.py +4 -4
  50. cidc_api/models/db/stage2/medical_history_orm.py +8 -1
  51. cidc_api/models/db/stage2/other_clinical_endpoint_orm.py +9 -1
  52. cidc_api/models/db/stage2/other_malignancy_orm.py +8 -1
  53. cidc_api/models/db/stage2/participant_orm.py +6 -6
  54. cidc_api/models/db/stage2/prior_treatment_orm.py +9 -3
  55. cidc_api/models/db/stage2/publication_orm.py +5 -4
  56. cidc_api/models/db/stage2/radiotherapy_dose_orm.py +11 -3
  57. cidc_api/models/db/stage2/response_by_system_orm.py +10 -3
  58. cidc_api/models/db/stage2/response_orm.py +11 -4
  59. cidc_api/models/db/stage2/shipment_orm.py +5 -5
  60. cidc_api/models/db/stage2/shipment_specimen_orm.py +8 -2
  61. cidc_api/models/db/stage2/specimen_orm.py +9 -75
  62. cidc_api/models/db/stage2/stem_cell_transplant_orm.py +8 -1
  63. cidc_api/models/db/stage2/surgery_orm.py +8 -1
  64. cidc_api/models/db/stage2/therapy_agent_dose_orm.py +8 -1
  65. cidc_api/models/db/stage2/treatment_orm.py +8 -1
  66. cidc_api/models/db/stage2/trial_orm.py +1 -2
  67. cidc_api/models/pydantic/stage1/adverse_event.py +3 -2
  68. cidc_api/models/pydantic/stage1/demographic.py +5 -4
  69. cidc_api/models/pydantic/stage1/radiotherapy_dose.py +2 -1
  70. cidc_api/models/pydantic/stage1/response.py +3 -3
  71. cidc_api/models/pydantic/stage1/response_by_system.py +2 -2
  72. cidc_api/models/pydantic/stage1/trial.py +1 -1
  73. cidc_api/models/pydantic/stage2/adverse_event.py +54 -26
  74. cidc_api/models/pydantic/stage2/comorbidity.py +15 -8
  75. cidc_api/models/pydantic/stage2/demographic.py +47 -29
  76. cidc_api/models/pydantic/stage2/disease.py +100 -58
  77. cidc_api/models/pydantic/stage2/exposure.py +14 -8
  78. cidc_api/models/pydantic/stage2/medical_history.py +15 -8
  79. cidc_api/models/pydantic/stage2/other_malignancy.py +17 -11
  80. cidc_api/models/pydantic/stage2/participant.py +27 -15
  81. cidc_api/models/pydantic/stage2/prior_treatment.py +2 -0
  82. cidc_api/models/pydantic/stage2/radiotherapy_dose.py +29 -15
  83. cidc_api/models/pydantic/stage2/response.py +44 -25
  84. cidc_api/models/pydantic/stage2/response_by_system.py +140 -32
  85. cidc_api/models/pydantic/stage2/specimen.py +2 -185
  86. cidc_api/models/pydantic/stage2/surgery.py +15 -7
  87. cidc_api/models/pydantic/stage2/therapy_agent_dose.py +27 -14
  88. cidc_api/models/pydantic/stage2/treatment.py +30 -16
  89. cidc_api/models/types.py +11 -5
  90. cidc_api/telemetry.py +13 -13
  91. {nci_cidc_api_modules-1.2.53.dist-info → nci_cidc_api_modules-1.2.55.dist-info}/METADATA +1 -1
  92. nci_cidc_api_modules-1.2.55.dist-info/RECORD +163 -0
  93. cidc_api/models/data.py +0 -28
  94. cidc_api/reference/ctcae.py +0 -34
  95. cidc_api/reference/gvhd.py +0 -6
  96. cidc_api/reference/icd10cm.py +0 -12
  97. cidc_api/reference/icdo3.py +0 -12
  98. cidc_api/reference/uberon.py +0 -5
  99. nci_cidc_api_modules-1.2.53.dist-info/RECORD +0 -167
  100. {nci_cidc_api_modules-1.2.53.dist-info → nci_cidc_api_modules-1.2.55.dist-info}/WHEEL +0 -0
  101. {nci_cidc_api_modules-1.2.53.dist-info → nci_cidc_api_modules-1.2.55.dist-info}/licenses/LICENSE +0 -0
  102. {nci_cidc_api_modules-1.2.53.dist-info → nci_cidc_api_modules-1.2.55.dist-info}/top_level.txt +0 -0
@@ -1,16 +1,23 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import PositiveInt
3
- from sqlalchemy import ForeignKey, String
3
+ from sqlalchemy import String, ForeignKey, ForeignKeyConstraint
4
4
  from sqlalchemy.orm import Mapped, mapped_column, relationship
5
5
 
6
6
  from cidc_api.models.db.stage1.base_orm import BaseORM
7
- from cidc_api.models.types import ResponseSystem, ResponseSystemVersion, BestOverallResponse, YNUNA
7
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
+ from cidc_api.models.types import ResponseSystem, ResponseSystemVersion, BestOverallResponse, YNUNA, YN
8
9
 
9
10
 
10
11
  class ResponseBySystemORM(BaseORM):
11
12
  __tablename__ = "response_by_system"
12
13
  __repr_attrs__ = ["response_by_system_id", "participant_id"]
13
14
  __data_category__ = "response_by_system"
15
+ __table_args__ = (
16
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
17
+ )
18
+
19
+ trial_id: Mapped[str]
20
+ version: Mapped[str]
14
21
 
15
22
  response_by_system_id: Mapped[int] = mapped_column(primary_key=True)
16
23
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage1.participant.participant_id", ondelete="CASCADE"))
@@ -19,7 +26,7 @@ class ResponseBySystemORM(BaseORM):
19
26
  best_overall_response: Mapped[BestOverallResponse] = mapped_column(String)
20
27
  response_duration: Mapped[PositiveInt | None]
21
28
  duration_of_stable_disease: Mapped[PositiveInt | None]
22
- durable_clinical_benefit: Mapped[bool | None]
29
+ durable_clinical_benefit: Mapped[YN | None]
23
30
  days_to_first_response: Mapped[PositiveInt | None]
24
31
  days_to_best_response: Mapped[PositiveInt | None]
25
32
  progression: Mapped[YNUNA]
@@ -1,17 +1,24 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage1.base_orm import BaseORM
8
- from cidc_api.models.types import SurvivalStatus, YNUNA, CauseOfDeath
8
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
9
+ from cidc_api.models.types import SurvivalStatus, CauseOfDeath, YNUNA, YN
9
10
 
10
11
 
11
12
  class ResponseORM(BaseORM):
12
13
  __tablename__ = "response"
13
14
  __repr_attrs__ = ["response_id", "participant_id"]
14
15
  __data_category__ = "response"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  response_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage1.participant.participant_id", ondelete="CASCADE"))
@@ -21,8 +28,8 @@ class ResponseORM(BaseORM):
21
28
  pathological_complete_response: Mapped[YNUNA | None]
22
29
  days_to_death: Mapped[NonNegativeInt | None]
23
30
  cause_of_death: Mapped[CauseOfDeath | None]
24
- evaluable_for_toxicity: Mapped[bool]
25
- evaluable_for_efficacy: Mapped[bool]
31
+ evaluable_for_toxicity: Mapped[YN]
32
+ evaluable_for_efficacy: Mapped[YN]
26
33
  days_to_last_vital_status: Mapped[NonNegativeInt | None]
27
34
 
28
35
  participant: Mapped[ParticipantORM] = relationship(back_populates="response", cascade="all, delete")
@@ -1,39 +1,23 @@
1
1
  from __future__ import annotations
2
- from datetime import datetime
3
- from typing import List
4
2
 
5
- from sqlalchemy import ForeignKey
3
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
6
4
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
5
 
8
6
  from cidc_api.models.db.stage1.base_orm import BaseORM
9
- from cidc_api.models.types import (
10
- UberonAnatomicalTerm,
11
- ICDO3MorphologicalCode,
12
- SpecimenType,
13
- SpecimenDescription,
14
- TumorType,
15
- CollectionProcedure,
16
- FixationStabilizationType,
17
- PrimaryContainerType,
18
- VolumeUnits,
19
- ProcessedType,
20
- ConcentrationUnits,
21
- DerivativeType,
22
- PBMCRestingPeriodUsed,
23
- MaterialUnits,
24
- MaterialStorageCondition,
25
- QCCondition,
26
- ReplacementRequested,
27
- ResidualUse,
28
- DiagnosisVerification,
29
- AssayType,
30
- )
7
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
+ from cidc_api.models.types import UberonAnatomicalTerm
31
9
 
32
10
 
33
11
  class SpecimenORM(BaseORM):
34
12
  __tablename__ = "specimen"
35
13
  __repr_attrs__ = ["specimen_id", "participant_id", "cimac_id"]
36
14
  __data_category__ = "specimen"
15
+ __table_args__ = (
16
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
17
+ )
18
+
19
+ trial_id: Mapped[str]
20
+ version: Mapped[str]
37
21
 
38
22
  specimen_id: Mapped[int] = mapped_column(primary_key=True)
39
23
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage1.participant.participant_id", ondelete="CASCADE"))
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage1.base_orm import BaseORM
8
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
9
  from cidc_api.models.types import StemCellDonorType, AllogeneicDonorType, StemCellSource, ConditioningRegimenType
9
10
 
10
11
 
@@ -12,6 +13,12 @@ class StemCellTransplantORM(BaseORM):
12
13
  __tablename__ = "stem_cell_transplant"
13
14
  __repr_attrs__ = ["stem_cell_transplant_id"]
14
15
  __data_category__ = "stem_cell_transplant"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  stem_cell_transplant_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage1.treatment.treatment_id", ondelete="CASCADE"))
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage1.base_orm import BaseORM
8
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
9
  from cidc_api.models.types import SurgicalProcedure, UberonAnatomicalTerm, YNU
9
10
 
10
11
 
@@ -12,6 +13,12 @@ class SurgeryORM(BaseORM):
12
13
  __tablename__ = "surgery"
13
14
  __repr_attrs__ = ["surgery_id", "procedure"]
14
15
  __data_category__ = "surgery"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  surgery_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage1.treatment.treatment_id", ondelete="CASCADE"))
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt, NonNegativeFloat, PositiveFloat
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage1.base_orm import BaseORM
8
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
9
  from cidc_api.models.types import TherapyAgentDoseUnits, YNU
9
10
 
10
11
 
@@ -12,6 +13,12 @@ class TherapyAgentDoseORM(BaseORM):
12
13
  __tablename__ = "therapy_agent_dose"
13
14
  __repr_attrs__ = ["therapy_agent_dose_id", "therapy_agent_name"]
14
15
  __data_category__ = "therapy_agent_dose"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  therapy_agent_dose_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage1.treatment.treatment_id", ondelete="CASCADE"))
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from typing import List
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage1.base_orm import BaseORM
8
+ from cidc_api.models.db.stage1.trial_orm import TrialORM
8
9
  from cidc_api.models.types import YNU, OffTreatmentReason
9
10
 
10
11
 
@@ -12,6 +13,12 @@ class TreatmentORM(BaseORM):
12
13
  __tablename__ = "treatment"
13
14
  __repr_attrs__ = ["treatment_id", "participant_id", "treatment_description"]
14
15
  __data_category__ = "treatment"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  treatment_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage1.participant.participant_id", ondelete="CASCADE"))
@@ -2,12 +2,11 @@ from __future__ import annotations
2
2
  from typing import List
3
3
  from datetime import datetime
4
4
 
5
- from sqlalchemy import ForeignKey
6
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
6
  from sqlalchemy.types import JSON
8
7
 
9
8
  from cidc_api.models.db.stage1.base_orm import BaseORM
10
- from cidc_api.models.types import PrimaryPurposeType, AgeGroup
9
+ from cidc_api.models.types import AssayType, TrialOrganization, TrialFundingAgency, AgeGroup, PrimaryPurposeType
11
10
 
12
11
 
13
12
  class TrialORM(BaseORM):
@@ -1,16 +1,23 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage2.base_orm import BaseORM
8
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
8
9
 
9
10
 
10
11
  class AdditionalTreatmentORM(BaseORM):
11
12
  __tablename__ = "additional_treatment"
12
13
  __repr_attrs__ = ["additional_treatment_id", "participant_id"]
13
14
  __data_category__ = "additional_treatment"
15
+ __table_args__ = (
16
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
17
+ )
18
+
19
+ trial_id: Mapped[str]
20
+ version: Mapped[str]
14
21
 
15
22
  additional_treatment_id: Mapped[int] = mapped_column(primary_key=True)
16
23
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -1,15 +1,22 @@
1
1
  from __future__ import annotations
2
2
  from typing import List
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage2.base_orm import BaseORM
8
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
8
9
 
9
10
 
10
11
  class AdministrativePersonORM(BaseORM):
11
12
  __tablename__ = "administrative_person"
12
13
  __repr_attrs__ = ["first_name", "last_name"]
14
+ __table_args__ = (
15
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
16
+ )
17
+
18
+ trial_id: Mapped[str]
19
+ version: Mapped[str]
13
20
 
14
21
  administrative_person_id: Mapped[int] = mapped_column(primary_key=True)
15
22
  institution_id: Mapped[int] = mapped_column(ForeignKey("stage2.institution.institution_id", ondelete="CASCADE"))
@@ -17,6 +17,7 @@ class AdministrativeRoleAssignmentORM(BaseORM):
17
17
 
18
18
  trial_id: Mapped[str] = mapped_column(primary_key=True)
19
19
  version: Mapped[str] = mapped_column(primary_key=True)
20
+
20
21
  administrative_person_id: Mapped[int] = mapped_column(
21
22
  ForeignKey("stage2.administrative_person.administrative_person_id", ondelete="CASCADE"), primary_key=True
22
23
  )
@@ -1,9 +1,10 @@
1
1
  from __future__ import annotations
2
2
  from pydantic import NonNegativeInt
3
- from sqlalchemy import ForeignKey
3
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
4
4
  from sqlalchemy.orm import Mapped, mapped_column, relationship
5
5
 
6
6
  from cidc_api.models.db.stage2.base_orm import BaseORM
7
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
7
8
  from cidc_api.models.types import (
8
9
  CTCAEEventTerm,
9
10
  CTCAEEventCode,
@@ -13,6 +14,7 @@ from cidc_api.models.types import (
13
14
  SystemOrganClass,
14
15
  AttributionCause,
15
16
  AttributionLikelihood,
17
+ YN,
16
18
  YNU,
17
19
  )
18
20
 
@@ -21,6 +23,12 @@ class AdverseEventORM(BaseORM):
21
23
  __tablename__ = "adverse_event"
22
24
  __repr_attrs__ = ["adverse_event_id", "participant_id", "event_term"]
23
25
  __data_category__ = "adverse_event"
26
+ __table_args__ = (
27
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
28
+ )
29
+
30
+ trial_id: Mapped[str]
31
+ version: Mapped[str]
24
32
 
25
33
  adverse_event_id: Mapped[int] = mapped_column(primary_key=True)
26
34
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -33,7 +41,7 @@ class AdverseEventORM(BaseORM):
33
41
  severity_grade: Mapped[SeverityGrade]
34
42
  event_other_specify: Mapped[str | None]
35
43
  system_organ_class: Mapped[SystemOrganClass | None]
36
- discontinuation_due_to_event: Mapped[bool]
44
+ discontinuation_due_to_event: Mapped[YN]
37
45
  days_to_onset_of_event: Mapped[NonNegativeInt]
38
46
  days_to_resolution_of_event: Mapped[NonNegativeInt | None]
39
47
  serious_adverse_event: Mapped[YNU]
@@ -3,21 +3,22 @@ from sqlalchemy import ForeignKey, ForeignKeyConstraint
3
3
  from sqlalchemy.orm import Mapped, mapped_column, relationship
4
4
 
5
5
  from cidc_api.models.db.stage2.base_orm import BaseORM
6
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
6
7
 
7
8
 
8
9
  class ArmORM(BaseORM):
9
10
  __tablename__ = "arm"
10
11
  __repr_attrs__ = ["trial_id", "arm_name"]
12
+ __data_category__ = "arm"
11
13
  __table_args__ = (
12
- ForeignKeyConstraint(
13
- ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
14
- ),
14
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
15
15
  )
16
16
 
17
- arm_id: Mapped[int] = mapped_column(primary_key=True)
18
17
  trial_id: Mapped[str]
19
18
  version: Mapped[str]
20
19
 
20
+ arm_id: Mapped[int] = mapped_column(primary_key=True)
21
+
21
22
  name: Mapped[str]
22
23
 
23
24
  trial: Mapped[TrialORM] = relationship(back_populates="arms", cascade="all, delete")
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
- from sqlalchemy import ForeignKey
2
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
3
3
  from sqlalchemy.orm import Mapped, mapped_column, relationship
4
4
 
5
5
  from cidc_api.models.db.stage2.base_orm import BaseORM
6
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
6
7
  from cidc_api.models.types import ECOGScore, KarnofskyScore
7
8
 
8
9
 
@@ -10,6 +11,12 @@ class BaselineClinicalAssessmentORM(BaseORM):
10
11
  __tablename__ = "baseline_clinical_assessment"
11
12
  __repr_attrs__ = ["baseline_clinical_assessment_id", "participant_id"]
12
13
  __data_category__ = "baseline_clinical_assessment"
14
+ __table_args__ = (
15
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
16
+ )
17
+
18
+ trial_id: Mapped[str]
19
+ version: Mapped[str]
13
20
 
14
21
  baseline_clinical_assessment_id: Mapped[int] = mapped_column(primary_key=True)
15
22
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -3,21 +3,22 @@ from sqlalchemy import ForeignKeyConstraint
3
3
  from sqlalchemy.orm import Mapped, mapped_column, relationship
4
4
 
5
5
  from cidc_api.models.db.stage2.base_orm import BaseORM
6
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
6
7
 
7
8
 
8
9
  class CohortORM(BaseORM):
9
10
  __tablename__ = "cohort"
10
11
  __repr_attrs__ = ["trial_id", "cohort_name"]
12
+ __data_category__ = "cohort"
11
13
  __table_args__ = (
12
- ForeignKeyConstraint(
13
- ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
14
- ),
14
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
15
15
  )
16
16
 
17
- cohort_id: Mapped[int] = mapped_column(primary_key=True)
18
17
  trial_id: Mapped[str]
19
18
  version: Mapped[str]
20
19
 
20
+ cohort_id: Mapped[int] = mapped_column(primary_key=True)
21
+
21
22
  name: Mapped[str]
22
23
 
23
24
  trial: Mapped[TrialORM] = relationship(back_populates="cohorts", cascade="all, delete")
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
- from sqlalchemy import ForeignKey
2
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
3
3
  from sqlalchemy.orm import Mapped, mapped_column, relationship
4
4
 
5
5
  from cidc_api.models.db.stage2.base_orm import BaseORM
6
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
6
7
  from cidc_api.models.types import ICD10CMCode, ICD10CMTerm
7
8
 
8
9
 
@@ -10,6 +11,12 @@ class ComorbidityORM(BaseORM):
10
11
  __tablename__ = "comorbidity"
11
12
  __repr_attrs__ = ["comorbidity_id", "comorbidity_term"]
12
13
  __data_category__ = "comorbidity"
14
+ __table_args__ = (
15
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
16
+ )
17
+
18
+ trial_id: Mapped[str]
19
+ version: Mapped[str]
13
20
 
14
21
  comorbidity_id: Mapped[int] = mapped_column(primary_key=True)
15
22
  medical_history_id: Mapped[int] = mapped_column(
@@ -6,22 +6,22 @@ from sqlalchemy import ForeignKeyConstraint
6
6
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
7
 
8
8
  from cidc_api.models.db.stage2.base_orm import BaseORM
9
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
9
10
 
10
11
 
11
12
  class ConsentGroupORM(BaseORM):
12
13
  __tablename__ = "consent_group"
13
14
  __repr_attrs__ = ["consent_group_id", "consent_group_name"]
15
+ __data_category__ = "consent_group"
14
16
  __table_args__ = (
15
- ForeignKeyConstraint(
16
- ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
17
- ),
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
18
  )
19
- __data_category__ = "consent_group"
20
19
 
21
- consent_group_id: Mapped[int] = mapped_column(primary_key=True)
22
20
  trial_id: Mapped[str]
23
21
  version: Mapped[str]
24
22
 
23
+ consent_group_id: Mapped[int] = mapped_column(primary_key=True)
24
+
25
25
  consent_group_short_name: Mapped[str]
26
26
  consent_group_name: Mapped[str]
27
27
  consent_group_number: Mapped[NonNegativeInt]
@@ -1,12 +1,21 @@
1
1
  from __future__ import annotations
2
- from sqlalchemy import ForeignKey
2
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
3
3
  from sqlalchemy.orm import Mapped, mapped_column, relationship
4
4
 
5
5
  from cidc_api.models.db.stage2.base_orm import BaseORM
6
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
6
7
 
7
8
 
8
9
  class ContactORM(BaseORM):
9
10
  __tablename__ = "contact"
11
+ __repr_attrs__ = ["contact_id", "name"]
12
+ __data_category__ = "demographic"
13
+ __table_args__ = (
14
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
15
+ )
16
+
17
+ trial_id: Mapped[str]
18
+ version: Mapped[str]
10
19
 
11
20
  contact_id: Mapped[int] = mapped_column(primary_key=True)
12
21
  institution_id: Mapped[int] = mapped_column(ForeignKey("stage2.institution.institution_id", ondelete="CASCADE"))
@@ -2,11 +2,12 @@ from __future__ import annotations
2
2
  from pydantic import NonNegativeFloat, PositiveFloat, PositiveInt
3
3
  from typing import List
4
4
 
5
- from sqlalchemy import ForeignKey
5
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
6
6
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
7
  from sqlalchemy.types import JSON
8
8
 
9
9
  from cidc_api.models.db.stage2.base_orm import BaseORM
10
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
10
11
  from cidc_api.models.types import (
11
12
  Sex,
12
13
  Race,
@@ -17,6 +18,7 @@ from cidc_api.models.types import (
17
18
  Occupation,
18
19
  Education,
19
20
  AgeAtEnrollmentUnits,
21
+ YN,
20
22
  )
21
23
 
22
24
 
@@ -24,12 +26,18 @@ class DemographicORM(BaseORM):
24
26
  __tablename__ = "demographic"
25
27
  __repr_attrs__ = ["demographic_id", "participant_id", "age_at_enrollment", "sex"]
26
28
  __data_category__ = "demographic"
29
+ __table_args__ = (
30
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
31
+ )
32
+
33
+ trial_id: Mapped[str]
34
+ version: Mapped[str]
27
35
 
28
36
  demographic_id: Mapped[int] = mapped_column(primary_key=True)
29
37
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
30
38
  age_at_enrollment: Mapped[PositiveInt | None]
31
39
  age_at_enrollment_units: Mapped[AgeAtEnrollmentUnits | None]
32
- age_90_or_over: Mapped[bool]
40
+ age_90_or_over: Mapped[YN]
33
41
  sex: Mapped[Sex]
34
42
  race: Mapped[List[Race]] = mapped_column(JSON)
35
43
  ethnicity: Mapped[Ethnicity]
@@ -2,11 +2,12 @@ from __future__ import annotations
2
2
  from typing import List
3
3
 
4
4
  from pydantic import NonPositiveInt
5
- from sqlalchemy import ForeignKey
5
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
6
6
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
7
  from sqlalchemy.types import JSON
8
8
 
9
9
  from cidc_api.models.db.stage2.base_orm import BaseORM
10
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
10
11
  from cidc_api.models.types import (
11
12
  TumorGrade,
12
13
  CancerStageSystem,
@@ -30,6 +31,12 @@ class DiseaseORM(BaseORM):
30
31
  "participant_id",
31
32
  ]
32
33
  __data_category__ = "disease"
34
+ __table_args__ = (
35
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
36
+ )
37
+
38
+ trial_id: Mapped[str]
39
+ version: Mapped[str]
33
40
 
34
41
  disease_id: Mapped[int] = mapped_column(primary_key=True)
35
42
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from typing import List
3
3
 
4
- from sqlalchemy import ForeignKey
4
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage2.base_orm import BaseORM
8
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
8
9
  from cidc_api.models.types import YNU, ExposureType
9
10
 
10
11
 
@@ -12,6 +13,12 @@ class ExposureORM(BaseORM):
12
13
  __tablename__ = "exposure"
13
14
  __repr_attrs__ = ["exposure_id", "exposure_type", "carcinogen_exposure"]
14
15
  __data_category__ = "exposure"
16
+ __table_args__ = (
17
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
18
+ )
19
+
20
+ trial_id: Mapped[str]
21
+ version: Mapped[str]
15
22
 
16
23
  exposure_id: Mapped[int] = mapped_column(primary_key=True)
17
24
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -5,21 +5,21 @@ from sqlalchemy import ForeignKeyConstraint, ForeignKey
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage2.base_orm import BaseORM
8
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
8
9
  from cidc_api.models.types import ChecksumType, FileFormat
9
10
 
10
11
 
11
12
  class FileORM(BaseORM):
12
13
  __tablename__ = "file"
13
14
  __table_args__ = (
14
- ForeignKeyConstraint(
15
- ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
16
- ),
15
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
17
16
  )
18
17
 
19
- file_id: Mapped[int] = mapped_column(primary_key=True)
20
18
  trial_id: Mapped[str]
21
19
  version: Mapped[str]
22
20
 
21
+ file_id: Mapped[int] = mapped_column(primary_key=True)
22
+
23
23
  creator_id: Mapped[int | None] = mapped_column(ForeignKey("stage2.institution.institution_id", ondelete="CASCADE"))
24
24
  description: Mapped[str | None]
25
25
  uuid: Mapped[str]
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
  from typing import List
3
3
 
4
- from sqlalchemy import ForeignKey, UniqueConstraint
4
+ from sqlalchemy import ForeignKey, UniqueConstraint, ForeignKeyConstraint
5
5
  from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
 
7
7
  from cidc_api.models.db.stage2.base_orm import BaseORM
8
+ from cidc_api.models.db.stage2.trial_orm import TrialORM
8
9
  from cidc_api.models.types import (
9
10
  GVHDDiagnosisAcuteAssessmentSystem,
10
11
  GVHDDiagnosisAcuteAssessmentSystemVersion,
@@ -15,11 +16,15 @@ from cidc_api.models.types import (
15
16
 
16
17
  class GVHDDiagnosisAcuteORM(BaseORM):
17
18
  __tablename__ = "gvhd_diagnosis_acute"
19
+ __repr_attrs__ = ["gvhd_diagnosis_acute_id", "pre_or_post_enrollment"]
20
+ __data_category__ = "gvhd_diagnosis_acute"
18
21
  __table_args__ = (
19
22
  UniqueConstraint("participant_id", "pre_or_post_enrollment", name="unique_ix_gvhd_diagnosis_acute_pre_or_post"),
23
+ ForeignKeyConstraint(["trial_id", "version"], [TrialORM.trial_id, TrialORM.version], ondelete="CASCADE"),
20
24
  )
21
- __repr_attrs__ = ["gvhd_diagnosis_acute_id", "pre_or_post_enrollment"]
22
- __data_category__ = "gvhd_diagnosis_acute"
25
+
26
+ trial_id: Mapped[str]
27
+ version: Mapped[str]
23
28
 
24
29
  gvhd_diagnosis_acute_id: Mapped[int] = mapped_column(primary_key=True)
25
30
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))