#![allow(
unused_imports,
clippy::large_enum_variant,
clippy::too_many_lines,
clippy::doc_markdown
)]
use crate::decode::{
choice_key, required, required_list, resource_type, Choice, Decoder, FhirJson, Obj, ObjWriter,
};
use crate::json::Json;
use crate::primitive::{Decimal, Kind, Primitive};
use crate::r4::*;
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequence {
pub id: Option<String>,
pub meta: Option<Meta>,
pub implicit_rules: Option<Primitive<String>>,
pub language: Option<Primitive<String>>,
pub text: Option<Narrative>,
pub contained: Vec<Resource>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub identifier: Vec<Identifier>,
pub type_: Option<Primitive<String>>,
pub coordinate_system: Option<Primitive<i32>>,
pub patient: Option<Reference>,
pub specimen: Option<Reference>,
pub device: Option<Reference>,
pub performer: Option<Reference>,
pub quantity: Option<Quantity>,
pub reference_seq: Option<MolecularSequenceReferenceSeq>,
pub variant: Vec<MolecularSequenceVariant>,
pub observed_seq: Option<Primitive<String>>,
pub quality: Vec<MolecularSequenceQuality>,
pub read_coverage: Option<Primitive<i32>>,
pub repository: Vec<MolecularSequenceRepository>,
pub pointer: Vec<Reference>,
pub structure_variant: Vec<MolecularSequenceStructureVariant>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequence {
const TYPE_NAME: &'static str = "MolecularSequence";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "MolecularSequence");
let r = MolecularSequence {
id: o.string(d, "id"),
meta: o.one(d, "meta"),
implicit_rules: o.prim(d, "implicitRules", Kind::Uri),
language: o.prim(d, "language", Kind::Code),
text: o.one(d, "text"),
contained: o.list(d, "contained"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
identifier: o.list(d, "identifier"),
type_: o.prim(d, "type", Kind::Code),
coordinate_system: o.prim(d, "coordinateSystem", Kind::Integer),
patient: o.one(d, "patient"),
specimen: o.one(d, "specimen"),
device: o.one(d, "device"),
performer: o.one(d, "performer"),
quantity: o.one(d, "quantity"),
reference_seq: o.one(d, "referenceSeq"),
variant: o.list(d, "variant"),
observed_seq: o.prim(d, "observedSeq", Kind::String),
quality: o.list(d, "quality"),
read_coverage: o.prim(d, "readCoverage", Kind::Integer),
repository: o.list(d, "repository"),
pointer: o.list(d, "pointer"),
structure_variant: o.list(d, "structureVariant"),
};
required(d, "coordinateSystem", &r.coordinate_system);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("MolecularSequence".into()));
w.string("id", &self.id);
w.one("meta", &self.meta);
w.prim("implicitRules", &self.implicit_rules);
w.prim("language", &self.language);
w.one("text", &self.text);
w.list("contained", &self.contained);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.list("identifier", &self.identifier);
w.prim("type", &self.type_);
w.prim("coordinateSystem", &self.coordinate_system);
w.one("patient", &self.patient);
w.one("specimen", &self.specimen);
w.one("device", &self.device);
w.one("performer", &self.performer);
w.one("quantity", &self.quantity);
w.one("referenceSeq", &self.reference_seq);
w.list("variant", &self.variant);
w.prim("observedSeq", &self.observed_seq);
w.list("quality", &self.quality);
w.prim("readCoverage", &self.read_coverage);
w.list("repository", &self.repository);
w.list("pointer", &self.pointer);
w.list("structureVariant", &self.structure_variant);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceReferenceSeq {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub chromosome: Option<CodeableConcept>,
pub genome_build: Option<Primitive<String>>,
pub orientation: Option<Primitive<String>>,
pub reference_seq_id: Option<CodeableConcept>,
pub reference_seq_pointer: Option<Reference>,
pub reference_seq_string: Option<Primitive<String>>,
pub strand: Option<Primitive<String>>,
pub window_start: Option<Primitive<i32>>,
pub window_end: Option<Primitive<i32>>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceReferenceSeq {
const TYPE_NAME: &'static str = "MolecularSequenceReferenceSeq";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceReferenceSeq {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
chromosome: o.one(d, "chromosome"),
genome_build: o.prim(d, "genomeBuild", Kind::String),
orientation: o.prim(d, "orientation", Kind::Code),
reference_seq_id: o.one(d, "referenceSeqId"),
reference_seq_pointer: o.one(d, "referenceSeqPointer"),
reference_seq_string: o.prim(d, "referenceSeqString", Kind::String),
strand: o.prim(d, "strand", Kind::Code),
window_start: o.prim(d, "windowStart", Kind::Integer),
window_end: o.prim(d, "windowEnd", Kind::Integer),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("chromosome", &self.chromosome);
w.prim("genomeBuild", &self.genome_build);
w.prim("orientation", &self.orientation);
w.one("referenceSeqId", &self.reference_seq_id);
w.one("referenceSeqPointer", &self.reference_seq_pointer);
w.prim("referenceSeqString", &self.reference_seq_string);
w.prim("strand", &self.strand);
w.prim("windowStart", &self.window_start);
w.prim("windowEnd", &self.window_end);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceVariant {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub start: Option<Primitive<i32>>,
pub end: Option<Primitive<i32>>,
pub observed_allele: Option<Primitive<String>>,
pub reference_allele: Option<Primitive<String>>,
pub cigar: Option<Primitive<String>>,
pub variant_pointer: Option<Reference>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceVariant {
const TYPE_NAME: &'static str = "MolecularSequenceVariant";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceVariant {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
start: o.prim(d, "start", Kind::Integer),
end: o.prim(d, "end", Kind::Integer),
observed_allele: o.prim(d, "observedAllele", Kind::String),
reference_allele: o.prim(d, "referenceAllele", Kind::String),
cigar: o.prim(d, "cigar", Kind::String),
variant_pointer: o.one(d, "variantPointer"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("start", &self.start);
w.prim("end", &self.end);
w.prim("observedAllele", &self.observed_allele);
w.prim("referenceAllele", &self.reference_allele);
w.prim("cigar", &self.cigar);
w.one("variantPointer", &self.variant_pointer);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceQuality {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<Primitive<String>>,
pub standard_sequence: Option<CodeableConcept>,
pub start: Option<Primitive<i32>>,
pub end: Option<Primitive<i32>>,
pub score: Option<Quantity>,
pub method: Option<CodeableConcept>,
pub truth_tp: Option<Primitive<Decimal>>,
pub query_tp: Option<Primitive<Decimal>>,
pub truth_fn: Option<Primitive<Decimal>>,
pub query_fp: Option<Primitive<Decimal>>,
pub gt_fp: Option<Primitive<Decimal>>,
pub precision: Option<Primitive<Decimal>>,
pub recall: Option<Primitive<Decimal>>,
pub f_score: Option<Primitive<Decimal>>,
pub roc: Option<MolecularSequenceQualityRoc>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceQuality {
const TYPE_NAME: &'static str = "MolecularSequenceQuality";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceQuality {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.prim(d, "type", Kind::Code),
standard_sequence: o.one(d, "standardSequence"),
start: o.prim(d, "start", Kind::Integer),
end: o.prim(d, "end", Kind::Integer),
score: o.one(d, "score"),
method: o.one(d, "method"),
truth_tp: o.prim(d, "truthTP", Kind::Decimal),
query_tp: o.prim(d, "queryTP", Kind::Decimal),
truth_fn: o.prim(d, "truthFN", Kind::Decimal),
query_fp: o.prim(d, "queryFP", Kind::Decimal),
gt_fp: o.prim(d, "gtFP", Kind::Decimal),
precision: o.prim(d, "precision", Kind::Decimal),
recall: o.prim(d, "recall", Kind::Decimal),
f_score: o.prim(d, "fScore", Kind::Decimal),
roc: o.one(d, "roc"),
};
required(d, "type", &r.type_);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("type", &self.type_);
w.one("standardSequence", &self.standard_sequence);
w.prim("start", &self.start);
w.prim("end", &self.end);
w.one("score", &self.score);
w.one("method", &self.method);
w.prim("truthTP", &self.truth_tp);
w.prim("queryTP", &self.query_tp);
w.prim("truthFN", &self.truth_fn);
w.prim("queryFP", &self.query_fp);
w.prim("gtFP", &self.gt_fp);
w.prim("precision", &self.precision);
w.prim("recall", &self.recall);
w.prim("fScore", &self.f_score);
w.one("roc", &self.roc);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceQualityRoc {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub score: Vec<Primitive<i32>>,
pub num_tp: Vec<Primitive<i32>>,
pub num_fp: Vec<Primitive<i32>>,
pub num_fn: Vec<Primitive<i32>>,
pub precision: Vec<Primitive<Decimal>>,
pub sensitivity: Vec<Primitive<Decimal>>,
pub f_measure: Vec<Primitive<Decimal>>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceQualityRoc {
const TYPE_NAME: &'static str = "MolecularSequenceQualityRoc";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceQualityRoc {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
score: o.prim_list(d, "score", Kind::Integer),
num_tp: o.prim_list(d, "numTP", Kind::Integer),
num_fp: o.prim_list(d, "numFP", Kind::Integer),
num_fn: o.prim_list(d, "numFN", Kind::Integer),
precision: o.prim_list(d, "precision", Kind::Decimal),
sensitivity: o.prim_list(d, "sensitivity", Kind::Decimal),
f_measure: o.prim_list(d, "fMeasure", Kind::Decimal),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim_list("score", &self.score);
w.prim_list("numTP", &self.num_tp);
w.prim_list("numFP", &self.num_fp);
w.prim_list("numFN", &self.num_fn);
w.prim_list("precision", &self.precision);
w.prim_list("sensitivity", &self.sensitivity);
w.prim_list("fMeasure", &self.f_measure);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceRepository {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub type_: Option<Primitive<String>>,
pub url: Option<Primitive<String>>,
pub name: Option<Primitive<String>>,
pub dataset_id: Option<Primitive<String>>,
pub variantset_id: Option<Primitive<String>>,
pub readset_id: Option<Primitive<String>>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceRepository {
const TYPE_NAME: &'static str = "MolecularSequenceRepository";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceRepository {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
type_: o.prim(d, "type", Kind::Code),
url: o.prim(d, "url", Kind::Uri),
name: o.prim(d, "name", Kind::String),
dataset_id: o.prim(d, "datasetId", Kind::String),
variantset_id: o.prim(d, "variantsetId", Kind::String),
readset_id: o.prim(d, "readsetId", Kind::String),
};
required(d, "type", &r.type_);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("type", &self.type_);
w.prim("url", &self.url);
w.prim("name", &self.name);
w.prim("datasetId", &self.dataset_id);
w.prim("variantsetId", &self.variantset_id);
w.prim("readsetId", &self.readset_id);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceStructureVariant {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub variant_type: Option<CodeableConcept>,
pub exact: Option<Primitive<bool>>,
pub length: Option<Primitive<i32>>,
pub outer: Option<MolecularSequenceStructureVariantOuter>,
pub inner: Option<MolecularSequenceStructureVariantInner>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceStructureVariant {
const TYPE_NAME: &'static str = "MolecularSequenceStructureVariant";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceStructureVariant {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
variant_type: o.one(d, "variantType"),
exact: o.prim(d, "exact", Kind::Boolean),
length: o.prim(d, "length", Kind::Integer),
outer: o.one(d, "outer"),
inner: o.one(d, "inner"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("variantType", &self.variant_type);
w.prim("exact", &self.exact);
w.prim("length", &self.length);
w.one("outer", &self.outer);
w.one("inner", &self.inner);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceStructureVariantOuter {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub start: Option<Primitive<i32>>,
pub end: Option<Primitive<i32>>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceStructureVariantOuter {
const TYPE_NAME: &'static str = "MolecularSequenceStructureVariantOuter";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceStructureVariantOuter {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
start: o.prim(d, "start", Kind::Integer),
end: o.prim(d, "end", Kind::Integer),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("start", &self.start);
w.prim("end", &self.end);
w.finish()
}
}
#[cfg(feature = "clinical")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct MolecularSequenceStructureVariantInner {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub start: Option<Primitive<i32>>,
pub end: Option<Primitive<i32>>,
}
#[cfg(feature = "clinical")]
impl FhirJson for MolecularSequenceStructureVariantInner {
const TYPE_NAME: &'static str = "MolecularSequenceStructureVariantInner";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = MolecularSequenceStructureVariantInner {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
start: o.prim(d, "start", Kind::Integer),
end: o.prim(d, "end", Kind::Integer),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.prim("start", &self.start);
w.prim("end", &self.end);
w.finish()
}
}