commit 7b8706e502b16992563147fc832e4e6b450f891c Author: Paul-Christian Volkmer Date: Tue Jul 9 15:52:16 2024 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d1fa909 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.idea/ +/target + +*.iml +Cargo.lock \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..0524e7d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "mv64e-mtb-dto" +version = "0.1.0" +edition = "2021" +license = "MIT" +authors = ["Paul-Christian Volkmer "] + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..0ff54b0 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Paul-Christian Volkmer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c934b18 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# DNPM:DIP MTB Data-Transfer-Objects for Rust + +Serialization and deserialization of DNPM:DIP MTB DTOs for the Rust programming language. + +This crate provides DNPM:DIP data model for use with "Modellvorhaben gem. §64e SGB V" diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..6466432 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,107 @@ +//! This crate provides structs to serialize and deserialize DNPM:DIP MTB DTOs. +//! The base struct is `Mtb`. + +#![allow(clippy::needless_doctest_main)] + +use std::error::Error; +use std::fmt::{Debug, Display, Formatter}; +use std::str::FromStr; + +pub use crate::mtb::*; + +mod mtb; + +#[derive(Debug)] +pub struct SerdeError(String); + +impl Display for SerdeError { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "MtbFile Serde Error: {}", self.0) + } +} + +impl Error for SerdeError {} + +impl FromStr for Mtb { + type Err = SerdeError; + + /// Deserialize an instance of `MtbFile` from a string of JSON text. + /// + /// # Example + /// + /// ``` + /// use mv64e_mtb_dto::Mtb; + /// use std::str::FromStr; + /// + /// fn main() { + /// const MTB_JSON: &str = include_str!("../tests/fake_MTBFile.json"); + /// + /// let mtb_file = Mtb::from_str(MTB_JSON).unwrap(); + /// println!("{:#?}", mtb_file); + /// } + /// ``` + /// + /// # Errors + /// + /// If the conversion fails, an `SerdeError` will be returned. + fn from_str(value: &str) -> Result { + serde_json::from_str(value).map_err(|err| SerdeError(err.to_string())) + } +} + +impl Mtb { + /// Creates "dummy" Mtb with consent status `REJECTED`. + /// The created MtbFile does not contain all information, just enough to contain the + /// information, that the patient with given ID has rejected the consent. + pub fn new_with_consent_rejected(patient_id: &str) -> Mtb { + Mtb { + care_plans: None, + claim_responses: None, + claims: None, + consent: Consent { + id: None, + patient: None, + status: None, + }, + diagnoses: None, + ecog_status: None, + episode: None, + genetic_counselling_requests: None, + histology_reports: None, + last_guideline_therapies: None, + molecular_therapies: None, + ngs_reports: None, + patient: MtbPatient { + address: None, + birth_date: String::new(), + date_of_death: None, + gender: CodingGender { + code: Gender::Male, + display: None, + system: None, + version: None, + }, + id: patient_id.to_string(), + insurance: None, + }, + previous_guideline_therapies: None, + recommendations: None, + responses: None, + specimens: None, + study_inclusion_requests: None, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + const MTB_JSON: &str = include_str!("../tests/mv64e-mtb-fake-patient.json"); + + #[test] + fn should_deserialize_json_string() { + let mtbfile = Mtb::from_str(MTB_JSON); + assert!(mtbfile.is_ok()) + } +} diff --git a/src/mtb.rs b/src/mtb.rs new file mode 100644 index 0000000..1707e41 --- /dev/null +++ b/src/mtb.rs @@ -0,0 +1,1358 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Mtb { + #[serde(skip_serializing_if = "Option::is_none")] + pub care_plans: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub claim_responses: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub claims: Option>, + + pub consent: Consent, + + #[serde(skip_serializing_if = "Option::is_none")] + pub diagnoses: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ecog_status: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub episode: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub genetic_counselling_requests: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub histology_reports: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub last_guideline_therapies: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub molecular_therapies: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ngs_reports: Option>, + + pub patient: MtbPatient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub previous_guideline_therapies: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub recommendations: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub responses: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub specimens: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub study_inclusion_requests: Option>, +} + +#[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 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, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Patient { + pub id: String, + + #[serde(rename = "type")] + pub patient_type: PatientType, +} + +#[derive(Debug, Serialize, Deserialize)] +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(skip_serializing_if = "Option::is_none")] + pub id: Option, + + #[serde(rename = "type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub claim_response_claim_type: 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)] +pub struct Consent { + #[serde(skip_serializing_if = "Option::is_none")] + pub id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub patient: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum ConsentStatus { + Active, + + Rejected, +} + +#[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, + + #[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 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, + + #[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")] + The0, + + #[serde(rename = "1")] + The1, + + #[serde(rename = "2")] + The2, + + #[serde(rename = "3")] + The3, + + #[serde(rename = "4")] + The4, +} + +#[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(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, + + #[serde(rename = "type")] + pub cnv_type: CnvType, +} + +#[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, +} + +#[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 issued_on: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub level_of_evidence: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub medication: Option>, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ngs_report: Option, + + pub patient: Patient, + + #[serde(skip_serializing_if = "Option::is_none")] + pub priority: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub supporting_variants: Option>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct LevelOfEvidence { + #[serde(skip_serializing_if = "Option::is_none")] + pub addendums: Option>, + + pub grading: CodingLevelOfEvidenceGrading, + + #[serde(skip_serializing_if = "Option::is_none")] + pub publications: Option>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingLevelOfEvidenceAddendum { + pub code: AddendumCode, + + #[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 AddendumCode { + #[serde(rename = "is")] + Is, + + #[serde(rename = "iv")] + Iv, + + R, + + Z, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingLevelOfEvidenceGrading { + pub code: GradingCode, + + #[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 = "camelCase")] +pub enum GradingCode { + #[serde(rename = "m1A")] + M1A, + + #[serde(rename = "m1B")] + M1B, + + #[serde(rename = "m1C")] + M1C, + + #[serde(rename = "m2A")] + M2A, + + #[serde(rename = "m2B")] + M2B, + + #[serde(rename = "m2C")] + M2C, + + M3, + + M4, + + Undefined, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ReferencePublication { + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_id: Option, + + #[serde(rename = "type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub reference_publication_type: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub uri: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ExtId { + #[serde(skip_serializing_if = "Option::is_none")] + pub system: Option, + + pub value: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum System { + #[serde(rename = "https://pubmed.ncbi.nlm.nih.gov/")] + HttpsPubmedNcbiNlmNihGov, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum TherapyRecommendationPriority { + #[serde(rename = "1")] + Prio1, + + #[serde(rename = "2")] + Prio2, + + #[serde(rename = "3")] + Prio3, + + #[serde(rename = "4")] + Prio4, +} + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct Response { + pub effective_date: String, + + pub id: String, + + pub patient: Patient, + + pub therapy: ResponseTherapy, + + pub value: CodingRecist, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ResponseTherapy { + pub id: String, + + #[serde(rename = "type")] + pub response_therapy_type: ResponseTherapyType, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum ResponseTherapyType { + #[serde(rename = "MTBMedicationTherapy")] + MtbMedicationTherapy, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingRecist { + pub code: FluffyCode, + + #[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 FluffyCode { + #[serde(rename = "CR")] + Cr, + + #[serde(rename = "MR")] + Mr, + + #[serde(rename = "NA")] + Na, + + #[serde(rename = "NYA")] + Nya, + + #[serde(rename = "PD")] + Pd, + + #[serde(rename = "PR")] + Pr, + + #[serde(rename = "SD")] + Sd, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TumorSpecimen { + #[serde(skip_serializing_if = "Option::is_none")] + pub collection: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub icd10: Option, + + pub id: String, + + pub patient: Patient, + + #[serde(rename = "type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub tumor_specimen_type: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Collection { + pub date: String, + + pub localization: CodingTumorSpecimenCollectionLocalization, + + pub method: CodingTumorSpecimenCollectionMethod, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorSpecimenCollectionLocalization { + pub code: TumorSpecimenCollectionLocalization, + + #[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 TumorSpecimenCollectionLocalization { + Metastasis, + + #[serde(rename = "primary-tumor")] + PrimaryTumor, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorSpecimenCollectionMethod { + pub code: TumorSpecimenCollectionMethod, + + #[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 TumorSpecimenCollectionMethod { + Biopsy, + + Cytology, + + #[serde(rename = "liquid-biopsy")] + LiquidBiopsy, + + Resection, + + Unknown, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CodingTumorSpecimenType { + pub code: TumorSpecimenType, + + #[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 TumorSpecimenType { + #[serde(rename = "cryo-frozen")] + CryoFrozen, + + #[serde(rename = "FFPE")] + Ffpe, + + #[serde(rename = "fresh-tissue")] + FreshTissue, + + #[serde(rename = "liquid-biopsy")] + LiquidBiopsy, + + 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, +} diff --git a/tests/mv64e-mtb-fake-patient.json b/tests/mv64e-mtb-fake-patient.json new file mode 100644 index 0000000..336bf9e --- /dev/null +++ b/tests/mv64e-mtb-fake-patient.json @@ -0,0 +1,1531 @@ +{ + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "gender": { + "code": "male", + "display": "Männlich", + "system": "Gender" + }, + "birthDate": "1977-03-15", + "dateOfDeath": "2008-03-15", + "healthInsurance": { + "extId": { + "value": "aok-ik", + "system": "IK" + }, + "display": "AOK", + "type": "Organization" + }, + "age": { + "value": 31, + "unit": "Years" + }, + "vitalStatus": { + "code": "deceased", + "display": "Verstorben", + "system": "dnpm-dip/patient/vital-status" + } + }, + "consent": {}, + "episodesOfCare": [ + { + "id": "d0634bb6-83d9-4c19-beb5-206bddd7513a", + "transferTan": "cda64713-7b31-402e-89f9-8fa8f9809507", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "period": { + "start": "2024-01-09" + }, + "diagnoses": [ + { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "type": "MTBDiagnosis" + } + ] + } + ], + "diagnoses": [ + { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "recordedOn": "2004-05-15", + "code": { + "code": "C76.7", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "system": "http://fhir.de/CodeSystem/bfarm/icd-10-gm", + "version": "2024" + }, + "topography": { + "code": "C76.7", + "display": "Sonstiger mangelhaft bezeichneter Sitz", + "system": "urn:oid:2.16.840.1.113883.6.43.1", + "version": "Zweite Revision" + }, + "tumorGrade": { + "code": "G2", + "display": "G2 – mäßig differenziert", + "system": "dnpm-dip/mtb/tumor-grade" + }, + "whoGrading": { + "code": "2", + "display": "Diffuse astrocytoma", + "system": "dnpm-dip/mtb/who-grading-cns-tumors", + "version": "2021" + }, + "stageHistory": [ + { + "stage": { + "code": "local", + "display": "Lokal", + "system": "dnpm-dip/mtb/diagnosis/tumor-spread" + }, + "date": "2024-07-09" + } + ], + "guidelineTreatmentStatus": { + "code": "impossible", + "display": "Leitlinientherapie nicht möglich", + "system": "dnpm-dip/diagnosis/guideline-therapy/status" + } + } + ], + "guidelineTherapies": [ + { + "id": "386ba653-0b20-4801-9eb0-f937ed8a54e9", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "therapyLine": 3, + "recordedOn": "2024-07-09", + "status": { + "code": "stopped", + "display": "Abgebrochen", + "system": "dnpm-dip/therapy/status" + }, + "statusReason": { + "code": "progression", + "display": "Progression", + "system": "dnpm-dip/therapy/status-reason" + }, + "period": { + "start": "2022-08-09", + "end": "2023-02-14" + }, + "medication": [ + { + "code": "L01FX12", + "display": "Tafasitamab", + "system": "http://fhir.de/CodeSystem/bfarm/atc", + "version": "2024" + } + ], + "notes": "Notes on the therapy..." + }, + { + "id": "f3a7e152-0f86-4646-b671-29f083019783", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "therapyLine": 6, + "recordedOn": "2024-07-09", + "status": { + "code": "stopped", + "display": "Abgebrochen", + "system": "dnpm-dip/therapy/status" + }, + "statusReason": { + "code": "progression", + "display": "Progression", + "system": "dnpm-dip/therapy/status-reason" + }, + "period": { + "start": "2023-02-09", + "end": "2023-08-10" + }, + "medication": [ + { + "code": "L01FX28", + "display": "Glofitamab", + "system": "http://fhir.de/CodeSystem/bfarm/atc", + "version": "2024" + } + ], + "notes": "Notes on the therapy..." + } + ], + "guidelineProcedures": [ + { + "id": "43f81705-9e17-41d3-ae05-06958dd33d37", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "code": { + "code": "radio-therapy", + "display": "Strahlen-Therapie", + "system": "dnpm-dip/mtb/procedure/type" + }, + "status": { + "code": "completed", + "display": "Abgeschlossen", + "system": "dnpm-dip/therapy/status" + }, + "statusReason": { + "code": "progression", + "display": "Progression", + "system": "dnpm-dip/therapy/status-reason" + }, + "therapyLine": 8, + "recordedOn": "2024-07-09", + "period": { + "start": "2024-01-09" + }, + "notes": "Notes on the therapy..." + }, + { + "id": "89594d3d-0708-4620-8803-fa5de0e64a9d", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "code": { + "code": "surgery", + "display": "OP", + "system": "dnpm-dip/mtb/procedure/type" + }, + "status": { + "code": "on-going", + "display": "Laufend", + "system": "dnpm-dip/therapy/status" + }, + "statusReason": { + "code": "continued-externally", + "display": "Weiterbehandlung extern", + "system": "dnpm-dip/therapy/status-reason" + }, + "therapyLine": 8, + "recordedOn": "2024-07-09", + "period": { + "start": "2024-01-09" + }, + "notes": "Notes on the therapy..." + } + ], + "performanceStatus": [ + { + "id": "99f246e6-fb8c-40c4-880c-1e2e5658cbf6", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "effectiveDate": "2024-07-09", + "value": { + "code": "3", + "display": "ECOG 3", + "system": "ECOG-Performance-Status" + } + } + ], + "specimens": [ + { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "diagnosis": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "type": "MTBDiagnosis" + }, + "type": { + "code": "fresh-tissue", + "display": "Frischgewebe", + "system": "dnpm-dip/mtb/tumor-specimen/type" + }, + "collection": { + "date": "2024-07-09", + "method": { + "code": "liquid-biopsy", + "display": "Liquid Biopsy", + "system": "dnpm-dip/mtb/tumor-specimen/collection/method" + }, + "localization": { + "code": "metastasis", + "display": "Metastase", + "system": "dnpm-dip/mtb/tumor-specimen/collection/localization" + } + } + } + ], + "histologyReports": [ + { + "id": "ac78c911-238b-46e5-9bd5-36304e70174a", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "issuedOn": "2024-07-09", + "results": { + "tumorMorphology": { + "id": "dc18063a-89b9-4eca-a485-557368450cf7", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "value": { + "code": "8201/2", + "display": "Kribriformes Carcinoma in situ [C50.-]", + "system": "urn:oid:2.16.840.1.113883.6.43.1", + "version": "Zweite Revision" + }, + "notes": "Notes..." + }, + "tumorCellContent": { + "id": "cc19e1bb-178b-4264-9afd-0ba62c35d95f", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "method": { + "code": "histologic", + "display": "Histologisch", + "system": "dnpm-dip/mtb/tumor-cell-content/method" + }, + "value": 0.6964126464218567 + } + } + } + ], + "ihcReports": [ + { + "id": "2c97573a-f4dd-4c75-a630-7422cbe888f3", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "date": "2024-07-09", + "journalId": { + "value": "de45bb4c-ef64-4028-a55e-8a3d73842e6d" + }, + "blockId": { + "value": "93a9a7d9-54b8-4182-9da9-320f1a7fae02" + }, + "proteinExpressionResults": [ + { + "id": "60b82433-c0a6-4d0f-85e9-40f63b28ca22", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "protein": { + "code": "HGNC:11998", + "display": "TP53", + "system": "https://www.genenames.org/" + }, + "value": { + "code": "3+", + "display": "3+", + "system": "dnpm-dip/mtb/ihc/protein-expression/result" + }, + "tpsScore": 27, + "icScore": { + "code": "0", + "display": "< 1%", + "system": "dnpm-dip/mtb/ihc/protein-expression/ic-score" + }, + "tcScore": { + "code": "2", + "display": ">= 5%", + "system": "dnpm-dip/mtb/ihc/protein-expression/tc-score" + } + }, + { + "id": "ecfab030-b3e4-4c33-a50b-e8933c9b3593", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "protein": { + "code": "HGNC:1097", + "display": "BRAF", + "system": "https://www.genenames.org/" + }, + "value": { + "code": "not-exp", + "display": "Nicht exprimiert", + "system": "dnpm-dip/mtb/ihc/protein-expression/result" + }, + "tpsScore": 87, + "icScore": { + "code": "2", + "display": ">= 5%", + "system": "dnpm-dip/mtb/ihc/protein-expression/ic-score" + }, + "tcScore": { + "code": "1", + "display": ">= 1%", + "system": "dnpm-dip/mtb/ihc/protein-expression/tc-score" + } + }, + { + "id": "3eab7c68-bf01-462a-8c55-7306c4ce8ea6", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "protein": { + "code": "HGNC:11998", + "display": "TP53", + "system": "https://www.genenames.org/" + }, + "value": { + "code": "3+", + "display": "3+", + "system": "dnpm-dip/mtb/ihc/protein-expression/result" + }, + "tpsScore": 88, + "icScore": { + "code": "2", + "display": ">= 5%", + "system": "dnpm-dip/mtb/ihc/protein-expression/ic-score" + }, + "tcScore": { + "code": "4", + "display": ">= 25%", + "system": "dnpm-dip/mtb/ihc/protein-expression/tc-score" + } + }, + { + "id": "b0bb41e1-27a6-48c2-ae16-b3a40c463e68", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "protein": { + "code": "HGNC:5173", + "display": "HRAS", + "system": "https://www.genenames.org/" + }, + "value": { + "code": "1+", + "display": "1+", + "system": "dnpm-dip/mtb/ihc/protein-expression/result" + }, + "tpsScore": 60, + "icScore": { + "code": "0", + "display": "< 1%", + "system": "dnpm-dip/mtb/ihc/protein-expression/ic-score" + }, + "tcScore": { + "code": "2", + "display": ">= 5%", + "system": "dnpm-dip/mtb/ihc/protein-expression/tc-score" + } + } + ], + "msiMmrResults": [] + } + ], + "ngsReports": [ + { + "id": "4cbfc863-1977-4293-8141-96a4ef411fe9", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "issuedOn": "2024-07-09", + "sequencingType": { + "code": "exome", + "display": "Exome", + "system": "dnpm-dip/ngs/sequencing-type" + }, + "metadata": [ + { + "kitType": "Kit Type", + "kitManufacturer": "Manufacturer", + "sequencer": "Sequencer", + "referenceGenome": "HG19", + "pipeline": "https://github.com/pipeline-project" + } + ], + "results": { + "tumorCellContent": { + "id": "0aaa088d-da71-498b-8f5b-67851642fc3b", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "method": { + "code": "bioinformatic", + "display": "Bioinformatisch", + "system": "dnpm-dip/mtb/tumor-cell-content/method" + }, + "value": 0.8488462340782923 + }, + "tmb": { + "id": "32008349-cf95-47a0-b5fe-0a692e96184f", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "value": { + "value": 298193, + "unit": "Mutations per megabase" + }, + "interpretation": { + "code": "low", + "display": "Niedrig", + "system": "dnpm-dip/mtb/ngs/tmb/interpretation" + } + }, + "brcaness": { + "id": "6fec2a4c-d354-441d-8bd1-51ceb0094abc", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "value": 0.5, + "confidenceRange": { + "min": 0.4, + "max": 0.6 + } + }, + "hrdScore": { + "id": "43a0f938-cb49-4f09-988e-4d7bdcafcd00", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "specimen": { + "id": "5760dfb4-9012-454c-b315-5deafe999c8f", + "type": "TumorSpecimen" + }, + "value": 0.06698695819348954, + "components": { + "lst": 0.3949619863732128, + "loh": 0.8542926541406639, + "tai": 0.5884686564371258 + }, + "interpretation": { + "code": "low", + "display": "Niedrig", + "system": "dnpm-dip/mtb/ngs/hrd-score/interpretation" + } + }, + "simpleVariants": [ + { + "id": "ab846e35-c4c1-4ead-a7ba-f070b03c155e", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "externalIds": [ + { + "value": "70f5a7bb-9b7f-48ac-a236-fb7968a68f7d", + "system": "https://www.ncbi.nlm.nih.gov/snp/" + }, + { + "value": "afe100b1-375b-471c-ba0d-d11c578764e9", + "system": "https://cancer.sanger.ac.uk/cosmic" + } + ], + "chromosome": { + "code": "chr2", + "display": "chr2", + "system": "chromosome" + }, + "gene": { + "code": "HGNC:6407", + "display": "KRAS", + "system": "https://www.genenames.org/" + }, + "transcriptId": { + "value": "9eedaa8a-085e-440c-8f2d-665830944ce9", + "system": "https://www.ensembl.org/index.html" + }, + "position": { + "start": 497 + }, + "altAllele": "G", + "refAllele": "C", + "dnaChange": { + "code": "c.497C>G", + "system": "https://hgvs-nomenclature.org" + }, + "proteinChange": { + "code": "p.Lys23_Val25del", + "system": "https://hgvs-nomenclature.org" + }, + "readDepth": 9, + "allelicFrequency": 0.14597505331005867, + "interpretation": { + "code": "3", + "display": "Uncertain significance", + "system": "https://www.ncbi.nlm.nih.gov/clinvar/" + } + }, + { + "id": "546c0677-a7b7-4d55-b3d8-5151457b023d", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "externalIds": [ + { + "value": "299b3cac-3ad2-4203-9754-a7613ee8dea5", + "system": "https://www.ncbi.nlm.nih.gov/snp/" + }, + { + "value": "22f767c3-b359-401e-a0b1-647adffe3ee9", + "system": "https://cancer.sanger.ac.uk/cosmic" + } + ], + "chromosome": { + "code": "chr4", + "display": "chr4", + "system": "chromosome" + }, + "gene": { + "code": "HGNC:5173", + "display": "HRAS", + "system": "https://www.genenames.org/" + }, + "transcriptId": { + "value": "34357423-91b1-46c3-b9a4-b9e236d07d7d", + "system": "https://www.ensembl.org/index.html" + }, + "position": { + "start": 449 + }, + "altAllele": "T", + "refAllele": "C", + "dnaChange": { + "code": "c.449C>T", + "system": "https://hgvs-nomenclature.org" + }, + "proteinChange": { + "code": "p.Lys23_Val25del", + "system": "https://hgvs-nomenclature.org" + }, + "readDepth": 21, + "allelicFrequency": 0.929058459806847, + "interpretation": { + "code": "4", + "display": "Likely pathogenic", + "system": "https://www.ncbi.nlm.nih.gov/clinvar/" + } + }, + { + "id": "30f5ad5a-ac59-4fc2-af19-9321d5aad4ea", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "externalIds": [ + { + "value": "c27a1775-dbba-42af-9641-9c26c44c3866", + "system": "https://www.ncbi.nlm.nih.gov/snp/" + }, + { + "value": "a6fab5be-b2b5-4260-8a2c-681d9cfef100", + "system": "https://cancer.sanger.ac.uk/cosmic" + } + ], + "chromosome": { + "code": "chr9", + "display": "chr9", + "system": "chromosome" + }, + "gene": { + "code": "HGNC:6407", + "display": "KRAS", + "system": "https://www.genenames.org/" + }, + "transcriptId": { + "value": "b82aafff-afc1-40fe-bde0-e5b7f3c06b9d", + "system": "https://www.ensembl.org/index.html" + }, + "position": { + "start": 199 + }, + "altAllele": "G", + "refAllele": "T", + "dnaChange": { + "code": "c.199T>G", + "system": "https://hgvs-nomenclature.org" + }, + "proteinChange": { + "code": "p.(Glu125_Ala132delinsGlyLeuHisArgPheIleValLeu)", + "system": "https://hgvs-nomenclature.org" + }, + "readDepth": 23, + "allelicFrequency": 0.6280972522555942, + "interpretation": { + "code": "0", + "display": "Not Applicable", + "system": "https://www.ncbi.nlm.nih.gov/clinvar/" + } + }, + { + "id": "dffc6391-c2dd-4114-9b35-21048b16a5e8", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "externalIds": [ + { + "value": "9c2af2ba-c400-4bdc-aa45-bcffa01b86c0", + "system": "https://www.ncbi.nlm.nih.gov/snp/" + }, + { + "value": "00be47f4-d2ac-4c90-9569-3909693e050b", + "system": "https://cancer.sanger.ac.uk/cosmic" + } + ], + "chromosome": { + "code": "chr2", + "display": "chr2", + "system": "chromosome" + }, + "gene": { + "code": "HGNC:3690", + "display": "FGFR3", + "system": "https://www.genenames.org/" + }, + "transcriptId": { + "value": "bc9d7f41-1e33-44c6-8854-32ba14c7bc85", + "system": "https://www.ensembl.org/index.html" + }, + "position": { + "start": 446 + }, + "altAllele": "A", + "refAllele": "C", + "dnaChange": { + "code": "c.446C>A", + "system": "https://hgvs-nomenclature.org" + }, + "proteinChange": { + "code": "p.Cys28delinsTrpVal", + "system": "https://hgvs-nomenclature.org" + }, + "readDepth": 6, + "allelicFrequency": 0.8192427503946907, + "interpretation": { + "code": "2", + "display": "Likely benign", + "system": "https://www.ncbi.nlm.nih.gov/clinvar/" + } + }, + { + "id": "97021fec-3038-4d40-a923-a7185f2dd45c", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "externalIds": [ + { + "value": "b3e669b9-daec-4020-a876-fe8cd984ec07", + "system": "https://www.ncbi.nlm.nih.gov/snp/" + }, + { + "value": "5328e42e-bcd2-4dd2-ac2c-e52d860e7cdb", + "system": "https://cancer.sanger.ac.uk/cosmic" + } + ], + "chromosome": { + "code": "chr4", + "display": "chr4", + "system": "chromosome" + }, + "gene": { + "code": "HGNC:391", + "display": "AKT1", + "system": "https://www.genenames.org/" + }, + "transcriptId": { + "value": "02e810a2-a8ee-48fa-98ee-c2555dedec2b", + "system": "https://www.ensembl.org/index.html" + }, + "position": { + "start": 181 + }, + "altAllele": "C", + "refAllele": "G", + "dnaChange": { + "code": "c.181G>C", + "system": "https://hgvs-nomenclature.org" + }, + "proteinChange": { + "code": "p.(His321Leufs*3)", + "system": "https://hgvs-nomenclature.org" + }, + "readDepth": 18, + "allelicFrequency": 0.9486252825502527, + "interpretation": { + "code": "0", + "display": "Not Applicable", + "system": "https://www.ncbi.nlm.nih.gov/clinvar/" + } + } + ], + "copyNumberVariants": [ + { + "id": "67f5f94a-7210-4298-832b-79cbd8c3f602", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chr19", + "display": "chr19", + "system": "chromosome" + }, + "startRange": { + "start": 16044, + "end": 16086 + }, + "endRange": { + "start": 16189, + "end": 16239 + }, + "totalCopyNumber": 1, + "relativeCopyNumber": 0.21581784365462364, + "cnA": 0.2529681162704943, + "cnB": 0.09643290658258796, + "reportedAffectedGenes": [ + { + "code": "HGNC:391", + "display": "AKT1", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "loss", + "display": "Loss", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:6407", + "display": "KRAS", + "system": "https://www.genenames.org/" + } + ] + }, + { + "id": "81916886-c2bb-43c2-b3b1-8205b731aae5", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chr21", + "display": "chr21", + "system": "chromosome" + }, + "startRange": { + "start": 39802, + "end": 39844 + }, + "endRange": { + "start": 40267, + "end": 40317 + }, + "totalCopyNumber": 3, + "relativeCopyNumber": 0.6944561507132927, + "cnA": 0.7565931684718212, + "cnB": 0.7741518026256429, + "reportedAffectedGenes": [ + { + "code": "HGNC:6407", + "display": "KRAS", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:1097", + "display": "BRAF", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:1100", + "display": "BRCA1", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "low-level-gain", + "display": "Low-level-gain", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:3689", + "display": "FGFR2", + "system": "https://www.genenames.org/" + } + ] + }, + { + "id": "1aaf355a-62ef-40ec-ac84-2ed6b64c25ce", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chr2", + "display": "chr2", + "system": "chromosome" + }, + "startRange": { + "start": 7155, + "end": 7197 + }, + "endRange": { + "start": 7284, + "end": 7334 + }, + "totalCopyNumber": 2, + "relativeCopyNumber": 0.11504463549534216, + "cnA": 0.6489287849115875, + "cnB": 0.13740853100802786, + "reportedAffectedGenes": [ + { + "code": "HGNC:391", + "display": "AKT1", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:5173", + "display": "HRAS", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:1100", + "display": "BRCA1", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "low-level-gain", + "display": "Low-level-gain", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:76", + "display": "ABL1", + "system": "https://www.genenames.org/" + } + ] + }, + { + "id": "773f6c76-faaf-47bf-b554-709679935b9e", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chr19", + "display": "chr19", + "system": "chromosome" + }, + "startRange": { + "start": 7321, + "end": 7363 + }, + "endRange": { + "start": 7867, + "end": 7917 + }, + "totalCopyNumber": 1, + "relativeCopyNumber": 0.7259188532974242, + "cnA": 0.5950764310251827, + "cnB": 0.5384386131573586, + "reportedAffectedGenes": [ + { + "code": "HGNC:5173", + "display": "HRAS", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "loss", + "display": "Loss", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:3689", + "display": "FGFR2", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:6407", + "display": "KRAS", + "system": "https://www.genenames.org/" + } + ] + }, + { + "id": "4e7107e4-bbc6-41cc-b6fe-37e65b96ab57", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chr19", + "display": "chr19", + "system": "chromosome" + }, + "startRange": { + "start": 16016, + "end": 16058 + }, + "endRange": { + "start": 16601, + "end": 16651 + }, + "totalCopyNumber": 7, + "relativeCopyNumber": 0.20090926699505263, + "cnA": 0.022847976828443195, + "cnB": 0.4081382139537255, + "reportedAffectedGenes": [ + { + "code": "HGNC:1097", + "display": "BRAF", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:76", + "display": "ABL1", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:1100", + "display": "BRCA1", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "high-level-gain", + "display": "High-level-gain", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:5173", + "display": "HRAS", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:3690", + "display": "FGFR3", + "system": "https://www.genenames.org/" + } + ] + }, + { + "id": "d80eb862-7d46-453e-83e4-575c16d8a2f1", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "chromosome": { + "code": "chrY", + "display": "chrY", + "system": "chromosome" + }, + "startRange": { + "start": 12500, + "end": 12542 + }, + "endRange": { + "start": 12791, + "end": 12841 + }, + "totalCopyNumber": 7, + "relativeCopyNumber": 0.6146868961350509, + "cnA": 0.05361036969744892, + "cnB": 0.7939811403382872, + "reportedAffectedGenes": [ + { + "code": "HGNC:6973", + "display": "MDM2", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:391", + "display": "AKT1", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:3689", + "display": "FGFR2", + "system": "https://www.genenames.org/" + } + ], + "reportedFocality": "partial q-arm", + "type": { + "code": "high-level-gain", + "display": "High-level-gain", + "system": "dnpm-dip/mtb/ngs-report/cnv/type" + }, + "copyNumberNeutralLoH": [ + { + "code": "HGNC:6973", + "display": "MDM2", + "system": "https://www.genenames.org/" + }, + { + "code": "HGNC:391", + "display": "AKT1", + "system": "https://www.genenames.org/" + } + ] + } + ], + "dnaFusions": [], + "rnaFusions": [], + "rnaSeqs": [] + } + } + ], + "carePlans": [ + { + "id": "6906ca1b-8169-471d-9156-e807654fae8a", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "issuedOn": "2024-07-09", + "statusReason": { + "code": "no-target", + "display": "Keine Therapeutische Konsequenz", + "system": "dnpm-dip/mtb/careplan/status-reason" + }, + "medicationRecommendations": [ + { + "id": "dcb9b2c7-7311-4801-9675-948f00870070", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "issuedOn": "2024-07-09", + "levelOfEvidence": { + "grading": { + "code": "m4", + "display": "m4", + "system": "dnpm-dip/mtb/level-of-evidence/grading" + }, + "addendums": [ + { + "code": "R", + "display": "R", + "system": "dnpm-dip/mtb/level-of-evidence/addendum" + } + ], + "publications": [ + { + "extId": { + "value": "1173657729", + "system": "https://pubmed.ncbi.nlm.nih.gov/" + }, + "type": "Publication" + } + ] + }, + "priority": { + "code": "1", + "display": "1", + "system": "dnpm-dip/therapy-recommendation/priority" + }, + "medication": [ + { + "code": "L01EX08", + "display": "Lenvatinib", + "system": "http://fhir.de/CodeSystem/bfarm/atc", + "version": "2024" + } + ], + "supportingVariants": [ + { + "id": "4e7107e4-bbc6-41cc-b6fe-37e65b96ab57", + "display": "CNV BRAF,ABL1,BRCA1 High-level-gain", + "type": "Variant" + } + ] + }, + { + "id": "4478c7f1-cdcf-41f5-8245-7da7784279ef", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "issuedOn": "2024-07-09", + "levelOfEvidence": { + "grading": { + "code": "m2B", + "display": "m2B", + "system": "dnpm-dip/mtb/level-of-evidence/grading" + }, + "addendums": [ + { + "code": "R", + "display": "R", + "system": "dnpm-dip/mtb/level-of-evidence/addendum" + } + ], + "publications": [ + { + "extId": { + "value": "855039712", + "system": "https://pubmed.ncbi.nlm.nih.gov/" + }, + "type": "Publication" + } + ] + }, + "priority": { + "code": "4", + "display": "4", + "system": "dnpm-dip/therapy-recommendation/priority" + }, + "medication": [ + { + "code": "L01FX05", + "display": "Brentuximab vedotin", + "system": "http://fhir.de/CodeSystem/bfarm/atc", + "version": "2024" + } + ], + "supportingVariants": [ + { + "id": "ab846e35-c4c1-4ead-a7ba-f070b03c155e", + "display": "SNV KRAS p.Lys23_Val25del", + "type": "Variant" + } + ] + } + ], + "geneticCounselingRecommendation": { + "id": "432f3ff8-ac56-4139-94c9-fa685bc37130", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "issuedOn": "2024-07-09", + "reason": { + "code": "secondary-tumor", + "display": "Zweittumor", + "system": "dnpm-dip/mtb/recommendation/genetic-counseling/reason" + } + }, + "studyEnrollmentRecommendations": [ + { + "id": "fac762fb-288f-4e26-a2f2-ccdf03c9804d", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "reason": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "issuedOn": "2024-07-09", + "levelOfEvidence": { + "code": "m4", + "display": "m4", + "system": "dnpm-dip/mtb/level-of-evidence/grading" + }, + "supportingVariants": [ + { + "id": "4e7107e4-bbc6-41cc-b6fe-37e65b96ab57", + "display": "CNV BRAF,ABL1,BRCA1 High-level-gain", + "type": "Variant" + } + ], + "studies": [ + { + "value": "NCT:21972101", + "system": "NCT" + } + ] + } + ], + "notes": "Protocol of the MTB conference..." + } + ], + "claims": [ + { + "id": "b5dd7735-0dfc-49c4-ac4d-f17ee5b3afe8", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "recommendation": { + "id": "dcb9b2c7-7311-4801-9675-948f00870070", + "type": "MTBMedicationRecommendation" + }, + "issuedOn": "2024-07-09", + "stage": { + "code": "initial-claim", + "display": "Erstantrag", + "system": "dnpm-dip/mtb/claim/stage" + } + }, + { + "id": "ba800730-ad27-4723-a4dc-dd02bfd96f79", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "recommendation": { + "id": "4478c7f1-cdcf-41f5-8245-7da7784279ef", + "type": "MTBMedicationRecommendation" + }, + "issuedOn": "2024-07-09", + "stage": { + "code": "initial-claim", + "display": "Erstantrag", + "system": "dnpm-dip/mtb/claim/stage" + } + } + ], + "claimResponses": [ + { + "id": "4d70791b-1727-4a80-8afc-ee655acfdb77", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "claim": { + "id": "b5dd7735-0dfc-49c4-ac4d-f17ee5b3afe8", + "type": "Claim" + }, + "issuedOn": "2024-07-09", + "status": { + "code": "rejected", + "display": "Abgelehnt", + "system": "dnpm-dip/mtb/claim-response/status" + }, + "statusReason": { + "code": "unknown", + "display": "Unbekant", + "system": "dnpm-dip/mtb/claim-response/status-reason" + } + }, + { + "id": "82ecffc7-5ac8-47d7-9697-27061c1b1c53", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "claim": { + "id": "ba800730-ad27-4723-a4dc-dd02bfd96f79", + "type": "Claim" + }, + "issuedOn": "2024-07-09", + "status": { + "code": "rejected", + "display": "Abgelehnt", + "system": "dnpm-dip/mtb/claim-response/status" + }, + "statusReason": { + "code": "unknown", + "display": "Unbekant", + "system": "dnpm-dip/mtb/claim-response/status-reason" + } + } + ], + "therapies": [ + { + "history": [ + { + "id": "6f0f1bb5-7633-4834-8ed4-0efb43bcaf42", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "basedOn": { + "id": "dcb9b2c7-7311-4801-9675-948f00870070", + "type": "MTBMedicationRecommendation" + }, + "recordedOn": "2024-07-09", + "status": { + "code": "on-going", + "display": "Laufend", + "system": "dnpm-dip/therapy/status" + }, + "period": { + "start": "2007-09-29", + "end": "2008-03-15" + }, + "medication": [ + { + "code": "L01EX08", + "display": "Lenvatinib", + "system": "http://fhir.de/CodeSystem/bfarm/atc", + "version": "2024" + } + ], + "notes": "Notes on the therapy..." + } + ] + }, + { + "history": [ + { + "id": "634aa031-a4a1-4137-8895-07dcb543e245", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "indication": { + "id": "2b478ee3-f5c0-4429-8367-7215b1908a19", + "display": "Bösartige Neubildung: Sonstige ungenau bezeichnete Lokalisationen", + "type": "MTBDiagnosis" + }, + "basedOn": { + "id": "4478c7f1-cdcf-41f5-8245-7da7784279ef", + "type": "MTBMedicationRecommendation" + }, + "recordedOn": "2024-07-09", + "status": { + "code": "not-done", + "display": "Nicht umgesetzt", + "system": "dnpm-dip/therapy/status" + }, + "statusReason": { + "code": "payment-refused", + "display": "Kostenübernahme abgelehnt", + "system": "dnpm-dip/therapy/status-reason" + }, + "notes": "Notes on the therapy..." + } + ] + } + ], + "responses": [ + { + "id": "f9e27ff2-0b65-4416-86cd-2b4085fd92a2", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "therapy": { + "id": "6f0f1bb5-7633-4834-8ed4-0efb43bcaf42", + "type": "MTBMedicationTherapy" + }, + "effectiveDate": "2008-01-12", + "value": { + "code": "CR", + "display": "Complete Response", + "system": "RECIST" + } + }, + { + "id": "9231408b-bc7e-482a-808b-3af09b212dad", + "patient": { + "id": "fbd23d0b-f81b-4a2f-b53b-e93871069cfd", + "type": "Patient" + }, + "therapy": { + "id": "634aa031-a4a1-4137-8895-07dcb543e245", + "type": "MTBMedicationTherapy" + }, + "effectiveDate": "2024-07-09", + "value": { + "code": "SD", + "display": "Stable Disease", + "system": "RECIST" + } + } + ] +} \ No newline at end of file