001package org.hl7.fhir.r5.model; 002 003 004/* 005 Copyright (c) 2011+, HL7, Inc. 006 All rights reserved. 007 008 Redistribution and use in source and binary forms, with or without modification, \ 009 are permitted provided that the following conditions are met: 010 011 * Redistributions of source code must retain the above copyright notice, this \ 012 list of conditions and the following disclaimer. 013 * Redistributions in binary form must reproduce the above copyright notice, \ 014 this list of conditions and the following disclaimer in the documentation \ 015 and/or other materials provided with the distribution. 016 * Neither the name of HL7 nor the names of its contributors may be used to 017 endorse or promote products derived from this software without specific 018 prior written permission. 019 020 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \ 021 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \ 022 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \ 023 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \ 024 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \ 025 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \ 026 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \ 027 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \ 028 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \ 029 POSSIBILITY OF SUCH DAMAGE. 030 */ 031 032// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0 033 034import java.util.ArrayList; 035import java.util.Date; 036import java.util.List; 037import org.hl7.fhir.utilities.Utilities; 038import org.hl7.fhir.r5.model.Enumerations.*; 039import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 040import org.hl7.fhir.exceptions.FHIRException; 041import org.hl7.fhir.instance.model.api.ICompositeType; 042import ca.uhn.fhir.model.api.annotation.ResourceDef; 043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition; 044import org.hl7.fhir.instance.model.api.IBaseBackboneElement; 045import ca.uhn.fhir.model.api.annotation.Child; 046import ca.uhn.fhir.model.api.annotation.ChildOrder; 047import ca.uhn.fhir.model.api.annotation.Description; 048import ca.uhn.fhir.model.api.annotation.Block; 049 050/** 051 * A set of analyses performed to analyze and generate genomic data. 052 */ 053@ResourceDef(name="GenomicStudy", profile="http://hl7.org/fhir/StructureDefinition/GenomicStudy") 054public class GenomicStudy extends DomainResource { 055 056 public enum GenomicStudyStatus { 057 /** 058 * The existence of the genomic study is registered, but there is nothing yet available. 059 */ 060 REGISTERED, 061 /** 062 * At least one instance has been associated with this genomic study. 063 */ 064 AVAILABLE, 065 /** 066 * The genomic study is unavailable because the genomic study was not started or not completed (also sometimes called \"aborted\"). 067 */ 068 CANCELLED, 069 /** 070 * The genomic study has been withdrawn following a previous final release. This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".). 071 */ 072 ENTEREDINERROR, 073 /** 074 * The system does not know which of the status values currently applies for this request. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, it's just not known which one. 075 */ 076 UNKNOWN, 077 /** 078 * added to help the parsers with the generic types 079 */ 080 NULL; 081 public static GenomicStudyStatus fromCode(String codeString) throws FHIRException { 082 if (codeString == null || "".equals(codeString)) 083 return null; 084 if ("registered".equals(codeString)) 085 return REGISTERED; 086 if ("available".equals(codeString)) 087 return AVAILABLE; 088 if ("cancelled".equals(codeString)) 089 return CANCELLED; 090 if ("entered-in-error".equals(codeString)) 091 return ENTEREDINERROR; 092 if ("unknown".equals(codeString)) 093 return UNKNOWN; 094 if (Configuration.isAcceptInvalidEnums()) 095 return null; 096 else 097 throw new FHIRException("Unknown GenomicStudyStatus code '"+codeString+"'"); 098 } 099 public String toCode() { 100 switch (this) { 101 case REGISTERED: return "registered"; 102 case AVAILABLE: return "available"; 103 case CANCELLED: return "cancelled"; 104 case ENTEREDINERROR: return "entered-in-error"; 105 case UNKNOWN: return "unknown"; 106 case NULL: return null; 107 default: return "?"; 108 } 109 } 110 public String getSystem() { 111 switch (this) { 112 case REGISTERED: return "http://hl7.org/fhir/genomicstudy-status"; 113 case AVAILABLE: return "http://hl7.org/fhir/genomicstudy-status"; 114 case CANCELLED: return "http://hl7.org/fhir/genomicstudy-status"; 115 case ENTEREDINERROR: return "http://hl7.org/fhir/genomicstudy-status"; 116 case UNKNOWN: return "http://hl7.org/fhir/genomicstudy-status"; 117 case NULL: return null; 118 default: return "?"; 119 } 120 } 121 public String getDefinition() { 122 switch (this) { 123 case REGISTERED: return "The existence of the genomic study is registered, but there is nothing yet available."; 124 case AVAILABLE: return "At least one instance has been associated with this genomic study."; 125 case CANCELLED: return "The genomic study is unavailable because the genomic study was not started or not completed (also sometimes called \"aborted\")."; 126 case ENTEREDINERROR: return "The genomic study has been withdrawn following a previous final release. This electronic record should never have existed, though it is possible that real-world decisions were based on it. (If real-world activity has occurred, the status should be \"cancelled\" rather than \"entered-in-error\".)."; 127 case UNKNOWN: return "The system does not know which of the status values currently applies for this request. Note: This concept is not to be used for \"other\" - one of the listed statuses is presumed to apply, it's just not known which one."; 128 case NULL: return null; 129 default: return "?"; 130 } 131 } 132 public String getDisplay() { 133 switch (this) { 134 case REGISTERED: return "Registered"; 135 case AVAILABLE: return "Available"; 136 case CANCELLED: return "Cancelled"; 137 case ENTEREDINERROR: return "Entered in Error"; 138 case UNKNOWN: return "Unknown"; 139 case NULL: return null; 140 default: return "?"; 141 } 142 } 143 } 144 145 public static class GenomicStudyStatusEnumFactory implements EnumFactory<GenomicStudyStatus> { 146 public GenomicStudyStatus fromCode(String codeString) throws IllegalArgumentException { 147 if (codeString == null || "".equals(codeString)) 148 if (codeString == null || "".equals(codeString)) 149 return null; 150 if ("registered".equals(codeString)) 151 return GenomicStudyStatus.REGISTERED; 152 if ("available".equals(codeString)) 153 return GenomicStudyStatus.AVAILABLE; 154 if ("cancelled".equals(codeString)) 155 return GenomicStudyStatus.CANCELLED; 156 if ("entered-in-error".equals(codeString)) 157 return GenomicStudyStatus.ENTEREDINERROR; 158 if ("unknown".equals(codeString)) 159 return GenomicStudyStatus.UNKNOWN; 160 throw new IllegalArgumentException("Unknown GenomicStudyStatus code '"+codeString+"'"); 161 } 162 public Enumeration<GenomicStudyStatus> fromType(PrimitiveType<?> code) throws FHIRException { 163 if (code == null) 164 return null; 165 if (code.isEmpty()) 166 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.NULL, code); 167 String codeString = ((PrimitiveType) code).asStringValue(); 168 if (codeString == null || "".equals(codeString)) 169 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.NULL, code); 170 if ("registered".equals(codeString)) 171 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.REGISTERED, code); 172 if ("available".equals(codeString)) 173 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.AVAILABLE, code); 174 if ("cancelled".equals(codeString)) 175 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.CANCELLED, code); 176 if ("entered-in-error".equals(codeString)) 177 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.ENTEREDINERROR, code); 178 if ("unknown".equals(codeString)) 179 return new Enumeration<GenomicStudyStatus>(this, GenomicStudyStatus.UNKNOWN, code); 180 throw new FHIRException("Unknown GenomicStudyStatus code '"+codeString+"'"); 181 } 182 public String toCode(GenomicStudyStatus code) { 183 if (code == GenomicStudyStatus.NULL) 184 return null; 185 if (code == GenomicStudyStatus.REGISTERED) 186 return "registered"; 187 if (code == GenomicStudyStatus.AVAILABLE) 188 return "available"; 189 if (code == GenomicStudyStatus.CANCELLED) 190 return "cancelled"; 191 if (code == GenomicStudyStatus.ENTEREDINERROR) 192 return "entered-in-error"; 193 if (code == GenomicStudyStatus.UNKNOWN) 194 return "unknown"; 195 return "?"; 196 } 197 public String toSystem(GenomicStudyStatus code) { 198 return code.getSystem(); 199 } 200 } 201 202 @Block() 203 public static class GenomicStudyAnalysisComponent extends BackboneElement implements IBaseBackboneElement { 204 /** 205 * Identifiers for the analysis event. 206 */ 207 @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 208 @Description(shortDefinition="Identifiers for the analysis event", formalDefinition="Identifiers for the analysis event." ) 209 protected List<Identifier> identifier; 210 211 /** 212 * Type of the methods used in the analysis, e.g., Fluorescence in situ hybridization (FISH), Karyotyping, or Microsatellite instability testing (MSI). 213 */ 214 @Child(name = "methodType", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 215 @Description(shortDefinition="Type of the methods used in the analysis (e.g., FISH, Karyotyping, MSI)", formalDefinition="Type of the methods used in the analysis, e.g., Fluorescence in situ hybridization (FISH), Karyotyping, or Microsatellite instability testing (MSI)." ) 216 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-methodtype") 217 protected List<CodeableConcept> methodType; 218 219 /** 220 * Type of the genomic changes studied in the analysis, e.g., DNA, RNA, or amino acid change. 221 */ 222 @Child(name = "changeType", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 223 @Description(shortDefinition="Type of the genomic changes studied in the analysis (e.g., DNA, RNA, or AA change)", formalDefinition="Type of the genomic changes studied in the analysis, e.g., DNA, RNA, or amino acid change." ) 224 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-changetype") 225 protected List<CodeableConcept> changeType; 226 227 /** 228 * The reference genome build that is used in this analysis. 229 */ 230 @Child(name = "genomeBuild", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false) 231 @Description(shortDefinition="Genome build that is used in this analysis", formalDefinition="The reference genome build that is used in this analysis." ) 232 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://loinc.org/vs/LL1040-6") 233 protected CodeableConcept genomeBuild; 234 235 /** 236 * The defined protocol that describes the analysis. 237 */ 238 @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=5, min=0, max=1, modifier=false, summary=false) 239 @Description(shortDefinition="The defined protocol that describes the analysis", formalDefinition="The defined protocol that describes the analysis." ) 240 protected CanonicalType instantiatesCanonical; 241 242 /** 243 * The URL pointing to an externally maintained protocol that describes the analysis. 244 */ 245 @Child(name = "instantiatesUri", type = {UriType.class}, order=6, min=0, max=1, modifier=false, summary=false) 246 @Description(shortDefinition="The URL pointing to an externally maintained protocol that describes the analysis", formalDefinition="The URL pointing to an externally maintained protocol that describes the analysis." ) 247 protected UriType instantiatesUri; 248 249 /** 250 * Name of the analysis event (human friendly). 251 */ 252 @Child(name = "title", type = {StringType.class}, order=7, min=0, max=1, modifier=false, summary=true) 253 @Description(shortDefinition="Name of the analysis event (human friendly)", formalDefinition="Name of the analysis event (human friendly)." ) 254 protected StringType title; 255 256 /** 257 * The focus of a genomic analysis when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the GenomicStudy.subject would be the child (proband) and the GenomicStudy.analysis.focus of a specific analysis would be the parent. 258 */ 259 @Child(name = "focus", type = {Reference.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 260 @Description(shortDefinition="What the genomic analysis is about, when it is not about the subject of record", formalDefinition="The focus of a genomic analysis when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the GenomicStudy.subject would be the child (proband) and the GenomicStudy.analysis.focus of a specific analysis would be the parent." ) 261 protected List<Reference> focus; 262 263 /** 264 * The specimen used in the analysis event. 265 */ 266 @Child(name = "specimen", type = {Specimen.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 267 @Description(shortDefinition="The specimen used in the analysis event", formalDefinition="The specimen used in the analysis event." ) 268 protected List<Reference> specimen; 269 270 /** 271 * The date of the analysis event. 272 */ 273 @Child(name = "date", type = {DateTimeType.class}, order=10, min=0, max=1, modifier=false, summary=false) 274 @Description(shortDefinition="The date of the analysis event", formalDefinition="The date of the analysis event." ) 275 protected DateTimeType date; 276 277 /** 278 * Any notes capture with the analysis event. 279 */ 280 @Child(name = "note", type = {Annotation.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 281 @Description(shortDefinition="Any notes capture with the analysis event", formalDefinition="Any notes capture with the analysis event." ) 282 protected List<Annotation> note; 283 284 /** 285 * The protocol that was performed for the analysis event. 286 */ 287 @Child(name = "protocolPerformed", type = {Procedure.class, Task.class}, order=12, min=0, max=1, modifier=false, summary=false) 288 @Description(shortDefinition="The protocol that was performed for the analysis event", formalDefinition="The protocol that was performed for the analysis event." ) 289 protected Reference protocolPerformed; 290 291 /** 292 * The genomic regions to be studied in the analysis (BED file). 293 */ 294 @Child(name = "regionsStudied", type = {DocumentReference.class, Observation.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 295 @Description(shortDefinition="The genomic regions to be studied in the analysis (BED file)", formalDefinition="The genomic regions to be studied in the analysis (BED file)." ) 296 protected List<Reference> regionsStudied; 297 298 /** 299 * Genomic regions actually called in the analysis event (BED file). 300 */ 301 @Child(name = "regionsCalled", type = {DocumentReference.class, Observation.class}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 302 @Description(shortDefinition="Genomic regions actually called in the analysis event (BED file)", formalDefinition="Genomic regions actually called in the analysis event (BED file)." ) 303 protected List<Reference> regionsCalled; 304 305 /** 306 * Inputs for the analysis event. 307 */ 308 @Child(name = "input", type = {}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 309 @Description(shortDefinition="Inputs for the analysis event", formalDefinition="Inputs for the analysis event." ) 310 protected List<GenomicStudyAnalysisInputComponent> input; 311 312 /** 313 * Outputs for the analysis event. 314 */ 315 @Child(name = "output", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 316 @Description(shortDefinition="Outputs for the analysis event", formalDefinition="Outputs for the analysis event." ) 317 protected List<GenomicStudyAnalysisOutputComponent> output; 318 319 /** 320 * Performer for the analysis event. 321 */ 322 @Child(name = "performer", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 323 @Description(shortDefinition="Performer for the analysis event", formalDefinition="Performer for the analysis event." ) 324 protected List<GenomicStudyAnalysisPerformerComponent> performer; 325 326 /** 327 * Devices used for the analysis (e.g., instruments, software), with settings and parameters. 328 */ 329 @Child(name = "device", type = {}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 330 @Description(shortDefinition="Devices used for the analysis (e.g., instruments, software), with settings and parameters", formalDefinition="Devices used for the analysis (e.g., instruments, software), with settings and parameters." ) 331 protected List<GenomicStudyAnalysisDeviceComponent> device; 332 333 private static final long serialVersionUID = 467270310L; 334 335 /** 336 * Constructor 337 */ 338 public GenomicStudyAnalysisComponent() { 339 super(); 340 } 341 342 /** 343 * @return {@link #identifier} (Identifiers for the analysis event.) 344 */ 345 public List<Identifier> getIdentifier() { 346 if (this.identifier == null) 347 this.identifier = new ArrayList<Identifier>(); 348 return this.identifier; 349 } 350 351 /** 352 * @return Returns a reference to <code>this</code> for easy method chaining 353 */ 354 public GenomicStudyAnalysisComponent setIdentifier(List<Identifier> theIdentifier) { 355 this.identifier = theIdentifier; 356 return this; 357 } 358 359 public boolean hasIdentifier() { 360 if (this.identifier == null) 361 return false; 362 for (Identifier item : this.identifier) 363 if (!item.isEmpty()) 364 return true; 365 return false; 366 } 367 368 public Identifier addIdentifier() { //3 369 Identifier t = new Identifier(); 370 if (this.identifier == null) 371 this.identifier = new ArrayList<Identifier>(); 372 this.identifier.add(t); 373 return t; 374 } 375 376 public GenomicStudyAnalysisComponent addIdentifier(Identifier t) { //3 377 if (t == null) 378 return this; 379 if (this.identifier == null) 380 this.identifier = new ArrayList<Identifier>(); 381 this.identifier.add(t); 382 return this; 383 } 384 385 /** 386 * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3} 387 */ 388 public Identifier getIdentifierFirstRep() { 389 if (getIdentifier().isEmpty()) { 390 addIdentifier(); 391 } 392 return getIdentifier().get(0); 393 } 394 395 /** 396 * @return {@link #methodType} (Type of the methods used in the analysis, e.g., Fluorescence in situ hybridization (FISH), Karyotyping, or Microsatellite instability testing (MSI).) 397 */ 398 public List<CodeableConcept> getMethodType() { 399 if (this.methodType == null) 400 this.methodType = new ArrayList<CodeableConcept>(); 401 return this.methodType; 402 } 403 404 /** 405 * @return Returns a reference to <code>this</code> for easy method chaining 406 */ 407 public GenomicStudyAnalysisComponent setMethodType(List<CodeableConcept> theMethodType) { 408 this.methodType = theMethodType; 409 return this; 410 } 411 412 public boolean hasMethodType() { 413 if (this.methodType == null) 414 return false; 415 for (CodeableConcept item : this.methodType) 416 if (!item.isEmpty()) 417 return true; 418 return false; 419 } 420 421 public CodeableConcept addMethodType() { //3 422 CodeableConcept t = new CodeableConcept(); 423 if (this.methodType == null) 424 this.methodType = new ArrayList<CodeableConcept>(); 425 this.methodType.add(t); 426 return t; 427 } 428 429 public GenomicStudyAnalysisComponent addMethodType(CodeableConcept t) { //3 430 if (t == null) 431 return this; 432 if (this.methodType == null) 433 this.methodType = new ArrayList<CodeableConcept>(); 434 this.methodType.add(t); 435 return this; 436 } 437 438 /** 439 * @return The first repetition of repeating field {@link #methodType}, creating it if it does not already exist {3} 440 */ 441 public CodeableConcept getMethodTypeFirstRep() { 442 if (getMethodType().isEmpty()) { 443 addMethodType(); 444 } 445 return getMethodType().get(0); 446 } 447 448 /** 449 * @return {@link #changeType} (Type of the genomic changes studied in the analysis, e.g., DNA, RNA, or amino acid change.) 450 */ 451 public List<CodeableConcept> getChangeType() { 452 if (this.changeType == null) 453 this.changeType = new ArrayList<CodeableConcept>(); 454 return this.changeType; 455 } 456 457 /** 458 * @return Returns a reference to <code>this</code> for easy method chaining 459 */ 460 public GenomicStudyAnalysisComponent setChangeType(List<CodeableConcept> theChangeType) { 461 this.changeType = theChangeType; 462 return this; 463 } 464 465 public boolean hasChangeType() { 466 if (this.changeType == null) 467 return false; 468 for (CodeableConcept item : this.changeType) 469 if (!item.isEmpty()) 470 return true; 471 return false; 472 } 473 474 public CodeableConcept addChangeType() { //3 475 CodeableConcept t = new CodeableConcept(); 476 if (this.changeType == null) 477 this.changeType = new ArrayList<CodeableConcept>(); 478 this.changeType.add(t); 479 return t; 480 } 481 482 public GenomicStudyAnalysisComponent addChangeType(CodeableConcept t) { //3 483 if (t == null) 484 return this; 485 if (this.changeType == null) 486 this.changeType = new ArrayList<CodeableConcept>(); 487 this.changeType.add(t); 488 return this; 489 } 490 491 /** 492 * @return The first repetition of repeating field {@link #changeType}, creating it if it does not already exist {3} 493 */ 494 public CodeableConcept getChangeTypeFirstRep() { 495 if (getChangeType().isEmpty()) { 496 addChangeType(); 497 } 498 return getChangeType().get(0); 499 } 500 501 /** 502 * @return {@link #genomeBuild} (The reference genome build that is used in this analysis.) 503 */ 504 public CodeableConcept getGenomeBuild() { 505 if (this.genomeBuild == null) 506 if (Configuration.errorOnAutoCreate()) 507 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.genomeBuild"); 508 else if (Configuration.doAutoCreate()) 509 this.genomeBuild = new CodeableConcept(); // cc 510 return this.genomeBuild; 511 } 512 513 public boolean hasGenomeBuild() { 514 return this.genomeBuild != null && !this.genomeBuild.isEmpty(); 515 } 516 517 /** 518 * @param value {@link #genomeBuild} (The reference genome build that is used in this analysis.) 519 */ 520 public GenomicStudyAnalysisComponent setGenomeBuild(CodeableConcept value) { 521 this.genomeBuild = value; 522 return this; 523 } 524 525 /** 526 * @return {@link #instantiatesCanonical} (The defined protocol that describes the analysis.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value 527 */ 528 public CanonicalType getInstantiatesCanonicalElement() { 529 if (this.instantiatesCanonical == null) 530 if (Configuration.errorOnAutoCreate()) 531 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.instantiatesCanonical"); 532 else if (Configuration.doAutoCreate()) 533 this.instantiatesCanonical = new CanonicalType(); // bb 534 return this.instantiatesCanonical; 535 } 536 537 public boolean hasInstantiatesCanonicalElement() { 538 return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty(); 539 } 540 541 public boolean hasInstantiatesCanonical() { 542 return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty(); 543 } 544 545 /** 546 * @param value {@link #instantiatesCanonical} (The defined protocol that describes the analysis.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value 547 */ 548 public GenomicStudyAnalysisComponent setInstantiatesCanonicalElement(CanonicalType value) { 549 this.instantiatesCanonical = value; 550 return this; 551 } 552 553 /** 554 * @return The defined protocol that describes the analysis. 555 */ 556 public String getInstantiatesCanonical() { 557 return this.instantiatesCanonical == null ? null : this.instantiatesCanonical.getValue(); 558 } 559 560 /** 561 * @param value The defined protocol that describes the analysis. 562 */ 563 public GenomicStudyAnalysisComponent setInstantiatesCanonical(String value) { 564 if (Utilities.noString(value)) 565 this.instantiatesCanonical = null; 566 else { 567 if (this.instantiatesCanonical == null) 568 this.instantiatesCanonical = new CanonicalType(); 569 this.instantiatesCanonical.setValue(value); 570 } 571 return this; 572 } 573 574 /** 575 * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol that describes the analysis.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value 576 */ 577 public UriType getInstantiatesUriElement() { 578 if (this.instantiatesUri == null) 579 if (Configuration.errorOnAutoCreate()) 580 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.instantiatesUri"); 581 else if (Configuration.doAutoCreate()) 582 this.instantiatesUri = new UriType(); // bb 583 return this.instantiatesUri; 584 } 585 586 public boolean hasInstantiatesUriElement() { 587 return this.instantiatesUri != null && !this.instantiatesUri.isEmpty(); 588 } 589 590 public boolean hasInstantiatesUri() { 591 return this.instantiatesUri != null && !this.instantiatesUri.isEmpty(); 592 } 593 594 /** 595 * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol that describes the analysis.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value 596 */ 597 public GenomicStudyAnalysisComponent setInstantiatesUriElement(UriType value) { 598 this.instantiatesUri = value; 599 return this; 600 } 601 602 /** 603 * @return The URL pointing to an externally maintained protocol that describes the analysis. 604 */ 605 public String getInstantiatesUri() { 606 return this.instantiatesUri == null ? null : this.instantiatesUri.getValue(); 607 } 608 609 /** 610 * @param value The URL pointing to an externally maintained protocol that describes the analysis. 611 */ 612 public GenomicStudyAnalysisComponent setInstantiatesUri(String value) { 613 if (Utilities.noString(value)) 614 this.instantiatesUri = null; 615 else { 616 if (this.instantiatesUri == null) 617 this.instantiatesUri = new UriType(); 618 this.instantiatesUri.setValue(value); 619 } 620 return this; 621 } 622 623 /** 624 * @return {@link #title} (Name of the analysis event (human friendly).). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value 625 */ 626 public StringType getTitleElement() { 627 if (this.title == null) 628 if (Configuration.errorOnAutoCreate()) 629 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.title"); 630 else if (Configuration.doAutoCreate()) 631 this.title = new StringType(); // bb 632 return this.title; 633 } 634 635 public boolean hasTitleElement() { 636 return this.title != null && !this.title.isEmpty(); 637 } 638 639 public boolean hasTitle() { 640 return this.title != null && !this.title.isEmpty(); 641 } 642 643 /** 644 * @param value {@link #title} (Name of the analysis event (human friendly).). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value 645 */ 646 public GenomicStudyAnalysisComponent setTitleElement(StringType value) { 647 this.title = value; 648 return this; 649 } 650 651 /** 652 * @return Name of the analysis event (human friendly). 653 */ 654 public String getTitle() { 655 return this.title == null ? null : this.title.getValue(); 656 } 657 658 /** 659 * @param value Name of the analysis event (human friendly). 660 */ 661 public GenomicStudyAnalysisComponent setTitle(String value) { 662 if (Utilities.noString(value)) 663 this.title = null; 664 else { 665 if (this.title == null) 666 this.title = new StringType(); 667 this.title.setValue(value); 668 } 669 return this; 670 } 671 672 /** 673 * @return {@link #focus} (The focus of a genomic analysis when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the GenomicStudy.subject would be the child (proband) and the GenomicStudy.analysis.focus of a specific analysis would be the parent.) 674 */ 675 public List<Reference> getFocus() { 676 if (this.focus == null) 677 this.focus = new ArrayList<Reference>(); 678 return this.focus; 679 } 680 681 /** 682 * @return Returns a reference to <code>this</code> for easy method chaining 683 */ 684 public GenomicStudyAnalysisComponent setFocus(List<Reference> theFocus) { 685 this.focus = theFocus; 686 return this; 687 } 688 689 public boolean hasFocus() { 690 if (this.focus == null) 691 return false; 692 for (Reference item : this.focus) 693 if (!item.isEmpty()) 694 return true; 695 return false; 696 } 697 698 public Reference addFocus() { //3 699 Reference t = new Reference(); 700 if (this.focus == null) 701 this.focus = new ArrayList<Reference>(); 702 this.focus.add(t); 703 return t; 704 } 705 706 public GenomicStudyAnalysisComponent addFocus(Reference t) { //3 707 if (t == null) 708 return this; 709 if (this.focus == null) 710 this.focus = new ArrayList<Reference>(); 711 this.focus.add(t); 712 return this; 713 } 714 715 /** 716 * @return The first repetition of repeating field {@link #focus}, creating it if it does not already exist {3} 717 */ 718 public Reference getFocusFirstRep() { 719 if (getFocus().isEmpty()) { 720 addFocus(); 721 } 722 return getFocus().get(0); 723 } 724 725 /** 726 * @return {@link #specimen} (The specimen used in the analysis event.) 727 */ 728 public List<Reference> getSpecimen() { 729 if (this.specimen == null) 730 this.specimen = new ArrayList<Reference>(); 731 return this.specimen; 732 } 733 734 /** 735 * @return Returns a reference to <code>this</code> for easy method chaining 736 */ 737 public GenomicStudyAnalysisComponent setSpecimen(List<Reference> theSpecimen) { 738 this.specimen = theSpecimen; 739 return this; 740 } 741 742 public boolean hasSpecimen() { 743 if (this.specimen == null) 744 return false; 745 for (Reference item : this.specimen) 746 if (!item.isEmpty()) 747 return true; 748 return false; 749 } 750 751 public Reference addSpecimen() { //3 752 Reference t = new Reference(); 753 if (this.specimen == null) 754 this.specimen = new ArrayList<Reference>(); 755 this.specimen.add(t); 756 return t; 757 } 758 759 public GenomicStudyAnalysisComponent addSpecimen(Reference t) { //3 760 if (t == null) 761 return this; 762 if (this.specimen == null) 763 this.specimen = new ArrayList<Reference>(); 764 this.specimen.add(t); 765 return this; 766 } 767 768 /** 769 * @return The first repetition of repeating field {@link #specimen}, creating it if it does not already exist {3} 770 */ 771 public Reference getSpecimenFirstRep() { 772 if (getSpecimen().isEmpty()) { 773 addSpecimen(); 774 } 775 return getSpecimen().get(0); 776 } 777 778 /** 779 * @return {@link #date} (The date of the analysis event.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value 780 */ 781 public DateTimeType getDateElement() { 782 if (this.date == null) 783 if (Configuration.errorOnAutoCreate()) 784 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.date"); 785 else if (Configuration.doAutoCreate()) 786 this.date = new DateTimeType(); // bb 787 return this.date; 788 } 789 790 public boolean hasDateElement() { 791 return this.date != null && !this.date.isEmpty(); 792 } 793 794 public boolean hasDate() { 795 return this.date != null && !this.date.isEmpty(); 796 } 797 798 /** 799 * @param value {@link #date} (The date of the analysis event.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value 800 */ 801 public GenomicStudyAnalysisComponent setDateElement(DateTimeType value) { 802 this.date = value; 803 return this; 804 } 805 806 /** 807 * @return The date of the analysis event. 808 */ 809 public Date getDate() { 810 return this.date == null ? null : this.date.getValue(); 811 } 812 813 /** 814 * @param value The date of the analysis event. 815 */ 816 public GenomicStudyAnalysisComponent setDate(Date value) { 817 if (value == null) 818 this.date = null; 819 else { 820 if (this.date == null) 821 this.date = new DateTimeType(); 822 this.date.setValue(value); 823 } 824 return this; 825 } 826 827 /** 828 * @return {@link #note} (Any notes capture with the analysis event.) 829 */ 830 public List<Annotation> getNote() { 831 if (this.note == null) 832 this.note = new ArrayList<Annotation>(); 833 return this.note; 834 } 835 836 /** 837 * @return Returns a reference to <code>this</code> for easy method chaining 838 */ 839 public GenomicStudyAnalysisComponent setNote(List<Annotation> theNote) { 840 this.note = theNote; 841 return this; 842 } 843 844 public boolean hasNote() { 845 if (this.note == null) 846 return false; 847 for (Annotation item : this.note) 848 if (!item.isEmpty()) 849 return true; 850 return false; 851 } 852 853 public Annotation addNote() { //3 854 Annotation t = new Annotation(); 855 if (this.note == null) 856 this.note = new ArrayList<Annotation>(); 857 this.note.add(t); 858 return t; 859 } 860 861 public GenomicStudyAnalysisComponent addNote(Annotation t) { //3 862 if (t == null) 863 return this; 864 if (this.note == null) 865 this.note = new ArrayList<Annotation>(); 866 this.note.add(t); 867 return this; 868 } 869 870 /** 871 * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3} 872 */ 873 public Annotation getNoteFirstRep() { 874 if (getNote().isEmpty()) { 875 addNote(); 876 } 877 return getNote().get(0); 878 } 879 880 /** 881 * @return {@link #protocolPerformed} (The protocol that was performed for the analysis event.) 882 */ 883 public Reference getProtocolPerformed() { 884 if (this.protocolPerformed == null) 885 if (Configuration.errorOnAutoCreate()) 886 throw new Error("Attempt to auto-create GenomicStudyAnalysisComponent.protocolPerformed"); 887 else if (Configuration.doAutoCreate()) 888 this.protocolPerformed = new Reference(); // cc 889 return this.protocolPerformed; 890 } 891 892 public boolean hasProtocolPerformed() { 893 return this.protocolPerformed != null && !this.protocolPerformed.isEmpty(); 894 } 895 896 /** 897 * @param value {@link #protocolPerformed} (The protocol that was performed for the analysis event.) 898 */ 899 public GenomicStudyAnalysisComponent setProtocolPerformed(Reference value) { 900 this.protocolPerformed = value; 901 return this; 902 } 903 904 /** 905 * @return {@link #regionsStudied} (The genomic regions to be studied in the analysis (BED file).) 906 */ 907 public List<Reference> getRegionsStudied() { 908 if (this.regionsStudied == null) 909 this.regionsStudied = new ArrayList<Reference>(); 910 return this.regionsStudied; 911 } 912 913 /** 914 * @return Returns a reference to <code>this</code> for easy method chaining 915 */ 916 public GenomicStudyAnalysisComponent setRegionsStudied(List<Reference> theRegionsStudied) { 917 this.regionsStudied = theRegionsStudied; 918 return this; 919 } 920 921 public boolean hasRegionsStudied() { 922 if (this.regionsStudied == null) 923 return false; 924 for (Reference item : this.regionsStudied) 925 if (!item.isEmpty()) 926 return true; 927 return false; 928 } 929 930 public Reference addRegionsStudied() { //3 931 Reference t = new Reference(); 932 if (this.regionsStudied == null) 933 this.regionsStudied = new ArrayList<Reference>(); 934 this.regionsStudied.add(t); 935 return t; 936 } 937 938 public GenomicStudyAnalysisComponent addRegionsStudied(Reference t) { //3 939 if (t == null) 940 return this; 941 if (this.regionsStudied == null) 942 this.regionsStudied = new ArrayList<Reference>(); 943 this.regionsStudied.add(t); 944 return this; 945 } 946 947 /** 948 * @return The first repetition of repeating field {@link #regionsStudied}, creating it if it does not already exist {3} 949 */ 950 public Reference getRegionsStudiedFirstRep() { 951 if (getRegionsStudied().isEmpty()) { 952 addRegionsStudied(); 953 } 954 return getRegionsStudied().get(0); 955 } 956 957 /** 958 * @return {@link #regionsCalled} (Genomic regions actually called in the analysis event (BED file).) 959 */ 960 public List<Reference> getRegionsCalled() { 961 if (this.regionsCalled == null) 962 this.regionsCalled = new ArrayList<Reference>(); 963 return this.regionsCalled; 964 } 965 966 /** 967 * @return Returns a reference to <code>this</code> for easy method chaining 968 */ 969 public GenomicStudyAnalysisComponent setRegionsCalled(List<Reference> theRegionsCalled) { 970 this.regionsCalled = theRegionsCalled; 971 return this; 972 } 973 974 public boolean hasRegionsCalled() { 975 if (this.regionsCalled == null) 976 return false; 977 for (Reference item : this.regionsCalled) 978 if (!item.isEmpty()) 979 return true; 980 return false; 981 } 982 983 public Reference addRegionsCalled() { //3 984 Reference t = new Reference(); 985 if (this.regionsCalled == null) 986 this.regionsCalled = new ArrayList<Reference>(); 987 this.regionsCalled.add(t); 988 return t; 989 } 990 991 public GenomicStudyAnalysisComponent addRegionsCalled(Reference t) { //3 992 if (t == null) 993 return this; 994 if (this.regionsCalled == null) 995 this.regionsCalled = new ArrayList<Reference>(); 996 this.regionsCalled.add(t); 997 return this; 998 } 999 1000 /** 1001 * @return The first repetition of repeating field {@link #regionsCalled}, creating it if it does not already exist {3} 1002 */ 1003 public Reference getRegionsCalledFirstRep() { 1004 if (getRegionsCalled().isEmpty()) { 1005 addRegionsCalled(); 1006 } 1007 return getRegionsCalled().get(0); 1008 } 1009 1010 /** 1011 * @return {@link #input} (Inputs for the analysis event.) 1012 */ 1013 public List<GenomicStudyAnalysisInputComponent> getInput() { 1014 if (this.input == null) 1015 this.input = new ArrayList<GenomicStudyAnalysisInputComponent>(); 1016 return this.input; 1017 } 1018 1019 /** 1020 * @return Returns a reference to <code>this</code> for easy method chaining 1021 */ 1022 public GenomicStudyAnalysisComponent setInput(List<GenomicStudyAnalysisInputComponent> theInput) { 1023 this.input = theInput; 1024 return this; 1025 } 1026 1027 public boolean hasInput() { 1028 if (this.input == null) 1029 return false; 1030 for (GenomicStudyAnalysisInputComponent item : this.input) 1031 if (!item.isEmpty()) 1032 return true; 1033 return false; 1034 } 1035 1036 public GenomicStudyAnalysisInputComponent addInput() { //3 1037 GenomicStudyAnalysisInputComponent t = new GenomicStudyAnalysisInputComponent(); 1038 if (this.input == null) 1039 this.input = new ArrayList<GenomicStudyAnalysisInputComponent>(); 1040 this.input.add(t); 1041 return t; 1042 } 1043 1044 public GenomicStudyAnalysisComponent addInput(GenomicStudyAnalysisInputComponent t) { //3 1045 if (t == null) 1046 return this; 1047 if (this.input == null) 1048 this.input = new ArrayList<GenomicStudyAnalysisInputComponent>(); 1049 this.input.add(t); 1050 return this; 1051 } 1052 1053 /** 1054 * @return The first repetition of repeating field {@link #input}, creating it if it does not already exist {3} 1055 */ 1056 public GenomicStudyAnalysisInputComponent getInputFirstRep() { 1057 if (getInput().isEmpty()) { 1058 addInput(); 1059 } 1060 return getInput().get(0); 1061 } 1062 1063 /** 1064 * @return {@link #output} (Outputs for the analysis event.) 1065 */ 1066 public List<GenomicStudyAnalysisOutputComponent> getOutput() { 1067 if (this.output == null) 1068 this.output = new ArrayList<GenomicStudyAnalysisOutputComponent>(); 1069 return this.output; 1070 } 1071 1072 /** 1073 * @return Returns a reference to <code>this</code> for easy method chaining 1074 */ 1075 public GenomicStudyAnalysisComponent setOutput(List<GenomicStudyAnalysisOutputComponent> theOutput) { 1076 this.output = theOutput; 1077 return this; 1078 } 1079 1080 public boolean hasOutput() { 1081 if (this.output == null) 1082 return false; 1083 for (GenomicStudyAnalysisOutputComponent item : this.output) 1084 if (!item.isEmpty()) 1085 return true; 1086 return false; 1087 } 1088 1089 public GenomicStudyAnalysisOutputComponent addOutput() { //3 1090 GenomicStudyAnalysisOutputComponent t = new GenomicStudyAnalysisOutputComponent(); 1091 if (this.output == null) 1092 this.output = new ArrayList<GenomicStudyAnalysisOutputComponent>(); 1093 this.output.add(t); 1094 return t; 1095 } 1096 1097 public GenomicStudyAnalysisComponent addOutput(GenomicStudyAnalysisOutputComponent t) { //3 1098 if (t == null) 1099 return this; 1100 if (this.output == null) 1101 this.output = new ArrayList<GenomicStudyAnalysisOutputComponent>(); 1102 this.output.add(t); 1103 return this; 1104 } 1105 1106 /** 1107 * @return The first repetition of repeating field {@link #output}, creating it if it does not already exist {3} 1108 */ 1109 public GenomicStudyAnalysisOutputComponent getOutputFirstRep() { 1110 if (getOutput().isEmpty()) { 1111 addOutput(); 1112 } 1113 return getOutput().get(0); 1114 } 1115 1116 /** 1117 * @return {@link #performer} (Performer for the analysis event.) 1118 */ 1119 public List<GenomicStudyAnalysisPerformerComponent> getPerformer() { 1120 if (this.performer == null) 1121 this.performer = new ArrayList<GenomicStudyAnalysisPerformerComponent>(); 1122 return this.performer; 1123 } 1124 1125 /** 1126 * @return Returns a reference to <code>this</code> for easy method chaining 1127 */ 1128 public GenomicStudyAnalysisComponent setPerformer(List<GenomicStudyAnalysisPerformerComponent> thePerformer) { 1129 this.performer = thePerformer; 1130 return this; 1131 } 1132 1133 public boolean hasPerformer() { 1134 if (this.performer == null) 1135 return false; 1136 for (GenomicStudyAnalysisPerformerComponent item : this.performer) 1137 if (!item.isEmpty()) 1138 return true; 1139 return false; 1140 } 1141 1142 public GenomicStudyAnalysisPerformerComponent addPerformer() { //3 1143 GenomicStudyAnalysisPerformerComponent t = new GenomicStudyAnalysisPerformerComponent(); 1144 if (this.performer == null) 1145 this.performer = new ArrayList<GenomicStudyAnalysisPerformerComponent>(); 1146 this.performer.add(t); 1147 return t; 1148 } 1149 1150 public GenomicStudyAnalysisComponent addPerformer(GenomicStudyAnalysisPerformerComponent t) { //3 1151 if (t == null) 1152 return this; 1153 if (this.performer == null) 1154 this.performer = new ArrayList<GenomicStudyAnalysisPerformerComponent>(); 1155 this.performer.add(t); 1156 return this; 1157 } 1158 1159 /** 1160 * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3} 1161 */ 1162 public GenomicStudyAnalysisPerformerComponent getPerformerFirstRep() { 1163 if (getPerformer().isEmpty()) { 1164 addPerformer(); 1165 } 1166 return getPerformer().get(0); 1167 } 1168 1169 /** 1170 * @return {@link #device} (Devices used for the analysis (e.g., instruments, software), with settings and parameters.) 1171 */ 1172 public List<GenomicStudyAnalysisDeviceComponent> getDevice() { 1173 if (this.device == null) 1174 this.device = new ArrayList<GenomicStudyAnalysisDeviceComponent>(); 1175 return this.device; 1176 } 1177 1178 /** 1179 * @return Returns a reference to <code>this</code> for easy method chaining 1180 */ 1181 public GenomicStudyAnalysisComponent setDevice(List<GenomicStudyAnalysisDeviceComponent> theDevice) { 1182 this.device = theDevice; 1183 return this; 1184 } 1185 1186 public boolean hasDevice() { 1187 if (this.device == null) 1188 return false; 1189 for (GenomicStudyAnalysisDeviceComponent item : this.device) 1190 if (!item.isEmpty()) 1191 return true; 1192 return false; 1193 } 1194 1195 public GenomicStudyAnalysisDeviceComponent addDevice() { //3 1196 GenomicStudyAnalysisDeviceComponent t = new GenomicStudyAnalysisDeviceComponent(); 1197 if (this.device == null) 1198 this.device = new ArrayList<GenomicStudyAnalysisDeviceComponent>(); 1199 this.device.add(t); 1200 return t; 1201 } 1202 1203 public GenomicStudyAnalysisComponent addDevice(GenomicStudyAnalysisDeviceComponent t) { //3 1204 if (t == null) 1205 return this; 1206 if (this.device == null) 1207 this.device = new ArrayList<GenomicStudyAnalysisDeviceComponent>(); 1208 this.device.add(t); 1209 return this; 1210 } 1211 1212 /** 1213 * @return The first repetition of repeating field {@link #device}, creating it if it does not already exist {3} 1214 */ 1215 public GenomicStudyAnalysisDeviceComponent getDeviceFirstRep() { 1216 if (getDevice().isEmpty()) { 1217 addDevice(); 1218 } 1219 return getDevice().get(0); 1220 } 1221 1222 protected void listChildren(List<Property> children) { 1223 super.listChildren(children); 1224 children.add(new Property("identifier", "Identifier", "Identifiers for the analysis event.", 0, java.lang.Integer.MAX_VALUE, identifier)); 1225 children.add(new Property("methodType", "CodeableConcept", "Type of the methods used in the analysis, e.g., Fluorescence in situ hybridization (FISH), Karyotyping, or Microsatellite instability testing (MSI).", 0, java.lang.Integer.MAX_VALUE, methodType)); 1226 children.add(new Property("changeType", "CodeableConcept", "Type of the genomic changes studied in the analysis, e.g., DNA, RNA, or amino acid change.", 0, java.lang.Integer.MAX_VALUE, changeType)); 1227 children.add(new Property("genomeBuild", "CodeableConcept", "The reference genome build that is used in this analysis.", 0, 1, genomeBuild)); 1228 children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition)", "The defined protocol that describes the analysis.", 0, 1, instantiatesCanonical)); 1229 children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol that describes the analysis.", 0, 1, instantiatesUri)); 1230 children.add(new Property("title", "string", "Name of the analysis event (human friendly).", 0, 1, title)); 1231 children.add(new Property("focus", "Reference(Any)", "The focus of a genomic analysis when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the GenomicStudy.subject would be the child (proband) and the GenomicStudy.analysis.focus of a specific analysis would be the parent.", 0, java.lang.Integer.MAX_VALUE, focus)); 1232 children.add(new Property("specimen", "Reference(Specimen)", "The specimen used in the analysis event.", 0, java.lang.Integer.MAX_VALUE, specimen)); 1233 children.add(new Property("date", "dateTime", "The date of the analysis event.", 0, 1, date)); 1234 children.add(new Property("note", "Annotation", "Any notes capture with the analysis event.", 0, java.lang.Integer.MAX_VALUE, note)); 1235 children.add(new Property("protocolPerformed", "Reference(Procedure|Task)", "The protocol that was performed for the analysis event.", 0, 1, protocolPerformed)); 1236 children.add(new Property("regionsStudied", "Reference(DocumentReference|Observation)", "The genomic regions to be studied in the analysis (BED file).", 0, java.lang.Integer.MAX_VALUE, regionsStudied)); 1237 children.add(new Property("regionsCalled", "Reference(DocumentReference|Observation)", "Genomic regions actually called in the analysis event (BED file).", 0, java.lang.Integer.MAX_VALUE, regionsCalled)); 1238 children.add(new Property("input", "", "Inputs for the analysis event.", 0, java.lang.Integer.MAX_VALUE, input)); 1239 children.add(new Property("output", "", "Outputs for the analysis event.", 0, java.lang.Integer.MAX_VALUE, output)); 1240 children.add(new Property("performer", "", "Performer for the analysis event.", 0, java.lang.Integer.MAX_VALUE, performer)); 1241 children.add(new Property("device", "", "Devices used for the analysis (e.g., instruments, software), with settings and parameters.", 0, java.lang.Integer.MAX_VALUE, device)); 1242 } 1243 1244 @Override 1245 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1246 switch (_hash) { 1247 case -1618432855: /*identifier*/ return new Property("identifier", "Identifier", "Identifiers for the analysis event.", 0, java.lang.Integer.MAX_VALUE, identifier); 1248 case -722961477: /*methodType*/ return new Property("methodType", "CodeableConcept", "Type of the methods used in the analysis, e.g., Fluorescence in situ hybridization (FISH), Karyotyping, or Microsatellite instability testing (MSI).", 0, java.lang.Integer.MAX_VALUE, methodType); 1249 case -2131902710: /*changeType*/ return new Property("changeType", "CodeableConcept", "Type of the genomic changes studied in the analysis, e.g., DNA, RNA, or amino acid change.", 0, java.lang.Integer.MAX_VALUE, changeType); 1250 case 1061239735: /*genomeBuild*/ return new Property("genomeBuild", "CodeableConcept", "The reference genome build that is used in this analysis.", 0, 1, genomeBuild); 1251 case 8911915: /*instantiatesCanonical*/ return new Property("instantiatesCanonical", "canonical(PlanDefinition|ActivityDefinition)", "The defined protocol that describes the analysis.", 0, 1, instantiatesCanonical); 1252 case -1926393373: /*instantiatesUri*/ return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol that describes the analysis.", 0, 1, instantiatesUri); 1253 case 110371416: /*title*/ return new Property("title", "string", "Name of the analysis event (human friendly).", 0, 1, title); 1254 case 97604824: /*focus*/ return new Property("focus", "Reference(Any)", "The focus of a genomic analysis when it is not the patient of record representing something or someone associated with the patient such as a spouse, parent, child, or sibling. For example, in trio testing, the GenomicStudy.subject would be the child (proband) and the GenomicStudy.analysis.focus of a specific analysis would be the parent.", 0, java.lang.Integer.MAX_VALUE, focus); 1255 case -2132868344: /*specimen*/ return new Property("specimen", "Reference(Specimen)", "The specimen used in the analysis event.", 0, java.lang.Integer.MAX_VALUE, specimen); 1256 case 3076014: /*date*/ return new Property("date", "dateTime", "The date of the analysis event.", 0, 1, date); 1257 case 3387378: /*note*/ return new Property("note", "Annotation", "Any notes capture with the analysis event.", 0, java.lang.Integer.MAX_VALUE, note); 1258 case -1565516792: /*protocolPerformed*/ return new Property("protocolPerformed", "Reference(Procedure|Task)", "The protocol that was performed for the analysis event.", 0, 1, protocolPerformed); 1259 case 391791385: /*regionsStudied*/ return new Property("regionsStudied", "Reference(DocumentReference|Observation)", "The genomic regions to be studied in the analysis (BED file).", 0, java.lang.Integer.MAX_VALUE, regionsStudied); 1260 case -2125803428: /*regionsCalled*/ return new Property("regionsCalled", "Reference(DocumentReference|Observation)", "Genomic regions actually called in the analysis event (BED file).", 0, java.lang.Integer.MAX_VALUE, regionsCalled); 1261 case 100358090: /*input*/ return new Property("input", "", "Inputs for the analysis event.", 0, java.lang.Integer.MAX_VALUE, input); 1262 case -1005512447: /*output*/ return new Property("output", "", "Outputs for the analysis event.", 0, java.lang.Integer.MAX_VALUE, output); 1263 case 481140686: /*performer*/ return new Property("performer", "", "Performer for the analysis event.", 0, java.lang.Integer.MAX_VALUE, performer); 1264 case -1335157162: /*device*/ return new Property("device", "", "Devices used for the analysis (e.g., instruments, software), with settings and parameters.", 0, java.lang.Integer.MAX_VALUE, device); 1265 default: return super.getNamedProperty(_hash, _name, _checkValid); 1266 } 1267 1268 } 1269 1270 @Override 1271 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1272 switch (hash) { 1273 case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier 1274 case -722961477: /*methodType*/ return this.methodType == null ? new Base[0] : this.methodType.toArray(new Base[this.methodType.size()]); // CodeableConcept 1275 case -2131902710: /*changeType*/ return this.changeType == null ? new Base[0] : this.changeType.toArray(new Base[this.changeType.size()]); // CodeableConcept 1276 case 1061239735: /*genomeBuild*/ return this.genomeBuild == null ? new Base[0] : new Base[] {this.genomeBuild}; // CodeableConcept 1277 case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : new Base[] {this.instantiatesCanonical}; // CanonicalType 1278 case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : new Base[] {this.instantiatesUri}; // UriType 1279 case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType 1280 case 97604824: /*focus*/ return this.focus == null ? new Base[0] : this.focus.toArray(new Base[this.focus.size()]); // Reference 1281 case -2132868344: /*specimen*/ return this.specimen == null ? new Base[0] : this.specimen.toArray(new Base[this.specimen.size()]); // Reference 1282 case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType 1283 case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation 1284 case -1565516792: /*protocolPerformed*/ return this.protocolPerformed == null ? new Base[0] : new Base[] {this.protocolPerformed}; // Reference 1285 case 391791385: /*regionsStudied*/ return this.regionsStudied == null ? new Base[0] : this.regionsStudied.toArray(new Base[this.regionsStudied.size()]); // Reference 1286 case -2125803428: /*regionsCalled*/ return this.regionsCalled == null ? new Base[0] : this.regionsCalled.toArray(new Base[this.regionsCalled.size()]); // Reference 1287 case 100358090: /*input*/ return this.input == null ? new Base[0] : this.input.toArray(new Base[this.input.size()]); // GenomicStudyAnalysisInputComponent 1288 case -1005512447: /*output*/ return this.output == null ? new Base[0] : this.output.toArray(new Base[this.output.size()]); // GenomicStudyAnalysisOutputComponent 1289 case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // GenomicStudyAnalysisPerformerComponent 1290 case -1335157162: /*device*/ return this.device == null ? new Base[0] : this.device.toArray(new Base[this.device.size()]); // GenomicStudyAnalysisDeviceComponent 1291 default: return super.getProperty(hash, name, checkValid); 1292 } 1293 1294 } 1295 1296 @Override 1297 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1298 switch (hash) { 1299 case -1618432855: // identifier 1300 this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier 1301 return value; 1302 case -722961477: // methodType 1303 this.getMethodType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept 1304 return value; 1305 case -2131902710: // changeType 1306 this.getChangeType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept 1307 return value; 1308 case 1061239735: // genomeBuild 1309 this.genomeBuild = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1310 return value; 1311 case 8911915: // instantiatesCanonical 1312 this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType 1313 return value; 1314 case -1926393373: // instantiatesUri 1315 this.instantiatesUri = TypeConvertor.castToUri(value); // UriType 1316 return value; 1317 case 110371416: // title 1318 this.title = TypeConvertor.castToString(value); // StringType 1319 return value; 1320 case 97604824: // focus 1321 this.getFocus().add(TypeConvertor.castToReference(value)); // Reference 1322 return value; 1323 case -2132868344: // specimen 1324 this.getSpecimen().add(TypeConvertor.castToReference(value)); // Reference 1325 return value; 1326 case 3076014: // date 1327 this.date = TypeConvertor.castToDateTime(value); // DateTimeType 1328 return value; 1329 case 3387378: // note 1330 this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation 1331 return value; 1332 case -1565516792: // protocolPerformed 1333 this.protocolPerformed = TypeConvertor.castToReference(value); // Reference 1334 return value; 1335 case 391791385: // regionsStudied 1336 this.getRegionsStudied().add(TypeConvertor.castToReference(value)); // Reference 1337 return value; 1338 case -2125803428: // regionsCalled 1339 this.getRegionsCalled().add(TypeConvertor.castToReference(value)); // Reference 1340 return value; 1341 case 100358090: // input 1342 this.getInput().add((GenomicStudyAnalysisInputComponent) value); // GenomicStudyAnalysisInputComponent 1343 return value; 1344 case -1005512447: // output 1345 this.getOutput().add((GenomicStudyAnalysisOutputComponent) value); // GenomicStudyAnalysisOutputComponent 1346 return value; 1347 case 481140686: // performer 1348 this.getPerformer().add((GenomicStudyAnalysisPerformerComponent) value); // GenomicStudyAnalysisPerformerComponent 1349 return value; 1350 case -1335157162: // device 1351 this.getDevice().add((GenomicStudyAnalysisDeviceComponent) value); // GenomicStudyAnalysisDeviceComponent 1352 return value; 1353 default: return super.setProperty(hash, name, value); 1354 } 1355 1356 } 1357 1358 @Override 1359 public Base setProperty(String name, Base value) throws FHIRException { 1360 if (name.equals("identifier")) { 1361 this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); 1362 } else if (name.equals("methodType")) { 1363 this.getMethodType().add(TypeConvertor.castToCodeableConcept(value)); 1364 } else if (name.equals("changeType")) { 1365 this.getChangeType().add(TypeConvertor.castToCodeableConcept(value)); 1366 } else if (name.equals("genomeBuild")) { 1367 this.genomeBuild = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1368 } else if (name.equals("instantiatesCanonical")) { 1369 this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType 1370 } else if (name.equals("instantiatesUri")) { 1371 this.instantiatesUri = TypeConvertor.castToUri(value); // UriType 1372 } else if (name.equals("title")) { 1373 this.title = TypeConvertor.castToString(value); // StringType 1374 } else if (name.equals("focus")) { 1375 this.getFocus().add(TypeConvertor.castToReference(value)); 1376 } else if (name.equals("specimen")) { 1377 this.getSpecimen().add(TypeConvertor.castToReference(value)); 1378 } else if (name.equals("date")) { 1379 this.date = TypeConvertor.castToDateTime(value); // DateTimeType 1380 } else if (name.equals("note")) { 1381 this.getNote().add(TypeConvertor.castToAnnotation(value)); 1382 } else if (name.equals("protocolPerformed")) { 1383 this.protocolPerformed = TypeConvertor.castToReference(value); // Reference 1384 } else if (name.equals("regionsStudied")) { 1385 this.getRegionsStudied().add(TypeConvertor.castToReference(value)); 1386 } else if (name.equals("regionsCalled")) { 1387 this.getRegionsCalled().add(TypeConvertor.castToReference(value)); 1388 } else if (name.equals("input")) { 1389 this.getInput().add((GenomicStudyAnalysisInputComponent) value); 1390 } else if (name.equals("output")) { 1391 this.getOutput().add((GenomicStudyAnalysisOutputComponent) value); 1392 } else if (name.equals("performer")) { 1393 this.getPerformer().add((GenomicStudyAnalysisPerformerComponent) value); 1394 } else if (name.equals("device")) { 1395 this.getDevice().add((GenomicStudyAnalysisDeviceComponent) value); 1396 } else 1397 return super.setProperty(name, value); 1398 return value; 1399 } 1400 1401 @Override 1402 public void removeChild(String name, Base value) throws FHIRException { 1403 if (name.equals("identifier")) { 1404 this.getIdentifier().remove(value); 1405 } else if (name.equals("methodType")) { 1406 this.getMethodType().remove(value); 1407 } else if (name.equals("changeType")) { 1408 this.getChangeType().remove(value); 1409 } else if (name.equals("genomeBuild")) { 1410 this.genomeBuild = null; 1411 } else if (name.equals("instantiatesCanonical")) { 1412 this.instantiatesCanonical = null; 1413 } else if (name.equals("instantiatesUri")) { 1414 this.instantiatesUri = null; 1415 } else if (name.equals("title")) { 1416 this.title = null; 1417 } else if (name.equals("focus")) { 1418 this.getFocus().remove(value); 1419 } else if (name.equals("specimen")) { 1420 this.getSpecimen().remove(value); 1421 } else if (name.equals("date")) { 1422 this.date = null; 1423 } else if (name.equals("note")) { 1424 this.getNote().remove(value); 1425 } else if (name.equals("protocolPerformed")) { 1426 this.protocolPerformed = null; 1427 } else if (name.equals("regionsStudied")) { 1428 this.getRegionsStudied().remove(value); 1429 } else if (name.equals("regionsCalled")) { 1430 this.getRegionsCalled().remove(value); 1431 } else if (name.equals("input")) { 1432 this.getInput().remove((GenomicStudyAnalysisInputComponent) value); 1433 } else if (name.equals("output")) { 1434 this.getOutput().remove((GenomicStudyAnalysisOutputComponent) value); 1435 } else if (name.equals("performer")) { 1436 this.getPerformer().remove((GenomicStudyAnalysisPerformerComponent) value); 1437 } else if (name.equals("device")) { 1438 this.getDevice().remove((GenomicStudyAnalysisDeviceComponent) value); 1439 } else 1440 super.removeChild(name, value); 1441 1442 } 1443 1444 @Override 1445 public Base makeProperty(int hash, String name) throws FHIRException { 1446 switch (hash) { 1447 case -1618432855: return addIdentifier(); 1448 case -722961477: return addMethodType(); 1449 case -2131902710: return addChangeType(); 1450 case 1061239735: return getGenomeBuild(); 1451 case 8911915: return getInstantiatesCanonicalElement(); 1452 case -1926393373: return getInstantiatesUriElement(); 1453 case 110371416: return getTitleElement(); 1454 case 97604824: return addFocus(); 1455 case -2132868344: return addSpecimen(); 1456 case 3076014: return getDateElement(); 1457 case 3387378: return addNote(); 1458 case -1565516792: return getProtocolPerformed(); 1459 case 391791385: return addRegionsStudied(); 1460 case -2125803428: return addRegionsCalled(); 1461 case 100358090: return addInput(); 1462 case -1005512447: return addOutput(); 1463 case 481140686: return addPerformer(); 1464 case -1335157162: return addDevice(); 1465 default: return super.makeProperty(hash, name); 1466 } 1467 1468 } 1469 1470 @Override 1471 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1472 switch (hash) { 1473 case -1618432855: /*identifier*/ return new String[] {"Identifier"}; 1474 case -722961477: /*methodType*/ return new String[] {"CodeableConcept"}; 1475 case -2131902710: /*changeType*/ return new String[] {"CodeableConcept"}; 1476 case 1061239735: /*genomeBuild*/ return new String[] {"CodeableConcept"}; 1477 case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"}; 1478 case -1926393373: /*instantiatesUri*/ return new String[] {"uri"}; 1479 case 110371416: /*title*/ return new String[] {"string"}; 1480 case 97604824: /*focus*/ return new String[] {"Reference"}; 1481 case -2132868344: /*specimen*/ return new String[] {"Reference"}; 1482 case 3076014: /*date*/ return new String[] {"dateTime"}; 1483 case 3387378: /*note*/ return new String[] {"Annotation"}; 1484 case -1565516792: /*protocolPerformed*/ return new String[] {"Reference"}; 1485 case 391791385: /*regionsStudied*/ return new String[] {"Reference"}; 1486 case -2125803428: /*regionsCalled*/ return new String[] {"Reference"}; 1487 case 100358090: /*input*/ return new String[] {}; 1488 case -1005512447: /*output*/ return new String[] {}; 1489 case 481140686: /*performer*/ return new String[] {}; 1490 case -1335157162: /*device*/ return new String[] {}; 1491 default: return super.getTypesForProperty(hash, name); 1492 } 1493 1494 } 1495 1496 @Override 1497 public Base addChild(String name) throws FHIRException { 1498 if (name.equals("identifier")) { 1499 return addIdentifier(); 1500 } 1501 else if (name.equals("methodType")) { 1502 return addMethodType(); 1503 } 1504 else if (name.equals("changeType")) { 1505 return addChangeType(); 1506 } 1507 else if (name.equals("genomeBuild")) { 1508 this.genomeBuild = new CodeableConcept(); 1509 return this.genomeBuild; 1510 } 1511 else if (name.equals("instantiatesCanonical")) { 1512 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.analysis.instantiatesCanonical"); 1513 } 1514 else if (name.equals("instantiatesUri")) { 1515 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.analysis.instantiatesUri"); 1516 } 1517 else if (name.equals("title")) { 1518 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.analysis.title"); 1519 } 1520 else if (name.equals("focus")) { 1521 return addFocus(); 1522 } 1523 else if (name.equals("specimen")) { 1524 return addSpecimen(); 1525 } 1526 else if (name.equals("date")) { 1527 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.analysis.date"); 1528 } 1529 else if (name.equals("note")) { 1530 return addNote(); 1531 } 1532 else if (name.equals("protocolPerformed")) { 1533 this.protocolPerformed = new Reference(); 1534 return this.protocolPerformed; 1535 } 1536 else if (name.equals("regionsStudied")) { 1537 return addRegionsStudied(); 1538 } 1539 else if (name.equals("regionsCalled")) { 1540 return addRegionsCalled(); 1541 } 1542 else if (name.equals("input")) { 1543 return addInput(); 1544 } 1545 else if (name.equals("output")) { 1546 return addOutput(); 1547 } 1548 else if (name.equals("performer")) { 1549 return addPerformer(); 1550 } 1551 else if (name.equals("device")) { 1552 return addDevice(); 1553 } 1554 else 1555 return super.addChild(name); 1556 } 1557 1558 public GenomicStudyAnalysisComponent copy() { 1559 GenomicStudyAnalysisComponent dst = new GenomicStudyAnalysisComponent(); 1560 copyValues(dst); 1561 return dst; 1562 } 1563 1564 public void copyValues(GenomicStudyAnalysisComponent dst) { 1565 super.copyValues(dst); 1566 if (identifier != null) { 1567 dst.identifier = new ArrayList<Identifier>(); 1568 for (Identifier i : identifier) 1569 dst.identifier.add(i.copy()); 1570 }; 1571 if (methodType != null) { 1572 dst.methodType = new ArrayList<CodeableConcept>(); 1573 for (CodeableConcept i : methodType) 1574 dst.methodType.add(i.copy()); 1575 }; 1576 if (changeType != null) { 1577 dst.changeType = new ArrayList<CodeableConcept>(); 1578 for (CodeableConcept i : changeType) 1579 dst.changeType.add(i.copy()); 1580 }; 1581 dst.genomeBuild = genomeBuild == null ? null : genomeBuild.copy(); 1582 dst.instantiatesCanonical = instantiatesCanonical == null ? null : instantiatesCanonical.copy(); 1583 dst.instantiatesUri = instantiatesUri == null ? null : instantiatesUri.copy(); 1584 dst.title = title == null ? null : title.copy(); 1585 if (focus != null) { 1586 dst.focus = new ArrayList<Reference>(); 1587 for (Reference i : focus) 1588 dst.focus.add(i.copy()); 1589 }; 1590 if (specimen != null) { 1591 dst.specimen = new ArrayList<Reference>(); 1592 for (Reference i : specimen) 1593 dst.specimen.add(i.copy()); 1594 }; 1595 dst.date = date == null ? null : date.copy(); 1596 if (note != null) { 1597 dst.note = new ArrayList<Annotation>(); 1598 for (Annotation i : note) 1599 dst.note.add(i.copy()); 1600 }; 1601 dst.protocolPerformed = protocolPerformed == null ? null : protocolPerformed.copy(); 1602 if (regionsStudied != null) { 1603 dst.regionsStudied = new ArrayList<Reference>(); 1604 for (Reference i : regionsStudied) 1605 dst.regionsStudied.add(i.copy()); 1606 }; 1607 if (regionsCalled != null) { 1608 dst.regionsCalled = new ArrayList<Reference>(); 1609 for (Reference i : regionsCalled) 1610 dst.regionsCalled.add(i.copy()); 1611 }; 1612 if (input != null) { 1613 dst.input = new ArrayList<GenomicStudyAnalysisInputComponent>(); 1614 for (GenomicStudyAnalysisInputComponent i : input) 1615 dst.input.add(i.copy()); 1616 }; 1617 if (output != null) { 1618 dst.output = new ArrayList<GenomicStudyAnalysisOutputComponent>(); 1619 for (GenomicStudyAnalysisOutputComponent i : output) 1620 dst.output.add(i.copy()); 1621 }; 1622 if (performer != null) { 1623 dst.performer = new ArrayList<GenomicStudyAnalysisPerformerComponent>(); 1624 for (GenomicStudyAnalysisPerformerComponent i : performer) 1625 dst.performer.add(i.copy()); 1626 }; 1627 if (device != null) { 1628 dst.device = new ArrayList<GenomicStudyAnalysisDeviceComponent>(); 1629 for (GenomicStudyAnalysisDeviceComponent i : device) 1630 dst.device.add(i.copy()); 1631 }; 1632 } 1633 1634 @Override 1635 public boolean equalsDeep(Base other_) { 1636 if (!super.equalsDeep(other_)) 1637 return false; 1638 if (!(other_ instanceof GenomicStudyAnalysisComponent)) 1639 return false; 1640 GenomicStudyAnalysisComponent o = (GenomicStudyAnalysisComponent) other_; 1641 return compareDeep(identifier, o.identifier, true) && compareDeep(methodType, o.methodType, true) 1642 && compareDeep(changeType, o.changeType, true) && compareDeep(genomeBuild, o.genomeBuild, true) 1643 && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true) && compareDeep(instantiatesUri, o.instantiatesUri, true) 1644 && compareDeep(title, o.title, true) && compareDeep(focus, o.focus, true) && compareDeep(specimen, o.specimen, true) 1645 && compareDeep(date, o.date, true) && compareDeep(note, o.note, true) && compareDeep(protocolPerformed, o.protocolPerformed, true) 1646 && compareDeep(regionsStudied, o.regionsStudied, true) && compareDeep(regionsCalled, o.regionsCalled, true) 1647 && compareDeep(input, o.input, true) && compareDeep(output, o.output, true) && compareDeep(performer, o.performer, true) 1648 && compareDeep(device, o.device, true); 1649 } 1650 1651 @Override 1652 public boolean equalsShallow(Base other_) { 1653 if (!super.equalsShallow(other_)) 1654 return false; 1655 if (!(other_ instanceof GenomicStudyAnalysisComponent)) 1656 return false; 1657 GenomicStudyAnalysisComponent o = (GenomicStudyAnalysisComponent) other_; 1658 return compareValues(instantiatesCanonical, o.instantiatesCanonical, true) && compareValues(instantiatesUri, o.instantiatesUri, true) 1659 && compareValues(title, o.title, true) && compareValues(date, o.date, true); 1660 } 1661 1662 public boolean isEmpty() { 1663 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, methodType, changeType 1664 , genomeBuild, instantiatesCanonical, instantiatesUri, title, focus, specimen, date 1665 , note, protocolPerformed, regionsStudied, regionsCalled, input, output, performer 1666 , device); 1667 } 1668 1669 public String fhirType() { 1670 return "GenomicStudy.analysis"; 1671 1672 } 1673 1674 } 1675 1676 @Block() 1677 public static class GenomicStudyAnalysisInputComponent extends BackboneElement implements IBaseBackboneElement { 1678 /** 1679 * File containing input data. 1680 */ 1681 @Child(name = "file", type = {DocumentReference.class}, order=1, min=0, max=1, modifier=false, summary=true) 1682 @Description(shortDefinition="File containing input data", formalDefinition="File containing input data." ) 1683 protected Reference file; 1684 1685 /** 1686 * Type of input data, e.g., BAM, CRAM, or FASTA. 1687 */ 1688 @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false) 1689 @Description(shortDefinition="Type of input data (e.g., BAM, CRAM, or FASTA)", formalDefinition="Type of input data, e.g., BAM, CRAM, or FASTA." ) 1690 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-dataformat") 1691 protected CodeableConcept type; 1692 1693 /** 1694 * The analysis event or other GenomicStudy that generated this input file. 1695 */ 1696 @Child(name = "generatedBy", type = {Identifier.class, GenomicStudy.class}, order=3, min=0, max=1, modifier=false, summary=false) 1697 @Description(shortDefinition="The analysis event or other GenomicStudy that generated this input file", formalDefinition="The analysis event or other GenomicStudy that generated this input file." ) 1698 protected DataType generatedBy; 1699 1700 private static final long serialVersionUID = -650883036L; 1701 1702 /** 1703 * Constructor 1704 */ 1705 public GenomicStudyAnalysisInputComponent() { 1706 super(); 1707 } 1708 1709 /** 1710 * @return {@link #file} (File containing input data.) 1711 */ 1712 public Reference getFile() { 1713 if (this.file == null) 1714 if (Configuration.errorOnAutoCreate()) 1715 throw new Error("Attempt to auto-create GenomicStudyAnalysisInputComponent.file"); 1716 else if (Configuration.doAutoCreate()) 1717 this.file = new Reference(); // cc 1718 return this.file; 1719 } 1720 1721 public boolean hasFile() { 1722 return this.file != null && !this.file.isEmpty(); 1723 } 1724 1725 /** 1726 * @param value {@link #file} (File containing input data.) 1727 */ 1728 public GenomicStudyAnalysisInputComponent setFile(Reference value) { 1729 this.file = value; 1730 return this; 1731 } 1732 1733 /** 1734 * @return {@link #type} (Type of input data, e.g., BAM, CRAM, or FASTA.) 1735 */ 1736 public CodeableConcept getType() { 1737 if (this.type == null) 1738 if (Configuration.errorOnAutoCreate()) 1739 throw new Error("Attempt to auto-create GenomicStudyAnalysisInputComponent.type"); 1740 else if (Configuration.doAutoCreate()) 1741 this.type = new CodeableConcept(); // cc 1742 return this.type; 1743 } 1744 1745 public boolean hasType() { 1746 return this.type != null && !this.type.isEmpty(); 1747 } 1748 1749 /** 1750 * @param value {@link #type} (Type of input data, e.g., BAM, CRAM, or FASTA.) 1751 */ 1752 public GenomicStudyAnalysisInputComponent setType(CodeableConcept value) { 1753 this.type = value; 1754 return this; 1755 } 1756 1757 /** 1758 * @return {@link #generatedBy} (The analysis event or other GenomicStudy that generated this input file.) 1759 */ 1760 public DataType getGeneratedBy() { 1761 return this.generatedBy; 1762 } 1763 1764 /** 1765 * @return {@link #generatedBy} (The analysis event or other GenomicStudy that generated this input file.) 1766 */ 1767 public Identifier getGeneratedByIdentifier() throws FHIRException { 1768 if (this.generatedBy == null) 1769 this.generatedBy = new Identifier(); 1770 if (!(this.generatedBy instanceof Identifier)) 1771 throw new FHIRException("Type mismatch: the type Identifier was expected, but "+this.generatedBy.getClass().getName()+" was encountered"); 1772 return (Identifier) this.generatedBy; 1773 } 1774 1775 public boolean hasGeneratedByIdentifier() { 1776 return this != null && this.generatedBy instanceof Identifier; 1777 } 1778 1779 /** 1780 * @return {@link #generatedBy} (The analysis event or other GenomicStudy that generated this input file.) 1781 */ 1782 public Reference getGeneratedByReference() throws FHIRException { 1783 if (this.generatedBy == null) 1784 this.generatedBy = new Reference(); 1785 if (!(this.generatedBy instanceof Reference)) 1786 throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.generatedBy.getClass().getName()+" was encountered"); 1787 return (Reference) this.generatedBy; 1788 } 1789 1790 public boolean hasGeneratedByReference() { 1791 return this != null && this.generatedBy instanceof Reference; 1792 } 1793 1794 public boolean hasGeneratedBy() { 1795 return this.generatedBy != null && !this.generatedBy.isEmpty(); 1796 } 1797 1798 /** 1799 * @param value {@link #generatedBy} (The analysis event or other GenomicStudy that generated this input file.) 1800 */ 1801 public GenomicStudyAnalysisInputComponent setGeneratedBy(DataType value) { 1802 if (value != null && !(value instanceof Identifier || value instanceof Reference)) 1803 throw new FHIRException("Not the right type for GenomicStudy.analysis.input.generatedBy[x]: "+value.fhirType()); 1804 this.generatedBy = value; 1805 return this; 1806 } 1807 1808 protected void listChildren(List<Property> children) { 1809 super.listChildren(children); 1810 children.add(new Property("file", "Reference(DocumentReference)", "File containing input data.", 0, 1, file)); 1811 children.add(new Property("type", "CodeableConcept", "Type of input data, e.g., BAM, CRAM, or FASTA.", 0, 1, type)); 1812 children.add(new Property("generatedBy[x]", "Identifier|Reference(GenomicStudy)", "The analysis event or other GenomicStudy that generated this input file.", 0, 1, generatedBy)); 1813 } 1814 1815 @Override 1816 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1817 switch (_hash) { 1818 case 3143036: /*file*/ return new Property("file", "Reference(DocumentReference)", "File containing input data.", 0, 1, file); 1819 case 3575610: /*type*/ return new Property("type", "CodeableConcept", "Type of input data, e.g., BAM, CRAM, or FASTA.", 0, 1, type); 1820 case -1669563270: /*generatedBy[x]*/ return new Property("generatedBy[x]", "Identifier|Reference(GenomicStudy)", "The analysis event or other GenomicStudy that generated this input file.", 0, 1, generatedBy); 1821 case 886733382: /*generatedBy*/ return new Property("generatedBy[x]", "Identifier|Reference(GenomicStudy)", "The analysis event or other GenomicStudy that generated this input file.", 0, 1, generatedBy); 1822 case 913138575: /*generatedByIdentifier*/ return new Property("generatedBy[x]", "Identifier", "The analysis event or other GenomicStudy that generated this input file.", 0, 1, generatedBy); 1823 case -1397681243: /*generatedByReference*/ return new Property("generatedBy[x]", "Reference(GenomicStudy)", "The analysis event or other GenomicStudy that generated this input file.", 0, 1, generatedBy); 1824 default: return super.getNamedProperty(_hash, _name, _checkValid); 1825 } 1826 1827 } 1828 1829 @Override 1830 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1831 switch (hash) { 1832 case 3143036: /*file*/ return this.file == null ? new Base[0] : new Base[] {this.file}; // Reference 1833 case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept 1834 case 886733382: /*generatedBy*/ return this.generatedBy == null ? new Base[0] : new Base[] {this.generatedBy}; // DataType 1835 default: return super.getProperty(hash, name, checkValid); 1836 } 1837 1838 } 1839 1840 @Override 1841 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1842 switch (hash) { 1843 case 3143036: // file 1844 this.file = TypeConvertor.castToReference(value); // Reference 1845 return value; 1846 case 3575610: // type 1847 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1848 return value; 1849 case 886733382: // generatedBy 1850 this.generatedBy = TypeConvertor.castToType(value); // DataType 1851 return value; 1852 default: return super.setProperty(hash, name, value); 1853 } 1854 1855 } 1856 1857 @Override 1858 public Base setProperty(String name, Base value) throws FHIRException { 1859 if (name.equals("file")) { 1860 this.file = TypeConvertor.castToReference(value); // Reference 1861 } else if (name.equals("type")) { 1862 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1863 } else if (name.equals("generatedBy[x]")) { 1864 this.generatedBy = TypeConvertor.castToType(value); // DataType 1865 } else 1866 return super.setProperty(name, value); 1867 return value; 1868 } 1869 1870 @Override 1871 public void removeChild(String name, Base value) throws FHIRException { 1872 if (name.equals("file")) { 1873 this.file = null; 1874 } else if (name.equals("type")) { 1875 this.type = null; 1876 } else if (name.equals("generatedBy[x]")) { 1877 this.generatedBy = null; 1878 } else 1879 super.removeChild(name, value); 1880 1881 } 1882 1883 @Override 1884 public Base makeProperty(int hash, String name) throws FHIRException { 1885 switch (hash) { 1886 case 3143036: return getFile(); 1887 case 3575610: return getType(); 1888 case -1669563270: return getGeneratedBy(); 1889 case 886733382: return getGeneratedBy(); 1890 default: return super.makeProperty(hash, name); 1891 } 1892 1893 } 1894 1895 @Override 1896 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1897 switch (hash) { 1898 case 3143036: /*file*/ return new String[] {"Reference"}; 1899 case 3575610: /*type*/ return new String[] {"CodeableConcept"}; 1900 case 886733382: /*generatedBy*/ return new String[] {"Identifier", "Reference"}; 1901 default: return super.getTypesForProperty(hash, name); 1902 } 1903 1904 } 1905 1906 @Override 1907 public Base addChild(String name) throws FHIRException { 1908 if (name.equals("file")) { 1909 this.file = new Reference(); 1910 return this.file; 1911 } 1912 else if (name.equals("type")) { 1913 this.type = new CodeableConcept(); 1914 return this.type; 1915 } 1916 else if (name.equals("generatedByIdentifier")) { 1917 this.generatedBy = new Identifier(); 1918 return this.generatedBy; 1919 } 1920 else if (name.equals("generatedByReference")) { 1921 this.generatedBy = new Reference(); 1922 return this.generatedBy; 1923 } 1924 else 1925 return super.addChild(name); 1926 } 1927 1928 public GenomicStudyAnalysisInputComponent copy() { 1929 GenomicStudyAnalysisInputComponent dst = new GenomicStudyAnalysisInputComponent(); 1930 copyValues(dst); 1931 return dst; 1932 } 1933 1934 public void copyValues(GenomicStudyAnalysisInputComponent dst) { 1935 super.copyValues(dst); 1936 dst.file = file == null ? null : file.copy(); 1937 dst.type = type == null ? null : type.copy(); 1938 dst.generatedBy = generatedBy == null ? null : generatedBy.copy(); 1939 } 1940 1941 @Override 1942 public boolean equalsDeep(Base other_) { 1943 if (!super.equalsDeep(other_)) 1944 return false; 1945 if (!(other_ instanceof GenomicStudyAnalysisInputComponent)) 1946 return false; 1947 GenomicStudyAnalysisInputComponent o = (GenomicStudyAnalysisInputComponent) other_; 1948 return compareDeep(file, o.file, true) && compareDeep(type, o.type, true) && compareDeep(generatedBy, o.generatedBy, true) 1949 ; 1950 } 1951 1952 @Override 1953 public boolean equalsShallow(Base other_) { 1954 if (!super.equalsShallow(other_)) 1955 return false; 1956 if (!(other_ instanceof GenomicStudyAnalysisInputComponent)) 1957 return false; 1958 GenomicStudyAnalysisInputComponent o = (GenomicStudyAnalysisInputComponent) other_; 1959 return true; 1960 } 1961 1962 public boolean isEmpty() { 1963 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(file, type, generatedBy 1964 ); 1965 } 1966 1967 public String fhirType() { 1968 return "GenomicStudy.analysis.input"; 1969 1970 } 1971 1972 } 1973 1974 @Block() 1975 public static class GenomicStudyAnalysisOutputComponent extends BackboneElement implements IBaseBackboneElement { 1976 /** 1977 * File containing output data. 1978 */ 1979 @Child(name = "file", type = {DocumentReference.class}, order=1, min=0, max=1, modifier=false, summary=true) 1980 @Description(shortDefinition="File containing output data", formalDefinition="File containing output data." ) 1981 protected Reference file; 1982 1983 /** 1984 * Type of output data, e.g., VCF, MAF, or BAM. 1985 */ 1986 @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=true) 1987 @Description(shortDefinition="Type of output data (e.g., VCF, MAF, or BAM)", formalDefinition="Type of output data, e.g., VCF, MAF, or BAM." ) 1988 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-dataformat") 1989 protected CodeableConcept type; 1990 1991 private static final long serialVersionUID = -2075265800L; 1992 1993 /** 1994 * Constructor 1995 */ 1996 public GenomicStudyAnalysisOutputComponent() { 1997 super(); 1998 } 1999 2000 /** 2001 * @return {@link #file} (File containing output data.) 2002 */ 2003 public Reference getFile() { 2004 if (this.file == null) 2005 if (Configuration.errorOnAutoCreate()) 2006 throw new Error("Attempt to auto-create GenomicStudyAnalysisOutputComponent.file"); 2007 else if (Configuration.doAutoCreate()) 2008 this.file = new Reference(); // cc 2009 return this.file; 2010 } 2011 2012 public boolean hasFile() { 2013 return this.file != null && !this.file.isEmpty(); 2014 } 2015 2016 /** 2017 * @param value {@link #file} (File containing output data.) 2018 */ 2019 public GenomicStudyAnalysisOutputComponent setFile(Reference value) { 2020 this.file = value; 2021 return this; 2022 } 2023 2024 /** 2025 * @return {@link #type} (Type of output data, e.g., VCF, MAF, or BAM.) 2026 */ 2027 public CodeableConcept getType() { 2028 if (this.type == null) 2029 if (Configuration.errorOnAutoCreate()) 2030 throw new Error("Attempt to auto-create GenomicStudyAnalysisOutputComponent.type"); 2031 else if (Configuration.doAutoCreate()) 2032 this.type = new CodeableConcept(); // cc 2033 return this.type; 2034 } 2035 2036 public boolean hasType() { 2037 return this.type != null && !this.type.isEmpty(); 2038 } 2039 2040 /** 2041 * @param value {@link #type} (Type of output data, e.g., VCF, MAF, or BAM.) 2042 */ 2043 public GenomicStudyAnalysisOutputComponent setType(CodeableConcept value) { 2044 this.type = value; 2045 return this; 2046 } 2047 2048 protected void listChildren(List<Property> children) { 2049 super.listChildren(children); 2050 children.add(new Property("file", "Reference(DocumentReference)", "File containing output data.", 0, 1, file)); 2051 children.add(new Property("type", "CodeableConcept", "Type of output data, e.g., VCF, MAF, or BAM.", 0, 1, type)); 2052 } 2053 2054 @Override 2055 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2056 switch (_hash) { 2057 case 3143036: /*file*/ return new Property("file", "Reference(DocumentReference)", "File containing output data.", 0, 1, file); 2058 case 3575610: /*type*/ return new Property("type", "CodeableConcept", "Type of output data, e.g., VCF, MAF, or BAM.", 0, 1, type); 2059 default: return super.getNamedProperty(_hash, _name, _checkValid); 2060 } 2061 2062 } 2063 2064 @Override 2065 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2066 switch (hash) { 2067 case 3143036: /*file*/ return this.file == null ? new Base[0] : new Base[] {this.file}; // Reference 2068 case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept 2069 default: return super.getProperty(hash, name, checkValid); 2070 } 2071 2072 } 2073 2074 @Override 2075 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2076 switch (hash) { 2077 case 3143036: // file 2078 this.file = TypeConvertor.castToReference(value); // Reference 2079 return value; 2080 case 3575610: // type 2081 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2082 return value; 2083 default: return super.setProperty(hash, name, value); 2084 } 2085 2086 } 2087 2088 @Override 2089 public Base setProperty(String name, Base value) throws FHIRException { 2090 if (name.equals("file")) { 2091 this.file = TypeConvertor.castToReference(value); // Reference 2092 } else if (name.equals("type")) { 2093 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2094 } else 2095 return super.setProperty(name, value); 2096 return value; 2097 } 2098 2099 @Override 2100 public void removeChild(String name, Base value) throws FHIRException { 2101 if (name.equals("file")) { 2102 this.file = null; 2103 } else if (name.equals("type")) { 2104 this.type = null; 2105 } else 2106 super.removeChild(name, value); 2107 2108 } 2109 2110 @Override 2111 public Base makeProperty(int hash, String name) throws FHIRException { 2112 switch (hash) { 2113 case 3143036: return getFile(); 2114 case 3575610: return getType(); 2115 default: return super.makeProperty(hash, name); 2116 } 2117 2118 } 2119 2120 @Override 2121 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2122 switch (hash) { 2123 case 3143036: /*file*/ return new String[] {"Reference"}; 2124 case 3575610: /*type*/ return new String[] {"CodeableConcept"}; 2125 default: return super.getTypesForProperty(hash, name); 2126 } 2127 2128 } 2129 2130 @Override 2131 public Base addChild(String name) throws FHIRException { 2132 if (name.equals("file")) { 2133 this.file = new Reference(); 2134 return this.file; 2135 } 2136 else if (name.equals("type")) { 2137 this.type = new CodeableConcept(); 2138 return this.type; 2139 } 2140 else 2141 return super.addChild(name); 2142 } 2143 2144 public GenomicStudyAnalysisOutputComponent copy() { 2145 GenomicStudyAnalysisOutputComponent dst = new GenomicStudyAnalysisOutputComponent(); 2146 copyValues(dst); 2147 return dst; 2148 } 2149 2150 public void copyValues(GenomicStudyAnalysisOutputComponent dst) { 2151 super.copyValues(dst); 2152 dst.file = file == null ? null : file.copy(); 2153 dst.type = type == null ? null : type.copy(); 2154 } 2155 2156 @Override 2157 public boolean equalsDeep(Base other_) { 2158 if (!super.equalsDeep(other_)) 2159 return false; 2160 if (!(other_ instanceof GenomicStudyAnalysisOutputComponent)) 2161 return false; 2162 GenomicStudyAnalysisOutputComponent o = (GenomicStudyAnalysisOutputComponent) other_; 2163 return compareDeep(file, o.file, true) && compareDeep(type, o.type, true); 2164 } 2165 2166 @Override 2167 public boolean equalsShallow(Base other_) { 2168 if (!super.equalsShallow(other_)) 2169 return false; 2170 if (!(other_ instanceof GenomicStudyAnalysisOutputComponent)) 2171 return false; 2172 GenomicStudyAnalysisOutputComponent o = (GenomicStudyAnalysisOutputComponent) other_; 2173 return true; 2174 } 2175 2176 public boolean isEmpty() { 2177 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(file, type); 2178 } 2179 2180 public String fhirType() { 2181 return "GenomicStudy.analysis.output"; 2182 2183 } 2184 2185 } 2186 2187 @Block() 2188 public static class GenomicStudyAnalysisPerformerComponent extends BackboneElement implements IBaseBackboneElement { 2189 /** 2190 * The organization, healthcare professional, or others who participated in performing this analysis. 2191 */ 2192 @Child(name = "actor", type = {Practitioner.class, PractitionerRole.class, Organization.class, Device.class}, order=1, min=0, max=1, modifier=false, summary=false) 2193 @Description(shortDefinition="The organization, healthcare professional, or others who participated in performing this analysis", formalDefinition="The organization, healthcare professional, or others who participated in performing this analysis." ) 2194 protected Reference actor; 2195 2196 /** 2197 * Role of the actor for this analysis. 2198 */ 2199 @Child(name = "role", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false) 2200 @Description(shortDefinition="Role of the actor for this analysis", formalDefinition="Role of the actor for this analysis." ) 2201 protected CodeableConcept role; 2202 2203 private static final long serialVersionUID = 827444743L; 2204 2205 /** 2206 * Constructor 2207 */ 2208 public GenomicStudyAnalysisPerformerComponent() { 2209 super(); 2210 } 2211 2212 /** 2213 * @return {@link #actor} (The organization, healthcare professional, or others who participated in performing this analysis.) 2214 */ 2215 public Reference getActor() { 2216 if (this.actor == null) 2217 if (Configuration.errorOnAutoCreate()) 2218 throw new Error("Attempt to auto-create GenomicStudyAnalysisPerformerComponent.actor"); 2219 else if (Configuration.doAutoCreate()) 2220 this.actor = new Reference(); // cc 2221 return this.actor; 2222 } 2223 2224 public boolean hasActor() { 2225 return this.actor != null && !this.actor.isEmpty(); 2226 } 2227 2228 /** 2229 * @param value {@link #actor} (The organization, healthcare professional, or others who participated in performing this analysis.) 2230 */ 2231 public GenomicStudyAnalysisPerformerComponent setActor(Reference value) { 2232 this.actor = value; 2233 return this; 2234 } 2235 2236 /** 2237 * @return {@link #role} (Role of the actor for this analysis.) 2238 */ 2239 public CodeableConcept getRole() { 2240 if (this.role == null) 2241 if (Configuration.errorOnAutoCreate()) 2242 throw new Error("Attempt to auto-create GenomicStudyAnalysisPerformerComponent.role"); 2243 else if (Configuration.doAutoCreate()) 2244 this.role = new CodeableConcept(); // cc 2245 return this.role; 2246 } 2247 2248 public boolean hasRole() { 2249 return this.role != null && !this.role.isEmpty(); 2250 } 2251 2252 /** 2253 * @param value {@link #role} (Role of the actor for this analysis.) 2254 */ 2255 public GenomicStudyAnalysisPerformerComponent setRole(CodeableConcept value) { 2256 this.role = value; 2257 return this; 2258 } 2259 2260 protected void listChildren(List<Property> children) { 2261 super.listChildren(children); 2262 children.add(new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Device)", "The organization, healthcare professional, or others who participated in performing this analysis.", 0, 1, actor)); 2263 children.add(new Property("role", "CodeableConcept", "Role of the actor for this analysis.", 0, 1, role)); 2264 } 2265 2266 @Override 2267 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2268 switch (_hash) { 2269 case 92645877: /*actor*/ return new Property("actor", "Reference(Practitioner|PractitionerRole|Organization|Device)", "The organization, healthcare professional, or others who participated in performing this analysis.", 0, 1, actor); 2270 case 3506294: /*role*/ return new Property("role", "CodeableConcept", "Role of the actor for this analysis.", 0, 1, role); 2271 default: return super.getNamedProperty(_hash, _name, _checkValid); 2272 } 2273 2274 } 2275 2276 @Override 2277 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2278 switch (hash) { 2279 case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // Reference 2280 case 3506294: /*role*/ return this.role == null ? new Base[0] : new Base[] {this.role}; // CodeableConcept 2281 default: return super.getProperty(hash, name, checkValid); 2282 } 2283 2284 } 2285 2286 @Override 2287 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2288 switch (hash) { 2289 case 92645877: // actor 2290 this.actor = TypeConvertor.castToReference(value); // Reference 2291 return value; 2292 case 3506294: // role 2293 this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2294 return value; 2295 default: return super.setProperty(hash, name, value); 2296 } 2297 2298 } 2299 2300 @Override 2301 public Base setProperty(String name, Base value) throws FHIRException { 2302 if (name.equals("actor")) { 2303 this.actor = TypeConvertor.castToReference(value); // Reference 2304 } else if (name.equals("role")) { 2305 this.role = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2306 } else 2307 return super.setProperty(name, value); 2308 return value; 2309 } 2310 2311 @Override 2312 public void removeChild(String name, Base value) throws FHIRException { 2313 if (name.equals("actor")) { 2314 this.actor = null; 2315 } else if (name.equals("role")) { 2316 this.role = null; 2317 } else 2318 super.removeChild(name, value); 2319 2320 } 2321 2322 @Override 2323 public Base makeProperty(int hash, String name) throws FHIRException { 2324 switch (hash) { 2325 case 92645877: return getActor(); 2326 case 3506294: return getRole(); 2327 default: return super.makeProperty(hash, name); 2328 } 2329 2330 } 2331 2332 @Override 2333 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2334 switch (hash) { 2335 case 92645877: /*actor*/ return new String[] {"Reference"}; 2336 case 3506294: /*role*/ return new String[] {"CodeableConcept"}; 2337 default: return super.getTypesForProperty(hash, name); 2338 } 2339 2340 } 2341 2342 @Override 2343 public Base addChild(String name) throws FHIRException { 2344 if (name.equals("actor")) { 2345 this.actor = new Reference(); 2346 return this.actor; 2347 } 2348 else if (name.equals("role")) { 2349 this.role = new CodeableConcept(); 2350 return this.role; 2351 } 2352 else 2353 return super.addChild(name); 2354 } 2355 2356 public GenomicStudyAnalysisPerformerComponent copy() { 2357 GenomicStudyAnalysisPerformerComponent dst = new GenomicStudyAnalysisPerformerComponent(); 2358 copyValues(dst); 2359 return dst; 2360 } 2361 2362 public void copyValues(GenomicStudyAnalysisPerformerComponent dst) { 2363 super.copyValues(dst); 2364 dst.actor = actor == null ? null : actor.copy(); 2365 dst.role = role == null ? null : role.copy(); 2366 } 2367 2368 @Override 2369 public boolean equalsDeep(Base other_) { 2370 if (!super.equalsDeep(other_)) 2371 return false; 2372 if (!(other_ instanceof GenomicStudyAnalysisPerformerComponent)) 2373 return false; 2374 GenomicStudyAnalysisPerformerComponent o = (GenomicStudyAnalysisPerformerComponent) other_; 2375 return compareDeep(actor, o.actor, true) && compareDeep(role, o.role, true); 2376 } 2377 2378 @Override 2379 public boolean equalsShallow(Base other_) { 2380 if (!super.equalsShallow(other_)) 2381 return false; 2382 if (!(other_ instanceof GenomicStudyAnalysisPerformerComponent)) 2383 return false; 2384 GenomicStudyAnalysisPerformerComponent o = (GenomicStudyAnalysisPerformerComponent) other_; 2385 return true; 2386 } 2387 2388 public boolean isEmpty() { 2389 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(actor, role); 2390 } 2391 2392 public String fhirType() { 2393 return "GenomicStudy.analysis.performer"; 2394 2395 } 2396 2397 } 2398 2399 @Block() 2400 public static class GenomicStudyAnalysisDeviceComponent extends BackboneElement implements IBaseBackboneElement { 2401 /** 2402 * Device used for the analysis. 2403 */ 2404 @Child(name = "device", type = {Device.class}, order=1, min=0, max=1, modifier=false, summary=false) 2405 @Description(shortDefinition="Device used for the analysis", formalDefinition="Device used for the analysis." ) 2406 protected Reference device; 2407 2408 /** 2409 * Specific function for the device used for the analysis. 2410 */ 2411 @Child(name = "function", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false) 2412 @Description(shortDefinition="Specific function for the device used for the analysis", formalDefinition="Specific function for the device used for the analysis." ) 2413 protected CodeableConcept function; 2414 2415 private static final long serialVersionUID = 1643933108L; 2416 2417 /** 2418 * Constructor 2419 */ 2420 public GenomicStudyAnalysisDeviceComponent() { 2421 super(); 2422 } 2423 2424 /** 2425 * @return {@link #device} (Device used for the analysis.) 2426 */ 2427 public Reference getDevice() { 2428 if (this.device == null) 2429 if (Configuration.errorOnAutoCreate()) 2430 throw new Error("Attempt to auto-create GenomicStudyAnalysisDeviceComponent.device"); 2431 else if (Configuration.doAutoCreate()) 2432 this.device = new Reference(); // cc 2433 return this.device; 2434 } 2435 2436 public boolean hasDevice() { 2437 return this.device != null && !this.device.isEmpty(); 2438 } 2439 2440 /** 2441 * @param value {@link #device} (Device used for the analysis.) 2442 */ 2443 public GenomicStudyAnalysisDeviceComponent setDevice(Reference value) { 2444 this.device = value; 2445 return this; 2446 } 2447 2448 /** 2449 * @return {@link #function} (Specific function for the device used for the analysis.) 2450 */ 2451 public CodeableConcept getFunction() { 2452 if (this.function == null) 2453 if (Configuration.errorOnAutoCreate()) 2454 throw new Error("Attempt to auto-create GenomicStudyAnalysisDeviceComponent.function"); 2455 else if (Configuration.doAutoCreate()) 2456 this.function = new CodeableConcept(); // cc 2457 return this.function; 2458 } 2459 2460 public boolean hasFunction() { 2461 return this.function != null && !this.function.isEmpty(); 2462 } 2463 2464 /** 2465 * @param value {@link #function} (Specific function for the device used for the analysis.) 2466 */ 2467 public GenomicStudyAnalysisDeviceComponent setFunction(CodeableConcept value) { 2468 this.function = value; 2469 return this; 2470 } 2471 2472 protected void listChildren(List<Property> children) { 2473 super.listChildren(children); 2474 children.add(new Property("device", "Reference(Device)", "Device used for the analysis.", 0, 1, device)); 2475 children.add(new Property("function", "CodeableConcept", "Specific function for the device used for the analysis.", 0, 1, function)); 2476 } 2477 2478 @Override 2479 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 2480 switch (_hash) { 2481 case -1335157162: /*device*/ return new Property("device", "Reference(Device)", "Device used for the analysis.", 0, 1, device); 2482 case 1380938712: /*function*/ return new Property("function", "CodeableConcept", "Specific function for the device used for the analysis.", 0, 1, function); 2483 default: return super.getNamedProperty(_hash, _name, _checkValid); 2484 } 2485 2486 } 2487 2488 @Override 2489 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 2490 switch (hash) { 2491 case -1335157162: /*device*/ return this.device == null ? new Base[0] : new Base[] {this.device}; // Reference 2492 case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept 2493 default: return super.getProperty(hash, name, checkValid); 2494 } 2495 2496 } 2497 2498 @Override 2499 public Base setProperty(int hash, String name, Base value) throws FHIRException { 2500 switch (hash) { 2501 case -1335157162: // device 2502 this.device = TypeConvertor.castToReference(value); // Reference 2503 return value; 2504 case 1380938712: // function 2505 this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2506 return value; 2507 default: return super.setProperty(hash, name, value); 2508 } 2509 2510 } 2511 2512 @Override 2513 public Base setProperty(String name, Base value) throws FHIRException { 2514 if (name.equals("device")) { 2515 this.device = TypeConvertor.castToReference(value); // Reference 2516 } else if (name.equals("function")) { 2517 this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 2518 } else 2519 return super.setProperty(name, value); 2520 return value; 2521 } 2522 2523 @Override 2524 public void removeChild(String name, Base value) throws FHIRException { 2525 if (name.equals("device")) { 2526 this.device = null; 2527 } else if (name.equals("function")) { 2528 this.function = null; 2529 } else 2530 super.removeChild(name, value); 2531 2532 } 2533 2534 @Override 2535 public Base makeProperty(int hash, String name) throws FHIRException { 2536 switch (hash) { 2537 case -1335157162: return getDevice(); 2538 case 1380938712: return getFunction(); 2539 default: return super.makeProperty(hash, name); 2540 } 2541 2542 } 2543 2544 @Override 2545 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 2546 switch (hash) { 2547 case -1335157162: /*device*/ return new String[] {"Reference"}; 2548 case 1380938712: /*function*/ return new String[] {"CodeableConcept"}; 2549 default: return super.getTypesForProperty(hash, name); 2550 } 2551 2552 } 2553 2554 @Override 2555 public Base addChild(String name) throws FHIRException { 2556 if (name.equals("device")) { 2557 this.device = new Reference(); 2558 return this.device; 2559 } 2560 else if (name.equals("function")) { 2561 this.function = new CodeableConcept(); 2562 return this.function; 2563 } 2564 else 2565 return super.addChild(name); 2566 } 2567 2568 public GenomicStudyAnalysisDeviceComponent copy() { 2569 GenomicStudyAnalysisDeviceComponent dst = new GenomicStudyAnalysisDeviceComponent(); 2570 copyValues(dst); 2571 return dst; 2572 } 2573 2574 public void copyValues(GenomicStudyAnalysisDeviceComponent dst) { 2575 super.copyValues(dst); 2576 dst.device = device == null ? null : device.copy(); 2577 dst.function = function == null ? null : function.copy(); 2578 } 2579 2580 @Override 2581 public boolean equalsDeep(Base other_) { 2582 if (!super.equalsDeep(other_)) 2583 return false; 2584 if (!(other_ instanceof GenomicStudyAnalysisDeviceComponent)) 2585 return false; 2586 GenomicStudyAnalysisDeviceComponent o = (GenomicStudyAnalysisDeviceComponent) other_; 2587 return compareDeep(device, o.device, true) && compareDeep(function, o.function, true); 2588 } 2589 2590 @Override 2591 public boolean equalsShallow(Base other_) { 2592 if (!super.equalsShallow(other_)) 2593 return false; 2594 if (!(other_ instanceof GenomicStudyAnalysisDeviceComponent)) 2595 return false; 2596 GenomicStudyAnalysisDeviceComponent o = (GenomicStudyAnalysisDeviceComponent) other_; 2597 return true; 2598 } 2599 2600 public boolean isEmpty() { 2601 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(device, function); 2602 } 2603 2604 public String fhirType() { 2605 return "GenomicStudy.analysis.device"; 2606 2607 } 2608 2609 } 2610 2611 /** 2612 * Identifiers for this genomic study. 2613 */ 2614 @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 2615 @Description(shortDefinition="Identifiers for this genomic study", formalDefinition="Identifiers for this genomic study." ) 2616 protected List<Identifier> identifier; 2617 2618 /** 2619 * The status of the genomic study. 2620 */ 2621 @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true) 2622 @Description(shortDefinition="registered | available | cancelled | entered-in-error | unknown", formalDefinition="The status of the genomic study." ) 2623 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-status") 2624 protected Enumeration<GenomicStudyStatus> status; 2625 2626 /** 2627 * The type of the study, e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling. 2628 */ 2629 @Child(name = "type", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 2630 @Description(shortDefinition="The type of the study (e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling)", formalDefinition="The type of the study, e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling." ) 2631 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/genomicstudy-type") 2632 protected List<CodeableConcept> type; 2633 2634 /** 2635 * The primary subject of the genomic study. 2636 */ 2637 @Child(name = "subject", type = {Patient.class, Group.class, Substance.class, BiologicallyDerivedProduct.class, NutritionProduct.class}, order=3, min=1, max=1, modifier=false, summary=true) 2638 @Description(shortDefinition="The primary subject of the genomic study", formalDefinition="The primary subject of the genomic study." ) 2639 protected Reference subject; 2640 2641 /** 2642 * The healthcare event with which this genomics study is associated. 2643 */ 2644 @Child(name = "encounter", type = {Encounter.class}, order=4, min=0, max=1, modifier=false, summary=true) 2645 @Description(shortDefinition="The healthcare event with which this genomics study is associated", formalDefinition="The healthcare event with which this genomics study is associated." ) 2646 protected Reference encounter; 2647 2648 /** 2649 * When the genomic study was started. 2650 */ 2651 @Child(name = "startDate", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=false) 2652 @Description(shortDefinition="When the genomic study was started", formalDefinition="When the genomic study was started." ) 2653 protected DateTimeType startDate; 2654 2655 /** 2656 * Event resources that the genomic study is based on. 2657 */ 2658 @Child(name = "basedOn", type = {ServiceRequest.class, Task.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 2659 @Description(shortDefinition="Event resources that the genomic study is based on", formalDefinition="Event resources that the genomic study is based on." ) 2660 protected List<Reference> basedOn; 2661 2662 /** 2663 * Healthcare professional who requested or referred the genomic study. 2664 */ 2665 @Child(name = "referrer", type = {Practitioner.class, PractitionerRole.class}, order=7, min=0, max=1, modifier=false, summary=false) 2666 @Description(shortDefinition="Healthcare professional who requested or referred the genomic study", formalDefinition="Healthcare professional who requested or referred the genomic study." ) 2667 protected Reference referrer; 2668 2669 /** 2670 * Healthcare professionals who interpreted the genomic study. 2671 */ 2672 @Child(name = "interpreter", type = {Practitioner.class, PractitionerRole.class}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 2673 @Description(shortDefinition="Healthcare professionals who interpreted the genomic study", formalDefinition="Healthcare professionals who interpreted the genomic study." ) 2674 protected List<Reference> interpreter; 2675 2676 /** 2677 * Why the genomic study was performed. 2678 */ 2679 @Child(name = "reason", type = {CodeableReference.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 2680 @Description(shortDefinition="Why the genomic study was performed", formalDefinition="Why the genomic study was performed." ) 2681 protected List<CodeableReference> reason; 2682 2683 /** 2684 * The defined protocol that describes the study. 2685 */ 2686 @Child(name = "instantiatesCanonical", type = {CanonicalType.class}, order=10, min=0, max=1, modifier=false, summary=false) 2687 @Description(shortDefinition="The defined protocol that describes the study", formalDefinition="The defined protocol that describes the study." ) 2688 protected CanonicalType instantiatesCanonical; 2689 2690 /** 2691 * The URL pointing to an externally maintained protocol that describes the study. 2692 */ 2693 @Child(name = "instantiatesUri", type = {UriType.class}, order=11, min=0, max=1, modifier=false, summary=false) 2694 @Description(shortDefinition="The URL pointing to an externally maintained protocol that describes the study", formalDefinition="The URL pointing to an externally maintained protocol that describes the study." ) 2695 protected UriType instantiatesUri; 2696 2697 /** 2698 * Comments related to the genomic study. 2699 */ 2700 @Child(name = "note", type = {Annotation.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 2701 @Description(shortDefinition="Comments related to the genomic study", formalDefinition="Comments related to the genomic study." ) 2702 protected List<Annotation> note; 2703 2704 /** 2705 * Description of the genomic study. 2706 */ 2707 @Child(name = "description", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false) 2708 @Description(shortDefinition="Description of the genomic study", formalDefinition="Description of the genomic study." ) 2709 protected MarkdownType description; 2710 2711 /** 2712 * The details about a specific analysis that was performed in this GenomicStudy. 2713 */ 2714 @Child(name = "analysis", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false) 2715 @Description(shortDefinition="Genomic Analysis Event", formalDefinition="The details about a specific analysis that was performed in this GenomicStudy." ) 2716 protected List<GenomicStudyAnalysisComponent> analysis; 2717 2718 private static final long serialVersionUID = 644053021L; 2719 2720 /** 2721 * Constructor 2722 */ 2723 public GenomicStudy() { 2724 super(); 2725 } 2726 2727 /** 2728 * Constructor 2729 */ 2730 public GenomicStudy(GenomicStudyStatus status, Reference subject) { 2731 super(); 2732 this.setStatus(status); 2733 this.setSubject(subject); 2734 } 2735 2736 /** 2737 * @return {@link #identifier} (Identifiers for this genomic study.) 2738 */ 2739 public List<Identifier> getIdentifier() { 2740 if (this.identifier == null) 2741 this.identifier = new ArrayList<Identifier>(); 2742 return this.identifier; 2743 } 2744 2745 /** 2746 * @return Returns a reference to <code>this</code> for easy method chaining 2747 */ 2748 public GenomicStudy setIdentifier(List<Identifier> theIdentifier) { 2749 this.identifier = theIdentifier; 2750 return this; 2751 } 2752 2753 public boolean hasIdentifier() { 2754 if (this.identifier == null) 2755 return false; 2756 for (Identifier item : this.identifier) 2757 if (!item.isEmpty()) 2758 return true; 2759 return false; 2760 } 2761 2762 public Identifier addIdentifier() { //3 2763 Identifier t = new Identifier(); 2764 if (this.identifier == null) 2765 this.identifier = new ArrayList<Identifier>(); 2766 this.identifier.add(t); 2767 return t; 2768 } 2769 2770 public GenomicStudy addIdentifier(Identifier t) { //3 2771 if (t == null) 2772 return this; 2773 if (this.identifier == null) 2774 this.identifier = new ArrayList<Identifier>(); 2775 this.identifier.add(t); 2776 return this; 2777 } 2778 2779 /** 2780 * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3} 2781 */ 2782 public Identifier getIdentifierFirstRep() { 2783 if (getIdentifier().isEmpty()) { 2784 addIdentifier(); 2785 } 2786 return getIdentifier().get(0); 2787 } 2788 2789 /** 2790 * @return {@link #status} (The status of the genomic study.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value 2791 */ 2792 public Enumeration<GenomicStudyStatus> getStatusElement() { 2793 if (this.status == null) 2794 if (Configuration.errorOnAutoCreate()) 2795 throw new Error("Attempt to auto-create GenomicStudy.status"); 2796 else if (Configuration.doAutoCreate()) 2797 this.status = new Enumeration<GenomicStudyStatus>(new GenomicStudyStatusEnumFactory()); // bb 2798 return this.status; 2799 } 2800 2801 public boolean hasStatusElement() { 2802 return this.status != null && !this.status.isEmpty(); 2803 } 2804 2805 public boolean hasStatus() { 2806 return this.status != null && !this.status.isEmpty(); 2807 } 2808 2809 /** 2810 * @param value {@link #status} (The status of the genomic study.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value 2811 */ 2812 public GenomicStudy setStatusElement(Enumeration<GenomicStudyStatus> value) { 2813 this.status = value; 2814 return this; 2815 } 2816 2817 /** 2818 * @return The status of the genomic study. 2819 */ 2820 public GenomicStudyStatus getStatus() { 2821 return this.status == null ? null : this.status.getValue(); 2822 } 2823 2824 /** 2825 * @param value The status of the genomic study. 2826 */ 2827 public GenomicStudy setStatus(GenomicStudyStatus value) { 2828 if (this.status == null) 2829 this.status = new Enumeration<GenomicStudyStatus>(new GenomicStudyStatusEnumFactory()); 2830 this.status.setValue(value); 2831 return this; 2832 } 2833 2834 /** 2835 * @return {@link #type} (The type of the study, e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling.) 2836 */ 2837 public List<CodeableConcept> getType() { 2838 if (this.type == null) 2839 this.type = new ArrayList<CodeableConcept>(); 2840 return this.type; 2841 } 2842 2843 /** 2844 * @return Returns a reference to <code>this</code> for easy method chaining 2845 */ 2846 public GenomicStudy setType(List<CodeableConcept> theType) { 2847 this.type = theType; 2848 return this; 2849 } 2850 2851 public boolean hasType() { 2852 if (this.type == null) 2853 return false; 2854 for (CodeableConcept item : this.type) 2855 if (!item.isEmpty()) 2856 return true; 2857 return false; 2858 } 2859 2860 public CodeableConcept addType() { //3 2861 CodeableConcept t = new CodeableConcept(); 2862 if (this.type == null) 2863 this.type = new ArrayList<CodeableConcept>(); 2864 this.type.add(t); 2865 return t; 2866 } 2867 2868 public GenomicStudy addType(CodeableConcept t) { //3 2869 if (t == null) 2870 return this; 2871 if (this.type == null) 2872 this.type = new ArrayList<CodeableConcept>(); 2873 this.type.add(t); 2874 return this; 2875 } 2876 2877 /** 2878 * @return The first repetition of repeating field {@link #type}, creating it if it does not already exist {3} 2879 */ 2880 public CodeableConcept getTypeFirstRep() { 2881 if (getType().isEmpty()) { 2882 addType(); 2883 } 2884 return getType().get(0); 2885 } 2886 2887 /** 2888 * @return {@link #subject} (The primary subject of the genomic study.) 2889 */ 2890 public Reference getSubject() { 2891 if (this.subject == null) 2892 if (Configuration.errorOnAutoCreate()) 2893 throw new Error("Attempt to auto-create GenomicStudy.subject"); 2894 else if (Configuration.doAutoCreate()) 2895 this.subject = new Reference(); // cc 2896 return this.subject; 2897 } 2898 2899 public boolean hasSubject() { 2900 return this.subject != null && !this.subject.isEmpty(); 2901 } 2902 2903 /** 2904 * @param value {@link #subject} (The primary subject of the genomic study.) 2905 */ 2906 public GenomicStudy setSubject(Reference value) { 2907 this.subject = value; 2908 return this; 2909 } 2910 2911 /** 2912 * @return {@link #encounter} (The healthcare event with which this genomics study is associated.) 2913 */ 2914 public Reference getEncounter() { 2915 if (this.encounter == null) 2916 if (Configuration.errorOnAutoCreate()) 2917 throw new Error("Attempt to auto-create GenomicStudy.encounter"); 2918 else if (Configuration.doAutoCreate()) 2919 this.encounter = new Reference(); // cc 2920 return this.encounter; 2921 } 2922 2923 public boolean hasEncounter() { 2924 return this.encounter != null && !this.encounter.isEmpty(); 2925 } 2926 2927 /** 2928 * @param value {@link #encounter} (The healthcare event with which this genomics study is associated.) 2929 */ 2930 public GenomicStudy setEncounter(Reference value) { 2931 this.encounter = value; 2932 return this; 2933 } 2934 2935 /** 2936 * @return {@link #startDate} (When the genomic study was started.). This is the underlying object with id, value and extensions. The accessor "getStartDate" gives direct access to the value 2937 */ 2938 public DateTimeType getStartDateElement() { 2939 if (this.startDate == null) 2940 if (Configuration.errorOnAutoCreate()) 2941 throw new Error("Attempt to auto-create GenomicStudy.startDate"); 2942 else if (Configuration.doAutoCreate()) 2943 this.startDate = new DateTimeType(); // bb 2944 return this.startDate; 2945 } 2946 2947 public boolean hasStartDateElement() { 2948 return this.startDate != null && !this.startDate.isEmpty(); 2949 } 2950 2951 public boolean hasStartDate() { 2952 return this.startDate != null && !this.startDate.isEmpty(); 2953 } 2954 2955 /** 2956 * @param value {@link #startDate} (When the genomic study was started.). This is the underlying object with id, value and extensions. The accessor "getStartDate" gives direct access to the value 2957 */ 2958 public GenomicStudy setStartDateElement(DateTimeType value) { 2959 this.startDate = value; 2960 return this; 2961 } 2962 2963 /** 2964 * @return When the genomic study was started. 2965 */ 2966 public Date getStartDate() { 2967 return this.startDate == null ? null : this.startDate.getValue(); 2968 } 2969 2970 /** 2971 * @param value When the genomic study was started. 2972 */ 2973 public GenomicStudy setStartDate(Date value) { 2974 if (value == null) 2975 this.startDate = null; 2976 else { 2977 if (this.startDate == null) 2978 this.startDate = new DateTimeType(); 2979 this.startDate.setValue(value); 2980 } 2981 return this; 2982 } 2983 2984 /** 2985 * @return {@link #basedOn} (Event resources that the genomic study is based on.) 2986 */ 2987 public List<Reference> getBasedOn() { 2988 if (this.basedOn == null) 2989 this.basedOn = new ArrayList<Reference>(); 2990 return this.basedOn; 2991 } 2992 2993 /** 2994 * @return Returns a reference to <code>this</code> for easy method chaining 2995 */ 2996 public GenomicStudy setBasedOn(List<Reference> theBasedOn) { 2997 this.basedOn = theBasedOn; 2998 return this; 2999 } 3000 3001 public boolean hasBasedOn() { 3002 if (this.basedOn == null) 3003 return false; 3004 for (Reference item : this.basedOn) 3005 if (!item.isEmpty()) 3006 return true; 3007 return false; 3008 } 3009 3010 public Reference addBasedOn() { //3 3011 Reference t = new Reference(); 3012 if (this.basedOn == null) 3013 this.basedOn = new ArrayList<Reference>(); 3014 this.basedOn.add(t); 3015 return t; 3016 } 3017 3018 public GenomicStudy addBasedOn(Reference t) { //3 3019 if (t == null) 3020 return this; 3021 if (this.basedOn == null) 3022 this.basedOn = new ArrayList<Reference>(); 3023 this.basedOn.add(t); 3024 return this; 3025 } 3026 3027 /** 3028 * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3} 3029 */ 3030 public Reference getBasedOnFirstRep() { 3031 if (getBasedOn().isEmpty()) { 3032 addBasedOn(); 3033 } 3034 return getBasedOn().get(0); 3035 } 3036 3037 /** 3038 * @return {@link #referrer} (Healthcare professional who requested or referred the genomic study.) 3039 */ 3040 public Reference getReferrer() { 3041 if (this.referrer == null) 3042 if (Configuration.errorOnAutoCreate()) 3043 throw new Error("Attempt to auto-create GenomicStudy.referrer"); 3044 else if (Configuration.doAutoCreate()) 3045 this.referrer = new Reference(); // cc 3046 return this.referrer; 3047 } 3048 3049 public boolean hasReferrer() { 3050 return this.referrer != null && !this.referrer.isEmpty(); 3051 } 3052 3053 /** 3054 * @param value {@link #referrer} (Healthcare professional who requested or referred the genomic study.) 3055 */ 3056 public GenomicStudy setReferrer(Reference value) { 3057 this.referrer = value; 3058 return this; 3059 } 3060 3061 /** 3062 * @return {@link #interpreter} (Healthcare professionals who interpreted the genomic study.) 3063 */ 3064 public List<Reference> getInterpreter() { 3065 if (this.interpreter == null) 3066 this.interpreter = new ArrayList<Reference>(); 3067 return this.interpreter; 3068 } 3069 3070 /** 3071 * @return Returns a reference to <code>this</code> for easy method chaining 3072 */ 3073 public GenomicStudy setInterpreter(List<Reference> theInterpreter) { 3074 this.interpreter = theInterpreter; 3075 return this; 3076 } 3077 3078 public boolean hasInterpreter() { 3079 if (this.interpreter == null) 3080 return false; 3081 for (Reference item : this.interpreter) 3082 if (!item.isEmpty()) 3083 return true; 3084 return false; 3085 } 3086 3087 public Reference addInterpreter() { //3 3088 Reference t = new Reference(); 3089 if (this.interpreter == null) 3090 this.interpreter = new ArrayList<Reference>(); 3091 this.interpreter.add(t); 3092 return t; 3093 } 3094 3095 public GenomicStudy addInterpreter(Reference t) { //3 3096 if (t == null) 3097 return this; 3098 if (this.interpreter == null) 3099 this.interpreter = new ArrayList<Reference>(); 3100 this.interpreter.add(t); 3101 return this; 3102 } 3103 3104 /** 3105 * @return The first repetition of repeating field {@link #interpreter}, creating it if it does not already exist {3} 3106 */ 3107 public Reference getInterpreterFirstRep() { 3108 if (getInterpreter().isEmpty()) { 3109 addInterpreter(); 3110 } 3111 return getInterpreter().get(0); 3112 } 3113 3114 /** 3115 * @return {@link #reason} (Why the genomic study was performed.) 3116 */ 3117 public List<CodeableReference> getReason() { 3118 if (this.reason == null) 3119 this.reason = new ArrayList<CodeableReference>(); 3120 return this.reason; 3121 } 3122 3123 /** 3124 * @return Returns a reference to <code>this</code> for easy method chaining 3125 */ 3126 public GenomicStudy setReason(List<CodeableReference> theReason) { 3127 this.reason = theReason; 3128 return this; 3129 } 3130 3131 public boolean hasReason() { 3132 if (this.reason == null) 3133 return false; 3134 for (CodeableReference item : this.reason) 3135 if (!item.isEmpty()) 3136 return true; 3137 return false; 3138 } 3139 3140 public CodeableReference addReason() { //3 3141 CodeableReference t = new CodeableReference(); 3142 if (this.reason == null) 3143 this.reason = new ArrayList<CodeableReference>(); 3144 this.reason.add(t); 3145 return t; 3146 } 3147 3148 public GenomicStudy addReason(CodeableReference t) { //3 3149 if (t == null) 3150 return this; 3151 if (this.reason == null) 3152 this.reason = new ArrayList<CodeableReference>(); 3153 this.reason.add(t); 3154 return this; 3155 } 3156 3157 /** 3158 * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3} 3159 */ 3160 public CodeableReference getReasonFirstRep() { 3161 if (getReason().isEmpty()) { 3162 addReason(); 3163 } 3164 return getReason().get(0); 3165 } 3166 3167 /** 3168 * @return {@link #instantiatesCanonical} (The defined protocol that describes the study.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value 3169 */ 3170 public CanonicalType getInstantiatesCanonicalElement() { 3171 if (this.instantiatesCanonical == null) 3172 if (Configuration.errorOnAutoCreate()) 3173 throw new Error("Attempt to auto-create GenomicStudy.instantiatesCanonical"); 3174 else if (Configuration.doAutoCreate()) 3175 this.instantiatesCanonical = new CanonicalType(); // bb 3176 return this.instantiatesCanonical; 3177 } 3178 3179 public boolean hasInstantiatesCanonicalElement() { 3180 return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty(); 3181 } 3182 3183 public boolean hasInstantiatesCanonical() { 3184 return this.instantiatesCanonical != null && !this.instantiatesCanonical.isEmpty(); 3185 } 3186 3187 /** 3188 * @param value {@link #instantiatesCanonical} (The defined protocol that describes the study.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesCanonical" gives direct access to the value 3189 */ 3190 public GenomicStudy setInstantiatesCanonicalElement(CanonicalType value) { 3191 this.instantiatesCanonical = value; 3192 return this; 3193 } 3194 3195 /** 3196 * @return The defined protocol that describes the study. 3197 */ 3198 public String getInstantiatesCanonical() { 3199 return this.instantiatesCanonical == null ? null : this.instantiatesCanonical.getValue(); 3200 } 3201 3202 /** 3203 * @param value The defined protocol that describes the study. 3204 */ 3205 public GenomicStudy setInstantiatesCanonical(String value) { 3206 if (Utilities.noString(value)) 3207 this.instantiatesCanonical = null; 3208 else { 3209 if (this.instantiatesCanonical == null) 3210 this.instantiatesCanonical = new CanonicalType(); 3211 this.instantiatesCanonical.setValue(value); 3212 } 3213 return this; 3214 } 3215 3216 /** 3217 * @return {@link #instantiatesUri} (The URL pointing to an externally maintained protocol that describes the study.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value 3218 */ 3219 public UriType getInstantiatesUriElement() { 3220 if (this.instantiatesUri == null) 3221 if (Configuration.errorOnAutoCreate()) 3222 throw new Error("Attempt to auto-create GenomicStudy.instantiatesUri"); 3223 else if (Configuration.doAutoCreate()) 3224 this.instantiatesUri = new UriType(); // bb 3225 return this.instantiatesUri; 3226 } 3227 3228 public boolean hasInstantiatesUriElement() { 3229 return this.instantiatesUri != null && !this.instantiatesUri.isEmpty(); 3230 } 3231 3232 public boolean hasInstantiatesUri() { 3233 return this.instantiatesUri != null && !this.instantiatesUri.isEmpty(); 3234 } 3235 3236 /** 3237 * @param value {@link #instantiatesUri} (The URL pointing to an externally maintained protocol that describes the study.). This is the underlying object with id, value and extensions. The accessor "getInstantiatesUri" gives direct access to the value 3238 */ 3239 public GenomicStudy setInstantiatesUriElement(UriType value) { 3240 this.instantiatesUri = value; 3241 return this; 3242 } 3243 3244 /** 3245 * @return The URL pointing to an externally maintained protocol that describes the study. 3246 */ 3247 public String getInstantiatesUri() { 3248 return this.instantiatesUri == null ? null : this.instantiatesUri.getValue(); 3249 } 3250 3251 /** 3252 * @param value The URL pointing to an externally maintained protocol that describes the study. 3253 */ 3254 public GenomicStudy setInstantiatesUri(String value) { 3255 if (Utilities.noString(value)) 3256 this.instantiatesUri = null; 3257 else { 3258 if (this.instantiatesUri == null) 3259 this.instantiatesUri = new UriType(); 3260 this.instantiatesUri.setValue(value); 3261 } 3262 return this; 3263 } 3264 3265 /** 3266 * @return {@link #note} (Comments related to the genomic study.) 3267 */ 3268 public List<Annotation> getNote() { 3269 if (this.note == null) 3270 this.note = new ArrayList<Annotation>(); 3271 return this.note; 3272 } 3273 3274 /** 3275 * @return Returns a reference to <code>this</code> for easy method chaining 3276 */ 3277 public GenomicStudy setNote(List<Annotation> theNote) { 3278 this.note = theNote; 3279 return this; 3280 } 3281 3282 public boolean hasNote() { 3283 if (this.note == null) 3284 return false; 3285 for (Annotation item : this.note) 3286 if (!item.isEmpty()) 3287 return true; 3288 return false; 3289 } 3290 3291 public Annotation addNote() { //3 3292 Annotation t = new Annotation(); 3293 if (this.note == null) 3294 this.note = new ArrayList<Annotation>(); 3295 this.note.add(t); 3296 return t; 3297 } 3298 3299 public GenomicStudy addNote(Annotation t) { //3 3300 if (t == null) 3301 return this; 3302 if (this.note == null) 3303 this.note = new ArrayList<Annotation>(); 3304 this.note.add(t); 3305 return this; 3306 } 3307 3308 /** 3309 * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3} 3310 */ 3311 public Annotation getNoteFirstRep() { 3312 if (getNote().isEmpty()) { 3313 addNote(); 3314 } 3315 return getNote().get(0); 3316 } 3317 3318 /** 3319 * @return {@link #description} (Description of the genomic study.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 3320 */ 3321 public MarkdownType getDescriptionElement() { 3322 if (this.description == null) 3323 if (Configuration.errorOnAutoCreate()) 3324 throw new Error("Attempt to auto-create GenomicStudy.description"); 3325 else if (Configuration.doAutoCreate()) 3326 this.description = new MarkdownType(); // bb 3327 return this.description; 3328 } 3329 3330 public boolean hasDescriptionElement() { 3331 return this.description != null && !this.description.isEmpty(); 3332 } 3333 3334 public boolean hasDescription() { 3335 return this.description != null && !this.description.isEmpty(); 3336 } 3337 3338 /** 3339 * @param value {@link #description} (Description of the genomic study.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value 3340 */ 3341 public GenomicStudy setDescriptionElement(MarkdownType value) { 3342 this.description = value; 3343 return this; 3344 } 3345 3346 /** 3347 * @return Description of the genomic study. 3348 */ 3349 public String getDescription() { 3350 return this.description == null ? null : this.description.getValue(); 3351 } 3352 3353 /** 3354 * @param value Description of the genomic study. 3355 */ 3356 public GenomicStudy setDescription(String value) { 3357 if (Utilities.noString(value)) 3358 this.description = null; 3359 else { 3360 if (this.description == null) 3361 this.description = new MarkdownType(); 3362 this.description.setValue(value); 3363 } 3364 return this; 3365 } 3366 3367 /** 3368 * @return {@link #analysis} (The details about a specific analysis that was performed in this GenomicStudy.) 3369 */ 3370 public List<GenomicStudyAnalysisComponent> getAnalysis() { 3371 if (this.analysis == null) 3372 this.analysis = new ArrayList<GenomicStudyAnalysisComponent>(); 3373 return this.analysis; 3374 } 3375 3376 /** 3377 * @return Returns a reference to <code>this</code> for easy method chaining 3378 */ 3379 public GenomicStudy setAnalysis(List<GenomicStudyAnalysisComponent> theAnalysis) { 3380 this.analysis = theAnalysis; 3381 return this; 3382 } 3383 3384 public boolean hasAnalysis() { 3385 if (this.analysis == null) 3386 return false; 3387 for (GenomicStudyAnalysisComponent item : this.analysis) 3388 if (!item.isEmpty()) 3389 return true; 3390 return false; 3391 } 3392 3393 public GenomicStudyAnalysisComponent addAnalysis() { //3 3394 GenomicStudyAnalysisComponent t = new GenomicStudyAnalysisComponent(); 3395 if (this.analysis == null) 3396 this.analysis = new ArrayList<GenomicStudyAnalysisComponent>(); 3397 this.analysis.add(t); 3398 return t; 3399 } 3400 3401 public GenomicStudy addAnalysis(GenomicStudyAnalysisComponent t) { //3 3402 if (t == null) 3403 return this; 3404 if (this.analysis == null) 3405 this.analysis = new ArrayList<GenomicStudyAnalysisComponent>(); 3406 this.analysis.add(t); 3407 return this; 3408 } 3409 3410 /** 3411 * @return The first repetition of repeating field {@link #analysis}, creating it if it does not already exist {3} 3412 */ 3413 public GenomicStudyAnalysisComponent getAnalysisFirstRep() { 3414 if (getAnalysis().isEmpty()) { 3415 addAnalysis(); 3416 } 3417 return getAnalysis().get(0); 3418 } 3419 3420 protected void listChildren(List<Property> children) { 3421 super.listChildren(children); 3422 children.add(new Property("identifier", "Identifier", "Identifiers for this genomic study.", 0, java.lang.Integer.MAX_VALUE, identifier)); 3423 children.add(new Property("status", "code", "The status of the genomic study.", 0, 1, status)); 3424 children.add(new Property("type", "CodeableConcept", "The type of the study, e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling.", 0, java.lang.Integer.MAX_VALUE, type)); 3425 children.add(new Property("subject", "Reference(Patient|Group|Substance|BiologicallyDerivedProduct|NutritionProduct)", "The primary subject of the genomic study.", 0, 1, subject)); 3426 children.add(new Property("encounter", "Reference(Encounter)", "The healthcare event with which this genomics study is associated.", 0, 1, encounter)); 3427 children.add(new Property("startDate", "dateTime", "When the genomic study was started.", 0, 1, startDate)); 3428 children.add(new Property("basedOn", "Reference(ServiceRequest|Task)", "Event resources that the genomic study is based on.", 0, java.lang.Integer.MAX_VALUE, basedOn)); 3429 children.add(new Property("referrer", "Reference(Practitioner|PractitionerRole)", "Healthcare professional who requested or referred the genomic study.", 0, 1, referrer)); 3430 children.add(new Property("interpreter", "Reference(Practitioner|PractitionerRole)", "Healthcare professionals who interpreted the genomic study.", 0, java.lang.Integer.MAX_VALUE, interpreter)); 3431 children.add(new Property("reason", "CodeableReference(Condition|Observation)", "Why the genomic study was performed.", 0, java.lang.Integer.MAX_VALUE, reason)); 3432 children.add(new Property("instantiatesCanonical", "canonical(PlanDefinition)", "The defined protocol that describes the study.", 0, 1, instantiatesCanonical)); 3433 children.add(new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol that describes the study.", 0, 1, instantiatesUri)); 3434 children.add(new Property("note", "Annotation", "Comments related to the genomic study.", 0, java.lang.Integer.MAX_VALUE, note)); 3435 children.add(new Property("description", "markdown", "Description of the genomic study.", 0, 1, description)); 3436 children.add(new Property("analysis", "", "The details about a specific analysis that was performed in this GenomicStudy.", 0, java.lang.Integer.MAX_VALUE, analysis)); 3437 } 3438 3439 @Override 3440 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 3441 switch (_hash) { 3442 case -1618432855: /*identifier*/ return new Property("identifier", "Identifier", "Identifiers for this genomic study.", 0, java.lang.Integer.MAX_VALUE, identifier); 3443 case -892481550: /*status*/ return new Property("status", "code", "The status of the genomic study.", 0, 1, status); 3444 case 3575610: /*type*/ return new Property("type", "CodeableConcept", "The type of the study, e.g., Familial variant segregation, Functional variation detection, or Gene expression profiling.", 0, java.lang.Integer.MAX_VALUE, type); 3445 case -1867885268: /*subject*/ return new Property("subject", "Reference(Patient|Group|Substance|BiologicallyDerivedProduct|NutritionProduct)", "The primary subject of the genomic study.", 0, 1, subject); 3446 case 1524132147: /*encounter*/ return new Property("encounter", "Reference(Encounter)", "The healthcare event with which this genomics study is associated.", 0, 1, encounter); 3447 case -2129778896: /*startDate*/ return new Property("startDate", "dateTime", "When the genomic study was started.", 0, 1, startDate); 3448 case -332612366: /*basedOn*/ return new Property("basedOn", "Reference(ServiceRequest|Task)", "Event resources that the genomic study is based on.", 0, java.lang.Integer.MAX_VALUE, basedOn); 3449 case -722568161: /*referrer*/ return new Property("referrer", "Reference(Practitioner|PractitionerRole)", "Healthcare professional who requested or referred the genomic study.", 0, 1, referrer); 3450 case -2008009094: /*interpreter*/ return new Property("interpreter", "Reference(Practitioner|PractitionerRole)", "Healthcare professionals who interpreted the genomic study.", 0, java.lang.Integer.MAX_VALUE, interpreter); 3451 case -934964668: /*reason*/ return new Property("reason", "CodeableReference(Condition|Observation)", "Why the genomic study was performed.", 0, java.lang.Integer.MAX_VALUE, reason); 3452 case 8911915: /*instantiatesCanonical*/ return new Property("instantiatesCanonical", "canonical(PlanDefinition)", "The defined protocol that describes the study.", 0, 1, instantiatesCanonical); 3453 case -1926393373: /*instantiatesUri*/ return new Property("instantiatesUri", "uri", "The URL pointing to an externally maintained protocol that describes the study.", 0, 1, instantiatesUri); 3454 case 3387378: /*note*/ return new Property("note", "Annotation", "Comments related to the genomic study.", 0, java.lang.Integer.MAX_VALUE, note); 3455 case -1724546052: /*description*/ return new Property("description", "markdown", "Description of the genomic study.", 0, 1, description); 3456 case -1024445732: /*analysis*/ return new Property("analysis", "", "The details about a specific analysis that was performed in this GenomicStudy.", 0, java.lang.Integer.MAX_VALUE, analysis); 3457 default: return super.getNamedProperty(_hash, _name, _checkValid); 3458 } 3459 3460 } 3461 3462 @Override 3463 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 3464 switch (hash) { 3465 case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier 3466 case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<GenomicStudyStatus> 3467 case 3575610: /*type*/ return this.type == null ? new Base[0] : this.type.toArray(new Base[this.type.size()]); // CodeableConcept 3468 case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference 3469 case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference 3470 case -2129778896: /*startDate*/ return this.startDate == null ? new Base[0] : new Base[] {this.startDate}; // DateTimeType 3471 case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference 3472 case -722568161: /*referrer*/ return this.referrer == null ? new Base[0] : new Base[] {this.referrer}; // Reference 3473 case -2008009094: /*interpreter*/ return this.interpreter == null ? new Base[0] : this.interpreter.toArray(new Base[this.interpreter.size()]); // Reference 3474 case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference 3475 case 8911915: /*instantiatesCanonical*/ return this.instantiatesCanonical == null ? new Base[0] : new Base[] {this.instantiatesCanonical}; // CanonicalType 3476 case -1926393373: /*instantiatesUri*/ return this.instantiatesUri == null ? new Base[0] : new Base[] {this.instantiatesUri}; // UriType 3477 case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation 3478 case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType 3479 case -1024445732: /*analysis*/ return this.analysis == null ? new Base[0] : this.analysis.toArray(new Base[this.analysis.size()]); // GenomicStudyAnalysisComponent 3480 default: return super.getProperty(hash, name, checkValid); 3481 } 3482 3483 } 3484 3485 @Override 3486 public Base setProperty(int hash, String name, Base value) throws FHIRException { 3487 switch (hash) { 3488 case -1618432855: // identifier 3489 this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier 3490 return value; 3491 case -892481550: // status 3492 value = new GenomicStudyStatusEnumFactory().fromType(TypeConvertor.castToCode(value)); 3493 this.status = (Enumeration) value; // Enumeration<GenomicStudyStatus> 3494 return value; 3495 case 3575610: // type 3496 this.getType().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept 3497 return value; 3498 case -1867885268: // subject 3499 this.subject = TypeConvertor.castToReference(value); // Reference 3500 return value; 3501 case 1524132147: // encounter 3502 this.encounter = TypeConvertor.castToReference(value); // Reference 3503 return value; 3504 case -2129778896: // startDate 3505 this.startDate = TypeConvertor.castToDateTime(value); // DateTimeType 3506 return value; 3507 case -332612366: // basedOn 3508 this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference 3509 return value; 3510 case -722568161: // referrer 3511 this.referrer = TypeConvertor.castToReference(value); // Reference 3512 return value; 3513 case -2008009094: // interpreter 3514 this.getInterpreter().add(TypeConvertor.castToReference(value)); // Reference 3515 return value; 3516 case -934964668: // reason 3517 this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference 3518 return value; 3519 case 8911915: // instantiatesCanonical 3520 this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType 3521 return value; 3522 case -1926393373: // instantiatesUri 3523 this.instantiatesUri = TypeConvertor.castToUri(value); // UriType 3524 return value; 3525 case 3387378: // note 3526 this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation 3527 return value; 3528 case -1724546052: // description 3529 this.description = TypeConvertor.castToMarkdown(value); // MarkdownType 3530 return value; 3531 case -1024445732: // analysis 3532 this.getAnalysis().add((GenomicStudyAnalysisComponent) value); // GenomicStudyAnalysisComponent 3533 return value; 3534 default: return super.setProperty(hash, name, value); 3535 } 3536 3537 } 3538 3539 @Override 3540 public Base setProperty(String name, Base value) throws FHIRException { 3541 if (name.equals("identifier")) { 3542 this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); 3543 } else if (name.equals("status")) { 3544 value = new GenomicStudyStatusEnumFactory().fromType(TypeConvertor.castToCode(value)); 3545 this.status = (Enumeration) value; // Enumeration<GenomicStudyStatus> 3546 } else if (name.equals("type")) { 3547 this.getType().add(TypeConvertor.castToCodeableConcept(value)); 3548 } else if (name.equals("subject")) { 3549 this.subject = TypeConvertor.castToReference(value); // Reference 3550 } else if (name.equals("encounter")) { 3551 this.encounter = TypeConvertor.castToReference(value); // Reference 3552 } else if (name.equals("startDate")) { 3553 this.startDate = TypeConvertor.castToDateTime(value); // DateTimeType 3554 } else if (name.equals("basedOn")) { 3555 this.getBasedOn().add(TypeConvertor.castToReference(value)); 3556 } else if (name.equals("referrer")) { 3557 this.referrer = TypeConvertor.castToReference(value); // Reference 3558 } else if (name.equals("interpreter")) { 3559 this.getInterpreter().add(TypeConvertor.castToReference(value)); 3560 } else if (name.equals("reason")) { 3561 this.getReason().add(TypeConvertor.castToCodeableReference(value)); 3562 } else if (name.equals("instantiatesCanonical")) { 3563 this.instantiatesCanonical = TypeConvertor.castToCanonical(value); // CanonicalType 3564 } else if (name.equals("instantiatesUri")) { 3565 this.instantiatesUri = TypeConvertor.castToUri(value); // UriType 3566 } else if (name.equals("note")) { 3567 this.getNote().add(TypeConvertor.castToAnnotation(value)); 3568 } else if (name.equals("description")) { 3569 this.description = TypeConvertor.castToMarkdown(value); // MarkdownType 3570 } else if (name.equals("analysis")) { 3571 this.getAnalysis().add((GenomicStudyAnalysisComponent) value); 3572 } else 3573 return super.setProperty(name, value); 3574 return value; 3575 } 3576 3577 @Override 3578 public void removeChild(String name, Base value) throws FHIRException { 3579 if (name.equals("identifier")) { 3580 this.getIdentifier().remove(value); 3581 } else if (name.equals("status")) { 3582 value = new GenomicStudyStatusEnumFactory().fromType(TypeConvertor.castToCode(value)); 3583 this.status = (Enumeration) value; // Enumeration<GenomicStudyStatus> 3584 } else if (name.equals("type")) { 3585 this.getType().remove(value); 3586 } else if (name.equals("subject")) { 3587 this.subject = null; 3588 } else if (name.equals("encounter")) { 3589 this.encounter = null; 3590 } else if (name.equals("startDate")) { 3591 this.startDate = null; 3592 } else if (name.equals("basedOn")) { 3593 this.getBasedOn().remove(value); 3594 } else if (name.equals("referrer")) { 3595 this.referrer = null; 3596 } else if (name.equals("interpreter")) { 3597 this.getInterpreter().remove(value); 3598 } else if (name.equals("reason")) { 3599 this.getReason().remove(value); 3600 } else if (name.equals("instantiatesCanonical")) { 3601 this.instantiatesCanonical = null; 3602 } else if (name.equals("instantiatesUri")) { 3603 this.instantiatesUri = null; 3604 } else if (name.equals("note")) { 3605 this.getNote().remove(value); 3606 } else if (name.equals("description")) { 3607 this.description = null; 3608 } else if (name.equals("analysis")) { 3609 this.getAnalysis().remove((GenomicStudyAnalysisComponent) value); 3610 } else 3611 super.removeChild(name, value); 3612 3613 } 3614 3615 @Override 3616 public Base makeProperty(int hash, String name) throws FHIRException { 3617 switch (hash) { 3618 case -1618432855: return addIdentifier(); 3619 case -892481550: return getStatusElement(); 3620 case 3575610: return addType(); 3621 case -1867885268: return getSubject(); 3622 case 1524132147: return getEncounter(); 3623 case -2129778896: return getStartDateElement(); 3624 case -332612366: return addBasedOn(); 3625 case -722568161: return getReferrer(); 3626 case -2008009094: return addInterpreter(); 3627 case -934964668: return addReason(); 3628 case 8911915: return getInstantiatesCanonicalElement(); 3629 case -1926393373: return getInstantiatesUriElement(); 3630 case 3387378: return addNote(); 3631 case -1724546052: return getDescriptionElement(); 3632 case -1024445732: return addAnalysis(); 3633 default: return super.makeProperty(hash, name); 3634 } 3635 3636 } 3637 3638 @Override 3639 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 3640 switch (hash) { 3641 case -1618432855: /*identifier*/ return new String[] {"Identifier"}; 3642 case -892481550: /*status*/ return new String[] {"code"}; 3643 case 3575610: /*type*/ return new String[] {"CodeableConcept"}; 3644 case -1867885268: /*subject*/ return new String[] {"Reference"}; 3645 case 1524132147: /*encounter*/ return new String[] {"Reference"}; 3646 case -2129778896: /*startDate*/ return new String[] {"dateTime"}; 3647 case -332612366: /*basedOn*/ return new String[] {"Reference"}; 3648 case -722568161: /*referrer*/ return new String[] {"Reference"}; 3649 case -2008009094: /*interpreter*/ return new String[] {"Reference"}; 3650 case -934964668: /*reason*/ return new String[] {"CodeableReference"}; 3651 case 8911915: /*instantiatesCanonical*/ return new String[] {"canonical"}; 3652 case -1926393373: /*instantiatesUri*/ return new String[] {"uri"}; 3653 case 3387378: /*note*/ return new String[] {"Annotation"}; 3654 case -1724546052: /*description*/ return new String[] {"markdown"}; 3655 case -1024445732: /*analysis*/ return new String[] {}; 3656 default: return super.getTypesForProperty(hash, name); 3657 } 3658 3659 } 3660 3661 @Override 3662 public Base addChild(String name) throws FHIRException { 3663 if (name.equals("identifier")) { 3664 return addIdentifier(); 3665 } 3666 else if (name.equals("status")) { 3667 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.status"); 3668 } 3669 else if (name.equals("type")) { 3670 return addType(); 3671 } 3672 else if (name.equals("subject")) { 3673 this.subject = new Reference(); 3674 return this.subject; 3675 } 3676 else if (name.equals("encounter")) { 3677 this.encounter = new Reference(); 3678 return this.encounter; 3679 } 3680 else if (name.equals("startDate")) { 3681 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.startDate"); 3682 } 3683 else if (name.equals("basedOn")) { 3684 return addBasedOn(); 3685 } 3686 else if (name.equals("referrer")) { 3687 this.referrer = new Reference(); 3688 return this.referrer; 3689 } 3690 else if (name.equals("interpreter")) { 3691 return addInterpreter(); 3692 } 3693 else if (name.equals("reason")) { 3694 return addReason(); 3695 } 3696 else if (name.equals("instantiatesCanonical")) { 3697 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.instantiatesCanonical"); 3698 } 3699 else if (name.equals("instantiatesUri")) { 3700 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.instantiatesUri"); 3701 } 3702 else if (name.equals("note")) { 3703 return addNote(); 3704 } 3705 else if (name.equals("description")) { 3706 throw new FHIRException("Cannot call addChild on a singleton property GenomicStudy.description"); 3707 } 3708 else if (name.equals("analysis")) { 3709 return addAnalysis(); 3710 } 3711 else 3712 return super.addChild(name); 3713 } 3714 3715 public String fhirType() { 3716 return "GenomicStudy"; 3717 3718 } 3719 3720 public GenomicStudy copy() { 3721 GenomicStudy dst = new GenomicStudy(); 3722 copyValues(dst); 3723 return dst; 3724 } 3725 3726 public void copyValues(GenomicStudy dst) { 3727 super.copyValues(dst); 3728 if (identifier != null) { 3729 dst.identifier = new ArrayList<Identifier>(); 3730 for (Identifier i : identifier) 3731 dst.identifier.add(i.copy()); 3732 }; 3733 dst.status = status == null ? null : status.copy(); 3734 if (type != null) { 3735 dst.type = new ArrayList<CodeableConcept>(); 3736 for (CodeableConcept i : type) 3737 dst.type.add(i.copy()); 3738 }; 3739 dst.subject = subject == null ? null : subject.copy(); 3740 dst.encounter = encounter == null ? null : encounter.copy(); 3741 dst.startDate = startDate == null ? null : startDate.copy(); 3742 if (basedOn != null) { 3743 dst.basedOn = new ArrayList<Reference>(); 3744 for (Reference i : basedOn) 3745 dst.basedOn.add(i.copy()); 3746 }; 3747 dst.referrer = referrer == null ? null : referrer.copy(); 3748 if (interpreter != null) { 3749 dst.interpreter = new ArrayList<Reference>(); 3750 for (Reference i : interpreter) 3751 dst.interpreter.add(i.copy()); 3752 }; 3753 if (reason != null) { 3754 dst.reason = new ArrayList<CodeableReference>(); 3755 for (CodeableReference i : reason) 3756 dst.reason.add(i.copy()); 3757 }; 3758 dst.instantiatesCanonical = instantiatesCanonical == null ? null : instantiatesCanonical.copy(); 3759 dst.instantiatesUri = instantiatesUri == null ? null : instantiatesUri.copy(); 3760 if (note != null) { 3761 dst.note = new ArrayList<Annotation>(); 3762 for (Annotation i : note) 3763 dst.note.add(i.copy()); 3764 }; 3765 dst.description = description == null ? null : description.copy(); 3766 if (analysis != null) { 3767 dst.analysis = new ArrayList<GenomicStudyAnalysisComponent>(); 3768 for (GenomicStudyAnalysisComponent i : analysis) 3769 dst.analysis.add(i.copy()); 3770 }; 3771 } 3772 3773 protected GenomicStudy typedCopy() { 3774 return copy(); 3775 } 3776 3777 @Override 3778 public boolean equalsDeep(Base other_) { 3779 if (!super.equalsDeep(other_)) 3780 return false; 3781 if (!(other_ instanceof GenomicStudy)) 3782 return false; 3783 GenomicStudy o = (GenomicStudy) other_; 3784 return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(type, o.type, true) 3785 && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true) && compareDeep(startDate, o.startDate, true) 3786 && compareDeep(basedOn, o.basedOn, true) && compareDeep(referrer, o.referrer, true) && compareDeep(interpreter, o.interpreter, true) 3787 && compareDeep(reason, o.reason, true) && compareDeep(instantiatesCanonical, o.instantiatesCanonical, true) 3788 && compareDeep(instantiatesUri, o.instantiatesUri, true) && compareDeep(note, o.note, true) && compareDeep(description, o.description, true) 3789 && compareDeep(analysis, o.analysis, true); 3790 } 3791 3792 @Override 3793 public boolean equalsShallow(Base other_) { 3794 if (!super.equalsShallow(other_)) 3795 return false; 3796 if (!(other_ instanceof GenomicStudy)) 3797 return false; 3798 GenomicStudy o = (GenomicStudy) other_; 3799 return compareValues(status, o.status, true) && compareValues(startDate, o.startDate, true) && compareValues(instantiatesCanonical, o.instantiatesCanonical, true) 3800 && compareValues(instantiatesUri, o.instantiatesUri, true) && compareValues(description, o.description, true) 3801 ; 3802 } 3803 3804 public boolean isEmpty() { 3805 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, type 3806 , subject, encounter, startDate, basedOn, referrer, interpreter, reason, instantiatesCanonical 3807 , instantiatesUri, note, description, analysis); 3808 } 3809 3810 @Override 3811 public ResourceType getResourceType() { 3812 return ResourceType.GenomicStudy; 3813 } 3814 3815 /** 3816 * Search parameter: <b>focus</b> 3817 * <p> 3818 * Description: <b>What the genomic study analysis is about, when it is not about the subject of record</b><br> 3819 * Type: <b>reference</b><br> 3820 * Path: <b>GenomicStudy.analysis.focus</b><br> 3821 * </p> 3822 */ 3823 @SearchParamDefinition(name="focus", path="GenomicStudy.analysis.focus", description="What the genomic study analysis is about, when it is not about the subject of record", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BiologicallyDerivedProductDispense.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceAssociation.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentReference.class, Encounter.class, EncounterHistory.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryItem.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationStatement.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Parameters.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestPlan.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } ) 3824 public static final String SP_FOCUS = "focus"; 3825 /** 3826 * <b>Fluent Client</b> search parameter constant for <b>focus</b> 3827 * <p> 3828 * Description: <b>What the genomic study analysis is about, when it is not about the subject of record</b><br> 3829 * Type: <b>reference</b><br> 3830 * Path: <b>GenomicStudy.analysis.focus</b><br> 3831 * </p> 3832 */ 3833 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FOCUS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FOCUS); 3834 3835/** 3836 * Constant for fluent queries to be used to add include statements. Specifies 3837 * the path value of "<b>GenomicStudy:focus</b>". 3838 */ 3839 public static final ca.uhn.fhir.model.api.Include INCLUDE_FOCUS = new ca.uhn.fhir.model.api.Include("GenomicStudy:focus").toLocked(); 3840 3841 /** 3842 * Search parameter: <b>identifier</b> 3843 * <p> 3844 * Description: <b>Identifiers for the Study</b><br> 3845 * Type: <b>token</b><br> 3846 * Path: <b>GenomicStudy.identifier</b><br> 3847 * </p> 3848 */ 3849 @SearchParamDefinition(name="identifier", path="GenomicStudy.identifier", description="Identifiers for the Study", type="token" ) 3850 public static final String SP_IDENTIFIER = "identifier"; 3851 /** 3852 * <b>Fluent Client</b> search parameter constant for <b>identifier</b> 3853 * <p> 3854 * Description: <b>Identifiers for the Study</b><br> 3855 * Type: <b>token</b><br> 3856 * Path: <b>GenomicStudy.identifier</b><br> 3857 * </p> 3858 */ 3859 public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER); 3860 3861 /** 3862 * Search parameter: <b>patient</b> 3863 * <p> 3864 * Description: <b>Who the study is about</b><br> 3865 * Type: <b>reference</b><br> 3866 * Path: <b>GenomicStudy.subject.where(resolve() is Patient)</b><br> 3867 * </p> 3868 */ 3869 @SearchParamDefinition(name="patient", path="GenomicStudy.subject.where(resolve() is Patient)", description="Who the study is about", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } ) 3870 public static final String SP_PATIENT = "patient"; 3871 /** 3872 * <b>Fluent Client</b> search parameter constant for <b>patient</b> 3873 * <p> 3874 * Description: <b>Who the study is about</b><br> 3875 * Type: <b>reference</b><br> 3876 * Path: <b>GenomicStudy.subject.where(resolve() is Patient)</b><br> 3877 * </p> 3878 */ 3879 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT); 3880 3881/** 3882 * Constant for fluent queries to be used to add include statements. Specifies 3883 * the path value of "<b>GenomicStudy:patient</b>". 3884 */ 3885 public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("GenomicStudy:patient").toLocked(); 3886 3887 /** 3888 * Search parameter: <b>status</b> 3889 * <p> 3890 * Description: <b>The status of the study</b><br> 3891 * Type: <b>token</b><br> 3892 * Path: <b>GenomicStudy.status</b><br> 3893 * </p> 3894 */ 3895 @SearchParamDefinition(name="status", path="GenomicStudy.status", description="The status of the study", type="token" ) 3896 public static final String SP_STATUS = "status"; 3897 /** 3898 * <b>Fluent Client</b> search parameter constant for <b>status</b> 3899 * <p> 3900 * Description: <b>The status of the study</b><br> 3901 * Type: <b>token</b><br> 3902 * Path: <b>GenomicStudy.status</b><br> 3903 * </p> 3904 */ 3905 public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS); 3906 3907 /** 3908 * Search parameter: <b>subject</b> 3909 * <p> 3910 * Description: <b>Who the study is about</b><br> 3911 * Type: <b>reference</b><br> 3912 * Path: <b>GenomicStudy.subject</b><br> 3913 * </p> 3914 */ 3915 @SearchParamDefinition(name="subject", path="GenomicStudy.subject", description="Who the study is about", type="reference", target={BiologicallyDerivedProduct.class, Group.class, NutritionProduct.class, Patient.class, Substance.class } ) 3916 public static final String SP_SUBJECT = "subject"; 3917 /** 3918 * <b>Fluent Client</b> search parameter constant for <b>subject</b> 3919 * <p> 3920 * Description: <b>Who the study is about</b><br> 3921 * Type: <b>reference</b><br> 3922 * Path: <b>GenomicStudy.subject</b><br> 3923 * </p> 3924 */ 3925 public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT); 3926 3927/** 3928 * Constant for fluent queries to be used to add include statements. Specifies 3929 * the path value of "<b>GenomicStudy:subject</b>". 3930 */ 3931 public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("GenomicStudy:subject").toLocked(); 3932 3933 3934} 3935