001package org.hl7.fhir.r4.model; 002 003/* 004 Copyright (c) 2011+, HL7, Inc. 005 All rights reserved. 006 007 Redistribution and use in source and binary forms, with or without modification, 008 are permitted provided that the following conditions are met: 009 010 * Redistributions of source code must retain the above copyright notice, this 011 list of conditions and the following disclaimer. 012 * Redistributions in binary form must reproduce the above copyright notice, 013 this list of conditions and the following disclaimer in the documentation 014 and/or other materials provided with the distribution. 015 * Neither the name of HL7 nor the names of its contributors may be used to 016 endorse or promote products derived from this software without specific 017 prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 022 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 023 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 025 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 POSSIBILITY OF SUCH DAMAGE. 029 030*/ 031 032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1 033import java.util.ArrayList; 034import java.util.Date; 035import java.util.List; 036 037import org.hl7.fhir.exceptions.FHIRException; 038import org.hl7.fhir.r4.model.Enumerations.PublicationStatus; 039import org.hl7.fhir.r4.model.Enumerations.PublicationStatusEnumFactory; 040import org.hl7.fhir.utilities.Utilities; 041 042import ca.uhn.fhir.model.api.annotation.Child; 043import ca.uhn.fhir.model.api.annotation.Description; 044 045/** 046 * Common Ancestor declaration for conformance and knowledge artifact resources. 047 */ 048public abstract class MetadataResource extends DomainResource { 049 050 /** 051 * An absolute URI that is used to identify this metadata resource when it is 052 * referenced in a specification, model, design or an instance; also called its 053 * canonical identifier. This SHOULD be globally unique and SHOULD be a literal 054 * address at which at which an authoritative instance of this metadata resource 055 * is (or will be) published. This URL can be the target of a canonical 056 * reference. It SHALL remain the same when the metadata resource is stored on 057 * different servers. 058 */ 059 @Child(name = "url", type = { UriType.class }, order = 0, min = 0, max = 1, modifier = false, summary = true) 060 @Description(shortDefinition = "Canonical identifier for this metadata resource, represented as a URI (globally unique)", formalDefinition = "An absolute URI that is used to identify this metadata resource when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this metadata resource is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the metadata resource is stored on different servers.") 061 protected UriType url; 062 063 /** 064 * The identifier that is used to identify this version of the metadata resource 065 * when it is referenced in a specification, model, design or instance. This is 066 * an arbitrary value managed by the metadata resource author and is not 067 * expected to be globally unique. For example, it might be a timestamp (e.g. 068 * yyyymmdd) if a managed version is not available. There is also no expectation 069 * that versions can be placed in a lexicographical sequence. 070 */ 071 @Child(name = "version", type = { StringType.class }, order = 1, min = 0, max = 1, modifier = false, summary = true) 072 @Description(shortDefinition = "Business version of the metadata resource", formalDefinition = "The identifier that is used to identify this version of the metadata resource when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the metadata resource author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.") 073 protected StringType version; 074 075 /** 076 * A natural language name identifying the metadata resource. This name should 077 * be usable as an identifier for the module by machine processing applications 078 * such as code generation. 079 */ 080 @Child(name = "name", type = { StringType.class }, order = 2, min = 0, max = 1, modifier = false, summary = true) 081 @Description(shortDefinition = "Name for this metadata resource (computer friendly)", formalDefinition = "A natural language name identifying the metadata resource. This name should be usable as an identifier for the module by machine processing applications such as code generation.") 082 protected StringType name; 083 084 /** 085 * A short, descriptive, user-friendly title for the metadata resource. 086 */ 087 @Child(name = "title", type = { StringType.class }, order = 3, min = 0, max = 1, modifier = false, summary = true) 088 @Description(shortDefinition = "Name for this metadata resource (human friendly)", formalDefinition = "A short, descriptive, user-friendly title for the metadata resource.") 089 protected StringType title; 090 091 /** 092 * The status of this metadata resource. Enables tracking the life-cycle of the 093 * content. 094 */ 095 @Child(name = "status", type = { CodeType.class }, order = 4, min = 1, max = 1, modifier = true, summary = true) 096 @Description(shortDefinition = "draft | active | retired | unknown", formalDefinition = "The status of this metadata resource. Enables tracking the life-cycle of the content.") 097 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/publication-status") 098 protected Enumeration<PublicationStatus> status; 099 100 /** 101 * A Boolean value to indicate that this metadata resource is authored for 102 * testing purposes (or education/evaluation/marketing) and is not intended to 103 * be used for genuine usage. 104 */ 105 @Child(name = "experimental", type = { 106 BooleanType.class }, order = 5, min = 0, max = 1, modifier = false, summary = true) 107 @Description(shortDefinition = "For testing purposes, not real usage", formalDefinition = "A Boolean value to indicate that this metadata resource is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.") 108 protected BooleanType experimental; 109 110 /** 111 * The date (and optionally time) when the metadata resource was published. The 112 * date must change when the business version changes and it must change if the 113 * status code changes. In addition, it should change when the substantive 114 * content of the metadata resource changes. 115 */ 116 @Child(name = "date", type = { DateTimeType.class }, order = 6, min = 0, max = 1, modifier = false, summary = true) 117 @Description(shortDefinition = "Date last changed", formalDefinition = "The date (and optionally time) when the metadata resource was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the metadata resource changes.") 118 protected DateTimeType date; 119 120 /** 121 * The name of the organization or individual that published the metadata 122 * resource. 123 */ 124 @Child(name = "publisher", type = { StringType.class }, order = 7, min = 0, max = 1, modifier = false, summary = true) 125 @Description(shortDefinition = "Name of the publisher (organization or individual)", formalDefinition = "The name of the organization or individual that published the metadata resource.") 126 protected StringType publisher; 127 128 /** 129 * Contact details to assist a user in finding and communicating with the 130 * publisher. 131 */ 132 @Child(name = "contact", type = { 133 ContactDetail.class }, order = 8, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 134 @Description(shortDefinition = "Contact details for the publisher", formalDefinition = "Contact details to assist a user in finding and communicating with the publisher.") 135 protected List<ContactDetail> contact; 136 137 /** 138 * A free text natural language description of the metadata resource from a 139 * consumer's perspective. 140 */ 141 @Child(name = "description", type = { 142 MarkdownType.class }, order = 9, min = 0, max = 1, modifier = false, summary = false) 143 @Description(shortDefinition = "Natural language description of the metadata resource", formalDefinition = "A free text natural language description of the metadata resource from a consumer's perspective.") 144 protected MarkdownType description; 145 146 /** 147 * The content was developed with a focus and intent of supporting the contexts 148 * that are listed. These contexts may be general categories (gender, age, ...) 149 * or may be references to specific programs (insurance plans, studies, ...) and 150 * may be used to assist with indexing and searching for appropriate metadata 151 * resource instances. 152 */ 153 @Child(name = "useContext", type = { 154 UsageContext.class }, order = 10, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 155 @Description(shortDefinition = "The context that the content is intended to support", formalDefinition = "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate metadata resource instances.") 156 protected List<UsageContext> useContext; 157 158 /** 159 * A legal or geographic region in which the metadata resource is intended to be 160 * used. 161 */ 162 @Child(name = "jurisdiction", type = { 163 CodeableConcept.class }, order = 11, min = 0, max = Child.MAX_UNLIMITED, modifier = false, summary = true) 164 @Description(shortDefinition = "Intended jurisdiction for metadata resource (if applicable)", formalDefinition = "A legal or geographic region in which the metadata resource is intended to be used.") 165 @ca.uhn.fhir.model.api.annotation.Binding(valueSet = "http://hl7.org/fhir/ValueSet/jurisdiction") 166 protected List<CodeableConcept> jurisdiction; 167 168 private static final long serialVersionUID = 1952104592L; 169 170 /** 171 * Constructor 172 */ 173 public MetadataResource() { 174 super(); 175 } 176 177 /** 178 * Constructor 179 */ 180 public MetadataResource(Enumeration<PublicationStatus> status) { 181 super(); 182 this.status = status; 183 } 184 185 /** 186 * @return {@link #url} (An absolute URI that is used to identify this metadata 187 * resource when it is referenced in a specification, model, design or 188 * an instance; also called its canonical identifier. This SHOULD be 189 * globally unique and SHOULD be a literal address at which at which an 190 * authoritative instance of this metadata resource is (or will be) 191 * published. This URL can be the target of a canonical reference. It 192 * SHALL remain the same when the metadata resource is stored on 193 * different servers.). This is the underlying object with id, value and 194 * extensions. The accessor "getUrl" gives direct access to the value 195 */ 196 public UriType getUrlElement() { 197 if (this.url == null) 198 if (Configuration.errorOnAutoCreate()) 199 throw new Error("Attempt to auto-create MetadataResource.url"); 200 else if (Configuration.doAutoCreate()) 201 this.url = new UriType(); // bb 202 return this.url; 203 } 204 205 public boolean hasUrlElement() { 206 return this.url != null && !this.url.isEmpty(); 207 } 208 209 public boolean hasUrl() { 210 return this.url != null && !this.url.isEmpty(); 211 } 212 213 /** 214 * @param value {@link #url} (An absolute URI that is used to identify this 215 * metadata resource when it is referenced in a specification, 216 * model, design or an instance; also called its canonical 217 * identifier. This SHOULD be globally unique and SHOULD be a 218 * literal address at which at which an authoritative instance of 219 * this metadata resource is (or will be) published. This URL can 220 * be the target of a canonical reference. It SHALL remain the same 221 * when the metadata resource is stored on different servers.). 222 * This is the underlying object with id, value and extensions. The 223 * accessor "getUrl" gives direct access to the value 224 */ 225 public MetadataResource setUrlElement(UriType value) { 226 this.url = value; 227 return this; 228 } 229 230 /** 231 * @return An absolute URI that is used to identify this metadata resource when 232 * it is referenced in a specification, model, design or an instance; 233 * also called its canonical identifier. This SHOULD be globally unique 234 * and SHOULD be a literal address at which at which an authoritative 235 * instance of this metadata resource is (or will be) published. This 236 * URL can be the target of a canonical reference. It SHALL remain the 237 * same when the metadata resource is stored on different servers. 238 */ 239 public String getUrl() { 240 return this.url == null ? null : this.url.getValue(); 241 } 242 243 /** 244 * @param value An absolute URI that is used to identify this metadata resource 245 * when it is referenced in a specification, model, design or an 246 * instance; also called its canonical identifier. This SHOULD be 247 * globally unique and SHOULD be a literal address at which at 248 * which an authoritative instance of this metadata resource is (or 249 * will be) published. This URL can be the target of a canonical 250 * reference. It SHALL remain the same when the metadata resource 251 * is stored on different servers. 252 */ 253 public MetadataResource setUrl(String value) { 254 if (Utilities.noString(value)) 255 this.url = null; 256 else { 257 if (this.url == null) 258 this.url = new UriType(); 259 this.url.setValue(value); 260 } 261 return this; 262 } 263 264 /** 265 * @return {@link #version} (The identifier that is used to identify this 266 * version of the metadata resource when it is referenced in a 267 * specification, model, design or instance. This is an arbitrary value 268 * managed by the metadata resource author and is not expected to be 269 * globally unique. For example, it might be a timestamp (e.g. yyyymmdd) 270 * if a managed version is not available. There is also no expectation 271 * that versions can be placed in a lexicographical sequence.). This is 272 * the underlying object with id, value and extensions. The accessor 273 * "getVersion" gives direct access to the value 274 */ 275 public StringType getVersionElement() { 276 if (this.version == null) 277 if (Configuration.errorOnAutoCreate()) 278 throw new Error("Attempt to auto-create MetadataResource.version"); 279 else if (Configuration.doAutoCreate()) 280 this.version = new StringType(); // bb 281 return this.version; 282 } 283 284 public boolean hasVersionElement() { 285 return this.version != null && !this.version.isEmpty(); 286 } 287 288 public boolean hasVersion() { 289 return this.version != null && !this.version.isEmpty(); 290 } 291 292 /** 293 * @param value {@link #version} (The identifier that is used to identify this 294 * version of the metadata resource when it is referenced in a 295 * specification, model, design or instance. This is an arbitrary 296 * value managed by the metadata resource author and is not 297 * expected to be globally unique. For example, it might be a 298 * timestamp (e.g. yyyymmdd) if a managed version is not available. 299 * There is also no expectation that versions can be placed in a 300 * lexicographical sequence.). This is the underlying object with 301 * id, value and extensions. The accessor "getVersion" gives direct 302 * access to the value 303 */ 304 public MetadataResource setVersionElement(StringType value) { 305 this.version = value; 306 return this; 307 } 308 309 /** 310 * @return The identifier that is used to identify this version of the metadata 311 * resource when it is referenced in a specification, model, design or 312 * instance. This is an arbitrary value managed by the metadata resource 313 * author and is not expected to be globally unique. For example, it 314 * might be a timestamp (e.g. yyyymmdd) if a managed version is not 315 * available. There is also no expectation that versions can be placed 316 * in a lexicographical sequence. 317 */ 318 public String getVersion() { 319 return this.version == null ? null : this.version.getValue(); 320 } 321 322 /** 323 * @param value The identifier that is used to identify this version of the 324 * metadata resource when it is referenced in a specification, 325 * model, design or instance. This is an arbitrary value managed by 326 * the metadata resource author and is not expected to be globally 327 * unique. For example, it might be a timestamp (e.g. yyyymmdd) if 328 * a managed version is not available. There is also no expectation 329 * that versions can be placed in a lexicographical sequence. 330 */ 331 public MetadataResource setVersion(String value) { 332 if (Utilities.noString(value)) 333 this.version = null; 334 else { 335 if (this.version == null) 336 this.version = new StringType(); 337 this.version.setValue(value); 338 } 339 return this; 340 } 341 342 /** 343 * @return {@link #name} (A natural language name identifying the metadata 344 * resource. This name should be usable as an identifier for the module 345 * by machine processing applications such as code generation.). This is 346 * the underlying object with id, value and extensions. The accessor 347 * "getName" gives direct access to the value 348 */ 349 public StringType getNameElement() { 350 if (this.name == null) 351 if (Configuration.errorOnAutoCreate()) 352 throw new Error("Attempt to auto-create MetadataResource.name"); 353 else if (Configuration.doAutoCreate()) 354 this.name = new StringType(); // bb 355 return this.name; 356 } 357 358 public boolean hasNameElement() { 359 return this.name != null && !this.name.isEmpty(); 360 } 361 362 public boolean hasName() { 363 return this.name != null && !this.name.isEmpty(); 364 } 365 366 /** 367 * @param value {@link #name} (A natural language name identifying the metadata 368 * resource. This name should be usable as an identifier for the 369 * module by machine processing applications such as code 370 * generation.). This is the underlying object with id, value and 371 * extensions. The accessor "getName" gives direct access to the 372 * value 373 */ 374 public MetadataResource setNameElement(StringType value) { 375 this.name = value; 376 return this; 377 } 378 379 /** 380 * @return A natural language name identifying the metadata resource. This name 381 * should be usable as an identifier for the module by machine 382 * processing applications such as code generation. 383 */ 384 public String getName() { 385 return this.name == null ? null : this.name.getValue(); 386 } 387 388 /** 389 * @param value A natural language name identifying the metadata resource. This 390 * name should be usable as an identifier for the module by machine 391 * processing applications such as code generation. 392 */ 393 public MetadataResource setName(String value) { 394 if (Utilities.noString(value)) 395 this.name = null; 396 else { 397 if (this.name == null) 398 this.name = new StringType(); 399 this.name.setValue(value); 400 } 401 return this; 402 } 403 404 /** 405 * @return {@link #title} (A short, descriptive, user-friendly title for the 406 * metadata resource.). This is the underlying object with id, value and 407 * extensions. The accessor "getTitle" gives direct access to the value 408 */ 409 public StringType getTitleElement() { 410 if (this.title == null) 411 if (Configuration.errorOnAutoCreate()) 412 throw new Error("Attempt to auto-create MetadataResource.title"); 413 else if (Configuration.doAutoCreate()) 414 this.title = new StringType(); // bb 415 return this.title; 416 } 417 418 public boolean hasTitleElement() { 419 return this.title != null && !this.title.isEmpty(); 420 } 421 422 public boolean hasTitle() { 423 return this.title != null && !this.title.isEmpty(); 424 } 425 426 /** 427 * @param value {@link #title} (A short, descriptive, user-friendly title for 428 * the metadata resource.). This is the underlying object with id, 429 * value and extensions. The accessor "getTitle" gives direct 430 * access to the value 431 */ 432 public MetadataResource setTitleElement(StringType value) { 433 this.title = value; 434 return this; 435 } 436 437 /** 438 * @return A short, descriptive, user-friendly title for the metadata resource. 439 */ 440 public String getTitle() { 441 return this.title == null ? null : this.title.getValue(); 442 } 443 444 /** 445 * @param value A short, descriptive, user-friendly title for the metadata 446 * resource. 447 */ 448 public MetadataResource setTitle(String value) { 449 if (Utilities.noString(value)) 450 this.title = null; 451 else { 452 if (this.title == null) 453 this.title = new StringType(); 454 this.title.setValue(value); 455 } 456 return this; 457 } 458 459 /** 460 * @return {@link #status} (The status of this metadata resource. Enables 461 * tracking the life-cycle of the content.). This is the underlying 462 * object with id, value and extensions. The accessor "getStatus" gives 463 * direct access to the value 464 */ 465 public Enumeration<PublicationStatus> getStatusElement() { 466 if (this.status == null) 467 if (Configuration.errorOnAutoCreate()) 468 throw new Error("Attempt to auto-create MetadataResource.status"); 469 else if (Configuration.doAutoCreate()) 470 this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb 471 return this.status; 472 } 473 474 public boolean hasStatusElement() { 475 return this.status != null && !this.status.isEmpty(); 476 } 477 478 public boolean hasStatus() { 479 return this.status != null && !this.status.isEmpty(); 480 } 481 482 /** 483 * @param value {@link #status} (The status of this metadata resource. Enables 484 * tracking the life-cycle of the content.). This is the underlying 485 * object with id, value and extensions. The accessor "getStatus" 486 * gives direct access to the value 487 */ 488 public MetadataResource setStatusElement(Enumeration<PublicationStatus> value) { 489 this.status = value; 490 return this; 491 } 492 493 /** 494 * @return The status of this metadata resource. Enables tracking the life-cycle 495 * of the content. 496 */ 497 public PublicationStatus getStatus() { 498 return this.status == null ? null : this.status.getValue(); 499 } 500 501 /** 502 * @param value The status of this metadata resource. Enables tracking the 503 * life-cycle of the content. 504 */ 505 public MetadataResource setStatus(PublicationStatus value) { 506 if (this.status == null) 507 this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); 508 this.status.setValue(value); 509 return this; 510 } 511 512 /** 513 * @return {@link #experimental} (A Boolean value to indicate that this metadata 514 * resource is authored for testing purposes (or 515 * education/evaluation/marketing) and is not intended to be used for 516 * genuine usage.). This is the underlying object with id, value and 517 * extensions. The accessor "getExperimental" gives direct access to the 518 * value 519 */ 520 public BooleanType getExperimentalElement() { 521 if (this.experimental == null) 522 if (Configuration.errorOnAutoCreate()) 523 throw new Error("Attempt to auto-create MetadataResource.experimental"); 524 else if (Configuration.doAutoCreate()) 525 this.experimental = new BooleanType(); // bb 526 return this.experimental; 527 } 528 529 public boolean hasExperimentalElement() { 530 return this.experimental != null && !this.experimental.isEmpty(); 531 } 532 533 public boolean hasExperimental() { 534 return this.experimental != null && !this.experimental.isEmpty(); 535 } 536 537 /** 538 * @param value {@link #experimental} (A Boolean value to indicate that this 539 * metadata resource is authored for testing purposes (or 540 * education/evaluation/marketing) and is not intended to be used 541 * for genuine usage.). This is the underlying object with id, 542 * value and extensions. The accessor "getExperimental" gives 543 * direct access to the value 544 */ 545 public MetadataResource setExperimentalElement(BooleanType value) { 546 this.experimental = value; 547 return this; 548 } 549 550 /** 551 * @return A Boolean value to indicate that this metadata resource is authored 552 * for testing purposes (or education/evaluation/marketing) and is not 553 * intended to be used for genuine usage. 554 */ 555 public boolean getExperimental() { 556 return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue(); 557 } 558 559 /** 560 * @param value A Boolean value to indicate that this metadata resource is 561 * authored for testing purposes (or 562 * education/evaluation/marketing) and is not intended to be used 563 * for genuine usage. 564 */ 565 public MetadataResource setExperimental(boolean value) { 566 if (this.experimental == null) 567 this.experimental = new BooleanType(); 568 this.experimental.setValue(value); 569 return this; 570 } 571 572 /** 573 * @return {@link #date} (The date (and optionally time) when the metadata 574 * resource was published. The date must change when the business 575 * version changes and it must change if the status code changes. In 576 * addition, it should change when the substantive content of the 577 * metadata resource changes.). This is the underlying object with id, 578 * value and extensions. The accessor "getDate" gives direct access to 579 * the value 580 */ 581 public DateTimeType getDateElement() { 582 if (this.date == null) 583 if (Configuration.errorOnAutoCreate()) 584 throw new Error("Attempt to auto-create MetadataResource.date"); 585 else if (Configuration.doAutoCreate()) 586 this.date = new DateTimeType(); // bb 587 return this.date; 588 } 589 590 public boolean hasDateElement() { 591 return this.date != null && !this.date.isEmpty(); 592 } 593 594 public boolean hasDate() { 595 return this.date != null && !this.date.isEmpty(); 596 } 597 598 /** 599 * @param value {@link #date} (The date (and optionally time) when the metadata 600 * resource was published. The date must change when the business 601 * version changes and it must change if the status code changes. 602 * In addition, it should change when the substantive content of 603 * the metadata resource changes.). This is the underlying object 604 * with id, value and extensions. The accessor "getDate" gives 605 * direct access to the value 606 */ 607 public MetadataResource setDateElement(DateTimeType value) { 608 this.date = value; 609 return this; 610 } 611 612 /** 613 * @return The date (and optionally time) when the metadata resource was 614 * published. The date must change when the business version changes and 615 * it must change if the status code changes. In addition, it should 616 * change when the substantive content of the metadata resource changes. 617 */ 618 public Date getDate() { 619 return this.date == null ? null : this.date.getValue(); 620 } 621 622 /** 623 * @param value The date (and optionally time) when the metadata resource was 624 * published. The date must change when the business version 625 * changes and it must change if the status code changes. In 626 * addition, it should change when the substantive content of the 627 * metadata resource changes. 628 */ 629 public MetadataResource setDate(Date value) { 630 if (value == null) 631 this.date = null; 632 else { 633 if (this.date == null) 634 this.date = new DateTimeType(); 635 this.date.setValue(value); 636 } 637 return this; 638 } 639 640 /** 641 * @return {@link #publisher} (The name of the organization or individual that 642 * published the metadata resource.). This is the underlying object with 643 * id, value and extensions. The accessor "getPublisher" gives direct 644 * access to the value 645 */ 646 public StringType getPublisherElement() { 647 if (this.publisher == null) 648 if (Configuration.errorOnAutoCreate()) 649 throw new Error("Attempt to auto-create MetadataResource.publisher"); 650 else if (Configuration.doAutoCreate()) 651 this.publisher = new StringType(); // bb 652 return this.publisher; 653 } 654 655 public boolean hasPublisherElement() { 656 return this.publisher != null && !this.publisher.isEmpty(); 657 } 658 659 public boolean hasPublisher() { 660 return this.publisher != null && !this.publisher.isEmpty(); 661 } 662 663 /** 664 * @param value {@link #publisher} (The name of the organization or individual 665 * that published the metadata resource.). This is the underlying 666 * object with id, value and extensions. The accessor 667 * "getPublisher" gives direct access to the value 668 */ 669 public MetadataResource setPublisherElement(StringType value) { 670 this.publisher = value; 671 return this; 672 } 673 674 /** 675 * @return The name of the organization or individual that published the 676 * metadata resource. 677 */ 678 public String getPublisher() { 679 return this.publisher == null ? null : this.publisher.getValue(); 680 } 681 682 /** 683 * @param value The name of the organization or individual that published the 684 * metadata resource. 685 */ 686 public MetadataResource setPublisher(String value) { 687 if (Utilities.noString(value)) 688 this.publisher = null; 689 else { 690 if (this.publisher == null) 691 this.publisher = new StringType(); 692 this.publisher.setValue(value); 693 } 694 return this; 695 } 696 697 /** 698 * @return {@link #contact} (Contact details to assist a user in finding and 699 * communicating with the publisher.) 700 */ 701 public List<ContactDetail> getContact() { 702 if (this.contact == null) 703 this.contact = new ArrayList<ContactDetail>(); 704 return this.contact; 705 } 706 707 /** 708 * @return Returns a reference to <code>this</code> for easy method chaining 709 */ 710 public MetadataResource setContact(List<ContactDetail> theContact) { 711 this.contact = theContact; 712 return this; 713 } 714 715 public boolean hasContact() { 716 if (this.contact == null) 717 return false; 718 for (ContactDetail item : this.contact) 719 if (!item.isEmpty()) 720 return true; 721 return false; 722 } 723 724 public ContactDetail addContact() { // 3 725 ContactDetail t = new ContactDetail(); 726 if (this.contact == null) 727 this.contact = new ArrayList<ContactDetail>(); 728 this.contact.add(t); 729 return t; 730 } 731 732 public MetadataResource addContact(ContactDetail t) { // 3 733 if (t == null) 734 return this; 735 if (this.contact == null) 736 this.contact = new ArrayList<ContactDetail>(); 737 this.contact.add(t); 738 return this; 739 } 740 741 /** 742 * @return The first repetition of repeating field {@link #contact}, creating it 743 * if it does not already exist 744 */ 745 public ContactDetail getContactFirstRep() { 746 if (getContact().isEmpty()) { 747 addContact(); 748 } 749 return getContact().get(0); 750 } 751 752 /** 753 * @return {@link #description} (A free text natural language description of the 754 * metadata resource from a consumer's perspective.). This is the 755 * underlying object with id, value and extensions. The accessor 756 * "getDescription" gives direct access to the value 757 */ 758 public MarkdownType getDescriptionElement() { 759 if (this.description == null) 760 if (Configuration.errorOnAutoCreate()) 761 throw new Error("Attempt to auto-create MetadataResource.description"); 762 else if (Configuration.doAutoCreate()) 763 this.description = new MarkdownType(); // bb 764 return this.description; 765 } 766 767 public boolean hasDescriptionElement() { 768 return this.description != null && !this.description.isEmpty(); 769 } 770 771 public boolean hasDescription() { 772 return this.description != null && !this.description.isEmpty(); 773 } 774 775 /** 776 * @param value {@link #description} (A free text natural language description 777 * of the metadata resource from a consumer's perspective.). This 778 * is the underlying object with id, value and extensions. The 779 * accessor "getDescription" gives direct access to the value 780 */ 781 public MetadataResource setDescriptionElement(MarkdownType value) { 782 this.description = value; 783 return this; 784 } 785 786 /** 787 * @return A free text natural language description of the metadata resource 788 * from a consumer's perspective. 789 */ 790 public String getDescription() { 791 return this.description == null ? null : this.description.getValue(); 792 } 793 794 /** 795 * @param value A free text natural language description of the metadata 796 * resource from a consumer's perspective. 797 */ 798 public MetadataResource setDescription(String value) { 799 if (value == null) 800 this.description = null; 801 else { 802 if (this.description == null) 803 this.description = new MarkdownType(); 804 this.description.setValue(value); 805 } 806 return this; 807 } 808 809 /** 810 * @return {@link #useContext} (The content was developed with a focus and 811 * intent of supporting the contexts that are listed. These contexts may 812 * be general categories (gender, age, ...) or may be references to 813 * specific programs (insurance plans, studies, ...) and may be used to 814 * assist with indexing and searching for appropriate metadata resource 815 * instances.) 816 */ 817 public List<UsageContext> getUseContext() { 818 if (this.useContext == null) 819 this.useContext = new ArrayList<UsageContext>(); 820 return this.useContext; 821 } 822 823 /** 824 * @return Returns a reference to <code>this</code> for easy method chaining 825 */ 826 public MetadataResource setUseContext(List<UsageContext> theUseContext) { 827 this.useContext = theUseContext; 828 return this; 829 } 830 831 public boolean hasUseContext() { 832 if (this.useContext == null) 833 return false; 834 for (UsageContext item : this.useContext) 835 if (!item.isEmpty()) 836 return true; 837 return false; 838 } 839 840 public UsageContext addUseContext() { // 3 841 UsageContext t = new UsageContext(); 842 if (this.useContext == null) 843 this.useContext = new ArrayList<UsageContext>(); 844 this.useContext.add(t); 845 return t; 846 } 847 848 public MetadataResource addUseContext(UsageContext t) { // 3 849 if (t == null) 850 return this; 851 if (this.useContext == null) 852 this.useContext = new ArrayList<UsageContext>(); 853 this.useContext.add(t); 854 return this; 855 } 856 857 /** 858 * @return The first repetition of repeating field {@link #useContext}, creating 859 * it if it does not already exist 860 */ 861 public UsageContext getUseContextFirstRep() { 862 if (getUseContext().isEmpty()) { 863 addUseContext(); 864 } 865 return getUseContext().get(0); 866 } 867 868 /** 869 * @return {@link #jurisdiction} (A legal or geographic region in which the 870 * metadata resource is intended to be used.) 871 */ 872 public List<CodeableConcept> getJurisdiction() { 873 if (this.jurisdiction == null) 874 this.jurisdiction = new ArrayList<CodeableConcept>(); 875 return this.jurisdiction; 876 } 877 878 /** 879 * @return Returns a reference to <code>this</code> for easy method chaining 880 */ 881 public MetadataResource setJurisdiction(List<CodeableConcept> theJurisdiction) { 882 this.jurisdiction = theJurisdiction; 883 return this; 884 } 885 886 public boolean hasJurisdiction() { 887 if (this.jurisdiction == null) 888 return false; 889 for (CodeableConcept item : this.jurisdiction) 890 if (!item.isEmpty()) 891 return true; 892 return false; 893 } 894 895 public CodeableConcept addJurisdiction() { // 3 896 CodeableConcept t = new CodeableConcept(); 897 if (this.jurisdiction == null) 898 this.jurisdiction = new ArrayList<CodeableConcept>(); 899 this.jurisdiction.add(t); 900 return t; 901 } 902 903 public MetadataResource addJurisdiction(CodeableConcept t) { // 3 904 if (t == null) 905 return this; 906 if (this.jurisdiction == null) 907 this.jurisdiction = new ArrayList<CodeableConcept>(); 908 this.jurisdiction.add(t); 909 return this; 910 } 911 912 /** 913 * @return The first repetition of repeating field {@link #jurisdiction}, 914 * creating it if it does not already exist 915 */ 916 public CodeableConcept getJurisdictionFirstRep() { 917 if (getJurisdiction().isEmpty()) { 918 addJurisdiction(); 919 } 920 return getJurisdiction().get(0); 921 } 922 923 protected void listChildren(List<Property> children) { 924 // todo: add a flag to decide whether to do this... 925 // super.listChildren(children); 926 } 927 928 @Override 929 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 930 switch (hash) { 931 case 116079: 932 /* url */ return this.url == null ? new Base[0] : new Base[] { this.url }; // UriType 933 case 351608024: 934 /* version */ return this.version == null ? new Base[0] : new Base[] { this.version }; // StringType 935 case 3373707: 936 /* name */ return this.name == null ? new Base[0] : new Base[] { this.name }; // StringType 937 case 110371416: 938 /* title */ return this.title == null ? new Base[0] : new Base[] { this.title }; // StringType 939 case -892481550: 940 /* status */ return this.status == null ? new Base[0] : new Base[] { this.status }; // Enumeration<PublicationStatus> 941 case -404562712: 942 /* experimental */ return this.experimental == null ? new Base[0] : new Base[] { this.experimental }; // BooleanType 943 case 3076014: 944 /* date */ return this.date == null ? new Base[0] : new Base[] { this.date }; // DateTimeType 945 case 1447404028: 946 /* publisher */ return this.publisher == null ? new Base[0] : new Base[] { this.publisher }; // StringType 947 case 951526432: 948 /* contact */ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail 949 case -1724546052: 950 /* description */ return this.description == null ? new Base[0] : new Base[] { this.description }; // MarkdownType 951 case -669707736: 952 /* useContext */ return this.useContext == null ? new Base[0] 953 : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext 954 case -507075711: 955 /* jurisdiction */ return this.jurisdiction == null ? new Base[0] 956 : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept 957 default: 958 return super.getProperty(hash, name, checkValid); 959 } 960 961 } 962 963 @Override 964 public Base setProperty(int hash, String name, Base value) throws FHIRException { 965 switch (hash) { 966 case 116079: // url 967 this.url = castToUri(value); // UriType 968 return value; 969 case 351608024: // version 970 this.version = castToString(value); // StringType 971 return value; 972 case 3373707: // name 973 this.name = castToString(value); // StringType 974 return value; 975 case 110371416: // title 976 this.title = castToString(value); // StringType 977 return value; 978 case -892481550: // status 979 value = new PublicationStatusEnumFactory().fromType(castToCode(value)); 980 this.status = (Enumeration) value; // Enumeration<PublicationStatus> 981 return value; 982 case -404562712: // experimental 983 this.experimental = castToBoolean(value); // BooleanType 984 return value; 985 case 3076014: // date 986 this.date = castToDateTime(value); // DateTimeType 987 return value; 988 case 1447404028: // publisher 989 this.publisher = castToString(value); // StringType 990 return value; 991 case 951526432: // contact 992 this.getContact().add(castToContactDetail(value)); // ContactDetail 993 return value; 994 case -1724546052: // description 995 this.description = castToMarkdown(value); // MarkdownType 996 return value; 997 case -669707736: // useContext 998 this.getUseContext().add(castToUsageContext(value)); // UsageContext 999 return value; 1000 case -507075711: // jurisdiction 1001 this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept 1002 return value; 1003 default: 1004 return super.setProperty(hash, name, value); 1005 } 1006 1007 } 1008 1009 @Override 1010 public Base setProperty(String name, Base value) throws FHIRException { 1011 if (name.equals("url")) { 1012 this.url = castToUri(value); // UriType 1013 } else if (name.equals("version")) { 1014 this.version = castToString(value); // StringType 1015 } else if (name.equals("name")) { 1016 this.name = castToString(value); // StringType 1017 } else if (name.equals("title")) { 1018 this.title = castToString(value); // StringType 1019 } else if (name.equals("status")) { 1020 value = new PublicationStatusEnumFactory().fromType(castToCode(value)); 1021 this.status = (Enumeration) value; // Enumeration<PublicationStatus> 1022 } else if (name.equals("experimental")) { 1023 this.experimental = castToBoolean(value); // BooleanType 1024 } else if (name.equals("date")) { 1025 this.date = castToDateTime(value); // DateTimeType 1026 } else if (name.equals("publisher")) { 1027 this.publisher = castToString(value); // StringType 1028 } else if (name.equals("contact")) { 1029 this.getContact().add(castToContactDetail(value)); 1030 } else if (name.equals("description")) { 1031 this.description = castToMarkdown(value); // MarkdownType 1032 } else if (name.equals("useContext")) { 1033 this.getUseContext().add(castToUsageContext(value)); 1034 } else if (name.equals("jurisdiction")) { 1035 this.getJurisdiction().add(castToCodeableConcept(value)); 1036 } else 1037 return super.setProperty(name, value); 1038 return value; 1039 } 1040 1041 @Override 1042 public void removeChild(String name, Base value) throws FHIRException { 1043 if (name.equals("url")) { 1044 this.url = null; 1045 } else if (name.equals("version")) { 1046 this.version = null; 1047 } else if (name.equals("name")) { 1048 this.name = null; 1049 } else if (name.equals("title")) { 1050 this.title = null; 1051 } else if (name.equals("status")) { 1052 this.status = null; 1053 } else if (name.equals("experimental")) { 1054 this.experimental = null; 1055 } else if (name.equals("date")) { 1056 this.date = null; 1057 } else if (name.equals("publisher")) { 1058 this.publisher = null; 1059 } else if (name.equals("contact")) { 1060 this.getContact().remove(castToContactDetail(value)); 1061 } else if (name.equals("description")) { 1062 this.description = null; 1063 } else if (name.equals("useContext")) { 1064 this.getUseContext().remove(castToUsageContext(value)); 1065 } else if (name.equals("jurisdiction")) { 1066 this.getJurisdiction().remove(castToCodeableConcept(value)); 1067 } else 1068 super.removeChild(name, value); 1069 1070 } 1071 1072 @Override 1073 public Base makeProperty(int hash, String name) throws FHIRException { 1074 switch (hash) { 1075 case 116079: 1076 return getUrlElement(); 1077 case 351608024: 1078 return getVersionElement(); 1079 case 3373707: 1080 return getNameElement(); 1081 case 110371416: 1082 return getTitleElement(); 1083 case -892481550: 1084 return getStatusElement(); 1085 case -404562712: 1086 return getExperimentalElement(); 1087 case 3076014: 1088 return getDateElement(); 1089 case 1447404028: 1090 return getPublisherElement(); 1091 case 951526432: 1092 return addContact(); 1093 case -1724546052: 1094 return getDescriptionElement(); 1095 case -669707736: 1096 return addUseContext(); 1097 case -507075711: 1098 return addJurisdiction(); 1099 default: 1100 return super.makeProperty(hash, name); 1101 } 1102 1103 } 1104 1105 @Override 1106 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 1107 switch (hash) { 1108 case 116079: 1109 /* url */ return new String[] { "uri" }; 1110 case 351608024: 1111 /* version */ return new String[] { "string" }; 1112 case 3373707: 1113 /* name */ return new String[] { "string" }; 1114 case 110371416: 1115 /* title */ return new String[] { "string" }; 1116 case -892481550: 1117 /* status */ return new String[] { "code" }; 1118 case -404562712: 1119 /* experimental */ return new String[] { "boolean" }; 1120 case 3076014: 1121 /* date */ return new String[] { "dateTime" }; 1122 case 1447404028: 1123 /* publisher */ return new String[] { "string" }; 1124 case 951526432: 1125 /* contact */ return new String[] { "ContactDetail" }; 1126 case -1724546052: 1127 /* description */ return new String[] { "markdown" }; 1128 case -669707736: 1129 /* useContext */ return new String[] { "UsageContext" }; 1130 case -507075711: 1131 /* jurisdiction */ return new String[] { "CodeableConcept" }; 1132 default: 1133 return super.getTypesForProperty(hash, name); 1134 } 1135 1136 } 1137 1138 @Override 1139 public Base addChild(String name) throws FHIRException { 1140 if (name.equals("url")) { 1141 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.url"); 1142 } else if (name.equals("version")) { 1143 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.version"); 1144 } else if (name.equals("name")) { 1145 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.name"); 1146 } else if (name.equals("title")) { 1147 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.title"); 1148 } else if (name.equals("status")) { 1149 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.status"); 1150 } else if (name.equals("experimental")) { 1151 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.experimental"); 1152 } else if (name.equals("date")) { 1153 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.date"); 1154 } else if (name.equals("publisher")) { 1155 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.publisher"); 1156 } else if (name.equals("contact")) { 1157 return addContact(); 1158 } else if (name.equals("description")) { 1159 throw new FHIRException("Cannot call addChild on a singleton property MetadataResource.description"); 1160 } else if (name.equals("useContext")) { 1161 return addUseContext(); 1162 } else if (name.equals("jurisdiction")) { 1163 return addJurisdiction(); 1164 } else 1165 return super.addChild(name); 1166 } 1167 1168 public String fhirType() { 1169 return "MetadataResource"; 1170 1171 } 1172 1173 public abstract MetadataResource copy(); 1174 1175 public void copyValues(MetadataResource dst) { 1176 super.copyValues(dst); 1177 dst.url = url == null ? null : url.copy(); 1178 dst.version = version == null ? null : version.copy(); 1179 dst.name = name == null ? null : name.copy(); 1180 dst.title = title == null ? null : title.copy(); 1181 dst.status = status == null ? null : status.copy(); 1182 dst.experimental = experimental == null ? null : experimental.copy(); 1183 dst.date = date == null ? null : date.copy(); 1184 dst.publisher = publisher == null ? null : publisher.copy(); 1185 if (contact != null) { 1186 dst.contact = new ArrayList<ContactDetail>(); 1187 for (ContactDetail i : contact) 1188 dst.contact.add(i.copy()); 1189 } 1190 ; 1191 dst.description = description == null ? null : description.copy(); 1192 if (useContext != null) { 1193 dst.useContext = new ArrayList<UsageContext>(); 1194 for (UsageContext i : useContext) 1195 dst.useContext.add(i.copy()); 1196 } 1197 ; 1198 if (jurisdiction != null) { 1199 dst.jurisdiction = new ArrayList<CodeableConcept>(); 1200 for (CodeableConcept i : jurisdiction) 1201 dst.jurisdiction.add(i.copy()); 1202 } 1203 ; 1204 } 1205 1206 @Override 1207 public boolean equalsDeep(Base other_) { 1208 if (!super.equalsDeep(other_)) 1209 return false; 1210 if (!(other_ instanceof MetadataResource)) 1211 return false; 1212 MetadataResource o = (MetadataResource) other_; 1213 return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(name, o.name, true) 1214 && compareDeep(title, o.title, true) && compareDeep(status, o.status, true) 1215 && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) 1216 && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) 1217 && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true) 1218 && compareDeep(jurisdiction, o.jurisdiction, true); 1219 } 1220 1221 @Override 1222 public boolean equalsShallow(Base other_) { 1223 if (!super.equalsShallow(other_)) 1224 return false; 1225 if (!(other_ instanceof MetadataResource)) 1226 return false; 1227 MetadataResource o = (MetadataResource) other_; 1228 return compareValues(url, o.url, true) && compareValues(version, o.version, true) 1229 && compareValues(name, o.name, true) && compareValues(title, o.title, true) 1230 && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) 1231 && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) 1232 && compareValues(description, o.description, true); 1233 } 1234 1235 public boolean isEmpty() { 1236 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, name, title, status, experimental, 1237 date, publisher, contact, description, useContext, jurisdiction); 1238 } 1239 1240// added from java-adornments.txt: 1241 @Override 1242 public String toString() { 1243 return fhirType() + "[" + getUrl() + "]"; 1244 } 1245 1246 public String present() { 1247 if (hasTitle()) 1248 return getTitle(); 1249 if (hasName()) 1250 return getName(); 1251 return toString(); 1252 } 1253 1254// end addition 1255 1256}