From 1d273861d80c30701c82ad7d7a4786498ec3c40f Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 12 Dec 2024 16:40:55 +0100 Subject: [PATCH] Update model from schema and scala code --- src/lib.rs | 11 +- src/mtb.rs | 2200 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 1288 insertions(+), 923 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6246460..0f71af1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -59,15 +59,17 @@ impl Mtb { claim_responses: None, claims: None, diagnoses: None, - ecog_status: None, + performance_status: None, episode: None, + episodes_of_care: None, genetic_counselling_requests: None, histology_reports: None, - last_guideline_therapies: None, + guideline_therapies: None, molecular_therapies: None, ngs_reports: None, patient: MtbPatient { address: None, + age: None, birth_date: String::new(), date_of_death: None, gender: CodingGender { @@ -77,13 +79,14 @@ impl Mtb { version: None, }, id: patient_id.to_string(), - insurance: None, + health_insurance: None, + vital_status: None, }, - previous_guideline_therapies: None, recommendations: None, responses: None, specimens: None, study_inclusion_requests: None, + guideline_procedures: None, } } } diff --git a/src/mtb.rs b/src/mtb.rs index 3d649be..17c506e 100644 --- a/src/mtb.rs +++ b/src/mtb.rs @@ -16,19 +16,22 @@ pub struct Mtb { pub diagnoses: Option>, #[serde(skip_serializing_if = "Option::is_none")] - pub ecog_status: Option>, + pub episode: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub episode: Option, + pub episodes_of_care: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub genetic_counselling_requests: Option>, #[serde(skip_serializing_if = "Option::is_none")] - pub histology_reports: Option>, + pub guideline_procedures: Option>, #[serde(skip_serializing_if = "Option::is_none")] - pub last_guideline_therapies: Option>, + pub guideline_therapies: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub histology_reports: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub molecular_therapies: Option>, @@ -39,7 +42,7 @@ pub struct Mtb { pub patient: MtbPatient, #[serde(skip_serializing_if = "Option::is_none")] - pub previous_guideline_therapies: Option>, + pub performance_status: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub recommendations: Option>, @@ -57,41 +60,49 @@ pub struct Mtb { #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct MtbCarePlan { - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(skip_serializing_if = "Option::is_none")] pub diagnosis: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub genetic_counselling_request: Option, + pub genetic_counseling_recommendation: Option, pub id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub indication: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub issued_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub medication_recommendations: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub no_target_finding: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub notes: Option, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status_reason: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub study_enrollment_recommendations: Option>, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct GeneticCounselingRecommendation { + pub id: String, + #[serde(skip_serializing_if = "Option::is_none")] pub issued_on: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub no_target_finding: Option, - pub patient: Patient, - #[serde(skip_serializing_if = "Option::is_none")] - pub recommendations: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub study_inclusion_requests: Option>, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct NoTargetFinding { - pub diagnosis: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub issued_on: Option, - - pub patient: Patient, + pub reason: Coding, } #[derive(Debug, Serialize, Deserialize)] @@ -107,126 +118,6 @@ pub enum PatientType { Patient, } -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ClaimResponse { - pub claim: ClaimResponseClaim, - - pub id: String, - - pub issued_on: String, - - pub patient: Patient, - - #[serde(skip_serializing_if = "Option::is_none")] - pub reason: Option, - - pub status: CodingClaimResponseStatus, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct ClaimResponseClaim { - #[serde(rename = "type")] - #[serde(skip_serializing_if = "Option::is_none")] - pub claim_response_claim_type: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum ClaimResponseClaimType { - Claim, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub enum ClaimResponseStatusReason { - #[serde(rename = "approval-revocation")] - ApprovalRevocation, - - #[serde(rename = "formal-reasons")] - FormalReasons, - - #[serde(rename = "inclusion-in-study")] - InclusionInStudy, - - #[serde(rename = "insufficient-evidence")] - InsufficientEvidence, - - Other, - - #[serde(rename = "other-therapy-recommended")] - OtherTherapyRecommended, - - #[serde(rename = "standard-therapy-not-exhausted")] - StandardTherapyNotExhausted, - - Unknown, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct CodingClaimResponseStatus { - pub code: ClaimResponseStatus, - - #[serde(skip_serializing_if = "Option::is_none")] - pub display: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "snake_case")] -pub enum ClaimResponseStatus { - Accepted, - - Rejected, - - Unknown, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Claim { - pub id: String, - - pub issued_on: String, - - pub patient: Patient, - - #[serde(skip_serializing_if = "Option::is_none")] - pub therapy: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct MtbDiagnosis { - pub code: Coding, - - #[serde(skip_serializing_if = "Option::is_none")] - pub guideline_treatment_status: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub histology_results: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub icd_o3_t: Option, - - pub id: String, - - pub patient: Patient, - - #[serde(skip_serializing_if = "Option::is_none")] - pub recorded_on: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub status_history: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub who_grade: Option, -} - #[derive(Debug, Serialize, Deserialize)] pub struct Coding { pub code: String, @@ -242,771 +133,25 @@ pub struct Coding { } #[derive(Debug, Serialize, Deserialize)] -pub struct StatusHistory { - pub date: String, - - pub status: MtbDiagnosisTumorSpread, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub enum MtbDiagnosisTumorSpread { - Local, - - Metastasized, - - #[serde(rename = "tumor-free")] - TumorFree, - - Unknown, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PerformanceStatus { - pub effective_date: String, - - pub id: String, - - pub patient: Patient, - - pub value: CodingEcog, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct CodingEcog { - pub code: PurpleCode, - +pub struct Reference { #[serde(skip_serializing_if = "Option::is_none")] pub display: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub version: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum PurpleCode { - #[serde(rename = "0")] - Code0, - - #[serde(rename = "1")] - Code1, - - #[serde(rename = "2")] - Code2, - - #[serde(rename = "3")] - Code3, - - #[serde(rename = "4")] - Code4, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct MtbEpisode { - pub id: String, - - pub patient: Patient, - - pub period: PeriodLocalDate, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct PeriodLocalDate { - #[serde(skip_serializing_if = "Option::is_none")] - pub end: Option, - - pub start: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct GeneticCounselingRecommendation { - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub issued_on: Option, - - pub patient: Patient, - - pub reason: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct HistologyReport { - pub id: String, - - pub issued_on: String, - - pub patient: Patient, - - pub specimen: HistologyReportSpecimen, - - #[serde(skip_serializing_if = "Option::is_none")] - pub tumor_cell_content: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub tumor_morphology: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct HistologyReportSpecimen { pub id: String, #[serde(rename = "type")] - pub specimen_type: SpecimenType, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum SpecimenType { - #[serde(rename = "TumorSpecimen")] - TumorSpecimen, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TumorCellContent { - pub id: String, - - pub method: TumorCellContentMethod, - - pub specimen: String, - - pub value: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "snake_case")] -pub enum TumorCellContentMethod { - Bioinformatic, - - Histologic, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TumorMorphology { - pub id: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub note: Option, - - pub patient: Patient, - - pub specimen: String, - - pub value: Coding, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct MtbMedicationTherapy { - #[serde(skip_serializing_if = "Option::is_none")] - pub based_on: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub diagnosis: Option, - - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub medication: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub not_done_reason: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub note: Option, - - pub patient: Patient, - - #[serde(skip_serializing_if = "Option::is_none")] - pub period: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub reason_stopped: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub recorded_on: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub status: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub therapy_line: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct CodingTherapyStatusReason { - pub code: NotDoneReasonCode, - - #[serde(skip_serializing_if = "Option::is_none")] - pub display: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub version: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub enum NotDoneReasonCode { - #[serde(rename = "chronic-remission")] - ChronicRemission, - - #[serde(rename = "continued-externally")] - ContinuedExternally, - - Deterioration, - - #[serde(rename = "lost-to-fu")] - LostToFu, - - #[serde(rename = "medical-reason")] - MedicalReason, - - #[serde(rename = "no-indication")] - NoIndication, - - Other, - - #[serde(rename = "other-therapy-chosen")] - OtherTherapyChosen, - - #[serde(rename = "patient-death")] - PatientDeath, - - #[serde(rename = "patient-refusal")] - PatientRefusal, - - #[serde(rename = "patient-wish")] - PatientWish, - - #[serde(rename = "payment-ended")] - PaymentEnded, - - #[serde(rename = "payment-pending")] - PaymentPending, - - #[serde(rename = "payment-refused")] - PaymentRefused, - - Progression, - - Toxicity, - - Unknown, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub enum TherapyStatus { - Completed, - - #[serde(rename = "not-done")] - NotDone, - - #[serde(rename = "on-going")] - OnGoing, - - Stopped, - - Unknown, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct MolecularTherapy { - pub history: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SomaticNgsReport { - #[serde(skip_serializing_if = "Option::is_none")] - pub brcaness: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub copy_number_variants: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub dna_fusions: Option>, - - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub issue_date: Option, - - pub metadata: Vec, - - #[serde(skip_serializing_if = "Option::is_none")] - pub msi: Option, - - pub patient: Patient, - - #[serde(skip_serializing_if = "Option::is_none")] - pub rna_fusions: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub rna_seqs: Option>, - - pub sequencing_type: Coding, - - #[serde(skip_serializing_if = "Option::is_none")] - pub simple_variants: Option>, - - pub specimen: NgsReportSpecimen, - - #[serde(skip_serializing_if = "Option::is_none")] - pub tmb: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub tumor_cell_content: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Cnv { - pub chromosome: Chromosome, - - #[serde(skip_serializing_if = "Option::is_none")] - pub cn_a: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub cn_b: Option, - - #[serde(rename = "type")] - pub cnv_type: CnvType, - - #[serde(skip_serializing_if = "Option::is_none")] - pub copy_number_neutral_lo_h: Option>, - - pub end_range: EndRange, - - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub relative_copy_number: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub reported_affected_genes: Option>, - - #[serde(skip_serializing_if = "Option::is_none")] - pub reported_focality: Option, - - pub start_range: StartRange, - - #[serde(skip_serializing_if = "Option::is_none")] - pub total_copy_number: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub enum Chromosome { - Chr1, - - Chr10, - - Chr11, - - Chr12, - - Chr13, - - Chr14, - - Chr15, - - Chr16, - - Chr17, - - Chr18, - - Chr19, - - Chr2, - - Chr20, - - Chr21, - - Chr22, - - Chr3, - - Chr4, - - Chr5, - - Chr6, - - Chr7, - - Chr8, - - Chr9, - - #[serde(rename = "chrX")] - ChrX, - - #[serde(rename = "chrY")] - ChrY, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "kebab-case")] -pub enum CnvType { - #[serde(rename = "high-level-gain")] - HighLevelGain, - - Loss, - - #[serde(rename = "low-level-gain")] - LowLevelGain, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CopyNumberNeutralLoH { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct EndRange { - #[serde(skip_serializing_if = "Option::is_none")] - pub end: Option, - - pub start: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct ReportedAffectedGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct StartRange { - #[serde(skip_serializing_if = "Option::is_none")] - pub end: Option, - - pub start: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct DnaFusion { - #[serde(rename = "fusionPartner3prime")] - pub fusion_partner3_prime: DnaFusionFusionPartner3Prime, - - #[serde(rename = "fusionPartner5prime")] - pub fusion_partner5_prime: DnaFusionFusionPartner5Prime, - - pub id: String, - - pub reported_num_reads: i64, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct DnaFusionFusionPartner3Prime { - pub chromosome: Chromosome, - - pub gene: PurpleGene, - - pub position: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct PurpleGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct DnaFusionFusionPartner5Prime { - pub chromosome: Chromosome, - - pub gene: FluffyGene, - - pub position: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct FluffyGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Metadatum { - pub kit_manufacturer: String, - - pub kit_type: String, - - pub pipeline: String, - - pub reference_genome: String, - - pub sequencer: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RnaFusion { - #[serde(skip_serializing_if = "Option::is_none")] - pub cosmic_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub effect: Option, - - #[serde(rename = "fusionPartner3prime")] - pub fusion_partner3_prime: RnaFusionFusionPartner3Prime, - - #[serde(rename = "fusionPartner5prime")] - pub fusion_partner5_prime: RnaFusionFusionPartner5Prime, - - pub id: String, - - pub reported_num_reads: i64, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RnaFusionFusionPartner3Prime { - pub exon: String, - - pub gene: TentacledGene, - - pub position: f64, - - pub strand: RnaFusionStrand, - - pub transcript_id: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct TentacledGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum RnaFusionStrand { - #[serde(rename = "+")] - Empty, - - #[serde(rename = "-")] - RnaFusionStrand, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RnaFusionFusionPartner5Prime { - pub exon: String, - - pub gene: StickyGene, - - pub position: f64, - - pub strand: RnaFusionStrand, - - pub transcript_id: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StickyGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RnaSeq { - #[serde(skip_serializing_if = "Option::is_none")] - pub cohort_ranking: Option, - - pub ensembl_id: String, - - pub entrez_id: String, - - pub fragments_per_kilobase_million: f64, - - #[serde(rename = "fromNGS")] - pub from_ngs: bool, - - pub gene: RnaSeqGene, - - pub id: String, - - pub library_size: i64, - - pub raw_counts: i64, - - pub tissue_corrected_expression: bool, - - pub transcript_id: String, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct RnaSeqGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Snv { - pub allelic_frequency: f64, - - pub alt_allele: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub amino_acid_change: Option, - - pub chromosome: Chromosome, - - #[serde(skip_serializing_if = "Option::is_none")] - pub cosmic_id: Option, - - #[serde(rename = "dbSNPId")] - #[serde(skip_serializing_if = "Option::is_none")] - pub db_snp_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub dna_change: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub gene: Option, - - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub interpretation: Option, - - pub read_depth: i64, - - pub ref_allele: String, - - pub start_end: StartEnd, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SimpleVariantGene { - #[serde(skip_serializing_if = "Option::is_none")] - pub ensembl_id: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub hgnc_id: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct StartEnd { - #[serde(skip_serializing_if = "Option::is_none")] - pub end: Option, - - pub start: f64, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct NgsReportSpecimen { - pub id: String, - - #[serde(rename = "type")] - pub specimen_type: SpecimenType, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct MtbPatient { - #[serde(skip_serializing_if = "Option::is_none")] - pub address: Option
, - - pub birth_date: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub date_of_death: Option, - - pub gender: CodingGender, - - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub insurance: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct Address { - pub municipality_code: String, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct CodingGender { - pub code: Gender, - - #[serde(skip_serializing_if = "Option::is_none")] - pub display: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - pub version: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "snake_case")] -pub enum Gender { - Female, - - Male, - - Other, - - Unknown, + pub reference_type: Option, } #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct MtbMedicationRecommendation { - pub diagnosis: String, - pub id: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub indication: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub issued_on: Option, @@ -1022,10 +167,10 @@ pub struct MtbMedicationRecommendation { pub patient: Patient, #[serde(skip_serializing_if = "Option::is_none")] - pub priority: Option, + pub priority: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub supporting_variants: Option>, + pub supporting_variants: Option>, } #[derive(Debug, Serialize, Deserialize)] @@ -1125,17 +270,28 @@ pub struct ReferencePublication { #[derive(Debug, Serialize, Deserialize)] pub struct ExtId { #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, + pub system: Option, pub value: String, } #[derive(Debug, Serialize, Deserialize)] -pub enum System { +pub enum ExtIdSystem { #[serde(rename = "https://pubmed.ncbi.nlm.nih.gov/")] HttpsPubmedNcbiNlmNihGov, } +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTherapyRecommendationPriority { + pub code: TherapyRecommendationPriority, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + #[derive(Debug, Serialize, Deserialize)] pub enum TherapyRecommendationPriority { #[serde(rename = "1")] @@ -1151,6 +307,1219 @@ pub enum TherapyRecommendationPriority { Prio4, } +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct NoTargetFinding { + pub diagnosis: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub issued_on: Option, + + pub patient: Patient, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingCarePlanStatusReason { + pub code: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct StudyEnrollmentRecommendation { + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub issued_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub level_of_evidence: Option, + + pub patient: Patient, + + pub reason: Reference, + + pub studies: Vec, + + #[serde(skip_serializing_if = "Option::is_none")] + pub supporting_variants: Option>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Study { + pub system: String, + + pub value: String, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ClaimResponse { + pub claim: ClaimResponseClaim, + + pub id: String, + + pub issued_on: String, + + pub patient: Patient, + + pub status: CodingClaimResponseStatus, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status_reason: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ClaimResponseClaim { + #[serde(rename = "type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub claim_response_claim_type: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum ClaimResponseClaimType { + Claim, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingClaimResponseStatus { + pub code: ClaimResponseStatus, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum ClaimResponseStatus { + Accepted, + + Rejected, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingClaimResponseStatusReason { + pub code: ClaimResponseStatusReason, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum ClaimResponseStatusReason { + #[serde(rename = "approval-revocation")] + ApprovalRevocation, + + #[serde(rename = "formal-reasons")] + FormalReasons, + + #[serde(rename = "inclusion-in-study")] + InclusionInStudy, + + #[serde(rename = "insufficient-evidence")] + InsufficientEvidence, + + Other, + + #[serde(rename = "other-therapy-recommended")] + OtherTherapyRecommended, + + #[serde(rename = "standard-therapy-not-exhausted")] + StandardTherapyNotExhausted, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Claim { + pub id: String, + + pub issued_on: String, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub recommendation: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub stage: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Recommendation { + pub id: String, + + #[serde(rename = "type")] + pub recommendation_type: String, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MtbDiagnosis { + pub code: Coding, + + #[serde(skip_serializing_if = "Option::is_none")] + pub guideline_treatment_status: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub histology_results: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub icd_o3_t: Option, + + pub id: String, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub recorded_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub stage_history: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub topography: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub tumor_grade: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub who_grade: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub who_grading: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct StageHistory { + pub date: String, + + pub stage: CodingTumorSpread, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorSpread { + pub code: StageCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum StageCode { + Local, + + Metastasized, + + #[serde(rename = "tumor-free")] + TumorFree, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorGrade { + pub code: TumorGradeCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum TumorGradeCode { + G1, + + G2, + + G3, + + G4, + + #[serde(rename = "GX")] + Gx, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct MtbEpisode { + pub id: String, + + pub patient: Patient, + + pub period: PeriodLocalDate, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct PeriodLocalDate { + #[serde(skip_serializing_if = "Option::is_none")] + pub end: Option, + + pub start: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct EpisodeOfCare { + #[serde(skip_serializing_if = "Option::is_none")] + pub diagnoses: Option>, + + pub id: String, + + pub patient: Reference, + + pub period: PeriodLocalDate, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct OncoProdecure { + #[serde(skip_serializing_if = "Option::is_none")] + pub based_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub code: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub diagnosis: Option, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub indication: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub notes: Option, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub period: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub recorded_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status_reason: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub therapy_line: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTherapyStatus { + pub code: TherapyStatus, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum TherapyStatus { + Completed, + + #[serde(rename = "not-done")] + NotDone, + + #[serde(rename = "on-going")] + OnGoing, + + Stopped, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTherapyStatusReason { + pub code: StatusReasonCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum StatusReasonCode { + #[serde(rename = "chronic-remission")] + ChronicRemission, + + #[serde(rename = "continued-externally")] + ContinuedExternally, + + Deterioration, + + #[serde(rename = "lost-to-fu")] + LostToFu, + + #[serde(rename = "medical-reason")] + MedicalReason, + + #[serde(rename = "no-indication")] + NoIndication, + + Other, + + #[serde(rename = "other-therapy-chosen")] + OtherTherapyChosen, + + #[serde(rename = "patient-death")] + PatientDeath, + + #[serde(rename = "patient-refusal")] + PatientRefusal, + + #[serde(rename = "patient-wish")] + PatientWish, + + #[serde(rename = "payment-ended")] + PaymentEnded, + + #[serde(rename = "payment-pending")] + PaymentPending, + + #[serde(rename = "payment-refused")] + PaymentRefused, + + Progression, + + Toxicity, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MtbMedicationTherapy { + #[serde(skip_serializing_if = "Option::is_none")] + pub based_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub diagnosis: Option, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub indication: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub medication: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub notes: Option, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub period: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub recorded_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status_reason: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub therapy_line: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct HistologyReport { + pub id: String, + + pub issued_on: String, + + pub patient: Patient, + + pub results: HistologyReportResults, + + pub specimen: HistologyReportSpecimen, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct HistologyReportResults { + pub tumor_cell_content: TumorCellContent, + + pub tumor_morphology: TumorMorphology, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TumorCellContent { + pub id: String, + + pub method: CodingTumorCellContentMethod, + + #[serde(skip_serializing_if = "Option::is_none")] + pub patient: Option, + + pub specimen: TumorCellContentSpecimen, + + pub value: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorCellContentMethod { + pub code: TumorCellContentMethod, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum TumorCellContentMethod { + Bioinformatic, + + Histologic, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TumorCellContentSpecimen { + pub id: String, + + #[serde(rename = "type")] + pub specimen_type: SpecimenType, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum SpecimenType { + #[serde(rename = "TumorSpecimen")] + TumorSpecimen, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TumorMorphology { + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub notes: Option, + + pub patient: Patient, + + pub specimen: TumorMorphologySpecimen, + + pub value: Coding, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TumorMorphologySpecimen { + pub id: String, + + #[serde(rename = "type")] + pub specimen_type: SpecimenType, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct HistologyReportSpecimen { + pub id: String, + + #[serde(rename = "type")] + pub specimen_type: SpecimenType, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct MolecularTherapy { + pub history: Vec, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SomaticNgsReport { + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub issued_on: Option, + + pub metadata: Vec, + + #[serde(skip_serializing_if = "Option::is_none")] + pub msi: Option, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub results: Option, + + pub sequencing_type: Coding, + + pub specimen: NgsReportSpecimen, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Metadatum { + pub kit_manufacturer: String, + + pub kit_type: String, + + pub pipeline: String, + + pub reference_genome: String, + + pub sequencer: String, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct NgsReportResults { + #[serde(skip_serializing_if = "Option::is_none")] + pub brcaness: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub copy_number_variants: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub dna_fusions: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub hrd_score: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub rna_fusions: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub rna_seqs: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub simple_variants: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub tmb: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub tumor_cell_content: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct BrcAness { + pub confidence_range: ConfidenceRange, + + pub id: String, + + pub patient: Reference, + + pub specimen: Reference, + + pub value: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ConfidenceRange { + pub max: f64, + + pub min: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Cnv { + pub chromosome: CodingChromosome, + + #[serde(skip_serializing_if = "Option::is_none")] + pub cn_a: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub cn_b: Option, + + #[serde(rename = "type")] + pub cnv_type: CodingCnvType, + + #[serde(skip_serializing_if = "Option::is_none")] + pub copy_number_neutral_lo_h: Option>, + + pub end_range: EndRange, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub indication: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub patient: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub relative_copy_number: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub reported_affected_genes: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub reported_focality: Option, + + pub start_range: StartRange, + + #[serde(skip_serializing_if = "Option::is_none")] + pub total_copy_number: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingChromosome { + pub code: ChromosomeCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum ChromosomeCode { + Chr1, + + Chr10, + + Chr11, + + Chr12, + + Chr13, + + Chr14, + + Chr15, + + Chr16, + + Chr17, + + Chr18, + + Chr19, + + Chr2, + + Chr20, + + Chr21, + + Chr22, + + Chr3, + + Chr4, + + Chr5, + + Chr6, + + Chr7, + + Chr8, + + Chr9, + + #[serde(rename = "chrX")] + ChrX, + + #[serde(rename = "chrY")] + ChrY, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum ChromosomeSystem { + Chromosome, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingCnvType { + pub code: CnvType, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum CnvType { + #[serde(rename = "high-level-gain")] + HighLevelGain, + + Loss, + + #[serde(rename = "low-level-gain")] + LowLevelGain, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingGene { + pub code: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum GeneSystem { + #[serde(rename = "https://www.genenames.org/")] + HttpsWwwGenenamesOrg, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct EndRange { + #[serde(skip_serializing_if = "Option::is_none")] + pub end: Option, + + pub start: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct StartRange { + #[serde(skip_serializing_if = "Option::is_none")] + pub end: Option, + + pub start: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DnaFusion { + #[serde(rename = "fusionPartner3prime")] + pub fusion_partner3_prime: DnaFusionFusionPartner3Prime, + + #[serde(rename = "fusionPartner5prime")] + pub fusion_partner5_prime: DnaFusionFusionPartner5Prime, + + pub id: String, + + pub reported_num_reads: i64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct DnaFusionFusionPartner3Prime { + pub chromosome: CodingChromosome, + + pub gene: CodingGene, + + pub position: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct DnaFusionFusionPartner5Prime { + pub chromosome: CodingChromosome, + + pub gene: Gene, + + pub position: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Gene { + #[serde(skip_serializing_if = "Option::is_none")] + pub ensembl_id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub hgnc_id: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct HrdScore { + pub components: Components, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub interpretation: Option, + + pub patient: Reference, + + pub specimen: Reference, + + pub value: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Components { + pub loh: f64, + + pub lst: f64, + + pub tai: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RnaFusion { + #[serde(skip_serializing_if = "Option::is_none")] + pub cosmic_id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub effect: Option, + + #[serde(rename = "fusionPartner3prime")] + pub fusion_partner3_prime: RnaFusionFusionPartner3Prime, + + #[serde(rename = "fusionPartner5prime")] + pub fusion_partner5_prime: RnaFusionFusionPartner5Prime, + + pub id: String, + + pub reported_num_reads: i64, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RnaFusionFusionPartner3Prime { + pub exon: String, + + pub gene: CodingGene, + + pub position: f64, + + pub strand: RnaFusionStrand, + + pub transcript_id: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum RnaFusionStrand { + #[serde(rename = "+")] + Empty, + + #[serde(rename = "-")] + RnaFusionStrand, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RnaFusionFusionPartner5Prime { + pub exon: String, + + pub gene: CodingGene, + + pub position: f64, + + pub strand: RnaFusionStrand, + + pub transcript_id: String, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RnaSeq { + #[serde(skip_serializing_if = "Option::is_none")] + pub cohort_ranking: Option, + + pub ensembl_id: String, + + pub entrez_id: String, + + pub fragments_per_kilobase_million: f64, + + #[serde(rename = "fromNGS")] + pub from_ngs: bool, + + pub gene: CodingGene, + + pub id: String, + + pub library_size: i64, + + pub raw_counts: i64, + + pub tissue_corrected_expression: bool, + + pub transcript_id: String, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Snv { + pub allelic_frequency: f64, + + pub alt_allele: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub amino_acid_change: Option, + + pub chromosome: CodingChromosome, + + #[serde(skip_serializing_if = "Option::is_none")] + pub cosmic_id: Option, + + #[serde(rename = "dbSNPId")] + #[serde(skip_serializing_if = "Option::is_none")] + pub db_snp_id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub dna_change: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub external_ids: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub gene: Option, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub interpretation: Option, + + pub patient: Patient, + + pub position: Position, + + #[serde(skip_serializing_if = "Option::is_none")] + pub protein_change: Option, + + pub read_depth: i64, + + pub ref_allele: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub transcript_id: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ExternalId { + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + pub value: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Position { + #[serde(skip_serializing_if = "Option::is_none")] + pub end: Option, + + pub start: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Tmb { + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub interpretation: Option, + + pub patient: Reference, + + pub specimen: Reference, + + pub value: Value, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Value { + pub unit: String, + + pub value: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct NgsReportSpecimen { + pub id: String, + + #[serde(rename = "type")] + pub specimen_type: SpecimenType, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct MtbPatient { + #[serde(skip_serializing_if = "Option::is_none")] + pub address: Option
, + + #[serde(skip_serializing_if = "Option::is_none")] + pub age: Option, + + pub birth_date: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub date_of_death: Option, + + pub gender: CodingGender, + + #[serde(skip_serializing_if = "Option::is_none")] + pub health_insurance: Option, + + pub id: String, + + #[serde(skip_serializing_if = "Option::is_none")] + pub vital_status: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Address { + pub municipality_code: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ValueWithUnit { + pub unit: Unit, + + pub value: f64, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum Unit { + Years, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingGender { + pub code: Gender, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum Gender { + Female, + + Male, + + Other, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct HealthInsurance { + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + pub ext_id: ExternalId, + + #[serde(rename = "type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub health_insurance_type: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum Type { + Organization, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct VitalStatus { + pub code: VitalStatusCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum VitalStatusCode { + Alive, + + Deceased, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct PerformanceStatus { + pub effective_date: String, + + pub id: String, + + pub patient: Patient, + + pub value: CodingEcog, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingEcog { + pub code: PurpleCode, + + #[serde(skip_serializing_if = "Option::is_none")] + pub display: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum PurpleCode { + #[serde(rename = "0")] + Code0, + + #[serde(rename = "1")] + Code1, + + #[serde(rename = "2")] + Code2, + + #[serde(rename = "3")] + Code3, + + #[serde(rename = "4")] + Code4, +} + #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Response { @@ -1223,7 +1592,7 @@ pub struct TumorSpecimen { pub collection: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub icd10: Option, + pub diagnosis: Option, pub id: String, @@ -1291,6 +1660,14 @@ pub enum TumorSpecimenCollectionMethod { Unknown, } +#[derive(Debug, Serialize, Deserialize)] +pub struct Diagnosis { + #[serde(rename = "type")] + pub diagnosis_type: String, + + pub id: String, +} + #[derive(Debug, Serialize, Deserialize)] pub struct CodingTumorSpecimenType { pub code: TumorSpecimenType, @@ -1319,18 +1696,3 @@ pub enum TumorSpecimenType { Unknown, } - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct StudyEnrollmentRecommendation { - pub id: String, - - #[serde(skip_serializing_if = "Option::is_none")] - pub issued_on: Option, - - pub nct_number: String, - - pub patient: Patient, - - pub reason: String, -}