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.IBaseDatatypeElement; 040import org.hl7.fhir.exceptions.FHIRException; 041import org.hl7.fhir.instance.model.api.ICompositeType; 042import ca.uhn.fhir.model.api.annotation.Child; 043import ca.uhn.fhir.model.api.annotation.ChildOrder; 044import ca.uhn.fhir.model.api.annotation.DatatypeDef; 045import ca.uhn.fhir.model.api.annotation.Description; 046import ca.uhn.fhir.model.api.annotation.Block; 047 048/** 049 * Dosage Type: Indicates how the medication is/was taken or should be taken by the patient. 050 */ 051@DatatypeDef(name="Dosage") 052public class Dosage extends BackboneType implements ICompositeType { 053 054 @Block() 055 public static class DosageDoseAndRateComponent extends Element implements IBaseDatatypeElement { 056 /** 057 * The kind of dose or rate specified, for example, ordered or calculated. 058 */ 059 @Child(name = "type", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true) 060 @Description(shortDefinition="The kind of dose or rate specified", formalDefinition="The kind of dose or rate specified, for example, ordered or calculated." ) 061 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://terminology.hl7.org/ValueSet/dose-rate-type") 062 protected CodeableConcept type; 063 064 /** 065 * Amount of medication per dose. 066 */ 067 @Child(name = "dose", type = {Range.class, Quantity.class}, order=2, min=0, max=1, modifier=false, summary=true) 068 @Description(shortDefinition="Amount of medication per dose", formalDefinition="Amount of medication per dose." ) 069 protected DataType dose; 070 071 /** 072 * Amount of medication per unit of time. 073 */ 074 @Child(name = "rate", type = {Ratio.class, Range.class, Quantity.class}, order=3, min=0, max=1, modifier=false, summary=true) 075 @Description(shortDefinition="Amount of medication per unit of time", formalDefinition="Amount of medication per unit of time." ) 076 protected DataType rate; 077 078 private static final long serialVersionUID = 230646604L; 079 080 /** 081 * Constructor 082 */ 083 public DosageDoseAndRateComponent() { 084 super(); 085 } 086 087 /** 088 * @return {@link #type} (The kind of dose or rate specified, for example, ordered or calculated.) 089 */ 090 public CodeableConcept getType() { 091 if (this.type == null) 092 if (Configuration.errorOnAutoCreate()) 093 throw new Error("Attempt to auto-create DosageDoseAndRateComponent.type"); 094 else if (Configuration.doAutoCreate()) 095 this.type = new CodeableConcept(); // cc 096 return this.type; 097 } 098 099 public boolean hasType() { 100 return this.type != null && !this.type.isEmpty(); 101 } 102 103 /** 104 * @param value {@link #type} (The kind of dose or rate specified, for example, ordered or calculated.) 105 */ 106 public DosageDoseAndRateComponent setType(CodeableConcept value) { 107 this.type = value; 108 return this; 109 } 110 111 /** 112 * @return {@link #dose} (Amount of medication per dose.) 113 */ 114 public DataType getDose() { 115 return this.dose; 116 } 117 118 /** 119 * @return {@link #dose} (Amount of medication per dose.) 120 */ 121 public Range getDoseRange() throws FHIRException { 122 if (this.dose == null) 123 this.dose = new Range(); 124 if (!(this.dose instanceof Range)) 125 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.dose.getClass().getName()+" was encountered"); 126 return (Range) this.dose; 127 } 128 129 public boolean hasDoseRange() { 130 return this != null && this.dose instanceof Range; 131 } 132 133 /** 134 * @return {@link #dose} (Amount of medication per dose.) 135 */ 136 public Quantity getDoseQuantity() throws FHIRException { 137 if (this.dose == null) 138 this.dose = new Quantity(); 139 if (!(this.dose instanceof Quantity)) 140 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.dose.getClass().getName()+" was encountered"); 141 return (Quantity) this.dose; 142 } 143 144 public boolean hasDoseQuantity() { 145 return this != null && this.dose instanceof Quantity; 146 } 147 148 public boolean hasDose() { 149 return this.dose != null && !this.dose.isEmpty(); 150 } 151 152 /** 153 * @param value {@link #dose} (Amount of medication per dose.) 154 */ 155 public DosageDoseAndRateComponent setDose(DataType value) { 156 if (value != null && !(value instanceof Range || value instanceof Quantity)) 157 throw new FHIRException("Not the right type for Dosage.doseAndRate.dose[x]: "+value.fhirType()); 158 this.dose = value; 159 return this; 160 } 161 162 /** 163 * @return {@link #rate} (Amount of medication per unit of time.) 164 */ 165 public DataType getRate() { 166 return this.rate; 167 } 168 169 /** 170 * @return {@link #rate} (Amount of medication per unit of time.) 171 */ 172 public Ratio getRateRatio() throws FHIRException { 173 if (this.rate == null) 174 this.rate = new Ratio(); 175 if (!(this.rate instanceof Ratio)) 176 throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.rate.getClass().getName()+" was encountered"); 177 return (Ratio) this.rate; 178 } 179 180 public boolean hasRateRatio() { 181 return this != null && this.rate instanceof Ratio; 182 } 183 184 /** 185 * @return {@link #rate} (Amount of medication per unit of time.) 186 */ 187 public Range getRateRange() throws FHIRException { 188 if (this.rate == null) 189 this.rate = new Range(); 190 if (!(this.rate instanceof Range)) 191 throw new FHIRException("Type mismatch: the type Range was expected, but "+this.rate.getClass().getName()+" was encountered"); 192 return (Range) this.rate; 193 } 194 195 public boolean hasRateRange() { 196 return this != null && this.rate instanceof Range; 197 } 198 199 /** 200 * @return {@link #rate} (Amount of medication per unit of time.) 201 */ 202 public Quantity getRateQuantity() throws FHIRException { 203 if (this.rate == null) 204 this.rate = new Quantity(); 205 if (!(this.rate instanceof Quantity)) 206 throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.rate.getClass().getName()+" was encountered"); 207 return (Quantity) this.rate; 208 } 209 210 public boolean hasRateQuantity() { 211 return this != null && this.rate instanceof Quantity; 212 } 213 214 public boolean hasRate() { 215 return this.rate != null && !this.rate.isEmpty(); 216 } 217 218 /** 219 * @param value {@link #rate} (Amount of medication per unit of time.) 220 */ 221 public DosageDoseAndRateComponent setRate(DataType value) { 222 if (value != null && !(value instanceof Ratio || value instanceof Range || value instanceof Quantity)) 223 throw new FHIRException("Not the right type for Dosage.doseAndRate.rate[x]: "+value.fhirType()); 224 this.rate = value; 225 return this; 226 } 227 228 protected void listChildren(List<Property> children) { 229 super.listChildren(children); 230 children.add(new Property("type", "CodeableConcept", "The kind of dose or rate specified, for example, ordered or calculated.", 0, 1, type)); 231 children.add(new Property("dose[x]", "Range|Quantity", "Amount of medication per dose.", 0, 1, dose)); 232 children.add(new Property("rate[x]", "Ratio|Range|Quantity", "Amount of medication per unit of time.", 0, 1, rate)); 233 } 234 235 @Override 236 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 237 switch (_hash) { 238 case 3575610: /*type*/ return new Property("type", "CodeableConcept", "The kind of dose or rate specified, for example, ordered or calculated.", 0, 1, type); 239 case 1843195715: /*dose[x]*/ return new Property("dose[x]", "Range|Quantity", "Amount of medication per dose.", 0, 1, dose); 240 case 3089437: /*dose*/ return new Property("dose[x]", "Range|Quantity", "Amount of medication per dose.", 0, 1, dose); 241 case 1775578912: /*doseRange*/ return new Property("dose[x]", "Range", "Amount of medication per dose.", 0, 1, dose); 242 case -2083618872: /*doseQuantity*/ return new Property("dose[x]", "Quantity", "Amount of medication per dose.", 0, 1, dose); 243 case 983460768: /*rate[x]*/ return new Property("rate[x]", "Ratio|Range|Quantity", "Amount of medication per unit of time.", 0, 1, rate); 244 case 3493088: /*rate*/ return new Property("rate[x]", "Ratio|Range|Quantity", "Amount of medication per unit of time.", 0, 1, rate); 245 case 204021515: /*rateRatio*/ return new Property("rate[x]", "Ratio", "Amount of medication per unit of time.", 0, 1, rate); 246 case 204015677: /*rateRange*/ return new Property("rate[x]", "Range", "Amount of medication per unit of time.", 0, 1, rate); 247 case -1085459061: /*rateQuantity*/ return new Property("rate[x]", "Quantity", "Amount of medication per unit of time.", 0, 1, rate); 248 default: return super.getNamedProperty(_hash, _name, _checkValid); 249 } 250 251 } 252 253 @Override 254 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 255 switch (hash) { 256 case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept 257 case 3089437: /*dose*/ return this.dose == null ? new Base[0] : new Base[] {this.dose}; // DataType 258 case 3493088: /*rate*/ return this.rate == null ? new Base[0] : new Base[] {this.rate}; // DataType 259 default: return super.getProperty(hash, name, checkValid); 260 } 261 262 } 263 264 @Override 265 public Base setProperty(int hash, String name, Base value) throws FHIRException { 266 switch (hash) { 267 case 3575610: // type 268 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 269 return value; 270 case 3089437: // dose 271 this.dose = TypeConvertor.castToType(value); // DataType 272 return value; 273 case 3493088: // rate 274 this.rate = TypeConvertor.castToType(value); // DataType 275 return value; 276 default: return super.setProperty(hash, name, value); 277 } 278 279 } 280 281 @Override 282 public Base setProperty(String name, Base value) throws FHIRException { 283 if (name.equals("type")) { 284 this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 285 } else if (name.equals("dose[x]")) { 286 this.dose = TypeConvertor.castToType(value); // DataType 287 } else if (name.equals("rate[x]")) { 288 this.rate = TypeConvertor.castToType(value); // DataType 289 } else 290 return super.setProperty(name, value); 291 return value; 292 } 293 294 @Override 295 public Base makeProperty(int hash, String name) throws FHIRException { 296 switch (hash) { 297 case 3575610: return getType(); 298 case 1843195715: return getDose(); 299 case 3089437: return getDose(); 300 case 983460768: return getRate(); 301 case 3493088: return getRate(); 302 default: return super.makeProperty(hash, name); 303 } 304 305 } 306 307 @Override 308 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 309 switch (hash) { 310 case 3575610: /*type*/ return new String[] {"CodeableConcept"}; 311 case 3089437: /*dose*/ return new String[] {"Range", "Quantity"}; 312 case 3493088: /*rate*/ return new String[] {"Ratio", "Range", "Quantity"}; 313 default: return super.getTypesForProperty(hash, name); 314 } 315 316 } 317 318 @Override 319 public Base addChild(String name) throws FHIRException { 320 if (name.equals("type")) { 321 this.type = new CodeableConcept(); 322 return this.type; 323 } 324 else if (name.equals("doseRange")) { 325 this.dose = new Range(); 326 return this.dose; 327 } 328 else if (name.equals("doseQuantity")) { 329 this.dose = new Quantity(); 330 return this.dose; 331 } 332 else if (name.equals("rateRatio")) { 333 this.rate = new Ratio(); 334 return this.rate; 335 } 336 else if (name.equals("rateRange")) { 337 this.rate = new Range(); 338 return this.rate; 339 } 340 else if (name.equals("rateQuantity")) { 341 this.rate = new Quantity(); 342 return this.rate; 343 } 344 else 345 return super.addChild(name); 346 } 347 348 public DosageDoseAndRateComponent copy() { 349 DosageDoseAndRateComponent dst = new DosageDoseAndRateComponent(); 350 copyValues(dst); 351 return dst; 352 } 353 354 public void copyValues(DosageDoseAndRateComponent dst) { 355 super.copyValues(dst); 356 dst.type = type == null ? null : type.copy(); 357 dst.dose = dose == null ? null : dose.copy(); 358 dst.rate = rate == null ? null : rate.copy(); 359 } 360 361 @Override 362 public boolean equalsDeep(Base other_) { 363 if (!super.equalsDeep(other_)) 364 return false; 365 if (!(other_ instanceof DosageDoseAndRateComponent)) 366 return false; 367 DosageDoseAndRateComponent o = (DosageDoseAndRateComponent) other_; 368 return compareDeep(type, o.type, true) && compareDeep(dose, o.dose, true) && compareDeep(rate, o.rate, true) 369 ; 370 } 371 372 @Override 373 public boolean equalsShallow(Base other_) { 374 if (!super.equalsShallow(other_)) 375 return false; 376 if (!(other_ instanceof DosageDoseAndRateComponent)) 377 return false; 378 DosageDoseAndRateComponent o = (DosageDoseAndRateComponent) other_; 379 return true; 380 } 381 382 public boolean isEmpty() { 383 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, dose, rate); 384 } 385 386 public String fhirType() { 387 return "Dosage.doseAndRate"; 388 389 } 390 391 } 392 393 /** 394 * Indicates the order in which the dosage instructions should be applied or interpreted. 395 */ 396 @Child(name = "sequence", type = {IntegerType.class}, order=0, min=0, max=1, modifier=false, summary=true) 397 @Description(shortDefinition="The order of the dosage instructions", formalDefinition="Indicates the order in which the dosage instructions should be applied or interpreted." ) 398 protected IntegerType sequence; 399 400 /** 401 * Free text dosage instructions e.g. SIG. 402 */ 403 @Child(name = "text", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true) 404 @Description(shortDefinition="Free text dosage instructions e.g. SIG", formalDefinition="Free text dosage instructions e.g. SIG." ) 405 protected StringType text; 406 407 /** 408 * Supplemental instructions to the patient on how to take the medication (e.g. "with meals" or"take half to one hour before food") or warnings for the patient about the medication (e.g. "may cause drowsiness" or "avoid exposure of skin to direct sunlight or sunlamps"). 409 */ 410 @Child(name = "additionalInstruction", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 411 @Description(shortDefinition="Supplemental instruction or warnings to the patient - e.g. \"with meals\", \"may cause drowsiness\"", formalDefinition="Supplemental instructions to the patient on how to take the medication (e.g. \"with meals\" or\"take half to one hour before food\") or warnings for the patient about the medication (e.g. \"may cause drowsiness\" or \"avoid exposure of skin to direct sunlight or sunlamps\")." ) 412 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/additional-instruction-codes") 413 protected List<CodeableConcept> additionalInstruction; 414 415 /** 416 * Instructions in terms that are understood by the patient or consumer. 417 */ 418 @Child(name = "patientInstruction", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true) 419 @Description(shortDefinition="Patient or consumer oriented instructions", formalDefinition="Instructions in terms that are understood by the patient or consumer." ) 420 protected StringType patientInstruction; 421 422 /** 423 * When medication should be administered. 424 */ 425 @Child(name = "timing", type = {Timing.class}, order=4, min=0, max=1, modifier=false, summary=true) 426 @Description(shortDefinition="When medication should be administered", formalDefinition="When medication should be administered." ) 427 protected Timing timing; 428 429 /** 430 * Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option). 431 */ 432 @Child(name = "asNeeded", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true) 433 @Description(shortDefinition="Take \"as needed\"", formalDefinition="Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option)." ) 434 protected BooleanType asNeeded; 435 436 /** 437 * Indicates whether the Medication is only taken based on a precondition for taking the Medication (CodeableConcept). 438 */ 439 @Child(name = "asNeededFor", type = {CodeableConcept.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 440 @Description(shortDefinition="Take \"as needed\" (for x)", formalDefinition="Indicates whether the Medication is only taken based on a precondition for taking the Medication (CodeableConcept)." ) 441 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-as-needed-reason") 442 protected List<CodeableConcept> asNeededFor; 443 444 /** 445 * Body site to administer to. 446 */ 447 @Child(name = "site", type = {CodeableConcept.class}, order=7, min=0, max=1, modifier=false, summary=true) 448 @Description(shortDefinition="Body site to administer to", formalDefinition="Body site to administer to." ) 449 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/approach-site-codes") 450 protected CodeableConcept site; 451 452 /** 453 * How drug should enter body. 454 */ 455 @Child(name = "route", type = {CodeableConcept.class}, order=8, min=0, max=1, modifier=false, summary=true) 456 @Description(shortDefinition="How drug should enter body", formalDefinition="How drug should enter body." ) 457 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/route-codes") 458 protected CodeableConcept route; 459 460 /** 461 * Technique for administering medication. 462 */ 463 @Child(name = "method", type = {CodeableConcept.class}, order=9, min=0, max=1, modifier=false, summary=true) 464 @Description(shortDefinition="Technique for administering medication", formalDefinition="Technique for administering medication." ) 465 @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administration-method-codes") 466 protected CodeableConcept method; 467 468 /** 469 * Depending on the resource,this is the amount of medication administered, to be administered or typical amount to be administered. 470 */ 471 @Child(name = "doseAndRate", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 472 @Description(shortDefinition="Amount of medication administered, to be administered or typical amount to be administered", formalDefinition="Depending on the resource,this is the amount of medication administered, to be administered or typical amount to be administered." ) 473 protected List<DosageDoseAndRateComponent> doseAndRate; 474 475 /** 476 * Upper limit on medication per unit of time. 477 */ 478 @Child(name = "maxDosePerPeriod", type = {Ratio.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true) 479 @Description(shortDefinition="Upper limit on medication per unit of time", formalDefinition="Upper limit on medication per unit of time." ) 480 protected List<Ratio> maxDosePerPeriod; 481 482 /** 483 * Upper limit on medication per administration. 484 */ 485 @Child(name = "maxDosePerAdministration", type = {Quantity.class}, order=12, min=0, max=1, modifier=false, summary=true) 486 @Description(shortDefinition="Upper limit on medication per administration", formalDefinition="Upper limit on medication per administration." ) 487 protected Quantity maxDosePerAdministration; 488 489 /** 490 * Upper limit on medication per lifetime of the patient. 491 */ 492 @Child(name = "maxDosePerLifetime", type = {Quantity.class}, order=13, min=0, max=1, modifier=false, summary=true) 493 @Description(shortDefinition="Upper limit on medication per lifetime of the patient", formalDefinition="Upper limit on medication per lifetime of the patient." ) 494 protected Quantity maxDosePerLifetime; 495 496 private static final long serialVersionUID = 386091152L; 497 498 /** 499 * Constructor 500 */ 501 public Dosage() { 502 super(); 503 } 504 505 /** 506 * @return {@link #sequence} (Indicates the order in which the dosage instructions should be applied or interpreted.). This is the underlying object with id, value and extensions. The accessor "getSequence" gives direct access to the value 507 */ 508 public IntegerType getSequenceElement() { 509 if (this.sequence == null) 510 if (Configuration.errorOnAutoCreate()) 511 throw new Error("Attempt to auto-create Dosage.sequence"); 512 else if (Configuration.doAutoCreate()) 513 this.sequence = new IntegerType(); // bb 514 return this.sequence; 515 } 516 517 public boolean hasSequenceElement() { 518 return this.sequence != null && !this.sequence.isEmpty(); 519 } 520 521 public boolean hasSequence() { 522 return this.sequence != null && !this.sequence.isEmpty(); 523 } 524 525 /** 526 * @param value {@link #sequence} (Indicates the order in which the dosage instructions should be applied or interpreted.). This is the underlying object with id, value and extensions. The accessor "getSequence" gives direct access to the value 527 */ 528 public Dosage setSequenceElement(IntegerType value) { 529 this.sequence = value; 530 return this; 531 } 532 533 /** 534 * @return Indicates the order in which the dosage instructions should be applied or interpreted. 535 */ 536 public int getSequence() { 537 return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue(); 538 } 539 540 /** 541 * @param value Indicates the order in which the dosage instructions should be applied or interpreted. 542 */ 543 public Dosage setSequence(int value) { 544 if (this.sequence == null) 545 this.sequence = new IntegerType(); 546 this.sequence.setValue(value); 547 return this; 548 } 549 550 /** 551 * @return {@link #text} (Free text dosage instructions e.g. SIG.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value 552 */ 553 public StringType getTextElement() { 554 if (this.text == null) 555 if (Configuration.errorOnAutoCreate()) 556 throw new Error("Attempt to auto-create Dosage.text"); 557 else if (Configuration.doAutoCreate()) 558 this.text = new StringType(); // bb 559 return this.text; 560 } 561 562 public boolean hasTextElement() { 563 return this.text != null && !this.text.isEmpty(); 564 } 565 566 public boolean hasText() { 567 return this.text != null && !this.text.isEmpty(); 568 } 569 570 /** 571 * @param value {@link #text} (Free text dosage instructions e.g. SIG.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value 572 */ 573 public Dosage setTextElement(StringType value) { 574 this.text = value; 575 return this; 576 } 577 578 /** 579 * @return Free text dosage instructions e.g. SIG. 580 */ 581 public String getText() { 582 return this.text == null ? null : this.text.getValue(); 583 } 584 585 /** 586 * @param value Free text dosage instructions e.g. SIG. 587 */ 588 public Dosage setText(String value) { 589 if (Utilities.noString(value)) 590 this.text = null; 591 else { 592 if (this.text == null) 593 this.text = new StringType(); 594 this.text.setValue(value); 595 } 596 return this; 597 } 598 599 /** 600 * @return {@link #additionalInstruction} (Supplemental instructions to the patient on how to take the medication (e.g. "with meals" or"take half to one hour before food") or warnings for the patient about the medication (e.g. "may cause drowsiness" or "avoid exposure of skin to direct sunlight or sunlamps").) 601 */ 602 public List<CodeableConcept> getAdditionalInstruction() { 603 if (this.additionalInstruction == null) 604 this.additionalInstruction = new ArrayList<CodeableConcept>(); 605 return this.additionalInstruction; 606 } 607 608 /** 609 * @return Returns a reference to <code>this</code> for easy method chaining 610 */ 611 public Dosage setAdditionalInstruction(List<CodeableConcept> theAdditionalInstruction) { 612 this.additionalInstruction = theAdditionalInstruction; 613 return this; 614 } 615 616 public boolean hasAdditionalInstruction() { 617 if (this.additionalInstruction == null) 618 return false; 619 for (CodeableConcept item : this.additionalInstruction) 620 if (!item.isEmpty()) 621 return true; 622 return false; 623 } 624 625 public CodeableConcept addAdditionalInstruction() { //3 626 CodeableConcept t = new CodeableConcept(); 627 if (this.additionalInstruction == null) 628 this.additionalInstruction = new ArrayList<CodeableConcept>(); 629 this.additionalInstruction.add(t); 630 return t; 631 } 632 633 public Dosage addAdditionalInstruction(CodeableConcept t) { //3 634 if (t == null) 635 return this; 636 if (this.additionalInstruction == null) 637 this.additionalInstruction = new ArrayList<CodeableConcept>(); 638 this.additionalInstruction.add(t); 639 return this; 640 } 641 642 /** 643 * @return The first repetition of repeating field {@link #additionalInstruction}, creating it if it does not already exist {3} 644 */ 645 public CodeableConcept getAdditionalInstructionFirstRep() { 646 if (getAdditionalInstruction().isEmpty()) { 647 addAdditionalInstruction(); 648 } 649 return getAdditionalInstruction().get(0); 650 } 651 652 /** 653 * @return {@link #patientInstruction} (Instructions in terms that are understood by the patient or consumer.). This is the underlying object with id, value and extensions. The accessor "getPatientInstruction" gives direct access to the value 654 */ 655 public StringType getPatientInstructionElement() { 656 if (this.patientInstruction == null) 657 if (Configuration.errorOnAutoCreate()) 658 throw new Error("Attempt to auto-create Dosage.patientInstruction"); 659 else if (Configuration.doAutoCreate()) 660 this.patientInstruction = new StringType(); // bb 661 return this.patientInstruction; 662 } 663 664 public boolean hasPatientInstructionElement() { 665 return this.patientInstruction != null && !this.patientInstruction.isEmpty(); 666 } 667 668 public boolean hasPatientInstruction() { 669 return this.patientInstruction != null && !this.patientInstruction.isEmpty(); 670 } 671 672 /** 673 * @param value {@link #patientInstruction} (Instructions in terms that are understood by the patient or consumer.). This is the underlying object with id, value and extensions. The accessor "getPatientInstruction" gives direct access to the value 674 */ 675 public Dosage setPatientInstructionElement(StringType value) { 676 this.patientInstruction = value; 677 return this; 678 } 679 680 /** 681 * @return Instructions in terms that are understood by the patient or consumer. 682 */ 683 public String getPatientInstruction() { 684 return this.patientInstruction == null ? null : this.patientInstruction.getValue(); 685 } 686 687 /** 688 * @param value Instructions in terms that are understood by the patient or consumer. 689 */ 690 public Dosage setPatientInstruction(String value) { 691 if (Utilities.noString(value)) 692 this.patientInstruction = null; 693 else { 694 if (this.patientInstruction == null) 695 this.patientInstruction = new StringType(); 696 this.patientInstruction.setValue(value); 697 } 698 return this; 699 } 700 701 /** 702 * @return {@link #timing} (When medication should be administered.) 703 */ 704 public Timing getTiming() { 705 if (this.timing == null) 706 if (Configuration.errorOnAutoCreate()) 707 throw new Error("Attempt to auto-create Dosage.timing"); 708 else if (Configuration.doAutoCreate()) 709 this.timing = new Timing(); // cc 710 return this.timing; 711 } 712 713 public boolean hasTiming() { 714 return this.timing != null && !this.timing.isEmpty(); 715 } 716 717 /** 718 * @param value {@link #timing} (When medication should be administered.) 719 */ 720 public Dosage setTiming(Timing value) { 721 this.timing = value; 722 return this; 723 } 724 725 /** 726 * @return {@link #asNeeded} (Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option).). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value 727 */ 728 public BooleanType getAsNeededElement() { 729 if (this.asNeeded == null) 730 if (Configuration.errorOnAutoCreate()) 731 throw new Error("Attempt to auto-create Dosage.asNeeded"); 732 else if (Configuration.doAutoCreate()) 733 this.asNeeded = new BooleanType(); // bb 734 return this.asNeeded; 735 } 736 737 public boolean hasAsNeededElement() { 738 return this.asNeeded != null && !this.asNeeded.isEmpty(); 739 } 740 741 public boolean hasAsNeeded() { 742 return this.asNeeded != null && !this.asNeeded.isEmpty(); 743 } 744 745 /** 746 * @param value {@link #asNeeded} (Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option).). This is the underlying object with id, value and extensions. The accessor "getAsNeeded" gives direct access to the value 747 */ 748 public Dosage setAsNeededElement(BooleanType value) { 749 this.asNeeded = value; 750 return this; 751 } 752 753 /** 754 * @return Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option). 755 */ 756 public boolean getAsNeeded() { 757 return this.asNeeded == null || this.asNeeded.isEmpty() ? false : this.asNeeded.getValue(); 758 } 759 760 /** 761 * @param value Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option). 762 */ 763 public Dosage setAsNeeded(boolean value) { 764 if (this.asNeeded == null) 765 this.asNeeded = new BooleanType(); 766 this.asNeeded.setValue(value); 767 return this; 768 } 769 770 /** 771 * @return {@link #asNeededFor} (Indicates whether the Medication is only taken based on a precondition for taking the Medication (CodeableConcept).) 772 */ 773 public List<CodeableConcept> getAsNeededFor() { 774 if (this.asNeededFor == null) 775 this.asNeededFor = new ArrayList<CodeableConcept>(); 776 return this.asNeededFor; 777 } 778 779 /** 780 * @return Returns a reference to <code>this</code> for easy method chaining 781 */ 782 public Dosage setAsNeededFor(List<CodeableConcept> theAsNeededFor) { 783 this.asNeededFor = theAsNeededFor; 784 return this; 785 } 786 787 public boolean hasAsNeededFor() { 788 if (this.asNeededFor == null) 789 return false; 790 for (CodeableConcept item : this.asNeededFor) 791 if (!item.isEmpty()) 792 return true; 793 return false; 794 } 795 796 public CodeableConcept addAsNeededFor() { //3 797 CodeableConcept t = new CodeableConcept(); 798 if (this.asNeededFor == null) 799 this.asNeededFor = new ArrayList<CodeableConcept>(); 800 this.asNeededFor.add(t); 801 return t; 802 } 803 804 public Dosage addAsNeededFor(CodeableConcept t) { //3 805 if (t == null) 806 return this; 807 if (this.asNeededFor == null) 808 this.asNeededFor = new ArrayList<CodeableConcept>(); 809 this.asNeededFor.add(t); 810 return this; 811 } 812 813 /** 814 * @return The first repetition of repeating field {@link #asNeededFor}, creating it if it does not already exist {3} 815 */ 816 public CodeableConcept getAsNeededForFirstRep() { 817 if (getAsNeededFor().isEmpty()) { 818 addAsNeededFor(); 819 } 820 return getAsNeededFor().get(0); 821 } 822 823 /** 824 * @return {@link #site} (Body site to administer to.) 825 */ 826 public CodeableConcept getSite() { 827 if (this.site == null) 828 if (Configuration.errorOnAutoCreate()) 829 throw new Error("Attempt to auto-create Dosage.site"); 830 else if (Configuration.doAutoCreate()) 831 this.site = new CodeableConcept(); // cc 832 return this.site; 833 } 834 835 public boolean hasSite() { 836 return this.site != null && !this.site.isEmpty(); 837 } 838 839 /** 840 * @param value {@link #site} (Body site to administer to.) 841 */ 842 public Dosage setSite(CodeableConcept value) { 843 this.site = value; 844 return this; 845 } 846 847 /** 848 * @return {@link #route} (How drug should enter body.) 849 */ 850 public CodeableConcept getRoute() { 851 if (this.route == null) 852 if (Configuration.errorOnAutoCreate()) 853 throw new Error("Attempt to auto-create Dosage.route"); 854 else if (Configuration.doAutoCreate()) 855 this.route = new CodeableConcept(); // cc 856 return this.route; 857 } 858 859 public boolean hasRoute() { 860 return this.route != null && !this.route.isEmpty(); 861 } 862 863 /** 864 * @param value {@link #route} (How drug should enter body.) 865 */ 866 public Dosage setRoute(CodeableConcept value) { 867 this.route = value; 868 return this; 869 } 870 871 /** 872 * @return {@link #method} (Technique for administering medication.) 873 */ 874 public CodeableConcept getMethod() { 875 if (this.method == null) 876 if (Configuration.errorOnAutoCreate()) 877 throw new Error("Attempt to auto-create Dosage.method"); 878 else if (Configuration.doAutoCreate()) 879 this.method = new CodeableConcept(); // cc 880 return this.method; 881 } 882 883 public boolean hasMethod() { 884 return this.method != null && !this.method.isEmpty(); 885 } 886 887 /** 888 * @param value {@link #method} (Technique for administering medication.) 889 */ 890 public Dosage setMethod(CodeableConcept value) { 891 this.method = value; 892 return this; 893 } 894 895 /** 896 * @return {@link #doseAndRate} (Depending on the resource,this is the amount of medication administered, to be administered or typical amount to be administered.) 897 */ 898 public List<DosageDoseAndRateComponent> getDoseAndRate() { 899 if (this.doseAndRate == null) 900 this.doseAndRate = new ArrayList<DosageDoseAndRateComponent>(); 901 return this.doseAndRate; 902 } 903 904 /** 905 * @return Returns a reference to <code>this</code> for easy method chaining 906 */ 907 public Dosage setDoseAndRate(List<DosageDoseAndRateComponent> theDoseAndRate) { 908 this.doseAndRate = theDoseAndRate; 909 return this; 910 } 911 912 public boolean hasDoseAndRate() { 913 if (this.doseAndRate == null) 914 return false; 915 for (DosageDoseAndRateComponent item : this.doseAndRate) 916 if (!item.isEmpty()) 917 return true; 918 return false; 919 } 920 921 public DosageDoseAndRateComponent addDoseAndRate() { //3 922 DosageDoseAndRateComponent t = new DosageDoseAndRateComponent(); 923 if (this.doseAndRate == null) 924 this.doseAndRate = new ArrayList<DosageDoseAndRateComponent>(); 925 this.doseAndRate.add(t); 926 return t; 927 } 928 929 public Dosage addDoseAndRate(DosageDoseAndRateComponent t) { //3 930 if (t == null) 931 return this; 932 if (this.doseAndRate == null) 933 this.doseAndRate = new ArrayList<DosageDoseAndRateComponent>(); 934 this.doseAndRate.add(t); 935 return this; 936 } 937 938 /** 939 * @return The first repetition of repeating field {@link #doseAndRate}, creating it if it does not already exist {3} 940 */ 941 public DosageDoseAndRateComponent getDoseAndRateFirstRep() { 942 if (getDoseAndRate().isEmpty()) { 943 addDoseAndRate(); 944 } 945 return getDoseAndRate().get(0); 946 } 947 948 /** 949 * @return {@link #maxDosePerPeriod} (Upper limit on medication per unit of time.) 950 */ 951 public List<Ratio> getMaxDosePerPeriod() { 952 if (this.maxDosePerPeriod == null) 953 this.maxDosePerPeriod = new ArrayList<Ratio>(); 954 return this.maxDosePerPeriod; 955 } 956 957 /** 958 * @return Returns a reference to <code>this</code> for easy method chaining 959 */ 960 public Dosage setMaxDosePerPeriod(List<Ratio> theMaxDosePerPeriod) { 961 this.maxDosePerPeriod = theMaxDosePerPeriod; 962 return this; 963 } 964 965 public boolean hasMaxDosePerPeriod() { 966 if (this.maxDosePerPeriod == null) 967 return false; 968 for (Ratio item : this.maxDosePerPeriod) 969 if (!item.isEmpty()) 970 return true; 971 return false; 972 } 973 974 public Ratio addMaxDosePerPeriod() { //3 975 Ratio t = new Ratio(); 976 if (this.maxDosePerPeriod == null) 977 this.maxDosePerPeriod = new ArrayList<Ratio>(); 978 this.maxDosePerPeriod.add(t); 979 return t; 980 } 981 982 public Dosage addMaxDosePerPeriod(Ratio t) { //3 983 if (t == null) 984 return this; 985 if (this.maxDosePerPeriod == null) 986 this.maxDosePerPeriod = new ArrayList<Ratio>(); 987 this.maxDosePerPeriod.add(t); 988 return this; 989 } 990 991 /** 992 * @return The first repetition of repeating field {@link #maxDosePerPeriod}, creating it if it does not already exist {3} 993 */ 994 public Ratio getMaxDosePerPeriodFirstRep() { 995 if (getMaxDosePerPeriod().isEmpty()) { 996 addMaxDosePerPeriod(); 997 } 998 return getMaxDosePerPeriod().get(0); 999 } 1000 1001 /** 1002 * @return {@link #maxDosePerAdministration} (Upper limit on medication per administration.) 1003 */ 1004 public Quantity getMaxDosePerAdministration() { 1005 if (this.maxDosePerAdministration == null) 1006 if (Configuration.errorOnAutoCreate()) 1007 throw new Error("Attempt to auto-create Dosage.maxDosePerAdministration"); 1008 else if (Configuration.doAutoCreate()) 1009 this.maxDosePerAdministration = new Quantity(); // cc 1010 return this.maxDosePerAdministration; 1011 } 1012 1013 public boolean hasMaxDosePerAdministration() { 1014 return this.maxDosePerAdministration != null && !this.maxDosePerAdministration.isEmpty(); 1015 } 1016 1017 /** 1018 * @param value {@link #maxDosePerAdministration} (Upper limit on medication per administration.) 1019 */ 1020 public Dosage setMaxDosePerAdministration(Quantity value) { 1021 this.maxDosePerAdministration = value; 1022 return this; 1023 } 1024 1025 /** 1026 * @return {@link #maxDosePerLifetime} (Upper limit on medication per lifetime of the patient.) 1027 */ 1028 public Quantity getMaxDosePerLifetime() { 1029 if (this.maxDosePerLifetime == null) 1030 if (Configuration.errorOnAutoCreate()) 1031 throw new Error("Attempt to auto-create Dosage.maxDosePerLifetime"); 1032 else if (Configuration.doAutoCreate()) 1033 this.maxDosePerLifetime = new Quantity(); // cc 1034 return this.maxDosePerLifetime; 1035 } 1036 1037 public boolean hasMaxDosePerLifetime() { 1038 return this.maxDosePerLifetime != null && !this.maxDosePerLifetime.isEmpty(); 1039 } 1040 1041 /** 1042 * @param value {@link #maxDosePerLifetime} (Upper limit on medication per lifetime of the patient.) 1043 */ 1044 public Dosage setMaxDosePerLifetime(Quantity value) { 1045 this.maxDosePerLifetime = value; 1046 return this; 1047 } 1048 1049 protected void listChildren(List<Property> children) { 1050 super.listChildren(children); 1051 children.add(new Property("sequence", "integer", "Indicates the order in which the dosage instructions should be applied or interpreted.", 0, 1, sequence)); 1052 children.add(new Property("text", "string", "Free text dosage instructions e.g. SIG.", 0, 1, text)); 1053 children.add(new Property("additionalInstruction", "CodeableConcept", "Supplemental instructions to the patient on how to take the medication (e.g. \"with meals\" or\"take half to one hour before food\") or warnings for the patient about the medication (e.g. \"may cause drowsiness\" or \"avoid exposure of skin to direct sunlight or sunlamps\").", 0, java.lang.Integer.MAX_VALUE, additionalInstruction)); 1054 children.add(new Property("patientInstruction", "string", "Instructions in terms that are understood by the patient or consumer.", 0, 1, patientInstruction)); 1055 children.add(new Property("timing", "Timing", "When medication should be administered.", 0, 1, timing)); 1056 children.add(new Property("asNeeded", "boolean", "Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option).", 0, 1, asNeeded)); 1057 children.add(new Property("asNeededFor", "CodeableConcept", "Indicates whether the Medication is only taken based on a precondition for taking the Medication (CodeableConcept).", 0, java.lang.Integer.MAX_VALUE, asNeededFor)); 1058 children.add(new Property("site", "CodeableConcept", "Body site to administer to.", 0, 1, site)); 1059 children.add(new Property("route", "CodeableConcept", "How drug should enter body.", 0, 1, route)); 1060 children.add(new Property("method", "CodeableConcept", "Technique for administering medication.", 0, 1, method)); 1061 children.add(new Property("doseAndRate", "", "Depending on the resource,this is the amount of medication administered, to be administered or typical amount to be administered.", 0, java.lang.Integer.MAX_VALUE, doseAndRate)); 1062 children.add(new Property("maxDosePerPeriod", "Ratio", "Upper limit on medication per unit of time.", 0, java.lang.Integer.MAX_VALUE, maxDosePerPeriod)); 1063 children.add(new Property("maxDosePerAdministration", "Quantity", "Upper limit on medication per administration.", 0, 1, maxDosePerAdministration)); 1064 children.add(new Property("maxDosePerLifetime", "Quantity", "Upper limit on medication per lifetime of the patient.", 0, 1, maxDosePerLifetime)); 1065 } 1066 1067 @Override 1068 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 1069 switch (_hash) { 1070 case 1349547969: /*sequence*/ return new Property("sequence", "integer", "Indicates the order in which the dosage instructions should be applied or interpreted.", 0, 1, sequence); 1071 case 3556653: /*text*/ return new Property("text", "string", "Free text dosage instructions e.g. SIG.", 0, 1, text); 1072 case 1623641575: /*additionalInstruction*/ return new Property("additionalInstruction", "CodeableConcept", "Supplemental instructions to the patient on how to take the medication (e.g. \"with meals\" or\"take half to one hour before food\") or warnings for the patient about the medication (e.g. \"may cause drowsiness\" or \"avoid exposure of skin to direct sunlight or sunlamps\").", 0, java.lang.Integer.MAX_VALUE, additionalInstruction); 1073 case 737543241: /*patientInstruction*/ return new Property("patientInstruction", "string", "Instructions in terms that are understood by the patient or consumer.", 0, 1, patientInstruction); 1074 case -873664438: /*timing*/ return new Property("timing", "Timing", "When medication should be administered.", 0, 1, timing); 1075 case -1432923513: /*asNeeded*/ return new Property("asNeeded", "boolean", "Indicates whether the Medication is only taken when needed within a specific dosing schedule (Boolean option).", 0, 1, asNeeded); 1076 case -544350014: /*asNeededFor*/ return new Property("asNeededFor", "CodeableConcept", "Indicates whether the Medication is only taken based on a precondition for taking the Medication (CodeableConcept).", 0, java.lang.Integer.MAX_VALUE, asNeededFor); 1077 case 3530567: /*site*/ return new Property("site", "CodeableConcept", "Body site to administer to.", 0, 1, site); 1078 case 108704329: /*route*/ return new Property("route", "CodeableConcept", "How drug should enter body.", 0, 1, route); 1079 case -1077554975: /*method*/ return new Property("method", "CodeableConcept", "Technique for administering medication.", 0, 1, method); 1080 case -611024774: /*doseAndRate*/ return new Property("doseAndRate", "", "Depending on the resource,this is the amount of medication administered, to be administered or typical amount to be administered.", 0, java.lang.Integer.MAX_VALUE, doseAndRate); 1081 case 1506263709: /*maxDosePerPeriod*/ return new Property("maxDosePerPeriod", "Ratio", "Upper limit on medication per unit of time.", 0, java.lang.Integer.MAX_VALUE, maxDosePerPeriod); 1082 case 2004889914: /*maxDosePerAdministration*/ return new Property("maxDosePerAdministration", "Quantity", "Upper limit on medication per administration.", 0, 1, maxDosePerAdministration); 1083 case 642099621: /*maxDosePerLifetime*/ return new Property("maxDosePerLifetime", "Quantity", "Upper limit on medication per lifetime of the patient.", 0, 1, maxDosePerLifetime); 1084 default: return super.getNamedProperty(_hash, _name, _checkValid); 1085 } 1086 1087 } 1088 1089 @Override 1090 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 1091 switch (hash) { 1092 case 1349547969: /*sequence*/ return this.sequence == null ? new Base[0] : new Base[] {this.sequence}; // IntegerType 1093 case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType 1094 case 1623641575: /*additionalInstruction*/ return this.additionalInstruction == null ? new Base[0] : this.additionalInstruction.toArray(new Base[this.additionalInstruction.size()]); // CodeableConcept 1095 case 737543241: /*patientInstruction*/ return this.patientInstruction == null ? new Base[0] : new Base[] {this.patientInstruction}; // StringType 1096 case -873664438: /*timing*/ return this.timing == null ? new Base[0] : new Base[] {this.timing}; // Timing 1097 case -1432923513: /*asNeeded*/ return this.asNeeded == null ? new Base[0] : new Base[] {this.asNeeded}; // BooleanType 1098 case -544350014: /*asNeededFor*/ return this.asNeededFor == null ? new Base[0] : this.asNeededFor.toArray(new Base[this.asNeededFor.size()]); // CodeableConcept 1099 case 3530567: /*site*/ return this.site == null ? new Base[0] : new Base[] {this.site}; // CodeableConcept 1100 case 108704329: /*route*/ return this.route == null ? new Base[0] : new Base[] {this.route}; // CodeableConcept 1101 case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // CodeableConcept 1102 case -611024774: /*doseAndRate*/ return this.doseAndRate == null ? new Base[0] : this.doseAndRate.toArray(new Base[this.doseAndRate.size()]); // DosageDoseAndRateComponent 1103 case 1506263709: /*maxDosePerPeriod*/ return this.maxDosePerPeriod == null ? new Base[0] : this.maxDosePerPeriod.toArray(new Base[this.maxDosePerPeriod.size()]); // Ratio 1104 case 2004889914: /*maxDosePerAdministration*/ return this.maxDosePerAdministration == null ? new Base[0] : new Base[] {this.maxDosePerAdministration}; // Quantity 1105 case 642099621: /*maxDosePerLifetime*/ return this.maxDosePerLifetime == null ? new Base[0] : new Base[] {this.maxDosePerLifetime}; // Quantity 1106 default: return super.getProperty(hash, name, checkValid); 1107 } 1108 1109 } 1110 1111 @Override 1112 public Base setProperty(int hash, String name, Base value) throws FHIRException { 1113 switch (hash) { 1114 case 1349547969: // sequence 1115 this.sequence = TypeConvertor.castToInteger(value); // IntegerType 1116 return value; 1117 case 3556653: // text 1118 this.text = TypeConvertor.castToString(value); // StringType 1119 return value; 1120 case 1623641575: // additionalInstruction 1121 this.getAdditionalInstruction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept 1122 return value; 1123 case 737543241: // patientInstruction 1124 this.patientInstruction = TypeConvertor.castToString(value); // StringType 1125 return value; 1126 case -873664438: // timing 1127 this.timing = TypeConvertor.castToTiming(value); // Timing 1128 return value; 1129 case -1432923513: // asNeeded 1130 this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType 1131 return value; 1132 case -544350014: // asNeededFor 1133 this.getAsNeededFor().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept 1134 return value; 1135 case 3530567: // site 1136 this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1137 return value; 1138 case 108704329: // route 1139 this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1140 return value; 1141 case -1077554975: // method 1142 this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1143 return value; 1144 case -611024774: // doseAndRate 1145 this.getDoseAndRate().add((DosageDoseAndRateComponent) value); // DosageDoseAndRateComponent 1146 return value; 1147 case 1506263709: // maxDosePerPeriod 1148 this.getMaxDosePerPeriod().add(TypeConvertor.castToRatio(value)); // Ratio 1149 return value; 1150 case 2004889914: // maxDosePerAdministration 1151 this.maxDosePerAdministration = TypeConvertor.castToQuantity(value); // Quantity 1152 return value; 1153 case 642099621: // maxDosePerLifetime 1154 this.maxDosePerLifetime = TypeConvertor.castToQuantity(value); // Quantity 1155 return value; 1156 default: return super.setProperty(hash, name, value); 1157 } 1158 1159 } 1160 1161 @Override 1162 public Base setProperty(String name, Base value) throws FHIRException { 1163 if (name.equals("sequence")) { 1164 this.sequence = TypeConvertor.castToInteger(value); // IntegerType 1165 } else if (name.equals("text")) { 1166 this.text = TypeConvertor.castToString(value); // StringType 1167 } else if (name.equals("additionalInstruction")) { 1168 this.getAdditionalInstruction().add(TypeConvertor.castToCodeableConcept(value)); 1169 } else if (name.equals("patientInstruction")) { 1170 this.patientInstruction = TypeConvertor.castToString(value); // StringType 1171 } else if (name.equals("timing")) { 1172 this.timing = TypeConvertor.castToTiming(value); // Timing 1173 } else if (name.equals("asNeeded")) { 1174 this.asNeeded = TypeConvertor.castToBoolean(value); // BooleanType 1175 } else if (name.equals("asNeededFor")) { 1176 this.getAsNeededFor().add(TypeConvertor.castToCodeableConcept(value)); 1177 } else if (name.equals("site")) { 1178 this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1179 } else if (name.equals("route")) { 1180 this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1181 } else if (name.equals("method")) { 1182 this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept 1183 } else if (name.equals("doseAndRate")) { 1184 this.getDoseAndRate().add((DosageDoseAndRateComponent) value); 1185 } else if (name.equals("maxDosePerPeriod")) { 1186 this.getMaxDosePerPeriod().add(TypeConvertor.castToRatio(value)); 1187 } else if (name.equals("maxDosePerAdministration")) { 1188 this.maxDosePerAdministration = TypeConvertor.castToQuantity(value); // Quantity 1189 } else if (name.equals("maxDosePerLifetime")) { 1190 this.maxDosePerLifetime = TypeConvertor.castToQuantity(value); // Quantity 1191 } else 1192 return super.setProperty(name, value); 1193 return value; 1194 } 1195 1196 @Override 1197 public Base makeProperty(int hash, String name) throws FHIRException { 1198 switch (hash) { 1199 case 1349547969: return getSequenceElement(); 1200 case 3556653: return getTextElement(); 1201 case 1623641575: return addAdditionalInstruction(); 1202 case 737543241: return getPatientInstructionElement(); 1203 case -873664438: return getTiming(); 1204 case -1432923513: return getAsNeededElement(); 1205 case -544350014: return addAsNeededFor(); 1206 case 3530567: return getSite(); 1207 case 108704329: return getRoute(); 1208 case -1077554975: return getMethod(); 1209 case -611024774: return addDoseAndRate(); 1210 case 1506263709: return addMaxDosePerPeriod(); 1211 case 2004889914: return getMaxDosePerAdministration(); 1212 case 642099621: return getMaxDosePerLifetime(); 1213 default: return super.makeProperty(hash, name); 1214 } 1215 1216 } 1217 1218 @Override 1219 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1220 switch (hash) { 1221 case 1349547969: /*sequence*/ return new String[] {"integer"}; 1222 case 3556653: /*text*/ return new String[] {"string"}; 1223 case 1623641575: /*additionalInstruction*/ return new String[] {"CodeableConcept"}; 1224 case 737543241: /*patientInstruction*/ return new String[] {"string"}; 1225 case -873664438: /*timing*/ return new String[] {"Timing"}; 1226 case -1432923513: /*asNeeded*/ return new String[] {"boolean"}; 1227 case -544350014: /*asNeededFor*/ return new String[] {"CodeableConcept"}; 1228 case 3530567: /*site*/ return new String[] {"CodeableConcept"}; 1229 case 108704329: /*route*/ return new String[] {"CodeableConcept"}; 1230 case -1077554975: /*method*/ return new String[] {"CodeableConcept"}; 1231 case -611024774: /*doseAndRate*/ return new String[] {}; 1232 case 1506263709: /*maxDosePerPeriod*/ return new String[] {"Ratio"}; 1233 case 2004889914: /*maxDosePerAdministration*/ return new String[] {"Quantity"}; 1234 case 642099621: /*maxDosePerLifetime*/ return new String[] {"Quantity"}; 1235 default: return super.getTypesForProperty(hash, name); 1236 } 1237 1238 } 1239 1240 @Override 1241 public Base addChild(String name) throws FHIRException { 1242 if (name.equals("sequence")) { 1243 throw new FHIRException("Cannot call addChild on a singleton property Dosage.sequence"); 1244 } 1245 else if (name.equals("text")) { 1246 throw new FHIRException("Cannot call addChild on a singleton property Dosage.text"); 1247 } 1248 else if (name.equals("additionalInstruction")) { 1249 return addAdditionalInstruction(); 1250 } 1251 else if (name.equals("patientInstruction")) { 1252 throw new FHIRException("Cannot call addChild on a singleton property Dosage.patientInstruction"); 1253 } 1254 else if (name.equals("timing")) { 1255 this.timing = new Timing(); 1256 return this.timing; 1257 } 1258 else if (name.equals("asNeeded")) { 1259 throw new FHIRException("Cannot call addChild on a singleton property Dosage.asNeeded"); 1260 } 1261 else if (name.equals("asNeededFor")) { 1262 return addAsNeededFor(); 1263 } 1264 else if (name.equals("site")) { 1265 this.site = new CodeableConcept(); 1266 return this.site; 1267 } 1268 else if (name.equals("route")) { 1269 this.route = new CodeableConcept(); 1270 return this.route; 1271 } 1272 else if (name.equals("method")) { 1273 this.method = new CodeableConcept(); 1274 return this.method; 1275 } 1276 else if (name.equals("doseAndRate")) { 1277 return addDoseAndRate(); 1278 } 1279 else if (name.equals("maxDosePerPeriod")) { 1280 return addMaxDosePerPeriod(); 1281 } 1282 else if (name.equals("maxDosePerAdministration")) { 1283 this.maxDosePerAdministration = new Quantity(); 1284 return this.maxDosePerAdministration; 1285 } 1286 else if (name.equals("maxDosePerLifetime")) { 1287 this.maxDosePerLifetime = new Quantity(); 1288 return this.maxDosePerLifetime; 1289 } 1290 else 1291 return super.addChild(name); 1292 } 1293 1294 public String fhirType() { 1295 return "Dosage"; 1296 1297 } 1298 1299 public Dosage copy() { 1300 Dosage dst = new Dosage(); 1301 copyValues(dst); 1302 return dst; 1303 } 1304 1305 public void copyValues(Dosage dst) { 1306 super.copyValues(dst); 1307 dst.sequence = sequence == null ? null : sequence.copy(); 1308 dst.text = text == null ? null : text.copy(); 1309 if (additionalInstruction != null) { 1310 dst.additionalInstruction = new ArrayList<CodeableConcept>(); 1311 for (CodeableConcept i : additionalInstruction) 1312 dst.additionalInstruction.add(i.copy()); 1313 }; 1314 dst.patientInstruction = patientInstruction == null ? null : patientInstruction.copy(); 1315 dst.timing = timing == null ? null : timing.copy(); 1316 dst.asNeeded = asNeeded == null ? null : asNeeded.copy(); 1317 if (asNeededFor != null) { 1318 dst.asNeededFor = new ArrayList<CodeableConcept>(); 1319 for (CodeableConcept i : asNeededFor) 1320 dst.asNeededFor.add(i.copy()); 1321 }; 1322 dst.site = site == null ? null : site.copy(); 1323 dst.route = route == null ? null : route.copy(); 1324 dst.method = method == null ? null : method.copy(); 1325 if (doseAndRate != null) { 1326 dst.doseAndRate = new ArrayList<DosageDoseAndRateComponent>(); 1327 for (DosageDoseAndRateComponent i : doseAndRate) 1328 dst.doseAndRate.add(i.copy()); 1329 }; 1330 if (maxDosePerPeriod != null) { 1331 dst.maxDosePerPeriod = new ArrayList<Ratio>(); 1332 for (Ratio i : maxDosePerPeriod) 1333 dst.maxDosePerPeriod.add(i.copy()); 1334 }; 1335 dst.maxDosePerAdministration = maxDosePerAdministration == null ? null : maxDosePerAdministration.copy(); 1336 dst.maxDosePerLifetime = maxDosePerLifetime == null ? null : maxDosePerLifetime.copy(); 1337 } 1338 1339 protected Dosage typedCopy() { 1340 return copy(); 1341 } 1342 1343 @Override 1344 public boolean equalsDeep(Base other_) { 1345 if (!super.equalsDeep(other_)) 1346 return false; 1347 if (!(other_ instanceof Dosage)) 1348 return false; 1349 Dosage o = (Dosage) other_; 1350 return compareDeep(sequence, o.sequence, true) && compareDeep(text, o.text, true) && compareDeep(additionalInstruction, o.additionalInstruction, true) 1351 && compareDeep(patientInstruction, o.patientInstruction, true) && compareDeep(timing, o.timing, true) 1352 && compareDeep(asNeeded, o.asNeeded, true) && compareDeep(asNeededFor, o.asNeededFor, true) && compareDeep(site, o.site, true) 1353 && compareDeep(route, o.route, true) && compareDeep(method, o.method, true) && compareDeep(doseAndRate, o.doseAndRate, true) 1354 && compareDeep(maxDosePerPeriod, o.maxDosePerPeriod, true) && compareDeep(maxDosePerAdministration, o.maxDosePerAdministration, true) 1355 && compareDeep(maxDosePerLifetime, o.maxDosePerLifetime, true); 1356 } 1357 1358 @Override 1359 public boolean equalsShallow(Base other_) { 1360 if (!super.equalsShallow(other_)) 1361 return false; 1362 if (!(other_ instanceof Dosage)) 1363 return false; 1364 Dosage o = (Dosage) other_; 1365 return compareValues(sequence, o.sequence, true) && compareValues(text, o.text, true) && compareValues(patientInstruction, o.patientInstruction, true) 1366 && compareValues(asNeeded, o.asNeeded, true); 1367 } 1368 1369 public boolean isEmpty() { 1370 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, text, additionalInstruction 1371 , patientInstruction, timing, asNeeded, asNeededFor, site, route, method, doseAndRate 1372 , maxDosePerPeriod, maxDosePerAdministration, maxDosePerLifetime); 1373 } 1374 1375 1376} 1377