nci-cidc-api-modules 1.2.23__py3-none-any.whl → 1.2.24__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 (81) hide show
  1. cidc_api/models/db/stage2/__init__.py +78 -0
  2. cidc_api/models/db/stage2/additional_treatment_orm.py +22 -0
  3. cidc_api/models/db/stage2/administrative_person_orm.py +25 -0
  4. cidc_api/models/db/stage2/administrative_role_assignment_orm.py +28 -0
  5. cidc_api/models/db/stage2/adverse_event_orm.py +47 -0
  6. cidc_api/models/db/stage2/arm_orm.py +23 -0
  7. cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py +23 -0
  8. cidc_api/models/db/stage2/cohort_orm.py +23 -0
  9. cidc_api/models/db/stage2/comorbidity_orm.py +24 -0
  10. cidc_api/models/db/stage2/consent_group_orm.py +31 -0
  11. cidc_api/models/db/stage2/contact_orm.py +32 -0
  12. cidc_api/models/db/stage2/demographic_orm.py +44 -0
  13. cidc_api/models/db/stage2/disease_orm.py +53 -0
  14. cidc_api/models/db/stage2/exposure_orm.py +21 -0
  15. cidc_api/models/db/stage2/file_orm.py +38 -0
  16. cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py +33 -0
  17. cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py +37 -0
  18. cidc_api/models/db/stage2/gvhd_organ_acute_orm.py +20 -0
  19. cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py +20 -0
  20. cidc_api/models/db/stage2/institution_orm.py +33 -0
  21. cidc_api/models/db/stage2/medical_history_orm.py +29 -0
  22. cidc_api/models/db/stage2/other_clinical_endpoint_orm.py +28 -0
  23. cidc_api/models/db/stage2/other_malignancy_orm.py +30 -0
  24. cidc_api/models/db/stage2/participant_orm.py +79 -0
  25. cidc_api/models/db/stage2/prior_treatment_orm.py +28 -0
  26. cidc_api/models/db/stage2/publication_orm.py +31 -0
  27. cidc_api/models/db/stage2/radiotherapy_dose_orm.py +39 -0
  28. cidc_api/models/db/stage2/response_by_system_orm.py +28 -0
  29. cidc_api/models/db/stage2/response_orm.py +27 -0
  30. cidc_api/models/db/stage2/shipment_orm.py +47 -0
  31. cidc_api/models/db/stage2/shipment_specimen_orm.py +24 -0
  32. cidc_api/models/db/stage2/specimen_orm.py +100 -0
  33. cidc_api/models/db/stage2/stem_cell_transplant_orm.py +25 -0
  34. cidc_api/models/db/stage2/surgery_orm.py +27 -0
  35. cidc_api/models/db/stage2/therapy_agent_dose_orm.py +31 -0
  36. cidc_api/models/db/stage2/treatment_orm.py +39 -0
  37. cidc_api/models/db/stage2/trial_orm.py +60 -0
  38. cidc_api/models/pydantic/stage2/__init__.py +78 -0
  39. cidc_api/models/pydantic/stage2/additional_treatment.py +23 -0
  40. cidc_api/models/pydantic/stage2/administrative_person.py +30 -0
  41. cidc_api/models/pydantic/stage2/administrative_role_assignment.py +16 -0
  42. cidc_api/models/pydantic/stage2/adverse_event.py +100 -0
  43. cidc_api/models/pydantic/stage2/arm.py +16 -0
  44. cidc_api/models/pydantic/stage2/base.py +30 -0
  45. cidc_api/models/pydantic/stage2/baseline_clinical_assessment.py +23 -0
  46. cidc_api/models/pydantic/stage2/cohort.py +16 -0
  47. cidc_api/models/pydantic/stage2/comorbidity.py +36 -0
  48. cidc_api/models/pydantic/stage2/consent_group.py +30 -0
  49. cidc_api/models/pydantic/stage2/contact.py +35 -0
  50. cidc_api/models/pydantic/stage2/demographic.py +114 -0
  51. cidc_api/models/pydantic/stage2/disease.py +144 -0
  52. cidc_api/models/pydantic/stage2/exposure.py +32 -0
  53. cidc_api/models/pydantic/stage2/file.py +44 -0
  54. cidc_api/models/pydantic/stage2/gvhd_diagnosis_acute.py +33 -0
  55. cidc_api/models/pydantic/stage2/gvhd_diagnosis_chronic.py +32 -0
  56. cidc_api/models/pydantic/stage2/gvhd_organ_acute.py +22 -0
  57. cidc_api/models/pydantic/stage2/gvhd_organ_chronic.py +23 -0
  58. cidc_api/models/pydantic/stage2/institution.py +10 -0
  59. cidc_api/models/pydantic/stage2/medical_history.py +36 -0
  60. cidc_api/models/pydantic/stage2/other_clinical_endpoint.py +32 -0
  61. cidc_api/models/pydantic/stage2/other_malignancy.py +45 -0
  62. cidc_api/models/pydantic/stage2/participant.py +47 -0
  63. cidc_api/models/pydantic/stage2/prior_treatment.py +52 -0
  64. cidc_api/models/pydantic/stage2/publication.py +37 -0
  65. cidc_api/models/pydantic/stage2/radiotherapy_dose.py +79 -0
  66. cidc_api/models/pydantic/stage2/response.py +71 -0
  67. cidc_api/models/pydantic/stage2/response_by_system.py +109 -0
  68. cidc_api/models/pydantic/stage2/shipment.py +48 -0
  69. cidc_api/models/pydantic/stage2/shipment_specimen.py +15 -0
  70. cidc_api/models/pydantic/stage2/specimen.py +211 -0
  71. cidc_api/models/pydantic/stage2/stem_cell_transplant.py +35 -0
  72. cidc_api/models/pydantic/stage2/surgery.py +49 -0
  73. cidc_api/models/pydantic/stage2/therapy_agent_dose.py +67 -0
  74. cidc_api/models/pydantic/stage2/treatment.py +50 -0
  75. cidc_api/models/pydantic/stage2/trial.py +85 -0
  76. {nci_cidc_api_modules-1.2.23.dist-info → nci_cidc_api_modules-1.2.24.dist-info}/METADATA +1 -1
  77. nci_cidc_api_modules-1.2.24.dist-info/RECORD +104 -0
  78. nci_cidc_api_modules-1.2.23.dist-info/RECORD +0 -29
  79. {nci_cidc_api_modules-1.2.23.dist-info → nci_cidc_api_modules-1.2.24.dist-info}/WHEEL +0 -0
  80. {nci_cidc_api_modules-1.2.23.dist-info → nci_cidc_api_modules-1.2.24.dist-info}/licenses/LICENSE +0 -0
  81. {nci_cidc_api_modules-1.2.23.dist-info → nci_cidc_api_modules-1.2.24.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,78 @@
1
+ from .additional_treatment_orm import AdditionalTreatmentORM
2
+ from .administrative_person_orm import AdministrativePersonORM
3
+ from .administrative_role_assignment_orm import AdministrativeRoleAssignmentORM
4
+ from .adverse_event_orm import AdverseEventORM
5
+ from .arm_orm import ArmORM
6
+ from .baseline_clinical_assessment_orm import BaselineClinicalAssessmentORM
7
+ from .cohort_orm import CohortORM
8
+ from .comorbidity_orm import ComorbidityORM
9
+ from .consent_group_orm import ConsentGroupORM
10
+ from .contact_orm import ContactORM
11
+ from .demographic_orm import DemographicORM
12
+ from .disease_orm import DiseaseORM
13
+ from .exposure_orm import ExposureORM
14
+ from .file_orm import FileORM
15
+ from .gvhd_diagnosis_acute_orm import GVHDDiagnosisAcuteORM
16
+ from .gvhd_diagnosis_chronic_orm import GVHDDiagnosisChronicORM
17
+ from .gvhd_organ_acute_orm import GVHDOrganAcuteORM
18
+ from .gvhd_organ_chronic_orm import GVHDOrganChronicORM
19
+ from .institution_orm import InstitutionORM
20
+ from .medical_history_orm import MedicalHistoryORM
21
+ from .other_clinical_endpoint_orm import OtherClinicalEndpointORM
22
+ from .other_malignancy_orm import OtherMalignancyORM
23
+ from .participant_orm import ParticipantORM
24
+ from .prior_treatment_orm import PriorTreatmentORM
25
+ from .publication_orm import PublicationORM
26
+ from .radiotherapy_dose_orm import RadiotherapyDoseORM
27
+ from .response_by_system_orm import ResponseBySystemORM
28
+ from .response_orm import ResponseORM
29
+ from .shipment_orm import ShipmentORM
30
+ from .shipment_specimen_orm import ShipmentSpecimenORM
31
+ from .specimen_orm import SpecimenORM
32
+ from .stem_cell_transplant_orm import StemCellTransplantORM
33
+ from .surgery_orm import SurgeryORM
34
+ from .therapy_agent_dose_orm import TherapyAgentDoseORM
35
+ from .treatment_orm import TreatmentORM
36
+ from .trial_orm import TrialORM
37
+
38
+
39
+ __all__ = [
40
+ "AdditionalTreatmentORM",
41
+ "AdministrativePersonORM",
42
+ "AdministrativeRoleAssignmentORM",
43
+ "AdverseEventORM",
44
+ "ArmORM",
45
+ "BaselineClinicalAssessmentORM",
46
+ "CohortORM",
47
+ "ComorbidityORM",
48
+ "ConsentGroupORM",
49
+ "ContactORM",
50
+ "DemographicORM",
51
+ "DiseaseORM",
52
+ "ExposureORM",
53
+ "FileORM",
54
+ "GVHDDiagnosisAcuteORM",
55
+ "GVHDDiagnosisChronicORM",
56
+ "GVHDOrganAcuteORM",
57
+ "GVHDOrganChronicORM",
58
+ "InstitutionORM",
59
+ "MedicalHistoryORM",
60
+ "OtherClinicalEndpointORM",
61
+ "OtherMalignancyORM",
62
+ "ParticipantORM",
63
+ "PriorTreatmentORM",
64
+ "PublicationORM",
65
+ "RadiotherapyDoseORM",
66
+ "ResponseBySystemORM",
67
+ "ResponseORM",
68
+ "ShipmentORM",
69
+ "ShipmentSpecimenORM",
70
+ "SpecimenORM",
71
+ "StemCellTransplantORM",
72
+ "SurgeryORM",
73
+ "TherapyAgentDoseORM",
74
+ "TreatmentORM",
75
+ "TrialORM",
76
+ ]
77
+
78
+ all_models = [globals()[cls_name] for cls_name in __all__]
@@ -0,0 +1,22 @@
1
+ from pydantic import NonNegativeInt
2
+ from typing import Optional
3
+
4
+ from sqlalchemy import ForeignKey
5
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
+
7
+ from cidc_api.models.db.base_orm import BaseORM
8
+
9
+
10
+ class AdditionalTreatmentORM(BaseORM):
11
+ __tablename__ = "additional_treatment"
12
+ __repr_attrs__ = ["additional_treatment_id", "participant_id", "description"]
13
+ __table_args__ = {"schema": "stage2"}
14
+
15
+ additional_treatment_id: Mapped[int] = mapped_column(primary_key=True)
16
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
17
+
18
+ days_to_start: Mapped[Optional[NonNegativeInt]]
19
+ days_to_end: Mapped[Optional[NonNegativeInt]]
20
+ description: Mapped[str]
21
+
22
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="additional_treatments", cascade="all, delete")
@@ -0,0 +1,25 @@
1
+ from typing import List
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+
8
+
9
+ class AdministrativePersonORM(BaseORM):
10
+ __tablename__ = "administrative_person"
11
+ __repr_attrs__ = ["first_name", "last_name"]
12
+ __table_args__ = {"schema": "stage2"}
13
+
14
+ administrative_person_id: Mapped[int] = mapped_column(primary_key=True)
15
+ institution_id: Mapped[int] = mapped_column(ForeignKey("stage2.institution.institution_id", ondelete="CASCADE"))
16
+ first_name: Mapped[str]
17
+ middle_name: Mapped[str | None]
18
+ last_name: Mapped[str]
19
+ email: Mapped[str | None]
20
+ phone_number: Mapped[str | None]
21
+
22
+ institution: Mapped["InstitutionORM"] = relationship(back_populates="administrative_people", cascade="all, delete")
23
+ administrative_role_assignments: Mapped[List["AdministrativeRoleAssignmentORM"]] = relationship(
24
+ back_populates="administrative_person", cascade="all, delete", passive_deletes=True
25
+ )
@@ -0,0 +1,28 @@
1
+ from sqlalchemy import ForeignKeyConstraint, ForeignKey
2
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
3
+
4
+ from cidc_api.models.db.base_orm import BaseORM
5
+ from cidc_api.models.types import AdministrativeRole
6
+
7
+
8
+ class AdministrativeRoleAssignmentORM(BaseORM):
9
+ __tablename__ = "administrative_role_assignment"
10
+ __repr_attrs__ = ["trial_id", "administrative_person_id", "administrative_role"]
11
+ __table_args__ = (
12
+ ForeignKeyConstraint(
13
+ ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
14
+ ),
15
+ {"schema": "stage2"},
16
+ )
17
+
18
+ trial_id: Mapped[str] = mapped_column(primary_key=True)
19
+ version: Mapped[str] = mapped_column(primary_key=True)
20
+ administrative_person_id: Mapped[int] = mapped_column(
21
+ ForeignKey("stage2.administrative_person.administrative_person_id", ondelete="CASCADE"), primary_key=True
22
+ )
23
+ administrative_role: Mapped[AdministrativeRole] = mapped_column(primary_key=True)
24
+
25
+ trial: Mapped["TrialORM"] = relationship(back_populates="administrative_role_assignments", cascade="all, delete")
26
+ administrative_person: Mapped["AdministrativePersonORM"] = relationship(
27
+ back_populates="administrative_role_assignments", cascade="all, delete"
28
+ )
@@ -0,0 +1,47 @@
1
+ from typing import Optional
2
+
3
+ from pydantic import NonNegativeInt
4
+ from sqlalchemy import ForeignKey
5
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
+
7
+ from cidc_api.models.db.base_orm import BaseORM
8
+ from cidc_api.models.types import (
9
+ CTCAEEventTerm,
10
+ CTCAEEventCode,
11
+ SeverityGradeSystem,
12
+ SeverityGradeSystemVersion,
13
+ SeverityGrade,
14
+ SystemOrganClass,
15
+ AttributionCause,
16
+ AttributionLikelihood,
17
+ YNU,
18
+ )
19
+
20
+
21
+ class AdverseEventORM(BaseORM):
22
+ __tablename__ = "adverse_event"
23
+ __repr_attrs__ = ["adverse_event_id", "participant_id", "event_term"]
24
+ __table_args__ = {"schema": "stage2"}
25
+
26
+ adverse_event_id: Mapped[int] = mapped_column(primary_key=True)
27
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
28
+ treatment_id: Mapped[Optional[int]] = mapped_column(ForeignKey("stage2.treatment.treatment_id", ondelete="CASCADE"))
29
+
30
+ event_term: Mapped[Optional[CTCAEEventTerm]]
31
+ event_code: Mapped[Optional[CTCAEEventCode]]
32
+ severity_grade_system: Mapped[SeverityGradeSystem]
33
+ severity_grade_system_version: Mapped[SeverityGradeSystemVersion]
34
+ severity_grade: Mapped[SeverityGrade]
35
+ event_other_specify: Mapped[Optional[str]]
36
+ system_organ_class: Mapped[Optional[SystemOrganClass]]
37
+ discontinuation_due_to_event: Mapped[bool]
38
+ days_to_onset_of_event: Mapped[NonNegativeInt]
39
+ days_to_resolution_of_event: Mapped[Optional[NonNegativeInt]]
40
+ serious_adverse_event: Mapped[YNU]
41
+ dose_limiting_toxicity: Mapped[YNU]
42
+ attribution_cause: Mapped[AttributionCause]
43
+ attribution_likelihood: Mapped[AttributionLikelihood]
44
+ individual_therapy: Mapped[Optional[str]]
45
+
46
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="adverse_events", cascade="all, delete")
47
+ treatment: Mapped["TreatmentORM"] = relationship(back_populates="adverse_events", cascade="all, delete")
@@ -0,0 +1,23 @@
1
+ from sqlalchemy import ForeignKey, ForeignKeyConstraint
2
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
3
+
4
+ from cidc_api.models.db.base_orm import BaseORM
5
+
6
+
7
+ class ArmORM(BaseORM):
8
+ __tablename__ = "arm"
9
+ __repr_attrs__ = ["trial_id", "arm_name"]
10
+ __table_args__ = (
11
+ ForeignKeyConstraint(
12
+ ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
13
+ ),
14
+ {"schema": "stage2"},
15
+ )
16
+
17
+ arm_id: Mapped[int] = mapped_column(primary_key=True)
18
+ trial_id: Mapped[str]
19
+ version: Mapped[str]
20
+
21
+ name: Mapped[str]
22
+
23
+ trial: Mapped["TrialORM"] = relationship(back_populates="arms", cascade="all, delete")
@@ -0,0 +1,23 @@
1
+ from typing import Optional
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import ECOGScore, KarnofskyScore
8
+
9
+
10
+ class BaselineClinicalAssessmentORM(BaseORM):
11
+ __tablename__ = "baseline_clinical_assessment"
12
+ __repr_attrs__ = ["baseline_clinical_assessment_id", "participant_id"]
13
+ __table_args__ = {"schema": "stage2"}
14
+
15
+ baseline_clinical_assessment_id: Mapped[int] = mapped_column(primary_key=True)
16
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
17
+
18
+ ecog_score: Mapped[Optional[ECOGScore]]
19
+ karnofsky_score: Mapped[Optional[KarnofskyScore]]
20
+
21
+ participant: Mapped["ParticipantORM"] = relationship(
22
+ back_populates="baseline_clinical_assessment", cascade="all, delete"
23
+ )
@@ -0,0 +1,23 @@
1
+ from sqlalchemy import ForeignKeyConstraint
2
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
3
+
4
+ from cidc_api.models.db.base_orm import BaseORM
5
+
6
+
7
+ class CohortORM(BaseORM):
8
+ __tablename__ = "cohort"
9
+ __repr_attrs__ = ["trial_id", "cohort_name"]
10
+ __table_args__ = (
11
+ ForeignKeyConstraint(
12
+ ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
13
+ ),
14
+ {"schema": "stage2"},
15
+ )
16
+
17
+ cohort_id: Mapped[int] = mapped_column(primary_key=True)
18
+ trial_id: Mapped[str]
19
+ version: Mapped[str]
20
+
21
+ name: Mapped[str]
22
+
23
+ trial: Mapped["TrialORM"] = relationship(back_populates="cohorts", cascade="all, delete")
@@ -0,0 +1,24 @@
1
+ from typing import Optional
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import ICD10CMCode, ICD10CMTerm
8
+
9
+
10
+ class ComorbidityORM(BaseORM):
11
+ __tablename__ = "comorbidity"
12
+ __repr_attrs__ = ["comorbidity_id", "comorbidity_term"]
13
+ __table_args__ = {"schema": "stage2"}
14
+
15
+ comorbidity_id: Mapped[int] = mapped_column(primary_key=True)
16
+ medical_history_id: Mapped[int] = mapped_column(
17
+ ForeignKey("stage2.medical_history.medical_history_id", ondelete="CASCADE")
18
+ )
19
+
20
+ comorbidity_code: Mapped[Optional[ICD10CMCode]]
21
+ comorbidity_term: Mapped[Optional[ICD10CMTerm]]
22
+ comorbidity_other: Mapped[Optional[str]]
23
+
24
+ medical_history: Mapped["MedicalHistoryORM"] = relationship(back_populates="comorbidities", cascade="all, delete")
@@ -0,0 +1,31 @@
1
+ from typing import List
2
+
3
+ from pydantic import NonNegativeInt
4
+ from sqlalchemy import ForeignKeyConstraint
5
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
+
7
+ from cidc_api.models.db.base_orm import BaseORM
8
+
9
+
10
+ class ConsentGroupORM(BaseORM):
11
+ __tablename__ = "consent_group"
12
+ __repr_attrs__ = ["consent_group_id", "consent_group_name"]
13
+ __table_args__ = (
14
+ ForeignKeyConstraint(
15
+ ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
16
+ ),
17
+ {"schema": "stage2"},
18
+ )
19
+
20
+ consent_group_id: Mapped[int] = mapped_column(primary_key=True)
21
+ trial_id: Mapped[str]
22
+ version: Mapped[str]
23
+
24
+ consent_group_short_name: Mapped[str]
25
+ consent_group_name: Mapped[str]
26
+ consent_group_number: Mapped[NonNegativeInt]
27
+
28
+ trial: Mapped["TrialORM"] = relationship(back_populates="consent_groups", cascade="all, delete")
29
+ participants: Mapped[List["ParticipantORM"]] = relationship(
30
+ back_populates="consent_group", cascade="all, delete", passive_deletes=True
31
+ )
@@ -0,0 +1,32 @@
1
+ from typing import Optional
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+
8
+
9
+ class ContactORM(BaseORM):
10
+ __tablename__ = "contact"
11
+ __table_args__ = {"schema": "stage2"}
12
+
13
+ contact_id: Mapped[int] = mapped_column(primary_key=True)
14
+ institution_id: Mapped[int] = mapped_column(ForeignKey("stage2.institution.institution_id", ondelete="CASCADE"))
15
+ shipment_from_id: Mapped[Optional[int]] = mapped_column(
16
+ ForeignKey("stage2.shipment.shipment_id", ondelete="CASCADE")
17
+ )
18
+ shipment_to_id: Mapped[Optional[int]] = mapped_column(ForeignKey("stage2.shipment.shipment_id", ondelete="CASCADE"))
19
+
20
+ name: Mapped[Optional[str]]
21
+ email: Mapped[Optional[str]]
22
+ phone: Mapped[Optional[str]]
23
+ street1: Mapped[Optional[str]]
24
+ street2: Mapped[Optional[str]]
25
+ city: Mapped[Optional[str]]
26
+ state: Mapped[Optional[str]]
27
+ zip: Mapped[Optional[str]]
28
+ country: Mapped[Optional[str]]
29
+
30
+ institution: Mapped[Optional["InstitutionORM"]] = relationship(back_populates="contacts", cascade="all, delete")
31
+ shipment_from: Mapped["ShipmentORM"] = relationship(cascade="all, delete", foreign_keys=[shipment_from_id])
32
+ shipment_to: Mapped["ShipmentORM"] = relationship(cascade="all, delete", foreign_keys=[shipment_to_id])
@@ -0,0 +1,44 @@
1
+ from pydantic import NonNegativeFloat, PositiveFloat, PositiveInt
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import (
8
+ Sex,
9
+ Race,
10
+ Ethnicity,
11
+ HeightUnits,
12
+ WeightUnits,
13
+ BodySurfaceAreaUnits,
14
+ Occupation,
15
+ Education,
16
+ AgeAtEnrollmentUnits,
17
+ )
18
+
19
+
20
+ class DemographicORM(BaseORM):
21
+ __tablename__ = "demographic"
22
+ __repr_attrs__ = ["demographic_id", "participant_id", "age_at_enrollment", "sex"]
23
+ __table_args__ = {"schema": "stage2"}
24
+
25
+ demographic_id: Mapped[int] = mapped_column(primary_key=True)
26
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
27
+ age_at_enrollment: Mapped[PositiveInt | None]
28
+ age_at_enrollment_units: Mapped[AgeAtEnrollmentUnits | None]
29
+ age_90_or_older: Mapped[bool]
30
+ sex: Mapped[Sex]
31
+ race: Mapped[Race]
32
+ ethnicity: Mapped[Ethnicity]
33
+ height: Mapped[PositiveFloat]
34
+ height_units: Mapped[HeightUnits]
35
+ weight: Mapped[PositiveFloat]
36
+ weight_units: Mapped[WeightUnits]
37
+ body_mass_index: Mapped[PositiveFloat]
38
+ body_surface_area: Mapped[PositiveFloat]
39
+ body_surface_area_units: Mapped[BodySurfaceAreaUnits]
40
+ occupation: Mapped[Occupation | None]
41
+ income: Mapped[NonNegativeFloat | None]
42
+ highest_level_of_education: Mapped[Education | None]
43
+
44
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="demographic", cascade="all, delete")
@@ -0,0 +1,53 @@
1
+ from typing import List, Optional
2
+
3
+ from pydantic import NonPositiveInt
4
+ from sqlalchemy import ForeignKey
5
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
+ from sqlalchemy.types import JSON
7
+
8
+ from cidc_api.models.db.base_orm import BaseORM
9
+ from cidc_api.models.types import (
10
+ PrimaryDiagnosisDiseaseGroup,
11
+ TumorGrade,
12
+ CancerStageSystem,
13
+ CancerStageSystemVersion,
14
+ CancerStage,
15
+ TCategory,
16
+ NCategory,
17
+ MCategory,
18
+ UberonAnatomicalTerm,
19
+ ICDO3MorphologicalCode,
20
+ ICDO3MorphologicalTerm,
21
+ YNU,
22
+ )
23
+ from sqlalchemy import String
24
+
25
+
26
+ class DiseaseORM(BaseORM):
27
+ __tablename__ = "disease"
28
+ __repr_attrs__ = [
29
+ "disease_id",
30
+ "participant_id",
31
+ ]
32
+ __table_args__ = {"schema": "stage2"}
33
+
34
+ disease_id: Mapped[int] = mapped_column(primary_key=True)
35
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
36
+ primary_diagnosis_disease_group: Mapped[PrimaryDiagnosisDiseaseGroup]
37
+ primary_disease_site: Mapped[UberonAnatomicalTerm]
38
+ morphological_code: Mapped[ICDO3MorphologicalCode]
39
+ morphological_term: Mapped[ICDO3MorphologicalTerm]
40
+ cancer_type_description: Mapped[str | None]
41
+ days_since_original_diagnosis: Mapped[NonPositiveInt]
42
+ tumor_grade: Mapped[TumorGrade | None]
43
+ cancer_stage_system: Mapped[CancerStageSystem]
44
+ cancer_stage_system_version: Mapped[CancerStageSystemVersion | None] = mapped_column(String, nullable=True)
45
+ cancer_stage: Mapped[CancerStage] = mapped_column(String)
46
+ t_category: Mapped[TCategory]
47
+ n_category: Mapped[NCategory]
48
+ m_category: Mapped[MCategory]
49
+ metastatic_organ: Mapped[List[UberonAnatomicalTerm]] = mapped_column(JSON, nullable=True)
50
+ solely_extramedullary_disease: Mapped[YNU]
51
+ extramedullary_organ: Mapped[List[UberonAnatomicalTerm]] = mapped_column(JSON, nullable=True)
52
+
53
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="diseases", cascade="all, delete")
@@ -0,0 +1,21 @@
1
+ from typing import List
2
+
3
+ from sqlalchemy import ForeignKey
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import YNU, ExposureType
8
+
9
+
10
+ class ExposureORM(BaseORM):
11
+ __tablename__ = "exposure"
12
+ __repr_attrs__ = ["exposure_id", "exposure_type", "carcinogen_exposure"]
13
+ __table_args__ = {"schema": "stage2"}
14
+
15
+ exposure_id: Mapped[int] = mapped_column(primary_key=True)
16
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
17
+
18
+ carcinogen_exposure: Mapped[YNU]
19
+ exposure_type: Mapped[ExposureType]
20
+
21
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="exposures", cascade="all, delete")
@@ -0,0 +1,38 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ from sqlalchemy import ForeignKeyConstraint, ForeignKey
5
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
+
7
+ from cidc_api.models.db.base_orm import BaseORM
8
+ from cidc_api.models.types import ChecksumType, FileFormat
9
+
10
+
11
+ class FileORM(BaseORM):
12
+ __tablename__ = "file"
13
+ __table_args__ = (
14
+ ForeignKeyConstraint(
15
+ ["trial_id", "version"], ["stage2.trial.trial_id", "stage2.trial.version"], ondelete="CASCADE"
16
+ ),
17
+ {"schema": "stage2"},
18
+ )
19
+
20
+ file_id: Mapped[int] = mapped_column(primary_key=True)
21
+ trial_id: Mapped[str]
22
+ version: Mapped[str]
23
+
24
+ creator_id: Mapped[Optional[int]] = mapped_column(
25
+ ForeignKey("stage2.institution.institution_id", ondelete="CASCADE")
26
+ )
27
+ description: Mapped[Optional[str]]
28
+ uuid: Mapped[str]
29
+ file_name: Mapped[str]
30
+ object_url: Mapped[str]
31
+ uploaded_timestamp: Mapped[datetime]
32
+ file_size_bytes: Mapped[int]
33
+ checksum_value: Mapped[str]
34
+ checksum_type: Mapped[ChecksumType]
35
+ file_format: Mapped[FileFormat]
36
+
37
+ trial: Mapped["TrialORM"] = relationship(back_populates="files", cascade="all, delete")
38
+ creator: Mapped[Optional["InstitutionORM"]] = relationship(back_populates="files", cascade="all, delete")
@@ -0,0 +1,33 @@
1
+ from typing import List
2
+
3
+ from sqlalchemy import ForeignKey, UniqueConstraint
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import (
8
+ GVHDDiagnosisAcuteAssessmentSystem,
9
+ GVHDDiagnosisAcuteAssessmentSystemVersion,
10
+ GVHDDiagnosisAcuteGrade,
11
+ PreOrPostEnrollment,
12
+ )
13
+
14
+
15
+ class GVHDDiagnosisAcuteORM(BaseORM):
16
+ __tablename__ = "gvhd_diagnosis_acute"
17
+ __table_args__ = (
18
+ UniqueConstraint("participant_id", "pre_or_post_enrollment", name="unique_ix_gvhd_diagnosis_acute_pre_or_post"),
19
+ {"schema": "stage2"},
20
+ )
21
+ __repr_attrs__ = ["gvhd_diagnosis_acute_id", "pre_or_post_enrollment"]
22
+
23
+ gvhd_diagnosis_acute_id: Mapped[int] = mapped_column(primary_key=True)
24
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
25
+ acute_assessment_system: Mapped[GVHDDiagnosisAcuteAssessmentSystem]
26
+ system_version: Mapped[GVHDDiagnosisAcuteAssessmentSystemVersion]
27
+ acute_grade: Mapped[GVHDDiagnosisAcuteGrade]
28
+ pre_or_post_enrollment: Mapped[PreOrPostEnrollment]
29
+
30
+ participant: Mapped["ParticipantORM"] = relationship(back_populates="gvhd_diagnosis_acutes", cascade="all, delete")
31
+ organs: Mapped[List["GVHDOrganAcuteORM"]] = relationship(
32
+ back_populates="diagnosis", cascade="all, delete", passive_deletes=True
33
+ )
@@ -0,0 +1,37 @@
1
+ from typing import List
2
+
3
+ from sqlalchemy import ForeignKey, UniqueConstraint
4
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
5
+
6
+ from cidc_api.models.db.base_orm import BaseORM
7
+ from cidc_api.models.types import (
8
+ GVHDDiagnosisChronicAssessmentSystem,
9
+ GVHDDiagnosisChronicAssessmentSystemVersion,
10
+ GVHDDiagnosisChronicGlobalSeverity,
11
+ PreOrPostEnrollment,
12
+ )
13
+
14
+
15
+ class GVHDDiagnosisChronicORM(BaseORM):
16
+ __tablename__ = "gvhd_diagnosis_chronic"
17
+ __table_args__ = (
18
+ UniqueConstraint(
19
+ "participant_id", "pre_or_post_enrollment", name="unique_ix_gvhd_diagnosis_chronic_pre_or_post"
20
+ ),
21
+ {"schema": "stage2"},
22
+ )
23
+ __repr_attrs__ = ["gvhd_diagnosis_chronic_id", "pre_or_post_enrollment"]
24
+
25
+ gvhd_diagnosis_chronic_id: Mapped[int] = mapped_column(primary_key=True)
26
+ participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
27
+ chronic_assessment_system: Mapped[GVHDDiagnosisChronicAssessmentSystem]
28
+ system_version: Mapped[GVHDDiagnosisChronicAssessmentSystemVersion]
29
+ chronic_global_severity: Mapped[GVHDDiagnosisChronicGlobalSeverity]
30
+ pre_or_post_enrollment: Mapped[PreOrPostEnrollment]
31
+
32
+ participant: Mapped["ParticipantORM"] = relationship(
33
+ back_populates="gvhd_diagnosis_chronics", cascade="all, delete"
34
+ )
35
+ organs: Mapped[List["GVHDOrganChronicORM"]] = relationship(
36
+ back_populates="diagnosis", cascade="all, delete", passive_deletes=True
37
+ )
@@ -0,0 +1,20 @@
1
+ from sqlalchemy import ForeignKey
2
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
3
+
4
+ from cidc_api.models.db.base_orm import BaseORM
5
+ from cidc_api.models.types import GVHDOrgan, GVHDOrganAcuteStage
6
+
7
+
8
+ class GVHDOrganAcuteORM(BaseORM):
9
+ __tablename__ = "gvhd_organ_acute"
10
+ __repr_attrs__ = ["gvhd_organ_acute_id", "organ"]
11
+ __table_args__ = {"schema": "stage2"}
12
+
13
+ gvhd_organ_acute_id: Mapped[int] = mapped_column(primary_key=True)
14
+ gvhd_diagnosis_acute_id: Mapped[int] = mapped_column(
15
+ ForeignKey("stage2.gvhd_diagnosis_acute.gvhd_diagnosis_acute_id", ondelete="CASCADE")
16
+ )
17
+ organ: Mapped[GVHDOrgan]
18
+ acute_stage: Mapped[GVHDOrganAcuteStage]
19
+
20
+ diagnosis: Mapped["GVHDDiagnosisAcuteORM"] = relationship(back_populates="organs", cascade="all, delete")
@@ -0,0 +1,20 @@
1
+ from sqlalchemy import ForeignKey
2
+ from sqlalchemy.orm import Mapped, mapped_column, relationship
3
+
4
+ from cidc_api.models.db.base_orm import BaseORM
5
+ from cidc_api.models.types import GVHDOrgan, GVHDOrganChronicScore
6
+
7
+
8
+ class GVHDOrganChronicORM(BaseORM):
9
+ __tablename__ = "gvhd_organ_chronic"
10
+ __repr_attrs__ = ["gvhd_organ_chronic_id", "organ"]
11
+ __table_args__ = {"schema": "stage2"}
12
+
13
+ gvhd_organ_chronic_id: Mapped[int] = mapped_column(primary_key=True)
14
+ gvhd_diagnosis_chronic_id: Mapped[int] = mapped_column(
15
+ ForeignKey("stage2.gvhd_diagnosis_chronic.gvhd_diagnosis_chronic_id", ondelete="CASCADE")
16
+ )
17
+ organ: Mapped[GVHDOrgan]
18
+ chronic_score: Mapped[GVHDOrganChronicScore]
19
+
20
+ diagnosis: Mapped["GVHDDiagnosisChronicORM"] = relationship(back_populates="organs", cascade="all, delete")