fhirbolt_model/generated/r4b/resources/
molecular_sequence.rs

1// Generated on 2023-05-17 by fhirbolt-codegen v0.10.0
2#[doc = "A sequence that is used as a reference to describe variants that are present in a sequence analyzed."]
3#[derive(Debug, Clone, PartialEq)]
4pub struct MolecularSequenceReferenceSeq {
5    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
6    pub r#id: Option<std::string::String>,
7    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
8    pub r#extension: Vec<super::super::types::Extension>,
9    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
10    pub r#modifier_extension: Vec<super::super::types::Extension>,
11    #[doc = "Structural unit composed of a nucleic acid molecule which controls its own replication through the interaction of specific proteins at one or more origins of replication ([SO:0000340](<http://www.sequenceontology.org/browser/current_svn/term/SO:0000340>))."]
12    pub r#chromosome: Option<Box<super::super::types::CodeableConcept>>,
13    #[doc = "The Genome Build used for reference, following GRCh build versions e.g. 'GRCh 37'.  Version number must be included if a versioned release of a primary build was used."]
14    pub r#genome_build: Option<super::super::types::String>,
15    #[doc = "A relative reference to a DNA strand based on gene orientation. The strand that contains the open reading frame of the gene is the \"sense\" strand, and the opposite complementary strand is the \"antisense\" strand."]
16    pub r#orientation: Option<super::super::types::Code>,
17    #[doc = "Reference identifier of reference sequence submitted to NCBI. It must match the type in the MolecularSequence.type field. For example, the prefix, “NG_” identifies reference sequence for genes, “NM_” for messenger RNA transcripts, and “NP_” for amino acid sequences."]
18    pub r#reference_seq_id: Option<Box<super::super::types::CodeableConcept>>,
19    #[doc = "A pointer to another MolecularSequence entity as reference sequence."]
20    pub r#reference_seq_pointer: Option<Box<super::super::types::Reference>>,
21    #[doc = "A string like \"ACGT\"."]
22    pub r#reference_seq_string: Option<super::super::types::String>,
23    #[doc = "An absolute reference to a strand. The Watson strand is the strand whose 5'-end is on the short arm of the chromosome, and the Crick strand as the one whose 5'-end is on the long arm."]
24    pub r#strand: Option<super::super::types::Code>,
25    #[doc = "Start position of the window on the reference sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
26    pub r#window_start: Option<super::super::types::Integer>,
27    #[doc = "End position of the window on the reference sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
28    pub r#window_end: Option<super::super::types::Integer>,
29}
30#[allow(clippy::derivable_impls)]
31impl Default for MolecularSequenceReferenceSeq {
32    fn default() -> Self {
33        Self {
34            r#id: Default::default(),
35            r#extension: Default::default(),
36            r#modifier_extension: Default::default(),
37            r#chromosome: Default::default(),
38            r#genome_build: Default::default(),
39            r#orientation: Default::default(),
40            r#reference_seq_id: Default::default(),
41            r#reference_seq_pointer: Default::default(),
42            r#reference_seq_string: Default::default(),
43            r#strand: Default::default(),
44            r#window_start: Default::default(),
45            r#window_end: Default::default(),
46        }
47    }
48}
49#[doc = "The definition of variant here originates from Sequence ontology ([variant_of](<http://www.sequenceontology.org/browser/current_svn/term/variant_of>)). This element can represent amino acid or nucleic sequence change(including insertion,deletion,SNP,etc.)  It can represent some complex mutation or segment variation with the assist of CIGAR string."]
50#[derive(Debug, Clone, PartialEq)]
51pub struct MolecularSequenceVariant {
52    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
53    pub r#id: Option<std::string::String>,
54    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
55    pub r#extension: Vec<super::super::types::Extension>,
56    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
57    pub r#modifier_extension: Vec<super::super::types::Extension>,
58    #[doc = "Start position of the variant on the  reference sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
59    pub r#start: Option<super::super::types::Integer>,
60    #[doc = "End position of the variant on the reference sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
61    pub r#end: Option<super::super::types::Integer>,
62    #[doc = "An allele is one of a set of coexisting sequence variants of a gene ([SO:0001023](<http://www.sequenceontology.org/browser/current_svn/term/SO:0001023>)).  Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the observed  sequence. When the sequence  type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.end."]
63    pub r#observed_allele: Option<super::super::types::String>,
64    #[doc = "An allele is one of a set of coexisting sequence variants of a gene ([SO:0001023](<http://www.sequenceontology.org/browser/current_svn/term/SO:0001023>)). Nucleotide(s)/amino acids from start position of sequence to stop position of sequence on the positive (+) strand of the reference sequence. When the sequence  type is DNA, it should be the sequence on the positive (+) strand. This will lay in the range between variant.start and variant.end."]
65    pub r#reference_allele: Option<super::super::types::String>,
66    #[doc = "Extended CIGAR string for aligning the sequence with reference bases. See detailed documentation [here](<http://support.illumina.com/help/SequencingAnalysisWorkflow/Content/Vault/Informatics/Sequencing_Analysis/CASAVA/swSEQ_mCA_ExtendedCIGARFormat.htm>)."]
67    pub r#cigar: Option<super::super::types::String>,
68    #[doc = "A pointer to an Observation containing variant information."]
69    pub r#variant_pointer: Option<Box<super::super::types::Reference>>,
70}
71#[allow(clippy::derivable_impls)]
72impl Default for MolecularSequenceVariant {
73    fn default() -> Self {
74        Self {
75            r#id: Default::default(),
76            r#extension: Default::default(),
77            r#modifier_extension: Default::default(),
78            r#start: Default::default(),
79            r#end: Default::default(),
80            r#observed_allele: Default::default(),
81            r#reference_allele: Default::default(),
82            r#cigar: Default::default(),
83            r#variant_pointer: Default::default(),
84        }
85    }
86}
87#[doc = "Receiver Operator Characteristic (ROC) Curve  to give sensitivity/specificity tradeoff."]
88#[derive(Debug, Clone, PartialEq)]
89pub struct MolecularSequenceQualityRoc {
90    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
91    pub r#id: Option<std::string::String>,
92    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
93    pub r#extension: Vec<super::super::types::Extension>,
94    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
95    pub r#modifier_extension: Vec<super::super::types::Extension>,
96    #[doc = "Invidual data point representing the GQ (genotype quality) score threshold."]
97    pub r#score: Vec<super::super::types::Integer>,
98    #[doc = "The number of true positives if the GQ score threshold was set to \"score\" field value."]
99    pub r#num_tp: Vec<super::super::types::Integer>,
100    #[doc = "The number of false positives if the GQ score threshold was set to \"score\" field value."]
101    pub r#num_fp: Vec<super::super::types::Integer>,
102    #[doc = "The number of false negatives if the GQ score threshold was set to \"score\" field value."]
103    pub r#num_fn: Vec<super::super::types::Integer>,
104    #[doc = "Calculated precision if the GQ score threshold was set to \"score\" field value."]
105    pub r#precision: Vec<super::super::types::Decimal>,
106    #[doc = "Calculated sensitivity if the GQ score threshold was set to \"score\" field value."]
107    pub r#sensitivity: Vec<super::super::types::Decimal>,
108    #[doc = "Calculated fScore if the GQ score threshold was set to \"score\" field value."]
109    pub r#f_measure: Vec<super::super::types::Decimal>,
110}
111#[allow(clippy::derivable_impls)]
112impl Default for MolecularSequenceQualityRoc {
113    fn default() -> Self {
114        Self {
115            r#id: Default::default(),
116            r#extension: Default::default(),
117            r#modifier_extension: Default::default(),
118            r#score: Default::default(),
119            r#num_tp: Default::default(),
120            r#num_fp: Default::default(),
121            r#num_fn: Default::default(),
122            r#precision: Default::default(),
123            r#sensitivity: Default::default(),
124            r#f_measure: Default::default(),
125        }
126    }
127}
128#[doc = "An experimental feature attribute that defines the quality of the feature in a quantitative way, such as a phred quality score ([SO:0001686](<http://www.sequenceontology.org/browser/current_svn/term/SO:0001686>))."]
129#[derive(Debug, Clone, PartialEq)]
130pub struct MolecularSequenceQuality {
131    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
132    pub r#id: Option<std::string::String>,
133    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
134    pub r#extension: Vec<super::super::types::Extension>,
135    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
136    pub r#modifier_extension: Vec<super::super::types::Extension>,
137    #[doc = "INDEL / SNP / Undefined variant."]
138    pub r#type: super::super::types::Code,
139    #[doc = "Gold standard sequence used for comparing against."]
140    pub r#standard_sequence: Option<Box<super::super::types::CodeableConcept>>,
141    #[doc = "Start position of the sequence. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
142    pub r#start: Option<super::super::types::Integer>,
143    #[doc = "End position of the sequence. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
144    pub r#end: Option<super::super::types::Integer>,
145    #[doc = "The score of an experimentally derived feature such as a p-value ([SO:0001685](<http://www.sequenceontology.org/browser/current_svn/term/SO:0001685>))."]
146    pub r#score: Option<Box<super::super::types::Quantity>>,
147    #[doc = "Which method is used to get sequence quality."]
148    pub r#method: Option<Box<super::super::types::CodeableConcept>>,
149    #[doc = "True positives, from the perspective of the truth data, i.e. the number of sites in the Truth Call Set for which there are paths through the Query Call Set that are consistent with all of the alleles at this site, and for which there is an accurate genotype call for the event."]
150    pub r#truth_tp: Option<super::super::types::Decimal>,
151    #[doc = "True positives, from the perspective of the query data, i.e. the number of sites in the Query Call Set for which there are paths through the Truth Call Set that are consistent with all of the alleles at this site, and for which there is an accurate genotype call for the event."]
152    pub r#query_tp: Option<super::super::types::Decimal>,
153    #[doc = "False negatives, i.e. the number of sites in the Truth Call Set for which there is no path through the Query Call Set that is consistent with all of the alleles at this site, or sites for which there is an inaccurate genotype call for the event. Sites with correct variant but incorrect genotype are counted here."]
154    pub r#truth_fn: Option<super::super::types::Decimal>,
155    #[doc = "False positives, i.e. the number of sites in the Query Call Set for which there is no path through the Truth Call Set that is consistent with this site. Sites with correct variant but incorrect genotype are counted here."]
156    pub r#query_fp: Option<super::super::types::Decimal>,
157    #[doc = "The number of false positives where the non-REF alleles in the Truth and Query Call Sets match (i.e. cases where the truth is 1/1 and the query is 0/1 or similar)."]
158    pub r#gt_fp: Option<super::super::types::Decimal>,
159    #[doc = "QUERY.TP / (QUERY.TP + QUERY.FP)."]
160    pub r#precision: Option<super::super::types::Decimal>,
161    #[doc = "TRUTH.TP / (TRUTH.TP + TRUTH.FN)."]
162    pub r#recall: Option<super::super::types::Decimal>,
163    #[doc = "Harmonic mean of Recall and Precision, computed as: 2 * precision * recall / (precision + recall)."]
164    pub r#f_score: Option<super::super::types::Decimal>,
165    #[doc = "Receiver Operator Characteristic (ROC) Curve  to give sensitivity/specificity tradeoff."]
166    pub r#roc: Option<MolecularSequenceQualityRoc>,
167}
168#[allow(clippy::derivable_impls)]
169impl Default for MolecularSequenceQuality {
170    fn default() -> Self {
171        Self {
172            r#id: Default::default(),
173            r#extension: Default::default(),
174            r#modifier_extension: Default::default(),
175            r#type: super::super::types::Code {
176                id: Some("$invalid".to_string()),
177                ..Default::default()
178            },
179            r#standard_sequence: Default::default(),
180            r#start: Default::default(),
181            r#end: Default::default(),
182            r#score: Default::default(),
183            r#method: Default::default(),
184            r#truth_tp: Default::default(),
185            r#query_tp: Default::default(),
186            r#truth_fn: Default::default(),
187            r#query_fp: Default::default(),
188            r#gt_fp: Default::default(),
189            r#precision: Default::default(),
190            r#recall: Default::default(),
191            r#f_score: Default::default(),
192            r#roc: Default::default(),
193        }
194    }
195}
196#[doc = "Configurations of the external repository. The repository shall store target's observedSeq or records related with target's observedSeq."]
197#[derive(Debug, Clone, PartialEq)]
198pub struct MolecularSequenceRepository {
199    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
200    pub r#id: Option<std::string::String>,
201    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
202    pub r#extension: Vec<super::super::types::Extension>,
203    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
204    pub r#modifier_extension: Vec<super::super::types::Extension>,
205    #[doc = "Click and see / RESTful API / Need login to see / RESTful API with authentication / Other ways to see resource."]
206    pub r#type: super::super::types::Code,
207    #[doc = "URI of an external repository which contains further details about the genetics data."]
208    pub r#url: Option<super::super::types::Uri>,
209    #[doc = "URI of an external repository which contains further details about the genetics data."]
210    pub r#name: Option<super::super::types::String>,
211    #[doc = "Id of the variant in this external repository. The server will understand how to use this id to call for more info about datasets in external repository."]
212    pub r#dataset_id: Option<super::super::types::String>,
213    #[doc = "Id of the variantset in this external repository. The server will understand how to use this id to call for more info about variantsets in external repository."]
214    pub r#variantset_id: Option<super::super::types::String>,
215    #[doc = "Id of the read in this external repository."]
216    pub r#readset_id: Option<super::super::types::String>,
217}
218#[allow(clippy::derivable_impls)]
219impl Default for MolecularSequenceRepository {
220    fn default() -> Self {
221        Self {
222            r#id: Default::default(),
223            r#extension: Default::default(),
224            r#modifier_extension: Default::default(),
225            r#type: super::super::types::Code {
226                id: Some("$invalid".to_string()),
227                ..Default::default()
228            },
229            r#url: Default::default(),
230            r#name: Default::default(),
231            r#dataset_id: Default::default(),
232            r#variantset_id: Default::default(),
233            r#readset_id: Default::default(),
234        }
235    }
236}
237#[doc = "Structural variant outer."]
238#[derive(Debug, Clone, PartialEq)]
239pub struct MolecularSequenceStructureVariantOuter {
240    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
241    pub r#id: Option<std::string::String>,
242    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
243    pub r#extension: Vec<super::super::types::Extension>,
244    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
245    pub r#modifier_extension: Vec<super::super::types::Extension>,
246    #[doc = "Structural variant outer start. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
247    pub r#start: Option<super::super::types::Integer>,
248    #[doc = "Structural variant outer end. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
249    pub r#end: Option<super::super::types::Integer>,
250}
251#[allow(clippy::derivable_impls)]
252impl Default for MolecularSequenceStructureVariantOuter {
253    fn default() -> Self {
254        Self {
255            r#id: Default::default(),
256            r#extension: Default::default(),
257            r#modifier_extension: Default::default(),
258            r#start: Default::default(),
259            r#end: Default::default(),
260        }
261    }
262}
263#[doc = "Structural variant inner."]
264#[derive(Debug, Clone, PartialEq)]
265pub struct MolecularSequenceStructureVariantInner {
266    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
267    pub r#id: Option<std::string::String>,
268    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
269    pub r#extension: Vec<super::super::types::Extension>,
270    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
271    pub r#modifier_extension: Vec<super::super::types::Extension>,
272    #[doc = "Structural variant inner start. If the coordinate system is either 0-based or 1-based, then start position is inclusive."]
273    pub r#start: Option<super::super::types::Integer>,
274    #[doc = "Structural variant inner end. If the coordinate system is 0-based then end is exclusive and does not include the last position. If the coordinate system is 1-base, then end is inclusive and includes the last position."]
275    pub r#end: Option<super::super::types::Integer>,
276}
277#[allow(clippy::derivable_impls)]
278impl Default for MolecularSequenceStructureVariantInner {
279    fn default() -> Self {
280        Self {
281            r#id: Default::default(),
282            r#extension: Default::default(),
283            r#modifier_extension: Default::default(),
284            r#start: Default::default(),
285            r#end: Default::default(),
286        }
287    }
288}
289#[doc = "Information about chromosome structure variation."]
290#[derive(Debug, Clone, PartialEq)]
291pub struct MolecularSequenceStructureVariant {
292    #[doc = "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces."]
293    pub r#id: Option<std::string::String>,
294    #[doc = "May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
295    pub r#extension: Vec<super::super::types::Extension>,
296    #[doc = "May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
297    pub r#modifier_extension: Vec<super::super::types::Extension>,
298    #[doc = "Information about chromosome structure variation DNA change type."]
299    pub r#variant_type: Option<Box<super::super::types::CodeableConcept>>,
300    #[doc = "Used to indicate if the outer and inner start-end values have the same meaning."]
301    pub r#exact: Option<super::super::types::Boolean>,
302    #[doc = "Length of the variant chromosome."]
303    pub r#length: Option<super::super::types::Integer>,
304    #[doc = "Structural variant outer."]
305    pub r#outer: Option<MolecularSequenceStructureVariantOuter>,
306    #[doc = "Structural variant inner."]
307    pub r#inner: Option<MolecularSequenceStructureVariantInner>,
308}
309#[allow(clippy::derivable_impls)]
310impl Default for MolecularSequenceStructureVariant {
311    fn default() -> Self {
312        Self {
313            r#id: Default::default(),
314            r#extension: Default::default(),
315            r#modifier_extension: Default::default(),
316            r#variant_type: Default::default(),
317            r#exact: Default::default(),
318            r#length: Default::default(),
319            r#outer: Default::default(),
320            r#inner: Default::default(),
321        }
322    }
323}
324#[doc = "Raw data describing a biological sequence."]
325#[derive(Debug, Clone, PartialEq)]
326pub struct MolecularSequence {
327    #[doc = "The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes."]
328    pub r#id: Option<super::super::types::Id>,
329    #[doc = "The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource."]
330    pub r#meta: Option<Box<super::super::types::Meta>>,
331    #[doc = "A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc."]
332    pub r#implicit_rules: Option<super::super::types::Uri>,
333    #[doc = "The base language in which the resource is written."]
334    pub r#language: Option<super::super::types::Code>,
335    #[doc = "A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it \"clinically safe\" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety."]
336    pub r#text: Option<Box<super::super::types::Narrative>>,
337    #[doc = "These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope."]
338    pub r#contained: Vec<super::super::Resource>,
339    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension."]
340    pub r#extension: Vec<super::super::types::Extension>,
341    #[doc = "May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element's descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.\n\nModifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself)."]
342    pub r#modifier_extension: Vec<super::super::types::Extension>,
343    #[doc = "A unique identifier for this particular sequence instance. This is a FHIR-defined id."]
344    pub r#identifier: Vec<super::super::types::Identifier>,
345    #[doc = "Amino Acid Sequence/ DNA Sequence / RNA Sequence."]
346    pub r#type: Option<super::super::types::Code>,
347    #[doc = "Whether the sequence is numbered starting at 0 (0-based numbering or coordinates, inclusive start, exclusive end) or starting at 1 (1-based numbering, inclusive start and inclusive end)."]
348    pub r#coordinate_system: super::super::types::Integer,
349    #[doc = "The patient whose sequencing results are described by this resource."]
350    pub r#patient: Option<Box<super::super::types::Reference>>,
351    #[doc = "Specimen used for sequencing."]
352    pub r#specimen: Option<Box<super::super::types::Reference>>,
353    #[doc = "The method for sequencing, for example, chip information."]
354    pub r#device: Option<Box<super::super::types::Reference>>,
355    #[doc = "The organization or lab that should be responsible for this result."]
356    pub r#performer: Option<Box<super::super::types::Reference>>,
357    #[doc = "The number of copies of the sequence of interest. (RNASeq)."]
358    pub r#quantity: Option<Box<super::super::types::Quantity>>,
359    #[doc = "A sequence that is used as a reference to describe variants that are present in a sequence analyzed."]
360    pub r#reference_seq: Option<MolecularSequenceReferenceSeq>,
361    #[doc = "The definition of variant here originates from Sequence ontology ([variant_of](<http://www.sequenceontology.org/browser/current_svn/term/variant_of>)). This element can represent amino acid or nucleic sequence change(including insertion,deletion,SNP,etc.)  It can represent some complex mutation or segment variation with the assist of CIGAR string."]
362    pub r#variant: Vec<MolecularSequenceVariant>,
363    #[doc = "Sequence that was observed. It is the result marked by referenceSeq along with variant records on referenceSeq. This shall start from referenceSeq.windowStart and end by referenceSeq.windowEnd."]
364    pub r#observed_seq: Option<super::super::types::String>,
365    #[doc = "An experimental feature attribute that defines the quality of the feature in a quantitative way, such as a phred quality score ([SO:0001686](<http://www.sequenceontology.org/browser/current_svn/term/SO:0001686>))."]
366    pub r#quality: Vec<MolecularSequenceQuality>,
367    #[doc = "Coverage (read depth or depth) is the average number of reads representing a given nucleotide in the reconstructed sequence."]
368    pub r#read_coverage: Option<super::super::types::Integer>,
369    #[doc = "Configurations of the external repository. The repository shall store target's observedSeq or records related with target's observedSeq."]
370    pub r#repository: Vec<MolecularSequenceRepository>,
371    #[doc = "Pointer to next atomic sequence which at most contains one variant."]
372    pub r#pointer: Vec<super::super::types::Reference>,
373    #[doc = "Information about chromosome structure variation."]
374    pub r#structure_variant: Vec<MolecularSequenceStructureVariant>,
375}
376#[allow(clippy::derivable_impls)]
377impl Default for MolecularSequence {
378    fn default() -> Self {
379        Self {
380            r#id: Default::default(),
381            r#meta: Default::default(),
382            r#implicit_rules: Default::default(),
383            r#language: Default::default(),
384            r#text: Default::default(),
385            r#contained: Default::default(),
386            r#extension: Default::default(),
387            r#modifier_extension: Default::default(),
388            r#identifier: Default::default(),
389            r#type: Default::default(),
390            r#coordinate_system: super::super::types::Integer {
391                id: Some("$invalid".to_string()),
392                ..Default::default()
393            },
394            r#patient: Default::default(),
395            r#specimen: Default::default(),
396            r#device: Default::default(),
397            r#performer: Default::default(),
398            r#quantity: Default::default(),
399            r#reference_seq: Default::default(),
400            r#variant: Default::default(),
401            r#observed_seq: Default::default(),
402            r#quality: Default::default(),
403            r#read_coverage: Default::default(),
404            r#repository: Default::default(),
405            r#pointer: Default::default(),
406            r#structure_variant: Default::default(),
407        }
408    }
409}