nci-cidc-api-modules 1.2.28__py3-none-any.whl → 1.2.30__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 (50) hide show
  1. cidc_api/models/data.py +4 -0
  2. cidc_api/models/db/stage2/additional_treatment_orm.py +1 -0
  3. cidc_api/models/db/stage2/adverse_event_orm.py +1 -0
  4. cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py +1 -0
  5. cidc_api/models/db/stage2/comorbidity_orm.py +1 -0
  6. cidc_api/models/db/stage2/consent_group_orm.py +1 -0
  7. cidc_api/models/db/stage2/demographic_orm.py +2 -1
  8. cidc_api/models/db/stage2/disease_orm.py +9 -10
  9. cidc_api/models/db/stage2/exposure_orm.py +2 -1
  10. cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py +1 -0
  11. cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py +1 -0
  12. cidc_api/models/db/stage2/gvhd_organ_acute_orm.py +1 -0
  13. cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py +1 -0
  14. cidc_api/models/db/stage2/medical_history_orm.py +1 -0
  15. cidc_api/models/db/stage2/other_malignancy_orm.py +1 -0
  16. cidc_api/models/db/stage2/participant_orm.py +4 -3
  17. cidc_api/models/db/stage2/prior_treatment_orm.py +1 -0
  18. cidc_api/models/db/stage2/radiotherapy_dose_orm.py +1 -0
  19. cidc_api/models/db/stage2/response_by_system_orm.py +1 -0
  20. cidc_api/models/db/stage2/response_orm.py +1 -0
  21. cidc_api/models/db/stage2/stem_cell_transplant_orm.py +1 -0
  22. cidc_api/models/db/stage2/surgery_orm.py +1 -0
  23. cidc_api/models/db/stage2/therapy_agent_dose_orm.py +1 -0
  24. cidc_api/models/db/stage2/treatment_orm.py +1 -0
  25. cidc_api/models/db/stage2/trial_orm.py +2 -2
  26. cidc_api/models/models.py +1 -0
  27. cidc_api/models/pydantic/stage2/additional_treatment.py +3 -1
  28. cidc_api/models/pydantic/stage2/adverse_event.py +1 -1
  29. cidc_api/models/pydantic/stage2/base.py +12 -0
  30. cidc_api/models/pydantic/stage2/baseline_clinical_assessment.py +1 -1
  31. cidc_api/models/pydantic/stage2/demographic.py +15 -14
  32. cidc_api/models/pydantic/stage2/disease.py +32 -18
  33. cidc_api/models/pydantic/stage2/exposure.py +2 -2
  34. cidc_api/models/pydantic/stage2/gvhd_diagnosis_acute.py +1 -1
  35. cidc_api/models/pydantic/stage2/gvhd_diagnosis_chronic.py +1 -1
  36. cidc_api/models/pydantic/stage2/medical_history.py +1 -1
  37. cidc_api/models/pydantic/stage2/participant.py +6 -5
  38. cidc_api/models/pydantic/stage2/prior_treatment.py +1 -1
  39. cidc_api/models/pydantic/stage2/radiotherapy_dose.py +1 -1
  40. cidc_api/models/pydantic/stage2/response.py +1 -1
  41. cidc_api/models/pydantic/stage2/response_by_system.py +5 -5
  42. cidc_api/models/pydantic/stage2/specimen.py +2 -2
  43. cidc_api/models/pydantic/stage2/treatment.py +1 -1
  44. cidc_api/models/pydantic/stage2/trial.py +2 -6
  45. cidc_api/models/types.py +12 -29
  46. {nci_cidc_api_modules-1.2.28.dist-info → nci_cidc_api_modules-1.2.30.dist-info}/METADATA +2 -1
  47. {nci_cidc_api_modules-1.2.28.dist-info → nci_cidc_api_modules-1.2.30.dist-info}/RECORD +50 -50
  48. {nci_cidc_api_modules-1.2.28.dist-info → nci_cidc_api_modules-1.2.30.dist-info}/WHEEL +0 -0
  49. {nci_cidc_api_modules-1.2.28.dist-info → nci_cidc_api_modules-1.2.30.dist-info}/licenses/LICENSE +0 -0
  50. {nci_cidc_api_modules-1.2.28.dist-info → nci_cidc_api_modules-1.2.30.dist-info}/top_level.txt +0 -0
cidc_api/models/data.py CHANGED
@@ -1,4 +1,5 @@
1
1
  from cidc_api.models.pydantic.stage2 import all_models
2
+ from cidc_api.models.db.stage2 import all_models as all_db_models
2
3
 
3
4
  standard_data_categories = [model.__data_category__ for model in all_models if hasattr(model, "__data_category__")]
4
5
 
@@ -13,3 +14,6 @@ class Dataset(dict):
13
14
 
14
15
  # Maps data categories like "treatment" to their associated pydantic model
15
16
  data_category_to_model = {model.__data_category__: model for model in all_models if hasattr(model, "__data_category__")}
17
+ data_category_to_db_model = {
18
+ model.__data_category__: model for model in all_db_models if hasattr(model, "__data_category__")
19
+ }
@@ -11,6 +11,7 @@ class AdditionalTreatmentORM(BaseORM):
11
11
  __tablename__ = "additional_treatment"
12
12
  __repr_attrs__ = ["additional_treatment_id", "participant_id", "description"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "additional_treatment"
14
15
 
15
16
  additional_treatment_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -22,6 +22,7 @@ class AdverseEventORM(BaseORM):
22
22
  __tablename__ = "adverse_event"
23
23
  __repr_attrs__ = ["adverse_event_id", "participant_id", "event_term"]
24
24
  __table_args__ = {"schema": "stage2"}
25
+ __data_category__ = "adverse_event"
25
26
 
26
27
  adverse_event_id: Mapped[int] = mapped_column(primary_key=True)
27
28
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -11,6 +11,7 @@ class BaselineClinicalAssessmentORM(BaseORM):
11
11
  __tablename__ = "baseline_clinical_assessment"
12
12
  __repr_attrs__ = ["baseline_clinical_assessment_id", "participant_id"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "baseline_clinical_assessment"
14
15
 
15
16
  baseline_clinical_assessment_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -11,6 +11,7 @@ class ComorbidityORM(BaseORM):
11
11
  __tablename__ = "comorbidity"
12
12
  __repr_attrs__ = ["comorbidity_id", "comorbidity_term"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "comorbidity"
14
15
 
15
16
  comorbidity_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  medical_history_id: Mapped[int] = mapped_column(
@@ -16,6 +16,7 @@ class ConsentGroupORM(BaseORM):
16
16
  ),
17
17
  {"schema": "stage2"},
18
18
  )
19
+ __data_category__ = "consent_group"
19
20
 
20
21
  consent_group_id: Mapped[int] = mapped_column(primary_key=True)
21
22
  trial_id: Mapped[str]
@@ -21,12 +21,13 @@ class DemographicORM(BaseORM):
21
21
  __tablename__ = "demographic"
22
22
  __repr_attrs__ = ["demographic_id", "participant_id", "age_at_enrollment", "sex"]
23
23
  __table_args__ = {"schema": "stage2"}
24
+ __data_category__ = "demographic"
24
25
 
25
26
  demographic_id: Mapped[int] = mapped_column(primary_key=True)
26
27
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
27
28
  age_at_enrollment: Mapped[PositiveInt | None]
28
29
  age_at_enrollment_units: Mapped[AgeAtEnrollmentUnits | None]
29
- age_90_or_older: Mapped[bool]
30
+ age_90_or_over: Mapped[bool]
30
31
  sex: Mapped[Sex]
31
32
  race: Mapped[Race]
32
33
  ethnicity: Mapped[Ethnicity]
@@ -7,7 +7,6 @@ from sqlalchemy.types import JSON
7
7
 
8
8
  from cidc_api.models.db.base_orm import BaseORM
9
9
  from cidc_api.models.types import (
10
- PrimaryDiagnosisDiseaseGroup,
11
10
  TumorGrade,
12
11
  CancerStageSystem,
13
12
  CancerStageSystemVersion,
@@ -30,23 +29,23 @@ class DiseaseORM(BaseORM):
30
29
  "participant_id",
31
30
  ]
32
31
  __table_args__ = {"schema": "stage2"}
32
+ __data_category__ = "disease"
33
33
 
34
34
  disease_id: Mapped[int] = mapped_column(primary_key=True)
35
35
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
36
- primary_diagnosis_disease_group: Mapped[PrimaryDiagnosisDiseaseGroup]
37
36
  primary_disease_site: Mapped[UberonAnatomicalTerm]
38
- morphological_code: Mapped[ICDO3MorphologicalCode]
39
- morphological_term: Mapped[ICDO3MorphologicalTerm]
37
+ morphological_code: Mapped[ICDO3MorphologicalCode | None]
38
+ morphological_term: Mapped[ICDO3MorphologicalTerm | None]
40
39
  cancer_type_description: Mapped[str | None]
41
- days_since_original_diagnosis: Mapped[NonPositiveInt]
40
+ days_since_original_diagnosis: Mapped[NonPositiveInt | None]
42
41
  tumor_grade: Mapped[TumorGrade | None]
43
42
  cancer_stage_system: Mapped[CancerStageSystem]
44
43
  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)
44
+ cancer_stage: Mapped[CancerStage | None] = mapped_column(String)
45
+ t_category: Mapped[TCategory | None]
46
+ n_category: Mapped[NCategory | None]
47
+ m_category: Mapped[MCategory | None]
48
+ metastatic_organ: Mapped[List[UberonAnatomicalTerm] | None] = mapped_column(JSON, nullable=True)
50
49
  solely_extramedullary_disease: Mapped[YNU]
51
50
  extramedullary_organ: Mapped[List[UberonAnatomicalTerm]] = mapped_column(JSON, nullable=True)
52
51
 
@@ -11,11 +11,12 @@ class ExposureORM(BaseORM):
11
11
  __tablename__ = "exposure"
12
12
  __repr_attrs__ = ["exposure_id", "exposure_type", "carcinogen_exposure"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "exposure"
14
15
 
15
16
  exposure_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
17
18
 
18
19
  carcinogen_exposure: Mapped[YNU]
19
- exposure_type: Mapped[ExposureType]
20
+ exposure_type: Mapped[ExposureType | None]
20
21
 
21
22
  participant: Mapped["ParticipantORM"] = relationship(back_populates="exposures", cascade="all, delete")
@@ -19,6 +19,7 @@ class GVHDDiagnosisAcuteORM(BaseORM):
19
19
  {"schema": "stage2"},
20
20
  )
21
21
  __repr_attrs__ = ["gvhd_diagnosis_acute_id", "pre_or_post_enrollment"]
22
+ __data_category__ = "gvhd_diagnosis_acute"
22
23
 
23
24
  gvhd_diagnosis_acute_id: Mapped[int] = mapped_column(primary_key=True)
24
25
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -21,6 +21,7 @@ class GVHDDiagnosisChronicORM(BaseORM):
21
21
  {"schema": "stage2"},
22
22
  )
23
23
  __repr_attrs__ = ["gvhd_diagnosis_chronic_id", "pre_or_post_enrollment"]
24
+ __data_category__ = "gvhd_diagnosis_chronic"
24
25
 
25
26
  gvhd_diagnosis_chronic_id: Mapped[int] = mapped_column(primary_key=True)
26
27
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -9,6 +9,7 @@ class GVHDOrganAcuteORM(BaseORM):
9
9
  __tablename__ = "gvhd_organ_acute"
10
10
  __repr_attrs__ = ["gvhd_organ_acute_id", "organ"]
11
11
  __table_args__ = {"schema": "stage2"}
12
+ __data_category__ = "gvhd_organ_acute"
12
13
 
13
14
  gvhd_organ_acute_id: Mapped[int] = mapped_column(primary_key=True)
14
15
  gvhd_diagnosis_acute_id: Mapped[int] = mapped_column(
@@ -9,6 +9,7 @@ class GVHDOrganChronicORM(BaseORM):
9
9
  __tablename__ = "gvhd_organ_chronic"
10
10
  __repr_attrs__ = ["gvhd_organ_chronic_id", "organ"]
11
11
  __table_args__ = {"schema": "stage2"}
12
+ __data_category__ = "gvhd_organ_chronic"
12
13
 
13
14
  gvhd_organ_chronic_id: Mapped[int] = mapped_column(primary_key=True)
14
15
  gvhd_diagnosis_chronic_id: Mapped[int] = mapped_column(
@@ -12,6 +12,7 @@ class MedicalHistoryORM(BaseORM):
12
12
  __tablename__ = "medical_history"
13
13
  __repr_attrs__ = ["medical_history_id"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "medical_history"
15
16
 
16
17
  medical_history_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -12,6 +12,7 @@ class OtherMalignancyORM(BaseORM):
12
12
  __tablename__ = "other_malignancy"
13
13
  __repr_attrs__ = ["other_malignancy_id", "primary_disease_site"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "other_malignancy"
15
16
 
16
17
  other_malignancy_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  medical_history_id: Mapped[int] = mapped_column(
@@ -4,7 +4,7 @@ from sqlalchemy import ForeignKey, ForeignKeyConstraint
4
4
  from sqlalchemy.orm import Mapped, mapped_column, relationship
5
5
 
6
6
  from cidc_api.models.db.base_orm import BaseORM
7
- from cidc_api.models.types import OffStudyReason
7
+ from cidc_api.models.types import OffStudyReason, YNU
8
8
 
9
9
 
10
10
  class ParticipantORM(BaseORM):
@@ -16,17 +16,18 @@ class ParticipantORM(BaseORM):
16
16
  ),
17
17
  {"schema": "stage2"},
18
18
  )
19
+ __data_category__ = "participant"
19
20
 
20
21
  participant_id: Mapped[int] = mapped_column(primary_key=True)
21
22
  trial_id: Mapped[str]
22
23
  version: Mapped[str]
23
24
 
24
- native_participant_id: Mapped[str]
25
+ native_participant_id: Mapped[str | None]
25
26
  cimac_participant_id: Mapped[str] = mapped_column(unique=True)
26
27
  consent_group_id: Mapped[Optional[int]] = mapped_column(
27
28
  ForeignKey("stage2.consent_group.consent_group_id", ondelete="CASCADE")
28
29
  )
29
- off_study: Mapped[bool]
30
+ off_study: Mapped[YNU]
30
31
  off_study_reason: Mapped[Optional[OffStudyReason]]
31
32
  off_study_reason_other: Mapped[Optional[str]]
32
33
 
@@ -12,6 +12,7 @@ class PriorTreatmentORM(BaseORM):
12
12
  __tablename__ = "prior_treatment"
13
13
  __repr_attrs__ = ["prior_treatment_id", "type"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "prior_treatment"
15
16
 
16
17
  prior_treatment_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -18,6 +18,7 @@ class RadiotherapyDoseORM(BaseORM):
18
18
  __tablename__ = "radiotherapy_dose"
19
19
  __repr_attrs__ = ["radiotherapy_dose_id", "procedure"]
20
20
  __table_args__ = {"schema": "stage2"}
21
+ __data_category__ = "radiotherapy_dose"
21
22
 
22
23
  radiotherapy_dose_id: Mapped[int] = mapped_column(primary_key=True)
23
24
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage2.treatment.treatment_id", ondelete="CASCADE"))
@@ -10,6 +10,7 @@ class ResponseBySystemORM(BaseORM):
10
10
  __tablename__ = "response_by_system"
11
11
  __repr_attrs__ = ["response_by_system_id", "participant_id"]
12
12
  __table_args__ = {"schema": "stage2"}
13
+ __data_category__ = "response_by_system"
13
14
 
14
15
  response_by_system_id: Mapped[int] = mapped_column(primary_key=True)
15
16
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -11,6 +11,7 @@ class ResponseORM(BaseORM):
11
11
  __tablename__ = "response"
12
12
  __repr_attrs__ = ["response_id", "participant_id"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "response"
14
15
 
15
16
  response_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -12,6 +12,7 @@ class StemCellTransplantORM(BaseORM):
12
12
  __tablename__ = "stem_cell_transplant"
13
13
  __repr_attrs__ = ["stem_cell_transplant_id"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "stem_cell_transplant"
15
16
 
16
17
  stem_cell_transplant_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage2.treatment.treatment_id", ondelete="CASCADE"))
@@ -12,6 +12,7 @@ class SurgeryORM(BaseORM):
12
12
  __tablename__ = "surgery"
13
13
  __repr_attrs__ = ["surgery_id", "procedure"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "surgery"
15
16
 
16
17
  surgery_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage2.treatment.treatment_id", ondelete="CASCADE"))
@@ -12,6 +12,7 @@ class TherapyAgentDoseORM(BaseORM):
12
12
  __tablename__ = "therapy_agent_dose"
13
13
  __repr_attrs__ = ["therapy_agent_dose_id", "therapy_agent_name"]
14
14
  __table_args__ = {"schema": "stage2"}
15
+ __data_category__ = "therapy_agent_dose"
15
16
 
16
17
  therapy_agent_dose_id: Mapped[int] = mapped_column(primary_key=True)
17
18
  treatment_id: Mapped[int] = mapped_column(ForeignKey("stage2.treatment.treatment_id", ondelete="CASCADE"))
@@ -11,6 +11,7 @@ class TreatmentORM(BaseORM):
11
11
  __tablename__ = "treatment"
12
12
  __repr_attrs__ = ["treatment_id", "participant_id", "treatment_description"]
13
13
  __table_args__ = {"schema": "stage2"}
14
+ __data_category__ = "treatment"
14
15
 
15
16
  treatment_id: Mapped[int] = mapped_column(primary_key=True)
16
17
  participant_id: Mapped[int] = mapped_column(ForeignKey("stage2.participant.participant_id", ondelete="CASCADE"))
@@ -6,13 +6,14 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship
6
6
  from sqlalchemy.types import JSON
7
7
 
8
8
  from cidc_api.models.db.base_orm import BaseORM
9
- from cidc_api.models.types import TrialStatus, AssayType, TrialOrganization, TrialFundingAgency
9
+ from cidc_api.models.types import AssayType, TrialOrganization, TrialFundingAgency
10
10
 
11
11
 
12
12
  class TrialORM(BaseORM):
13
13
  __tablename__ = "trial"
14
14
  __repr_attrs__ = ["trial_id", "version"]
15
15
  __table_args__ = {"schema": "stage2"}
16
+ __data_category__ = "study"
16
17
 
17
18
  trial_id: Mapped[str] = mapped_column(primary_key=True)
18
19
  version: Mapped[str] = mapped_column(primary_key=True)
@@ -24,7 +25,6 @@ class TrialORM(BaseORM):
24
25
  trial_description: Mapped[Optional[str]]
25
26
  trial_organization: Mapped[Optional[TrialOrganization]]
26
27
  grant_or_affiliated_network: Mapped[Optional[TrialFundingAgency]]
27
- trial_status: Mapped[TrialStatus]
28
28
  biobank_institution_id: Mapped[Optional[int]]
29
29
  justification: Mapped[Optional[str]]
30
30
  dates_of_conduct_start: Mapped[datetime]
cidc_api/models/models.py CHANGED
@@ -3399,6 +3399,7 @@ class PreprocessedFiles(CommonColumns):
3399
3399
  (cls.file_category == latest_subquery.c.file_category)
3400
3400
  & (cls._created == latest_subquery.c.latest_created),
3401
3401
  )
3402
+ .order_by(cls.file_category)
3402
3403
  .all()
3403
3404
  )
3404
3405
  return latest_files
@@ -10,7 +10,9 @@ class AdditionalTreatment(Base):
10
10
  additional_treatment_id: int | None = None
11
11
 
12
12
  # The unique internal identifier for the associated Participant record
13
- participant_id: int | None = None
13
+ participant_id: str | None = (
14
+ None # TODO: fix all stage2 models for participant_id to not be nullable, after s1 models are complete
15
+ )
14
16
 
15
17
  # Number of days from the enrollment date to the first recorded administration or occurrence of the treatment modality.
16
18
  days_to_start: NonNegativeInt | None = None
@@ -25,7 +25,7 @@ class AdverseEvent(Base):
25
25
  adverse_event_id: int | None = None
26
26
 
27
27
  # The unique internal identifier of the associated participant
28
- participant_id: int | None = None
28
+ participant_id: str | None = None
29
29
 
30
30
  # The unique internal identifier of the attributed treatment, if any
31
31
  treatment_id: int | None = None
@@ -28,3 +28,15 @@ class Base(BaseModel):
28
28
  except:
29
29
  self.__dict__.update(original_dict)
30
30
  raise
31
+
32
+ @classmethod
33
+ def split_list(cls, val):
34
+ """Listify fields that are multi-valued in input data, e.g. 'lung|kidney'"""
35
+ if type(val) == list:
36
+ return val
37
+ elif type(val) == str:
38
+ if not val:
39
+ return []
40
+ return val.split("|")
41
+ else:
42
+ raise ValueError("Field value must be string or list")
@@ -10,7 +10,7 @@ class BaselineClinicalAssessment(Base):
10
10
  baseline_clinical_assessment_id: int | None = None
11
11
 
12
12
  # The unique identifier for the associated participant
13
- participant_id: int | None = None
13
+ participant_id: str | None = None
14
14
 
15
15
  # The numerical score that represents the functional capabilities of a participant at the
16
16
  # enrollment date using the Eastern Cooperative Oncology Group Performance Status assessment.
@@ -1,6 +1,6 @@
1
- from typing import Self
1
+ from typing import Self, Annotated, List
2
2
 
3
- from pydantic import PositiveInt, NonNegativeFloat, PositiveFloat, model_validator, field_validator
3
+ from pydantic import PositiveInt, NonNegativeFloat, PositiveFloat, model_validator, field_validator, BeforeValidator
4
4
 
5
5
  from .base import Base
6
6
  from cidc_api.models.types import (
@@ -25,7 +25,7 @@ class Demographic(Base):
25
25
 
26
26
  # The unique internal identifier for the associated participant
27
27
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
28
- participant_id: int | None = None
28
+ participant_id: str | None = None
29
29
 
30
30
  # The age of the subject when the subject enrolled in the study.
31
31
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=15742605%20and%20ver_nr=1
@@ -34,9 +34,9 @@ class Demographic(Base):
34
34
  # Unit of measurement for the age of the participant. e.g. "Years"
35
35
  age_at_enrollment_units: AgeAtEnrollmentUnits | None = None
36
36
 
37
- # Indicates whether the participant is 90 years old or older. (for PHI purposes)
37
+ # Indicates whether the participant is 90 years old or over. (for PHI purposes)
38
38
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=15354920%20and%20ver_nr=1
39
- age_90_or_older: bool
39
+ age_90_or_over: bool
40
40
 
41
41
  # A textual description of a person's sex at birth. e.g. "Male"
42
42
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=7572817%20and%20ver_nr=3
@@ -44,7 +44,7 @@ class Demographic(Base):
44
44
 
45
45
  # The race of the participant. e.g. "White"
46
46
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=2192199%20and%20ver_nr=1
47
- race: Race
47
+ race: Annotated[List[Race], BeforeValidator(Base.split_list)]
48
48
 
49
49
  # The ethnicity of the participant. e.g. "Hispanic or Latino"
50
50
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=2192217%20and%20ver_nr=2
@@ -92,23 +92,24 @@ class Demographic(Base):
92
92
 
93
93
  @model_validator(mode="after")
94
94
  def validate_age_at_enrollment_cr(self) -> Self:
95
- if self.age_90_or_older:
95
+ if self.age_90_or_over:
96
96
  if self.age_at_enrollment or self.age_at_enrollment_units:
97
97
  raise ValueError(
98
- 'If "age_90_or_older" is "Yes" then "age_at_enrollment" and "age_at_enrollment_units" must be blank.'
98
+ 'If "age_90_or_over" is "Yes" then "age_at_enrollment" and "age_at_enrollment_units" must be blank.'
99
99
  )
100
100
  else:
101
101
  if not self.age_at_enrollment or not self.age_at_enrollment_units:
102
102
  raise ValueError(
103
- 'If "age_90_or_older" is "No" then "age_at_enrollment" and "age_at_enrollment_units" are required.'
103
+ 'If "age_90_or_over" is "No" then "age_at_enrollment" and "age_at_enrollment_units" are required.'
104
104
  )
105
105
  return self
106
106
 
107
107
  @model_validator(mode="after")
108
108
  def validate_age_at_enrollment_value(self) -> Self:
109
- age_in_years = (
110
- self.age_at_enrollment if self.age_at_enrollment_units == "Years" else self.age_at_enrollment / 365.25
111
- )
112
- if age_in_years >= 90:
113
- raise ValueError('"age_at_enrollment" cannot represent a value greater than 90 years of age.')
109
+ if not self.age_90_or_over:
110
+ age_in_years = (
111
+ self.age_at_enrollment if self.age_at_enrollment_units == "Years" else self.age_at_enrollment / 365.25
112
+ )
113
+ if age_in_years >= 90:
114
+ raise ValueError('"age_at_enrollment" cannot represent a value greater than 90 years of age.')
114
115
  return self
@@ -1,12 +1,14 @@
1
- from pydantic import NonPositiveInt, model_validator
2
- from typing import List, Self
1
+ from pydantic import NonPositiveInt, model_validator, BeforeValidator
2
+ from typing import List, Self, Annotated, get_args
3
3
 
4
4
  from .base import Base
5
5
  from cidc_api.models.types import (
6
- PrimaryDiagnosisDiseaseGroup,
7
6
  TumorGrade,
8
7
  CancerStageSystem,
9
8
  CancerStageSystemVersion,
9
+ CancerStageSystemVersionAJCC,
10
+ CancerStageSystemVersionRISS,
11
+ CancerStageSystemVersionFIGO,
10
12
  CancerStage,
11
13
  TCategory,
12
14
  NCategory,
@@ -27,12 +29,7 @@ class Disease(Base):
27
29
 
28
30
  # The unique internal identifier for the associated participant
29
31
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
30
- participant_id: int | None = None
31
-
32
- # A term describing the main condition for evaluation and treatment as captured in the Disease or Diagnosis (C2991)
33
- # branch of the National Cancer Institute Thesaurus (NCIt) hierarchy tree. e.g. "Melanoma"
34
- # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=14905532%20and%20ver_nr=1
35
- primary_diagnosis_disease_group: PrimaryDiagnosisDiseaseGroup
32
+ participant_id: str | None = None
36
33
 
37
34
  # The location within the body from where the disease of interest originated as captured in the Uberon identifier. e.g. "lung"
38
35
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=14883047%20and%20ver_nr=1
@@ -40,18 +37,18 @@ class Disease(Base):
40
37
 
41
38
  # The ICD-O-3 morphology code that describes the tumor's histology, behavior, and grade-differentiation. e.g. "8480/6"
42
39
  # CDE: TBD
43
- morphological_code: ICDO3MorphologicalCode
40
+ morphological_code: ICDO3MorphologicalCode | None
44
41
 
45
42
  # The ICD-O-3 morphology term that describes the tumor's type. e.g. "Mucinous adenoma"
46
43
  # CDE: TBD
47
- morphological_term: ICDO3MorphologicalTerm
44
+ morphological_term: ICDO3MorphologicalTerm | None
48
45
 
49
46
  # Words that broadly describe the cancer's characteristics and type. e.g. "Inflitrating Ductal Carcinoma"
50
47
  # CDE: TBD
51
48
  cancer_type_description: str | None = None
52
49
 
53
50
  # The number of days elapsed since the participant was first diagnosed with this condition.
54
- days_since_original_diagnosis: NonPositiveInt
51
+ days_since_original_diagnosis: NonPositiveInt | None
55
52
 
56
53
  # Words that express the degree of abnormality of cancer cells as a measure of differentiation and aggressiveness. e.g. "G1 Low Grade"
57
54
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=11325685%20and%20ver_nr=2
@@ -68,32 +65,32 @@ class Disease(Base):
68
65
  # CDE(AJCC): https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=3440332%20and%20ver_nr=1
69
66
  # CDE(FIGO): TBD
70
67
  # CDE(RISS): TBD
71
- cancer_stage: CancerStage
68
+ cancer_stage: CancerStage | None = None
72
69
 
73
70
  # Extent of the primary cancer based on evidence obtained from clinical assessment parameters determined prior to treatment. e.g. "T0"
74
71
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=3440328%20and%20ver_nr=1
75
72
  # TODO: Verify this CDE
76
- t_category: TCategory
73
+ t_category: TCategory | None = None
77
74
 
78
75
  # Extent of the regional lymph node involvement for the cancer based on evidence obtained from clinical assessment parameters
79
76
  # determined prior to treatment. e.g. "N0"
80
77
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=3440330%20and%20ver_nr=1
81
78
  # TODO: Verify this CDE
82
- n_category: NCategory
79
+ n_category: NCategory | None = None
83
80
 
84
81
  # Extent of the distant metastasis for the cancer based on evidence obtained from clinical assessment parameters determined
85
82
  # prior to treatment. e.g. "M0"
86
83
  # CDE: https://teams.microsoft.com/l/message/19:1c292b63-5df1-4f29-b177-86aed53f393d_f224ae83-209b-4cd9-a7ef-83d9d2120a27@unq.gbl.spaces/1758827414202?context=%7B%22contextType%22%3A%22chat%22%7D
87
84
  # TODO: Verify this CDE
88
- m_category: MCategory
85
+ m_category: MCategory | None = None
89
86
 
90
87
  # The organ site where a tumor develops outside of the bone marrow as specified in the Uberon antatomical term.
91
- metastatic_organ: List[UberonAnatomicalTerm] = []
88
+ metastatic_organ: Annotated[List[UberonAnatomicalTerm] | None, BeforeValidator(Base.split_list)] = []
92
89
 
93
90
  # Indicates if participant has a hematological malignancy that is only extramedullary. e.g. "Yes"
94
91
  solely_extramedullary_disease: YNU
95
92
 
96
- extramedullary_organ: List[UberonAnatomicalTerm] = []
93
+ extramedullary_organ: Annotated[List[UberonAnatomicalTerm] | None, BeforeValidator(Base.split_list)] = []
97
94
 
98
95
  @model_validator(mode="after")
99
96
  def validate_code_or_term_or_description_cr(self) -> Self:
@@ -103,6 +100,23 @@ class Disease(Base):
103
100
  )
104
101
  return self
105
102
 
103
+ @model_validator(mode="after")
104
+ def validate_cancer_stage_system_version(self) -> Self:
105
+ msg = f"{self.cancer_stage_system_version} is not applicable to {self.cancer_stage_system}"
106
+ if self.cancer_stage_system == "AJCC" and self.cancer_stage_system_version not in get_args(
107
+ CancerStageSystemVersionAJCC
108
+ ):
109
+ raise ValueError(msg)
110
+ elif self.cancer_stage_system == "RISS" and self.cancer_stage_system_version not in get_args(
111
+ CancerStageSystemVersionRISS
112
+ ):
113
+ raise ValueError(msg)
114
+ elif self.cancer_stage_system == "FIGO" and self.cancer_stage_system_version not in get_args(
115
+ CancerStageSystemVersionFIGO
116
+ ):
117
+ raise ValueError(msg)
118
+ return self
119
+
106
120
  @model_validator(mode="after")
107
121
  def validate_cancer_stage_system_version_cr(self) -> Self:
108
122
  if self.cancer_stage_system != "Not Applicable" and not self.cancer_stage_system_version:
@@ -14,7 +14,7 @@ class Exposure(Base):
14
14
  exposure_id: int | None = None
15
15
 
16
16
  # The unique identifier for the associated participant
17
- participant_id: int | None = None
17
+ participant_id: str | None = None
18
18
 
19
19
  # An indication of whether the subject was exposed to any chemical, biological or physical agents
20
20
  # that increase the risk of neoplasms in humans or animals.
@@ -23,7 +23,7 @@ class Exposure(Base):
23
23
 
24
24
  # The type of potentially harmful environmental agents to which an individual was exposed.
25
25
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=15753203%20and%20ver_nr=1
26
- exposure_type: ExposureType
26
+ exposure_type: ExposureType | None = None
27
27
 
28
28
  @model_validator(mode="after")
29
29
  def validate_exposure_type_cr(self) -> Self:
@@ -15,7 +15,7 @@ class GVHDDiagnosisAcute(Base):
15
15
  gvhd_diagnosis_acute_id: int | None = None
16
16
 
17
17
  # The unique internal identifier for the associated participant
18
- participant_id: int | None = None
18
+ participant_id: str | None = None
19
19
 
20
20
  # The clinical grading system used to stage involvement of affected organs (skin, liver, GI tract)
21
21
  # in acute GVHD and assign an overall severity grade (I–IV) based on predefined criteria.
@@ -15,7 +15,7 @@ class GVHDDiagnosisChronic(Base):
15
15
  gvhd_diagnosis_chronic_id: int | None = None
16
16
 
17
17
  # The unique internal identifier for the associated participant
18
- participant_id: int | None = None
18
+ participant_id: str | None = None
19
19
 
20
20
  # The standardized clinical system used to evaluate and grade the extent and severity
21
21
  # of organ involvement in chronic GVHD, resulting in an overall disease severity score.
@@ -14,7 +14,7 @@ class MedicalHistory(Base):
14
14
  medical_history_id: int | None = None
15
15
 
16
16
  # The unique identifier for the associated participant
17
- participant_id: int | None = None
17
+ participant_id: str | None = None
18
18
 
19
19
  # Text representation of a person's status relative to smoking tobacco in the form of cigarettes,
20
20
  # based on questions about current and former use of cigarettes.
@@ -3,6 +3,7 @@ from typing import Self
3
3
  from pydantic import model_validator
4
4
 
5
5
  from .base import Base
6
+ from cidc_api.models.types import YNU
6
7
  from cidc_api.models.types import OffStudyReason
7
8
 
8
9
 
@@ -12,20 +13,20 @@ class Participant(Base):
12
13
 
13
14
  # The unique internal identifier for the participant
14
15
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
15
- participant_id: int | None = None
16
+ participant_id: str | None = None
16
17
 
17
18
  # The participant identifier assigned by the clinical trial team overseeing the study
18
- native_participant_id: str
19
+ native_participant_id: str | None = None
19
20
 
20
21
  # The globally unique participant identifier assigned by the CIMAC network. e.g. C8P29A7
21
- cimac_participant_id: str
22
+ cimac_participant_id: str | None = None
22
23
 
23
24
  # The unique identifier for the associated trial that the participant is participating in
24
25
  trial_id: int | None = None
25
26
 
26
27
  # Indicates if the individual is no longer actively participating in the clinical trial.
27
28
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=14834973%20and%20ver_nr=1
28
- off_study: bool
29
+ off_study: YNU
29
30
 
30
31
  # An explanation describing why an individual is no longer participating in the clinical trial.
31
32
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=13362265%20and%20ver_nr=1
@@ -36,7 +37,7 @@ class Participant(Base):
36
37
 
37
38
  @model_validator(mode="after")
38
39
  def off_study_reason_cr(self) -> Self:
39
- if self.off_study and not self.off_study_reason:
40
+ if self.off_study == "Yes" and not self.off_study_reason:
40
41
  raise ValueError('If "off_study" is "Yes" then "off_study_reason" is required.')
41
42
  return self
42
43
 
@@ -14,7 +14,7 @@ class PriorTreatment(Base):
14
14
  prior_treatment_id: int | None = None
15
15
 
16
16
  # A unique internal identifier for the associated participant record
17
- participant_id: int | None = None
17
+ participant_id: str | None = None
18
18
 
19
19
  # Number of days from the enrollment date to the first recorded administration or occurrence of
20
20
  # the treatment modality.
@@ -17,7 +17,7 @@ class RadiotherapyDose(Base):
17
17
  __cardinality__ = "many"
18
18
 
19
19
  # The unique internal identifier for the radiotherapy dose record
20
- therapy_agent_dose_id: int | None = None
20
+ radiotherapy_dose_id: int | None = None
21
21
 
22
22
  # The unique internal identifier for the associated treatment record
23
23
  treatment_id: int | None = None
@@ -15,7 +15,7 @@ class Response(Base):
15
15
 
16
16
  # The unique internal identifier for the associated participant
17
17
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
18
- participant_id: int | None = None
18
+ participant_id: str | None = None
19
19
 
20
20
  # The response to a question that describes a participant's survival status.
21
21
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=2847330%20and%20ver_nr=1
@@ -26,7 +26,7 @@ class ResponseBySystem(Base):
26
26
 
27
27
  # The unique internal identifier for the associated participant
28
28
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
29
- participant_id: int | None = None
29
+ participant_id: str | None = None
30
30
 
31
31
  # A standardized method used to evaluate and categorize the participant’s clinical response to treatment based on predefined criteria.
32
32
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=13381490%20and%20ver_nr=1
@@ -67,8 +67,8 @@ class ResponseBySystem(Base):
67
67
  def validate_response_duration_cr(self) -> Self:
68
68
  if self.best_overall_response in negative_response_values and self.response_duration:
69
69
  raise ValueError(
70
- "If best_overall_response does not indicate a positive response, \
71
- please leave response_duration blank."
70
+ "If best_overall_response does not indicate a positive response, "
71
+ "please leave response_duration blank."
72
72
  )
73
73
  return self
74
74
 
@@ -76,8 +76,8 @@ class ResponseBySystem(Base):
76
76
  def validate_days_to_first_response_cr(self) -> Self:
77
77
  if self.best_overall_response in negative_response_values and self.days_to_first_response:
78
78
  raise ValueError(
79
- "If best_overall_response does not indicate a positive response, \
80
- please leave days_to_first_response blank."
79
+ "If best_overall_response does not indicate a positive response, "
80
+ "please leave days_to_first_response blank."
81
81
  )
82
82
  return self
83
83
 
@@ -26,7 +26,7 @@ from cidc_api.models.types import (
26
26
 
27
27
 
28
28
  class Specimen(Base):
29
- __data_category__ = "specimen"
29
+ # __data_category__ = "specimen"
30
30
  __cardinality__ = "many"
31
31
 
32
32
  # The unique internal identifier for the specimen record
@@ -34,7 +34,7 @@ class Specimen(Base):
34
34
 
35
35
  # The unique internal identifier for the associated participant
36
36
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=12220014%20and%20ver_nr=1
37
- participant_id: int | None = None
37
+ participant_id: str | None = None
38
38
 
39
39
  # The unique specimen identifier assigned by the CIMAC-CIDC Network.
40
40
  # Formatted as CTTTPPPSS.AA for trial code TTT, participant PPP, sample SS, and aliquot AA.
@@ -14,7 +14,7 @@ class Treatment(Base):
14
14
  treatment_id: int | None = None
15
15
 
16
16
  # The unique internal identifier for the associated Participant record
17
- participant_id: int | None = None
17
+ participant_id: str | None = None
18
18
 
19
19
  # The unique internal identifier for the associated Arm record
20
20
  arm_id: int | None = None
@@ -2,7 +2,7 @@ from datetime import datetime
2
2
  from typing import List
3
3
 
4
4
  from .base import Base
5
- from cidc_api.models.types import TrialOrganization, TrialFundingAgency, TrialStatus, AssayType
5
+ from cidc_api.models.types import TrialOrganization, TrialFundingAgency, AssayType
6
6
 
7
7
 
8
8
  class Trial(Base):
@@ -11,7 +11,7 @@ class Trial(Base):
11
11
 
12
12
  # The unique identifier for the clinical trial. e.g. "GU16-287","BACCI"
13
13
  # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=5054234%20and%20ver_nr=1
14
- trial_id: str
14
+ trial_id: str | None = None # TODO: Fix stage2 trial_id to not be nullable, once stage 1 models are complete
15
15
 
16
16
  # The version number of the trial dataset. e.g. "1.0"
17
17
  version: str | None = None
@@ -45,10 +45,6 @@ class Trial(Base):
45
45
  # e.g. "Duke University - Duke Cancer Institute LAO"
46
46
  grant_or_affiliated_network: TrialFundingAgency | None = None
47
47
 
48
- # What stage the trial is at in its process.
49
- # CDE: https://cadsr.cancer.gov/onedata/dmdirect/NIH/NCI/CO/CDEDD?filter=CDEDD.ITEM_ID=15607838%20and%20ver_nr=1
50
- trial_status: TrialStatus
51
-
52
48
  # The id of the primary organization responsible for storing biospecimens from this study.
53
49
  biobank_institution_id: int | None = None
54
50
 
cidc_api/models/types.py CHANGED
@@ -53,13 +53,6 @@ TrialFundingAgency = Literal[
53
53
  ]
54
54
 
55
55
 
56
- TrialStatus = Literal[
57
- "Active Study",
58
- "Completed Study",
59
- "Provisional Study",
60
- ]
61
-
62
-
63
56
  AssayType = Literal[
64
57
  "Olink",
65
58
  "WES",
@@ -217,24 +210,6 @@ FileFormat = Literal[
217
210
  ]
218
211
 
219
212
 
220
- PrimaryDiagnosisDiseaseGroup = Literal[
221
- "Ovarian epithelial cancer",
222
- "Esophageal cancer, NOS",
223
- "Primary peritoneal carcinoma",
224
- "Gastric cancer, NOS",
225
- "Fallopian tube carcinoma",
226
- "Invasive breast carcinoma",
227
- "Small cell lung cancer",
228
- "Prostate cancer, NOS",
229
- "Non-small cell lung cancer, NOS",
230
- "Myeloma, NOS",
231
- "Melanoma",
232
- "Adenocarcinoma of the gastroesophageal junction",
233
- "Acute myeloid leukemia, NOS",
234
- "Colorectal cancer, NOS",
235
- ]
236
-
237
-
238
213
  TumorGrade = Literal[
239
214
  "G1 Low Grade",
240
215
  "G2 Intermediate Grade",
@@ -255,12 +230,20 @@ CancerStageSystem = Literal[
255
230
  ]
256
231
 
257
232
 
258
- CancerStageSystemVersionAJCC = Literal["8",]
233
+ CancerStageSystemVersionAJCC = Literal["8th Edition",]
259
234
 
260
- CancerStageSystemVersionRISS = Literal["2"]
235
+ CancerStageSystemVersionRISS = Literal["10.1200/JCO.2015.61.2267"]
261
236
 
262
-
263
- CancerStageSystemVersionFIGO = Literal["2021"]
237
+ CancerStageSystemVersionFIGO = Literal[
238
+ "10.1002/ijgo.14923",
239
+ "10.1002/ijgo.13881",
240
+ "10.1002/ijgo.13867",
241
+ "10.1002/ijgo.13865",
242
+ "10.1002/ijgo.13866",
243
+ "10.1002/ijgo.13878",
244
+ "10.1002/ijgo.13877",
245
+ "10.1002/ijgo.12613",
246
+ ]
264
247
 
265
248
  CancerStageSystemVersion = CancerStageSystemVersionAJCC | CancerStageSystemVersionFIGO | CancerStageSystemVersionRISS
266
249
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nci_cidc_api_modules
3
- Version: 1.2.28
3
+ Version: 1.2.30
4
4
  Summary: SQLAlchemy data models and configuration tools used in the NCI CIDC API
5
5
  Home-page: https://github.com/NCI-CIDC/cidc-api-gae
6
6
  License: MIT license
@@ -12,6 +12,7 @@ Requires-Dist: cloud-sql-python-connector[pg8000]>=1.18.5
12
12
  Requires-Dist: flask>=3.1.2
13
13
  Requires-Dist: flask-migrate>=4.1.0
14
14
  Requires-Dist: flask-sqlalchemy>=3.1.1
15
+ Requires-Dist: flask-talisman>=0.7.0
15
16
  Requires-Dist: google-auth==2.43.0
16
17
  Requires-Dist: google-api-python-client>=2.185.0
17
18
  Requires-Dist: google-cloud-bigquery>=3.38.0
@@ -4,90 +4,90 @@ cidc_api/config/logging.py,sha256=abhVYtn8lfhIt0tyV2WHFgSmp_s2eeJh7kodB6LH4J0,11
4
4
  cidc_api/config/secrets.py,sha256=jRFj7W43pWuPf9DZQLCKF7WPXf5cUv-BAaS3ASqhV_Q,1481
5
5
  cidc_api/config/settings.py,sha256=ttOGvk_6zVMn4dtxIZ2-0w3wF2fpAUVfGpVZbKJ2b6s,4653
6
6
  cidc_api/models/__init__.py,sha256=cTyK0Z1ttLo9itwZVRFr-d6aX-zX633YhqipqPgoGfE,115
7
- cidc_api/models/data.py,sha256=evv9JJcW3U_g-74MgKdxtB_gGJBTRQjtnsVKwa3DzFE,638
7
+ cidc_api/models/data.py,sha256=uLkgAJ6tCtsi3bOGt8I9esYrZqgbsTYM1rGfL2gx5sY,837
8
8
  cidc_api/models/migrations.py,sha256=UlS5How3J4ryaRuZT6F5VQtAKikkl0LTv9MgMO_ltiQ,11161
9
- cidc_api/models/models.py,sha256=2ENATE2dbl93uaKSqveqAVuhv1SvxOkcw4pWDTolng0,148484
9
+ cidc_api/models/models.py,sha256=zGOvQMe86kLqC_bbB9ezrBYL9QNA_4GrtYhRGGeqOcU,148525
10
10
  cidc_api/models/schemas.py,sha256=6IE2dJoEMcMbi0Vr1V3cYKnPKU0hv9vRKBixOZHe88s,2766
11
- cidc_api/models/types.py,sha256=9dInLZ6gN39zhEe3xhBXyz2xVMr11CeE1-GCOmT_OjY,29928
11
+ cidc_api/models/types.py,sha256=gnP8HmGRqTo0dc0RZCBa1W8NUD2Ppsm4C0OHZzlPjVI,29580
12
12
  cidc_api/models/db/base_orm.py,sha256=EV78qFBcOR7spK_PhjbkpsGcmcP33AQItX61SidDa_8,813
13
13
  cidc_api/models/db/stage2/__init__.py,sha256=R33BM1VDKJya5uuyYnPoGFVfhSViclIOklSoHH-EtBQ,2691
14
- cidc_api/models/db/stage2/additional_treatment_orm.py,sha256=THBNW7X6h5IyhFrKOCo81fUEgRDFV6NoBmS34740B3s,865
14
+ cidc_api/models/db/stage2/additional_treatment_orm.py,sha256=Gb-KdVGiL0yDzdQL-BqM5cNke7N9T84y0mLwqElUl8U,912
15
15
  cidc_api/models/db/stage2/administrative_person_orm.py,sha256=erXyILdFI7o0RrCW0jB9dyGP6Kdz4vCSXM49EVhA_hQ,1020
16
16
  cidc_api/models/db/stage2/administrative_role_assignment_orm.py,sha256=a8GN66njTPZb3HQAxgTklo3MW--S-uq1HTz3GZfLSJ0,1283
17
- cidc_api/models/db/stage2/adverse_event_orm.py,sha256=TfyfyKM-3QBc9BHMSdS1L4hH-esXiQWtw0VnpzXZadM,1928
17
+ cidc_api/models/db/stage2/adverse_event_orm.py,sha256=eo_6ZTEYdyaiS5EGR_LSWpMvVjuOAjh7KQh3I7JFeuA,1968
18
18
  cidc_api/models/db/stage2/arm_orm.py,sha256=YAX1NhA3kiQLzT582G6wDawWv6qor--B_GkIRe4LQDs,697
19
- cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py,sha256=Y0hIyhO9hZ6CHn3ZaPtyppBs02LzXoTvZbBhuvikpmw,893
19
+ cidc_api/models/db/stage2/baseline_clinical_assessment_orm.py,sha256=V_9-9Q7-1jQtjkTmRCXmUEq4mXb8upCIsUElUy3IfT8,948
20
20
  cidc_api/models/db/stage2/cohort_orm.py,sha256=tcUYBMwKPW3anye8uEoDM4BS54pGMOGnbjlEleZozSI,700
21
- cidc_api/models/db/stage2/comorbidity_orm.py,sha256=9YQI_7PJUvcOvi6b3w6z6Kedi4UxaT9WE17eojl7kCA,883
22
- cidc_api/models/db/stage2/consent_group_orm.py,sha256=KFHD9HSGfmQnhjlPMZPZ7nwOcsxw5CisKqfK1lWtql4,1063
21
+ cidc_api/models/db/stage2/comorbidity_orm.py,sha256=2Eb3-OYKn02Sc3ndM49xH2snucjqY2gmjyAP7JYyccc,921
22
+ cidc_api/models/db/stage2/consent_group_orm.py,sha256=8j0Aa3FX11LHTIOgXdk3zaRwD4tOkvaRovl_CYH_KsM,1103
23
23
  cidc_api/models/db/stage2/contact_orm.py,sha256=lcfMj0LEcaRKdX2ZInx6n8pYd-rNujqLOPgZYna_d_A,1352
24
- cidc_api/models/db/stage2/demographic_orm.py,sha256=GspDappa5hgOIu3o9BSjQSM7kBZViYcZIHpNa3ZLaqo,1551
25
- cidc_api/models/db/stage2/disease_orm.py,sha256=xXh77B70DpEkdQzSCqlQL6y3uOXOGP1YbPsxwEWfhco,1995
26
- cidc_api/models/db/stage2/exposure_orm.py,sha256=CFYCgtEM07QwSaa2frRLq2beClsAXbG2pekUz_-B74Q,771
24
+ cidc_api/models/db/stage2/demographic_orm.py,sha256=Gk3UTVmuKEDGvnl5yOxZYBHz4lKK3vcdLK2Rc2AGszo,1588
25
+ cidc_api/models/db/stage2/disease_orm.py,sha256=3Wue_ZSlUpgjvXK9q3HxbTXytPBV062BRn7YljoMT6M,1977
26
+ cidc_api/models/db/stage2/exposure_orm.py,sha256=yHalUVz3wlsNIdScN_TEwN8jYexntZkfV3ikvPSyxmY,813
27
27
  cidc_api/models/db/stage2/file_orm.py,sha256=tPElXh7ABhAenZmHbgu2LyrDzKw-VK-tdZ-yxkb_YN8,1296
28
- cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py,sha256=meqNKGmbJh7cUBlzyzRqxvu9ChvyDF0JICj7GyO8vDs,1415
29
- cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py,sha256=Ff6a5HRYbdBMnV_riYAF2btE52E5wXOo40HV0cDXHmc,1509
30
- cidc_api/models/db/stage2/gvhd_organ_acute_orm.py,sha256=DNzR2LmGu5IeS6iIkAL-AXEEj8ot0fIoQAS7m2giOy4,797
31
- cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py,sha256=-IeTmLVB4jJYgzF2BN8PdaVou_OrxjDB2O4xzGd_So8,819
28
+ cidc_api/models/db/stage2/gvhd_diagnosis_acute_orm.py,sha256=M7MV423sElaWTwh2ziR5CKXc08xlDqaxUiphgM09Sf4,1462
29
+ cidc_api/models/db/stage2/gvhd_diagnosis_chronic_orm.py,sha256=Mot6vDSV7i-0yGe_0RReUJkcSk3lwF3Nk46HFhDHofU,1558
30
+ cidc_api/models/db/stage2/gvhd_organ_acute_orm.py,sha256=rOnvmqZbLEKd_1uKGVX-tH14p9OpCD58Gt5DtDJG8VQ,840
31
+ cidc_api/models/db/stage2/gvhd_organ_chronic_orm.py,sha256=L5GL-zHkOnkNnUU6ItO8CJAWWgvNEVVyS7owEJGih-g,864
32
32
  cidc_api/models/db/stage2/institution_orm.py,sha256=cvNaAbtdFq2WCIVusHlfTjd-mEYBEMaPfkwgxmdfMn8,1246
33
- cidc_api/models/db/stage2/medical_history_orm.py,sha256=TABx11mdwEJtUpoo8g1FBzoTTj6NT0sa_VVyVwdYzEM,1265
33
+ cidc_api/models/db/stage2/medical_history_orm.py,sha256=lZlAhU6jiZiUSlttgj92YekOhzet0BArsrUcTtO0qvE,1307
34
34
  cidc_api/models/db/stage2/other_clinical_endpoint_orm.py,sha256=acBUKPYGceC74JI7r_WNZ_nidnoQZC-PWj_C1qgADSk,1151
35
- cidc_api/models/db/stage2/other_malignancy_orm.py,sha256=kUs5fLeGpDC1gNi8wDqWQ6yEWzCsujK_mhPmx0YXCIs,1226
36
- cidc_api/models/db/stage2/participant_orm.py,sha256=yVrOxKDDMJ_FCs1owt4nZXMALQxzeNZ79RoVzF7K_A8,3719
37
- cidc_api/models/db/stage2/prior_treatment_orm.py,sha256=RcKjYTNutWb1iIbWkHofV1ckr9wxs4A17UzV5BdqEpo,1234
35
+ cidc_api/models/db/stage2/other_malignancy_orm.py,sha256=4s9F9PjLz31W91RN0zvRbmX6x4vrZ3W1s6h6-Kv1Q1A,1269
36
+ cidc_api/models/db/stage2/participant_orm.py,sha256=OZ4iylGCeeximcMgWqviCaHfuMmkbzGJPUTrWiIrwkQ,3768
37
+ cidc_api/models/db/stage2/prior_treatment_orm.py,sha256=KeQaijkvPouyf8FYIo6TMMkstXfk2RjwTRZHdAslXNU,1276
38
38
  cidc_api/models/db/stage2/publication_orm.py,sha256=fBmdxEihYRqqdBGNDdELn6wEZuLxpvIFPtmDTkKbxzc,1100
39
- cidc_api/models/db/stage2/radiotherapy_dose_orm.py,sha256=UlvNsWTrdDHg1Bdm4yphPN4ntY4BAlTOgYWYU4bWPuA,1501
40
- cidc_api/models/db/stage2/response_by_system_orm.py,sha256=w8Loh5Z1mbu6NoJNPHX6Mr4Sx6g6i0M7UPqxps2zdDw,1422
41
- cidc_api/models/db/stage2/response_orm.py,sha256=QsKa0cbI4DlCRy_dilfo5AWZttdGkDS3NVbQVK0n7LU,1134
39
+ cidc_api/models/db/stage2/radiotherapy_dose_orm.py,sha256=_VV9T0_6h1iHSZnfAPsW3PO0Y-jbJnbwsOT4SbJXPyY,1545
40
+ cidc_api/models/db/stage2/response_by_system_orm.py,sha256=HsYtVs7QGw2mqxJeSdrBlraImAwoScqk1dT3UP--7UI,1467
41
+ cidc_api/models/db/stage2/response_orm.py,sha256=1xcfM-shreNDokHc4glz8OCHoyNSpBjinxrzLFgbhWM,1169
42
42
  cidc_api/models/db/stage2/shipment_orm.py,sha256=u7y6hKtmg6DhW8G_tFHj-gFgsqigd8QPrPZu8ZFeMe4,2042
43
43
  cidc_api/models/db/stage2/shipment_specimen_orm.py,sha256=SiIEi5t-BOISgCEgYM9CGqBmr6iLV3HwqXzrTmjJSv8,913
44
44
  cidc_api/models/db/stage2/specimen_orm.py,sha256=Iv6UomXRvl3Is-TxWFQwafTAfZYRiIW76WPtNoDpuNE,4124
45
- cidc_api/models/db/stage2/stem_cell_transplant_orm.py,sha256=G59Wm-RjOavNc6d5-wW43Z2hteaY7g8NfWGIADC1D74,1077
46
- cidc_api/models/db/stage2/surgery_orm.py,sha256=Jo5abObgZfkEkiMGKFuNGzOWqVwNSGTUdtbfS1VPxRo,1023
47
- cidc_api/models/db/stage2/therapy_agent_dose_orm.py,sha256=dgLZnWjt5RRGE7OkMis_tUUEsBvK9eZwHa_6IFMDf_g,1303
48
- cidc_api/models/db/stage2/treatment_orm.py,sha256=-SW99MTRDM2Qou0Dsv_fIAsDvj322_5CPgDPgT9FAlQ,1927
49
- cidc_api/models/db/stage2/trial_orm.py,sha256=JOA9dA8UXMkB04gBH3huepvSpTdn3DSJzKH-jyCJCRY,2773
45
+ cidc_api/models/db/stage2/stem_cell_transplant_orm.py,sha256=MkOJCW154T6iK0Pos3nv44m90cyg_dnG_i6lMgXObcU,1124
46
+ cidc_api/models/db/stage2/surgery_orm.py,sha256=XAkq2HHvi0kmZmJgdvE4obBGcFx0p2Nruj5zrMZvFH8,1057
47
+ cidc_api/models/db/stage2/therapy_agent_dose_orm.py,sha256=I9fYC-x8jc8XQFFXz4zVFERKac_bVihgp4Q_cHF-Tc0,1348
48
+ cidc_api/models/db/stage2/treatment_orm.py,sha256=m9udq26_1tQ_xUYHhGsA-pYut9p043zCvDQO5IaPx2o,1963
49
+ cidc_api/models/db/stage2/trial_orm.py,sha256=6F9UJdrispKuZtss29nYRVTlYZFTQIvPTuvZ2HOXn5E,2754
50
50
  cidc_api/models/files/__init__.py,sha256=8BMTnUSHzUbz0lBeEQY6NvApxDD3GMWMduoVMos2g4Y,213
51
51
  cidc_api/models/files/details.py,sha256=sZkGM7iEV4-J6IDQCdiMV6KBDLbPxCOqUMaU3aY9rX8,65153
52
52
  cidc_api/models/files/facets.py,sha256=rG99wUpHvWHkcRDxTcXz40502Er47l_5hKzP-ORvXGE,33621
53
53
  cidc_api/models/pydantic/stage2/__init__.py,sha256=OQRG5wFkNsyAU_0KI1W5PDn8pBDe1EJDcgKZ19shh_g,2331
54
- cidc_api/models/pydantic/stage2/additional_treatment.py,sha256=HlsexyUh38hW9CTT3cxP6A9xeHa5JX8Cwvh5fi4MH9s,963
54
+ cidc_api/models/pydantic/stage2/additional_treatment.py,sha256=5bBcV85oiE-PgmuE1sheuNFcZW41GH-TK4IUxIr3dPk,1078
55
55
  cidc_api/models/pydantic/stage2/administrative_person.py,sha256=KgILOkUra-AmqwFlj6XNappfMNi4KuhZ98So1R8p-eY,1528
56
56
  cidc_api/models/pydantic/stage2/administrative_role_assignment.py,sha256=qsdrBJgDA4GWY-1VAFgbgQWfqSjJZ-OFsIOZDT9CyAE,512
57
- cidc_api/models/pydantic/stage2/adverse_event.py,sha256=7fGeczRqw2sFK-QMWWIJFhgtYROMkf5w4jTfmAh0_cg,3856
57
+ cidc_api/models/pydantic/stage2/adverse_event.py,sha256=733qhu5uucvMQH_VDFAc1WlWCcusaXXFswrp1ugM7sk,3856
58
58
  cidc_api/models/pydantic/stage2/arm.py,sha256=ApxukGxatxD7rFDIaeiJsPNHw9-b4tfd8nubQ0JuW4g,457
59
- cidc_api/models/pydantic/stage2/base.py,sha256=AhlFc9qwc8HIRgrxN944DAhugS-FfTGsyQ4YivdT2Ds,951
60
- cidc_api/models/pydantic/stage2/baseline_clinical_assessment.py,sha256=ajPQkgWndWz1o6xFn6VYSPTvXKT9CaHBR5l0GyqhCG8,1095
59
+ cidc_api/models/pydantic/stage2/base.py,sha256=0KTN8HJrwr8gQ8ORnWh4WQPueWmqlJ6Bl7EPa7sr3J4,1333
60
+ cidc_api/models/pydantic/stage2/baseline_clinical_assessment.py,sha256=mDTzHT6IsQRy5aTMCSK3twqe3jiYtvZ9D7ZO6hVO3KM,1095
61
61
  cidc_api/models/pydantic/stage2/cohort.py,sha256=-ikJ35QR7JjNfWMv_OFvIqxBVK8zr3nT39Q90UustWk,469
62
62
  cidc_api/models/pydantic/stage2/comorbidity.py,sha256=avCl_9zrM7nzsR0E_g6fMjlQG8qE109NSR_nGGxEKqg,1389
63
63
  cidc_api/models/pydantic/stage2/consent_group.py,sha256=ldIfJUk6DLCj24Vs_tOXUp_6mpncx63j_yL90jNtwvI,1192
64
64
  cidc_api/models/pydantic/stage2/contact.py,sha256=pRKcv34MWMN3WrRD5WmHDoCprzRnIyC5fDMb1qDhHMk,859
65
- cidc_api/models/pydantic/stage2/demographic.py,sha256=6voG-QXK1q89TtTfS9S3CLiEUPWEn4ZXbmlu3_pH8nU,5461
66
- cidc_api/models/pydantic/stage2/disease.py,sha256=-K8HscdLbQ2Cr9NpLqri4R8jB0FAw7Ed-W7KJSZkXdM,6960
67
- cidc_api/models/pydantic/stage2/exposure.py,sha256=Klpw7WrMVQabfBUFWVPIiOQexCoD05uTHauGxLGl8Lw,1268
65
+ cidc_api/models/pydantic/stage2/demographic.py,sha256=dZO6LoxxCBIUMNqnJCTCZrrPil6vE6nTXymfz4B8gls,5597
66
+ cidc_api/models/pydantic/stage2/disease.py,sha256=4qxud-X0yegT4pvU5_Dj8YwwsANHzxbqkH7XFYfrkAE,7626
67
+ cidc_api/models/pydantic/stage2/exposure.py,sha256=PNqslfg36tphxz8sM51pu0CB6wAULzYQuEDRAS7AcHU,1282
68
68
  cidc_api/models/pydantic/stage2/file.py,sha256=lWVLS763at46OsNX6xOIUEkV2V69yjeVPJXIIwvXl5o,1312
69
- cidc_api/models/pydantic/stage2/gvhd_diagnosis_acute.py,sha256=x_koFtb99nQcnzuQxIvuPsZClUozorsZf8w8oHspt5E,1371
70
- cidc_api/models/pydantic/stage2/gvhd_diagnosis_chronic.py,sha256=KMNanB40GNdNYDeRgctq3Fm3okT77ypq4kcfw_rVpwc,1358
69
+ cidc_api/models/pydantic/stage2/gvhd_diagnosis_acute.py,sha256=Pvb8al3iqY0BOn4FwdUYt-DjotuqlqPuzEA3g8QYQc4,1371
70
+ cidc_api/models/pydantic/stage2/gvhd_diagnosis_chronic.py,sha256=E4ke4QGdhVRRcrCTvm0xz-TnL9hyKSXppG1Hi0HswzA,1358
71
71
  cidc_api/models/pydantic/stage2/gvhd_organ_acute.py,sha256=WY2pXpNmXTnAxpumxomv3bQmx7GjKRCDNeOLYpgssF8,747
72
72
  cidc_api/models/pydantic/stage2/gvhd_organ_chronic.py,sha256=sCphdwBgidbZxPRQr9CGRmU9-RGwy13d2UPoVR-7BcY,786
73
73
  cidc_api/models/pydantic/stage2/institution.py,sha256=L7YLzPQzXP_WxfxonhE50soubB13b30M0LiPU8JiIOY,244
74
- cidc_api/models/pydantic/stage2/medical_history.py,sha256=uSp9tDp_7Xa5tU_18hkpJQ-HPJUuqjciDZARTERM2bs,1673
74
+ cidc_api/models/pydantic/stage2/medical_history.py,sha256=jC1eRsXdYXwrlBFDrXaiCwgkHoATzSR9krLbMwsjdUA,1673
75
75
  cidc_api/models/pydantic/stage2/other_clinical_endpoint.py,sha256=hn_Ngjl1ZD-IsmO_dFFcohsyJL8gmBKCCPBpXljoHqc,1069
76
76
  cidc_api/models/pydantic/stage2/other_malignancy.py,sha256=eR5tVylBVSjy2r2BUg98mXrf1Mbo03LZe6RcDx7DhX4,1996
77
- cidc_api/models/pydantic/stage2/participant.py,sha256=W3T5P8B4b9J5dQFZcc-90XTSXzRqdjp0jaLZfMRcF5c,2011
78
- cidc_api/models/pydantic/stage2/prior_treatment.py,sha256=ZLb3MMRb0yWHhf4Tq5WwEMYsLDmrQUV3De7egIZm6_Y,2248
77
+ cidc_api/models/pydantic/stage2/participant.py,sha256=GS-_o3FG3sFLOn3rm9okAwKffjGjzzao4JAPi2AQDbI,2085
78
+ cidc_api/models/pydantic/stage2/prior_treatment.py,sha256=-Ty2XTrfFxAOGVGlrXxx5z5NI4wyMROAWe__nEXBbiw,2248
79
79
  cidc_api/models/pydantic/stage2/publication.py,sha256=C8o2jxooZ8ykmUWrMkWDw5CGIEOeK-8Rgitoac9MKs0,1793
80
- cidc_api/models/pydantic/stage2/radiotherapy_dose.py,sha256=t8tSGVTwb8USRhfO80XVTo-UHbroWBt0bHH-DsvBszE,3304
81
- cidc_api/models/pydantic/stage2/response.py,sha256=WIl3TbVjHxp9fHPtFccsnfUVkmNdM7aw94ewI2CPm3Q,3118
82
- cidc_api/models/pydantic/stage2/response_by_system.py,sha256=QP3rYjmaYRLJPSQIkQQ6k3Z3bygH1yLtKVOOFQaIHm0,4705
80
+ cidc_api/models/pydantic/stage2/radiotherapy_dose.py,sha256=kfEqfJwBG7TCGupSGMdDpmZ4HGYsdqRDHIgIAzTXEVk,3303
81
+ cidc_api/models/pydantic/stage2/response.py,sha256=kASwYxi9zbuqCSh6FR2BA-er-VGwP23s1_NRmA4Khoo,3118
82
+ cidc_api/models/pydantic/stage2/response_by_system.py,sha256=YIBoC2GBBordRIU3Sc7uH5OZNBAV8DenNYDXU8svbpA,4707
83
83
  cidc_api/models/pydantic/stage2/shipment.py,sha256=leRVcQyEkgX2G5jqn0QmSbmIYqiM8W7OE362xLGwEOM,1571
84
84
  cidc_api/models/pydantic/stage2/shipment_specimen.py,sha256=LJglK70mbENQ8lwWe8EJTNYoJSGNXkFUHf7yAMY1zso,464
85
- cidc_api/models/pydantic/stage2/specimen.py,sha256=PDBzNNPdPVIPFPPVZO_e0McY00K0FQMGOlASjQoUJSc,8350
85
+ cidc_api/models/pydantic/stage2/specimen.py,sha256=aMxvPmKH6Ij3rPOejpCc2RvDBYRslz_DjzUq1iRIts8,8352
86
86
  cidc_api/models/pydantic/stage2/stem_cell_transplant.py,sha256=RnMKMbydxSX4NRyJfHwH8wdmB8PE6Kno1LIj8i6xgoM,1205
87
87
  cidc_api/models/pydantic/stage2/surgery.py,sha256=OOMDGIt0XA4HHXiQjGTVb0zIsQR9uKH1M9GxUOPH5iA,2125
88
88
  cidc_api/models/pydantic/stage2/therapy_agent_dose.py,sha256=LgmDXBpDVIR3BxZDHZs4ruX5tSotfan-pU2CUPzddf0,2997
89
- cidc_api/models/pydantic/stage2/treatment.py,sha256=q8WORTyHSbU7yZvZLvag1dhDc-OAYnY8LPGUbpTzIcw,2015
90
- cidc_api/models/pydantic/stage2/trial.py,sha256=dYXq-psXUiWVJC2seOndtpMYA1TdIQVbVG8lC9t-oAM,3653
89
+ cidc_api/models/pydantic/stage2/treatment.py,sha256=x_WluGqNsNI4RUdnXeqLt6_ABzRlRX6hjv0LDOgGzz4,2015
90
+ cidc_api/models/pydantic/stage2/trial.py,sha256=O3PLFh95aZsgOF_V96gP6FsrDazn6v7RD7Nse0Vje9g,3539
91
91
  cidc_api/reference/ctcae.py,sha256=H5JvDQ5R5kYbK37UxjhmXMnKD3d40HmG0DONxfhNxnE,871
92
92
  cidc_api/reference/gvhd.py,sha256=r5jbHEa5yos0tmghjiruAeXI-r-4lU81JKCUpMHtO14,194
93
93
  cidc_api/reference/icd10cm.py,sha256=K1vbTQB75uAQeKgj0U9izhtMKVb2vqp69_hyx3z_jro,300
@@ -102,8 +102,8 @@ cidc_api/shared/gcloud_client.py,sha256=ovXGS2ynaBgB_23prj23H10GNN4fectiVF7Hj4LJ
102
102
  cidc_api/shared/jose.py,sha256=-qzGzEDAlokEp9E7WtBtQkXyyfPWTYXlwYpCqVJWmqM,1830
103
103
  cidc_api/shared/rest_utils.py,sha256=RwR30WOUAYCxL7V-i2totEyeriG30GbBDvBcpLXhM9w,6594
104
104
  cidc_api/shared/utils.py,sha256=FdZJiynmh6BIzWyCTcUAcUMKCAtzEyp_HLdXEticNcI,237
105
- nci_cidc_api_modules-1.2.28.dist-info/licenses/LICENSE,sha256=pNYWVTHaYonnmJyplmeAp7tQAjosmDpAWjb34jjv7Xs,1102
106
- nci_cidc_api_modules-1.2.28.dist-info/METADATA,sha256=dBc6ThsKAfENROM1iAm4LCDKQjM8_lqe7PC0c1R6MOQ,39725
107
- nci_cidc_api_modules-1.2.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- nci_cidc_api_modules-1.2.28.dist-info/top_level.txt,sha256=rNiRzL0lJGi5Q9tY9uSoMdTbJ-7u5c_D2E86KA94yRA,9
109
- nci_cidc_api_modules-1.2.28.dist-info/RECORD,,
105
+ nci_cidc_api_modules-1.2.30.dist-info/licenses/LICENSE,sha256=pNYWVTHaYonnmJyplmeAp7tQAjosmDpAWjb34jjv7Xs,1102
106
+ nci_cidc_api_modules-1.2.30.dist-info/METADATA,sha256=UKoLBKoBadpOOjKlpGCqBeIOpHmWrXcU1safhHNbnfA,39762
107
+ nci_cidc_api_modules-1.2.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ nci_cidc_api_modules-1.2.30.dist-info/top_level.txt,sha256=rNiRzL0lJGi5Q9tY9uSoMdTbJ-7u5c_D2E86KA94yRA,9
109
+ nci_cidc_api_modules-1.2.30.dist-info/RECORD,,